1.使用dpkg命令配合grep命令来查找已安装的.deb软件包。输入命令:
dpkg -l | grep example
2.卸载软件包
使用以下命令来卸载软件包:
sudo apt-get remove [package-name]
如果需要连同配置文件一起删除,可以使用purge选项:
sudo apt-get purge [package-name]...
Akka 并发框架
Akka 介绍
Akka 是⼀个基于 Actor 模型的并发框架,由 Scala 语⾔实现。它为构建基于 JVM 的⾼并发、分布式、容错性强、事件驱动的应⽤程序提供了⽀持。在⼤数据处理框架如 Spark 和 Flink 中,Akka 被采⽤来实现进程与节点之间的通信。
为了深⼊理解 Akka 和其并发特点,我们可以从 Actor 的核⼼模...
什么是LRU缓存?
LRU缓存(Least Recently Used)是一种常用的缓存淘汰算法,它根据数据的使用时间来决定哪些数据需要被移除。这种算法假设最近使用的数据会在未来一段时间内继续被使用,而很久没有使用的数据则可能在未来很长时间内不会被使用。
实现
LRU淘汰机制的基本原理是,当缓存已满,需要插入新的数据时,它会选择最近最少使用的数据进行移除,从...
序列化框架Avro的使用
介绍
Avro是Hadoop的⼀个⼦项⽬,由Hadoop的创始⼈Doug Cutting(也是Lucene,Nutch等项⽬的创始⼈)牵头开发。Avro是⼀个数据序列化系统,设计⽤于⽀持⼤批量数据交换的应⽤。它的主要特点有:⾃描述;紧凑的序列化格式;压缩⽀持;动态模式解析;跨语⾔⽀持;⾼效的序列化.Avro是⼀种灵活和⾼效的序列化解...
概述
Zookeeper是⼀个开源的分布式的,为分布式应⽤提供协调的Apache项⽬。
⼯作机制
Zookeeper从设计模式⻆度来理解:是⼀个基于观察者模式设计的分布式服务管理框架,它负责存储和管理⼤家都关⼼的数据,然后接受观察者的注册,⼀旦这些数据的状态发⽣变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应
...
背包问题
对于背包问题,我们需要使用动态规划的思想来解决问题。
例如一个问题, 选择n个物品重量w不超过n的最大价值v
首先是集合表示,可以表示为前 i 个物品 不超过 j 的重量的集合
集合的属性:最大/最小值
状态的计算: 对于[i,j] 我们需要对此进行一个集合的划分
一般来说,取最后一部进行划分:
以01 背包为栗:每个物品 选择和不选 , 划分为...
ThreadLocal存储数据是使用ThreadLocalMap来存的,ThreadLocalMap基于Entry[]实现,存储数据时,本身ThreadLocal作为key来存取value数据。
key内存泄露:
ThreadLocal对象本事就是一个强引用,当方法弹栈后,因为线程池中线程还在,对ThreadLocal引用的Key还在,这会导致这个Threa...
创建 - 线程创建,分配地址
runnable - 就绪和运行统称Runnable
阻塞block - 没有拿到资源,synchronize等待
等待waiting - 挂起线程池,或者wait(),需要手动唤醒
time waiting - sleep(1000)睡眠的状态,到时间自动唤醒
终止terminated - 结束
public enum ...
使用docker部署
部署elasticsearch
# 拉取镜像
docker pull elasticsearch
# 创建容器
docker run --name es -p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64...
多线程
并发和并行
并发
并行
在同一时刻,有多个指令在多个cpu同时执行
多线程三种实现方式对比
线程常用的方法
优先级
java默认使用的线程调度是抢占式调度,是一种随机的形式,对此我们可以为一个线程设计优先级,默认值是5.
优先级越高,抢占到的cpu越大。
守护线程
当非守护线程运行结束之后,守护线程就会陆续结束。
应用场景: 比如 在聊天窗口...