程序员

堆排序

数据结构堆 是一颗完全二叉树。完全二叉树:设二叉树的深度为h,除了第h层以外,前面的每一层的节点数都达到最大,并且第h层的叶子都集中在最左边。 所有非终端(有叶子)节点的值均不小于(或不大于)其左、右孩子的值。前者叫大顶堆,后者叫小顶堆。 堆排序思想 利用堆数据结构的堆顶肯定是最大值(或最小值),则…

程序员

设计模式系列之九模板方法模式

模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。   有一个泡茶和冲咖啡的业务,他们都有差不多相似的流程。 一、不使用设计模式 public class Tea { //泡茶流程 void process…

程序员

谈谈Collections.sort()——使用篇

  本来一直在CSDN上写,然后今天不知道为什么CSDN上发表不了文章了,正好我听朋友的介绍来到这里,希望和大家一起讨论问题。其实说白了我写博客大多数是为了记录自己的成长过程,顺便整理自己学习情况。再者利索能力的和大家一起交流经验,话不多说,正文开始。  本人快要找工作了,看到日益严峻的就业情况,感…

程序员

设计模式系列之八外观模式

外观模式:提供了一个统一的接口,用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用。   下面通过一个图来说明外观模式的使用,此图来自于《Head First设计模式》一书。 外观模式   从上图中可以看到,通过一个统一的Facade来调用复杂的子系统的类。   按我的理解,外观模…

程序员

锁的优化及注意事项

避免死锁,减少锁的粒度,锁分离 一、减少锁持有的时间; 二、减少锁的粒度; 三、锁分离; 四、锁粗化; 五、ThreadLocal的使用; ThreadLocal是解决线程安全问题一个很好的思路,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。在很多情况下,ThreadLocal…

大数据

数据库SQL性能优化(一)

1. 问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化…

大数据

java并发之互斥和同步

并发在任何系统和编程语言中都有着重要的地位。 操作系统中的互斥和同步 在操作系统(假设单核)中,我们可以实现同时多个进程(软件)的同时运行,其实取决于操作系统的中断,也就是一个进程在cpu上执行一个时间片后就会被中断,然后换上其它的进程上来执行,所以我们的感觉是进程都在并发的执行。或许你会问,为什么…