
Java Basic
文章平均质量分 58
长河
为天地立心,为生民立命,为往圣继绝学,为万世开太平.
展开
-
java汉字拼音首字母的获取解决方案
对于汉字首字母的拼音获取,可以使用pinyin4j 2.5.0.jar 进行解决.封装了一个工具类package com.util;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourcef...原创 2018-05-22 11:10:42 · 13553 阅读 · 7 评论 -
Java实现RSA非对称加密
public class TestRSA { private static final String publicKeyStr = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3jg5eFRbBNeIg20xM6Ukn8Mu4WmvqxdSbmjg74T4o52zfUP/RZfIwx+7yt3aaEuxqkgTagaV1oR91uR6IQqmk++05gHzgigIK8G+eX9fGqnZWDaugH5HUteTyY8SjvCRY9gxuaP6j...原创 2021-10-02 09:59:06 · 3955 阅读 · 2 评论 -
Java的Object和Kotlin的Any之间的关系
Java的Object和Kotlin的Any之间的关系原创 2022-06-02 17:33:27 · 993 阅读 · 2 评论 -
java连接zookeeper实现zookeeper的基本操作
Java服务端连接Zookeeper,进行节点信息的获取,管理…,整理成一个基本工具,添加依赖:<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.3.6...原创 2018-09-05 11:34:07 · 24541 阅读 · 2 评论 -
java根据秒获取天小时分钟
public static String parseSeconds(Long seconds) { if (seconds > 0 && seconds <= 60) { // 秒 return "1分钟"; } else if (seconds > 60 && seconds <= 3600) { // 分钟 return (seconds / 60) + "分钟" ; } else if (secon.原创 2021-03-02 10:43:29 · 995 阅读 · 2 评论 -
sleep(0)作用
假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会 不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?操作系统中,CPU竞争有很多种策略。Unix系统使用的是时间片...转载 2019-03-12 16:59:32 · 4822 阅读 · 0 评论 -
由浅入深理解Java线程池及线程池的如何使用
前言多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担。线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory。即便没有这样的情况,大量的线程回收也会给GC带来很大的压力。为了避免重复的创建线程,线程池的出现可以让线程进行复用。通俗点讲,当有工作来,就会向线程池拿一个线程,当工作完成后,并不是直接关闭线...转载 2018-08-15 14:27:10 · 419 阅读 · 0 评论 -
google protobuf3实践教程
google 的 protobuf 一个及其快速,以及好用的序列化框架,支持多语言之间,我们今天就使用java来进行尝试.by the way,为什么要序列化,不序列化不行吗?这么麻烦,序列化是一种对象持久化的手段,主要是用在网络传输、RMI等场景中,为了数据的传输,所以才需要进行序列化,一般的使用中确实不用序列化.笔者使用的是win10,jdk1.8,idea.下载配置prot...原创 2018-08-26 09:42:11 · 2649 阅读 · 0 评论 -
SpringBoot集成JWT实现token验证
TODO 先把坑挖在这里, 回头来填上, 这篇写的真懒, 我回改的Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一...原创 2019-02-19 15:30:13 · 2923 阅读 · 0 评论 -
fastjson解析
听闻阿里的fastJson特别的厉害.就下载了,稍微的试了一下:本次使用:fastjson-1.2.8.jar本次只是比较简单的对象和json之间的转换,没有涉及到复杂对象与json之间的转换.有两个实体类,User和GroupBean,本次暂时只是涉及到User类public class User { private String id; private Str...原创 2017-04-01 19:57:31 · 846 阅读 · 0 评论 -
重写equals方法后重写hashCode方法的必要性
1、首先我们看看对象默认的(Object)的equals方法和hashcode方法public booleanequals(Object obj) {return(this== obj);}public native inthashCode();对象在不重写的情况下使用的是Object的equals方法和hashcode方法,从Object类的源码我们知道,默认的equals...转载 2018-10-31 16:26:41 · 3295 阅读 · 0 评论 -
Jackson使用详解
Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架。Jackson 社区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看,Jackson 是最流行的 json 解析器之一。Spring MVC 的默认 json 解析器便是 Jackson。Jackson 优点很多。Jackson 所依赖的 jar 包较少 ,简单易用。与其他 Java 的 json 的框架 Gson 等相比, Jackson 解析大的 json 文件速度比较快;原创 2024-07-01 16:24:15 · 911 阅读 · 0 评论 -
SpringBoot web项目性能监控
用于获取 Java 应用程序的内存堆转储(heap dump)和线程转储(thread dump)。原创 2024-05-06 09:18:03 · 334 阅读 · 0 评论 -
SpringBoot2升级到SpringBoot3总结
我们这边的项目大多数都是Kotlin+SpringBoot2.X的技术栈,现在要全部升级到最新的SpringBoot3.2.2或者SpringBoot3.2.3,还是以Kotlin为主。最近公司在做监控日志平台的迁移,从NewRelic迁移到Dynatrace,为了配合迁移,有一个前提就是把SpringBoot2升级到SpringBoot3。首先做的第一件事:把JDK11升级到JDK17,以及把kotlin升级到1.9.21。注意查看升级后的驱动的依赖版本,注意出现不兼容的情况。等等,还有一些就不列举了。原创 2024-04-01 09:02:12 · 1414 阅读 · 0 评论 -
再谈jdk的代理
第408行的注释, 说如果没有就使用ProxyClassFactory创建一个,否则直接从缓存里面拿, 我们不看缓存的拿去, 就是一个Map, 没事好看的. 看看这个ProxyClassFactory类.他是静态的内部类.我们模仿第二种方式,动态的生成一个.java文件, 再编译成.calss文件,最后加载到jvm中,生成对象,调用新的对象的方法,就得到的增强的目的,而且对用户是透明的.缺点很明显, 需要继承, 而且随着功能的增加, 要不断的继承, 体系混乱,越来越复杂. 最后谁就不懂了.原创 2023-11-02 14:26:41 · 169 阅读 · 0 评论 -
2.并发编程
文章迁移自语雀。并发编程2原创 2024-03-01 17:39:21 · 1059 阅读 · 0 评论 -
1.并发编程
并发编程原创 2024-02-02 10:34:56 · 839 阅读 · 0 评论 -
Java 21 新功能展示(含示例)
Java 21 于 2023 年 9 月 19 日发布,是 Oracle 标准 Java 实现的下一个长期支持(LTS)版本。Java 21 具有以下 15 项功能。字符串模板(预览版) [JEP-430]序列集合 [JEP-431]代 ZGC [JEP-439]记录模式 [JEP-440]开关的模式匹配 [JEP-441]外来函数和内存 API(第三次预览) [JEP-442]未命名模式和变量(预览) [JEP-443]虚拟线程 [JEP-444]原创 2023-10-07 09:43:36 · 1088 阅读 · 0 评论 -
写给Javaer看的Kotlin教程
三元:val max = if (a > b) a else bfun OfferType.Companion.fromString(str: String?): OfferType {//字符串可能为空 if (str?.isBlank() == true) { return OfferType.STUDIO_FLOW } for (type in OfferType.values()) if (type.str.eq...原创 2022-04-06 09:27:02 · 3558 阅读 · 0 评论 -
Java8的函数式接口入门
import java.util.Arrays;import java.util.List;import java.util.function.Consumer;/** * 消费型接口,接收一个参数,并处理,不返回 */public class ConsumerTest { public static void main(String[] args) { Consumer<Integer> c = s -> { System.原创 2022-03-04 09:41:21 · 2223 阅读 · 0 评论 -
JDK11的新特性之-新的HTTP API
使用HTTP Client请求的基本流程通常我们要在代码中做一个HTTP请求,通常有三个步骤。构建一个HTTP client。 生成一个HTTP Request。 使用HTTP Client发送HTTP Request得到一个HTTP Response。下面开始给出示例1.发出GET的同步请求import java.io.IOException;import java.net.URI;import java.net.http.HttpClient;import java.net原创 2021-11-04 16:24:09 · 3965 阅读 · 0 评论 -
java swing 加载自定义的字体
首先我们定义一个自定义加载子类的工具类:import java.awt.Font;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Map;import java.util.Pro原创 2021-02-01 15:06:13 · 3013 阅读 · 6 评论 -
JAVA8 的StringJoiner 使用以及原理解析
前几天偶然看到jdk1.8突然新增了一个类StringJoiner , 就研究了一下是怎么使用的, 以及看了下它的源码.使用如下:public static void main(String[] args) { //间隔符是, StringJoiner joiner1 = new StringJoiner(","); joiner1.add("1").add("2").add("3"); System.out.println(joi原创 2021-01-04 09:34:28 · 2922 阅读 · 8 评论 -
Java Xml转换成Json, 对象
现在有以下的xml文件, 内容如下:<iso_10303_28_terse xmlns="urn:oid:1.0.10303.238.1.0.1" xmlns:exp="urn:oid:1.0.10303.28.2.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schema="integrated_cnc_schema"> <exp:header>原创 2020-12-01 14:09:06 · 1481 阅读 · 0 评论 -
使用spoon对java代码进行转换
现在我们的需求是对java代码进行转换:转换前的方法是: public XYDataItem addOrUpdate(Number x, Number y) { if (x == null) { throw new IllegalArgumentException("Null 'x' argument."); } XYDataItem overwritten = null; int index = ind原创 2020-12-01 14:06:39 · 2031 阅读 · 0 评论 -
查找文件夹下所有文本是否包含了特定的字符串
依赖于apache的lang3和google的guava的包import com.google.common.collect.Lists;import org.apache.commons.lang3.StringUtils;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputSt.原创 2020-11-02 14:07:46 · 1594 阅读 · 1 评论 -
maven项目本地window重新编译打包并启动jar包.cmd
重新编辑启动jar包.cmd::注意此脚本放在pom的同级目录下@echo offcall mvn clean package -U -Dmaven.test.skip=true::jar所在目录cd D:\idea\vspmanager-case-edit\target::jar包名字server.port=${port:8083}java -jar vspmanager-case-edit-0.0.1-SNAPSHOT.jar --server.port=9083echo ..原创 2020-10-09 16:43:27 · 975 阅读 · 0 评论 -
Java8 的 Comparator 用法
java1.8 的新的函数式的Comparator 不要太方便了. 可以轻松的实现各种List 的排序, 比以前写什么匿名的内部类, 静态类方便了很多, 很多.//比较器//按照sort_id 的升序排//写法1Comparator<ApplyedPersonVO> c = (a, b) -> a.getSort_id().compareTo(b.getSort_id());//写法2Comparator<ApplyedPersonVO> c2=Comp..原创 2020-06-01 10:53:06 · 1799 阅读 · 0 评论 -
jdk1.8反编译工具 -Procyon-Decompiler
本来是使用的jad 挺好用的, 但是奈何不支持jdk1.8 , 所以只能更换了工具的下载网站是:https://bitbucket.org/mstrobel/procyon/downloads/国内的环境下载不下来, 最后我费了很多事才下载下来, 所以我放在网盘了,我直接下载了最新版的, procyon-decompiler-0.5.36.jar链接:https://pan.baidu.com/s/19KL3bFpYVbsEEtsB2hTJgw提取码:t8e7如果你只是反...原创 2020-05-21 15:37:10 · 10073 阅读 · 6 评论 -
Java的Long类型值传递到前端精度丢失问题
JavaScript 无法处理 Java 的长整型 Long 导致精度丢失,具体表现为主键最后两位永远为 0,解决思路: Long 转为 String 返回https://www.jianshu.com/p/fbcdcfc7cd12LambdaQueryWrapper<AuthorityEntity> lambda = new QueryWrapper<Autho...原创 2020-04-11 17:08:51 · 5533 阅读 · 2 评论 -
javassist使用解析
当时接到一个活, 需要做程序的评测, 前端传递java代码到后端, 后端进行java代码的评测. 包括代码是否能够编译运行, 结果时候正确, 运行的时间, 以及运行占用的内存的记录.这个时候我们就需要使用到java的动态编译了. 其实首先想到的就是JavaCompiler 这个类了, 可以自己实现一套代码的编译逻辑,国人, 廖雪峰 他最JavaCompile对了一个简单的封装, 打成了j...原创 2020-07-01 11:45:52 · 672 阅读 · 0 评论 -
写给java的Gradle指南
其实一直习惯用maven来构建项目, 但是昨天下载了spring 的源码, 别人已经切换到了gradle, 然后就简单的学习下gradle, 典型的应用驱动学习, 用到什么就学习什么新的内容.简明教程如下:1.首先是下载一份gradle, 解压到电脑上2.配置Gradle环境变量, 到path中3.打开cmd进行安装验证, 使用命令 gradle -v 出现以下内容, 安装...原创 2020-03-08 15:55:19 · 1006 阅读 · 0 评论 -
马托石头问题-java(大马中马小马托石头)
前两天我老妹儿给我出了一个问题, 说是什么计算机的面试题, 哈哈哈, 太简单了,随手就写了有100匹马和100块石头,其中马分为3种马,分别为大马,中马,小马。其中大马一匹可以托3快石头,中马可以托2块石头,2匹小马托一块石头,问需要大马,中马,小马个多少匹,能把100快石头托完,并且刚好100匹马package com.curefun.authority;/** * 有1...原创 2020-01-10 11:43:36 · 2099 阅读 · 1 评论 -
二探lambda表达式
从例子二探lambda传递Runnable创建Threadjava8之前package com.baigt.learn.nolambda;public class NoLambdaWithSecond { public static void main(String[] args) { new Thread(new Runnable() { ...转载 2020-02-01 10:27:41 · 288 阅读 · 0 评论 -
你真的了解Lambda表达式么?
lambda表达式实战从例子引出lambda传递Runnable创建Threadjava8之前 Thread thread=new Thread(new Runnable() { @Override public void run() { // do something ...转载 2020-02-01 10:27:24 · 326 阅读 · 0 评论 -
Java 8 Optional的正确姿势
文章开头, 希望你们现在已经写够了 if ,else 的判断. 想要做出一些改变. 是时候进行改变了Optional是Java8提供的为了解决null安全问题的一个API。善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅。当我们还在以如下几种方式使用 Optional 时, 就得开始检视自己了调用 isPresent() 方法时 调用 get() 方法时 Opt...原创 2019-12-03 11:19:16 · 924 阅读 · 2 评论 -
使用nexus3搭建maven私有仓库
先说点理论:仓库分类:hosted(宿主):宿主仓库主要用于存放项目部署的构件、或者第三方构件用于提供下载。 proxy(代理):代理仓库就是对远程仓库的一种代理,从远程仓库下载构件和插件然后缓存在Nexus仓库中 group(仓库组):仓库的一种组合策略,并不存在实在意义的依赖,只是作为一种中转站的作用存在。Nexus内置仓库类型maven-central:代理中央仓...原创 2019-11-06 11:57:15 · 1339 阅读 · 0 评论 -
深度解析单例与序列化之间的爱恨情仇~
转载:原文链接:https://mp.weixin.qq.com/s/iXC47w4tMfpZzTNxS_JQOw首先来写一个单例的类:code 1接下来是一个测试类:code 2输出结构为false,说明:通过对Singleton的序列化与反序列化得到的对象是一个新的对象,这就破坏了Singleton的单例性。这里,在介绍如何解决这个问题之前,我们先来...转载 2018-02-04 10:01:26 · 440 阅读 · 0 评论 -
java两个对象之间传值,简单的封装
在项目里面使用SSH框架的过程中, 经常涉及到修改,我们只要对部门的部门属性进行修改我们通常的做法是先从数据库把对象查询出来target,再把从页面上传递来的修改过的值封装成为一个对象model,我们需要把model中修改过的属性重新赋值给target,再对target进行保存.完成修改.在这个target.setXxx(model.getXxx)过程中有可能有大量的苦力工作要做,所...原创 2017-03-26 23:32:14 · 6757 阅读 · 0 评论 -
Class文件格式实战:使用ASM动态生成class文件
概述本专栏前面的文章,主要详细讲解了Class文件的格式,并且在上一篇文章中做了总结。 众所周知, JVM在运行时, 加载并执行class文件, 这个class文件基本上都是由我们所写的java源文件通过javac编译而得到的。 但是, 我们有时候会遇到这种情况:在前期(编写程序时)不知道要写什么类, 只有到运行时, 才能根据当时的程序执行状态知道要使用什么类。举一个常见的例子就是JD...转载 2018-09-12 16:11:24 · 1238 阅读 · 0 评论