work hard work smart

专注于Java后端开发。 不断总结,举一反三。
随笔 - 1158, 文章 - 0, 评论 - 153, 阅读 - 186万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

03 2020 档案

摘要:1、@EnableZuulProxy注解 通过前面Zull的使用可知,需要增加@EnableZuulProxy注解 @EnableCircuitBreaker @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Import( 阅读全文

posted @ 2020-03-31 12:29 work hard work smart 阅读(219) 评论(0) 推荐(0) 编辑

摘要:Eureka服务端使用的使用,会引入spring-cloud-starter-rereka-server, 在Application类中引入注解@EnableEurekaServer。 1、@EnableEurekaServer。 @Target({ElementType.TYPE}) @Reten 阅读全文

posted @ 2020-03-30 22:01 work hard work smart 阅读(278) 评论(0) 推荐(0) 编辑

摘要:我们看下com.netflix.discovery.DiscoveryClient这个类,这个类在应用启动的时候被加载到容器中,肯定会调用构造方法 构造方法如下: @Inject DiscoveryClient(ApplicationInfoManager applicationInfoManage 阅读全文

posted @ 2020-03-30 21:23 work hard work smart 阅读(239) 评论(0) 推荐(0) 编辑

摘要:Eureka作为服务注册中心,主要的功能是服务注册和服务发现,是微服务框架的基础功能和核心功能。 Eureka的使用可参考: Eureka服务端:Spring Cloud Eureka Server使用(注册中心), Eureka客户端:Eureka Client的使用, Eureka服务端:Eur 阅读全文

posted @ 2020-03-30 15:29 work hard work smart 阅读(420) 评论(0) 推荐(0) 编辑

摘要:164、数据库的三范式是什么? 第一范式: 强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。 第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分属性。 第三范式: 任何非主属性不依赖于其它非主属性。 165、一张自增表里面有17条数据,删除了最后 阅读全文

posted @ 2020-03-29 19:27 work hard work smart 阅读(132) 评论(0) 推荐(0) 编辑

摘要:157、Zookeeper是什么? zookeeper是一个分布式的,开发源码的分布式应用程序协调服务,是google chubby的开源实现,是hadoop和hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括: 配置维护,域名服务,分布式同步、组服务。 158、zook 阅读全文

posted @ 2020-03-29 15:53 work hard work smart 阅读(147) 评论(0) 推荐(0) 编辑

摘要:Hibernate简单使用: MyEclipse Hibernate 学习总结 113. 为什么使用hibernate 1) Hibernate 是对jdb的封装,大大简化了数据访问层的繁琐的重复代码 2) Hiberate是一个优秀的ORM实现, 很大程度上简化了DAO层的编码功能 3) 很方便的 阅读全文

posted @ 2020-03-29 15:31 work hard work smart 阅读(129) 评论(0) 推荐(0) 编辑

摘要:125、MyBatis中的#{} 和 ${} 的区别是什么? #{} 是预编译处理, ${} 是字符替换 在使用#{ }时,MyBatis会将SQL中的#{ }替换成"?",配合PreparedStatements的set方法赋值,这样可以有效的防止SQL注入,保证程序的运行安全。 ${}是字符替换 阅读全文

posted @ 2020-03-29 15:01 work hard work smart 阅读(169) 评论(0) 推荐(0) 编辑

摘要:我们以Mybatis原生源码解析创建Demo进行DataSource源码的解析 一、上一篇介绍到环境的搭建 1、配置文件 Configure.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-// 阅读全文

posted @ 2020-03-28 15:18 work hard work smart 阅读(299) 评论(0) 推荐(0) 编辑

摘要:一、搭建Spring中使用Mybatis环境 工程结构如下图所示 1、引入依赖 <properties> <spring.version>4.1.2.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId 阅读全文

posted @ 2020-03-28 11:18 work hard work smart 阅读(207) 评论(0) 推荐(0) 编辑

摘要:一、JWT的身份认证 二、解决Eureka不安全问题 前面介绍到Eureka Server访问http://localhost:8761,任何服务都能注册到Eureka中,这样式很不安全的。 解决方法: 增加用户名和密码 1、引入spring-cloud-starter-security <depe 阅读全文

posted @ 2020-03-25 17:51 work hard work smart 阅读(293) 评论(0) 推荐(0) 编辑

