自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 线程内部存储ThreadLocal

1、是什么?并发访问共享变量的时候可以考虑加锁控制(synchornized、Lock锁、volatile+cas)这种方式对内存友好,不用额外的开辟线程内的存储空间,但是并发的时候要互斥访问对效率不太友好;早在JDK1.2的就提供了ThreadLocal的线程内部存储机制来解决并发访问题。设计思想是在线程内部存储共享变量的副本,在线程存活的过程中可以随时随意场景中取到自己保存的变量副本。2、怎么使用?import java.util.concurrent.TimeUnit;publi

2021-09-17 16:41:26 494 1

原创 rabbitMQ-消费者手动确认-ACK

1、消费者消费消息如果我们设置的是自动确认的话,那么就会有当接收到消息,去处理消息的时候生成异常,那么就会有消息丢失的情况。所以我们可以设置手动确认2、springBoot设置手动确认消息2.1引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-t

2021-08-28 19:37:07 1215

原创 rabbitMQ-生产者可靠发送-回退模式-return

1、什么是return机制?上篇博客rabbitMQ-生产者可靠发送-消息确认-Confirm说了消息的生产者可靠发送,可以依靠confirm模式。但是confirm模式只保证消息成功从生产者发送到交换机,但是如果交换机没有找到queue呢?如果根据路由发送到具体的队列queue的时候,没有匹配的队列呢?这种情况confirm模式不能保证,这就得依赖return回退机制了。return回退机制就是当交换机路由到queue的时候,没有匹配的队列,return模式可以在消息发送之后异步监听到mq的回

2021-08-28 18:34:33 1152

原创 rabbitMQ-生产者可靠发送-消息确认-Confirm

1、rabbitMQ可能存在的数据不一致问题原因生产者发送消息到Broker消息服务器(消息发送失败) rabbitmq服务器自身故障导致消息丢失 消息消费者接收消息后处理失败(消费消息失败)2、生产者发送消息防止消息丢失使用rabbitMq的事务机制,效率极低,并且失去了异步的初衷,所以建议不适用 使用confirm消息确认机制,比上面的事务机制要好一些,但是当访问量上来之后,由于频繁的确认交互,也会很大程度降低效率,所以如果不是很重要的消息,也不建议使用。3、springBoot演示.

2021-08-28 17:26:42 1069

原创 使用logback+slf4j实现日志输出

1、logback和slf4j的关系slf4j为简单日志门面,是日志框架的抽象,实现了很多日志框架一些通用的api,其中log4j和logback是众多日志框架中的几种。llogback可以单独的使用,也可以绑定slf4j一起使用。1. 单独使用。分别调用框架自己的方法来输出日志信息。2. 绑定slf4j一起使用。调用slf4j的api来输入日志信息,具体使用与底层日志框架无关(需要底层框架的配置文件)简单来说,logback是一个日志框架,而slf4j封装了很多日志框架通用的api,可以结合

2021-08-26 00:00:24 927

原创 力扣:寻找两个正序数组的中位数

