java
文章平均质量分 86
abyssalshen
此人很懒,什么都没有留下。
展开
-
JAVA集合
ArrayList与Vector除了推出时间不同以外,实际上他们内部的实现机制也有所不同,通过源代码的分析可以发现Vector类的操作方法采用的都是synchronize同步处理,而ArrayList并没有进行同步处理,所有Vector类中方法在多线程访问的时候属于线程安全的,但是性能不如ArrayList高,所以在考虑到线程并发访问的情况下才会去使用Vector子类。否则,进行扩容操作。在HashMap底层使用数组加(链表或红黑树)的结构完美的解决了数组和链表的问题,使得查询和插入,删除的效率都很高。原创 2022-11-01 22:44:36 · 213 阅读 · 0 评论 -
springboot多数据源的事务统一
开发中,发现数据始终只回滚一部分,一部分数据始终不回滚,查看了很久才发现该service方法的方法里面存在两个不同的数据源,想在对原项目不做大的改动下,实现事务的统一回滚。在网上查找资料,找到了比较简单的变通方法。注:分布式事务在java的解决方案就是JTA(即Java Transaction API);springboot官方提供了 Atomikos or Bitronix的解决思路。对于单源数据库,只要在需要进行事务控制的方法上添加@Transactional注解就可以,但是对于多源数据库,@Tra原创 2020-08-28 11:15:08 · 2164 阅读 · 0 评论 -
shiro验证注解
@RequiresAuthentication验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时。@RequiresUser验证用户是否被记忆,user有两种含义:一种是成功登录的(subject.isAuthenticated() 结果为true);另外一种是被记忆的(subject.isRemembered()结果为true)。@RequiresGuest验证是否是一个guest的请求,与@RequiresUser完全相反。换言之,Requi原创 2020-06-28 10:34:40 · 481 阅读 · 0 评论 -
SpringBoot 测试类无法自动注入
原来的测试类的注解:@RunWith(SpringRunner.class)@SpringBootTest然后就运行测试成功但是前不久再用此方法运行,结果失败,提示@SpringBootTest(classes = XX.XX),尝试填入了测试类自身,@Autowired注入失败,填入需要注入的类,还是注入失败后来在填入启动类Application后终于注入成功,成功运行测试@Run...原创 2020-04-02 12:06:56 · 1467 阅读 · 1 评论 -
微服务网关——Spring Cloud Gateway
实现微服务网关的技术有很多,nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务zuul ,Zuul 是 Netflix 出品的一个基于 JVM 路由和服务端的负载均衡器。spring-cloud-gateway, 是spring 出品的 基于spring 的网关项目,集成断路器,路径重写,性能比Zuul好...原创 2019-11-27 18:00:37 · 283 阅读 · 0 评论 -
Java多线程之原子操作类
在并发编程中很容易出现并发安全问题,最简单的例子就是多线程更新变量i=1,多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchronized进行控制来达到线程安全的目的。但是由于synchronized是采用的是悲观锁策略,并不是特别高效的一种解决方案。实际上,在J.U.C下的Atomic包提供了一系列的操作简单,性能高效,并能保证线程安全的类去更新多种类型。...原创 2019-11-15 18:01:21 · 189 阅读 · 0 评论 -
Fork/Join框架
一、引言Fork/Join框架是Java并发工具包中的一种可以将一个大任务拆分为很多小任务来异步执行的工具,自JDK1.7引入。总体的设计参考了为 Cilk 设计的 work-stealing 框架。Fork/Join 并行方式是获取良好的并行计算性能的一种最简单同时也是最有效的设计技术,是 分治算法(Divide-and-Conquer) 的并行版本。fork/join框架是Executor...原创 2019-11-14 16:09:52 · 173 阅读 · 0 评论 -
Executor框架
我们之前创建一个线程的时候,就是直到new一个Thread创建一个线程,但是在jdk1.5之后,Java为我们提供了一个Java.util.concurrent包,这个包下有Executor接口,这就为我们提供了线程池的方法去开启多个线程,那么说到这里我们是不是会问:为什么要用Executor呢?或者new的方式有什么缺点呢?1)每次我们new Thread都会创建一个对象,不能被重用,而且对象...原创 2019-11-13 17:05:56 · 207 阅读 · 0 评论 -
Linux上Java的安装与配置
1.下载 JDK进入 Oracle 官方网站 下载合适的 JDK 版本,准备安装。注意:这里需要下载 Linux 版本。这里以jdk-8u221-linux-x64.tar.gz为例。2. 创建目录在/usr/local/目录下创建java目录,mkdir /usr/local/javacd /usr/local/java把下载的文件 jdk-8u221-linux-x64.tar...原创 2019-09-04 14:47:08 · 195 阅读 · 0 评论 -
Log4j.properties配置详解
一、 Log4j简介Log4j有三个主要的组件:Loggers(记录器):日志类别和级别;Appenders (输出源):日志要输出的地方;Layouts(布局):日志以何种形式输出1.1 LoggersLoggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ...转载 2019-04-17 16:21:21 · 187 阅读 · 0 评论 -
消息队列常见问题
前言本文大概围绕如下几点进行阐述:为什么使用消息队列?使用消息队列有什么缺点?消息队列如何选型?如何保证消息队列是高可用的?如何保证消息不被重复消费?如何保证消费的可靠性传输?如何保证消息的顺序性?我们围绕以上七点进行阐述。需要说明一下,本文不是《消息队列从入门到精通》这种课程,因此只是提供一个复习思路,而不是去教你们怎么调用消息队列的API。建议对消息队列不了解的人,去找点消息...转载 2019-03-21 11:40:59 · 312 阅读 · 0 评论 -
Spring data jpa sort多属性排序问题
在spring data for jpa 中,存在一个pageable接口,是对查询分页的一个利器。pageable实现类的构造方法中有个Sort参数,可以按照列属性进行排序。通过查看Sort类的构造方法,我们对Sort这个类进行一下分析,Sort类中存在一下几个构造方法:1.public Sort(Order… orders);2.public Sort(List orders);3.p...原创 2019-03-21 11:04:13 · 7885 阅读 · 5 评论 -
SpringBoot @Scheduled注解使用: 同步/异步同一任务及多任务并发执行
转载备忘,原文:https://blog.csdn.net/Demo_Liu/article/details/85335414本文将介绍@Scheduled注解使用过程中:1.1 同一任务的同步执行(下次任务执行将在本次任务执行完毕后的下一次配置时间开始)1.2 同一任务的异步执行(下次任务将在下一个配置时间开始,不等待当前任务执行完毕)2.1 多任务并发执行首先,要想使用@Schedu...转载 2019-03-21 10:37:54 · 3765 阅读 · 1 评论 -
SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)
声明:本文来源于https://www.cnblogs.com/leeSmall/p/8721556.html,写在这里只是为了方便查阅。1、概念:SpringBoot 整合消息服务2、具体内容对于异步消息组件在实际的应用之中会有两类:· JMS:代表作就是 ActiveMQ,但是其性能不高,因为其是用 java 程序实现的;· AMQP:直接利用协议实现的消息组件,其大众代表作:Rab...转载 2019-03-21 10:02:34 · 163 阅读 · 0 评论 -
解决MySQL报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents .....
1.前言今天在用SpringBoot2.0+MySQL搭建项目开发环境的时候启动项目发现报了一个很奇怪的错,报错内容如下:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one timezone. You must configur...转载 2019-03-21 09:16:55 · 224 阅读 · 0 评论 -
Java并发编程:Lock
转载备忘,原文链接:http://www.cnblogs.com/dolphin0520/p/3923167.html从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述。本文先从synchro...转载 2019-03-20 16:50:11 · 77 阅读 · 0 评论