摘要:原始的JDBC操作数据库,请参考Java JDBC连接Oracle 一、工程搭建 工程结构如下 1、引入jar mybatis-3.2.3.jar 和mysql-connector-java-5.1.25.bin.jar 2、使用Mysql创建表 CREATE TABLE `user` ( `id` 阅读全文

posted @ 2020-03-25 12:32 work hard work smart 阅读(223) 评论(0) 推荐(0) 编辑

摘要:前面介绍了Feign的使用(Feign的使用), Feign整合Hystrix(Feign整合Hystrix) , Feign整合(Feign整合Ribbon负载均衡), Feign的性能优化(Feign性能优化), 现在介绍下Feign的源码。 通过前面的使用过程,@EnableFeignClie 阅读全文

posted @ 2020-03-24 11:28 work hard work smart 阅读(345) 评论(0) 推荐(0) 编辑

摘要:在Zuul工程中 1、增加Zuul的Hystrix的配置 并且设置超时时间为2毫秒 2、增加业务降级处理 ** * 业务降级处理 */ @Component public class MyFallback implements FallbackProvider { //针对哪一个路由进行降级, re 阅读全文

posted @ 2020-03-22 21:06 work hard work smart 阅读(1319) 评论(0) 推荐(0) 编辑

摘要:1、核心Prefilter ServletDetectionFilter源码如下,还是比较简单的 public class ServletDetectionFilter extends ZuulFilter { public ServletDetectionFilter() { } public S 阅读全文

posted @ 2020-03-22 20:24 work hard work smart 阅读(168) 评论(0) 推荐(0) 编辑

摘要:一、Feign值Http性能优化 1、http底层选择 Feign默认使用JDK自带的HTTP方式 Feign最大的优化点是更好HTTP底层实现 目前Apache HTTPClient是一个非常好的选择 增加依赖 <dependency> <groupId>io.github.openfeign</ 阅读全文

posted @ 2020-03-22 17:56 work hard work smart 阅读(418) 评论(0) 推荐(0) 编辑

摘要:backend_show_consumer工程 1、在 中配置FeignClient,name为back_show_provider的hello-service-provider 2、负载均衡器配置如下 @Configuration public class RestConfig { @Bean @ 阅读全文

posted @ 2020-03-22 15:02 work hard work smart 阅读(820) 评论(0) 推荐(0) 编辑

摘要:104、什么是springboot spring boot是为spring服务的,用来简化新的spring应用的初始化搭建以及开发过程。 105 为什么要用spring boot? 1)配置简单 2)独立运行 3)自动装配 4)无代码生成和xml配置 5)提供应用监控 6)易上手 7)提升开发效率 阅读全文

posted @ 2020-03-22 00:05 work hard work smart 阅读(163) 评论(0) 推荐(0) 编辑

摘要:一、Hystrix项目实践 1、在Cinema影院工程中增加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactI 阅读全文

posted @ 2020-03-21 21:10 work hard work smart 阅读(272) 评论(0) 推荐(0) 编辑

摘要:一、Hystrix介绍 1)Hystrix是用于处理延迟和容错的开源库 2)Hystrix主要用于避免级联故障,提高系统弹性。 3)Hystrix解决了由于扇出导致的“雪崩效应”。 2)和3) 是一件事情。 4) Hystrix的核心是“隔离术”和“熔断机制” 二、Hystrix主要作用 1) 服务 阅读全文

posted @ 2020-03-21 16:15 work hard work smart 阅读(494) 评论(0) 推荐(0) 编辑

摘要:Ribbon核心工作原理 1、从前面Ribbon使用(应用间通信方式HTTP和RPC, 负载均衡器 Ribbion),只需要增加LoadBalanced就能实现负载均衡。进入LoadBalanced的源码 通过注解的注释,我们知道注解标注了RestTemplate作为负载均衡客户端。负载均衡客户端接 阅读全文

posted @ 2020-03-20 16:21 work hard work smart 阅读(312) 评论(0) 推荐(0) 编辑

摘要:一、Mybatis-plus介绍 Mybatis-plus是基于Mybatis开发的开源框架 Mybatis-plus封装了分页、条件查询等内容 Mybatis-helper可以协议我们更好的使用Mybatis框架 二、Mybatis-plus配置 1、在父工程的pom.xml的dependency 阅读全文

posted @ 2020-03-12 21:10 work hard work smart 阅读(2720) 评论(1) 推荐(0) 编辑

摘要:1、创建父工程 1)工程名为backend-parent 2) 选中Spirng Boot DevTools和Lombox,Spring Boot的版本为2.2.5 3)选中Sping Web 4)选中Cloud Bootstrap 5)创建成功后,删除一些没用的文件,工程结构如下图所示 2、新建基 阅读全文

posted @ 2020-03-12 10:57 work hard work smart 阅读(174) 评论(0) 推荐(0) 编辑

