自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(160)
  • 资源 (5)
  • 收藏
  • 关注

原创 【算法】一组数组中,有两种数有奇数个,其他的数都是偶数个

题目:一个数组中,只有两种数有奇数个;其他的数都是偶数个;找出这两种奇数个数的数字 public static void main(String[] args) { int[] arr = {1,1,1,5,5,5,5,6,6,6,9,9,9,9}; twoOddNumber(arr); } private static void twoOddNumber(int[] arr) { //通过异或操作,计算出两种奇数个数的数字的...

2022-01-08 10:11:03 234

原创 【算法】两数之和

题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2:输入:nums

2022-01-06 17:22:26 39

原创 【算法】计算一个数对应的二进制数中1的个数

题目:计算一个数字对应的二进制数中1的个数/** * 计算一个数对应的二进制数中1的个数 * @param n * @return */ public static int bit1counts(int n){ int counts = 0; while (n !=0){ // n = 10001000 //rightOne = 00001000

2021-12-31 18:17:39 143

原创 【算法】找出数组中有奇数个数的数

题目:一个数组中,只有一个数有奇数个,其他的数都是偶数个;找出奇数个的那个数字public static void main(String[] args) { int[] arr = new int[]{2,6,2,3,3,4,4}; int eor = 0; for (int i = 0; i < arr.length; i++) { eor ^= arr[i]; } System.out.

2021-12-31 18:11:10 394

原创 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 1364

原创 windows下通过批处理脚本启动redis

一、背景每次在本地启动redis的时候,都需要到redis的解压目录下去启动,很麻烦。类似如下的方式:二、如何快速启动我们可以在桌面上建一个bat文件,然后启动bat文件就可以啦,如下操作@echo offtitle redis-serverset ENV_HOME="C:\dengchao\redis"E:color 0acd %ENV_HOME%redis-server.exe redis.windows.confexit但是上面这种操作会有一个问题,那就是启动之

2021-06-24 20:51:10 246

原创 SpringBoot配置文件加载优先级

一、背景 SpringBoot配置文件有四个存放位置,分别是如下四个位置,配置文件在四个目录下的优先级到底是什么么呢?1)file:./config/ 项目根目录下的config文件夹2)file:./ 项目根目录下3)classpath:/config classpaht下的config文件夹3)classpath:/ classpath目录下 二、执行结果如下是四个路径下配置文件的优先级顺序;从1-4,优先级诸暨降低.

2021-04-30 16:21:06 123 1

转载 java 8 lambda 表达式的优缺点总结

最近接触到 lambda 表达式后,发现它基本上可以消灭所有 for 循环,换句话说,所有的 for 循环都能被 lambda 表达式改写。但我发现,它并不是特别完美的,经过我查阅国内外不少网站的资料,加上自己试验,总结出以下几点:优点:1. 简洁。2. 非常容易并行计算。3.可能代表未来的编程趋势。4. 结合 hashmap 的 computeIfAbsent 方法,递归运算非常快。java有针对递归的专门优化。缺点:1. 若不用并行计算,很多时候计算速度没有...

2021-04-02 17:12:54 893

原创 接口中的默认方法和静态方法

一、背景 在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 910

原创 Bean的生命周期

