![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 70
Java实用技巧
土味儿~
这个作者很懒,什么都没留下…
展开
-
SpringBoot中java操作excel【EasyExcel】
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;原创 2023-07-24 18:47:10 · 2769 阅读 · 0 评论 -
限流与令牌桶
令牌桶是一种常用的流量控制技术。令牌桶本身没有丢弃和优先级策略。原理1.令牌以一定的速率放入桶中。2.每个令牌允许源发送一定数量的比特。3.发送一个包,流量调节器就要从桶中删除与包大小相等的令牌数。4.如果没有足够的令牌发送包,这个包就会等待直到有足够的令牌(在整形器的情况下)或者包被丢弃,也有可能被标记更低的DSCP(在策略者的情况下)。5.桶有特定的容量,如果桶已经满了,新加入的令牌就会被丢弃。因此,在任何时候,源发送到网络上的最大突发数据量与桶的大小成比例。原创 2023-06-14 20:03:42 · 952 阅读 · 0 评论 -
java生成、识别条形码和二维码
使用zxing开源库BitMatrix可以生成、识别条形码和二维码依赖原创 2023-06-10 12:31:36 · 1651 阅读 · 1 评论 -
Java枚举详解与应用场景
本例和上例的执行结果完全相同。原创 2023-05-26 10:20:54 · 1675 阅读 · 0 评论 -
详解java中的日期与时间;新旧API对比;各种日期格式转换
API所在包主要类旧java.util新(Java1.8)java.time从Java 8开始,java.time包提供了新的日期和时间API,主要涉及的类型有:LocalDateLocalTime;;Instant;DurationPeriod可以取代旧的 SimpleDateFormat区别可变性final非final多线程线程安全线程非安全新特性新API严格区分了时刻、本地日期、本地时间和带时区的日期时间。原创 2023-05-19 09:55:31 · 1539 阅读 · 0 评论 -
Java字符串知多少:String、StringBuffer、StringBuilder
上的,但是又因 String 常量池的存在,因此实际上在堆上的 String 对象的数据又指向了字符串常量池。Java 程序在运行的时候会维护着一个常量池,编译期生成的各种字面量和符号引用会在类加载后进入方法区的。对于上述这种实现字符串的方式就可以在编译的时候确定字符串的内容,因此这一行生成的内存结构就如下图。的时候才能确定字符串的内容。不严谨的讲:虚拟机栈中的 strNew 存储的就是 strNew 这个对象在。,而 strNew 中的字符串数据又指向了常量池中的 A。,在jvm堆内是惟一的。原创 2023-05-17 09:33:32 · 759 阅读 · 0 评论 -
ThreadLocal实现共享变量的线程安全
类型为ThreadLoclal的参数n2,存取都通过ThreadLocal,实现线程间的隔离,从而达到线程安全。针对上面2中的线程不安全情况,采用ThreadLocal,可以让共享变量实现线程隔离,从而达到线程安全。单例对象,多个线程操作同一个对象,并且该对象有共享变量,对象中方法会对共享变量做出修改。多线程下,操作同一个MyUtil对象时,变量n1是不安全的。如:MyUtil中增加变量n2。原创 2023-05-07 12:34:41 · 268 阅读 · 0 评论 -
Comparable与Comparator
两种方法各有优劣Comparable 简单,只要实现Comparable 接口的对象直接就成为可以比较的对象,但是需要修改源代码Comparator 的好处是不需要修改源代码,而是另外实现一个比较器,当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了, 并且在Comparator 里面用户可以自己实现复杂的可以通用的逻辑,使其可以匹配一些比较简单的对象,那样就可以节省很多重复劳动了。原创 2023-05-06 09:37:30 · 226 阅读 · 0 评论 -
【java金额输入转换】任意字符串转为Long型金额(单位:分)
【代码】【java金额输入转换】任意字符串转为Long型金额(单位:分)原创 2022-11-07 12:32:22 · 972 阅读 · 0 评论 -
Java复制文件和目录
【代码】Java复制文件和目录。原创 2022-10-19 17:04:02 · 293 阅读 · 0 评论 -
两个坑:Integer对象比较,MySql中in()、not in()为空
早就在阿里规约里了解过,但真在项目中遇到时,排查花了很长时间。真是一个大坑。所有整型包装类对象之间值的比较,全部使用equals()方法。原创 2022-09-07 20:06:53 · 814 阅读 · 0 评论 -
Java中Stream流式实现集合的差集、交集与并集
Stream流式计算集合的差集、交集与并集;根据集合元素的某一属性判断;原创 2022-07-12 11:16:05 · 7587 阅读 · 0 评论 -
Collection 集合的交集、差集和并集
Collection集合的交集、差集、并集原创 2022-06-16 15:48:44 · 1196 阅读 · 0 评论 -
Thumbnailator图像处理
功能:实现对图片压缩、旋转、缩放、裁剪、加水印原创 2022-06-13 16:59:08 · 752 阅读 · 0 评论 -
Java mail 邮件发送 详细实现步骤
邮件发送1)导包mail.jaractivation.jar <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> </dependency><!--原创 2021-12-24 12:32:47 · 1150 阅读 · 0 评论 -
JavaWeb深入剖析
1、基本概念1.1、静态web1.2、动态web2、web服务器lISTomcat3、Tomcattomcat的默认端口号为:8080mysql:3306http:80https:4434、Http4.1、概念Http:(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上;端口:80Https:安全的超文本传输协议;端口:4434.2、两个时代http1.0HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接原创 2021-12-22 13:12:56 · 548 阅读 · 0 评论 -
Java文件上传与下载
1、文件上传1)导包 <!--文件上传包--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </原创 2021-12-22 13:04:06 · 681 阅读 · 0 评论 -
狂神 原生JavaWeb 三层架构 JDBC (超市订单管理系统smbms)---【优化版】
1、项目分析1.1、功能分析1.2、数据库2、环境搭建1)搭建 maven web 项目更新web.xml为新版<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation原创 2021-12-21 18:05:05 · 1464 阅读 · 2 评论 -
Java NIO网络编程深入剖析【尚硅谷】
1、概述Java NIO(New IO 或 Non Blocking IO)是从 Java 1.4 版本开始引入的一个新的IO API,可以替代标准的 Java IO API。NIO 支持面向缓冲区的、基于通道的 IO 操作。NIO 将以更加高效的方式进行文件的读写操作。1)阻塞IO通常在进行同步 I/O 操作时,如果读取数据,代码会阻塞直至有可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的 Server/Client 模式会基于 TPR(Thread per Request),服务器会原创 2021-12-06 21:15:12 · 1134 阅读 · 1 评论 -
Java集合深入剖析【韩顺平老师版】
1、集合体系1.1、为什么使用集合?1、数组的不足长度固定,不能更改存储的必须是同一类型的元素(基本类型或引用类型)增加、删除元素比较麻烦2、集合的优势长度可变,可以动态保存任意多个对象可以存不同类型的元素(必须是引用类型,不能是基本类型:int、long…(基本类型数据会自动装箱成对象))操作对象方便:add、remove、set、get等3、区别比较数组集合长度长度固定,不能更改长度可变,可以动态保存任意多个对象存储元素同一类型(基本类原创 2021-11-27 13:11:55 · 1469 阅读 · 2 评论 -
Java集合知识体系【思维导图】
1、总览2、概述3、java.util1)Iterator迭代器2)Collection接口(1)List接口(2)Set接口3)Map接口4)工具类原创 2021-11-27 12:49:20 · 877 阅读 · 3 评论 -
Java泛型概述
1、什么是泛型?1)概念Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许我们在编译时检测到非法的类型数据结构。泛型的本质就是参数化类型,也就是所操作的数据类型被指定为一个参数2)好处编译期间进行类型检查。类型安全消除了强制类型的转换3)类型E - Element (在集合中使用,因为集合中存放的是元素)T - Type(表示Java 类,包括基本的类和我们自定义的类)K - Key(表示键,比如Map中的key)V - Va原创 2021-11-26 09:34:17 · 1696 阅读 · 0 评论 -
JUnit单元测试概述
1、简介单元测试就是针对最小的功能单元编写测试代码。Java程序最小的功能单元是方法,因此,对Java程序进行单元测试就是针对单个Java方法的测试。测试驱动开发(Test-Driven Development)所谓测试驱动开发,是指先编写接口,紧接着编写测试。编写完测试后,我们才开始真正编写实现代码。在编写实现代码的过程中,一边写,一边测,什么时候测试全部通过了,那就表示编写的实现完成了2、JUnitJUnit是一个开源的Java语言的单元测试框架,专门针对Java设计原创 2021-11-26 08:58:31 · 450 阅读 · 0 评论 -
Java网络编程快速入门【狂神篇】
1、网络编程的目的无线电台。。。。传播交流信息、数据交换、通信想要达到这个效果需要什么:如何准确的定位网络上的一台主机 ip地址 端口,定位到这个计算机上的某个资源找到了这个主机,如何传输数据Javaweb: 网页编程 B/s网络编程:TCP/IP C/S2、网络通信的要素如何实现网络的通信?通信双方地址:IP端口号192.168.16.124::5900规则:网络通信的协议TCP/IP小结:网络编程中有两个主要的问题如何准确的定位到网络上的一台或多原创 2021-11-25 11:47:41 · 1628 阅读 · 0 评论 -
Java编码/加密/解密/安全
1、编码与解码资料:http://www.crifan.com/files/doc/docbook/char_encoding/release/html/char_encoding.html#enc_iso8859B站黑马程序员视频讲解:https://www.bilibili.com/video/BV1HJ411E7d3?from=search&seid=107651053631562639331.1、介绍编码按适用范围可以简单分为:美国编码(ASCII)ASCII为原创 2021-11-24 16:46:11 · 997 阅读 · 1 评论 -
Java反射深入剖析【韩顺平老师版】
一、快速入门应用场景通过配置文件,创建类,并调用方法配置文件 ref.propertiesclassName = reflection.Catmethod = sleepProperties properties = new Properties();ClassPathResource classPathResource = new ClassPathResource("ref.properties");InputStream inputStream = classPathRe原创 2021-11-24 11:56:44 · 654 阅读 · 0 评论 -
Java注解定义及用法
一、什么是注解Annotation是从 JDK5.0 开始引入的新技术Annotation的作用 :不是程序本身,可以对程序作出解释。这一点和注释(comment)没什么区别可以被其他程序 (比如:编译器等) 读取Annotation的格式:注解是以 @注释名 在代码中存在的, 还可以添加一些参数值,例如:@SuppressWarnings(value=“unchecked”)Annotation在哪里使用?可以附加在package , class , method原创 2021-11-22 17:21:32 · 1363 阅读 · 0 评论 -
Java-BIO深入剖析【韩顺平老师版】
1、文件/目录 File文件就是保存数据的地方比如:word文档,txt文件,excel文件…文件内容可以是图片、视频、声音…1)文件流文件在程序中是以流的形式来操作的流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源(文件)的路径2)创建文件File步骤:1、定义File对象(多种方式)只相当于在内存中创建了File对象2、调用File对象的createNewFile()真正把原创 2021-11-22 11:59:50 · 414 阅读 · 0 评论 -
JVM探究【狂神篇-快速入门】
JVM探究内容JVM的位置JVM的体系结构类加载器双亲委派机制沙箱安全机制NativePC寄存器方法区栈三种JVM堆新生区,老年区永久区堆内存调优GC常用算法JMM总结1、JVM位置A为java程序,jre包含jvm,建立在操作系统上,再建立在硬件体系上2、JVM体系结构堆中可能有垃圾,栈中不会有。因为main一进来压到最低,如果有垃圾,则代码无法结束。所以真正的垃圾在堆中,方法区属于 特殊的堆,所以也有。那所谓的JVM调优99%就是在堆中调原创 2021-11-15 18:09:41 · 870 阅读 · 0 评论 -
comparator接口与Comparable接口的区别
1、相同点都是java的一个接口, 并且是用来对自定义的class比较大小的什么是自定义class?public class Person{ String name; int age;}当有这么一个personList,里面包含了person1, person2, persion3…用Collections.sort( personList ),是得不到预期的结果的那为什么可以排序一个字符串list呢?如 StringList{“hello1” , “hello3”原创 2021-10-09 09:54:25 · 69 阅读 · 0 评论 -
Java外部类可以访问内部类所有变量,包括private
// 外部类class Outer{ // 私有内部类 private class Inner{ private int number=5; } // 调用内部类的私有变量 public int getNumber(){ return new Inner().number; }}public class Hello { public static void main(String[] args){原创 2021-09-11 15:32:40 · 1075 阅读 · 0 评论 -
【JUC 四】单例模式 CAS Unsafe ABA 原子引用 公平锁 非公平锁 可重入锁 (递归锁) 自旋锁 死锁...
目录17、单例模式1)饿汉式2)懒汉式3)DCL 懒汉式 (推荐)4)静态内部类 (推荐)5)单例不安全 (反射)1、一个原生,一个反射生成2、两个都反射生成3、防止反射破坏单例模式终极方案:枚举6)枚举最终反编译代码1、枚举类2、反编译查看源码3、最终源代码4、调用有参构造器破解枚举类5、总结18、深入理解CAS1)什么是CAS ?2)Unsafe类3)ABA 问题19、原子引用20、各种锁的...原创 2021-07-27 12:34:00 · 179 阅读 · 0 评论 -
【JUC 三】JDK1.8部分新特性 分支合并ForkJoin 异步调用 JMM Volatile
目录12、JDK1.8 部分新特性一、四大函数式接口(必需掌握)1、常规接口 Function2、断定型接口 Predicate3、供给型接口 Supplier4、消费型接口 Consumer5、区别二、Stream 流式计算13、分支合并 ForkJoin1、什么是ForkJoin?2、ForkJoin特点3、类/接口 关系图4、ForkJoinPool5、ForkJoinTask6、示例14...原创 2021-07-27 12:30:00 · 328 阅读 · 0 评论 -
一张图弄懂String的equals()方法比较流程!建议收藏!
源码 1 //equals方法源码 2 public boolean equals(Object anObject) { 3 //判断是否是相同对象 4 if (this == anObject) { 5 return true; 6 } 7 //判断anObject是否是String类型 8 if (anObjec...原创 2021-06-14 21:17:00 · 287 阅读 · 0 评论 -
【图解】Java取整函数ceil、floor、round的区别
废话不多说,先上图:ceil()字面意思:天花板向上取整返回类型:double适用于分页程序中计算总页数floor()字面意思:地板向下取整返回类型:doubleround()字面意思:四周、环绕(四舍五入)加0.5后,再向下取整返回类型:long...原创 2021-06-14 21:21:00 · 295 阅读 · 0 评论 -
一张图理清计算机常见编码的关系。ASCII、Unicode都不是事儿
编码按适用范围可以简单分为:(本人自定义)美国编码(ASCII)ASCII为基础编码,来源于美国;其它编码都兼容ASCII编码;欧盟编码(ISO8859-1、WINDOWS-1252)先是ISO-8858-1,后升级为WINDOWS-1252。两者互不兼容。中华编码(GB2312、GBK、GB18030)先是GB2312,接着GBK,最后是GB18030。字符数量依...原创 2021-06-18 09:58:00 · 288 阅读 · 0 评论 -
面对庞杂的集合List、Set、Map,如何选择?一张图详细讲解!
单列数据 Collection可以重复 List查改多 ArrayList增删多 LinkedList线程安全 Vector不可重复 Set存取顺序不同 HashSet存取顺序相同 LinkedHashSet需要排序 TreeSet双列数据 Map存取顺序不同 HashMap存取顺序相同 LinkedHashMap需要排序 TreeMap读取文件 Properties...原创 2021-06-23 13:31:00 · 185 阅读 · 0 评论 -
Java中获得日期时间的8种方法
编号途径代码说明建议1java.util.Datenew Date()Date对象少用2SystemSystem.currentTimeMillis()时间戳常用3java.util.CalendarCalendar.getInstance().getTime()Date升级版较常用4java.time.LocalDateLocalDat...原创 2021-07-09 11:11:00 · 1242 阅读 · 0 评论 -
Java 中生成一组不重复随机整数的简便方法
实现原理利用 Set 集合不能存放重复元素的特性package util;import java.util.HashSet;import java.util.Random;import java.util.Set;/** * @author ajun * Date 2021/7/14 * @version 1.0 * 工具类 */public class MyUit...原创 2021-07-14 13:57:00 · 650 阅读 · 0 评论 -
【多线程基础】线程状态 同步 协作 线程池 Lambda表达式
目录一、基本概念二、线程创建1、继承 Thread 类1.1、实现步骤1.2、start 和 run 方法的区别?1.3、多线程下载图片案例2、实现 Runnable 接口 (推荐)2.1、实现步骤2.2、龟兔赛跑3、实现 Callable 接口 (了解)3.1、步骤3.2、改造多线程下载图片案例三、Lambda表达式 (箭头函数)1、介绍2、函数式接口3、示例3.1、定义接口3.2、传统实现类...原创 2021-07-27 10:37:00 · 225 阅读 · 0 评论