![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java篇
文章平均质量分 55
java
XiuL
这个作者很懒,什么都没留下…
展开
-
WebSocket实现聊天室
WebSocket实现聊天室原创 2023-01-03 11:44:00 · 938 阅读 · 0 评论 -
WebSocket&SSE实时动态数据展示
WebSocket SSE服务端实时推送数据原创 2022-12-23 11:23:14 · 1420 阅读 · 0 评论 -
Java文件目录相关操作
Java文件目录相关操作原创 2022-11-11 11:51:46 · 293 阅读 · 0 评论 -
Java文件拷贝方式和效率性能对比
Java文件拷贝方式和效率性能对比原创 2022-11-11 11:47:43 · 1598 阅读 · 0 评论 -
Java文件读取方式和效率性能对比
Java文件读取方式和效率性能对比原创 2022-11-11 11:41:46 · 3526 阅读 · 0 评论 -
Java读取单个大文件的json数据避免内存溢出(二多线程版本)
Java读取单个大文件的json数据避免内存溢出(二多线程版本)原创 2022-11-02 11:23:43 · 1236 阅读 · 0 评论 -
Java读取单个大文件的json数据避免内存溢出(一单线程版本)
Java读取单个大文件的json数据避免内存溢出原创 2022-11-02 09:55:47 · 1876 阅读 · 0 评论 -
单例设计和静态方法
单例模式VS静态方法此文翻译文主要介绍下单例模式和静态方法的区别比较结论单例模式:是指实现了单例模式的类。下文提到单例类的时候指的是同一含义。静态类: 此处的静态类并不是特指语法意义上的静态类,而是指只包含静态方法的类。下文提到的静态类或静态或静态方法,在本文中的含义是一样的。另外一篇关于单例模式的不错的文章:http://poltora.info/blog/all-you-want-to-know-about-singleton/详细单例模式和静态类都很容易理解, 他们之间有一些相似转载 2021-04-15 22:48:10 · 713 阅读 · 0 评论 -
java try catch finally return结果
public class T { public static void main(String[] args) { System.out.println(test1()); //5 Map<String, String> map = test2(); System.out.println(map.get("name")); //lisi System.out.println(test3()); //3原创 2021-03-23 17:47:13 · 127 阅读 · 0 评论 -
java父类子类代码块加载顺序
public class Father { static{ System.out.println("父类静态代码块"); } { System.out.println("父类构造代码块"); } public Father(){ System.out.println("父类构造函数"); } static class Son extends Father { static{ .原创 2021-03-23 17:30:00 · 121 阅读 · 0 评论 -
CAS
CAS定义CAS全称:CompareAndSwap,比较并替换。CAS操作包含3个操作数,内存位置V,期望值A,新值B。如果内存位置的值和期望值匹配,那么处理器会自动将该位置的值更新。否则处理器不做任何操作。无论哪种情况,它都会在CAS指令之前,返回该位置的值。怎样使用JDK提供CAS支持java提供对CAS操作,具体在sum.misc.unsafe类下:final native boolean compareAndSwapObject(Object var1, long var2,原创 2021-03-14 23:41:05 · 84 阅读 · 0 评论 -
HashMap&ConcurrentHashMap
HashMap原理,数据结构是什么,为什么?jdk7使用数组+链表。因为Hashmap是根据key计算hash值,从而得到哈希表的索引下标,而hash本质是数组实现。当出现hash冲突的时候,一个桶可能需要存放多个数据,hashmap将根据equals方法,判断hash冲突的key是否是同一个值,如果此时key不相同,利用头插法,将出现Hash冲突的Key+Value存放在链表上。缺点:如果一个链表特边长,查询的效率就会很低。链表的特性是增删快,查询慢。jdk8使用了红黑树来解决链表过长而导致效率原创 2021-03-14 23:35:34 · 115 阅读 · 0 评论 -
线程池ThreadPoolExecutor整合Springboot使用
pom.xml为了在application.properties自定义的配置有提示 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>tru原创 2021-03-11 16:13:41 · 2148 阅读 · 0 评论 -
CompletableFuture任务编排案例
场景一个接口内有很多的业务逻辑,这些业务逻辑有的是可以并行执行的,有的是有先后顺序的。为了保证异步执行提升效率,并且异步中又有先后逻辑顺序,可以使用CompletableFuture异步编排的类。异步编排任务的创建及基本使用/** * 1:异步编排任务的创建及基本使用 * 使用线程池,异步执行任务。并且可以获取到任务的返回值。并且对任务的结果进行二次加工。 */public class CompletableFutureTest { public static ThreadPoo原创 2021-03-11 15:57:18 · 579 阅读 · 0 评论 -
nginx代理转发配置
需求centos服务器,192.168.4.1docker安装了两个springboot服务:192.168.8.20:8080 192.168.8.21:8081对外统一要用 192.168.4.1/xxx去访问所有的服务案例1本身访问服务2的url是: 192.168.8.21/ss浏览器输入 192.168.4.1/ss 就要访问到服务2的转发配置:server { listen 80; server_name localhost; charset原创 2021-03-05 19:54:52 · 4508 阅读 · 0 评论 -
Springboot 拦截器中使用application.properties配置的值
需求1.Springboot项目中,拦截器中想要获取到application.yml中的值2.Springboot项目中,拦截器中想要注入 RestTemplate或者其他对象3.Springboot项目中,使用了拦截器如果过滤掉swagger,让swagger可以正常访问。实现InterceptorProperties.java读取application.yml中user开头的配置。@Component@ConfigurationProperties(prefix = "user"原创 2021-03-05 13:39:29 · 1709 阅读 · 0 评论 -
zookeeper动态修改spring中的Enviornment对象中的配置
需求不停止代码,动态修改springboot的enviorment的值。原理:利用zookeeper的节点watch机制。原理分析1.Enviornment加载的时候会把application.properties中的文件,加载到enviorment–> propertySources–>propertySourcelist–>OriginTrackedMapProertySource中。2.我们可以再程序启动的时候,使用@PostConstruct注解,去连接zookee原创 2021-03-01 12:56:49 · 609 阅读 · 0 评论 -
ThreadLocal原理
1.原生jdbc如何实现事务伪代码 conn = DBpool.getConnection(); conn.setAutoCommit(false); insert(data,conn); //业务1 update(data2,conn); //业务2 conn.commit(); //事务必须在一个连接中才是有效的,因此必须要把获取到的conn连接传递到每个sql里面,才能保证事务。2.Spring对jdbc的事务如何实现的@Transactional注解保证事务,本质是AOP,原创 2021-03-01 11:50:17 · 156 阅读 · 0 评论 -
Redis核心原理
Redis 多路IO复用及原理Jedis源码 Jedis jedis = new Jedis("192.169.4.4", 6379); jedis.set("name","aa"); //socket jedis.close(); 底层是 this.socket = this.jedisSocketFactory.createSocket(); 创建了一个Socket socket-->tcp协议--->操作系统的内核 os kernel 模拟redis服务端和客户端原创 2021-02-27 22:34:38 · 144 阅读 · 0 评论 -
Mysql索引数据结构
索引的本质帮助Mysql高效查询的一种数据结构,存储在磁盘中。Mysql innodb存储引擎索引数据结构有哪些[1].hash索引[2].B + tree索引[3].为什么innodb引擎不让用户手动去控制hash索引?例如:select * from user where fname= ‘peter’根据fname=peter计算相应的hash值,找到9527这一行的记录指针。2)需要比对值是不是peter。(因为会有hash碰撞,如果不同的value通过一个hash计算达到了相原创 2021-02-27 12:36:56 · 131 阅读 · 0 评论 -
aop动态切换mysql数据源
需求Springboot项目,配置多个数据源,动态自动切换数据源。实现1.mysql建库建表1.创建4个库 test/customer/labormoney/employee2.对应库下创建表:person/customer/labor/employee3.每个表都是两个字段: id varchar(20),name varchar(20)2.pom.xml <parent> <groupId>org.springframework.boot&l原创 2021-02-26 17:21:45 · 239 阅读 · 0 评论 -
springboot注解和Aspect切面
场景分析 public User gerUser(String id) { //1.查询缓存 boolean cache = CacheUtil.isCache(id); //2.缓存命中,返回数据 if (cache) { System.out.println("缓存命中了-----------------"); return CacheUtil.getCache(id);原创 2021-02-26 11:49:29 · 474 阅读 · 0 评论 -
Spring data jpa 操作Mysql
1.maven依赖pom.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compil原创 2021-01-31 22:26:24 · 158 阅读 · 0 评论 -
java(docker) 中文乱码
1.使用java -jar xxx.jar在linux服务器上打印出的中文日志乱码的解决: java -Dfile.encoding=utf-8 -jar xxx.jar2. docker容器中读取外挂的linux服务器上的中文文件名乱码: (文件上传到服务器中文乱码)设置容器的环境:ENV LANG=C.UTF-8如果使用的是docker-compose,如下: environment: LANG: C.UTF-8 LANGUAGE: en T原创 2021-01-31 21:52:32 · 698 阅读 · 0 评论 -
java代码实现word转pdf(windows和linux都适用)
1.外挂一个jar包aspose-words-15.8.0-jdk16.jar 这个需要到官网下载2.准备一个配置文件license.xml 放在maven项目的resources目录下<License> <Data> <Products> <Product>Aspose.Total for Java</Product> <Product>Aspose.Words for Java<原创 2020-12-17 22:44:15 · 2961 阅读 · 1 评论 -
Idea中springboot打包插件及main函数打包插件
1.Springboot项目打包依赖: <build> <finalName>项目打出的jar包的名称</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-b原创 2020-12-12 11:34:58 · 371 阅读 · 0 评论 -
java jar包在linux上运行的脚本
#!/bin/bashtype=$1if [ "$type" = "" ]then echo "请输入参数 start|stop|status" exit 8fipid=`ps -ef|grep xxx.jar|grep -v "grep"|awk '{print $2}'`LOGDIR=/root/xxx/logJVM_OPTS="-Xms512m -Xmx512m -Xmn256m"HEAP_DUMP_OPTS="-XX:+HeapDumpOnOutOfMemoryError原创 2020-11-19 11:55:27 · 186 阅读 · 0 评论 -
Spring web整合原理
1. Java SE整合Spring需要创建ApplicationContext,然后通过getBean获取实例对象2. Spring 整合Web1) 容器启动时候需要自动装载 ApplicationContext,Spring提供的ContextLoaderListener就是为了自动装配ApplicationContext的配置信息2) 配置web.xml<context-param> <param-name>contextConfigLocation<原创 2020-11-18 17:31:27 · 84 阅读 · 0 评论 -
Java 懒汉式创建工具类
public class ConversionUtils { private static ConversionUtils conversionUtils; private ConversionUtils() { } public static ConversionUtils getInstance() { if (conversionUtils == null) { synchronized (ConversionUtils.cla原创 2020-11-18 16:48:37 · 169 阅读 · 0 评论 -
Java日志框架sl4j的使用
1.导入依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency>2.添加配置文件在 src/main/resources 目录下原创 2020-11-18 16:04:09 · 1813 阅读 · 0 评论 -
Spring AOP IoC
AOP面向切片编程AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理、日志管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。实现方式:- JDK动态代理- Cjlib代理IoC把原先在代码里面需要实现的对象创建、对象之间的依赖,反转给容器来帮忙实现。Spring IOC容器通过xml,注解等其它方式配置类及类之间的依赖关系,完成了对象的创建和依赖的管理注入。实现IOC的主要设计模式是工厂模式。具体原创 2020-11-17 22:56:58 · 65 阅读 · 0 评论 -
Maven基本使用
1.maven安装下载解压即可(绿色版本)配置环境变量MAVEN_HOME2.maven配置本地仓库修改 conf/settings.xml<localRepository>D:/repository(本地仓库路径)</localRepository>3.maven配置中央仓库修改 conf/settings.xmldf<mirrors> <mirror> <id>nexus-aliyun<原创 2020-11-17 22:00:50 · 118 阅读 · 1 评论 -
Java字符串拼接
1.使用+拼接字符串存在问题如果拼接的某个字符串为null,会强制变成null的字符串。如下:String s = null + “t”; //s=nullt字符串常量池中会产生很多的不需要的子对象。因为String本身是不可变的,所以每拼接一次,就会缠身给一个新的对象,但是它是线程安全的。如JVM对于“+”是这样处理的,首先创建一个String对象str,并把“abc”赋值给str,然后在第三行中,其实JVM又创建了一个新的对象也名为str,然后再把原来的str的值和“de”加起来再赋值给原创 2020-11-06 10:27:39 · 523 阅读 · 0 评论 -
原生java读取apollo配置中心参数
项目结构1.创建名为java-apollo的项目1.1 pom.xml如下: <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.4.0</version> &l原创 2020-10-10 18:19:33 · 3726 阅读 · 1 评论 -
Springboot RestTemplate post/get请求所有情况
项目结构附图如下:1. 准备服务提供者1.1 创建service-provider的项目1.1.1 pom.xml如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.16.RELEASE&原创 2020-10-10 14:13:07 · 334 阅读 · 0 评论 -
读取yml文件内容变成java实体类
1.application.yml文件如下id: 19name: 你好type: relId: 372.maven依赖 <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-yaml</artifactId> &原创 2020-08-18 22:11:55 · 2275 阅读 · 0 评论 -
java常量定义
1.接口定义public interface Constants1 { public String NAME = "nihao"; public String HOBBY = "basketball"; public Integer AGE = 15;}public class Test1 { public static void main(String[] args) { String name = Constants1.NAME; S原创 2020-08-18 21:48:52 · 131 阅读 · 0 评论 -
Springboot整合Apollo配置中心
SpringBoot 2.1.3 Apollo1.5.11.pom.xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version>原创 2020-08-07 18:28:27 · 350 阅读 · 0 评论 -
flyway集承到springboot
项目启动后自动在数据库中创建数据表,插入初始化数据。1.添加依赖,主要是flyway-core <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version>原创 2020-08-04 10:56:14 · 152 阅读 · 0 评论 -
java连接mongo数据库
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.2.2</version> </dependency> &...原创 2020-05-15 17:14:48 · 231 阅读 · 0 评论