一、流程图二、详细细节1.实例化bean:反射的方式生成对象2.填充bean的属性:populateBean(),循环依赖(三级缓存)3.调用aware接口相关的方法:invokeAwareMehtod(完成BeanName,BeanFactory,BeanClassLoader对象的属性设置)4.调用BeanPostProcessor中的前置处理方法:使用比较多的有(ApplicationContextPostPrecessor设置ApplicationContext,Enviro

2021-03-27 11:38:58 62 1

原创 GC常用参数及垃圾收集器常用参数配置

一、GC常用参数* -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间* -XX:+UseTLAB 使用TLAB,默认打开* -XX:+PrintTLAB 打印TLAB的使用情况* -XX:TLABSize 设置TLAB大小* -XX:+DisableExplictGC System.gc()不管用 ,FGC* -XX:+PrintGC* -XX:+PrintGCDetails* -XX:+PrintHeapAtGC* -XX:+PrintGCT.

2021-03-02 10:15:49 214

原创 Can not find java process. Try to pass <pid> in command line. Please select an available pid

一、问题描述在下载完了arthas后,直接通过java -jar arthas-boot.jar执行,就直接报错了。二、原因在arthas启动前,需要有java进程启动。三、解决方法在启动arthas之前先启动一个java程序测试代码如下:public class T15_FullGC_Problem01 { private static class CardInfo { BigDecimal price = new BigDecimal(0.0);

2021-02-26 09:37:40 1401

原创 jconsole和jvisualVm远程连接服务器,查看JVM信息

一、测试代码public class T15_FullGC_Problem01 { private static class CardInfo { BigDecimal price = new BigDecimal(0.0); String name = "张三"; int age = 5; Date birthdate = new Date(); public void m() { }

2021-02-25 15:44:49 215 2

原创 jstack和线程dump分析

一、测试代码写了一个死锁的代码。public class DeadLockDemo { private static String obj1 = "obj1"; private static String obj2 = "obj2"; public static void main(String[] args) { Thread t1 = new Thread(new Lock1()); Thread t2 = new Thread(ne

2021-02-25 11:46:09 190 4

原创 jstack命令执行报错:Unable to open socket file: target process not responding or HotSpot VM not loaded

一、背景最近在学jvm调优,在使用jstack命令时,出现报错。网上查了好多,都没有找到合适解决方法。二、解决方法1.测试代码public class T15_FullGC_Problem01 { private static class CardInfo { BigDecimal price = new BigDecimal(0.0); String name = "张三"; int age = 5; Date b

2021-02-25 11:16:33 4071 8

转载 JVM参数之GC日志配置

https://blog.csdn.net/qq_40902067/article/details/106004313

2021-02-24 16:56:06 240

原创 常见的垃圾回收器

一、参考文章https://www.cnblogs.com/datiangou/p/10245874.html二、常用垃圾回收器1. JDK诞生 Serial追随 提高效率,诞生了PS,为了配合CMS,诞生了PN,CMS是1.4版本后期引入,CMS是里程碑式的GC,它开启了并发回收的过程,但是CMS毛病较多,因此目前任何一个JDK版本默认是CMS 并发垃圾回收是因为无法忍受STW2. Serial 年轻代 串行回收3. PS 年轻代 并行回收4. ParNew 年轻代 配合CM

2021-02-22 10:52:14 460

原创 对象创建过程以及对象在内存中的布局

1).loading:加载,将对象的class文件加载到内存2).linking(verification、preparation、resolution)verification:校验calss文件的格式是否符合虚拟的规范preparation:将静态变量赋默认值resolution:将类、方法、属性等符号引用解析为直接引用3).initializing:将静态变量设为初始值,同时执行静态语句块4).申请对象内存5).成员变量赋默认值6).调用构造方法&lt...

2021-02-19 10:19:04 84

原创 volatitle、synchronized实现细节

一、volatitle实现细节1).字节码层面加了一个ACC_VOLATITLE标识2).jvm层面volatitle内存区的读写,都加屏障写操作:StoreStoreBarriervolatile 写操作StoreLoadBarrier读操作LoadLoadBarriervolatile读操作LoadStoreBarrier3).os和硬件层面参考这篇文章:https://blog.csdn.net/qq_26222859/article/de...

2021-02-19 10:17:57 67

原创 打破双亲委派模型,重写loadClass方法

一、背景之前总结一篇关于自定义类加载器的文章,自定义类加载器主要是重写findClass方法;它的原理就是,当父类加载都找不到要加载的类时,通过重写的findClass方法可以实现自定义类加载器;我们知道类加载的原理是双亲委派机制,那么今天主要是想通弄重新loadClass方法来打破双亲委派机制;这种操作一般会出现在热部署过程中!二、实现1.需要被加载的类package com.example.jvm.demo;import java.io.PrintStream;public c

2021-02-07 14:44:32 956

原创 Redis安装详细步骤

一、redis软件下载下载地址:1.https://redis.io/(英文网站)2.http://redis.cn/(中文网站)二、安装1.在redis下载网站,复制下载地址,然后再linux中通过wget下载wget http://download.redis.io/releases/redis-6.0.6.tar.gz2.解压tar -xf redis-6.0.10.tar.gz3.安装解压完成后,通过make命令安装,但是我在执行完make命令之后报错了,

2021-02-05 12:20:48 807 1

原创 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 132 2

原创 JDK官方文档(包含所有版本)

JDK官方文档地址(所有版本):https://docs.oracle.com/javase/specs/index.html

2021-01-27 09:58:22 5153

原创 jmeter安装配置

一、软件下载下载地址:http://jmeter.apache.org/二、环境变量配置软件下载完成后,直接解压即可,我使用的版本是apache-jmeter-5.4.1;JDK自行安装,JDK我之前已经安装过了,这里就不再重复安装了,我使用的JDK版本是1.8的;下面开始jmeter环境变量配置。1.点击我的电脑----属性----高级----环境变量----在系统变量中----点击新建,2.在变量名中输入:JEMETER_HOME3.变量值中输入:D:\Download\java

2021-01-25 10:43:37 106

原创 使用DiscoveryClient的getServices()方法获取不到服务名,其他方法也都获取不到

一、背景最近在学习springcloud,在使用customer调用provider时,通过DiscoveryClient获取不到服务名列表,其他方法也获取不到相应的数据,在网上找了好久,终于发现问题所在,在这里总结下!希望对遇到同样问题的小伙伴有帮助!二、代码通过getServices()方法,获取不到已经注册到Eureka中的服务名。 @RequestMapping("/client") public String client(){ List<Strin

2021-01-21 12:44:54 2264

原创 Mysql用localhost可以连接,用ip不能连接

一、背景今天公司dev服务器和uat服务器硬件坏了,之前从dev服务器导了一份数据到本地库;之前一直都是用localhost连接数据,然后把自己的ip提供给其他人连接时,提示如下错误!项目启动时也是直接报错。二、解决方法1.查询root用户的主机,发现root用户对应的主机名默认为localhostselect host,user from mysql.user;2.修改root用户的主机名为所有ipupdate mysql.user set host = '%' where u

2021-01-20 10:42:22 356

原创 Mybatis配置sql打印日志

logback.xml 文件配置如下,直接放到resources文件夹下就可以使用了<?xml version="1.0" encoding="UTF-8"?><configuration debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_HOME" value="/test/log" /> <!-- 控制台输出 --&g

2021-01-13 08:45:29 435

原创 IDEA下搭建Eureka集群

一、新建springboot项目添加依赖如下:<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </depend

2021-01-07 14:17:07 440

原创 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 626

原创 使用@Slf4j替代传统的日志打印

一、背景我们在日常的项目中,经常会用到日志打印的功能,但是每次我们新创建一个Service或者Controller等类时,都需把下面这段代码拷贝过来,显得比较麻烦。今天介绍一种注解的方式打印日志,个人觉得还是比较方便的。private final static Logger logger = LoggerFactory.getLogger(xxx.class);二、介绍 今天介绍的注解是@Slf4j,只需在需要打印的类上面加这个注解,就可以使用log.info()、log.de...

2020-10-13 09:49:12 813 3

原创 mybatis-generator生成工具(最新版,非gui版本)

一、背景 mybatis现如今已经成为了我们使用比较频繁的持久层了,但是我们在开发的过程中,如果手动的去写持久层的东西比较耗时和麻烦,虽然GitHub已经有gui版本的生成工具了,虽然可以减轻一部分工作量;但是在使用起来还是不太方便!所以自己重构了一套既可以生成前台页面,又可以生成mybatis持久层的工具,分享出来,希望能够帮助到大家!二、Mybatis-GUI版本回顾 前几天去github上下载了一个gui版本的生成工具使用了下,界面比价简洁(如图一),使用起来也很...

2020-09-16 10:23:18 828 1

原创 支付宝当面付

一、背景目前公司支付平台集成了支付宝app、微信app、支付宝小程序、微信小程序、支付宝H5(扫码-主扫)、微信H5(扫码-主扫)、云闪付、建设钱包付等多种支付方式,今天给大家分享支付宝当面付的支付流程。二、代码目前我们当面付是把支付宝和微信集成在一个Controller里面的,今天先拆分下,分享支付宝当面付,下面是主要的代码。@RequestMapping("/createOrder") public String creatOrder(@Valid FaceToFaceCrea

2020-07-03 15:31:42 911 1

原创 支付宝H5支付

一、背景最近在公司做支付平台相关的工作,涉及到微信、支付宝、建设银行、平安银行、云闪付相关的支付对接,在这里总结下在实际工作中涉及到的与第三方渠道的对接,以及如何融入到自己项目的业务流程中。今天先总结下支付H5的支付流程。由于H5支付我们这边目前集成了微信、支付宝和银联,这个三个渠道支付,今天主要是总结支付宝H5支付,所以微信和银联的处理先省去了。二、技术实现下面这个部分代码是通过扫码付进入的(由于我们的业务是针对社康和医院的扫码支付)。 @RequestM...

2020-06-30 16:11:39 892

原创 10大排序算法时间复杂度和空间复杂度总结

中文名称 英文名称 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 选择排序 Selection n2 n2 n2 1 不稳 冒泡排序 Bubble ...

2020-06-02 15:38:01 1125

原创 git统计代码行数

git log --since=2018-01-01 --until=2020-05-25 --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }'注:since和until分别表示开始和结束时间,可根据实际情况修改...

2020-05-25 18:05:53 351

原创 SpringBoot整合Dubbo+zookeeper(吐血整理)

一、背景 以前用spring单独整合过Dubbo+zookeeper,因为用springboot已经好长时间,而且配置也方便,想着重新用springboot整合下Dubbo+zookeeper;各种心酸,因为一个注解的问题导致消费者无法注册到Dubbo中,心累!后面会提到的。二、前期准备1.zookeeper安装下载地址:链接:https://pan.baidu...

2020-04-16 18:40:51 10480 10

原创 多线程处理大量数据

一、背景最近在在建设银行代发功能,需要批量处理代发数据,线性处理效率比较低,大概1秒钟一条数据;然后考虑用多线程处理。刚开始使用的是Executors.newFixedThreadPool(10)这种方式创建固定数量线程池;后面考虑到数据量大的时候,可能队列装不下,导致异常,然后换成了ExecutorService executorSer = new ThreadPoolExecutor(10...

2020-04-15 18:12:34 2549

原创 常用正则表达式

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 147

原创 java 元分互转

/** * 将金额从元转换为分 * @param amount 金额(单位:元) * @return 金额(单位:分) */ public static String changeY2F(String amount){ String currency = amount.replace("\\$|\\¥\\,", ""); ...

2020-04-08 10:00:52 340

原创 SpringBoot的三种启动方式

1、背景 这几天在看面试题,看到了有关SpringBoot的相关知识点,其中有一个问题是:“SpringBoot有哪几种启动方式?”。一下子懵逼了,脑子里面只记得在本地启动的时候是在Main方法中直接启动的(因为我们的测试环境是自动安装部署的,生产环境是运维负责安装部署的)。2.启动方式有三种启动方式: 1)Main方法启动:这种方式一般在本地测试的时候用的比较...

2020-04-02 11:14:16 677

mybatis-generator生成工具(最新版,非gui版本)

mybatis现如今已经成为了我们使用比较频繁的持久层了,但是我们在开发的过程中,如果手动的去写持久层的东西比较耗时和麻烦,虽然GitHub已经有gui版本的生成工具了,虽然可以减轻一部分工作量;但是在使用起来还是不太方便!所以自己重构了一套既可以生成前台页面,又可以生成mybatis持久层的工具,分享出来,希望能够帮助到大家!

2020-09-16

java文件操作工具类

java文件操作工具类是java中针对文件操作的一个工具类,可以方便的读取,下载,上传文件等操作,希望可以帮到大家。

2019-11-11

java的Date工具类

这是本人自己整理的java中的Date工具类,包含了常用的时间格式化方法和转换方法;在工作中使用起来还是蛮方便的;希望对大家有帮助!

2019-11-09

Nginx+Tomcat+Redis集群和session共享所有jar包(新)

Nginx+Tomcat+Redis实现应用服务器集群负载均衡和Session共享所需要的所有jar包,包括如下jar包:commons-logging-1.2.jar,commons-pool2-2.4.2.jar,jedis-2.8.2.jar,tomcat-juli.jar,tomcat-redis-session-manage-tomcat7.jar

2018-07-26

Nginx+Tomcat+Redis集群和session共享所有jar包

Nginx+Tomcat+Redis实现应用服务器集群负载均衡和Session共享所需要的所有jar包,包括如下jar包:commons-logging-1.2.jar,commons-pool2-2.6.0.jar,jedis-2.9.0.jar,tomcat-juli-7.0.90.jar,tomcat-redis-session-manager1.2.jar

2018-07-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除