07 2017 档案
摘要:Java并发编程:Concurrent锁机制解析Java并发编程:Concurrent锁机制解析Table of Contents1. 本质2. Lock3. ReentrantLock4. ReadWriteLock5. ReentrantReadWriteLock前面,我们讲了Java自带的对象锁机制。因为我们的方法必然是在一个对象中的,所以,通过对象的锁,可以很好的控制对方法的调用。当对象的...
阅读全文
摘要:Java并发编程:锁的释放Java并发编程:锁的释放Table of Contents1. 线程的状态2. wait() notify() 和 notifyAll()上一篇线程的同步,我们讲了锁的获得方式。接下来,我们讲讲锁的释放。首先,锁定的方法或者代码块运行完毕,肯定会释放锁。那么,主动释放锁,是通过什么方法来达到的呢?如果,我们看过Object类的方法,我们会注意到它有三个奇怪的方法:wai...
阅读全文
摘要:Java并发编程:线程的同步Java并发编程:线程的同步Table of Contents1. synchronized 修饰方法2. synchronized 修饰代码块3. synchronized 修饰static方法线程的同步是通过锁来实现的。在我们使用Concurrent包的锁之前,我们先来了解Java原生的同步锁。Java的每个对象都有一个锁,这个锁具有排他性。只要任一一个线程获得了锁...
阅读全文
摘要:Java并发编程:线程的创建Java并发编程:线程的创建Table of Contents1. Thread2. Runnable3. start() 和 run()在Java中线程的创建主要有两种,一种是通过继承抽象类Thread,一种是通过实现Runnable接口。当然,还有Concurent包里面的Callable和Future也可以算是一种。1 Thread我们先来看一下,使用Thread...
阅读全文
摘要:Java并发编程:进程的创建Java并发编程:进程的创建Table of Contents1. Runtime.getRuntime().exec()2. ProcessBuilder.start()上次聊了进程和线程的相关概念,那么,怎么在Java中创建一个进程呢?当我们创建一个应用程序,然后执行这个程序,系统肯定会创建一个进程。我们这里讲的不是这种,而是在已经运行的程序内部再去调用运行其他程序...
阅读全文
摘要:Java并发编程:进程和线程Java并发编程:进程和线程Table of Contents1. 什么是进程?2. 什么是线程?3. 为什么会有进程和线程?4. 差异1 什么是进程?如果我们使用过任务管理器就知道进程是什么了。我们每次打开一个程序,必定会创建一个新的进程。PID就是进程的ID,一个程序会对应一个进程ID。2 什么是线程?如上图,除了PID之外,还有一项 线程 ,线程是在进程里面工作的...
阅读全文
摘要:聊聊斐波那契数列中递归的重复计算聊聊斐波那契数列中递归的重复计算Table of Contents1. 递归实现2. 递归改进3. 迭代法所谓的斐波纳契数列是指:前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...1 递归实现根据定义,很快就能写出递归实现:public i...
阅读全文
摘要:聊聊二叉树的各种遍历聊聊二叉树的各种遍历Table of Contents1. 前序遍历1.1. 递归法1.2. 迭代法2. 中序遍历2.1. 递归法2.2. 迭代法3. 后序遍历3.1. 递归法3.2. 迭代法二叉树的遍历有前序、中序和后序遍历,还有层次遍历等。遍历可以用递归法,也可以使用非递归法,即迭代法。各种算法里,递归法通常是最简单,最能反应数学本质的。但由于递归算法,需要保存所有递归的栈...
阅读全文
摘要:MacOsX本地DNS及VPN设置MacOsX本地DNS及VPN设置Table of Contents1. 安装和配置bind9(named)2. 修改路由表之前写过一篇详细等windows下的本地DNS配置,及国外网站走VPN,国内网站不走VPN的博文,但被删帖了,这里就只简单的写实现操作了。1 安装和配置bind9(named)创建一个named.sh文件#!/bin/bash# Run as...
阅读全文