杭州

有座城市叫:杭州
一个稍微不努力就可能卷铺盖走人的城市
一个只要你肯努力就可以改变命运的地方
这里不相信眼泪,只相信汗水,付出才会有回报,别让这座城市留下了你的青春,却留不住你
没有梦想,何必杭州

Java中可重入锁ReentrantLock

ReentrantLock是JDK1.5中java util concurrent (JUC)包提供的一种锁实现,和synchronized不同,synchronized是由JVM操控获取锁和释放锁,ReentrantLock是从代码层面实现的同步。
ReentrantLock类的结构图:

阅读全文 –

Java中的读/写锁

相比饥饿与公平里Lock的实现,读写锁更复杂一些。假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写(读-读能共存,读-写不能共存,写-写不能共存)。这就需要一个读/写锁来解决这个问题。

Java5在java.util.concurrent包中已经包含了读写锁。尽管如此,我们还是应该了解其实现背后的原理。

阅读全文 –

饥饿与公平

如果一个线程因为CPU时间全部被其他线程抢走而得不到CPU运行时间,这种状态被称之为“饥饿”。线程被“饥饿致死”正是因为它得不到CPU运行时间的机会,解决饥饿的方案被称之为“公平性” – 即所有线程均能公平地获得运行机会。

阅读全文 –

递归

1.简介

递归:在程序运行过程中,自己调用自己的一种编程技巧。

递归特点:

  • 必须有一个终止条件或者出口,否则就会出现死循环,导致程序无法跳出当前操作。
  • 源问题必须能拆分为同样操作的子问题,一层层拆分,最终子问题要能满足终止条件。

递归缺点:
1)每次调用自身,都需要进行入系统栈的操作,当递归深度过深时,容易引发栈溢出。
2)每次调用自身,系统栈需要重新分配保存局部变量、形参、调用函数地址、返回值等内容,有一定的性能开销。

递归优点:
1)代码比较简洁、清晰。
2)解决用循环迭代不好处理的问题, 如Hanoi。
阅读全文 –

git提交修改后的文件到GitHub

项目文件在本地修改后,如何同步到GitHub?
1) git status 查看git是否有修改的内容需要提交
2) git add [file] 指定需要提交的文件
3) git commit -m “[修改说明]” 提交文件到本地仓库
4) git push origin master 提交到GitHub远程仓库

阅读全文 –