摘要:90、为什么要使用spring? 1、spring提供ioc技术,容器会帮你管理依赖对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦 2、spirng提供了事务支持,使得事务操作变的更加方便。 3、spring提供了面向切面编程,这样可以方便的处理某一类的问题。 4、更方便的框架集 阅读全文

posted @ 2020-03-11 22:23 work hard work smart 阅读(161) 评论(0) 推荐(0) 编辑

摘要:1、常用的设计模式? 1) 单例模式 保证对象被创建一次,节省系统开销。 2) 工厂方法(简单工厂,抽象工厂)设计模式-简单工厂模式, 设计模式-工厂方法 , 设计模式-抽象工厂 4)观察者模式: 定义了对象之间的一对多依赖,当对象改变时,就会通知它所有依赖的对象,依赖的对象接收到通知并做出更新。  阅读全文

posted @ 2020-03-11 15:14 work hard work smart 阅读(127) 评论(0) 推荐(0) 编辑

摘要:80、forward和redirect的区别? 地址栏显示: forward url不会发生变化 , redirect url会发生变化 数据共享:forward 可以共享request里的数据,redirect不能共享 效率: forward效率比redirect高 本质上来说: forward转 阅读全文

posted @ 2020-03-11 14:59 work hard work smart 阅读(124) 评论(0) 推荐(0) 编辑

摘要:74、throw和throws的区别? throw是抛出异常 throws是声明可能会抛出异常 75、final、finally、finalize的区别? final: 是修饰符,如果修饰类,此类不能被继承; 如果修饰方法和变量,则表示此方法和变量不能在被改变,只能使用。 finally: 是try 阅读全文

posted @ 2020-03-10 23:28 work hard work smart 阅读(121) 评论(0) 推荐(0) 编辑

摘要:64、JSP和servlet有什么区别? JSP是servlet技术的扩展,本质上就是servlet的简易方式,servlet和JSP最主要的不同点在于,servlet的应用逻辑再Java文件中,并且完全从表示层中的html里分离开来, 而JSP的情况是Java和html可以组合成一个扩展名为JSP 阅读全文

posted @ 2020-03-10 23:16 work hard work smart 阅读(89) 评论(0) 推荐(0) 编辑

摘要:61、为什么要使用克隆? 克隆的对象可能包括一些已经修改过的属性,而new出来的对象属性都还是初始化时候的值,所有当需要一个新的对象来保存当前“状态“就靠克隆方法了。 62、如何实现对象克隆? 1) 实现Cloneable接口并重写Object类中的clone()方法。 2) 实现Serialabl 阅读全文

posted @ 2020-03-10 22:45 work hard work smart 阅读(104) 评论(0) 推荐(0) 编辑

摘要:57、什么是反射? 反射是在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。 58、什么是Java序列化?什么情况下需要序列化? Java序列化是为了保存各种对象 阅读全文

posted @ 2020-03-10 22:42 work hard work smart 阅读(167) 评论(0) 推荐(0) 编辑

摘要:一般使用logger的方式为 private Logger logger = LoggerFactory.getLogger(MybatisStartTest.class); 进入getLogger public static Logger getLogger(Class<?> clazz) { L 阅读全文

posted @ 2020-03-09 19:54 work hard work smart 阅读(220) 评论(0) 推荐(0) 编辑

摘要:日志介绍 1、具体日志功能的实现有以下几种 JUL Log4j Logback Log4j2 Logback的实现类Logger,实现了slf4j的Logger接口 2、日志门面框架: 日志实现的抽象层,定义log的Info,debug这些方法。 JCL SLF4J 如下图,SLF4J定义了一些tr 阅读全文

posted @ 2020-03-09 17:09 work hard work smart 阅读(179) 评论(0) 推荐(0) 编辑

摘要:1、同步阻塞IO模型 当容器中只有三个线程接收请求,当有四个请求过来的时候,就会Block住,得不到及时的响应 2、异步非阻塞式IO模型 Spring Boot webflux是异步非阻塞式IO模型,容器线程将耗时的任务(IO密集型任务)交给work线程来处理 3、webflux应用场景 4、web 阅读全文

posted @ 2020-03-09 14:56 work hard work smart 阅读(534) 评论(0) 推荐(0) 编辑

摘要:一、配置类导入 1、mybatis-spring-boot-starter 引入了如下图5个依赖 spring-boot-starter是每个starter都要引入的 spring-boot-starter-jdbc 与jdbc相关 后面两个mybatis, mybatis -spring 与myb 阅读全文

posted @ 2020-03-09 11:33 work hard work smart 阅读(1060) 评论(0) 推荐(0) 编辑

摘要:1、mybatis-starter作用 自动检测工程中的DataSource 创建并注册SqlSessionFactory实例 创建并注册SqlSessionTemplate实例 自动扫描mappers 2、mybatis-starter使用 1) 引入mybatis-spring-boot-sta 阅读全文

