Giter VIP home page Giter VIP logo

fuzhengwei / itstack-demo-design Goto Github PK

View Code? Open in Web Editor NEW
6.3K 6.3K 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 People

Contributors

fuzhengwei avatar jacianliu avatar linwancen avatar weipeng001 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

itstack-demo-design's Issues

项目编译出现错误

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,也试过单独打包,但是都没能成功解决

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

环境 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-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>

门面模式-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(); 的?

代码编译报错

[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-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-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());


    }


}

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

第一个报错是某个工程使用了其他工程的类,但是没引入依赖,
第二个报错是,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

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

作者你好,在看书中有个代码的实现细节不是很懂。
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-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

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

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

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.