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
编程札记
写给妹妹的
编程札记
故,萌生编写《写给妹妹的
编程札记
》的念头,把平常讨论的一些东西记录下来。谨以此文作为引子,和将来博文的索引。
水滴杂谈
·
2020-09-13 16:42
写给妹妹的编程札记
编程
Java并发
编程札记
-(五)JUC容器-03ConcurrentHashMap
今天来学习ConcurrentHashMap在JDK1.8中的实现。相比JDK1.7,JDK1.8中ConcurrentHashMap的实现有很大的不同。结构先来看下JDK1.7与JDK1.8中ConcurrentHashMap结构的不同。JDK1.7结构在JDK1.7中,ConcurrentHashMap通过“锁分段”来实现线程安全。ConcurrentHashMap将哈希表分成许多片段(seg
潘威威
·
2020-08-21 20:48
Java并发
Java并发编程札记
Java并发
编程札记
-(五)JUC容器-07ConcurrentLinkedQueue
ConcurrentLinkedQueue是一个基于链表的、无界的、线程安全的队列。此队列按照FIFO原则对元素进行排序。此队列不允许使用null元素,采用了有效的“无等待(wait-free)”算法(CAS算法)。与大多数collection不同,size方法不是一个固定时间操作。由于这些队列的异步特性,确定当前元素的数量需要遍历这些元素。节点类privatestaticclassNode{vo
潘威威
·
2020-07-30 08:40
Java并发
Java并发编程札记
Java并发
编程札记
-(五)JUC容器-01概述
今天开始学习JUC容器。JUC提供了用于多线程上下文中的Collection实现与高效的、可伸缩的、线程安全的非阻塞FIFO队列。参考JDK1.8,画出下图。ListJUC容器中List的实现只有CopyOnWriteArrayList。CopyOnWriteArrayList相当于线程安全的ArrayList。SetJUC容器中Set的实现有CopyOnWriteArraySet与Concurr
潘威威
·
2020-07-30 08:40
Java并发
Java并发编程札记
java
并发
Java并发
编程札记
-(四)JUC锁-08CountDownLatch
CountDownLatch是一个通用同步器,用于同步一个或多个任务。在完成一组正在其他线程中执行的任务之前,它允许一个或多个线程一直等待。可以用一个初始计数值来初始化CountDownLatch对象,任何在这个对象上调用wait()的方法都将阻塞,直至计数值到达0。每完成一个任务,都可以在这个对象上调用countDown()减少计数值。当计数值减为0,所有等待的线程都会被释放。CountDown
潘威威
·
2020-07-30 08:39
Java并发
Java并发编程札记
Java并发
编程札记
-(四)JUC锁-06LockSupport
LockSupport是JUC锁中比较基础的类,用来创建锁和其他同步类的基本线程阻塞原语。比如,在AQS中就使用LockSupport作为基本线程阻塞原语。它的park()和unpark()方法分别用于阻塞线程和解除阻塞线程。与Thread.suspend()相比,它没有由于resume()在前发生,导致线程无法继续执行的问题。和Object.wait()对比,它不需要先获得某个对象的锁,能够响应
潘威威
·
2020-07-30 08:09
Java并发
Java并发编程札记
Java多线程并发笔记(4)线程池
前言记录学习过程,仅作学习笔记前面已经学了线程与锁机制接下来学习对线程的管理-线程池,重点难点Java3y公众号的教程Java并发
编程札记
-(六)JUC线程池-02ThreadPoolExecutor实现原理目录概念
有机后浪
·
2020-07-30 08:40
Java多线程并发笔记
Java并发
编程札记
-(六)JUC线程池-02ThreadPoolExecutor实现原理
本文通过学习ThreadPoolExecutor源码来学习线程池的实现原理。简介为什么要使用线程池许多服务器都面临着处理大量客户端远程请求的压力,如果每收到一个请求,就创建一个线程来处理,表面看是没有问题的,但实际上存在着很严重的缺陷。服务器应用程序中经常出现的情况是请求处理的任务很简单但客户端的数目却是庞大的,这种情况下如果还是每收到一个请求就创建一个线程来处理它,服务器在创建和销毁线程所花费的
潘威威
·
2020-07-30 07:42
Java并发
Java并发编程札记
Java并发
编程札记
-(四)JUC锁-01概述
今天来学习JUC锁。JUC锁位于java.util.concurrent.locks包下,为锁和等待条件提供一个框架,它不同于内置同步和监视器。参考JDK1.8的java.util.concurrent.locks包,画出如下图:CountDownLatch,CyclicBarrier和Semaphore不在包中,但也是通过AQS来实现的。因此,我也将它们归纳到JUC锁中进行介绍。LockLock
潘威威
·
2020-07-30 07:42
Java并发
Java并发编程札记
Java并发
编程札记
-(四)JUC锁-10Semaphore简介
一般的锁在任意时刻只允许一个线程访问一项资源,而计数信号量允许n个任务同时访问一项资源。我们可以将信号量看做一个许可集,可以向线程分发使用资源的许可证。获得资源前,线程调用acquire()从许可集中获取许可。该线程结束后,通过release()将许可还给许可集。函数列表//构造方法摘要Semaphore(intpermits)//创建具有给定的许可数和非公平的公平设置的Semaphore。Sem
潘威威
·
2020-07-30 07:11
Java并发
Java并发编程札记
Java并发
编程札记
-(六)JUC线程池-05ExecutorCompletionService
CompletionService接口是将生产新的异步任务与使用已完成任务的结果分离开来的服务。生产者利用submit()提交要执行的任务。使用者利用take()获取并移除已完成的任务的返回值,并按照完成这些任务的顺序处理它们的结果。通常,CompletionService依赖于一个单独的Executor来实际执行任务,在这种情况下,CompletionService只管理一个内部完成队列。Exe
潘威威
·
2020-07-30 07:11
Java并发
Java并发编程札记
Java并发
编程札记
-(四)JUC锁-05ReentrantReadWriteLock简介
前面在Java并发
编程札记
-(四)JUC锁-02Lock与ReentrantLock一文中已经学习了ReentrantLock,其中提到了ReentrantLock是互斥锁。与互斥锁相对应的是共享锁。
潘威威
·
2020-07-30 07:10
Java并发
Java并发编程札记
Java并发
编程札记
-(四)JUC锁-07读写锁的升级—StampedLock
StampedLock是JDK1.8新增的一个锁,是对读写锁ReentrantReadWriteLock的改进。前面已经学习了ReentrantReadWriteLock,我们了解到,在共享数据很大,且读操作远多于写操作的情况下,ReentrantReadWriteLock值得一试。但要注意的是,只有当前没有线程持有读锁或者写锁时才能获取到写锁,这可能会导致写线程发生饥饿现象,即读线程太多导致写线
潘威威
·
2020-07-30 07:10
Java并发
Java并发编程札记
Java并发
编程札记
-(四)JUC锁-09CyclicBarrier
CyclicBarrier允许一组线程互相等待,直到到达某个公共屏障点。如果你希望一组并行的任务在下个步骤之前相互等待,直到所有的任务都完成了下个步骤前的所有操作,才继续向前执行,那么CyclicBarrier很合适。函数列表//构造方法摘要CyclicBarrier(intparties)//创建一个新的CyclicBarrier,它将在给定数量的参与者(线程)处于等待状态时启动,但它不会在启动
潘威威
·
2020-07-30 07:10
Java并发
Java并发编程札记
Java并发
编程札记
-(六)JUC线程池-01概述
前面的例子中总是需要线程时就创建,不需要就销毁它。但频繁创建和销毁线程是很耗资源的,在并发量较高的情况下频繁创建和销毁线程会降低系统的效率。线程池可以通过重复利用已创建的线程降低线程创建和销毁造成的消耗。参考JDK1.8中的相关类,画出下图。(此图不是十分准确,有些类实现了两个接口,这里只展示出了一个)本章只是简单地介绍下它们,在以后的文章中会选一些最重要的来学习。Executor此接口提供一种将
潘威威
·
2020-07-30 07:59
Java并发
Java并发编程札记
Java并发
编程札记
-(四)JUC锁-03AQS
AQS,AbstractQueuedSynchronizer的缩写,是JUC中非常重要的一个类。javadoc中对其的介绍是:为实现依赖于先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量、事件,等等)提供一个框架。此类的设计目标是成为依靠单个原子int值来表示状态的大多数同步器的一个有用基础。AbstractQueuedSynchronizer是CountDownLatch、Reentra
潘威威
·
2020-07-30 07:58
Java并发
Java并发编程札记
Java并发
编程札记
-(四)JUC锁-04Condition简介
我们已经学习了如何通过使用锁来同步两个任务,但为了解决某个问题,任务之间只有互斥是不够的,还需要相互通信,相互协作。今天就来学习如何实现任务之间的协作。初识Condition在任务协作中,关键问题是任务之间的通信。握手可以通过Object的监视器方法(wait()和notify()/notifyAll())和synchronized方法和语句来安全地实现。JavaSE5的JUC提供了具有await
潘威威
·
2020-07-29 21:59
Java并发
Java并发编程札记
Java并发
编程札记
-(七)JUC工具类-01概述
今天学习JUC中的工具类。CountDownLatchCountDownLatch是一个通用同步器,用于同步一个或多个任务。在完成一组正在其他线程中执行的任务之前,它允许一个或多个线程一直等待。CyclicBarrierCyclicBarrier允许一组线程互相等待,直到到达某个公共屏障点。如果你希望一组并行的任务在下个步骤之前相互等待,直到所有的任务都完成了下个步骤前的所有操作,才继续向前执行,
潘威威
·
2020-07-05 01:44
Java并发
Java并发编程札记
Java并发
编程札记
-总结
一基础01基本概念并发什么是并发并发的优点多线程线程并发与并行线程和进程02创建线程创建线程的方式Thread和Runnable该如何选择run方法与start方法的区别03线程的生命周期线程的生命周期图线程的状态04Thread详解线程等待与唤醒waitnotifynotifyAll线程让步yield线程休眠sleep线程启动start中断线程interrupt线程优先级线程等待join守护线程
潘威威
·
2018-01-11 21:07
Java并发
Java并发编程札记
Java并发
编程札记
-(四)JUC锁-02Lock与ReentrantLock
想了解synchronized更多请移步Java并发
编程札记
-(一)基础-06synchronized详解。synchronized修饰方法或
潘威威
·
2017-12-09 23:29
Java并发
Java并发编程札记
Java并发
编程札记
-(三)JUC原子类-02原子方式更新单个变量
今天学习AtomicBoolean、AtomicInteger、AtomicLong、AtomicReference,这几个类的共同特点是都提供单个变量的原子方式访问和更新功能。下面以AtomicLong为代表,对这些类进行介绍。AtomicLong可以看做是用原子方式更新的long值,实例提供long类型单个变量的原子方式访问和更新功能。API//构造方法摘要AtomicLong()//创建具有
潘威威
·
2017-11-27 22:28
Java并发
Java并发编程札记
Java并发
编程札记
-(三)JUC原子类-01概述
今天来学习JUC原子类。JUC原子类位于java.util.concurrent.atomic包下,支持在单个变量上解除锁的线程安全编程。参考JDK1.8的java.util.concurrent.atomic包,画出如下图:可以将包中的类分为五类:基本类型:AtomicBoolean、AtomicInteger、AtomicLong引用类型:AtomicReference、AtomicStamp
潘威威
·
2017-11-27 19:02
Java并发
Java并发编程札记
Java并发
编程札记
-(一)基础-06synchronized详解
在Java并发
编程札记
-(一)基础-05线程安全问题一文中已经学习了什么是线程安全以及实现线程安全的方法。今天就来学习下其中的一种方法——隐式锁synchronized。
潘威威
·
2017-11-21 21:16
Java并发
Java并发编程札记
Java并发
编程札记
-(一)基础-04Thread详解
在Java并发
编程札记
-(一)基础-02创建线程一文中,讲到了Thread中提供了许多实用的方法。
潘威威
·
2017-11-16 20:43
Java并发
Java并发编程札记
Java并发
编程札记
-(一)基础-02创建线程
本文介绍Java中如何创建线程。目录:Runnable-定义无返回值的任务Thread-线程构造器Callable-定义可以返回值的任务总结在Java中,创建新执行线程有四种方法。继承Thread。实现Runnable。实现Callable。我认为Runnable和Callable的作用只是定义任务,创建线程还是需要Thread构造器。Runnable线程可以驱动任务,所以我们需要定义任务,Run
潘威威
·
2017-11-14 21:52
Java并发
Java并发编程札记
Java并发
编程札记
-(一)基础-01基本概念
在学习Java并发编程之前,先来了解一下几个概念。什么是并发?维基百科中这样介绍:在计算机科学中,并发性是指程序,算法或问题的不同部分或单元按无序或部分顺序执行而不影响最终结果的能力。这允许并行单元的并行执行,这可以显着提高在多处理器和多核系统中执行的总体速度。在更技术性的术语中,并发性指的是程序,算法或问题的可分解性属性成为顺序无关或部分有序的组件或单元。首先,并发是一种能力,是一种将程序分为几
潘威威
·
2017-11-13 21:00
Java并发
Java并发编程札记
Java并发
编程札记
-目录
Java并发
编程札记
-目录Java并发
编程札记
-(一)基础-01基本概念Java并发
编程札记
-(一)基础-02创建线程Java并发
编程札记
-(一)基础-03线程的生命周期Java并发
编程札记
-(一)基础
潘威威
·
2017-11-08 20:19
Java并发
Java并发编程札记
CUDA
编程札记
http://blog.csdn.net/Augusdi/article/details/12451627[cpp] viewplaincopyconst int N = 33 * 1024; const int threadsPerBlock = 256; const int blocksPerGrid = imin( 32, (N+threadsPerBlock-
mydear_11000
·
2015-11-30 10:00
CUDA
编程札记
const int N = 33 * 1024; const int threadsPerBlock = 256; const int blocksPerGrid = imin( 32, (N+threadsPerBlock-1) / threadsPerBlock ); __global__ void dot( float *a, f
·
2015-11-13 05:21
编程
Linux shell
编程札记
if-then的高级特性 [[]]、[]都是用来测试( 测试分为数值比较、字符串比较、文件比价 )的,[[]]是关键字,里面可以用&&、||、<、>等类似C语言的语法;[]是bash内嵌的命令,也是用于测试的。[[]]通用性更好些。(()),类似let,用于计算表达式。()可以把多个命令括起来,在一个子shell运行。 使用方法总结: 涉及高级
·
2015-10-23 08:10
Linux shell
CUDA
编程札记
[cpp] viewplaincopyconst int N = 33 * 1024; const int threadsPerBlock = 256; const int blocksPerGrid = imin( 32, (N+threadsPerBlock-1) / threadsPerBlock ); __global__ void dot( flo
Augusdi
·
2013-10-08 14:00
CUDA
编程札记
constintN=33*1024; constintthreadsPerBlock=256; constintblocksPerGrid= imin(32,(N+threadsPerBlock-1)/threadsPerBlock); __global__voiddot(float*a,float*b,float*c){ __shared__floatcache[threadsPerBloc
celerychen2009
·
2013-09-07 14:00
编程札记
:peformSelector一点认识
performSelector消息会将讲接收者的引用计数retainCount加一 NSUIntegerc=[selfretainCount];//c为1[selfperformSelector:@selector(process_one_job_item)withObject:nilafterDelay:0];c=[selfretainCount];//c为2这将确保process_one_j
sheshou5201314
·
2013-03-15 12:16
ios
Objective-C
Linux
编程札记
1.“/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”等路径已经在系统环境变量中了,如果可执行文件 在这几个标准位置,在终端命令行输入该软件可执行文件的文件名和参数,回车即可。2.如果不在标准位置,文件名前面需要加上完整的路径。不过每次都这样跑就太麻烦了,一个“一劳永逸”的办法是把这个路径加 入环境变量。命令“PATH=$PATH:路径”
zhanglei8893
·
2009-12-04 20:00
上一页
1
下一页
按字母分类:
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
其他