java 线程    2021-11-02 09:14:36    24    0    0
死锁 两个或两个以上的线程在执行过程中,因争夺资源而造成的互相等待的现象,无外力作用将互相等待下去 发生必要条件 互斥条件 请求和保持条件 不剥夺条件 环路等待条件 发生死锁代码 package com.csyd.concurrency.example.deadLock;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class DeadLock implements Runnable{ public int flag = 1; private static Object o1 = new Object(),
java 线程    2021-11-01 10:57:17    30    0    0
对比Thread和线程池 new Thread 弊端 每次 new Thread 新建对象,性能差 线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM 缺少更多功能,如更多执行、定期执行、线程中断 线程池的好处 重用存在的线程,减少对象创建、消亡的开销,性能佳 可有效控制最大并发线程数,提高系统资源利用率,同时可以避免过多资源竞争,避免阻塞 提供定时执行,定期执行,单线程,并发数控制等功能 线程池-ThreadPoolExecutor(构造) corePoolSize:核心线程数量 maximumPoolSize:线程最大
java 线程    2021-10-25 13:03:00    30    0    0
组件: CountDownLatch 可以阻塞当前线程,同时只能有一个线程操作该计数器 代码用例 package com.csyd.concurrency.example.aqs;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;@Slf4jpublic class CountDownLatchExamp
java 线程    2021-10-12 17:18:03    47    0    0
发布对象 发布对象:使一个对象能被当前范围之外的代码所使用 对象逸出:一种错误的发布。当一个对象还没有构造完成时,就使它被其他线程所见 安全发布对象 四种方法 在静态初始化函数中初始化一个对象引用 将对象的引用保存到volatile类型域或者AtomicReference对象中 将对象的引用保存到某个正确构造对象的final类型域中 将对象的引用保存到一个由锁保护的域中 单例模式举例 懒汉模式 package com.csyd.concurrency.example.singleton;import com.csyd.concurrency.anno
java 线程    2021-10-12 16:01:21    37    0    0
线程安全 代码所在的进程有多个线程在同时运行,这些线程可能同时在运行同一段代码,如果每次运行结果和单线程运行一致,而且其他变量的值也和预期是一样的,则是线程安全的 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据,造成所得到的数据是脏数据,也可能是计算时出现错误 并发模拟 Postman : Http请求模拟工具 Apache Bench(AB) : Apache附带的工具,测试网站性能 JMeter : Apache组织开发的压力测试工具 代码 : Semaphore、CountDownLatch等 这些模拟工具中,JMeter是最方便实用的,推荐学
java 线程    2021-09-24 18:10:14    47    0    0
cpu的缓存介绍 cpu多级缓存(MESI缓存一致性) cpu频率太快,主存跟不上,就需要缓存处理 M : 修改,被修改过的,与主存不一致,未来需要写回主存 E : 独享,未被修改过,与主存的数据一致,任何时刻cpu读取内存时,允许变成S状态分享,修改时会变成M状态 S : 共享,与主存中一致,当修改后,可以变成I状态无效 I : 失效,有其他cpu修改了该缓存行 cpu多级缓存-乱序优化 cpu为了效率,会将执行顺序打乱,单核cpu无影响,但是多核cpu会出现问题 java内存模型(Java Memory Model,JMM) 规范了ja
nginx docker centos    2021-09-07 22:55:03    55    0    0
前言 我的服务器选择的是腾讯云,之前老公买了用了一段时间之后因为不够大,闲置了,所以就给了我做个人服务器,就是玩,内装centos7.9 nginx选择放在docker外面,因为nginx对内存很敏感,本身的内存占用也非常低 首先说下我为什么选择用nginx和docker docker的优点 1.省内存,docker安装的每一个镜像,相当于放在一个单独的虚拟机下,不会互相抢占,可以控制每个的资源占用,docker的虚拟机也做到了压缩到极致,占用很少,即便溢出也可以利用交换区做到内存不够,硬盘来凑 2.管理方便,可以快速部署一台或多台服务器,执行命令相同
docker nginx leanote    2021-09-06 23:17:24    59    0    0
1.映射目录 我的服务器中有个文件夹专门放docker的映射文件,在docker下创建leanote和他下面分支,做docker的映射目录 docker/leanote/db => /data/db # 内置mongodb的数据目录,nodb版无此目录docker/leanote/conf => /data/leanote/conf # 笔记的配置文件目录docker/leanote/files => /data/leanote/files # 笔记内上传的图片、文件存放目录docker/leanote/upload => /data/leanot