自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux系统中CPU占用率较高问题排查思路与解决方法

Linux系统中CPU占用率较高问题排查思路与解决方法

2022-11-01 10:27:04 1613

原创 @Value获取yml文件的map和json对象写法

yml文件: serviceCodeToUrlList: '{ "106":"https://h5-test.schengle.com/ShengDaPostalBank/carWash", "101":"https://h5-test.schengle.com/ShengDaPostalBank/airConditionClean", "102":"https://h5-test.schengle.com/ShengDaPostalBank/eighteenCheck", "1

2021-11-09 18:06:37 2384

原创 HASHMAP解决hash碰撞相关问题

1.封装类作为KEY,都是final类型保证hash值不可更改; 内部已经实现equals和hashcode方法,遵循hashmap内部规范计算准确性,有效减少hash碰撞的几率, 2.如果使用object作为key,需要重写equals和hashcode方法,equals保证key在hash表中唯一,hashcode计算存储位置; 3.不直接使用hashcode方法计算得到的哈希值作为table下标,是因为hashcode得到的int类型数据范围比较大,hashmap的数组数据范围小得多小,存储数据的范围

2020-10-01 09:16:52 1125

原创 2020-09-26

二.线程池 JDK可以创建五种类型的线程池 1.固定数量的线程池Executors.NewFixedThreadPool() -->线程数量一直不变,只有核心线程,且数量固定,没有非核心线程。keepAliveTime设置为0L,代表多余的线程会被立即终止。因为不会产生多余的线程,所以keepAliveTime是无效的参数;任务队列采用了无界的阻塞队列LinkedBlockingQueue 2.根据实际情况调整的线程数量的线程池 Executors.NewCachedThreadPool() 3.单线

2020-09-26 15:16:34 1608

原创 工作队列分类

BlockingQueue<Runnable> workQueue;-->工作队列分类 1.SynchronousQueue (同步队列)直接提交队列, 没有容量,每一个插入操作都要等待一个删除操作,反之,每一个删除都要等待插入操作,每一个新任务都交给线程执行,如果没有空闲线程,则尝试创建新的线程,如果线程达到最大时,则执行拒绝策略 2,有界线程ArrayBlockingQueue 判断节点: corePoolSize-->队列-->MaximumPoolSize-->.

2020-09-26 15:15:16 289

原创 线程的execute()和submit()区别

线程的execute()和submit()区别 execute接收runnable对象参数,方法不会返回执行结果,但是submit可以接受runnable和callable对象参数,通过结果封装进futrue,futrue.get()方法获取结果和异常信息, 但是以上两种该方法都无法捕获异常信息,解决方式就是使用ThreadFactory,实现它的UncaughtExceptionHandler。 ThreadFactory factory = r->{ Thread thread = Exe..

2020-09-26 15:11:28 381

原创 线程池的构造方法和线程池池工作队列

线程池的构造方法 ThreadPoolExecutor( int corePoolSize;-->核心线程数 int maximumPoolSize;-->最大线程数 long KeepAliveTime;-->空闲线程休眠时间 TimeUint uint;-->时间单元 BlockingQueue<Runnable> workQueue;-->工作队列 ThreadFactory threadFactory; -->线程工厂 RejectedExecutio

2020-09-26 12:06:58 240

原创 synchronized和reentrantlock区别 5点:

synchronized和reentrantlock区别 5点: (retryLock(),interrupt(),list,newCondition(),boolean) 1.reentrantlock 具有try lock()可以在其他线程未持有锁的时候,获取某个对象锁,减少同一时刻阻塞线程的数量 2.reentrantlock 可以对锁的支持性控制,通过 Boolean参数,指定是公平获取锁还是等待时间最长的获取锁 3.reentrantlock 具有interrupt,正在等待的reentrantl

2020-09-26 10:44:32 258

原创 Redis分布式锁的正确实现方式 https://mp.youkuaiyun.com/console/editor/html/107082452

前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。 可靠性 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持

2020-07-02 13:31:11 235

转载 ehcache、memcache、redis三大缓存比较

ehcache、memcache、redis三大缓存比较

2019-11-14 09:27:20 130

原创 Linux日志中如何查找关键字及其前后的信息

Linux日志中如何查找关键字及其前后的信息 在日常工作中,我们经常需要查看日志,比如可以通过tail命令实时查看日志,也可以通过cat等命令查看日志信息。 但现在我们要讨论的是,如何从日志中通过关键字过滤出我们想要的内容,方法有多种,今天我们主要以cat命令来进行学习。 假设存在日志文件hrun.log,查询的关键字为"新增用户": 根据关键字查看日志cat hrun.log...

2019-10-30 13:42:17 498

原创 java juc2

1,线程交替测试 试题:编写一段程序,开启三个线程,线程ID分别为A,B,C;按一定顺序打印线程ID,如ABCABC import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /*

2017-09-19 13:31:54 522

翻译 java juc1

一、volitale关键字 1. volitale可以保证线程共享数据的内存可见性,也就是说,数据被修改之后,其他线程读取该数据的时候,会直接从主内存里面读取,所以读取的是最新数据; 2.volitale的性能比加锁的性能高,相对于synchronized 是一种较为轻量级的同步策略; 3.缺陷 a:volitale不能保证数据的"原子性"; b:volitale 不能保证线程''互

2017-09-16 09:58:58 262

转载 Map集合的四种遍历方式

Map集合的四种遍历方式 很久以前写的代码,和上一个做比较吧!便于以后查看 1 import java.util.HashMap; 2 import java.util.Iterator; 3 import java.util.Map; 4 5 public class TestMap { 6 public static void main(Str

2017-08-22 11:01:31 254

空空如也

空空如也

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

TA关注的人

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