自定义博客皮肤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 1316

原创 @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 2193

原创 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 1008

原创 2020-09-26

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

2020-09-26 15:16:34 1566

原创 工作队列分类

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

2020-09-26 15:15:16 208

原创 线程的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 308

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

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

2020-09-26 12:06:58 180

原创 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 176

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

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

2020-07-02 13:31:11 156

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

ehcache、memcache、redis三大缓存比较

2019-11-14 09:27:20 82

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

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

2019-10-30 13:42:17 349

原创 java juc2

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

2017-09-19 13:31:54 446

翻译 java juc1

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

2017-09-16 09:58:58 183

转载 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 203

空空如也

空空如也

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

TA关注的人

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