JavaSE
思想永无止境
这个作者很懒,什么都没留下…
展开
-
若依项目名、包名修改器
【代码】若依项目名、包名修改器。原创 2024-04-04 19:40:40 · 1083 阅读 · 0 评论 -
Java获取Mac地址、Java获取文件SHA512
【代码】Java获取Mac地址、Java获取文件SHA512。原创 2024-04-02 16:32:39 · 204 阅读 · 0 评论 -
java使用ws.schild.jave将视频转成mp4
【代码】java使用ws.schild.jave将视频转成mp4。原创 2024-03-13 17:39:34 · 756 阅读 · 0 评论 -
根据提供的两个经纬度计算距离(米)
【代码】根据提供的两个经纬度计算距离(米)原创 2023-11-04 10:06:47 · 142 阅读 · 0 评论 -
Files.write问题
Files.write原创 2023-04-22 10:06:12 · 583 阅读 · 0 评论 -
google翻译
【代码】google翻译。原创 2023-04-14 19:00:49 · 267 阅读 · 0 评论 -
java、javascript匹配邮箱正则表达式
【代码】java、javascript匹配邮箱正则表达式。原创 2022-11-30 09:44:43 · 487 阅读 · 0 评论 -
为什么我强烈反对使用ResourceBundle
虽然网上告诉你手动转成Unicode就能解决,但我想告诉你的是,千万别这么干!因为这样的代码太丑陋了!内容看不懂,难维护,而且每次修改都得转一遍。原创 2022-10-24 20:34:31 · 146 阅读 · 0 评论 -
为什么我反对用Lambda替代匿名内部类
对于一个不熟悉的接口,肯定需要点进行看下接口声明(参数类型和返回值类型)啊!而且点进去看完了还得alt+左移键两次返回来,切来切去很好玩?哪怕就是进去看MyCall.call的方法注释,匿名内部类也只需要ctrl+鼠标(open super impl)就可以看到了。看看这,多清晰明了,一目了然,哪里需要按什么ctrl+鼠标点进去才能知道方法声明呢?,因为IDE上你new MyCall敲出来之后,其他代码IDE自动会帮你实现,不就比匿名内部类少了两行代码吗?就为了少两行代码,阅读时花费的时间起码翻了3倍。原创 2022-09-17 00:08:43 · 87 阅读 · 0 评论 -
Java定位问题线程
3.将CPU占有率高的线程号转换为16进制(因为后面的jstack里的线程号是16进制);6.从打印的信息中,找到第2步得到的线程号,看看这个线程在做什么。5.使用jstack [进程号] 打印当前的进程堆栈;不一定一次就能抓准线程状态,可以第2步时多看几个线程。1.通过top命令,查看CPU使用率高的进程;4.使用jps查看服务器的Java进程号;2.通过top获取的pid,使用。...............原创 2022-08-11 01:23:50 · 1149 阅读 · 0 评论 -
Java CompletableFuture 并发编程
CompletableFuture 在 Java 里面被用于异步编程,异步通常意味着非阻塞,可以使得我们的任务单独运行在与主线程分离的其他线程中,并且通过回调可以在主线程中得到异步任务的执行状态,是否完成,和是否异常等信息。CompletableFuture 实现了 Future, CompletionStage 接口,实现了 Future接口就可以兼容现在有线程池框架,而 CompletionStage 接口才是异步编程。...原创 2022-08-11 01:05:11 · 1162 阅读 · 0 评论 -
Java Fork/Join 并发编程
Fork 方法的实现原理: 当我们调用 ForkJoinTask 的 fork 方法时,程序会把。anyOf: 只要在多个 future 里面有一个返回,整个任务就可以结束,而不需要等到每一个。交到线程池里面,然后我们会得到一个 Futrue,在 Future 里面有 isDone 方。比如我们有 10 个 Future 并行执行,我们想在所有的 Future 运行完毕之后,对于 Future 的执行结果,我们想继续传到下一个 Future 处理使用,从而形成。......原创 2022-08-10 23:21:11 · 342 阅读 · 0 评论 -
Java之线程状态
6.Terminated/被终止(死亡),Java没有可直接终止一个线程的方法(stop已经被申明过时不允许使用了,interrrupt方法只是请求中断,不是一定可以中断一个线程),所以只有在程序自然结束或抛出了一个没有捕获的异常时,线程才会进入被终止状态。5.Timed waiting/记时等待(阻塞),进入该状态的条件和进入等待状态的条件相同,不过此状态能在指定的时间之后苏醒,所以又有别于等待状态,Thread.sleep(long)和Object.wait(long)方法会使线程进入计时等待状态。..原创 2022-08-08 18:44:05 · 314 阅读 · 0 评论 -
线程池七大参数的含义
当线程的数量大于corePoolSize,这是多余空闲线程的最大存活时间,当空间时间达到keepAliveTime值时,多余的线程会被销毁并等待新任务。DiscardOldestPolicy,如果线程池没有关闭,那么丢弃队列中最老的任务,并执行新任务。如果线程池已经关闭,那么直接被丢弃任务。CallerRunsPolicy,如果线程池没有关闭,在调用者的线程中执行任务。线程池中线程数小于corePoolSize时,新任务将创建一个新线程执行任务,不论此时线程池中是否存在空闲线程。...原创 2022-08-08 09:45:00 · 790 阅读 · 0 评论 -
ThreadLocal详解
ThreadLocal究竟是什么?原创 2022-08-02 15:50:42 · 134 阅读 · 0 评论 -
线程里开启线程,线程里又开启线程,最原始的线程关闭后,后面的线程能否运行?
线程里开启线程,线程里又开启线程,最原始的线程关闭后,后面的线程能否运行?原创 2022-08-02 15:18:10 · 1933 阅读 · 0 评论 -
java程序员自己的图片转文字OCR识图工具
只需三个文件,你就能自己开发一个OCR工具原创 2022-07-22 05:45:03 · 2349 阅读 · 0 评论 -
事实证明volatile对可见性并没有影响
不添加volatile测试可见性未添加volatile测试代码:public class Test { int i=10; public void add() { System.out.println("add========================"+(i=i+10)); } public static void main(String[] args) throws InterruptedException { final Test obj=new Test(); new原创 2022-02-16 15:15:09 · 441 阅读 · 11 评论 -
判断一个字符串是否被base64加密过
public static boolean isBase64(String str) { if (Utils.isEmptyTrim(str)) { return false; } String base64Pattern = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$"; boolean matches = Pattern.matches(base64Pattern, s.原创 2020-11-04 15:18:20 · 2645 阅读 · 2 评论 -
工厂模式的作用,为什么要用工厂模式
封装了new的代码,将调用者与被调用者的关系由强耦合变成弱耦合。复杂对象创建对象时代码量过多,封装之后提供代码的重用性。原创 2020-07-11 11:18:52 · 255 阅读 · 0 评论 -
Java多线程与并发编程终极宝典
synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢?如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁会有三种情况:1)获取锁的线程执行完了该代码块,然后线程释放对锁的占有;2)线程执行发生异常,此时JVM会让线程自动释放锁。3)这个主要是在等待唤醒机制里面的wait()方法,//在等待的时候立即释放锁,方便其他的线程使用锁。而原创 2020-07-11 11:00:06 · 678 阅读 · 0 评论 -
Java代码优化
类名、方法名、变量名需要使用全英文,尽量不要使用缩写和拼音合理的命名可以替代注释,提高可读性。单个类文件和单个方法的代码不要过多不要一个方法上千行,也不要每个方法只有2行,然后a方法调b方法,b方法调c方法这样跳来跳去。要合理设计,不要左倾也不要右倾。添加必要的注释注释不要过多也不能过少不要每一行都加个注释无关紧要的代码尽量不加注释关键的代码尽量加注释有特殊处理的一定要加注释合理的命名可以替代注释,提高阅读性,提高维护性。使用新版本jdk时,在合适的情况下,应该尽量使用它的新特性如原创 2020-07-11 10:44:03 · 237 阅读 · 0 评论 -
使用原生java mail发送邮件
import java.io.File;import java.util.Date;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.Message.RecipientType;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax原创 2020-07-11 09:36:01 · 269 阅读 · 0 评论 -
poi读取excel
poi读取excelWorkbook workbook = WorkbookFactory.create(InputStream);poi写出excelworkbook.write(OutputStream);poi获取行数sheet.getLastRowNum()+1poi获取列数sheet.getRow(0).getPhysicalNumberOfCells()poi获取单元格值public Object getCellValue(Cell cell) { if (cell ==原创 2020-07-11 09:26:53 · 525 阅读 · 0 评论 -
Java压缩和解压并获取进度
import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.I原创 2020-07-08 09:25:57 · 2626 阅读 · 1 评论 -
StandardOpenOption详解
package java.nio.file;/** * Defines the standard open options. * * @since 1.7 */public enum StandardOpenOption implements OpenOption { /** * Open for read access. * 读取一个已存在的文件,如果文件不存在或被占用则抛出异常 */ READ, /** * Open fo原创 2020-06-29 11:55:47 · 4150 阅读 · 0 评论 -
不要用InputStream或BufferedInputStream去读取中文
读含有中文的文本文件一定要用Reader或BufferedReader因为InputStream是字节流,读取的字节需要自己组装成字符串,自己组装字符串没问题,使用new String(待组装的字节数组, 开始位置, 结束位置,字符编码)即可。但有个大问题,在使用InputStream读取字节时,因为不知道文件到底有多大,所以不能一起性读取,所以每次都是读取固定字节的长度的,也就是...原创 2020-01-10 16:14:33 · 1286 阅读 · 0 评论 -
net.sf.json java对象转json时,忽略值为null的属性,格式化Date对象
import java.util.Arrays;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import net.sf.json.JsonConfig;import net.sf.json.processors.JsonValueProcessor;import net.sf.json.util.Propert...原创 2020-01-08 16:05:21 · 2827 阅读 · 0 评论 -
class.getResourceAsStream用法
getResourceAsStream方法的参数,如果最前面是正斜杆/,那么则从项目根目录开始查找,注意是项目根目录不是磁盘根目录。用法为:App.class.getResourceAsStream("/com/xqxx/lncms/app.txt"),App这个类可以任意替换成其他类,对结果没有影响,因为都是从根目录开始查找。如果不加正斜杆/,那么则从该方法的调用者class所在的目录查...原创 2019-12-17 11:55:19 · 2990 阅读 · 0 评论 -
dom4j setText字符转义、输出换行空格、字符串索引越界错误问题
dom4j在setText时会把<和>这样的xml关键字进行转义。如果不想转义,可以将XMLWriter的escapeText属性设置为false。dom4j在输出xml文件时,会将text里的换行和空格符去掉,如果不想去掉,可以将OutputFormat的trimText属性设置为false。dom4j在输出xml文件时,如果有Element曾经调用...原创 2019-12-15 15:53:04 · 2345 阅读 · 2 评论 -
java行转列,列转行,二维数据x轴y轴互换
/** * 将二维数据进行x轴与y轴互换 * * @param list * @return */ public static <T> List<List<T>> rowToCol(List<List<T>> list) { if (Utils.isEmpty(list)) { return list;...原创 2019-12-07 02:07:38 · 2354 阅读 · 0 评论 -
java String的contains和replace匹配不一致
代码: String s="@Param(\"list\")"; System.out.println(s.contains(s)); System.out.println(s.contains("@Param\\(\"list\"\\)")); System.out.println(s.replaceAll(s,"AAA")); System.out.println(s.re...原创 2019-12-06 23:37:34 · 515 阅读 · 0 评论 -
Java基础知识
JDK、JRE、JVMJDK是Java Development Kit 的简称,java 开发工具包,提供了 java 的开发和运行环境,编译器、调试和分析工具等。jdk包含jre。JRE是Java Runtime Environment 的简称,java 运行时环境,为 java 程序的运行提供了所需环境。jre包含jvm。JVM是Java Virtual Machine的简称,java虚......原创 2019-11-24 19:27:23 · 1263 阅读 · 0 评论 -
JVM参数
java启动参数共分为三类其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;标准参数中比较有用的:verbose-verbose:class...转载 2019-11-24 12:30:12 · 159 阅读 · 0 评论 -
java打印菱形
菱形就是两个等边三角形,所以只需要打印上下两个等边三角形即可。打印等边三角形其实就是打印一个空白三角形和一个左右等边的实心三角形。上半部区域的空格三角形的的列数随行数递减,下半部区域的空格三角形的的列数随行数递增。上半部区域的实心三角形的列数等于打印空白后剩余的列数乘以2,下半部区域的空格三角形的的列数也等于打印空白后剩余的列数乘以2。乘以2是为了打印等边效果,减1是为了控制第一行...原创 2019-11-20 13:20:03 · 645 阅读 · 0 评论 -
如何在多线程下使用List和HashMap
Collections.synchronizedList//将List对象转成线程安全的Collections.synchronizedMap//将Map对象转成线程安全的原创 2019-07-18 20:00:30 · 671 阅读 · 0 评论 -
Java获取泛型的类型
/* * 获取泛型类Class对象,不是泛型类则返回null */ public static Class<?> getActualTypeArgument(Class<?> clazz) { Class<?> entitiClass = null; Type genericSuperclass = clazz.getGenericSuperc...转载 2019-06-23 12:15:13 · 4589 阅读 · 0 评论 -
系统找不到文件 C:\ProgramData\Oracle\Java\javapath\java.exe
java装好了,环境变量配置好了,但cmd输入java仍然显示:系统找不到文件 C:\ProgramData\Oracle\Java\javapath\java.exe解决办法: 删除C:\ProgramData\Oracle\Java\javapath目录下的三个文件:java.exe、javaw.exe、javaws.exe...原创 2018-09-06 22:33:41 · 1861 阅读 · 5 评论 -
将天数转x年x月x天
Java版本: int daycount=70;//天数 int year=daycount/365; int month=(daycount-(year*365))/30; int day=daycount-(year*365)-(month*30); String java=year+"年"+month+"月"+...原创 2018-03-25 16:15:16 · 1256 阅读 · 1 评论 -
Java常用设计模式
1.单例模式 2.mvc模式,这是个分层的设计,参考struts、struts2、springmvc 3.装饰模式,参考java装饰流 4.动态代理模式,参考spring aop 5.抽象工厂模式,参考java解析xml技术、srping的ioc 6.桥接模式,参考jdbc 7.观察者模式,参考swing事件派发...原创 2018-03-25 15:50:38 · 158 阅读 · 0 评论