![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
工作常用
文章平均质量分 66
lianchaozhao
这个作者很懒,什么都没留下…
展开
-
linux 下命令杂记
linux 命令自己杂记原创 2022-12-08 10:54:54 · 476 阅读 · 0 评论 -
java阻塞队列SynchronousQueue
综述再线程池的源码分析中我们经常对比两个线程池的实现 newCacheThreadPool和newFixedThreadPool原创 2020-10-19 18:01:29 · 198 阅读 · 0 评论 -
java 基于AQS 类 锁实现的底层原理分析
所谓AQS,指的是AbstractQueuedSynchronizer,它提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等并发类均是基于AQS来实现的,具体用法是通过继承AQS实现其模板方法,然后将子类作为同步组件的内部类。AbstractQueuedSynchronizer 具体实现锁待todo...原创 2020-08-31 11:12:56 · 262 阅读 · 0 评论 -
Java 模式思想 - 策略模式(异同工厂)
一、概述:策略模式中,一个类的行为或其算法可以在运行时更改,这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变 context 对象的执行算法。意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。如何解决:将这些算法封装成一个一个的类,任意地替换原创 2020-08-21 11:29:04 · 235 阅读 · 0 评论 -
java阻塞队列LinkedBlockingQueue源码分析
一、概要阻塞队列与我们平时接触的普通队列(LinkedList 和ArrayList)的最大的不同点,在于阻塞队列支持阻塞添加和阻塞删除方法。阻塞队列常常应用于大数据框架源码和线程池源码中。1、阻塞添加:阻塞添加指的时当组设队列元素已经满时候。队列会阻塞加入元素的线程,直到对垒元素不满时才会重新唤醒线程执行元素加入。2、阻塞删除:是指在队列元素为空时,删除队列元素的线程被阻塞,直到队列不为空再执行删除操作。ArrayList 和ArrayBlockingQueue一样,内部基于数组来存放元素,而li原创 2020-08-17 15:17:18 · 428 阅读 · 0 评论 -
Redis学习之pfmerge等命令
HyperLogloghyperLoglog是redis中新支持的两种类型中的另外一种(上一种是位图类型Bitmaps)。主要适用场景是海量数据的计算。特点是速度快。占用空间小。同样是用于计算,HyperLoglog在适用场景方面与Bitmaps方面有什么不同呢。注意:(bitMap 应用待验证)Bitmaps适合用于验证大数据,比如签到,记录某用户是不是当天尽心了签到,签到多少天的时候。还有就是对数据进行排序等。(所以bitmap不光用于记录数据还有时候对数据进行验证的时候使用bitmaps)H原创 2020-08-03 18:25:58 · 278 阅读 · 0 评论 -
java队列总结整理
一、含义队列queue用于模拟队列这种数据结果。队列通常是指‘先进先出(FIFO)’的容器。队列的头部保存在对垒中存放时间最长的元素。尾部保存存放时间最短的元素。新元素插入队列时,会先插入队列的尾部。取出元素会返回队列的头部元素。通常,队列不允许随机访问队列中的元素。二、队列的分类...原创 2020-07-30 11:41:43 · 317 阅读 · 0 评论 -
kafka 消费制表符\001显示的问题
背景工作中我们常常使用制表符\001 去分割数据,例如kafka中以\001 切分的数据步骤1、将数据以kafka-console-consumer 控制台输出的方式消费 并重定向到一个新的文件处。kafka-console-consumer.sh --zookeeper ****/kafka_cluster --topic *** > test.txt2、sz test.txt 到自己本地3、用UE 编辑器打开并选择显示制表符上图中的 正方形就是 我们从前切分数据用的\001原创 2020-05-21 14:54:25 · 329 阅读 · 0 评论 -
java 锁的实现过程和应用之 synchronized
所谓AQS,指的是AbstractQueuedSynchronizer,它提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier等并发类均是基于AQS来实现的,具体用法是通过继承AQS实现其模板方法,然后将子类作为同步组件的内部类。AbstractQueuedSynchronizer...原创 2020-04-19 22:03:02 · 667 阅读 · 0 评论 -
new Thread和newSingleThreadExecutor()的区别
我们应用 newSingleThreadExecutor 去单线程的去运行一个东西的逻辑为:档线程i=5时 它会报错,但是知识这个线程会报错。不影响其它线程继续运行原创 2020-04-18 22:28:15 · 2839 阅读 · 0 评论 -
十大排序算法 及时间复杂度对比
注意其中基数排序的k可以用10 表示。所以器平均时间复杂度O(n10) 、 最好的情况下 为O(n10),在最坏的情况下时间复杂度为 O(n*k) ,空间复杂度为 O(n+10)原创 2020-04-18 20:47:01 · 1087 阅读 · 0 评论 -
Java中指定线程的顺序执行(join和线程池)
我们在日常的多线程开发中,可能有时会想让每个线程都按照我们指定的顺序来运行,而不是让CPU随机调度,这样可能会让我们在日常的开发工作中带来不必要的麻烦。既然有了这个需求,也就引入了本文的标题,让线程按照自己指定的顺序来运行。有兴趣的同学可以猜想下列代码可能运行的结果:按照正常的理解思路,上面代码的执行顺序依次应该为:t1 → t2 → t3,而实际效果则不是理想的状态。下图为运行效果:...原创 2020-03-13 16:31:44 · 115 阅读 · 0 评论 -
面试分享(spark 实现每天访问的记录数和用户数)
最近收到一家公司面试题感悟:要求:用户访问日志文件有两列,分别为日期和用户ID :(date,user_id) 使用spark 统计每天访问记录数和用户数。1、每天访问记录数例子完成结果(2017-01-03,4)(2017-01-02,3)(2017-01-01,3)每天访问的用户数(当时没有太理解)估计面试官想问新增用户数具体实现结果为:实现思想 是一个倒排的思想1、...原创 2020-03-13 14:55:22 · 1125 阅读 · 0 评论 -
二叉树的遍历
1、二叉树的广度遍历2、二叉树的深度遍历二叉树的深度遍历,包括了前序遍历、中序遍历、后续遍历。其命名方式是根节点的遍历顺序,即:先序遍历:先遍历根节点(根节点->左子树->右子树),即先访问根节点再递归的访问左子树,然后递归的访问右子树。中序遍历:访问的中间位置为根位置,其主要顺序为(左子树->根节点->右子树),即我们先递归的使用中序遍历访问左子树,让后根节点,然...原创 2020-01-29 11:41:19 · 114 阅读 · 0 评论 -
工作常用算法
LRU算法原创 2020-01-06 19:15:18 · 461 阅读 · 0 评论 -
shell编程(数组长度、字符串长度)
1、获取数组元素的个数: array=(bill chen bai hu); num=${#array[@]} //获取数组元素的个数。 遍历数组就变成非常简单的事情: for ((i=0;i<num;i++)) { echo $array[i]; ...原创 2020-01-06 12:37:17 · 513 阅读 · 0 评论 -
linux 运维(查看linux系统各个状态)
uname -a # 查看内核/操作系统/CPU信息的linux系统信息命令head -n 1 /etc/issue # 查看操作系统版本,是数字1不是字母Lcat /proc/cpuinfo # 查看CPU信息的linux系统信息命令hostname ...原创 2020-01-06 11:55:20 · 2051 阅读 · 0 评论 -
冗余磁盘阵列的几种实现方式RAIN
概念RAID是Redundent Array of Inexpensive Disks的缩写,简称为“磁盘阵列”。后来RAID中的字母I被改作了Independent,RAID就成了“独立冗余磁盘阵列”,但这只是名称的变化,实质性的内容并没有改变。可以把RAID理解成一种使用磁盘驱动器的方法,它将一组磁盘驱动器用某种逻辑方式联系起来,作为逻辑上的一个磁盘驱动器来使用。优点rain 实现方式可...原创 2020-01-03 10:52:54 · 3601 阅读 · 0 评论 -
IDEA新建项目并上传到gitLab教程
本人采用非git 命令的方式新建并上传项目,便于新手入手1、gtilab上新建项目2、新建项目名称3、在idea上新建一个项目,完成之后,需要创建一个git仓库3、然后可以根据我的截图顺序进行操作,可将idea项目上传至远程仓库” 先 add 再commit4、最后将项目 push 到远程 (右击 —》git —》 respository —> push 到远...原创 2019-12-06 15:53:55 · 1969 阅读 · 0 评论