工具类-三方工具的使用

七牛云

阅读更多
锁的概念

一、为什么要用锁?

锁-是为了解决并发操作引起的脏读、数据不一致的问题。

二、锁实现的基本原理

1、volatile

java允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。volatile在多处理器开发中保证了共享变量的“ 可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。

结论:如果volatile变量修饰符使用恰当的话,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切换和调度。

阅读更多
springBoot-其他

魔板引擎

例如,代码自动生成模块,利用的就是velocity自定好的模板文件.vm。

配置文件优先级

  1. file:./config/ (当前项目路径config目录下);
  2. file:./ (当前项目路径下);
  3. classpath:/config/ (类路径config目录下);
  4. classpath:/ (类路径config下).

优先级由高到底,高优先级的配置会覆盖低优先级的配置

阅读更多
springBoot-整合MongoDB

springBoot整合MongoDB

1、添加依赖:

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2、配置文件中添加访问配置信息

1
2
3
4
5
spring: 
data:
mongodb:
uri: mongodb://root:root@127.0.0.1:27017/demo
#集群设置:spring.data.mongodb.uri=mongodb://user:pwd@ip1:port1,ip2:port2/database
阅读更多
springBoot-注意事项

springBoot加载顺序

静态资源文件

  • classpath:/META-INF/resources/
  • classpath:/resources/ (resource目录下的 conf 目录下的配置优先级更高)
  • classpath:/static/
  • classpath:/public/

这里的classpath对应SpringBoot中的src/main/resources/。当搜索文件时,存在同名文件的时候按加载顺序查询查找,找到就不继续往下寻找了。SpringBoot中可以直接将静态资源文件放在classpath下,然后可以直接通过ip:port/进行访问。

更改静态资源位置:

1
2
3
4
5
6
7
8
9
@Configuration
public class MyURLPatternConfiguration extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//通过 ip:port/fileData/ 访问时,默认链接到 classpath:/myFile/。此时系统默认的四种方式失效,如需任有效,需添加多个 addResourceHandlers
registry.addResourceHandler("/fileData/**").addResourceLocations("classpath:/myFile/");
super.addResourceHandlers(registry);
}
}

或者,通过配置文件完成:

1
2
3
4
5
6
7
8
9
10
11
12
# 设置当URI为/fileData/**时,才进过静态资源
# 注:如果设置为/**,那么表示任何访问都会经过静态资源路径
spring.mvc.static-path-pattern=/fileData/**

# 自定义路径
# 注:自定义路径时,默认的四个文件夹下中的“META-INF下的resoures文件夹”仍然有效,其他三个文件夹失效
# (此时:访问ip:端口号/fileData/时,相当于访问到了 “自定义的文件夹”和 “META-INF下的resoures文件夹”);
# 注:搜索文件时,自定义的文件夹的优先级要高于默认的四个文件夹
spring.resources.static-locations=classpath:/myFile/

# 提示:如果我们显式地把自定义文件夹 和 默认的四个文件夹都写出来,那么都会有效(此时,优先级 从左至右 依次降低)
#spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/myFile/

阅读更多
study-jvm性能监控

Java程序

java程序执行过程分为两步:

第一步:将java源码(.java文件)通过编译器(javac.exe)编译成JVM文件(.class文件)

第二步:将JVM文件通过java.exe执行,输出结果。

通过如上分析,我们发现JVM至关重要,其向上屏蔽了操作系统的差异,也正因为JVM的该作用,才使java这门编程语言能够实现跨平台,

JVM性能监控

参考:https://blog.csdn.net/maosijunzi/article/details/46049117
https://blog.csdn.net/he90227/article/details/52136154

依据

  • GC日志
  • 堆转储快照(heapdump/hprof文件)
  • 线程快照(threaddump/javacore文件)
  • 运行日志
  • 异常堆栈

分析依据的工具

  • jps:显示指定系统内的所有JVM进程,如:jps -l
  • jstat:收集JVM各方面的运行数据,如: jstat -guctil PID
  • jinfo:显示JVM配置信息,格式:jinfo -flag parameter PID
  • jmap:形成堆转储快照(heapdump文件),格式: jmap -dump:format=b,file=文件名 PID;查看最占内存元素:jmap -histo PID
  • jhat:分析heapdump文件,格式:jhat 文件名`
  • jstack:显示JVM的线程快照(定位线程长时间卡顿的原因(线程间死锁、死循环、请求外部资源导致的长时间等待),格式:jstack -l PID
  • jconsole #图形化界面
  • visualVM #图形化界面

阅读更多
springCloudAlibaba-开篇
Spring Cloud Alibaba由于现在的Spring Cloud Alibaba由于没有纳入到Spring Cloud的主版本管理中,所以我们需要自己去引入其版本信息。后期加入到主板中去了,就可以直接引入主版本即可。 123456789101112131415161718192021222 ...
阅读更多
springCloud-鉴权中心oauth2

基本概念

oauth2 定义了下面四种授权方式:

  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)
  • 客户端模式(client credentials)

授权码常见参数:

1
2
3
4
5
* response_type:表示授权类型,必选项,此处的值固定为"code"
* client_id:表示客户端的ID,必选项
* redirect_uri:表示重定向URI,可选项
* scope:表示申请的权限范围,可选项
* state:表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值。

阅读更多
study-java多线程

1、多线程有什么用?

一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:

发挥多核CPU的优势

随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4核、8核甚至16核的也都不少见,如果是单线程的程序,那么在双核CPU上就浪费了50%,在4核CPU上就浪费了75%。单核CPU上所谓的”多线程”那是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多个线程”同时”运行罢了。多核CPU上的多线程才是真正的多线程,它能让你的多段逻辑同时工作,多线程,可以真正发挥出多核CPU的优势来,达到充分利用CPU的目的。

阅读更多
mybatiplus好用的第三方插件
http://mp.baomidou.com/ 123456789101112# mybaits-plus配置mybatis-plus: mapper-locations: classpath*:/mapper/*Mapper.xml global-config: banner: fals ...
阅读更多