![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络
文章平均质量分 82
*^O^*—*^O^*
这个作者很懒,什么都没留下…
展开
-
ThreadLocal学习笔记
概念ThreadLocal 用于提供线程局部变量,在多线程环境可以保证各个线程里的变量独立于其它线程里的变量。也就是说 ThreadLocal 可以为每个线程创建一个【单独的变量副本】,相当于线程的 private static类型变量。ThreadLocal 的作用和同步机制有些相反:同步机制是为了保证多线程环境下数据的一致性;而ThreadLocal 是保证了多线程环境下数据的独立性。简单使用public class Test { private static String commStr;原创 2021-08-16 13:18:43 · 117 阅读 · 0 评论 -
多线程学习 各种锁类型与对比 lock
悲观锁,乐观锁悲观锁:悲观的方式看待临界资源(多线程共享变量)线程安全问题。背景:大多数情况下,同一个时间点,常常有多个线程竞争同一把锁实现:竞争同一把锁失败的线程,阻塞的方式等待锁的释放乐观锁:乐观的方式看待临界资源线程安全问题背景:大多数情况下,同一个时间点,常常只有一个线程竞争同一把锁实现方式:直接对临界资源进行修改(Java层面看起来是无锁的操作),没有线程安全问题(没有其他线程并发修改),直接修改成功,如果存在线程安全问题,修改失败,代码上,表现为返回值BooleanCAS什么是C原创 2021-06-18 10:35:25 · 421 阅读 · 1 评论 -
多线程学习 线程池笔记
作用池的概念,属于设计模式中享元模式(不用反复创建对象,可以复用)线程的创建,销毁都是比较消耗资源的,代价比较大降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁带来的消耗。提高响应速度:当任务到达时,任务可以不需要等待线程创建就能立即执行。提高线程的可管理性:使用线程池可以统一进行线程分配、调度和监控。jdk线程池ThreadPoolExecutor,每个参数的含义4种快捷方式创建线程池,每一种的含义,它们的局限性static ExecutorService newCached原创 2021-06-17 09:24:42 · 151 阅读 · 0 评论 -
多线程学习 线程通信
hahaha原创 2021-06-16 19:01:32 · 94 阅读 · 0 评论 -
多线程学习 线程创建,启动,中断,等待
多线程产生的背景,作用为了提升效率,尽可能的充分利用CPU资源,提高整体性能(总任务量恒定时,完成时间越小,性能越好)使用时的注意事项:性能相关,系统资源,任务量(总任务量,单个任务量)线程数总的一句话就是,在保证线程安全的情况下,尽可能的提高效率多线程效率总任务量=单个线程任务量*线程数线程数量越多,系统一次调度耗时越长,数量数越多,单个线程任务量越少,相对来说,线程创建,和调度的耗时占比就比较大如何确定执行任务的线程数?如何该进程是想占有所有的系统资源,把CPU打满1.如果每个线程都是原创 2021-06-07 22:51:24 · 141 阅读 · 2 评论 -
多线程学习 线程安全 synchronized volatile
线程安全代码层面上:多个线程对同一个共享数据的操作(读,写),如果有写操作,就存在线程安全问题底层的原因:原子性,可见性,有序性原子性一系列的操作(多行指令之间),需要具有不可分割的特性,即为原子性如果可以被分割,指令之间,可以有其他线程并发执行的操作,对同一个共享变量操作就会产生影响特殊的非原子性操作:n++,n–,++n,–n1.从主存把数据读到CPU (读)2.进行数据更新 (改)3.把数据写回到CPU主存 (写回)一行new对象的代码,分解为:1.分配内存空间(Java虚拟机)原创 2021-06-09 23:11:50 · 147 阅读 · 2 评论 -
单例模式的几种实现方式
单例模式介绍属于设计模式的一种,不是Java独有,一种类型,为其他调用方提供本类的实例对象,始终都是同一个对象使用场景使用jdbc操作数据库的时候,此时数据库连接可以通过数据库连接池来获取,为了防止出现多个对象操作数据库,产生并发执行事务,就会产生一系列的问题,这里最好的就是让操作直接串行化,就可以避免这所有的问题了,那怎么串行化,只有一个对象来进行操作,肯定也就只能依次操作了,实现方式设计思想就是两个:1)私有的构造方法(外部就不能new了,否则就不是同一个对象了)2)内部构造同一个对象,提原创 2021-06-10 21:41:25 · 228 阅读 · 1 评论 -
进程和线程 并发和并行
进程和程序的区别程序:静态的硬盘上的一个可执行文件,.exe可执行文件,就是一个程序进程:程序运行起来之后,就是一个进程(由系统管理起来的)是动态的,是系统分配资源(CPU资源,内存)的最小单位进程运行:一个程序(静态的硬盘中的可执行文件),系统加载到内存中执行(分配内存,调度CPU来执行程序代码),最终运行起来作为一个进程进程和线程的区别1.进程是包含线程的(一个进程可以只包含一个线程,也可以包含多个线程,多个线程之间共享同一块内存资源~)2.线程相比于进程更轻量创建出来的新线程和之前的线程共原创 2021-06-02 22:36:22 · 286 阅读 · 1 评论 -
浏览器输入一个url后发生的事情 ARP和NAPT
基于DNS,域名解析,默认80端口源主机基于TCP4层模型,封装数据(三次握手涉及客户端发送2次数据到服务端,和真正的数据传输流程一样)封装数据时,涉及目的IP计算是否和本机同一个网段(用子网掩码计算),往网关发送数据,使用ARP缓存表,用网关IP找到mac地址网关(这里就先以路由器为例),接收数据分用,再封装,封装时修改的一些内容后续的每一跳,都是改源mac和目的mac(分用,封装)到达最终服务端,发现目的IP和服务器IP一样,接收数据,交给对应端口的进程web服务器web服务器分用HTT..原创 2021-05-27 16:58:22 · 242 阅读 · 0 评论 -
TCP提供的可靠传输机制/原理,浅谈TCP和UDP的区别
TCP和UDP的区别:UDP是无连接,不可靠的,效率更高;TCP是有连接,可靠传输,效率相对于UDP更差UDP是面向数据报(一次发,一次收);TCP是面向字节流(多次发,多次收)UDP有接收缓冲区,没有发送区;TCP两者都有UDP数据大小受限,TCP大小不限TCP提供了很多可靠的传输机制TCP可靠性的机制确认应答超时重发连接管理这三个我的前一篇文章提到了,这里就不再赘述了https://blog.csdn.net/weixin_45070922/article/details/11原创 2021-05-26 11:21:14 · 710 阅读 · 2 评论 -
TCP和UDP 三次握手,四次挥手
端口号 在TCP/IP协议中, 用 "源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识一个通信(可以通过netstat -n查看)——(这里的协议是应用层协议);0 - 1023: 知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的.1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的.一个进程是否可以绑定多个端口号?可以绑定多个端口号一个端口原创 2021-05-25 18:37:15 · 281 阅读 · 3 评论 -
OSI七层模型 与TCP/IP五层模型
OSI七层模型(自上而下)TCP/IP五层模型(自上而下)原创 2021-05-24 22:30:53 · 946 阅读 · 11 评论