java
JAVA菜鸟程序员
不要在该奋斗的年纪选择了安逸,只有度过了一段连自己都被感动的日子,才会变成那个最好的自己。
展开
-
mapstruct实体类映射框架
一、依赖二、抽象类或者接口三、控制器原创 2022-12-07 17:22:44 · 254 阅读 · 0 评论 -
springBoot整合mybatis-plus
简介MyBatis-Plus是一个Mybatis增强版工具,在MyBatis上扩充了其它功能没有改变基本功能,也就是只做封装增强不做改变,为了简化开发提交效率而存在,不需要写XML等sql语句就可实现官方文档:https://mp.baomidou.com/guide/工程搭建1.创建springboot项目略2.依赖<dependencies> <dependency> <groupId>org.sp原创 2021-12-15 15:36:36 · 1444 阅读 · 0 评论 -
java 8 lambda 表达式的优缺点总结
最近接触到 lambda 表达式后,发现它基本上可以消灭所有 for 循环,换句话说,所有的 for 循环都能被 lambda 表达式改写。但我发现,它并不是特别完美的,经过我查阅国内外不少网站的资料,加上自己试验,总结出以下几点:优点:1. 简洁。2. 非常容易并行计算。3.可能代表未来的编程趋势。4. 结合 hashmap 的 computeIfAbsent 方法,递归运算非常快。java有针对递归的专门优化。缺点:1. 若不用并行计算,很多时候计算速度没有...转载 2021-04-02 17:12:54 · 1432 阅读 · 0 评论 -
接口中的默认方法和静态方法
一、背景 在jdk1.8中,接口中可以定义默认方法和静态方法,默认方法和静态要怎么使用呢?二、使用1.接口中静态方法的使用 接口中静态方法的使用可以直接通过接口名.方法名的形式进行调用。代码:public interface MyInterface1 { default int test(int a,int b){ return a+b; }}public class TestInterface { public...原创 2021-04-02 16:53:57 · 1294 阅读 · 0 评论 -
打破双亲委派模型,重写loadClass方法
一、背景之前总结一篇关于自定义类加载器的文章,自定义类加载器主要是重写findClass方法;它的原理就是,当父类加载都找不到要加载的类时,通过重写的findClass方法可以实现自定义类加载器;我们知道类加载的原理是双亲委派机制,那么今天主要是想通弄重新loadClass方法来打破双亲委派机制;这种操作一般会出现在热部署过程中!二、实现1.需要被加载的类package com.example.jvm.demo;import java.io.PrintStream;public c原创 2021-02-07 14:44:32 · 1817 阅读 · 0 评论 -
java自定义类加载器
一、被加载的测试类1.将被加载的测试类放到d盘test目录下,然后其他子目录按照测试的包名创建,完整路径值这样的:D:\test\com\example\jvm\demo2.测试类如下:package com.example.jvm.demo;import java.io.PrintStream;public class Hello{ public void show() { System.out.println("hello"); }}二、自定义加载器原创 2021-02-03 15:15:55 · 223 阅读 · 2 评论 -
JDK官方文档(包含所有版本)
JDK官方文档地址(所有版本):https://docs.oracle.com/javase/specs/index.html原创 2021-01-27 09:58:22 · 17409 阅读 · 0 评论 -
SprintBoot项目获取resources目录下的文件并下载
一、背景 最近做的一个项目,需要下载一个Excel模板,然后导入数据,所以,将Excel文件放到resources目录下。二、方式 2.1 刚开始本地测试的使用的是如下方式:但是在服务器上却无法下载,因为项目打成jar包 try { File sourceFile = ResourceUtils.getFile(Constants.EXCEL_TEMPLATE_PATH); String filePath = sourceFil...原创 2021-01-06 16:40:39 · 888 阅读 · 0 评论 -
使用@Slf4j替代传统的日志打印
一、背景我们在日常的项目中,经常会用到日志打印的功能,但是每次我们新创建一个Service或者Controller等类时,都需把下面这段代码拷贝过来,显得比较麻烦。今天介绍一种注解的方式打印日志,个人觉得还是比较方便的。private final static Logger logger = LoggerFactory.getLogger(xxx.class);二、介绍 今天介绍的注解是@Slf4j,只需在需要打印的类上面加这个注解,就可以使用log.info()、log.de...原创 2020-10-13 09:49:12 · 1850 阅读 · 3 评论 -
常用正则表达式
public final static String EMAIL = "([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+";public final static String EMAIL_MSG = "请输入正确的邮箱";public final static String PHONE = "^[0-9-]{6,40}$";public...原创 2020-04-14 21:28:30 · 214 阅读 · 0 评论 -
java 元分互转
/** * 将金额从元转换为分 * @param amount 金额(单位:元) * @return 金额(单位:分) */ public static String changeY2F(String amount){ String currency = amount.replace("\\$|\\¥\\,", ""); ...原创 2020-04-08 10:00:52 · 611 阅读 · 0 评论 -
java 四大元注解及自定义注解
一、java中元注解有四个:@Retention @Target @Document @Inherited;(1)@Retention:描述注解的生命周期; 参数:枚举RetentionPolicy 1)source:源码级别,编译后失效; 2)class:二进制级别,编译有效,运行失效; 3)runtime:运行时级别,该注解在运行时仍然有效;(2...原创 2019-12-18 15:33:51 · 515 阅读 · 0 评论 -
Java:CAS(乐观锁)
本文讲解CAS机制,主要是因为最近准备面试题,发现这个问题在面试中出现的频率非常的高,因此把自己学习过程中的一些理解记录下来,希望能对大家也有帮助。什么是悲观锁、乐观锁?在java语言里,总有一些名词看语义跟本不明白是啥玩意儿,也就总有部分面试官拿着这样的词来忽悠面试者,以此来找优越感,其实理解清楚了,这些词也就唬不住人了。synchronized是悲观锁,这种线程一旦得到锁,其他需要锁的...原创 2019-12-12 19:56:03 · 113 阅读 · 0 评论 -
Java不可重入锁和可重入锁理解
最近正在阅读Java ReentrantLock源码,始终对可重入和不可重入概念理解不透彻,进行学习后记录在这里。基础知识Java多线程的wait()方法和notify()方法这两个方法是成对出现和使用的,要执行这两个方法,有一个前提就是,当前线程必须获其对象的monitor(俗称“锁”),否则会抛出IllegalMonitorStateException异常,所以这两个方法必须在同步...转载 2019-12-12 16:23:36 · 115 阅读 · 0 评论 -
java同步静态方法与非静态方法(使用synchronized关键字)
1、非静态方法同步一个类中所有的非静态方法同步时采用同一把锁--类实例本身(即该类的对象)。该实例的一个非静态同步方法获取对象锁后,该实例的其他非静态同步方法要想获得锁,必须等获取锁的方法释放锁后才能获取。但是该类的其他实例的非静态同步方法要想获取锁,可不用等待,因为每个实例使用的是不同的锁。2、静态方法同步一个类中所有的静态方法同步时采用同一把锁--类本身。一旦一个静态同步方法获取...原创 2019-12-12 16:00:10 · 334 阅读 · 0 评论 -
JAVA多线程中join()方法的详细分析
虽然关于讨论线程join()方法的博客已经非常极其特别多了,但是前几天我有一个困惑却没有能够得到详细解释,就是当系统中正在运行多个线程时,join()到底是暂停了哪些线程,大部分博客给的例子看起来都像是t.join()方法会使所有线程都暂停并等待t的执行完毕。当然,这也是因为我对多线程中的各种方法和同步的概念都理解的不是很透彻。通过看别人的分析和自己的实践之后终于想明白了,详细解释一下希望能帮助到...转载 2019-12-11 16:57:02 · 129 阅读 · 0 评论 -
java 集合框架
这个写的比较详细,直接借鉴过来....https://www.runoob.com/java/java-collections.html原创 2019-12-05 18:46:01 · 91 阅读 · 0 评论 -
EasyExcel 使用
一、简介 最近,产品那边出一个贼讨厌的需求,要做目前支付平台的数据统计;之前有跟运营讨论过这个问题,按照他们想法真是天马行空,我一听,太复杂了做不了;后来又找到产品提需求;虽然比之前的需求要好点,但是还是觉得复杂;根本不想做;后来实在没办法;只要在网上找好一点的解决办法;老大推荐的阿里巴巴的EasyExcel还蛮符合当前需求的;于是看了文档,参考了下别人的案列就开始开干了;耗时两周的...原创 2019-09-30 10:32:35 · 2935 阅读 · 3 评论 -
短信模板信息替换
String template = "您好!您最近受理的一笔日期:@{财务日期}日的@{见证宝商户名称}结算转账银行处理失败!失败原因:@{提现失败原因}。平台提现流水号:@{提现流水号},转账备注:@{提现备注说明}。请及时在结算后台核实和处理。";Map vars = new HashMap();vars.put("财务日期", "20191008");vars.put("见证宝商户名...原创 2019-10-08 16:02:08 · 1227 阅读 · 0 评论 -
Java实现八大排序算法
文章地址:https://blog.csdn.net/dp_dp/article/details/80543290 /** * 插入排序 * * 1. 从第一个元素开始,该元素可以认为已经被排序 * 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描 * 3. 如果该元素(已排序)大于新元素,将该元素移到下一位置 * 4...原创 2019-10-09 15:06:56 · 121 阅读 · 0 评论 -
StringBuilder 为什么线程不安全?
一、引言面试时被面试官问道这个问题:面试官:StringBuilder和StringBuffer的区别在哪?我:StringBuilder不是线程安全的,StringBuffer是线程安全的面试官:那StringBuilder不安全的点在哪儿?我:。。。(哑巴了)二、分析在分析设个问题之前我们要知道StringBuilder和StringBuffer的内部实现跟String类...原创 2019-10-11 10:10:35 · 584 阅读 · 0 评论 -
Java 集合框架
早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用 Vector 类的方式和使用 Properties 类的方式有着很大不同。集合框架被设计成要满足以下几个目标。 该框架必须是高性能的。基本集...原创 2018-08-06 09:12:37 · 226 阅读 · 0 评论 -
深入理解Java中方法的参数传递机制
形参和实参我们知道,在Java中定义方法时,是可以定义参数的,比如:public static void main(String[] args){ }这里的args就是一个字符串数组类型的参数。在程序设计语言中,参数有形式参数和实际参数之分,先来看下它们的定义:形式参数:是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数,简称“形参...原创 2019-09-14 19:59:19 · 146 阅读 · 0 评论 -
java枚举的使用
定义枚举类public enum EnumTest { MON("1"), TUE("2"), WED("3"), THU("4"), FRI("5"), SAT("6"), SUN("7"); String codeId; EnumTest(String codeId){ this.codeId = c...原创 2019-08-20 17:36:12 · 130 阅读 · 0 评论 -
JSONObject相关问题
param是json字符串,将json字符串转换为json对象,获取迭代器JSONObject backParamJson = JSONObject.parseObject(param);Iterator keys = backParamJson.keySet().iterator();while (keys.hasNext()) { String key = (String)ke...原创 2019-02-18 14:57:52 · 217 阅读 · 0 评论 -
判断时间或者数字是否连续
一、判断时间数组是否连续(格式:yyyyMMdd)public static String convert(String[] ints, int index) { int end = index; if (ints.length == index) {//结束条件,遍历完数组 return ""; } else { for (int...原创 2019-01-03 15:32:34 · 3929 阅读 · 0 评论 -
SpringBoot整合Email发送功能
一、引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency>二、添加配置信息spring: mail: ...原创 2018-11-27 16:03:15 · 524 阅读 · 0 评论 -
简单邮件发送
public class Sendmail { public static void main(String[] args) throws Exception { Properties prop = new Properties(); prop.setProperty("mail.host", "smtp.163.com"); prop...原创 2018-11-27 10:42:02 · 374 阅读 · 0 评论 -
对象转换成Map
public static Map<String, Object> beanToMap(Object requestBody, String[] excludeField) { if (requestBody == null) { return null; } List<Field> fields ...原创 2018-10-30 15:15:32 · 1252 阅读 · 0 评论 -
一道java基础题引发的思考
一、前言 今天在看一道java基础的面试题时,遇到一个问题,很疑惑,我以为只有我一个人不知道,发到小伙伴群里面拦住了一片。其实主要还是java基础的问题。二、代码public class A { private static A a = new A(); public static int num1; public static int num2 = 0; publ...原创 2018-07-23 19:02:49 · 209 阅读 · 0 评论 -
java中重定向与转发的区别
总结:转发:1.转发只发生一次请求2.转发可以传递数据3.转发是发生在服务器端4.转发地址栏不会发生改变5.转发只能在当前应用下,不能跳转到其他应用(比如:百度)重定向:1.重定向发生两次请求2.重定向不能传递数据3.重定向是发生在客户端4.重定向地址栏会发生改变5.重定向可以跳转到其他应用下(比如:百度)...原创 2018-07-05 10:24:15 · 270 阅读 · 0 评论 -
对象(java bean)与xml之间的转换(Xstream)
一、前言之前在做一个微信公众号的项目,项目中有用到一种技术,将调用接口后返回的xml字符串转换为对象(java bean),个人觉得这种方式还是蛮好用的,所以在这里分享下。二、案列分享1.非注解方式实现对象(java bean)与xml互转1.1 创建两个实体类public class Bank { private String name; private String...原创 2018-07-09 15:40:47 · 28156 阅读 · 10 评论 -
生成6位数的数字验证码
一、前言 在最近的一个微信慢病公众号项目中设计到一个获取短信验证码的功能,要求随机生成6位数的数组验证码,其实还是蛮简单的,随便写了一个。二、代码public class ValidateCode { public static String createData() { return createData(6); } public static String cre...原创 2018-07-09 09:33:49 · 14799 阅读 · 0 评论 -
Java 初始化及类的加载
public class Insect { private int i = 9; protected int j; public Insect(){ System.out.println("i="+i+",j="+j); j=39; } private static int x1 = printInit("static I...原创 2019-03-19 14:37:26 · 154 阅读 · 0 评论 -
通过HttpServletRequest 获取接口返回的json数据
1.获取方式Map<String, String> map = WitMedicalUtils.parseRequestMap(request.getParameterMap());2.解析方法:WitMedicalUtils.parseRequestMap()public static Map<String,String> parseRequestMap(...原创 2019-05-08 17:23:02 · 4908 阅读 · 0 评论 -
Java 基础 - 反射的用途及实现
原理理解 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性.这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 总结一句话,就是能把java类中的各种成分映射成一个个的Java对象. 思路:想要操作类,就必须先获得该类的字节码对象Class.通过Class提供的方法对类进行进一步的解剖,从而...原创 2019-08-15 14:32:17 · 224 阅读 · 0 评论 -
hash冲突解决和javahash冲突解决
https://www.cnblogs.com/ydymz/p/10078287.html1.开放定址法具体就是把数据的标志等的对长度取模有三种不同的取模线性探测再散列 给数据的标志加增量,取模平方探测再散列 给数据的标志平方,取模随机探测再散列 把数据的标志随机化,取模线性,平方显然很容被人猜出规律,所以最终是随机,那么是不是存在随机会出现取模的值相等的情...转载 2019-07-24 16:33:07 · 481 阅读 · 0 评论 -
手机号、银行卡号等掩码处理(优化)
public class StartUtils { /** * 掩码转换规则 * @param len * @return */ public static Map<Integer, String> convertToStartRule(int len) { Map<Integer, String>...原创 2019-07-03 14:15:58 · 3211 阅读 · 0 评论 -
List三种遍历方式
public class ListForeach { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.ad...原创 2019-06-24 10:55:03 · 6980 阅读 · 0 评论 -
Map四种遍历方式
public class MapForeach { public static void main(String[] args) { Map<String,String> map = new HashMap<String, String>(); map.put("a","test1"); map.put("b",...原创 2019-06-24 10:54:19 · 136 阅读 · 0 评论