题目描述:给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示例 3:输入:nums1 = [0,..

2021-07-23 19:05:31 132

原创 排序算法之三种基本排序:直接插入排序、冒泡排序、简单选择排序

1、冒泡排序 时间复杂度:O(n^2)基本思想:相邻的元素两两进行比较,反序则交换,这样每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。代码实现如下:public class BubbleSort { /** * 冒泡排序:时间复杂度O(n^2) * 思想:基本就是相邻的元素两两进行比较,反序则交换,这样每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。 * @author lst ...

2021-07-12 16:55:24 1464

原创 设计模式-单例模式

单例模式是一种常用的设计模式,并且是面试中常问的一种设计模式,这篇文章就整理一下本人学习到的几种单例模式的设计1、饿汉式饿汉式,顾名思义就是一上来就创建单例实例。class HungerSingleton{ //类加载时就实例化 private static final HungerSingleton instance= new HungerSingleton(); //构造函数私有化 private HungerSingleton(){ }

2021-07-08 00:12:20 328

原创 JUC线程池

目录1、线程池是什么?2、为什么要使用线程池?3、JUC中线程池的三大线程池3.1获取单一线程的线程池 newSingleThreadExecutor()3.2获取固定数量线程的线程池 newFixedThreadPool(int nThreads)3.3获取线程数量可伸缩的线程池Executors.newCachedThreadPool()4、获取线程池的7大参数5、自定义一个线程池6、四种拒绝策略6.1AbortPolicy()6.2DiscardPolic.

2021-07-06 22:36:47 97

原创 JUC之常用辅助类-cyclicBarrier、CountDownLatch、Semaphore

在我个人理解下,这几个JUC包中的辅助类,实质上其实就是线程间的通信,只不过它们适用于不同的场景下。1、CountDownLatch(减法计数器)我们可以把它理解为一个加法计数器,计数器只有达到我们预先的设定的值之后,执行await方法的线程才可以继续往下执行。demopackage juctest;import java.util.concurrent.CountDownLatch;public class CountDownLatchTest { public stati

2021-07-06 00:00:50 148

原创 jdk1.8下的ConcurrentHashMap源码分析

1 、构造函数 1.1空参构造函数 /*** Creates a new, empty map with the default initial table size (16).*/public ConcurrentHashMap() {} 1.2指定初始化容量的构造函数public ConcurrentHashMap(int initialCapacity) {if (initialCapacity < 0)//...

2021-07-02 17:02:24 170

原创 线程等待唤醒--生产者消费者模式

1、synchronized版在生产线程执行生产proucet()方法时先判断总量,如果sum>0,即库存里还有没有被消费线程消费的食物就等待wait(),wait()方法会释放锁,让消费线程先占用锁去调用消费方法。同理,消费线程进入判断,如果sum=0,即生产者还没有生产出食物,或者食物在这一刻被消费线程消费光了,那就需要等待消费者生产食物。判断为什么要用while循环而不是if?防止虚假唤醒。比如当个第一个生产者A进入product()方法,if判断...

2021-06-30 13:09:15 162

原创 synchronized到底锁的是什么??

先说结论,锁无非是锁两种:非静态方法锁的当前实例对象this 静态方法锁的是当前类的class对象 代码块锁的是指定的对象1、synchronzed修饰普通方法package juctest;import java.util.concurrent.TimeUnit;public class LockTest1 { /** * 两个线程访问同一个synchronzied修饰的方法,资源类 * 其中谁先抢占着锁谁先执行。 * synchronzie

2021-06-30 11:40:09 183

原创 关于不安全的集合类与解决替代方案1-ArrayList

List --ArrayListArrayList底层是维护了一个数组。ArrayList线程不安全,因为其add等方法没有synchronized关键字修饰,也没有任何同步加锁处理。 public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; }

2021-06-28 17:04:32 250

原创 原子引用与ABA问题的解决

1、原子引用1.1 AtomicReferencejava.util.concurrent.atomic包中不仅有原子基本类型像AtomicInteger、AtomicBoolean等基本原子数据类型。如果我们有像User类、Org类这种引用数据类型,那么JUCA包中也为我们提供了AtomicReference原子引用。具体使用如下。 User u = new User(); //原子引用 AtomicReference<User> atomicRefer

2021-06-28 12:52:18 373

原创 CAS的缺点

1、循环时间长,开销大cas方法底层有一个do....while....循环。以Unsafe的getAndAddInt为例 public final int getAndAddInt(Object var1, long var2, int var4) { int var5; do { var5 = this.getIntVolatile(var1, var2); } while(!this.compareAndSwapIn

2021-06-28 11:17:02 1042

原创 cas是如何保证原子性的??

目录一、volatile关键字volatile的特性1、保证可见性2、不保证原子性3、禁止指令重排序二、AtomicInteger&&CAS&&Unsafe一、volatile关键字volatile的特性可见性 不保证原子性 有序性(禁止指令的重排序)1、保证可见性在我们java内存中,有主内存(公共内存)和工作内存(线程内的私有内存)。在我们多线程访问的时候,需要先将主内存(公共内存)中的数据拷贝一份到线程的工作内存(线程私有内

2021-06-24 23:25:46 3320 2

原创 在循环List时使用List.remove()引起的java.util.ConcurrentModificationException异常

2021-5-8今天使用了for循环List,remove操作了list中的数据,运行测试的时候抛出了java.util.ConcurrentModificationException如下java.util.ConcurrentModificationExceptionat java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)at java.util.ArrayList$Itr.next(Arr...

2021-05-08 15:06:24 484

原创 order by nulls first 、order by nulls last 控制排序时null的记录的位置

我们order by num 进行排序时,如果 某些记录的num为null,null默认是最大的,所以当ASC升序排序时为null的记录是放在最下面的;而当DESC降序排序时,num为null的记录是放在最上面的。我们还可以通过 order by +字段名+ nulls first 来指定字段为null的记录不管是ASC或者DESC总是排在最上面的;反之,order by +字段名 +nulls last 为空的记录总是排在最下面...

2021-04-09 15:16:15 1546

原创 解决金仓数据库的查询不出来筛选条件为空字符串的记录的问题

1、在客户端连接工具执行如下语句,发现结果是on,即配置了服务识别空字符串自动为空的设置show ora_input_emptystr_isnull2、修改安装路径下的/data/kingbase.conf,添加如下配置ora_input_emptystr_isnull = on3、保存,重启数据库服务即可//重启数据库指令//在安装目录/Server/bin/下执行sys_ctl restart - D /你的data路径...

2021-03-18 11:23:13 2875 4

原创 解决金仓数据库的timestamp时间类型的数据插入不显示时分秒的问题

我们的sql语句是这样的,因为属性类中我们的时间类型同意定义为String类型,所以做了转换to_dateUPDATE "USER"."LOG"SET "LOGIN_TIME" = to_date('2021-03-17 10:10:44','yyyy-mm-dd hh24:mi:ss')WHERE "LOG_ID" = '1'但是新安装的kingbase好像不适配。其实不是不适配,是因为没有配置参数1、在数据库连接客户端,新建查询,执行后发现结果是offshow ora_da

2021-03-18 11:18:05 2695 2

原创 脚本获取当前时间戳

timestamp=`date +%Y%m%d-%H%M%S`

2021-03-08 10:19:55 177

原创 配置两台服务器之间的ssh远程连接免登录

如现在写部署脚本的时候,需要先从本机(234)机器git指令拉取代码,mvn打包之后,将jar(war)包需要远程传输到678服务器启动,这个过程完成自动化部署 但是,在234服务器远程678服务器的时候就会中途弹出填写密码,非常不合理,这就需要配置ssh免登录1、在234(主动连接)服务器上ssh-keygen -t rsacd /root/.sshscp id_rsa.pub [email protected]:/root/.ssh/server235.pub//输入密码..

2021-03-08 10:16:08 297 1

原创 杀死某个XXXX名称的所有进程

在编写自动化部署脚本的时候,需要先杀死之前的旧的服务的进程ps -ef | grep XXXX | grep -v grep | awk '{print $2}' |xargs kill -9

2021-03-04 10:43:12 158 1

原创 解决idea ctrl+左键无法跳转指定类的问题

在项目上右击选择Mark Directory as ,选择Sources Root 即可解决 在我第一次操作以上操作后,整个项目爆红,最后查出来的原因可能是你的项目不是一个maven项目,需要将pom.xml文件 Add as Maven Project后爆红消失,并且可以正常ctrl+左键跳转。 ...

2021-01-27 15:49:51 5563 1

原创 idea中显示不全git远程分支

fetch一下就可以了

2020-12-22 14:08:34 2321 1

原创 rpad()函数:sql补齐字符

rpad函数从右边对字符串使用指定的字符进行填充rpad(string,padded_length,[pad_string])string:表示需要被补齐的字符串 padded_length:字符的长度,是补齐后返回的字符串的数量,如果这个数量比原字符串的长度要短,rpad函数将会把字符串截取成从左到右的n个字符; pad_string 是个可选参数,这个字符串是要粘贴到string的右边,如果这个参数未写,rpad函数将会在string的右边粘贴空格。例如:select *,rpad(

2020-11-26 11:23:06 1894

原创 常用的Xshell指令

1、su -root 切换到root账号2、tail -f XXX.log 实时监控日志3、Ps –ef|grep xxxx 查看要重启进程的进程号4、ps -ef 查看进程信息(pid)5、ps -e|grep mysql 查看(模糊)mysql的pid和其他信息6、kill -s 9 pid 杀死指定进程号进程7 、kill -9 x x 杀掉该项目的进程 (x为进程号(pid),同时杀多个中间以空格分割)8、killall mysqld...

2020-11-26 09:59:34 970

原创 内存溢出,无法创建新的本地线程的原因和解决思路

内存溢出,无法创建新的本地线程的原因和解决方案java.lang.OutofMemoryError:unable to create new natinve thread可能原因1、内存耗尽2、超过了系统设置的线程数阈值解决方法:(首先是排除了代码问题之后)1、用jstack 排查应用是否创建了过多的线程 相关指令 jps -ml jstack pid (pid指的是进程号) ...

2020-11-25 16:04:10 1903

原创 递归查询部门层级列表 START WITH .... CONNECT BY..... PRIOR......order siblings by....

具备条件是:系统拥有多级部门,每级部门中拥有自己的order_num,从XXX~999,但是每级部门的order_num并不相关联要求是给一个unit_id,查询此unit下的所有子部门和孙子部门和重孙子部门...(此处省略一亿字)select unit_id, unit_code, SUPERIOR_UNIT_ID, concat(superior_unit_name,'/',unit_name) unit_name, level_code, r

2020-11-25 10:10:50 453 1

原创 在sql中使用递归查询部门的全路径

select reverse(SYS_CONNECT_BY_PATH(reverse(unit_name),'/'))from "UNIT"where unit_ID ='根节点的unit_id'START WITH unit_id = '当前节点的unit_id'CONNECT BY unit_id = PRIOR SUPERIOR_UNIT_ID结果为 阿里巴巴/运营部/行政处/当我们要查询所有人的类似上述结果样式的详细组织情况的时候只需要将人员表与组织表相关联,然后在sele..

2020-11-25 09:55:18 1871

原创 Arrays.asList()、ArrayList.subList()方法的使用注意事项

Arrays.asList()使用Arrays.asList()方法会将Array类型的数组转变为List集合形式。package collection;import java.util.Arrays;import java.util.List;public class round1 { public static void main(String[] args) { Integer[] arr= {1,2,3}; List<Intege

2020-11-10 15:43:41 370

原创 springCould通过@Async标签异步方法中调用feign自动进入熔断函数????

在SpringCould中通常需要各个模块之间的相互调用实现数据互通和业务逻辑但是当使用异步标签@Async与@EableAsync的配合使用的时候,在@Async标注的异步方法中调用fegin会自动进入熔断函数。在网上查阅资料发现@Async的方法不可以调用fegin当生产者的接口,只是调用另外一个外部接口的作用的时候(即生产者只有你一个消费者),可以将被调用方法打上异步@Async标签,将消费者异步方法标签删除,也可实现异步效果。我的代码情况如下调用方: @Override

2020-10-12 10:38:54 3324 1

原创 @EnableAsync配合@Async标签使用实现异步处理

@Async标签一、使用Async标签的使用条件:一般应该使用在类的方法上,如果使用在类上,那么整个类中的方法都是异步的。 调用@Async方法的方法所在的类应该是spring容器管理的bean 应该配合@EnableAsync标签同时使用(下面会说如何使用@EnableAsync标签) 使用Async注解的方法,返回值必须为Void或Futur二、使用注意事项当被标注的方法没有确定返回类型时,@Async会失去作用 当被标注的方法与调用方法在同一个类中的时候,@Async会失去作用

2020-09-22 10:36:03 265

原创 使用dom4j对xml文件进行处理解析

将String转为xml文件对象 private static Document strToDocument(String xmlStr) { SAXReader reader=new SAXReader(); Document doc=null; try { InputStream is=new ByteArrayInputStream(xmlStr.getBytes()); doc=reade

2020-08-12 16:05:51 145

原创 使用东方通中间件部署项目

如何使用东方通中间件部署web项目一:在idea中将javaweb项目打成war包file->Project Structure->Artifacts - 点击+号,选择Web Application:Archive->Empty,左侧就出现了新建的unnamed,点击+号,选择Directroy Content,选择自己的WebContent目录。 右击右边的Artifacts,选择Extract Into/WEB-INF/classes 然后去自己的项目目录下o

2020-08-12 14:11:29 7569 6

原创 Artifact XXX:war exploded: Artifact is being deployed, please wait...解决方法

Artifact XXX:war exploded: Artifact is being deployed, please wait...昨天困扰了我一天的问题,终于如便秘通了似的解决了。。。。项目启动的时候,tomcat已经启动起来了,但是这个项目一致不能Artifact is deployed successfully很是困扰控制台截图在网上搜了很多办法,有说刷新maven的,可是我的这个旧系统根本就没有用到maven有说修改tomcat -》conf目录下的-》catalin.

2020-08-03 16:35:28 18705 2

原创 SpringBoot整合redis

bootstrap.yml配置中在spring:下一层添加配置redis服务器的IP端口以及连接池的参数设置redis: host: 10.15.255.15 port: 6379 database: 5 lettuce: pool: max-active: 1024 max-wait: -1 m...

2020-01-17 15:44:03 141

转载 String...与String[]的区别(转载)

————————————————版权声明:本文为CSDN博主「布拉格的爱」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/zhangdongnihao/article/details/74295696类型后面三个点(String…),是从Java 5开始,Java语言对方法参数支持一种新写法,叫可变长...

2020-01-17 15:18:33 436

转载 Java反射机制(转载)

引用地址:http://www.hello-code.com/blog/java/201703/6278.htmlJava反射机制是一个非常强大的功能,在很多大型项目比如Spring, Mybatis都可以看见反射的身影。通过反射机制我们可以在运行期间获取对象的类型信息,利用这一特性我们可以实现工厂模式和代理模式等设计模式,同时也可以解决Java泛型擦除等令人苦恼的问题。本文我们就从实际应用的...

2020-01-14 11:37:57 113

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除