- 博客(1006)
- 收藏
- 关注
原创 Spring boot的静态资源映射
静态资源映射创建Web工程 WebMvcAutoConfigurationCtrl+Shift+R 搜索addResourceHandlers resourceProperties可以设置和静态资源有关的参数,缓存时间等 点击,进入 staticPathPattern添加资源映射 点击,进入 getStaticLocations静态资...
2018-09-04 09:54:13 678
原创 Spring boot的Webjars
WebjarsSpring boot 以jar包的方式,引入静态资源创建Web工程 WebMvcAutoConfigurationCtrl+Shift+R 搜索addResourceHandlers /webjars/** 所有/webjars/** 都去classpath:/META-INF/resources/webjars/找资源网址 https://ww...
2018-09-03 10:12:45 300
原创 Spring boot的Web开发
开发步骤第一步,创建SpringBoot应用,选中我们需要的模块 第二步,SpringBoot已经默认,将这些场景配置好了 只需要在配置文件中,指定少量配置就可以运行起来 第三步,自己编写业务代码 自动配置xxxxAutoConfiguration 给容器中,自动配置组件xxxxProperties 配置类,来封装配置文件的内容...
2018-09-03 10:10:02 167
原创 Spring boot的Thymeleaf默认规则
默认规则查看自动配置 ThymeleafThymeleafProperties配置说明DEFAULT_ENCODING,编码规则 DEFAULT_CONTENT_TYPE,文档类型 DEFAULT_PREFIX,文档前缀 DEFAULT_SUFFIX,文档后缀...
2018-09-03 10:08:21 504
原创 Spring boot的Thymeleaf使用
Thymeleaf使用引入Thymeleaf<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>版本配...
2018-09-03 10:06:57 135
原创 Spring boot模板引擎
ThymeleafSpringBoot推荐Thymeleaf模板引擎 语法更简单,功能更强大 引入thymeleaf<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf&...
2018-09-03 10:05:16 561
原创 ConcurrentMap接口
ConcurrentMap接口两个实现 ConcurrentHashMap ConcurrentSkipListMap 支持并发排序功能,弥补ConcurrentHashMapConcurrentHashMap 内部使用段Segment,来表示这些不同的部分 每个段,其实就是一个小的HashTable,它们有自己的锁 只有多个修改操作,发生在不同的段上,就可以并发进行每一个...
2018-09-03 10:03:05 481
原创 CopyOnWrite容器
CopyOnWrite也称为COW,写时复制容器 用于程序设计中的优化策略JDK中COW容器,有两种 CopyOnWriteArrayLIst CopyOnWriteArraySetCOW容器 非常有用,可以在非常多的并发场景中使用 当往一个容器添加元素的时候,不直接往当前容器添加 而是,先将当前容器进行Copy,复制出一个新的容器 然后,新的容器里添加元素实现过程 ...
2018-09-03 10:01:21 445
原创 并发类容器
并发类容器JDK 1.5之后,提供了多种并发类容器 来代替同步类容器,改善性能同步类容器 状态都是串行化的,虽然,实现了线程安全 但是,严重降低了并发性,在多线程环境中 严重降低了应用程序的吞吐量并发类容器 专门针对并发设计 使用ConcurrentHashMap来,代替给予散列的传统的HashTable 在ConcurrentHashMap中,添加了一些常见复合操作的支...
2018-09-03 09:59:24 181
原创 同步类容器
同步类容器是线程安全的但是,在某些场景下 可能需要加锁来保护复合操作复合类操作,比如 迭代,反复访问元素、遍历完容器中所有元素 跳转,根据指定的顺序,找到当前元素的下一个元素 以及条件运算等这些复合操作在多线程,并发的修改容器时 可能会表现出意外的行为,经典的是ConcurrentModificationException 因为,当容器迭代的过程中,被并发的修改了内容 ...
2018-09-03 09:57:25 223
原创 Spring boot指定日志配置
指定日志配置给类路径下,放上每个日志框架,自己的配置文件即可 SpringBoot就不使用,默认配置的了 Spring文件名区别logback.xml 直接就被日志框架识别了logback-spring.xml 日志框架,不直接加载日志的配置项由SpringBoot解析日志配置 可以使用SpringBoot的高级Profile功能 Profile...
2018-09-03 09:52:20 1089
原创 Spring boot切换日志框架
切换日志框架可以按照,SLF4J日志适配图,进行切换 slf4j+log4j切换为,slf4j+log4j方式<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐web</ar...
2018-09-02 09:29:31 989
原创 Spring boot排除依赖
排除依赖Diagrams——Show Dependencies 打开依赖关系图选中依赖包 右击,Exclude可以直接排除 同时 对应的依赖包下 Pom文件 会删除,对应的依赖关系 ...
2018-09-02 09:26:57 6757
原创 Spring boot其他框架日志
引入其他框架一定要把这个框架 默认日志依赖移除掉Spring框架 用的是commons-logging<dependency> <groupId>org.springframework</groupId> <artifactId>spring‐core</artifactId> <excl...
2018-09-02 09:24:41 217
原创 Spring boot统一日志记录
统一日志记录开发的时候 用到都是一个框架 很多的框架(slf4j+logback):Spring(commons-logging) Hibernate(jboss-logging) MyBatis等等系统统一日志SLF4J操作步骤1、将系统中,其他日志框架先排除出去 只剩下SLF4J日志框架2、用中间包,来替换原有的日志框架 使其他框架,排除日志框架后不会报...
2018-09-02 09:22:58 1147
原创 Spring boot日志使用
日志使用Spring boot默认,配置好了日志@RunWith(SpringRunner.class)@SpringBootTestpublic class SpringBoot03LoggingApplicationTests { //记录器 Logger logger = LoggerFactory.getLogger(getClass()); @...
2018-09-02 09:20:02 232
原创 单例模式与多线程
单例模式常见的饥饿模式和懒汉式模式饥饿模式 直接实例化对象懒汉式模式 在第一次调用方法的时候,进行实例化对象多线程这两种模式,性能与线程安全上都是有问题的 一般使用双重确认,或者静态内部类的方式Dubble check instance Static inner class双重确认package com.bjsxt.base.conn011;pu...
2018-09-02 09:14:46 168
原创 ThreadLocal的使用
ThreadLocal线程局部变量 是一种多线程间,并发访问变量的解决方案与synchronized等加锁的不同 ThreadLocal完全不提供锁,使用以空间换时间的手段 为每个线程提供变量的独立版本,以保障线程安全性能 ThreadLocal不具有绝对的优势 在并发不是很高的时候,加锁的性能会更好作为一套与锁完全无关的线程安全解决方案 在高并发量,或者竞争激烈的场景...
2018-09-02 09:12:32 194
原创 Queue队列使用
Queue队列,支持阻塞机制 阻塞放入与得到数据实现LinkedBlockingQueue 下面的方法put与takePut 把一个Object加入到BlockingQueue里面 如果,BlockQueue没有空间,调用此方法的线程被阻断 直到BlockingQueue里面有空间再继续执行Take 取走BlockingQueue里面,排在首位的对象 如果,Block...
2018-09-02 09:09:44 458
原创 Spring boot日志关系
新建项目右击Diagrams——Show Dependencies 查看依赖关系 Ctrl+滚轮可以缩放场景启动器&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring‐boot‐starter&a
2018-09-02 09:05:07 230
原创 Spring boot日志框架
日志框架日志的抽象层 日志的实现层Spring boot底层,是Spring框架 Spring框架,默认使用JCLSpring boot使用的SLF4J和Logback日志门面,SLF4J 日志实现,Logback...
2018-09-01 10:20:42 231
原创 Spring boot的@Conditional派生注解
@Conditional作用,必须是@Conditional指定的条件成立 才给容器中添加组件,配置文件里面的所有内容才生效自动配置类 必须在一定的条件下才能生效 可以通过,启用 debug=true属性 让控制台打印自动配置报告这样,就可以很方便的知道 哪些自动配置类生效Debug,默认是false True,表示开启Spring boot的debug模式 ...
2018-09-01 10:19:12 1226
原创 CountDownLatch实时通信
CountDownLatch可以实现线程,实时通信Await方法,等待 countDown方法,通知区别CountDownLatch,不需要配合synchronize使用 Wait/notify,必须配合synchronize使用package com.bjsxt.base.conn008;import java.util.ArrayList;import j...
2018-09-01 10:15:47 243
原创 线程通信轮询
轮询方式轮询,可以实现线程通信package com.bjsxt.base.conn008;import java.util.ArrayList;import java.util.List;public class ListAdd1 { private volatile static List list = new ArrayList(); public ...
2018-09-01 10:12:07 367
原创 线程通信wait与notify
Wait/notify可以实现线程间的通信Wait方法,释放锁 Notify方法,不释放锁Wait与notify方法 必须配置synchronize使用package com.bjsxt.base.conn008;import java.util.ArrayList;import java.util.List;import java.util.Queue;impo...
2018-09-01 10:10:01 221
原创 线程通信
线程通信线程是操作系统中独立的个体 但是,这些个体如果不经过特殊的处理,就不能成为一个整体 线程通信,就是成为整体的必要方式之一当线程存在通信指挥 系统间的交互性会更强大,提高CPU利用率的同时 使开发人员对线程任务,在处理的过程中进行有效的把握与监督实现方式Wait/notify方法 可以实现线程间的通信这两个方法,都是Object类的方法 Java所有的对象...
2018-09-01 10:07:52 166
原创 AtomicInteger原子性
AtomicInteger保证多线程,可见变量的原子性package com.bjsxt.base.sync007;import java.util.concurrent.atomic.AtomicInteger;/** * volatile关键字不具备synchronized关键字的原子性(同步) * */public class VolatileNoAtomic e...
2018-09-01 10:04:29 441
原创 Synchronize同步
Volatile多线程之间的可见性 但是,不具备同步性,也就是原子性可以算是一个轻量级synchronized 性能比synchronized强很多,不会造成阻塞在很多开源架构里 比如,netty的底层代码,就大量使用volatile 可见,netty性能一定非常不错Volatile 用于只针对多个线程的可见性的变量操作 并不能,代表synchronize的同步功能...
2018-09-01 10:03:24 622
原创 Volatile可见性
Volatile使变量在多个线程可见 每一个线程都会有一块工作内存区 其中,存放着所有线程共享的主内存中的变量值的拷贝当线程执行时 在自己的工作区内存中,操作这些变量共享内存当主内存中变量值改变时,会写到相应线程的工作内存中 为了存取一个共享变量,一个线程通常,先获取锁定,并去清除它的内存工作区把这些共享变量从所有线程的共享内存中,正确的装载到它自己所在工作内存中,...
2018-09-01 10:00:27 291
原创 SLF4J使用
SLF4JSimple Logging Facade for Java 日志门面,日志系统的Facade 开发的时候 日志记录方法的调用 不应该,来直接调用日志的实现类 而是,调用日志抽象层里面的方法使用方式 给系统里面导入 slf4j的jar logback的实现jarimport org.slf4j.Logger;import org.slf4j.Logge...
2018-09-01 09:58:02 286
原创 Spring boot自动配置使用
自动配置类SpringBoot启动 会加载大量的自动配置类1、需要的功能 有没有SpringBoot默认写好的自动配置类2、这个自动配置类中,到底配置了哪些组件 只要,要用的组件有,就不需要再来配置了3、给容器中,自动配置类添加组件的时候 会从properties类中,获取某些属性 可以在配置文件中,指定这些属性的值xxxxAutoConfigurartion 自动...
2018-08-31 21:45:42 112
原创 Spring boot自动配置示例
自动配置示例HttpEncodingAutoConfiguration Http编码自动配置以该类为例,查看自动配置过程 EnableAutoConfiguration HttpEncodingAutoConfiguration 点击,进入 @Configuration 表示这是一个配置类 与以前编写的配置文件一样,也可以给容器中添加组件@EnableConf...
2018-08-31 21:43:56 286
原创 Spring boot自动配置原理
自动配置原理@SpringBootApplication SpringBoot启动的时候加载主配置类 开启了自动配置功能,@EnableAutoConfiguration 点击,进入 @EnableAutoConfiguration 利用EnableAutoConfigurationImportSelector 给容器中导入一些组件 点击,进入 可以查看 s...
2018-08-31 21:39:22 143
原创 Spring boot配置文件随机数
配置文件随机数随机数 配置文件,可以使用随机数 设置属性的值${random.value}${random.int}${random.long}${random.int(10)}${random.int[1024,65536]}配置方式persion.id=${random.uuid}person.last-name=张三${random.uuid}person...
2018-08-31 21:34:09 909
原创 Spring boot配置文件占位符
配置文件占位符占位符 获取配置文件中,之前配置的属性值如果,没有这个属性 可以是用:指定默认值配置方式persion.id=${random.uuid}person.last-name=张三${random.uuid}person.dog.name=${person.last-name}_dogperson.dog.age=${person.agesss:hello}...
2018-08-31 21:33:01 985
原创 Spring boot外部配置加载顺序
外部配置加载顺序Spring boot 可以从以下位置加载配置优先级从高到低 高优先级的配置,覆盖低优先级的配置 所有的配置,会形成互补配置官网,给出了17个位置 这里,只介绍常用的11个位置1、命令行参数 所有的配置,都可以在命令行上进行指定 多个配置用空格分开 –配置项=值 java -jar spring-boot-02-config-02-0.0.1...
2018-08-31 21:31:49 927
原创 Spring boot配置文件加载位置
配置文件加载位置springboot 启动 会扫描以下位置的application.properties 或者application.yml文件,作为Spring boot的默认配置文件 –file:./config/ –file:./ –classpath:/config/ –classpath:/优先级优先级由高到底所有位置的文件,都会被加载 高优先级配置内...
2018-08-31 21:28:27 167
原创 Spring boot控制台运行
控制台运行Spring boot项目打包之后可以拷贝到指定目录 然后,启动dos窗口,使用命令运行也可以在idea的控制台 使用命令,直接运行打包项目 Terminal,控制台 切换到target目录下,使用命令运行 ...
2018-08-31 21:25:35 2420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人