- 博客(13)
- 收藏
- 关注
原创 Java为什么要实现Serializable
为什么要实现Serializable 工作中我们经常在进行持久化操作和返回数据时都会使用到javabean来统一封装参数,方便操作,一般我们也都会实现Serializable接口。 1、为什么要进行序列化,实现序列化的两个原因:1、将对象的状态保存在存储媒体中以便可以在以后重新创建出完全相同的副本;2、按值将对象从一个应用程序域发送至另一个应用程序域。实现serializabel接口的作用...
2019-12-27 17:19:59
358
原创 Java实现对象的深度克隆
主要的原理:需要克隆的对象必须实现Serializable接口,用序列化和反序列化来实现深度克隆,序列化指的就是把对象直接转化成文件或者其他持久层数据(二进制文件,字节码文件),反序列化指的就是读出该数据,重新建立对象的过程。即就是实现对象的字节流转换,然后在把当前的字节流对象输出,得到新的对象。 package com.nullable.tools.id; import java.io.B...
2019-12-27 17:13:08
293
原创 Java浅谈synchronized和ReentrantLock
一、 synchronized: 关键字synchronized可以保证在同一时刻,只有一个线程可以执行某一方法,或者某一代码块。可以理解为一种互斥的方式,即同步不仅可以阻止一个线程看到对象处于不一致的状态中;它还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。 关键字synchronized取得的锁都是对象锁,而不是把一段代码或方法(函数)当作锁,哪个线...
2019-12-27 17:09:16
120
原创 Java实现库表的主键生成策略
通过ASCII编码对照关系生成数组和英文主键,起初传入主键字符串,然后转换为byte数组,从末位开始十进制数的自增,获取ASCII编码对应的下一位字符,以及判断是否要进位,进位则循环下一位进行自增,反复循环,若不进位,则直接返回byte数组,最后byte数组转换为字符返回。 package com.nullable.tools.id; /** * 主键生成工具类:包含数字、大写英文,从0-...
2019-12-27 16:51:01
1069
原创 Java二分法查找
二分法查找(Binary Search),当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。 假如有一组数为3,12,24,36,55,68,75,88要查给定的值24....
2019-12-22 22:25:48
90
原创 Java插入法排序
插入排序(Insertion sort):有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一...
2019-12-22 21:51:42
124
原创 Java选择法排序
选择排序(Selection sort)每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。即当前元素和它后面的每个元素作比较,找出符合条件的元素(大于或者小于),然后交换位置,每次会确定一个最小或者最大的元素, 选择排序是不稳定的排序方法。以下有两种方法进行选择排序,排序效率不一样,排序从小到大。 /** * 选择排序方法一...
2019-12-22 00:10:52
257
原创 Java冒泡法排序
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名冒泡排序算法,运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相...
2019-12-21 23:27:11
96
原创 Java判断一个数是否是素数(质数)
/** * 判断一个数是否是素数 * @param num * @return */ public static boolean isPrimeNumber(int num){ int i = 2; //0和1都不是素数,排除 boolean flag = num==0||num==1 ? false : true; while(i<num){ if...
2019-12-21 21:12:59
235
原创 Java1到4能组成多少个不相同且每位数字不重复的三位数
/** * 1到4能组成多少个不相同且每位数字不重复的三位数 * @return */ public static int getNumOfNotRepeat(){ int count = 0; for (int i = 1; i < 5; i++) { for (int j = 1; j < 5; j++) { for (int k = 1; k...
2019-12-21 20:42:38
344
原创 Java判断一个数是否是2的N次方
Java判断一个数是否是2的N次方 /** * 判断一个数是否是2的N次方 * @param num * @return */ public static boolean isTwoToThePowerOfN(int num){ while(num%2==0){ num = num/2; } if(num==1){ return true; } ...
2019-12-21 20:15:29
1417
1
原创 Java汉字与unicode的相互转换
/** * 汉字转换成unicode * @param cn * @return */ private static String cnToUnicode(String cn) { char[] chars = cn.toCharArray(); String str = ""; for (int i = 0; i < chars.lengt...
2019-09-24 11:35:38
154
原创 解决Java处理Oracle用in查询条件超过1000个的办法
解决Java处理 Oracle用in查询条件超过1000的办法 Oracle sql语句,in函数有助于减少or条件的复合使用,但是如果in的条件中多于1000个表达式数会报ORA-01795的提示错误。这是Oracle考虑性能问题做的限制。可以把条件拆分,用多个or和in拼接查询。解决办法如下,并附带两个数组的处理函数。 /** * * @param pks in查询的条件...
2019-09-20 19:17:07
1913
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人