synchronized与Lock的区别 两者区别: 1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类; 2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁; 3.synchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁; ...
高并发编程-CAS深入解析 CAS(Compare and swap)直译过来就是比较和替换,是一种通过硬件实现并发安全的常用技术,底层通过利用CPU的CAS指令对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。 仔细观察J.U.C包中类的实现代码,会发现这些类中大量使用到了CAS,所以CAS是Java并发包的实现基础。它的实现过程是,有3个操作数,内存值V,旧的预期值E,要修改的新值U,当且仅当预期值E和内存值V相同...
Netty-BIO/NIO/AIO BIO/NIO/AIO区别 强力推荐Java架构师学习网址:https://qiuyadongsite.github.io/ 同步异步阻塞非阻塞-通俗理解 首先来举个例子说明吧,假设你想吃一份盖饭: 同步阻塞:你到饭馆点餐,然后在那等着,还要一边喊:好了没啊! 同步非阻塞:在饭馆点完餐,就去遛狗了。不过溜一会儿,就回饭馆喊一声:好了没啊! 异步阻塞:遛狗的时候,接到饭馆电话,说饭做好了,让您亲自去...
网络编程中的线程模型 传统阻塞 I/O 服务模型、Reactor 模式、Proactor 模型 强力推荐Java架构师学习网址:https://qiuyadongsite.github.io/ 传统阻塞 I/O 服务模型 特点: 1)采用阻塞式 I/O 模型获取输入数据; 2)每个连接都需要独立的线程完成数据输入,业务处理,数据返回的完整操作。 存在问题: 1)当并发数较大时,需要创建大量线程来处理连接,系统资源占用...
网络编程中的I/O模型 阻塞式 I/O 模型(blocking I/O)、非阻塞式 I/O 模型(non-blocking I/O)、I/O 复用模型(I/O multiplexing)、信号驱动式 I/O 模型(signal-driven I/O)、异步 I/O 模型(即AIO,全称asynchronous I/O) 强力推荐Java架构师学习网址:https://qiuyadongsite.github.io/ 互联...
mysql-使用规范 来源于58同城30条规范! 适用场景:并发量大、数据量大的互联网业务 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 UTF-8MB4 解读:万国码,无需转码,无乱码风险,节省空间 (3)数据表、数据字段必须加入中文注释 解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的 ###(4...
JMM解决多线程问题 对于高并发编程,多线程是重点,JMM怎么解决原子性、可见性、有序性的问题? 强力推荐Java架构师学习网址:https://qiuyadongsite.github.io/ JMM概念 在Java中提供了一系列和并发处理相关的关键字,比如volatile、Synchronized、final、juc等,使得我们不需要关心底层的编译器优化、缓存一致性的问题了,所以在Java内存模型中,除了定义了一套...
多线程基本概念 强力推荐Java架构师学习网址:https://qiuyadongsite.github.io/ 线程出现的背景 解决进程中多任务的实时性问题? 其实简单来说,也就是解决“阻塞”的问题,阻塞的意思就是程序运行到某个函数或过程后等待某些事件发生而暂时停止 CPU 占用的情况,也就是说会使得 CPU 闲置。还有一些场景就是比如对于一个函数中的运算逻辑的性能问题,我们可以通过多线程的技术,使得一个函...
RPC简介 强力推荐Java架构师学习网址:https://qiuyadongsite.github.io/ 进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。这些进程可以运行...
并发编程实现原理2 强力推荐Java架构师学习网址:https://qiuyadongsite.github.io/ synchronized的使用 在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对synchronized进行了各种优化之后,有些情况下它就并不那么重了,Java SE 1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和...
并发编程实现原理 JMM如何解决原子性、可见性、有序性的问题以及volatile原理 强力推荐Java架构师学习网址:https://qiuyadongsite.github.io/ JMM怎么解决原子性、可见性、有序性的问题? 在Java中提供了一系列和并发处理相关的关键字,比如volatile、Synchronized、final、juc等,这些就是Java内存模型封装了底层的实现后提供给开发人员使用的关键字,...
并发编程基本概念 多线程是互联网开发中重要的技术点,由于平时使用少,需要重点加强! 推荐Java架构师学习网址:https://qiuyadongsite.github.io/ 多线程的发展历史 什么情况下应该使用多线程 线程出现的目的是什么?解决进程中多任务的实时性问题? 其实简单来说,也就是解决“阻塞”的问题,阻塞的意思就是程序运行到某个函数或过程后等待某些事件发生而暂时停止 CPU 占用的情况,也就是说会使得...
并发编程术语 并发编程一直是个挑战,so,那就先挑战这个喽 并发编程的目的 目的:为了让程序更快的执行。并不是启动更多的线程就能让程序最大限度的执行。 上下文切换 任务从保存到再加载的过程就是一次上下文切换 多线程一定快吗 不一定,当上下文切换的消耗很大时,效率会差不多甚至慢。 工具: Lmbench3,测试上下文切换的时长 vmstat,测试上下文切换的次数 如何减少上下文切换 无锁并发编程:多线程...
架构师学习体系 并发编程谨记spring源码atom工具使用mysql系统部署知识汇总大型互联网设计模式架构师git架构演进高并发分布式jvmLucene线性表dockermarkdown语言使用mybatis微服务概念日志web多线程JAVASEMongoDBJavaScript队列和栈树图散列表算法概念JVMTcpHTTP序列化RPCzookeep...
spring概述 对于java程序员来说,最常用的就是spring框架,首先对spring框架有简单认识。 Spring体系结构 1.核心容器 由spring-beans、spring-core、spring-context和spring-expression(spEL Spring Expression Language)4个模块组成 spring-beans和spring-core模块是sprin...
架构师知识汇总 由于学海无涯,总得找到方向,看别人总结的,按照有步骤的进行才不会迷失。 时间管理 关于时间的管理。首先,要有一个大一点的计划,比如年计划,月计划,周计划。这一年大体上要达到什么目标,这个月要学习哪些知识。然后是精确到小时的日计划。每一天,哪个时间段做什么都详细的列出来。 其次,不要太盲目自信。很多人其实从来没有完成过自己的计划。如果你真的能够完成你制定的每一个计划,那现在的你一定已经很了不起了...
并发编程术语 并发编程一直是个挑战,so,那就先挑战这个喽 并发编程的目的 目的:为了让程序更快的执行。并不是启动更多的线程就能让程序最大限度的执行。 上下文切换 任务从保存到再加载的过程就是一次上下文切换 多线程一定快吗 不一定,当上下文切换的消耗很大时,效率会差不多甚至慢。 工具: Lmbench3,测试上下文切换的时长 vmstat,测试上下文切换的次数 如何减少上下文切换 无锁并发编程:多...
技术关注总结 ## 关注深层次原理 --- 工具就是拿来用的,程序也不例外。身为java工程师深知,版本更迭,用法更替,关注不能局限在工具的用法上,这样会随波逐流。要让自己占主导,就必须懂原理,才能使自己不会迷失。 * 关注的内容不能是:工具的使用,工作经历让我明白,工具的配置,如:eclipse的使用,maven的配置,hadoop的部署,linux上docker的使用等等。这些东西再精通也不必暗喜,因为迟...