
java
文章平均质量分 53
Eme丶
微信
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Struts2表单提交404问题记录
3月29日遇到表单提交,报404错误问题,各种struts和action配置文件检查了好久都没发现问题,后来发现是form表单写的action多了/。成功调用action里的方法。原创 2023-03-29 11:16:44 · 230 阅读 · 0 评论 -
InputStream和String互转记录
InputStream转String public static String inputStreamToString(InputStream is) { byte[] bytes = new byte[1024 * 4]; try { is.read(bytes); } catch (IOException e) { log.error(e); } re原创 2021-07-22 11:27:18 · 100 阅读 · 0 评论 -
Java获取当前项目的路径记录
方式1 String projectPath = System.getProperty("user.dir"); System.out.println("projectPath==" + projectPath);方式2try { String projectPath = new File("").getCanonicalPath(); System.out.println("projectPath==" + projectPath);原创 2021-07-20 09:26:29 · 259 阅读 · 0 评论 -
Java运行时数据区
1. Java运行时数据区2. 解析程序计数器节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成。由于jvm的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。因此未来线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,我们成这类内存区域为“线程私有”的内存。如果线程正在执行的是一个Java方法,这个计数器记录的则是正在执行的虚拟机字原创 2021-07-15 11:00:35 · 85 阅读 · 0 评论 -
Java程序朗读文字的实现,jacob.jar
目的使用Java程序实现朗读文字。依赖jacob.jar(我的是\jacob-1.18)这个可以用Maven去下载,在dependencies节点下增加如下内容:<!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字转语音 --> <dependency> <groupId>com.hynnet</groupId> <原创 2021-07-14 10:06:30 · 2128 阅读 · 0 评论 -
探讨ThreadLocal使用完remove与否的差别(内存泄漏)
1. 问题这次我们就是想要探讨一下ThreadLocal使用完不remove数据和remove数据的差别是什么?是否会存在内存泄漏?那我们应该怎样制造怎样测试的环境呢?我是这样制造测试环境的:使用Tomcat服务,但是Tomcat的nio线程限制在1个,我的是Spring Boot配置起来很简单只需要在application.properties增加一行,外带的Tomcat可以自行百度一下。如下:server.tomcat.threads.max=1我们如何证明影响?我们后端配置两个服务原创 2021-07-09 14:17:01 · 1677 阅读 · 0 评论 -
模拟高并发下Tomcat线程不安全现场记录<二>
1. 目的继上一次发现的线程安全问题后,这次来看看如何解决这个问题。2. 使用ThreadLocal代码:package thread;import java.util.ArrayList;import java.util.List;public class ThreadSecurity {private static ThreadLocal<List<byte[]>> byteListThreadLocal = new ThreadLocal<>(原创 2021-07-09 10:32:21 · 319 阅读 · 0 评论 -
模拟高并发下Tomcat线程不安全现场记录<一>
1. 所需工具集成开发工具(我的是STS)Tomcat,用来模拟真实请求响应服务(我的是Spring Boot内置有Tomcat)2. 代码ThreadInsecurity类,主要用来提供服务,这里的服务也很简单。全局变量的累加,每请求一次就加3000;100以内的每次增加都会休眠100ms(为什么要休眠?为了模拟耗时的写入操作,以达到线程不安全现象。这是符合现实情况的)。package thread;import java.util.ArrayList;import java.ut原创 2021-07-09 09:58:36 · 407 阅读 · 0 评论 -
Java程序静态全局变量与内存泄漏的关系与分析<二>
1. 测试和分析第二种类型(先声明,用时再new创建)继上一篇文章,测试完第一种类型后。2. 代码同样先看代码:package leakmemory;import java.util.ArrayList;import java.util.List;public class LeakMemory { private static List<byte[]> byteList; public static String addByte() {原创 2021-07-08 14:54:38 · 368 阅读 · 0 评论 -
Java程序静态全局变量与内存泄漏的关系与分析<一>
1. 所需工具说明要做这样的测试与分析我们需要以下这些工具:集成开发工具(我用的是STS)jconsole.exe(用来观察堆内存的变化,路径是JDK安装路径bin下,我的是C:\Program Files\Zulu\zulu-8\bin),用法链接Tomcat(我的是Spring Boot内置有Tomcat),要模拟Tomcat前后端服务2. 任务静态全局变量与内存泄漏的关系与分析。重点考试要考:静态全局变量的生命周期与服务器一致。按定义格式分两种静态全局变量类型:<1>.原创 2021-07-08 13:50:42 · 763 阅读 · 0 评论 -
jconsole.exe查GC和内存,简单使用记录
jconsole.exejconsole.exe(路径是JDK安装路径bin下,我的是C:\Program Files\Zulu\zulu-8\bin),如下图:使用双击打开(如果不行可能需要管理员权限,右键以管理员权限运行)。打开后如下图:红色圈出,左边是进程名称,右边是PID。双击我们要连接的进程或者选中我们要连接的进程点击右下方连接按钮,点击连接之后如下图:会弹出一个警告框,点击不安全的连接。点击后界面如下:在概览里,左1是堆内存使用量,右1是线程数,左2是类数量,右2是CPU占原创 2021-07-08 10:55:28 · 1834 阅读 · 0 评论 -
Java多线程的三种实现方式的记录
代码MyThread_thread类是继承Threadpackage thread;public class MyThread_thread extends Thread { private String id; public MyThread_thread(String id) { this.id = id; } public void setId(String id) { this.id = i原创 2021-07-06 15:57:23 · 98 阅读 · 0 评论 -
SelectNodes(“//item“),包括带名字空间节点的获取
SelectNodes("//item")从任意位置的节点上选择名称为 item 的节点,即整个xml文件的所有名为item的节点。dom4j.jar文章是使用dom4j.jar去解析XML文件,如何下载可以自行百度。代码import部分(包括不限于)import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.XPath;import org.原创 2021-07-06 15:16:45 · 502 阅读 · 0 评论 -
ThreadLocal使用例子记录
代码package threadlocal;public class ThreadLocalTest { private static ThreadLocal<String> name = new ThreadLocal<>(); public static void remove() { name.remove(); } public static void main(String[] args) {原创 2021-07-05 15:42:19 · 176 阅读 · 0 评论 -
Java単例模式(多线程安全)
代码以及测试的main方法package singleton;public class SingleTon { //标志的単例模式 private static volatile SingleTon instance; // volatile: prevents instruction reorder(防止指令重排序) // only one instance, private constructor private SingleTon() {}原创 2021-07-01 11:52:25 · 67 阅读 · 0 评论 -
Java bean中Builder的使用
前言我只是记录一下Builder的使用,这里我不分析什么场景使用这个Builder以及它的优缺点,有兴趣的可以自行百度。代码以Person类为例。package builder;public class Person { private String name; private String sex; private int age; private float height; private float weight; // Buil原创 2021-06-29 12:06:57 · 558 阅读 · 0 评论 -
Optional和Objects.requireNonNull的使用
代码package optional;import java.util.Objects;import java.util.Optional;public class OfAndOfNullable { public static void main(String[] args) { String str1 = "A"; String str2 = "B"; String str3 = null; Objects.requi原创 2021-06-29 11:59:16 · 585 阅读 · 0 评论 -
list.stream()的使用
list.stream()的使用代码package list;import java.util.Arrays;import java.util.List;import java.util.stream.Collectors;public class Stream_Test { public static void main(String[] args) { List<String> list1 = Arrays.asList("A123", "B123原创 2021-06-29 11:45:56 · 581 阅读 · 0 评论 -
list.removeIf和Arrays.asList的使用
list.removeIf和Arrays.asList的使用直接上代码,这个并不难就不解读了。package list;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class RemoveIf_Test { public static void main(String[] args) { String info = null;原创 2021-06-29 11:37:28 · 147 阅读 · 0 评论 -
Sonarqube的使用
前言为什么要使用Sonarqube,当我们写完Java代码的时候,我们是需要检查我们代码是否存在质量问题的。像sonarqube这样的检查工具就显得尤为重要了。这个工具会检查出Bug的地方和语句使用得不好的地方,对提高我们的Java编程能力有很大的帮助。下载sonarqube太高版本可能会不好使用,有什么问题我忘了。反正就是使用会出问题。哦,好像又想起来是sonarqube-8.8.0.42792.zip这个版本要用的JRE版本比较高,应该就是这个问题了。所以现在我用的是这个版本sonarqube-6原创 2021-06-29 11:14:58 · 612 阅读 · 0 评论 -
Java删除文件夹(包括里面的子文件夹和子文件)和文件Function
/** * Deletes a directory or file. * * @param file * directory or file to delete * * @throws NoSuchFileException * if the file does not exist <i>(optional specific exception)</i> ...原创 2021-04-27 17:22:31 · 228 阅读 · 0 评论 -
使用Timer实现异步处理业务
import部分:import java.util.Timer;import java.util.TimerTask;代码: public static void schedule_test() { // 创建一个新计时器 Timer timer = new Timer(); // 在指定的延迟之后安排指定的任务执行,毫秒为单位 timer.schedule(new TimerTask() { ...原创 2021-02-26 17:19:30 · 338 阅读 · 0 评论 -
Collections.sort不区分大小写排序(自定义排序)
import部分:import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;代码: public static void main(String[] args) { // TODO Auto-generated method stub sort_test(); } public...原创 2021-02-26 16:44:36 · 744 阅读 · 0 评论 -
Base64的使用
import部分:import java.io.UnsupportedEncodingException;import java.util.Base64;代码:public static void base64_test() throws UnsupportedEncodingException {Base64.Encoder encoder = Base64.getEncoder();Base64.Decoder decoder = Base64.getDecoder();String st原创 2021-02-19 09:59:08 · 396 阅读 · 0 评论 -
调用7z提取压缩包里的文件(包括文件夹)
因为我们不能够直接替换压缩包里某个文件夹下里的文件,所以我们就需要先提取出来。import部分:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;代码: public static void extractFileOnArchiveByCall7z() { String fi...原创 2021-02-19 09:49:08 · 2409 阅读 · 0 评论 -
调用7z工具更新压缩包里的文件
当我们想要更新压缩包(zip, ear应该还包括很多)里的文件(包括文件夹)时,可以通过调用7z这个工具去完成。import部分:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;代码: public static void updateZipFileByCall7z() { ...原创 2021-02-19 09:20:39 · 1832 阅读 · 0 评论 -
调用7z工具压缩文件
import部分:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;代码: public static void generateZipFileByCall7z() { String filePathStr = "E:\\Test_JAVAProgram\\test7z\\tes...原创 2021-02-19 08:58:20 · 539 阅读 · 0 评论 -
SWing JTable的简单使用(列排序,新增数据到JTable)
代码如下:package swing;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import javax.swing.BorderFactory;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;impor原创 2021-02-18 17:42:16 · 1806 阅读 · 0 评论