Giter VIP home page Giter VIP logo

fuzhengwei / itstack-demo-design Goto Github PK

View Code? Open in Web Editor NEW
6.4K 6.4K 1.9K 1.78 MB

:art: 《重学Java设计模式》是一本互联网真实案例实践书籍。以落地解决方案为核心,从实际业务中抽离出,交易、营销、秒杀、中间件、源码等22个真实场景,来学习设计模式的运用。欢迎关注小傅哥,微信(fustack),公众号:bugstack虫洞栈,博客:https://bugstack.cn

Home Page: https://bugstack.cn

License: Apache License 2.0

Java 100.00%
java springboot

itstack-demo-design's Issues

代码编译报错

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project itstack-demo-desgin-4-01: Compilation failure: Compilation failure:
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[12,14] 找不到符号
[ERROR] 符号: 类 ChoiceQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[12,65] 找不到符号
[ERROR] 符号: 类 ChoiceQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[13,14] 找不到符号
[ERROR] 符号: 类 AnswerQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[13,65] 找不到符号
[ERROR] 符号: 类 AnswerQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[46,36] 找不到符号
[ERROR] 符号: 类 ChoiceQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[47,36] 找不到符号
[ERROR] 符号: 类 ChoiceQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[48,36] 找不到符号
[ERROR] 符号: 类 ChoiceQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[49,36] 找不到符号
[ERROR] 符号: 类 ChoiceQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[50,36] 找不到符号
[ERROR] 符号: 类 ChoiceQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[51,36] 找不到符号
[ERROR] 符号: 类 AnswerQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[52,36] 找不到符号
[ERROR] 符号: 类 AnswerQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[53,36] 找不到符号
[ERROR] 符号: 类 AnswerQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] /Users/haibinlu/github/design-pattern/itstack-demo-design/itstack-demo-desgin-4-01/src/main/java/org/itstack/demo/design/QuestionBankController.java:[54,36] 找不到符号
[ERROR] 符号: 类 AnswerQuestion
[ERROR] 位置: 类 org.itstack.demo.design.QuestionBankController
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :itstack-demo-desgin-4-01

itstack-demo-design-4-01 缺少依赖

问题描述:

itstack-demo-design-4-01org.itstack.demo.design.QuestionBankController 出现报红。检查后发现缺少引入 itstack-demo-design-4-00 的依赖。

依赖:

    <dependencies>
        <dependency>
            <artifactId>itstack-demo-design-4-00</artifactId>
            <groupId>org.itstack</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

截图

image

编译打包项目,一大堆报错

