想睡觉的小码农
码龄7年
关注
提问 私信
  • 博客:82,833
    82,833
    总访问量
  • 60
    原创
  • 513,240
    排名
  • 8
    粉丝
  • 0
    铁粉

个人简介:我这个人很懒,什么也没有说

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2018-05-10
博客简介:

TT_130616的博客

查看详细资料
个人成就
  • 获得33次点赞
  • 内容获得29次评论
  • 获得107次收藏
  • 代码片获得176次分享
创作历程
  • 25篇
    2021年
  • 24篇
    2020年
  • 15篇
    2019年
成就勋章
TA的专栏
  • spring
    4篇
  • 设计模式
    3篇
  • JUC
    3篇
  • java基础
    10篇
  • 多线程
    14篇
  • rabbitMQ
    3篇
  • 算法
    1篇
  • 排序算法
    1篇
  • 集合
    7篇
  • 问题总结
    12篇
  • 数据库
    7篇
  • Linux
    3篇
  • Java反射
    1篇
  • java虚拟机
    2篇
  • JavaWeb
    1篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

线程内部存储ThreadLocal

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

rabbitMQ-消费者手动确认-ACK

1、消费者消费消息如果我们设置的是自动确认的话,那么就会有当接收到消息,去处理消息的时候生成异常,那么就会有消息丢失的情况。所以我们可以设置手动确认2、springBoot设置手动确认消息2.1引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-t
原创
发布博客 2021.08.28 ·
1293 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

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

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

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

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

使用logback+slf4j实现日志输出

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

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

题目描述:给定两个大小分别为 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 ·
183 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

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

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

设计模式-单例模式

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

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 ·
195 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

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

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

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 ·
218 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

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

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

synchronized到底锁的是什么??

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

原子引用与ABA问题的解决

1、原子引用1.1 AtomicReferencejava.util.concurrent.atomic包中不仅有原子基本类型像AtomicInteger、AtomicBoolean等基本原子数据类型。如果我们有像User类、Org类这种引用数据类型,那么JUCA包中也为我们提供了AtomicReference原子引用。具体使用如下。 User u = new User(); //原子引用 AtomicReference<User> atomicRefer
原创
发布博客 2021.06.28 ·
420 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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 ·
1126 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

关于不安全的集合类与解决替代方案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 ·
323 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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

目录一、volatile关键字volatile的特性1、保证可见性2、不保证原子性3、禁止指令重排序二、AtomicInteger&&CAS&&Unsafe一、volatile关键字volatile的特性可见性 不保证原子性 有序性(禁止指令的重排序)1、保证可见性在我们java内存中,有主内存(公共内存)和工作内存(线程内的私有内存)。在我们多线程访问的时候,需要先将主内存(公共内存)中的数据拷贝一份到线程的工作内存(线程私有内
原创
发布博客 2021.06.24 ·
3622 阅读 ·
0 点赞 ·
2 评论 ·
8 收藏

在循环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 ·
561 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

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 ·
1739 阅读 ·
0 点赞 ·
0 评论 ·
5 收藏

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

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 ·
3257 阅读 ·
1 点赞 ·
4 评论 ·
6 收藏
加载更多