自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

iCheetor

业精于勤

  • 博客(62)
  • 资源 (1)
  • 收藏
  • 关注

原创 判断一个类中的属性是否可写

通过 java.beans 包下的相关类判断一个给定属性在这个类中是否可写

2024-05-13 18:18:56 176

原创 ASM 中的跳转指令

ASM 操作中的跳转实现原理

2024-05-02 17:59:56 945 1

原创 Objenesis 底层探究

Objenesis 是一个 Java 库,用于在不调用构造方法的情况下创建对象。由于绕过了构造方法,所以无法调用构造方法中的初始化逻辑。相应的,Objenesis 无法创建抽象类、枚举、接口的实例对象。

2024-04-30 21:04:44 795 2

原创 ASM 中的栈模型

ASM 中的栈模型

2024-04-14 01:24:31 542

原创 Cglib 查看生成的class文件

cglib查看生成的class文件

2024-03-15 14:45:46 380 2

原创 IDEA安装ASM插件

IDEA安装ASM字节码插件

2023-01-28 15:53:54 680 2

原创 Spring源码中包扫描路径匹配规则分析

Spring源码中包扫描路径匹配规则分析

2022-12-29 23:45:04 327

原创 根据给定参数获取对应的构造方法反射创建对象

根据给定的参数,获取给定类型对应的构造方法,反射创建对象

2022-12-11 15:04:11 230

原创 Java8中解决DateFormat线程不安全问题

Java8中解决DateFormat日期格式化线程不安全问题

2022-10-24 22:18:05 910

原创 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 567 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 729

原创 获取一段时间内每周固定星期对应的日期

应用场景如下:购买某种套餐服务,每周固定服务几天,给定开始服务时间和总共服务次数,获取具体服务的每一天的日期。 /** * 获取一周内的某几天 * @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 686

原创 等分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 534

原创 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 1360

zooInspector3.5.7.zip

zookeeper可视化工具,依赖zookeeper3.5.7版本,支持认证等zookeeper最新功能

2020-04-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除