- 博客(16)
- 收藏
- 关注
原创 新类库中的构件
新类库中的构件@(并发)[java, 并发, Thinking in Java]新类库中的构件CountDownLatchCyclicBarrierDelayQueuePriorityBlockingQueue使用ScheduledExecutor的温室控制器SemaphoreExchanger1. CountDownLatch用法:它被用来同步一个或多个任务,强制它们等待由其他任务
2017-08-18 16:51:06
374
原创 死锁
死锁@(并发)[java, 并发, Thinking in Java]死锁死锁:任务之间相互等待的连续循环,没有哪个线程能继续。 典型:哲学家问题当同时满足一下4个条件时就会发生死锁: 1. 互斥条件:任务使用的资源中至少有一个是不能共享的, 2. 至少有一个任务它必须持有一个资源且正在等待获取一个当前被别的任务持有的资源 3. 资源不能被抢占,任务必须把资源释放当作普通事件 4. 必须
2017-08-18 16:50:31
234
原创 线程之间的协作
线程之间的协作@(并发)[java, 并发, Thinking in Java]线程之间的协作wait 与 notifyAll1 错失的信号notify 与 notifyAll生产者与消费者2 使用显式的Lock和Condition对象3 生产者-消费者与队列4 任务间使用管道进行输入输出1. wait() 与 notifyAll()waint()使得可以等待某个条件发生,而改变这个
2017-08-18 16:49:57
250
原创 终结任务
终结任务@(并发)[java, 并发, Thinking in Java]终结任务在阻塞时终结1 线程状态2 进入阻塞状态中断检查中断1. 在阻塞时终结1.1. 线程状态新建 就绪 阻塞 死亡1.2. 进入阻塞状态原因: 1. 调用sleep()方法,任务在指定的时间内不会运行,也不会释放锁 2. 调用wait()使线程挂起。直到线程得到norify()或notifyAll()
2017-08-18 16:49:20
248
原创 共享受限资源
共享受限资源@(并发)[java, 并发, Thinking in Java]共享受限资源解决共享资源竞争1 synchronized2 显式的Lock对象原子性与易变性原子类临界区在其他对象上同步线程本地存储1. 解决共享资源竞争基本所有的并发模式在解决线程冲突问题的时候,都是采用序列化访问共享资源的方案,通常这是通过在代码前面加上一条锁语句实现的,这种机制称为互斥量1.1. s
2017-08-18 16:48:38
254
原创 基本线程机制
基本线程机制@(并发)[java, 并发, Thinking in Java]基本线程机制定义任务Thread类使用Executor从任务中返回值实现Callable接口休眠优先级让步后台daemon线程1 设置后台标志2 定制ThreadFactory编码的变体1 直接继承Thread2 自管理的Runnable3 匿名内部类术语加入一个线程创建有响应的用户界面
2017-08-18 16:47:41
222
原创 Java内存区域与内存溢出异常
Java内存区域与内存溢出异常@(jvm)[java, jvm, 自动内存管理机制]Java内存区域与内存溢出异常运行时数据区域1 程序计数器2 Java虚拟机栈3 本地方法栈4 Java堆5 方法区6 运行时常量池7 直接内存HotSpot虚拟机对象探秘1 对象的创建2 对象的内存布局21 对象头22 实例数据23 对齐填充3 对象的访问定位OutOfMemoryE
2017-08-18 16:43:46
163
原创 为什么要设置两个Survivor区
设置两个Survivor区最大的好处就是解决了碎片化,下面我们来分析一下。 为什么一个Survivor区不行?第一部分中,我们知道了必须设置Survivor区。假设现在只有一个survivor区,我们来模拟一下流程: 刚刚新建的对象在Eden中,一旦Eden满了,触发一次Minor GC,Eden中的存活对象就会被移动到Survivor区。这样继续循环下去,下一次Eden满了的时候,问题来了,
2017-08-18 16:42:45
898
原创 垃圾回收器与内存分配策略
垃圾回收器与内存分配策略@(jvm)[java, jvm, 自动内存管理机制]垃圾回收器与内存分配策略对象存活判定算法1 引用计数算法2 可达性分析算法3 引用描述4 生存还是死亡5 回收方法区垃圾回收算法1 标记-清除算法2 复制算法3 标记-整理算法4 分代收集算法HotSpot的算法实现1 枚举根节点2 安全点3 安全区域垃圾收集器1 新生代收集器11 Se
2017-08-18 16:42:02
283
原创 虚拟机类加载机制
虚拟机类加载机制@(jvm)[java, jvm, 虚拟机执行子系统]虚拟机类加载机制类加载的时机类加载的过程1 加载2 验证3 准备4 解析5 初始化类加载器1 类与类加载器2 双亲委派模型3 双亲委派模型的破坏1. 类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,整个生命周期包括加载、验证、准备、解析、初始化、使用、卸载,其中验证、准备、解析统称为连接 解析
2017-08-18 16:39:05
185
原创 关于malloc()前是否需要类型转换,即void*转换为具体类型
之前在Stack OverFlow上贴了段代码,求帮忙找bug,意外的收获了关于malloc()前是否需要类型转换的一些说法,很涨姿势,贴出来大家共享 you don’t cast the result, since: - It is unnecessary, as void * is automatically and safely promoted to any other poin
2017-03-10 17:58:44
1522
原创 RAW格式化
前段时间用U盘安装UBUNTU,忘记用了哪个软件,结果后来发现U盘文件系统成了RAW,U盘权限也变成read-only。在尝试重新格式化NTFS过程中,试过传统方法(直接右键),以及testdisk软件都不得行,最后通过CMD下命令行解决,记录如下: 1. 首先以 管理员运行 CMD 2. 执行以下命令diskpartlist disk //查看usb的disk号select disk x
2017-03-09 11:39:06
1236
转载 C中的预编译宏定义
C中的预编译宏定义@(C)[宏]C中的预编译宏定义预处理命令简介预处理的方法预处理命令详述defineundefif elif else endififdef ifndef definedinclude include_next预定义宏linepragma _Pragmawarning error在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤
2017-03-08 16:46:26
378
原创 运输层笔记--TCP
运输层笔记–TCP@(TCP/IP)[TCP]运输层笔记TCPTCP服务TCP特点TCP连接1 连接建立2 数据传送3 连接终止流量控制差错控制拥塞控制1 拥塞策略TCP报文段 1. TCP服务进程到进程的通信流交付服务。 TCP允许进程以字节流的形式来传递数据(UDP中进程传递用户数据报,已定义好边界),但TCP会把若干字节组成报文段TCP中会存在两个缓存,即发送缓存
2017-03-07 15:41:17
435
原创 运输层笔记--UDP
运输层–UDP@(TCP/IP)[运输层 UDP]运输层UDP用户数据报服务特点应用1. 用户数据报2. 服务特点进程到进程的通信无连接的服务:每个用户数据报是独立的,所以只有短报文的进程才能使用UDP没有流量控制除校验和外,没有其他差错控制没有拥塞控制封装与解封排队 在客户端,进程启动时从操作系统处请求得到(临时)端口号,并最终有一个入和一个出队列 在服务器端,在它开始运行
2017-03-06 18:30:00
200
原创 运输层笔记--简介
运输层笔记–简介@(TCP/IP)[运输层]运输层笔记简介运输层服务1 进程到进程的通信2 编址端口号3 封装和解封4 复用和分用5 流量控制6 差错控制7 流量控制和差错控制的组合8 拥塞控制9 无连接的和面向连接的服务运输层协议1 简单协议2 停止等待协议3 返回N协议4 选择重传协议1. 运输层服务1.1 进程到进程的通信网络层负责计算机级的通信(主机到主机的通信
2017-03-06 17:43:33
395
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人