- 博客(62)
- 资源 (1)
- 收藏
- 关注
原创 Objenesis 底层探究
Objenesis 是一个 Java 库,用于在不调用构造方法的情况下创建对象。由于绕过了构造方法,所以无法调用构造方法中的初始化逻辑。相应的,Objenesis 无法创建抽象类、枚举、接口的实例对象。
2024-04-30 21:04:44 795 2
原创 RxJava中Observable类对应方法map和filter的调用分析
RxJava中针对Observable类中的map、filter调用分析
2022-10-24 20:52:43 1504
原创 排列组合的几种实现
1.排列代码如下: public static long permutation(int n, int m) { long res = 1l; for(; m > 0; m --) { res *= n; n --; } return res; }2.组合并且规定:0!= 1。C(3,0) = 1。2.1通过排列的方式求组合代码如下: public static long comb(int n, int m)..
2021-08-16 14:50:28 433
原创 求解数组中的第k个最大元素
1.插入法整体思路如下:建立一个数组长度为k的数组orderArray,把原数组array中最左侧的k个元素放入orderArray,对orderArray排序,接着从k开始遍历原数组array,与orderArray的最后一个元素比较,即orderArray[k-1],如果比orderArray[k-1]大,说明应插入到orderArray中。接着拿这个比orderArray[k-1]大的元素和orderArray中的元素一一比较,确定插入位置,最后将元素插入。代码如下: /**
2021-07-20 14:34:20 217
原创 利用反射操作Unsafe类
由于sun.misc.Unsafe类可以操作内存,JDK对其作了限制,不允许整个渠道使用Unsafe类,可通过反射机制,来获取Unsafe实例,进而操作Unsafe实例方法。public class UnSafeTest { static final Unsafe unsafe; static final long stateOffset; private volatile long state = 0; static { try { //利用反射获取Unsafe的成员变量th
2020-11-20 10:46:04 682
原创 字符串比较算法
BF算法 /** * BF(Brute Force)算法 * 主串长度为 m,子串长度为 n,算法的复杂度为 O(m*n) * @param parent * @param sub * @return */ public static boolean match(String parent, String sub) { for(int i = 0; i < parent.length(); i ++) {
2020-11-09 23:48:13 1821
原创 浅析Java正则中的Pattern和Matcher两个类
调试Java正则匹配代码时,发现一个现象,若正则规则字符串和匹配字符串相同时,调用matches()方法后,再调用find()方法,那么只有matches()方法匹配到了,如果单独调用find()方法,则find()方法也能匹配到了,示例代码如下: public static void main(String[] args) { Pattern p = Pattern.compile("aa"); Matcher a = p.matcher("aa");
2020-11-06 20:27:38 568 3
原创 利用工具类StringTokenizer分割字符串
/** * * @param str 待拆分的字符串 * @param delimiters 分隔符 * @param trimTokens 是否去除两端空格 * @param ignoreEmptyTokens 是否忽略空格 * @return */ public static String[] tokenizeToStringArray( String str, String delimiters, boolean trimTokens, boo...
2020-11-05 19:19:14 219
原创 线程池execute与submit的区别
线程池execute() 与submit() 的区别execute() 用于提交不需要返回值的任务,而submit() 会返回一个Future类型的对象 execute() 提交任务后执行异常时直接打印堆栈信息,而submit() 方法可以通过返回的Future 调用get() 方法捕获执行时异常public static void main(String[] args) { ThreadPoolExecutor pool = new ThreadPoolExecutor(50, 100, 5
2020-10-16 16:07:15 518
原创 大整数相加
题目:给出两个很大的整数,求出两个整数相加的和。方式1:思路:第1步:创建两个整型数组,数组长度是较大整数的位数加1,把每一个整数倒序存储到数组中,整数的个位存储到数组下标为0的位置,最高位存于数组的尾部。第2步:创建结果数组,结果数组的长度同样是较大整数的位数+1,加1的目的为进位做准备。第3步:遍历两个数组,从左到右按照对应下标把元素两两相加,并处理进位。第4步:把结果数组逆序,去掉首位的0,即为最终的结果。public static String bigNumberS
2020-07-21 23:02:33 159
原创 Java移位运算
1.java中无符号右移>>>,long型每64位一个循环,int型每 public static void main(String[] args) { //long型无符号右移64位一个循环 long a = 33; for (int i = 0; i < 65; i++) { System.out.println(i + " " + (a >>> i)); } //int型无符号右移32位一个循环 i
2020-07-21 22:35:01 262
原创 JDK8 遍历数组
在JDK8中,由于引入了Stream,所以可以很方便的遍历数组1.采用lambda表达式int[] add2 = new int[] {1,2,3,4};Arrays.stream(add2).forEach(x -> System.out.println(x));2.采用双冒号写法int[] add2 = new int[] {1,2,3,4};Arrays.stream(add2).forEach(System.out::println);此时,将方法作为参数,传递到s
2020-07-19 20:20:40 2512
原创 Redis+Lua脚本生成自增主键
一.简介从redis的2.6版本开始,增加了对lua脚本的支持,目前可用的库只有如下几个:baselib tablelib stringlib mathlib structlib cjsonlib cmsgpacklib bitoplib redis.sha1hexfunction像在redis的lua脚本中执行os.time()会报错,不支持os类库。二.生成自增主键1.lua脚本local temp = 0local key = KEYS[1]...
2020-07-18 23:20:38 1700
原创 Vue中的v-cloak
当网络较慢,网页还在加载 Vue.js ,而导致 Vue 来不及渲染,这时页面就会显示出 Vue 源代码。我们可以使用 v-cloak 指令来解决这一问题。在html中加入v-cloak<div id="app" v-cloak></div>在html的title底下追加样式 <style> [v-cloak] { display: none !important; } </s
2020-05-28 14:32:48 241
原创 vue 对集合中的对象赋值,页面不变化
对集合中的对象遍历后,呈现在页面,点击包含某个对象渲染出的页面元素时,修改当前点击元素所对应的这个对象中的属性值,发现页面上对应字段并未改变,可用以下方法处理:this.$set(this.couponArr,indexs,item);第一个参数为对应数组,第二个为数组对应的index,第三个为修改后的对象。...
2020-05-21 10:45:35 4598
原创 Java获取设备的Mac地址
1.获取本机Mac地址方法1通过java.net.NetworkInterface类获取 /** * 获取本机Mac地址 * @return * @throws Exception */ public static String getMacByIP() throws Exception { return getMacByIP(InetAddress.ge...
2020-03-28 20:44:43 5422
原创 JS正则捕获
var str = '3周一,周二,周三 10:00-14:00,16:00-20:00 2020-03-30';var reg = /(\d+)(\S+)\s(.+)\s(.*)/;reg.test(str);console.log(RegExp.$4);RegExp.$1捕获第一个匹配,即3.
2020-03-27 16:52:51 403
原创 oracle配置定时器执行时间
select trunc(sysdate)+1+(23*60+50)/(24*60) from dual; -- 每天23:50:00开启select trunc(sysdate) + 1/24 from dual; -- 每天凌晨1:00:00开启select TRUNC(sysdate,'mi') + 1/(24*60) from dual; -- 每分钟开启一次select ...
2020-03-27 16:49:20 730
原创 获取一段时间内每周固定星期对应的日期
应用场景如下:购买某种套餐服务,每周固定服务几天,给定开始服务时间和总共服务次数,获取具体服务的每一天的日期。 /** * 获取一周内的某几天 * @param dateStr 起始日期 * @param containList 一周内的某几天(日一二三四五六 ---> 1234567) * @param total 要获取的总天数 * @return ...
2020-03-23 19:18:56 532
原创 接入支付宝退款功能
项目中需要接入支付宝退款功能,根据支付宝API Demo,代码如下:public class AlipayRefund {private static final Logger logger = LoggerFactory.getLogger(AlipayRefund.class); /** * 支付宝退款方法 * @param orderId 订单id * @para...
2020-03-21 10:13:21 1715
原创 Java时区问题
一、获取Java中所有可用的时区信息String[] availableIDs = TimeZone.getAvailableIDs();for (String string : availableIDs) { System.out.println(string);}二、时区转换/*Asia/Bishkek*/TimeZone timeZone = TimeZone.get...
2019-08-21 15:09:00 390
原创 处理由Mybatis缓存引发的存储执行结果异常问题
在一段代码中,需要根据不同的条件多次调用一个存储过程,后来发现后面的调用,尽管传入的参数改变了,返回的值依然没有变。下面的代码在同一个代码块中被调用了两次,代码如下:Map<String,Object> rm2 = new HashMap<String, Object>();rm2.put("sectionId", map.get("sectionId"));...
2019-08-21 14:45:21 687
原创 等分List集合
public static void main(String[] args) { List<String> list = Arrays.asList("a","b","c","d","e","f","g"); for(int i = 0; i < 4; i ++){ int sub = list.size()%4 == 0 ? list.siz...
2019-08-06 16:37:18 141
原创 UDP编程示例
客户端:public class SocketSend { public static void main(String[] args) throws Exception { DatagramSocket ds = null; try { ds = new DatagramSocket(); while(true){ String data = "UDP测试"...
2019-07-30 17:35:28 641
原创 利用Callable加多线程提高程序执行效率
在实际项目中,经常需要将查询获得的数据封装为合适的数据结构返回给前端呈现,如果一个接口中,存在多个查询,此时如果串行执行,消耗的时间为多个查询耗时的总和,效率不高,示例代码如下: public static void main(String[] args) throws Exception { /** * 耗时5005 ms */ long start = Syst...
2019-07-03 17:34:10 873
原创 Oracle PL/SQL 动态执行SQL语句
create or replace function FUN_TR_ID2NAME(in_table_name in varchar2 , in_column_name in varchar2 , in_column_id in varc...
2019-07-02 15:11:27 1788
原创 Oracle处理字符分隔反转
create or replace function fun_string_tr(in_string in varchar2,in_delimiter in varchar2) return varchar2is FunctionResult varchar2(512) default ''; string_adjusted varchar2(256); deli_location...
2019-07-02 15:03:51 1119
原创 MySQL处理字符分隔反转
/*翻译反转*/CREATE DEFINER = 'root'@'localhost'FUNCTION dcs_dev.function1(in_str VARCHAR(256), in_delimiter VARCHAR(8)) RETURNS varchar(256) CHARSET utf8BEGIN DECLARE v_count int; DECLARE v_to_b...
2019-07-02 15:01:34 536
原创 Mysql动态建表和临时表
1.Mysql采用存储,实现动态建表:BEGINDECLARE tb_name VARCHAR(64);DECLARE v_name VARCHAR(32) DEFAULT 'tbl_test_';set tb_name = CONCAT(v_name,date_format(CURDATE(),'%Y%m%d'));set @sql_delete = CONCAT('DROP ...
2019-04-30 17:51:16 2699
原创 使用JsonProperty注解解决Json解析首字母为大写字段匹配不上的问题
采用@RequestBody注解接收application/json格式的数据,然后数据封装在一个Modle中,假如Model中存在首字母大写的字段,此时会报错:2019-04-30 16:58:29.770 [http-bio-8080-exec-4] DEBUG o.s.web.servlet.mvc.method.annotation.RequestResponseBodyMeth...
2019-04-30 17:30:57 3603
原创 Java比较两个数组
public class CompareArray { public static void main(String[] args) { String[] a = {"a","b","c"}; String[] b = {"a","b","c","d"}; System.out.println(compareArray(a, b)); Syst
2019-03-12 21:24:32 4799
原创 浅谈java getResource 获取资源文件
在项目中,常常需要加载一些自定义的资源文件,比如RSA加密时生成的公私钥文件,那么就免不了要和getResource()这个方法打交道了。示例代码如下: /** * RSAKeyGen.class.getResourceAsStream("/com/icheetor/base/tool/pri.key") * maven项目,不能直接通过这种方法获取包路径下的文...
2019-02-22 15:18:59 1361
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人