nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
SpringBoot与Web先在idea中选择场景SpringBoot已经默认将这些常见配置好了,我们只需要在配置文件中指定少量配置就可以运行起来然后我们可以开始编写业务代码了
SpringBoot与静态资源WebMvcAutoConfiguration打开WebMvcAutoConfiguration.java
1234567891011121314151617181920@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); return; } Duration cachePeriod = this.resourceProperties.getCache().getPeriod(); CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl(); if (!registry.hasMappingForPattern("/webjars/**")) { customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/") .setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl)); } String staticPathPattern = this.mvcProperties.getStaticPathPattern(); if (!registry.hasMappingForPattern(staticPathPattern)) { customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern) .addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations())) .setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl)); }}
阅读全文
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
Springboot和日志 考虑和jdbc和数据库驱动一样,我们抽象出一个日志的接口
常见的java日志 JUL,JCL,JBoss-logging,logback,log4j,log4j2,slf4j
Java抽象 JCL,SLF4j,Jboss-logging
Java实现 Log4j,JUL,Log4j2,logback
怎么选择选择SLF4j+Logback
阅读全文
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
springboot配置配置文件 配置文件的名字是固定的
application.propertiesapplicstion.yml YAML 是一个标记语言,不是一个标记语言
标记语言 以前的配置文件大多是xml文件,yaml以数据为中心,比json、xml等更适合做配置文件 这是yml
12server: port: 8081
这个是xml
123<server> <port>8081</port></server>
阅读全文
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
微服务 讲大应用拆分成多个小应用
springboot介绍创建maven工程导入依赖123456789101112<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version></parent><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency></dependencies>
阅读全文
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
SpringBoot与Web 先在idea中选择场景 springboot已经默认将这些常见配置好了,我们只需要在配置文件中指定少量配置就可以运行起来 然后我们可以开始编写业务代码了
阅读全文
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
集合的线程安全类遗留的线程安全类 Hashtable,Vector直接把同步加到方法上
修饰的安全集合 装饰器模式,Syncronize*
JUC安全集合Blocking型 大部分实现基于锁并提供阻塞的方法
阅读全文
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
JUCAQS   AbstractQueuedSynchronizer 是阻塞式的锁和相关的同步器工具的框架
ReentrantLock如何重入   用一个变量记录重入了多少次
NonfairSynclock   cas ,成功就吧ouner改为自己,否则acquire,把自己放进链表中
acquire   tryacquire,成功就结束,失败的话还会尝试几次,然后才park,并为前驱标记,让前驱记得唤醒自己,如果曾经被打断的话,会被忽略,再次进入aqs队列,得到锁以后会打断自己来再次重新打断
阅读全文
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
异步模式-工作线程线程不足导致饥饿 有两个线程A,B,任务有两种,上菜和做菜,显然上菜要等待做菜,如果AB都在执行上菜,就没有更多的线程做菜了,这就导致了AB在死等,注意这不是死锁, 所以不同的任务类型应该用不同的线程池
阅读全文