04 2017 档案

摘要:1. 概述 Semaphore(信号) 并不存在真正的许可 只是维护一个计数器, 通常用来限定进入一些资源的线程数 accquire() 方法获取许可 成功则计数器值-1 没有则阻塞直到一个可用的许可(即计数器>0) release() 方法 潜在的释放了申请人(通过给计数器值+1) 2. 示例一( 阅读全文
posted @ 2017-04-27 15:40 fangfan 阅读(1070) 评论(0) 推荐(0) 编辑
摘要:1.概述 java.util.concurrent.CyclicBarrier(循环的栅栏), 构造时设置一个计数器数(count), 各线程通过调用barrier.await()进入等待,并且计数+1, 第count个线程调用await(),满足条件, 唤醒所有之前调用await等待的线程(类似于 阅读全文
posted @ 2017-04-26 13:27 fangfan 阅读(286) 评论(0) 推荐(0) 编辑
摘要:1. 概述 CountDownLatch是java的一个并发工具(java.util.concurrent.CountDownLatch), 闭锁。 主要功能是阻塞调用其await()方法的线程,直到其他线程调用countDown()使得count(计数器)变为0时立即从await返回 2. 主要应 阅读全文
posted @ 2017-04-25 18:53 fangfan 阅读(371) 评论(0) 推荐(0) 编辑
摘要:密码保存在/etc/shadow文件中 1. root 密码忘记了 1.1 重启进入单人维护模式后, 系统会主动给予root权限的bash接口, 此时再以passwd修改密码即可; 1.2 以LiveCD 开机后 挂载根目录 去修改/etc/shadow, 将里面的密码清空,重启后root将不用密码 阅读全文
posted @ 2017-04-18 15:36 fangfan 阅读(183) 评论(0) 推荐(0) 编辑
摘要:1. 概述 centos执行简单shell 脚本 报错 cut: invalid byte, character or field listTry 'cut --help' for more information. 2. 代码 vim userid.sh 3. 解决问题 代码中cut命令 后跟的选 阅读全文
posted @ 2017-04-14 16:45 fangfan 阅读(3258) 评论(0) 推荐(0) 编辑
摘要:1. 概述 如果指定映射是可序列化的,则返回的映射也将是可序列化的。 2. demo 2.1 code (摘自 http://stackoverflow.com/questions/3999086/when-is-the-unmodifiablemap-really-necessary) 2.2 控 阅读全文
posted @ 2017-04-13 10:23 fangfan 阅读(2871) 评论(0) 推荐(0) 编辑
摘要:1. 下载 [logan@localhost java]$ wget http://download.redis.io/releases/redis-3.2.8.tar.gz2. 解压 [logan@localhost java]$ tar zxf redis-3.2.8.tar.gz 3. 进入目 阅读全文
posted @ 2017-04-11 14:12 fangfan 阅读(146) 评论(0) 推荐(0) 编辑
摘要:demo1 (输入/输出) 1.1. target : 输入姓、名, 输出姓名 1.2. create directory mkdir ~/bin 1.3. create & edit sheel script vim fullname.sh note: more comment is useful 阅读全文
posted @ 2017-04-10 16:21 fangfan 阅读(284) 评论(0) 推荐(0) 编辑
摘要:1. 概述 <<深入理解Java虚拟机--JVM高级特性与最佳实践>>第一章就谈到自己编译jdk,来吧。 2. 编译环境 VMware12 CentOS-7-x86_64-Everything-1611 3. 软件准备 Bootstrap JDK: jdk-7u79-linux-x64.tar.gz 阅读全文
posted @ 2017-04-07 14:52 fangfan 阅读(1158) 评论(0) 推荐(1) 编辑