Java
文章平均质量分 64
清泉影月
清泉影月,取自“明月松间照,清泉石上流”
展开
-
Java stream 使用样例
之前一直不太喜欢用 stream,理由是啥呢,之前处理集合的数据量顶多百万级别,有过一次测试,百万数据及以下处理效率不如 for 循环,千万以上 stream 处理效率高才能体现出来。为啥现在要用呢,是数据量上来了吗?那倒不是,主要是代码简洁。......原创 2022-08-03 14:25:10 · 299 阅读 · 0 评论 -
记一次 ThreadLocal 使用实例
前言: ThreadLocal 可以保证多线程(高并发)的安全,下面以一个生产生遇到的问题来进一步描述。1. 问题回顾下面是一个 util 类(比较敏感的可能已经要开始骂人了吧...),这个类的 callUser 变量是全局公有的,在 SpringBoot 工程的拦截器中获取调用者信息(即 callUser)并填充到ContextUtil 的 callUser 变量中,后续打印日志或者记录调用信息时直接用 getCallUser() 获取。public ...原创 2021-11-30 13:59:52 · 351 阅读 · 0 评论 -
java 反射使用简介
前言: 刚工作那会使用java 比较实在,主要注重功能的实现,觉得反射很鸡肋;类实现的细节都是可见的,操作起来简单,还非要搞一个反射,莫名其妙;若干年过去,感慨反射真是一个伟大的东西,真香......1. 初识反射反射的效果:可以获取任何一个类的所有属性和方法; 可以修改任何一个对象的所有属性; 可以调用任何一个对象的所有方法;工作中大多接触的是业务代码,亲手写反射的机会不多;但是工作中用的好多框架都可以看到反射的影子,例如:注解;框架代码要求很高的普适性,需要在屏蔽类...原创 2021-07-27 16:51:36 · 150 阅读 · 0 评论 -
java 中轻量级volatile同步字段解释
前言:最近在整理多线程的一些用法,其中有涉及到volatile 关键字,没有深入研究,只是简单的验证了一下,这里记录一下心得。一.volatile 是轻量级的为啥一定要强调轻量级?1.volatile 只能修饰变量2.保证不同线程操作时变量的可见性,即一个线程修改了变量,另一个线程立马可见3. 不能确保线程同步(这个下面会举例说明)二. 变量可见性验证几乎所有的博客都会举下面这个例子说明public class VolatileTest extends Thr...原创 2021-01-14 21:28:13 · 281 阅读 · 0 评论 -
java 中 wait 和 notify 线程通信举例说明
package thread.wait;public class Bread { public String name; public int num; Bread(String name, int num) { System.out.println("面包名称:" + name + ", 初始化数量:" + num); this.name = name; this.num = num; }}package t.原创 2021-01-12 21:47:28 · 161 阅读 · 1 评论 -
java 的 synchronized 同步方法使用场景举例解读
前言:java 中线程同步在多线程使用比较常见,一般也是用synchronized 关键字来做同步,简单使用,下面直接给个例子说明一下。一、举个买票的例子一般大家也会用这个来举例,很常见也便于理解。1. 首先创建一个Ticket 类用于表述车票,如下:/** * 车票类 */public class Ticket { private Integer ticketNum; Ticket(int ticketNum) { this.ticketN..原创 2021-01-07 20:35:01 · 669 阅读 · 0 评论 -
java中join方法的理解和说明
前言:java 中的 join() 方法在多线程中会涉及到,这个方法最初理解起来可能有点抽象,用一两次大概就懂了。简单说就是当前线程等待调用join方法的线程结束才能继续往下执行。1. 举个例子这个举例说明比较好理解,如下public class MyRunnable implements Runnable { private int num; private String threadName; private long result; public M原创 2021-01-06 12:55:16 · 668 阅读 · 3 评论 -
java 多线程实现的三种方式区别
前言:java多线程其实在工作中接触的并不是很多,偶尔用一下,但是这个特性又是开发工程走向大牛必须要掌握的知识点,所以花几天时间整理了一下,一方便梳理知识点,另一方面也是为了以后更好地使用。一. 线程和进程线程可以理解是一个程序中可以独立执行的模块,一个程序在一个时间段内同时做好几件事(起码表面看起来是的)就是多线程最好的应用;进程是一次计算机的执行活动,可以是整个程序也可以是部分程序的动态执行;从概念上看,进程是包含线程的,一个进程至少包含一个线程。区别:1. 系统资源管理区别原创 2021-01-05 20:36:35 · 2531 阅读 · 1 评论 -
从底层代码看HashMap、Hashtable、ConcurrentHashMap的区别
前言:写代码久了,就会思考某些常用类的底层到底是怎么实现的;如题,这三个类都常见,平时用最多的是HashMap,如果涉及线程问题在早期会用Hashtable,现在会使用ConcurrentHashMap;查看他们的底层源码,一方面是为了学习先辈们的思维,另一方面也是加强自己的思维能力。今天就从它们常用方法的底层实现看一下他们的区别。...原创 2020-12-29 13:50:58 · 198 阅读 · 4 评论 -
《java 宝典》简记
简单而言:JRE,Java Runtime Enviroment,java 运行时环境,面向程序本身,包括 jvm、核心类库,为了运行 .class 程序而生。JDK,Java Development Kit,java 开发工具包,面向开发者,包含 jre、java 工具(编译等)、java 标准类库,为了开发程序而生。...原创 2021-01-13 20:34:09 · 164 阅读 · 1 评论 -
java:随机生成符合要求的复杂密码
前言:密码要求:大写字符、小写字符、数字、特殊符号,必须要包含,密码长度在 8-20 位。设计结果:输入密码长度,返回符合要求的随机密码。1.需求拆分需求可分为两点:四种字符必须包含长度 8-20 位2.逻辑设计声明一个 list把 4 种字符每种随机选一个放进 list根据密码长度要求再随机选择4种字符放进listlist 重新排序list 遍历组合成字符串输出逻辑设计 2 满足需求 1;逻辑设计 1、3、4满足需求23.代码设计首先写 4 个函数用于生成 4原创 2020-05-25 18:03:09 · 8185 阅读 · 0 评论 -
DES 加密解密算法 java 版
前言:工作需求:所有参数(数据库连接,服务器连接,都不能使用明文传参),所以需要一个加密解密算法,本来是想写 AES 的,但是 python 环境下各种改东西调试,好烦,所以退而求其次用 DES;DES 算法写了 java 版和 python 版,这个是 java 版,python 可以在我的博客里找一下。1.直接上代码package test;import javax.crypto....原创 2019-05-15 19:16:58 · 1333 阅读 · 1 评论 -
java:Runtime.getRuntime().addShutdownHook 捕获代码被结束时异常
问题描述:代码有时候被杀掉,但是杀掉的时候需要去执行一些必要的操作,例如保存文件,java 提供了相应的方法 Runtime.getRuntime().addShutdownHook 。1.贴一个例子public class GetRunKill { public static void main(String[] args) { Runtime runtime =...原创 2019-03-06 14:36:15 · 1968 阅读 · 0 评论 -
java: mysql 每次删除定量数据
前言:问题描述:一次删除太多数据(eg.100万)会对 mysql 产生太大压力,故此需要分多次进行删除数据。1.贴核心样例代码(java 实现) String sqlDelete = "delete from XX_tb where id = ? limit 1000"; try (PreparedStatement pstDel = conn.prepareStatemen...原创 2019-02-26 17:55:40 · 625 阅读 · 0 评论 -
Java:获取map的key和value
前言工作中经常需要对map进行循环操作,免不了需要获取key和value。获取key和value大概有三种方式1.直接获取key,然后通过key查找得到value for (String key : map.keySet()) { String value = map.get(key); System.out.println(k...原创 2019-02-13 16:39:02 · 24209 阅读 · 0 评论 -
java:try...catch跳过异常继续处理循环
问题描述在代码循环体中,抛出异常后代码会停止执行,导致代码不能完整运行。解决方案很简单,捕获异常并简单处理一下就可以。1.捕获异常继续执行代码只贴核心样例代码public void getTest() { List<String> list = new ArrayList<>(); list.add("1"); li...原创 2019-02-27 18:01:41 · 30711 阅读 · 6 评论 -
IDEA使用maven命令打包
前言现在IDEA是最火的java集成开发环境,经常会用到一些maven命令进行必要的操作(例如打jar包),所以在这里做一些简单的总结1.常用打包命令:mvn clean package -DskipTests=true //打可执行jar包mvn clean -DskipTests=true deploy //打包到相应服务器,供其他引用下载2.常用命令列表:mvn -v //...原创 2019-01-23 17:01:21 · 25622 阅读 · 2 评论 -
子类继承父类和实现接口时,其父类和接口都有同一变量怎么处理
前言: 直接给一个实例1.创建Class C,如下:interface A{ String s = "A";}class B{ String s= "B";}class C extends B implements A { public static void main(String [] args){ C c= new C(); ...原创 2018-07-03 08:52:14 · 2687 阅读 · 0 评论 -
城市地域抽取
前言适用情形:在写接口的过程中有时候前端传来一个地域字符串,需要接口把地域字符串下级地域抽取出来。eg1, 原始地域记录:江苏省苏州市姑苏区 前端传入字符串:江苏省 输出要求:苏州市 eg2, 原始地域记录:江苏省苏州市姑苏区 前端传入字符串:苏州市 输出要求:姑苏区 eg3, 原始地域记录:新疆XXX自治州XXX县 前端传入字符串:新疆 输出要求:XXX自治州...原创 2018-07-25 20:11:12 · 282 阅读 · 0 评论 -
时间(秒)转时间字符串(x天x时x分x秒)
数字转时间字符串前言通常为了直观表现时间会把时间数字转成时间字符串 eg: 输入时间(秒):123456 输出时间字符串:1天10小时17分钟36秒直接上代码public class NumToDateString { public static void main(String[] args) { long dateNum = 123456; ...原创 2018-07-20 17:06:47 · 2325 阅读 · 0 评论 -
Java对word和pdf抽取文字
前言:本文用常见的java工具包对word和pdf进行文字提取1.首先声明一下依赖的包 注意,Word 03和Word 07是两种不同类型的文件, 一种以.doc结尾,另一种以.docx结尾,依赖的包不一样。 &amp;lt;!-- .docx解析依赖 --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&原创 2018-08-07 16:48:24 · 1406 阅读 · 0 评论 -
Java对json和jsonarray字符串的解析
前言: json 就是键值对关系,和Map很像,两者都可以嵌套其他键值对关系或者其他数据结构。1.举个简单 json 字符串例子String jsonStr = "{" + "\"list\":[\"第一条数据\",\"第二条数据\"]," + "\"data\":[{\"url\"原创 2018-09-11 17:10:11 · 4659 阅读 · 0 评论 -
Java:针对list中存储对象的某一属性进行排序
前言:针对list中存储的bean类,往往需要针对特定属性进行排序直接贴代码是好习惯1.首先写一个简单的测试bean类public class SortBean { private String name; private int age; private int userId; public SortBean(String name, int age, ...原创 2018-09-27 21:05:49 · 3933 阅读 · 1 评论 -
Java连接MySql,以及Statement,PreparedStatement,ResultSet 用法和区别
前言:java开发过程中经常需要和 MySql 打交道,本文把常用的 Statement,PreparedStatement,ResultSet 的用法都梳理一遍1.首先声明一下依赖 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;mysql&amp;lt;/groupId&amp;gt; &a原创 2018-09-29 17:07:46 · 1536 阅读 · 0 评论 -
java解压zip和rar文件
前言日常使用中有解压软件可以解压压缩包,但是生产中一般都是代码完成。1.声明依赖(集成环境:IDEA)&amp;lt;!-- 解压rar --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;com.github.junrar&amp;lt;/groupId&amp;g原创 2018-10-18 20:00:04 · 28218 阅读 · 11 评论 -
Java:追加内容到文本文件
前言工作中经常会对一个已存在的文件进行内容追加,这里给一个简单的实例程序。1.程序比较简单,直接贴代码import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;public class CreateFile { ...原创 2018-10-16 16:03:33 · 19777 阅读 · 2 评论 -
Java静态变量使用实例
前言记住三点:一、Java 中被 static 修饰的成员称为静态成员或类成员二、它属于整个类所有,而不是某个对象所有,即被类的所有对象共享。三、静态成员可以使用类名直接访问,也可以使用对象名进行访问1.贴一个统计字符串的小程序,静态变量为int型public class CalcStr { private static int num = 0; publi...原创 2018-10-19 10:18:34 · 19538 阅读 · 0 评论 -
Java:获取系统时间,并自定义时间格式
前言系统时间获取经常被用来存储和排错,其格式完全可以按照自己喜好改变1.先贴代码再讲解import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class CurrentTimeUse { public static void main(String[] ...原创 2018-10-19 11:09:13 · 2244 阅读 · 0 评论 -
正则表达式
正则表达式解析\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。串行“\\”匹配“\”而“\(”则匹配“(”。^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。$ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multil...原创 2018-11-12 15:52:46 · 108 阅读 · 0 评论 -
java:文本文档和Properties配置文件读取
前言Properties配置文件和纯文本文件读取操作1.文本文档在开发中有两类应用,一类是配置文件(多是Properties),一类是纯文本。配置文件一般是键值对,如user = adminpasswort = I don't know纯文本文件,baidu.comqq.cpmmail.com2.Properties读取给一个静态方法,调用可以自己写一下public ...原创 2019-01-25 14:53:59 · 625 阅读 · 0 评论 -
java.lang.NoSuchMethodError 原因和处理方案
问题描述工程中明明有该方法,却提示 java.lang.NoSuchMethodError 错误1.原因java 的类加载机制是把所有不同名称的本类和引用类的包全部加载到内存,这样就有一个问题,如果有两个类名一样怎么办,机器很难区分引用类,即引用别人包中的类:public class Data(){ public static getData(){ System.o...原创 2019-01-28 12:14:49 · 183588 阅读 · 6 评论 -
判断字符串是不是数字类型
字符串转数字前言:字符串转数字,无非几种情况egString str = &amp;amp;quot;123&amp;amp;quot; -&amp;amp;amp;gt; int num = 123String str = &amp;amp;quot;123.123&amp;amp;quot; -&amp;amp;amp;gt; int num = 123String str = &原创 2018-07-02 15:43:37 · 9172 阅读 · 0 评论