0 龙见愁

尚未进行身份认证

欢迎互关,一起学习,共同进步

等级
TA的排名 28w+

后端开发工程师必须了解的网络协议基础知识大全

网络协议计算机网络体系结构OSI七层模型TCP/IP模型TCP/IP协议族TCP和UDP地址和端口号端口号的确定端口号与协议计算机网络体系结构OSI七层模型开放系统互连参考模型(OpenSystemInterconnect简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。其目的是为...

2019-08-20 19:00:04

大厂很可能会问到的JMM底层实现原理

JMM和底层实现原理计算机原理JMM(JavaMemoryModel),Java内存模型。JMM定义了Java虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个虚拟计算机模型,JMM隶属于JVM。Java1.5版本对其进行了重构,现在的Java仍沿用了Java1.5的版本。JMM遇到的问题与现代计算机中遇到的问题是差不多的。物理计算机中的并发问题,物理机遇到的并发问题与虚...

2019-08-19 10:31:38

println方法可以刷新共享变量?

看如下代码:publicclassSynMemory{privatestaticbooleanready;privatestaticintnumber;privatestaticclassPrintThreadextendsThread{@Overridepublicvoidrun(){...

2019-08-18 22:13:54

伪共享示例

publicclassFalseSharingimplementsRunnable{publicfinalstaticintNUM_THREADS=Runtime.getRuntime().availableProcessors();publicfinalstaticlongITERATIONS=500L*1000...

2019-08-16 15:49:03

必须掌握的并发安全知识

并发安全什么是线程安全性如何做到线程安全线程封闭使用无状态类让类不可变安全地发布什么是线程安全性在《Java并发编程实战》中,定义如下:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在调用代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。如何做到线程安全线程封闭实现好的并发是一件困难的事情,所以很多时候我...

2019-08-14 19:52:54

动态顺序死锁及活锁示例

这个示例模拟的是2个人相互转账的过程:个人账户实体类:publicclassUserAccount{privatefinalStringname;//账户名称privateintmoney;//账户余额privatefinalLocklock=newReentrantLock();publicLockgetLock(...

2019-08-14 09:10:51

面试官:请写一段能造成死锁的代码。(附:定位死锁的方法)

思路:定义2个锁、2个方法,2个方法获取锁的顺序相反,且中间有休眠时间。这样启动2个线程分别运行这2个方法,2个线程会一直处于等锁状态。publicclassNormalDeadLock{privatestaticObjectvalueFirst=newObject();//第一个锁privatestaticObjectvalueSecond=n...

2019-08-12 16:06:09

线程池异常处理示例

定义一个延时任务,可以切换三种状态:正常执行抛出异常抛出异常并捕获importjava.text.SimpleDateFormat;importjava.util.Date;publicclassScheduleWorkerimplementsRunnable{publicfinalstaticintNormal=0;//普通任务类型p...

2019-08-10 19:12:53

线程池扩展功能使用示例

使用了beforeExecute()、afterExecute()、terminated()方法。作用:beforeExecute():在每个任务执行前执行。afterExecute():在每个任务执行后执行。terminated():在线程池关闭后执行。importjava.util.Random;importjava.util.concurrent.*;publicc...

2019-08-09 18:04:44

Java面试经常会问到的线程池,你搞清楚了吗?

线程池为什么要用线程池?为什么要用线程池?Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。假设一个服务器完成一项任务所需时间为:T1创建线程时间,T2在...

2019-08-09 17:44:14

CompletionService<V>使用示例

构造了一个有返回值的任务,用sleep(随机数)模拟工作时间:importjava.util.Random;importjava.util.concurrent.Callable;publicclassWorkTaskimplementsCallable&lt;Integer&gt;{privateStringname;publicWorkTask(...

2019-08-09 17:17:18

手写一个简单的线程池

importjava.util.Random;importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.BlockingQueue;/***类说明:简陋的自定义线程池实现*/publicclassMyThreadPool{/*缺省线程池大小*/private...

2019-08-08 11:49:59

并发下的Map常见面试题汇总

并发下的Map常见面试题汇总Q:HashMap和HashTable有什么区别?A:①、HashMap是线程不安全的,HashTable是线程安全的;②、由于线程安全,所以HashTable的效率比不上HashMap;③、HashMap最多只允许一条记录的键为null,允许多条记录的值为null,而HashTable不允许;④、HashMap默认初始化数组的大小为1...

2019-08-08 11:07:36

一文彻底搞懂并发容器(ConcurrentHashMap、BlockingQueue等)

并发容器预备知识hashHashMap为什么会出现ConcurrentHashMapJDK1.7中多线程下HashMap死循环分析预备知识hash就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入...

2019-08-08 07:46:22

模板方法模式

模板方法模式同步器的设计基于模板方法模式。模板方法模式的意图是,定义一个操作中的算法的骨架,而将一些步骤的实现延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。我们最常见的就是Spring框架里的各种Template。例子:我们开了个蛋糕店,我们决定先卖奶油蛋糕,芝士蛋糕和慕斯蛋糕。三种蛋糕在制作方式上一样,都包括造型,烘焙和涂抹蛋糕上的东西。所以可以定义...

2019-08-05 16:40:41

位运算的运用-权限控制:add,query,modify,del

位运算的运用-权限控制:add,query,modify,delpublicclassPermission{privatestaticfinalintALLOW_SELECT=1&lt;&lt;0;//0001privatestaticfinalintALLOW_INSERT=1&lt;&lt;1;//0010privatestat...

2019-08-04 17:09:35

深入理解显式锁(Lock)和AQS(AbstractQueuedSynchronizer)(超详细)

显式锁和AQS显式锁Lock特性使用范式APIReentrantLock(可重入锁)锁的可重入锁的公平和非公平APICondition使用范式APILockSupportCLH(队列锁)显式锁Lock接口,实现类:ReentrantLock,ReentrantReadWriteLock.ReadLock,ReentrantReadWriteLock.WriteLock有了synch...

2019-08-04 12:18:34

学会使用原子操作CAS(Compare And Swap)

原子操作CAS什么是原子操作?如何实现原子操作?加锁CASCAS实现原子操作的三大问题JDK中相关原子操作类(java.util.concurrent.atomic)的使用AtomicIntegerAtomicIntegerArrayAtomicReferenceAtomicStampedReferenceAtomicMarkableReference什么是原子操作?假定有两个操作A和B,如果...

2019-07-31 18:48:47

学会使用线程的并发工具类(ForkJoin、CountdownLatch、CyclicBarrier、Semaphore、Exchange)

线程的并发工具类ForkJoin工作原理工作密取使用范式ForkJoin工作原理工作密取即当前线程的Task已经全被执行完毕,则自动取到其他线程的Task池中取出Task继续执行。ForkJoinPool中维护着多个线程(一般为CPU核数)在不断地执行Task,每个线程除了执行自己职务内的Task之外,还会根据自己工作线程的闲置情况去获取其他繁忙的工作线程的Task,如此一来就能能够减...

2019-07-31 10:09:25

走进Java里的线程世界

线程基础、线程之间的共享和协作基础概念什么是进程和线程CPU时间片轮转机制澄清并行和并发高并发编程的意义、好处和注意事项认识Java里的线程基础概念什么是进程和线程进程是程序运行资源分配的最小单位进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘IO等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程是具有一定独立功能的程序关于某...

2019-07-28 17:14:40

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。