posted @ 2020-03-08 21:45 work hard work smart 阅读(3747) 评论(0) 推荐(0) 编辑

摘要:Spring Boot starter原理 一、starter自动配置类导入 启动类上@SpringBootApplication -> 引入AutoConfigurationImportSelector -> ConfigurationClassParser 中处理 -> 获取spring.fac 阅读全文

posted @ 2020-03-08 20:32 work hard work smart 阅读(1212) 评论(0) 推荐(0) 编辑

摘要:1、starter介绍 简介: 可插拔插件 与jar包区别: starter能实现自动配置 作用: 大幅提高开发效率 2、常用的starter 名称 描述 spring-boot-starter-thymeleaf 使MVC Web applications 支持Thymeleaf spring-b 阅读全文

posted @ 2020-03-08 16:32 work hard work smart 阅读(442) 评论(0) 推荐(0) 编辑

摘要:1、conditional注解介绍 含义: 基于条件的注解 作用: 根据是否满足某一个特定条件来决定是否创建某个特定的bean 意义: Springboot实现自动配置的关键基础能力 2、常见conditional注解 @ConditionalOnBean 框架中存在某个Bean时生效 @Condi 阅读全文

posted @ 2020-03-08 15:06 work hard work smart 阅读(333) 评论(0) 推荐(0) 编辑

摘要:doProcessConfigurationClass方法 @Nullable protected final SourceClass doProcessConfigurationClass(ConfigurationClass configClass, SourceClass sourceClas 阅读全文

posted @ 2020-03-07 21:30 work hard work smart 阅读(1542) 评论(0) 推荐(0) 编辑

摘要:一、执行入口 解析方法在processConfigBeanDefinitions方法里的do while循环体中 do { parser.parse(candidates); parser.validate(); Set<ConfigurationClass> configClasses = new 阅读全文

posted @ 2020-03-07 16:41 work hard work smart 阅读(652) 评论(0) 推荐(0) 编辑

摘要:什么是配置类, 作用? 配置类一般使用Configuration注解,ComponentScan,Import等注解标注的类。起到配置的作用。 常用的配置注解 Import,PropertySource,ComponentScan等待 一、配置文件入口 二、postProcessBeanDefini 阅读全文

posted @ 2020-03-07 14:58 work hard work smart 阅读(210) 评论(0) 推荐(0) 编辑

摘要:一、启动前的准备: 1、SpringApplication构造方法,赋值webApplicationType Debug启动项目后,进入SpringApplication构造函数,里面有个webApplicationType 2、根据classpath下是否存在特定类来决定哪种类型,分别为SERVL 阅读全文

posted @ 2020-03-07 11:57 work hard work smart 阅读(742) 评论(0) 推荐(0) 编辑

摘要:Tomcat框架机制 Tomcat容器架构 阅读全文

posted @ 2020-03-07 11:04 work hard work smart 阅读(208) 评论(0) 推荐(0) 编辑

摘要:服务化架构的演进历史 Dubbo官网上的一张图 1 单体应用架构 部署到一个war里 部署到一个web容器里(如tomcat) 公用一个DB 优点: 容易测试 容易部署 缺点: 开发效率低 代码维护难 部署不灵活(如构建时间特别长,如任意小的修改,需要重新构建整个项目) 稳定性不高(如任一一个小问题 阅读全文

posted @ 2020-03-02 15:23 work hard work smart 阅读(1107) 评论(0) 推荐(0) 编辑

摘要:1、接口规范 @FunctionalInterface public interface SpringBootExceptionReporter { /** * Report a startup failure to the user. * @param failure the source fai 阅读全文

posted @ 2020-03-01 21:29 work hard work smart 阅读(842) 评论(0) 推荐(0) 编辑

摘要:进入上一篇使用profile的load()方法(ConfigFileApplicationListener类中) 1、initializeProfiles(); 1)进入initializeProfiles方法。初始化Profiles,将所有的profile增加到prifiles集合中 privat 阅读全文

posted @ 2020-03-01 15:24 work hard work smart 阅读(429) 评论(0) 推荐(0) 编辑

摘要:在上一篇中,我们的类加载器使用environment获取一些属性,如下图 下面我们介绍下environment的使用 1、进入启动方法run,定位到prepareEnvironment方法 2、进到prepareEnvironment方法 3、进入getOrCreateEnvironment方法。实 阅读全文

posted @ 2020-03-01 12:24 work hard work smart 阅读(11961) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示