- 博客(99)
- 资源 (3)
- 收藏
- 关注
原创 奔走在算法的大路上(一)排序之归并排序
归并排序(Merge sort)是创建在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 归并操作 归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。算法描述 归并操作的过程如下:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 设定两个指针,最初
2015-04-24 14:41:41
1205
原创 奔走在算法的大路上(一)排序之希尔排序
希尔排序是插入排序的一种更高效的改进版本。它的作法不是每次一个元素挨一个元素的比较。而是初期选用大跨步(增量较大)间隔比较,使记录跳跃式接近它的排序位置;然后增量缩小;最后增量为 1 ,这样记录移动次数大大减少,提高了排序效率。希尔排序对增量序列的选择没有严格规定。希尔排序最关键的是选对增量,关于增量的选择,建议参考:http://zh.wikipedia.org/wiki/希尔排序 中的步
2015-04-08 21:56:51
972
原创 奔走在算法的大路上(一)排序之插入排序
插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。其原理我感觉用一张图说明时最好的了源码packa
2015-04-07 14:29:26
927
原创 奔走在算法的大路上(一)排序之选择排序
首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法交租选择排序。package Sort;/** * * Description: 选择排序 * * @author zhangjunshuai * @ver
2015-04-06 11:48:49
1214
原创 我的MYSQL学习笔记(四)——函数
数字函数 1、求余函数MOD(X,Y)MOD(X,Y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,他返回除法运算后的精确余数 2、函数TRUNCATE(X,Y)TRUNCATE(X,Y)返回被舍去至小数点后y位的数字x。若y的值为0,则结果不带有小数点或不带有小数部分。 若y设为负数,则截去(归零)x小数点左边起第y位开始后面所有低位的值。 TIPS:ROUND(
2015-04-02 11:08:47
3273
1
原创 我的MYSQL学习笔记(三)——运算符
1、安全等于运算符(<=>)SELECT NULL <=> NULLUNION ALLSELECT NULL <=> 1union ALLSELECT 1<=>0UNION allSELECT NULL = NULL注意此运算符和等于(=)的区别在于判断两个值都为空的时候,执行结果如下: 2、LEAST运算符 作用:获取多个参数值中的最小值 注意:不要混合数据类
2015-03-03 16:10:24
1160
原创 我的MYSQL学习笔记(二)——数据类型
本文是对mysql数据类型的记录。 整数类型 日期类型 字符串类型 参考: http://www.w3cschool.cc/mysql/mysql-data-types.html
2015-03-03 15:28:05
831
原创 我的MYSQL学习笔记(一)
这是我个人借助网络文章学习MYSQL的过程笔记,希望对大家的有所帮助。 1、DEFUALT关键字CREATE TABLE emp(id INT DEFAULT 12)2、设置自增长列(auto_increment)create table temp2( id INT primary KEY auto_increment, tname INT)mysql的自增长列是不能设置
2015-03-03 14:36:49
1204
原创 Java SE学习之枚举总结
本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享。最近在看Java基础方面的书的时候,又遇到了枚举的介绍。在网上查了一些资料,对这些资料进行一些总结。用法一:常量package meiju;/** * * @ClassName: Color * @Description: 枚举变量的常量用法* @author zhangjunshuai junshuaiz
2014-11-16 20:15:08
1751
原创 Java SE学习之方法参数的使用
本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享。Java程序设计语言对对象采用的不是引用调用,实际上,对象引用进行的是值传递。在Java程序设计语言中,方法参数的使用情况:1、一个方法不能修改一个基本数据类型的参数(即数值型和布尔型);2、一个方法可以改变一个对象参数的状态;3、一个方法不能实现让对象参数引用一个新的对象。下面是测试代码pa
2014-10-29 16:14:09
1466
原创 Java SE学习之Random
本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享。昨天在项目中想使用几个随机数,结果使用Random时居然出现随机数相同的情况,忍不住查了些资料。现将代码总结如下:package SE;import java.util.Random;public class RandomUnit { /** * * * 无种子参数的构造方法使用一个和
2014-10-28 12:22:20
1289
原创 Java SE学习之数组——匿名数组和不规则数组
本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享。最近偶然遇到了数组的问题,学习了匿名数组和不规则数组。匿名数组适用于只使用一次的情况;不规则数组适用是每行数据总数不确定的情况。下面贴上我的小例子package SE;import java.util.Random;/** * * Description: 此方法是对匿名数组和不规则数组的学习 *
2014-10-27 17:41:03
5479
原创 Java WEB 之页面间传递特殊字符
本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享。昨天在做项目的时候,有一个页面间传递特殊字符的需求,查了一些资料,现在将自己的经验写出来。首先,在前台编码var fckPurpose=encodeURIComponent($.trim(jQuery("#fckPurpose").val()));encodeURIComponent、encodeURI和esca
2014-10-24 11:01:04
3845
原创 Java SE学习之System.getProperties
本文是学习网络上的文章时的总结,感谢大家无私的分享。Java提供的java System.getProperties()方法是获取运行环境的系统参数的,综合了网上各位大神的帖子我总结出一些可用属性。java.versionJava 运行时环境版本java.vendorJava 运行时环境供应商java.vendor.urlJava 供
2014-10-22 17:12:14
4304
原创 Java SE学习之printf 日期转换符
本文是学习网络上的文章时的总结,感谢大家无私的分享。System.out.printf()方法可以对日期做处理输出。对应列表转换符类型举例c完整的日期和时间Mon Feb 09 18:05:11 PST 2004FISO 8061日期2004-02-09D美国格式的日期02/09/2004
2014-10-16 19:07:47
5209
原创 Java SE之break和continue标签
文是学习网络上的文章时的总结,感谢大家无私的分享。Java没有提供goto功能,但是保留了goto关键字。在java中可以使用break标签和continue标签功能实现简版的goto功能。下面的小代码做抛砖引玉。package SE;/** * * * Description: 使用break和continue的标签功能 * * @author zhangjunsh
2014-10-16 16:21:27
1151
原创 Java并发学习之十九——线程同步工具之Phaser
本文是学习网络上的文章时的总结,感谢大家无私的分享。JDK 1.7 添加了一个新的工具Phaser,Phaser的在功能上与CountDownLatch有部分重合。下面使用Phaser类来同步3个并发任务。这3个任务会在3个不同的文件夹和它们的子文件夹中搜索扩展名是.log的文件。这个任务被分成3个步骤:1. 在指定的文件夹和子文件夹中获得文件扩展名为.log的文件列表。
2014-10-09 17:14:26
5070
原创 Java并发学习之十八——线程同步工具之CyclicBarrier
本文是学习网络上的文章时的总结,感谢大家无私的分享。CyclicBarrier 类有一个整数初始值,此值表示将在同一点同步的线程数量。当其中一个线程到达确定点,它会调用await() 方法来等待其他线程。当线程调用这个方法,CyclicBarrier阻塞线程进入休眠直到其他线程到达。当最后一个线程调用CyclicBarrier 类的await() 方法,它唤醒所有等待的线程并继续执行它们的
2014-09-29 11:25:22
2629
原创 Java并发学习之十七——线程同步工具之CountDownLatch
本文是学习网络上的文章时的总结,感谢大家无私的分享。CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以继续往下执行。假如我们这个想要继续往下执行的任务调用一个CountDownLatch对象的await()方法,其他的任务执行完自己的任务后调用同一个CountDownLatch对象上的countDown()方法,这个调用awa
2014-09-26 15:18:03
26854
2
原创 Java并发学习之十六——线程同步工具之信号量(Semaphores)
本文是学习网络上的文章时的总结,感谢大家无私的分享。当一个线程想要访问某个共享资源,首先,它必须获得semaphore。如果semaphore的内部计数器的值大于0,那么semaphore减少计数器的值并允许访问共享的资源。计数器的值大于0表示,有可以自由使用的资源,所以线程可以访问并使用它们。package chapter3;import java.util.concurrent
2014-09-25 16:16:09
10075
原创 Java并发学习之十五——使用读写锁同步数据访问
本文是学习网络上的文章时的总结,感谢大家无私的分享。读写锁重要的是写锁的使用,只用一个入口。下面是读写锁使用的例子package chapter2;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;public cla
2014-09-17 14:34:57
4563
原创 Java并发学习之十四——使用Lock同步代码块
本文是学习网络上的文章时的总结,感谢大家无私的分享。Java提供另外的机制用来同步代码块。它比synchronized关键字更加强大、灵活。Lock 接口比synchronized关键字提供更多额外的功能。在使用Lock时需要注意的是要释放Lock锁。package chapter2;import java.util.concurrent.locks.Lock;import
2014-09-16 19:37:26
2918
原创 Java并发学习之十三——在同步代码中使用条件
本文是学习网络上的文章时的总结,感谢大家无私的分享。其实很简单,大家看代码就知道是神马意思了。package chapter2;import java.util.Date;import java.util.LinkedList;import java.util.List;public class EventStorage { private int maxSize; pr
2014-09-15 17:06:23
1934
原创 Java并发学习之十二——在同步的类里安排独立属性
本文是学习网络上的文章时的总结,感谢大家无私的分享。当你使用synchronized关键字来保护代码块时,你必须通过一个对象的引用作为参数。通常,你将会使用this关键字来引用执行该方法的对象,但是你也可以使用其他对象引用。通常情况下,这些对象被创建只有这个目的。比如,你在一个类中有被多个线程共享的两个独立属性。你必须同步访问每个变量,如果有一个线程访问一个属性和另一个线程在同一时刻访问另一个
2014-09-15 16:49:06
2262
原创 Java并发学习之十一——同步方法
本文是学习网络上的文章时的总结,感谢大家无私的分享。 每个方法声明为synchronized关键字是一个临界区,Java只允许一个对象执行其中的一个临界区。静态方法有不同的行为。只有一个执行线程访问被synchronized关键字声明的静态方法,但另一个线程可以访问该类的一个对象中的其他非静态的方法。 你必须非常小心这一点,因为两个线程可以访问两个不同的同步方法,如果其中一个是静态的而另一
2014-09-15 16:38:07
2067
2
原创 Java并发学习之十——用线程工厂创建线程
本文是学习网络上的文章时的总结,感谢大家无私的分享。 1、工厂模式是最有用的设计模式。它是一个创造模式,还有他的目的是创建一个或者几个类对象的对象。有了这个工厂,我们有这些优势集中创建对象:更简单的改变了类的对象创建或者说创建这些对象的方式;更简单的为了限制的资源限制了对象的创建。更简单的生成创建对象的统计数据。2、Java提供一个接口,ThreadFactory接口实
2014-08-25 19:09:19
3911
原创 Java并发学习之九——使用本地线程变量
本文是学习网络上的文章时的总结,感谢大家无私的分享。1、如果创建一个类对象,实现Runnable接口,然后多个Thread对象使用同样的Runnable对象,全部的线程都共享同样的属性。这意味着,如果你在一个线程里改变一个属性,全部的线程都会受到这个改变的影响。如果希望程序里的哥哥线程的属性不会被共享,Java并发API提供了一个很清楚的机制叫本地线程变量。2、Java并发API包括I
2014-08-23 11:51:51
5475
原创 Java并发学习之八——在线程中处理不受控制的异常
本文是学习网络上的文章时的总结,感谢大家无私的分享。1、Java里有2种异常:检查异常:这些异常必须强制捕获她们或在一个方法里的throws子句中。未检查异常:这些异常不用强制捕获它们。2、在一个线程对象的run()方法里抛出一个检查异常,我们必须捕获并处理她们。因为run()方法不接受throws子句。当一个非检查异常抛出,默认的的行为是在控制台写下stack trace
2014-08-21 16:57:48
2050
原创 Java并发学习之七——守护线程
本文是学习网络上的文章时的总结,感谢大家无私的分享。1、Java有两种Thread:“守护线程Daemon”与“用户线程User”。用户线程:Java虚拟机在它所有非守护线程已经离开后自动离开;守护线程:则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。2、setDaemon(boolean on)方法可以方便的设置线程的Daemon模
2014-08-20 20:47:33
1686
原创 Java并发学习之六——等待线程的终结
本文是学习网络上的文章时的总结,感谢大家无私的分享。1、在某些情况下,我们需要等待线程的终结。例如,我们可能会遇到程序在执行前需要初始化资源。在执行剩下的代码之前,我们需要等待线程完成初始化任务。为了达到此目的,我们使用Thread类的join()方法。当前线程调用某个线程的这个方法时,它会暂停当前线程,直到被调用线程执行完成。2、Java提供2种形式的join()方法:Join(
2014-08-15 14:11:14
2510
原创 Java并发学习之五——线程的睡眠和恢复
本文是学习网络上的文章时的总结,感谢大家无私的分享。1、Thread类的sleep方法,可以使线程睡眠。此方法接收一个整数作为参数,表示线程暂停运行的毫秒数。在调用sleep方法后,当时间结束时,JVM会安排他们CPU时间,线程会继续按指令执行。 另一种可能是使用一个有TimeUnit列举元素的sleep方法,使用线程类的sleep方法让当前线程睡眠,但是它接收的参数单位后
2014-08-13 20:47:17
3362
原创 Java并发学习之四——操作线程的中断机制
本文是学习网络上的文章时的总结,感谢大家无私的分享。1、如果线程实现的是由复杂算法分成的一些方法,或者他的方法有递归调用,那么我们可以用更好的机制来控制线程中断。为了这个Java提供了InterruptedException异常。当你检测到程序的中断并在run()方法内捕获,你可以抛这个异常。2、InterruptedException异常是由一些与并发API相关的Java方法,如sl
2014-08-12 17:17:13
2377
原创 Java并发学习之三——线程的中断
本文是学习网络上的文章时的总结,感谢大家无私的分享。1、一个多个线程在执行的Java程序,只有当其全部的线程执行结束时(更具体的说,是所有非守护线程结束或者某个线程调用System.exit()方法的时候),它才会结束运行。有时,你需要为了终止程序而结束一个线程,或者当程序的用户想要取消某个Thread对象正在做的任务。2、Java提供中断机制来通知线程表明我们想要结束它。中断机制的特
2014-08-11 14:49:52
1983
原创 Java并发学习之二——获取和设置线程信息
本文是学习网络上的文章时的总结,感谢大家无私的分享。Thread类的对象中保存了一些属性信息能够帮助我们辨别每一个线程,知道它的一些信息ID:每个线程的独特标示;Name:线程的名称;Priority:线程对象的优先级。优先级别在1-10之间,1是最低级,10是最高级。Status:线程状态。在java中,线程只有6种状态:new,runnable,blocked,wait
2014-08-08 18:54:29
3541
原创 Java并发学习之一——线程的创建
本文是学习网络上的文章时的总结,感谢大家无私的分享。1、与每个Java语言中的元素一样,线程是对象。在Java中,我们有两种方式创建线程:a、通过直接继承thread类,然后覆盖run方法。b、构建一个实现Runnable接口的类,然后创建一个thread类对象并传递Runnable对象作为构造参数代码如下package chapter;/** * * Descr
2014-08-07 14:56:06
2272
2
原创 JAVA抽象类和接口
本文是本人学习网络上各位大牛的总结。一、抽象类在面向对象领域由于抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能实例化的。抽象类体现了数据抽象的思想,是实现多态的一种机制。它定义了一组抽象的方法,至于这组抽象的方法的具体表现形式由派生类来实现。同事抽象类提供了继承的概念,他的出发点就是为了继承,否则它没有存在的任何意义。所以说定义的抽象类一定是用来继承
2014-07-10 11:10:21
1100
原创 String、StringBuffer和StringBuilder
一、String和StringBuffer String类型和StringBuffer类型的主要性能区别其实在于String是不可变的对象,因此在每次对String类型进行改变的时候其实都等同于生成了一个新的String对象,然后将指针指向新的String对象,所以经常改变内容的字符串最好不要用String,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象对了以后,
2014-07-07 20:54:45
1519
原创 Java内部类的自我理解
本文是借鉴网上的多篇资料,感谢网上各位大牛的分享。一、什么是内部类内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的成员,并且依附于外部类而存在的。内部类可以为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。内部类主要有以下几类:成员内部类、局部内部类、静态内部类和匿名内部类。二、为什么需要内部类?典型的情况是,内部类继承自
2014-07-07 16:17:01
1648
转载 Synchronized和Static Synchronized区别
通过分析这两个用法的分析,我们可以理解java中锁的概念。一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念),一个是全局锁(该锁针对的是类,无论实例多少个对象,那么线程都共享该锁)。实例锁对应的就是synchronized关键字,而类锁(全局锁)对应的就是static synchronized(或者是锁在该类的class或者classloader对象上)。下面的文章做
2014-06-30 15:40:08
659
转载 oracle中的exists和not exists和in用法详解
有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1 2) select * from T1 where T1.a in (select T2.a from T2) ; T1
2014-06-25 15:19:02
4481
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人