E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Java高并发
Java高并发
基础篇:并发与线程(一)
0x01、你必须知道线程是什么?线程是轻量级进程,是程序执行的最小单位在介绍线程之前,我们必须要知道进程的概念。进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程是程序的基本执行体,线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。进程和线程是什么关系?进程是线程的容器,一个进程可以容纳若干个线程。我
浆水鱼鱼哈
·
2018-10-09 21:59
轻松学会
Java高并发
第二课-CPU多级缓存
CPU多级缓存为什么需要CPU缓存CPU的频率越来越快,主存越来越跟不上CPU的变化,这样伴随的问题就是处理器的时钟周期内,CPU需要常常等待主存,浪费资源。所以缓存的出现,是为了缓解CPU和内存之间的速度不匹配问题。一级缓存CPU核心与主存之间有一层高速缓存。如下图(1)所示,数据的读取与存储都经过高速缓存。主存和缓存都连接在系统总线上(Bus)。多级缓存CPU核心与主存之间有多级缓存。如下图(
陆永剑讲师
·
2018-10-08 18:15
高并发
CPU缓存
java高并发
之hook实例(防止重复启动程序)
packagecom.test.testThread;importjava.io.File;importjava.io.IOException;importjava.nio.file.Path;importjava.nio.file.Paths;importjava.util.concurrent.TimeUnit;publicclassTestThread{privatefinalstaticS
等後那场雪
·
2018-10-07 12:52
Java
java高并发
程序设计模式-并发级别:阻塞、无障碍、无锁、无等待【转载】
一般认为并发可以分为阻塞与非阻塞,对于非阻塞可以进一步细分为无障碍、无锁、无等待,下面就对这几个并发级别,作一些简单的介绍。1、阻塞阻塞是指一个线程进入临界区后,其它线程就必须在临界区外等待,待进去的线程执行完任务离开临界区后,其它线程才能再进去。2、无障碍(obstruction-free)无障碍是一种最弱的非阻塞调度自由出入临界区无竞争时,有限步内完成操作有竞争时,回滚数据无障碍并不要求一个线
weixin_30378623
·
2018-10-02 10:00
java
java高并发
程序设计模式-并发级别:阻塞、无障碍、无锁、无等待
一般认为并发可以分为阻塞与非阻塞,对于非阻塞可以进一步细分为无障碍、无锁、无等待,下面就对这几个并发级别,作一些简单的介绍。1、阻塞阻塞是指一个线程进入临界区后,其它线程就必须在临界区外等待,待进去的线程执行完任务离开临界区后,其它线程才能再进去。2、无障碍(obstruction-free)无障碍是一种最弱的非阻塞调度自由出入临界区无竞争时,有限步内完成操作有竞争时,回滚数据无障碍并不要求一个线
九·思
·
2018-10-02 10:00
java高并发
程序设计(三)无锁
无锁类原理详解概念:线程的无障碍的运行。允许线程自由进入临界区,出现数据竞争时,保证一个胜出。相对无障碍来讲比较切实可行的方案。原理:compareandswop算法CAS算法的过程是这样:它包含3个参数CAS(V,E,N)。V表示要更新的变量,E表示预期值,N表示新值。仅当V值等于E值时,才会将V的值设为N,如果V值和E值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。最后,CAS返回
weixin_34342992
·
2018-09-20 15:42
java
Java高并发
-无锁
无锁类的原理详解CASCAS算法的过程是这样:它包含3个参数CAS(V,E,N)。V表示要更新的量,E表示预期值,N表示新值。仅当V值等于E值时,才会将V的值设为N,如果V值和E值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。最后,CAS返回当前V的真实值。CAS操作是抱着乐观的态度进行的,它总是认为自己可以成功完成操作。当多个线程同时使用CAS操作一个变量时,只有一个会胜出,并成功更
niwoxiangyu
·
2018-09-13 14:34
《实战Java高并发程序设计》
Java高并发
系统设计及其优化策略——秒杀系统(二)
1、项目介绍该项目是基于SSM框架的一个秒杀系统,采用了CDN技术用于加载静态资源,redis缓存技术承载高并发获取商品信息,针对mysql数据库事务性访问采用了存储过程技术以支撑每秒数万的访问量。2、技术要点1、建表的时候采用联合主键,将seckil_id和user_phone作为联合主键可避免重复秒杀。2、MD5加密秒杀接口,可以防止用户推测出秒杀地址3、增加一个dto层用于解析Control
Jorocco
·
2018-09-06 22:22
java
项目
Java高并发
系统设计及其优化策略——秒杀系统(一)
1、秒杀系统分析1.1秒杀系统业务分析1、秒杀系统的核心是对库存的处理,业务流程图如下所示2、用户针对库存业务分析1、减库存2、记录购买明细(记录秒杀成功信息)1)记录谁购买成功了2)成功的时间/有效期1.2秒杀系统技术分析1、为什么需要事务?一旦用户秒杀成功系统需要做两步操作,减库存以及记录购买明细。利用数据库可以实现这操作的”事务”特性。如果没有控制事务,可能会发生如下情况:1、减库存成功而记
Jorocco
·
2018-09-06 22:42
java
项目
Java开发人员如何构建自己的技术体系
架构师除了掌握Java语法之外,还要系统学习哪些Java相关的技术,本文是互联网Java技术学习一些路线图,主要针对1到6年及以上工作经验的Java开发人员,从广度到深度架构图还比较全面的,里面的技术包涵了
Java
开涛的博客
·
2018-09-03 08:14
《实战
Java高并发
程序设计》学习总结(2)
第3章JDK并发包1synchronized的功能扩展:重入锁。使用java.util.concurrent.locks.ReentrantLock类来实现。所以叫重入锁,即该锁可以反复进入。importjava.util.concurrent.locks.ReentrantLock;publicclassReenterLockimplementsRunnable{publicstaticReen
haima95
·
2018-08-31 18:59
《实战
Java高并发
程序设计》学习总结(1)
第1章走入并行世界1并发(Concurrency)和并行(Parallelism)都可以表示两个或多个任务一起执行。但并发偏重于多个任务交替执行,而多个任务之间有可能还是串行。并行是真正意义上的“同时执行”。2有关并行的两个重要定律。Amdahl定律强调当串行比例一定时,加速比是有上限的。Gustafson定律关心的是如果可被并行化的代码所占比重足够多,那么加速比就能随着CPU的数量线性增长。Am
haima95
·
2018-08-24 19:52
Java高并发
-java内存模型和线程安全
java内存模型三个特性原子性有序性可见性先行发生原则Happen-Before线程安全的概念原子性是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其它线程干扰。i++是原子操作吗?不是,包含两个操作。第一读i,第二加一操作有序性在并发时,程序的执行可能就会出现乱序一条指令的执行是可以分为很多步骤的-取指IF-译码和取寄存器操作数ID-执行或者有效地址计算EX-
niwoxiangyu
·
2018-08-21 18:44
《实战Java高并发程序设计》
volatile与内存屏障
1、概述通过
Java高并发
--volatile的使用和原理这篇文章,我们了解到volatile关键字其实就两个作用:(1)保证变量的可见性。(2)防止指令重排。
ONROAD0612
·
2018-08-13 09:44
JVM
程序员学习资料网盘汇总
1、python神经网络算法与深度学习及人工智能网盘链接:https://pan.baidu.com/s/1C2Y5UDXqkERx-AWHETlf3g提取密码:je8v2、
Java高并发
程序设计【视频
指尖遗憾
·
2018-08-03 15:45
Java内存模型--happens-before
1概述通过文章
Java高并发
--volatile使用及实现原理我们了解到happens-before原则禁止了指令重排,那么什么是happens-before原则呢?
ONROAD0612
·
2018-07-30 20:58
JVM
JAVA高并发
的三种实现
提到锁,大家肯定想到的是sychronized关键字。是用它可以解决一切并发问题,但是,对于系统吞吐量要求更高的话,我们这提供几个小技巧。帮助大家减小锁颗粒度,提高并发能力。初级技巧-乐观锁乐观锁使用的场景是,读不会冲突,写会冲突。同时读的频率远大于写。悲观锁的实现:悲观的认为所有代码执行都会有并发问题,所以将所有代码块都用sychronized锁住乐观锁的实现:乐观的认为在读的时候不会产生冲突为
java_xth
·
2018-07-23 10:59
Java并发编程与高并发解决方案(一)
Java高并发
并发导图首先介绍连接池1:ExecutorService是Executor直接的扩展接口,也是最常用的线程池接口,我们通常见到的线程池定时任务线程池都是它的实现类。
20122952
·
2018-07-22 15:11
Java高并发
优化之页面缓存
首先跟着楼主来简单了解一下页面缓存的含义:页面缓存页面缓存是将动态页面直接生成静态的页面放在服务器端,用户调取相同页面时,静态页面将直接下载到客户端,不再需要通过程序的运行和数据库的访问,大大节约了服务器的负载。每次访问页面时,会检测相应的缓存页面是否存在,若不存在,则连接数据库得到数据渲染页面并生成缓存页面文件,这样下次访问的页面文件就发挥作用了。接下来楼主将用一个简单的例子来带大家走进页面缓存
弗兰随风小欢
·
2018-07-18 17:20
Java高并发
《实战
Java高并发
程序设计》github笔记和源码
笔记《实战
Java高并发
程序设计》中有很多代码范例,适合初学者通过实践入门并发编程,这本书有个问题就是前面的代码都用JDK7,第六章开始又用JDK8了笔者做了相关笔记并整理源代码,欢迎交流和Star由于除了
牧码人小鹏
·
2018-07-17 16:38
java
Java高并发
,如何解决,什么方式解决
Java高并发
,如何解决,什么方式解决转子:https://www.cnblogs.com/goody9807/p/6432904.html对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了
qinhun0106
·
2018-07-17 14:40
java高并发
实战(十)——并发调试和JDK8新特性
由于之前看的容易忘记,因此特记录下来,以便学习总结与更好理解,该系列博文也是第一次记录,所有有好多不完善之处请见谅与留言指出,如果有幸大家看到该博文,希望报以参考目的看浏览,如有错误之处,谢谢大家指出与留言。一、内容提要多线程调试的方法线程dump及分析JDK8对并发的新支持–LongAdder–CompletableFuture–StampedLock二、多线程调试的方法多线程运行顺序不一
平凡之路无尽路
·
2018-07-08 16:40
java高并发实战
java高并发
实战(八)——BIO、NIO和AIO
由于之前看的容易忘记,因此特记录下来,以便学习总结与更好理解,该系列博文也是第一次记录,所有有好多不完善之处请见谅与留言指出,如果有幸大家看到该博文,希望报以参考目的看浏览,如有错误之处,谢谢大家指出与留言。一、什么是NIO?NIO是NewI/O的简称,与旧式的基于流的I/O方法相对,从名字看,它表示新的一套JavaI/O标准。是一种多路复用;它是在Java1.4中被纳入到JDK中的,并具有以下特
平凡之路无尽路
·
2018-07-03 23:57
java高并发实战
java高并发
实战(七)——并发设计模式
由于之前看的容易忘记,因此特记录下来,以便学习总结与更好理解,该系列博文也是第一次记录,所有有好多不完善之处请见谅与留言指出,如果有幸大家看到该博文,希望报以参考目的看浏览,如有错误之处,谢谢大家指出与留言。一、什么是设计模式1.在软件工程中,设计模式(designpattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(ErichGamma)等人在
平凡之路无尽路
·
2018-06-29 00:38
java高并发实战
Java高并发
编程(二):Java并发机制的底层实现机制
Java代码在编译后会变成Java字节码,字节码在之后被类加载机制加载到JVM中,JVM执行字节码,最终需要转换为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。1深入理解Volatile关键字volatile是轻量级的synchronized,它在处理器开发中保证了共享变量的“可见性”。可见性的意思就是当一个线程修改一个共享变量的时候,另一个线程就能读到这个修
MasterT-J
·
2018-06-28 22:48
Java并发编程
Java高并发编程
java高并发
实战(三)——Java内存模型和线程安全
由于之前看的容易忘记,因此特记录下来,以便学习总结与更好理解,该系列博文也是第一次记录,所有有好多不完善之处请见谅与留言指出,如果有幸大家看到该博文,希望报以参考目的看浏览,如有错误之处,谢谢大家指出与留言。一、原子性原子性是指一个操作是不可中断的。即使是在多线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。一般认为CPU指令是原子性的,要么不执行,要么全部执行完。但写的程序就不一定,比
平凡之路无尽路
·
2018-06-26 23:35
java高并发实战
java高并发
实战(一)——为什么需要并发
由于之前看的容易忘记,因此特记录下来,以便学习总结与更好理解,该系列博文也是第一次记录,所有有好多不完善之处请见谅与留言指出,如果有幸大家看到该博文,希望报以参考目的看浏览,如有错误之处,谢谢大家指出与留言。一、为什么需要把并行?业务需求性能二、了解下高手之间的过招(本人望尘莫及呀)linux之父炮轰并行开发,主张大容量缓存他说:硬件的性能无法永远提升,当前的趋势实际上趋于降低功耗。那么推广并行技
平凡之路无尽路
·
2018-06-26 15:03
java高并发实战
Java高并发
之线程池详解
原文出处:http://www.yund.tech/zdetail.html?type=1&id=961cc31f7bb2409f3a401478dc2cc38e作者:jstarseven线程池优势在业务场景中,如果一个对象创建销毁开销比较大,那么此时建议池化对象进行管理.例如线程,jdbc连接等等,在高并发场景中,如果可以复用之前销毁的对象,那么系统效率将大大提升.另外一个好处是可以设定池化对象
jstarseven
·
2018-06-25 18:00
Java高并发
情况下的锁机制优化
本文主要讲并行优化的几种方式,其结构如下:锁优化减少锁的持有时间例如避免给整个方法加锁1publicsynchronizedvoidsyncMethod(){2othercode1();3mutextMethod();4othercode2();5}改进后1publicvoidsyncMethod2(){2othercode1();3synchronized(this){4mutextMethod
jstarseven
·
2018-06-25 18:00
Java高并发
之设计模式
原文出处:http://www.yund.tech/zdetail.html?type=1&id=34e52a515cd0e4d120255c90f33396af作者:jstarseven本文主要讲解几种常见并行模式,具体目录结构如下图.单例单例是最常见的一种设计模式,一般用于全局对象管理,比如xml配置读写之类的.一般分为懒汉式,饿汉式.懒汉式:方法上加synchronized1publicst
jstarseven
·
2018-06-25 18:00
Java高并发
及测试代码
公司的妹子不会做并发测试。作为一名程序猿看着有点干捉急。并发测试是多个人同时访问一个服务,这不就是多线程吗!于是灵光一现使用多线程来写并发测试代码。想想心理都有点小激动咧。效果比工具还好,废话不多说贴代码添加Maven依赖com.squareup.okhttp3okhttp3.8.1com.squareup.okiookio1.11.0com.google.code.gsongson2.8.0先封
chunchunaiheliu
·
2018-06-23 16:15
java并发
JAVA并发编程架构体系一张图看懂java线程间的状态切换.jpg1.并发编程中的锁并发编程中的各种锁
java高并发
锁的3种实现Java并发机制及锁的实现原理2.线程池核心线程数一般定义多少,为什么?
link的勇气
·
2018-06-21 16:45
Java高并发
-数据库切库、分库、分表
数据库瓶颈:单个数据库数据量太大(1-2T):多个库单个数据库服务器压力太大,读写瓶颈:多个库单个表数据量过大:分表切库的基础:读写分离(主库:分库:)自定义注解完成数据库切库:代码实现多个数据源的支持横向(水平)分表纵向(垂直)分表数据分表:mybatis分表插件sharebatis2.0高可用的系统任务调度系统分布式:elastic-job(当当)+zookeeperelastic-job:弹
Marlon666
·
2018-06-20 14:43
Java高并发
-应用限流
限流限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或告知资源没有了)、排队或等待(比如秒杀、评论、下单)、降级(返回兜底数据或默认数据,如商品详情页库存默认有货)。一般开发高并发系统常见的限流有:限制总并发数(比如数据库连接池、线程池)、限制瞬时并发数(如nginx的limit_conn模块,用来限制瞬时并发连接数
Marlon666
·
2018-06-19 12:16
Java高并发
系统的限流策略
概要在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速率,就进行等待、排队、降级、拒绝服务等。在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度
煕陽映雪
·
2018-05-12 23:33
高并发
[
Java高并发
编程](七)单例模式
本博客根据《Java多线程编程核心技术》和《实战高并发程序设计》总结整理概述单例模式是设计模式中使用最为普遍的模式之一。它是一种对象创建模式,用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例。在java中,这样的行为能带来两大好处:对于频繁使用的对象,可以省略new操作花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销由于new操作的次数减少,因而对系统内存的使用频率也
王洪玉
·
2018-05-12 18:59
꧁JAVA꧂
Java多线程技术
Java高并发
大流量限流(摘选)
缓存缓存比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”,缓存的使用很容易被想到。在大型“写”系统中,缓存也常常扮演者非常重要的角色。比如累积一些数据批量写入,内存里面的缓存队列(生产消费),以及HBase写数据的机制等等也都是通过缓存提升系统的吞吐量或
阿斯蒂芬2
·
2018-05-11 20:09
Java 面试知识点解析(二)——高并发编程篇
前序文章链接:Java面试知识点解析(一)——基础知识篇(一)高并发编程基础知识这里涉及到一些基础的概念,我重新捧起了一下《实战
Java高并发
程
我没有三颗心脏
·
2018-05-10 20:56
java高并发
之CAS无锁
无锁类的原理1.CASCAS(CompareandSwap)方法包含三个参数(V,E,N):V表示要更新的变量,E表示预期的值,N表示新值。仅当V的值等于E时,才会将V的值修改为N。如果V的值不等于E,说明已经被其他线程修改了,当前线程可以放弃此操作,也可以再次尝试次操作直至修改成功。基于这样的算法,CAS操作即使没有锁,也可以发现其他线程对当前线程的干扰,并进行恰当的处理。2.CPU指令有的人会
Nliki
·
2018-05-09 19:20
Java编程
JAVA高并发
编程
synchronized关键字同步方法同步代码块锁的底层实现锁的种类volatile关键字wait¬ifyAtomicXxx类型组CountDownLatch门闩锁的重入ReentrantLock同步容器Map/SetListQueueThreadPool&ExecutorExecutorExecutorServiceFutureCallableExecutorsFixedThreadPoolCa
困境囚徒
·
2018-05-07 00:00
java
JAVA高并发
-线程安全性(原子性、可见性、有序性)
一、原子性提供了互斥访问,同一时刻只能有一个线程对它进行操作。保证原子性的操作:1.Atomic1)Atomic:CAS(Unsafe.compareAndSwapInt)Atomic包下提供的类利用CAS保证操作的原子性,如和int/integer相对应的AtomicInteger类提供的incrementAndGet()函数实现一个整数自增的操作count++,通过查看源码发现AtomicIn
sir李
·
2018-05-05 17:31
[
Java高并发
编程](四)Lock的使用之ReentrantReadWriteLock读写锁
本博客根据《Java并发编程的艺术》学习整理而来在之前我们提到的ReentrantLock可重入锁等锁基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大的提升。ReadWriteLock是JDK5中提供
王洪玉
·
2018-04-30 08:11
java高并发
测试
publicstaticvoidmain(String[]args){intcount=10;finalCountDownLatchcdl=newCountDownLatch(count);for(inti=0;i
JAVA少妇
·
2018-04-27 12:37
[web]服务端
[web]安全
Java高并发
之线程通信(管道)
Java高并发
之线程通信(管道)Java管道原理:广义上讲,管道就是一个用来在两个实体之间单项数据传输的导管。Java中的管道和linux中的管道是一样的,从本质上说,管道也是一种文件。
Hu_sin
·
2018-04-11 18:12
java
高并发
线程
Java高并发
学习(七)
Java高并发
学习(7)程序中的幽灵:隐蔽的错误作为一名软件开发人员,修复BUG应该是基本的日常工作之一。作为java程序员,也许你经常会被抛出的一大堆异常堆栈所困扰。
Hu_sin
·
2018-04-02 17:42
java
高并发
线程
Java高并发
程序-Chapter5 锁的优化及注意事项(第三十四讲)无锁 - LockFreeVector
LockFreeVector:无锁Vector1.DescriptorstaticclassDescriptor{ publicintsize; volatileWriteDescriptorwriteop; publicDescriptor(intsize,WriteDescriptorwriteop){ this.size=size; this.w
netcobol
·
2018-04-02 10:31
并发编程
Java高并发程序
Java高并发
学习(六)
Java高并发
学习(6)线程安全的概念与synchronized并行程序开发的一大关注点是线程安全问题。由于读写者问题产生的错误,会导致数据不一致。
Hu_sin
·
2018-04-01 17:43
java
高并发
线程
Java高并发
学习(五)
Java高并发
学习(5)先干重要的事:线程优先级Java中的线程可以有优先级。优先级高的线程在竞争资源时更有优势。当然这只是一个概率问题。如果运气不好,高优先级的线程也可能抢占失败。
Hu_sin
·
2018-04-01 16:33
java
高并发
线程
Java高并发
学习(四)
Java高并发
学习(四)驻守后台:守护线程(Daemon)守护线程是一种特殊的线程,他是系统的守护者,在后台默默的完成一些系统性的服务。比如垃圾回收线程,JIT线程也可以理解为守护线程。
Hu_sin
·
2018-03-31 17:05
java
高并发
线程
Java高并发
学习(三)
Java高并发
学习(三)分门别类的管理:线程组在一个系统中,如果线程数量很多,而且功能分配比较明确,就可以将功能相同的线程放置在一个线程组里。
Hu_sin
·
2018-03-31 16:47
java
高并发
上一页
18
19
20
21
22
23
24
25
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他