Java功底
文章平均质量分 59
技术改变世界,编程历练人生。
liberg
JAVA/大数据/前端(Web/H5/Android)
展开
-
JDK HTTPS 400/403错误 & 微软数据湖数据写入/读取(DataLake Landing Zone API)避坑指南
微软数据湖数据拉取(DataLake Landing Zone API)避坑指南:1 JDK1.7报HTTP 400错误 2 去BOM原创 2023-06-19 16:43:26 · 570 阅读 · 0 评论 -
Java AES加密工具类
Java AES加密工具类原创 2023-02-13 16:54:04 · 461 阅读 · 0 评论 -
Java生成唯一订单号
Java生成唯一订单号原创 2023-02-13 11:21:46 · 647 阅读 · 0 评论 -
Java命令行程序实战:javac编译,jar命令,jar包
Java命令行程序实战:javac编译,jar命令,jar包;用java编写一个生成UUID的实用小程序,打成jar包,包装成.bat文件,双击直接运行。原创 2022-12-30 16:01:45 · 1017 阅读 · 0 评论 -
Java生成4位、6位随机数短信验证码(高效实现)
由于Java中Random对象的nextInt(n)方法产生的是[0, n-1)范围内的随机数。因此要产生[m, n]范围内的随机数就是: m + randObj.nextInt(n-m+1)原创 2022-08-16 10:59:17 · 5681 阅读 · 0 评论 -
Java getResource()获取class文件目录位置总结
Java getResource()获取class文件目录位置;xxx.class.getResource("")xxx.class.getResource("/")xxx.class.getProtectionDomain().getCodeSource().getLocation()原创 2022-07-19 13:05:19 · 1832 阅读 · 0 评论 -
深入解析Integer.bitCount()源码
以位运算和分治归并思想作为切入口,深入探讨java.lang.Integer#bitCount()方法的实现源码。原创 2021-03-23 18:30:15 · 641 阅读 · 0 评论 -
Java对象池应用:封装MD5/SHA-256工具类
简言之,将得到的对象组织起来重复使用的技术就是对象池技术。普通对象池、线程池、数据库连接池。以计算MD5/SHA-256的实现为例,详细拆解普通对象池的实现。原创 2022-04-30 08:56:41 · 1954 阅读 · 0 评论 -
Java进阶与面试——多线程、CAS、volatile详解、DCL单例
Java多线程Thread、join()、CAS自旋锁、volatile、DCL单例原创 2019-12-09 01:03:40 · 243 阅读 · 0 评论 -
Java自定义注解(Annotation)、元注解、注解处理器
注解为Java代码中各种程序元素(包、类、方法、成员变量、方法参数、本地变量等)提供了一种附加额外元数据(metadata)信息的能力。如同Object类是所有类的默认父类一样,java.lang.annotation.Annotation接口是所有注解的默认父接口。自定义注解先来定义一个注解:@Documented@Inherited@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)public @interface原创 2021-03-09 23:29:30 · 188 阅读 · 0 评论 -
HashMap中getOrDefault()性能剖析
HashMap中getOrDefault()性能如何?建议采用get()和getOrDefault(),不用containsKey()--get()的方式原创 2021-02-26 23:05:17 · 948 阅读 · 0 评论 -
ThreadLocal原理、源码、内存泄露分析
ThreadLocal类和Thread类都位于java.lang包下面,关系紧密。Thread类里面有一个成员变量ThreadLocal.ThreadLocalMap threadLocals = null;每个线程都有自己独立的ThreadLocalMap容器。ThreadLocal就是通过与线程的这个ThreadLocalMap threadLocals变量发生交互来实现线程级变量私有和隔离的。先来理解ThreadLocalMapThreadLocalMap可以看成一个存储键值对(key-原创 2020-11-30 22:40:55 · 110 阅读 · 0 评论 -
Post请求中@RequestParam和@RequestBody的混合使用
如何在一个@RestController方法中混合使用@RequestParam和@RequestBody呢?就像这样的代码:@PostMapping("/scanRecord")public Response scanRecord(@RequestParam("t") int type, @RequestBody ScanRecord scanRecord) { System.out.println("type="+type); System.out.println(JSON.toJS原创 2020-10-22 15:04:18 · 30004 阅读 · 9 评论 -
Java中的栈Stack、Deque、ArrayDeque、LinkedList
文章目录先来说说Java中的Stack类不用Stack至少有以下两点原因该用ArrayDeque还是LinkedList?结论先来说说Java中的Stack类Java中Stack类从Vector类继承,底层是用数组实现的线程安全的栈。栈是一种后进先出(LIFO)的容器,常用的操作push/pop/peek。不过Java中用来表达栈的功能(push/pop/peek),更适用的是适用双端队列接口Deque,并用ArrayDeque/LinkedList来进行初始化。Deque<Integer&g原创 2020-10-12 22:31:55 · 12084 阅读 · 1 评论 -
Java foreach你真的掌握了么
java中的foreach循环大家平常都在使用,但是请注意里面的坑。先来看看问题:ArrayList<String> list = new ArrayList<>();list.add("1");list.add("2");list.add("3");final String toRemove = "2";final String toAdd = "1000";for (String item : list) { if (toRemove.equals(item原创 2020-06-19 18:17:21 · 140 阅读 · 0 评论 -
深入剖析Java foreach实现原理,避免ConcurrentModificationException
认识foreachforeach循环是JDK1.5开始引入的,这种方式遍历集合或数组,代码更加简洁。foreach本质上不过是编译器提供的“语法糖”包装。编译器在遇到for(Type item : arrayOrList) { /* body-of-loop*/ }代码时,会进行代码的转译。如果是数组,会转成数组的遍历方式:for(int i=0;i<array.length;i++) { Type item = array[i]; /* body-of-loop */}原创 2020-06-19 02:00:54 · 422 阅读 · 0 评论 -
从字节码层面理解java中i=i++后i值不变的问题
执行结果先来看看执行结果:public static void main(String[] args) { int i = 0; i = i++; System.out.println(i);//0}为什么输出0呢?简单解释i++让i变成了1没错,但后面又将i++整体的结果0赋值给了i,最后i变成了0。注意是后加,所以i++整体的结果为0。探究原因要从java字节码的分析得出结论。查看main方法的字节码: 0 iconst_0 //常量0压入栈顶 1原创 2020-05-21 08:20:34 · 529 阅读 · 0 评论 -
Java new一个Object()到底占用多少个字节?
Java Object obj = new Object()到底占用多少个字节?Java中没有类似C的sizeof的操作符,如何获取一个对象实际占用的字节数呢?有一种比较方便的方式是通过启动jdk自带的jvisualvm来观察。先写一个测试类public class TestObjSize { //定义一个直接继承Object的类,用于观察 public static class Te...原创 2020-04-21 12:49:45 · 6216 阅读 · 0 评论 -
SpringCloud-02:通过RestTemplate、OpenFeign发起远程服务掉用
通过RestTemplate、OpenFeign发起远程服务掉用上一节,介绍了Eureka集群的搭建,以及单个微服务如何向Eureka进行注册。这一节,简单介绍如何在一个服务中,调用另外一个服务(实质是发Http请求)。几个概念RestTemplate是Spring提供的对Http客户端的封装类,能够发起Http调用并解析Http响应,比Httpclient使用起来更方便。Feign基于R...原创 2020-04-19 20:31:36 · 684 阅读 · 0 评论 -
SpringCloud-01:Eureka集群搭建,微服务向Eureka注册
新建STS/IDEA spring-boot-starter项目:new project--spring initializr--勾选SpringCloud Discover下的Eureka Server集成当前最新的Spring版本:SpringBoot: 2.2.6.RELEASESpringCloud: Hoxton.SR3对应的Eureka版本是2.2.2.RELEASE。单节...原创 2020-04-13 21:29:13 · 354 阅读 · 0 评论 -
Java正则表达式,从指定位置开始匹配
直接上demo:public static void main(String[] args) { String text = "这是**加粗1**,这是**加粗2**,其余内容。"; Pattern boldPattern = Pattern.compile("\\*\\*([^*]+)\\*\\*"); Matcher m = boldPattern.matcher(t...原创 2020-04-02 14:55:30 · 3038 阅读 · 0 评论 -
彻底弄懂@FunctionalInterface、Lambda表达式和方法引用
Java语言从JDK1.8开始引入了函数式编程。函数式编程的核心特点是,函数作为一段功能代码,可以像变量一样进行引用和传递,以便在有需要的时候根据函数引用进行函数的执行。1. @FunctionalInterface与“函数类型”Java对函数式编程的支持,本质是通过接口机制来实现的。首先定义一个仅声明一个方法的接口,然后对接口冠以@FunctionalInterface注解,那么这个接口就......原创 2020-03-09 14:27:02 · 4895 阅读 · 0 评论 -
java接口里面可以定义变量么?
答案是:可以,但必须是public static final的,而且必须是public static final的。先看一个例子://基于JDK1.8//IA.javapublic interface IA { double NUM = 1;//等价于public static final double NUM = 1; String name = "IA"; v...原创 2020-03-01 18:39:27 · 16524 阅读 · 6 评论 -
更改Maven LocalRepository本地仓库位置;远程仓库更改为阿里云镜像(Idea、STS4)
STS4(Spring Tool Suite 4)自带一个maven,不过maven本地仓库的默认地址在C盘~/.m2/repository,其中~表示用户的根目录,一般是C:/Users/xxx。更改STS4更改maven本地仓库位置的方法如下:STS4–Preferences–Maven–User Settings一个settings.xml文件如下:<?xml version...原创 2020-01-15 18:06:25 · 5204 阅读 · 1 评论 -
Java中一年有几周、周的计算
一般情况下java中一年有52周。但因为52周总共364天,而平年是365天,闰年是366天,如果一年只有52周的话,就会差几天。所以每过几年,就会出现一年有53周。比如2017年12月31日就位于当年第53周: cal.setFirstDayOfWeek(Calendar.MONDAY); cal.set(Calendar.YEAR, 2017); c原创 2016-09-23 10:03:12 · 15159 阅读 · 1 评论 -
Java网络通信(一)——BIO
Socket/ServerSocket方式—-Blocking I/OServer端public class LinyServer { public static void main(String[] args) { System.out.println("Server: started..."); LinyServer svr = new LinyServe原创 2017-09-06 16:22:24 · 339 阅读 · 0 评论 -
去重排序List(Java实现)
去重排序List(Java实现)去重排序ListJava实现需求描述链式实现本机性能测试结果其他实现需求描述对于顺序产生的一系列整数进行去重排序。链式实现//去重自排序链表public class AscendingIntegerList { private int size = 0; private Node first; public AscendingInteg原创 2016-07-29 16:07:00 · 1243 阅读 · 0 评论 -
JAVA 回调实例
自己写了一个例子演示JAVA中对耗时操作的回调通知原创 2014-04-07 10:48:46 · 1145 阅读 · 0 评论 -
打印螺旋矩阵(方阵),力扣#54、#59题
闲暇之余研究了螺旋方阵的生成方式,包括顺时针螺旋(clockwise)、逆时针螺旋(anticlockwise),算法从最外层的左上角(top left)开始构造整个Spiral Matrix。class SpiralMatrix{ private int size; SpiralMatrix(){ size = 3; } SpiralMatrix(int size){ this.size = size; } ...}原创 2014-04-13 20:31:32 · 766 阅读 · 0 评论 -
Java代码65535大小限制,编译错误
单个Java方法不能超过65535字节The code of method xxx() is exceeding the 65535 bytes limit单个Java文件常量个数上限是65536Too many constants, the constant pool for XXX would exceed 65536 entries原创 2018-01-02 10:09:59 · 5414 阅读 · 0 评论 -
Tomcat采坑记录
关于编码tomcat容器运行环境有自己的默认编码,跟本地main方法测试环境的默认编码可能不一样,有时候本地测试正确的同样代码,放到tomcat容器里面就会出现中文乱码。 本地测试正常: BufferedReader br = new BufferedReader(new FileReader(“tes.txt”)); 放到tomcat里面跑发现中文乱码,解决方式: BufferedRead原创 2017-12-15 17:21:27 · 236 阅读 · 0 评论 -
Java org.json基本用法(JSONObject/JSONArray)
org.json.JSONObject//JSONObject内部封装了一个HashMap,用于存储json对象的属性名(String类型)和属性值。//JSONObject构造1JSONObject obj = new JSONObject();System.out.println(obj.toString());obj.put(&quot;100&quot;, 1);obj.put(&quot;1000&quot;原创 2017-10-30 14:32:25 · 27883 阅读 · 0 评论 -
Java读书笔记
《大型网站系统与Java中间件实践》1、对于wait/notify和notifyAll的调用都必须是在对象的synchronized块中。 2、volatile只是保证同一变量在多线程中的可见性,所以它更多是用于修饰作为开关变量的状态。 3、AtomicInteger内部通过JNI的方式使用了硬件支持的CAS指令,性能很好。...原创 2018-02-24 15:03:53 · 1420 阅读 · 0 评论 -
Java编程小知识备忘录
1、String[] split(String regex);参数是正则表达式,所以,如果分隔符是’|’或’.’的话需要进行转义处理,如: StringObj.split(“\|”);//分隔符’|’,|和.的转义处理 StringObj.split(“\.”);//分隔符’.’ String[] arr = s.split(“\s+”);//分割空白字符 需要注意的是,如果字符串开始有空白原创 2017-11-28 10:42:25 · 300 阅读 · 0 评论 -
Java多线程(一)——Thread之join()方法
线程Thread的join方法能够将调用线程挂起(暂停执行,不消耗CPU时间)直到被调用join方法的线程执行结束。 查看JDK源码发现Thread的join方法内部是通过Object.wait实现的线程同步的。 主线程开启了T1、T2、T3三个线程,如何保证T2在T1执行完后执行,T3在T2执行完后执行? public static void main(String[] args) throw原创 2017-09-11 14:35:32 · 475 阅读 · 0 评论 -
开篇: Eclipse templates/snippets的使用
开篇: Eclipse templates/snippets的使用文章目录开篇: Eclipse templates/snippets的使用TemplatesSnippets小结TemplatesEclipse使用Templates的设置路径为:Window -> Preferences -> Java -> Editor -> Templates打开Templat...原创 2019-08-12 12:14:57 · 1752 阅读 · 0 评论 -
Java snippets(1): 单例模板
public class ${class} { private static ${class} mInstance = null; private ${class}(){ } public static ${class} getInstance() { if (mInstance == null) { mInstance = getIn...原创 2019-08-12 12:32:07 · 247 阅读 · 0 评论 -
Java随机数生成的几种方式
方式一:静态方法Math.random()产生double类型的随机值,范围是[0.0d, 1.0d) public static int randValueA_0_100(){ //强制转换为int return (int)(Math.random()*101);//[0, 100]之间的整数 } public static long randValueB_0_100(){原创 2013-12-28 18:00:06 · 872 阅读 · 0 评论