
Java基础
文章平均质量分 64
weihubeats
开源框架Tlog贡献者,技术大多都源于生产实践,乐于分享.公众号:小奏技术
展开
-
jdk24即将直播发布,抢先看新特性
JDK24在并发编程、性能优化和安全增强方面提供了显著改进.不过有很多功能是实验性和预览功能,线上需要谨慎使用感兴趣的可以在23:00观看发布直播。原创 2025-03-19 09:10:29 · 859 阅读 · 0 评论 -
用了json这么久我猜你一定不知道json schema是啥
是一种用于描述 json 数据结构的语言,它可以用来定义 json 数据的类型、格式、约束等信息。本身是一个也是json数据总的来说如果需要进行json数据校验,推荐使用,它的校验结果更加简洁,使用起来更加方便在官方的对比文档中也可以看出来的功能更加全面,性能也更好,可扩展性也是非常强的同时也是目前主流的json序列化库使用的校验库。原创 2024-11-02 09:45:00 · 3373 阅读 · 0 评论 -
junit4用了这么久,来试试junit5中的参数化测试提高单测效率吧
参数化测试是junit5中的一个非常有用的特性,使用参数化测试()有如下好处代码更简洁:每个测试方法只需编写一次断言逻辑,减少了重复代码更易于维护:添加新的测试用例只需在 @ValueSource 中添加新的值,而不需要编写新的测试方法更好的可读性:测试用例和测试逻辑分离,使得测试意图更加清晰更好的测试报告:每个参数都作为单独的测试用例运行,在测试报告中可以清楚地看到每个用例的结果。junit5提供了非常多的新特性,我们推荐大家使用junit5来编写单元测试,更多junit5。原创 2024-10-22 09:45:00 · 820 阅读 · 0 评论 -
神奇的Serializable接口,为什么有时候网络传输不用实现Serializable,有时候又需要?
如果使用java原生的网络传输方式(原生序列化方式)传输java对象就需要实现接口其他的更现代化的序列化方式一般都不需要实现接口,比如jsonprotobufhessian2等等我们使用dubbo的时候默认是需要实现接口的,因为dubbo存在接口检查机制,可以通过关闭dubbo的接口检查机制来解决这个问题。原创 2024-09-17 20:05:08 · 856 阅读 · 0 评论 -
java nio FileChannel堆内堆外数据读写全流程分析及使用(附详细流程图)
这里是小奏,觉得文章不错可以关注公众号小奏技术。原创 2024-05-27 09:36:49 · 562 阅读 · 0 评论 -
java利用jdk11和jdk15新特性零依赖优雅调用GPT-4o,附golang实现对比
这里是小奏,觉得文章不错可以关注小奏技术公众号。原创 2024-05-16 09:45:00 · 506 阅读 · 1 评论 -
结合idea聊聊System.getProperty和System.getenv()的区别
总的来说主要还是用的多。主要用于启动参数的获取。当然也可以通过获取到一些系统的参数比如等但是如果是利用kubernetes进行环境变量标签传递就需要额外处理,单独使用是获取不到的。原创 2024-03-13 09:45:00 · 818 阅读 · 0 评论 -
BitSet在阿里面试和RocketMQ中的应用
简单理解就是位图,类似BitMap。用来存储二进制位的类总的来说BitSet在一些特定场景使用还是非常节省内存高效的。原创 2024-03-02 09:45:00 · 302 阅读 · 0 评论 -
OkHttp学习及简单工具类封装
OkHtt官网OkHttp github工作中需要调用三方接口,请求参数一般为json,返回结果也为json使用版本 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artif...原创 2020-03-27 10:38:57 · 495 阅读 · 0 评论 -
Java日期工具类
package com.chinagas.common.utils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateUtils { public sta...转载 2019-04-24 16:58:21 · 513 阅读 · 0 评论 -
分享一份我整理的较全面的正则脑图笔记吧
原图高清链接点击这里吧原创 2021-07-08 22:32:27 · 106 阅读 · 0 评论 -
ApplicationContextUtils
package com.zou.job.util;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlAppl...原创 2019-07-07 21:11:20 · 3219 阅读 · 0 评论 -
Java生成唯一主键
一般有时候我们需要生成唯一主键id,如果数据库是mysql我们可以使用主键自增,如果是oracle我们可以创建触发器或者序列,如果不借助数据库我们也可以在java层面自己生成唯一主键。代码如下:/* 生成唯一主键 格式:时间+随机数 */ public static synchronized String genUniqueKey() { ...原创 2019-05-10 09:39:43 · 10730 阅读 · 2 评论 -
文件上传问题(详解)
搭建好Spring MVC基本配置后 做上传文件1. 在springmvc 配置文件中配置文件上传<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- set the...原创 2018-10-16 17:12:09 · 1353 阅读 · 0 评论 -
Java MD5工具类
MD5简介为什么使用MD5MD5算法具有以下特点:1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。2、容易计算:从原数据计算出MD5值很容易。3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。MD5的作用是让大容量信息在用数字签名软件签署私...原创 2018-12-20 15:38:04 · 2226 阅读 · 0 评论 -
JAVA学习导图、思维导图
网上搜集了java的学习思维导图,分享给大家。01.Java程序设计(基础)02.Java程序设计(专题)03.客户端网页编程04.Java Web表示层技术05.Oracle06.Hibernate07.MyBATIS08.Spring还有一幅java基础知识思维导图:具体忘记从哪里找到的这么好的资料,谢谢原作者。推荐几款思维导图制作工具...转载 2019-04-10 09:56:33 · 2768 阅读 · 0 评论 -
定了,JDK 19 功能集冻结,JDK官方终于支持协程了
此外,如果示例程序中的10000被更改为1,000,000,那么该程序将提交1,000,000个任务,创建1,000,000个并发运行的虚拟线程,并且(在足够的预热之后)实现大约1,000,000任务/秒的吞吐量。如果这个程序中的任务执行一秒钟的计算(例如,对一个巨大的数组进行排序)而不仅仅是休眠,那么增加超出处理器核心数量的线程数量将无济于事,无论它们是虚拟线程还是平台线程。将尝试创建10,000个平台线程,从而创建10,000个 OS 线程,程序可能会崩溃,这取决于计算机和操作系统。.........原创 2022-08-09 10:20:44 · 2167 阅读 · 1 评论 -
面试官:HashMap都背过,我们问个LinkedList吧
文章目录类UML图核心属性构造方法内部类Node核心方法分析队头添加元素 addFirst队尾添加元素添加元素添加单个元素 add添加集合 addAll删除指定下标元素删除指定元素当队列使用添加元素获取元素栈使用入栈出栈总结参考类UML图实现了Deque、Queue接口,所以可以当(双端)队列使用实现了List接口,可以当List集合使用和ArrayList相比,没有实现RandomAccess接口。所以随机访问元素速度较慢核心属性 /** * 元素个数 */原创 2022-04-09 15:14:40 · 1690 阅读 · 0 评论 -
字节码技术 Javassist的学习使用(动态加载接口实现类,AOP原理)
文章目录官网github作用简单使用案例依赖动态生成接口的实现对方法作代理增强官网https://www.javassist.org/githubhttps://github.com/jboss-javassist/javassist作用简单来说Javassist主要用于操作Java字节码,让我们操作字节码变得简单,可以在JVM加载类文件的时候去修改它。与其他字节码编辑器不同的是Javassist提供了两个级别的API,源代码级和字节码级。如果用户使用源级 API,他们可以在不了解 Java 字原创 2021-10-24 11:50:54 · 794 阅读 · 0 评论 -
使用Jmeter进行简单的压测
文章目录下载Jmeter并运行下载运行语言切换测试创建线程组添加http接口默认属性添加http请求添加结果树添加汇总报告执行压测结果树数据汇总报告数据添加http请求头下载Jmeter并运行下载下载地址分二进制和源代码压缩包,源代码我们还需要自己编译。这里我们使用二进制的,直接解压安装运行然后进入bin目录直接运行jmetersh jmeter这里直接双击可能运行不了终端会输出这么一堆警告,然后就出现gui界面警告的意思就是不要使用GUI运行压力测试,GUI仅用于压力测试原创 2021-07-17 18:25:12 · 590 阅读 · 1 评论 -
Java 常用位运算总结
分类<<左运算符, num << 1, 相当于 num * 2>>右移运算符, num >> 1,相当于num / 2>>>无符号右移,忽略符号位,空位以0补齐^按位异或&按位与|按位或~按位非常用的一些操作乘以2运算int mulTwo ( int n ) { //计算n*2 return n << 1 ;}除以2运算int divTwo ( int n ) { //负原创 2021-07-15 20:53:06 · 296 阅读 · 0 评论 -
生产都用jdk11了,我的知识还停留在jdk8(jdk9新特性分析)
文章目录背景JDK9新特性1. Factory Methods for Collections (JEP 269)2. Optional Class Enhancements3.Stream API EnhancementstakeWhile(Predicate) 和 dropWhile(Predicate)ofNullable(T t)iterate 方法总结背景目前生产和开发中使用的jdk版本已经是11了,而自己对虽然对jdk8之后的版本看过一些博客,对新特性有一些了解,但没有全面学习过,所以今天就原创 2021-07-11 09:46:58 · 849 阅读 · 0 评论 -
Java奇淫技巧:试试导入静态方法试试
在我们每次调用一个工具类静态方法,比如阿里的json解析,大致都是这样调用的 JSON.toJSONString("test");有没有什么办法能够直接这样调用呢? toJSONString("test");直接省略掉外部类的前缀去调用方法,这样看上去是不是舒服多了,一般这种方法都是自己类调用自己内部方法才可以。这种方式如何实现呢很简单,我们将外部的静态方法导入进来即可import static com.alibaba.fastjson.JSON.toJSONString;原创 2021-06-13 13:13:27 · 1169 阅读 · 1 评论 -
guava Multimap学习
背景有时候我们可能需要这样一种数据结构,k 为 一个Object,valuse 为一个集合。如果使用jdk自带的Map。处理起来是极为不方便的,需要如何处理呢?我们来看看 Map<Integer, List<String>> map = new HashMap<>(); String[] test = {"狄仁杰", "阿离", "小卤蛋"}; for (String s : test) { // 插入原创 2021-05-27 22:34:22 · 820 阅读 · 2 评论 -
JAVA8 List<List<Integer>> list中再装一个list转成一个list
List<Integer> collect = IntStream.range(1, 10).boxed().collect(Collectors.toList()); List<Integer> collect1 = IntStream.range(10, 20).boxed().collect(Collectors.toList()); List<List<Integer>> lists = new ArrayList..原创 2020-08-21 15:59:32 · 11697 阅读 · 1 评论 -
Java 8 Stream流练习
题目和答案均来自 Java8实战题目(1) 找出2011年发生的所有交易,并按交易额排序(从低到高)。(2) 交易员都在哪些不同的城市工作过?(3) 查找所有来自于剑桥的交易员,并按姓名排序。(4) 返回所有交易员的姓名字符串,按字母顺序排序。(5) 有没有交易员是在米兰工作的?(6) 打印生活在剑桥的交易员的所有交易额。(7) 所有交易中,最高的交易额是多少?(8) 找到交易额...原创 2020-03-22 23:13:08 · 1438 阅读 · 0 评论 -
Java8使用lambda遍历集合创建线程
@Test public void testMap() { //定义一个map Map<String, Integer> map = new HashMap<>(); map.put("阿离", 13888); map.put("韩信", 18888); map.put("李白", 88...原创 2019-11-29 14:19:14 · 1619 阅读 · 0 评论 -
java反射详解
1. 什么是反射:Java Reflaction in Action中的解释:反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变。通俗的讲就是反射可以在运行时根据指定的类名获得类的信息个人理解:就是我们对于创建对象我们除了通过 new关键字创建外,还能通过什么创建呢?private的属属性真的不能获取吗?反射就能做到打破这些所谓的规则反射和new创建对象谁的效率高?...原创 2019-10-27 00:43:53 · 548 阅读 · 0 评论 -
浅谈String是不可变的,那么String s = "aaa",为什么同样可以执行 s = "bbb"
什么是不可变对象?众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。问题: String s = "A...原创 2018-11-04 10:27:47 · 895 阅读 · 0 评论 -
JAVA字符串如何转换成数字(详解)
1.如果是纯数字字符串如 :“123456”则可以用一下方法:int number = Integer.valueOf("123456");2. 如果是单个字符或者字符串则需要先切开转换为char字符再转换 不然像上面直接转化会空指针异常 String a = "ABC"; //将String对象中的每一个下标位的对象保存在数组中 char...原创 2018-08-16 20:18:52 · 81127 阅读 · 2 评论 -
JAVA I O 通过服务器传输文件(简单的)
服务器代码public class Server { static String homePath = System.getProperty("user.dir"); static String filePath = homePath + File.separator + "bb.txt"; public static void main(String[] args) throws I...原创 2018-07-27 20:46:24 · 595 阅读 · 0 评论 -
JAVA简单的I O流聊天程序 无线程
服务器: public class Server2 { public static final int PORT = 10001; public static void main(String[] args) throws Exception { System.out.println("server start....."); ServerSocket ss = new Se...原创 2018-07-27 10:42:17 · 236 阅读 · 0 评论 -
JAVA I 0流 copy文档的几种方式
第一种 :不用缓冲,用BufferedReader 和BufferedWriterpublic class TextPath { public static void main(String[] args) throws Exception { //.获取当前工程文件路径,separator连接工程路径与abc.txt路径 File file = new File("." + Fi...原创 2018-07-25 21:27:42 · 236 阅读 · 0 评论 -
Scanner中 next 和nextLine的区别
测试代码public class Text { public static void main(String[] args) { Scanner input = new Scanner(System.in); String s = input.nextLine(); System.out.println(s); s = input.next(); Syste...原创 2018-07-25 21:05:14 · 370 阅读 · 0 评论 -
JAVA写一个简单的泛型方法比较Stirng、StringBuffer、StringBuilder处理字符串效率
public class Test { public static void main(String[] args) { System.out.println("String处理需要的时间 :" + testTime("abc")); System.out.println("StringBuffer处理需要的时间:" + testTime(new StringBuffer("abc")...原创 2018-07-24 19:16:04 · 458 阅读 · 0 评论 -
文件File中list()和listFile()方法的区别
测试代码如下public class TextPath { public static void main(String[] args) { File file = new File("."); String[] list = file.list(); for (String it : list) { System.out.print(it + " "); } ...原创 2018-07-25 20:07:47 · 7024 阅读 · 0 评论 -
String常用方法总结
都知道字符串在项目中用到的非常多,也非常灵活,所以今天就总结了一些项目中常用的字符串方法文章目录toLowerCasesubStringsplittoLowerCasetoLowerCasetoLowerCases是将String中的大写全部转化为小写,小写则不改变,具体事例如下: String s = &quot;MY NaMe Is Tom&quot;; System.o...原创 2018-12-18 19:07:50 · 578 阅读 · 0 评论 -
String s=new String(“abc“) 创建了几个对象(详解)
String s=new String("abc");首先我们来详细分析这条语句:String s , 这个语句声明一个类String的引用变量 s [我们常常称之为句柄],而对象一般通过new创建。所以题目中s仅仅是一个引用变量,它不是对象。new String(), 这里是通过new创建了一个String对象,放在heap(堆)中而“abc”呢,也是一个对象,不同的是放在pool...原创 2019-01-10 15:43:11 · 15286 阅读 · 7 评论 -
Map遍历的四种方式
1. for each 遍历原创 2019-07-21 23:26:53 · 548 阅读 · 0 评论 -
Java笔试题(附带详细知识点,持续更新)
java基础以下正确的是 (A)A. long l = 1024 B. float f = 2.0; C. int i = 8L; D. short s = 123456;解析:类型转换规则: 大转小,需要强制转换;小转大,直接转...原创 2019-06-24 22:51:15 · 695 阅读 · 0 评论