第一个报错是某个工程使用了其他工程的类,但是没引入依赖,
第二个报错是,maven使用了Java1.6版本的插件编译项目,导致语法不支持报错
第三个报错则是下面这个,还有一些其他报错就不列举了
[ERROR] Failed to execute goal on project itstack-demo-design-10-01: Could not resolve dependencies for project org.itstack:itstack-demo-design-10-01:jar:1.0-SNAPSHOT: Could not find artifact org.springframework.boot:itstack-demo-design-10-00:jar:2.1.2.RELEASE in alimaven (http://maven.aliyun.com/nexus/content/groups/public/) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :itstack-demo-design-10-01

在编译过程中遇到的一些问题

环境 JDK1.8.0251+MAVEN3.6.1+IDEA
##[1]itstack-demo-design-8-02 报错信息为 错误: -source 1.6 中不支持 diamond 运算符
修改子项目下的pom.xml

  <build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>8</source>
                  <target>8</target>
              </configuration>
          </plugin>
      </plugins>
  </build> 

##[2]itstack-demo-design-10-01 报错信息为 Cannot resolve org.itstack.demo.design.domain.UserInfo

我发现他打包的时候将itstack-demo-design-10-00项目的包打到了org.springframework.boot
修改itstack-demo-design-10-00子项目下的pom.xml

    <!--修改前-->
    <packaging>war</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <!--修改后-->
   <parent>
        <artifactId>itstack-demo-design</artifactId>
        <groupId>org.itstack</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <packaging>jar</packaging>

另<dependencies></dependencies><groupId></groupId>的值为org.springframework.boot的都加上<version>2.1.2.RELEASE</version>
##[3]报错信息为 错误: -source 1.5 中不支持 diamond 运算符
Maven Compiler 插件默认会加 -source 1.5 及 -target 1.5 参数来编译(估计是为了兼容一些比较老的 Linux 服务器操作系统,它们通常只有 JDK 5),而我们的代码里使用了 JDK 7/8 的语法。

    <build>
        ...
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
        ...
    </build>

项目编译出现错误

itstack-demo-design-10-01 mvn package 执行报错

Could not find artifact org.springframework.boot:itstack-demo-design-10-00:pom:2.1.2.RELEASE in alimaven (https://maven.aliyun.com/repository/public/)

我看之前的issue也提到了这个问题。。。但是根据傅哥给出的解决办法,我没有整体打包,单独打包itstack-demo-design-10-01也不行,还是会报错,有大佬可以提供一下解决思路吗,目前已经尝试过更改 groupId 及 version,也试过单独打包,但是都没能成功解决

项目编译出现错误

itstack-demo-design-10-01 mvn package 执行报错

Could not find artifact org.springframework.boot:itstack-demo-design-10-00:pom:2.1.2.RELEASE in alimaven (https://maven.aliyun.com/repository/public/)

我看之前的issue也提到了这个问题。。。但是根据傅哥给出的解决办法,我没有整体打包,单独打包itstack-demo-design-10-01也不行,还是会报错,有大佬可以提供一下解决思路吗,目前已经尝试过更改 groupId 及 version,也试过单独打包,但是都没能成功解决

面向对象的设计模式如何与关系型数据库结合

大佬,请问下,面向对象的设计模式如何与关系型数据库结合?
因为系统数据都是要存储的,99%都是要落关系型数据库,设计模式学完后还是没想到怎么和关系型数据库结合,设计系统的时候还是按照关系型数据表的存储来设计的。
请问下用设计模式,能提高此类系统的开发效率、开发质量、扩展性、可读性、复用性么?

itstack-demo-design-10-00 补充个单测

 package org.itstack.demo.design.test;


import org.itstack.demo.design.web.HelloWorldController;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class ApiTest {
    @Autowired
    private MockMvc mockMvc;

    @Test
    public void helloTest() throws Exception {

        MvcResult mvcResult = null;

        mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/api/queryUserInfo?userId=1001")
                        .accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
        Assert.assertEquals("{\"code\":\"0000\",\"info\":\"success\",\"name\":\"虫虫:1001\",\"age\":19,\"address\":\"天津市南开区旮旯胡同100号\"}", mvcResult.getResponse().getContentAsString());

        mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/api/queryUserInfo?userId=99999999")
                        .accept(MediaType.APPLICATION_JSON))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
        Assert.assertEquals("{\"code\":\"1111\",\"info\":\"非白名单可访问用户拦截!\",\"name\":null,\"age\":null,\"address\":null}", mvcResult.getResponse().getContentAsString());


    }


}

门面模式-itstack-demo-design-10-02-字符串分割的问题

itstack-demo-design-10-02
org.itstack.demo.design.door.config.StarterService#split(String separatorChar )
第20行,使用spring中的工具类,只能将一个字符串分割成两段.
return StringUtils.split(this.userStr, separatorChar);
如配置文件中 userStr: 1001,aaaa,ccc
使用这个方法会将字符串分割成 1001 和 aaaa,ccc两部分,并不会分割成1001、aaaa和ccc三部分
达不到配置多个白名单的效果

你好,想问一下关于 Singleton_06 的问题

    public static final Singleton_06 getInstance() {
        for (; ; ) {
            Singleton_06 instance = INSTANCE.get();
            if (null != instance) return instance;
            INSTANCE.compareAndSet(null, new Singleton_06());
            return INSTANCE.get();
        }
    }

你好,想问一下这里的 for (; ; ) 有什么用哇,应该第一次循环就会 return INSTANCE.get(); 的?

你好,想问个代码中的问题

作者你好,在看书中有个代码的实现细节不是很懂。
1.
在设计模式部分的itstack-demo-design项目中的itstack-demo-design/itstack-demo-design-2-02/src/main/java/org/itstack/demo/desgin/factory/JDKProxy.java 这个类里的方法
getProxy(Class《T》 interfaceClass, ICacheAdapter cacheAdapter)
中第一个参数是带泛型T,然后最后返回的值进行类型转换
return (T) Proxy.newProxyInstance(classLoader, new Class[]{classes[0]}, handler);
我想问的是在测试的时候
CacheService proxy_EGM = JDKProxy.getProxy(CacheServiceImpl.class, new EGMCacheAdapter());
这句话为什么第一个参数传入的是实现类的类对象,而不是接口的类型?
因为我看的一些动态代理介绍说的是对于产生的代理对象,不能强转为实现类,只能转为接口类型。
可能我对泛型理解的有问题 : (
2.第二个问题是对于设计模式这本书中,在其他资料上介绍说抽象工厂是工厂的工厂,我想问一下本书中的通过代理实现的抽象工厂,返回的这个代理对象是不是就是其他资料上指的,由抽象工厂产生的工厂?因为刚学设计模式,书里也没有明确点出,看的不是很懂。

itstack-demo-design-16-02的pom.xml里需要修改maven插件的编译版本

itstack-demo-design-16-02的pom.xml里需要修改maven插件的编译版本

pom里指定jdk版本就好了

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.