自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(275)
  • 资源 (2)
  • 收藏
  • 关注

原创 我的技术博客(Java后端成长路线)

各位大佬们,CSDN的博客好久没有更新了。大家感兴趣的话,可以关注我的个人博客跳转链接 ???? 【GeekIBLi】我的博客总结的东西相对系统一些,体系化一些,感兴趣的可以看一下。博客是我本人学习过程中自己记录和总结的,可能会有理解错误的地方,欢迎大家指正,共同进步吧!下面是一些截图:????Java并发编程相关文章设计模式相关的文章TCP协议相关的...

2021-08-17 13:52:50 204

原创 2022年我干啥去了

最近半年干啥去了。。。

2022-07-07 15:20:34 277

原创 Arthas-Java诊断神器

我的Github-Java后端成长路线https://github.com/geekibli/java-studyArthas-Java诊断神器官方文档地址 ???? https://arthas.aliyun.com/doc/index.html#1. 安装arthaswget https://arthas.aliyun.com/arthas-boot.jarjava -jar arthas-boot.jar --target-ip 0.0.0.0如果你的机器没有任何java进程在

2021-08-20 19:05:33 731

原创 Java并发编程之Blocking Queue

Blocking QueueA blocking queue is a queue that blocks when you try to dequeue from it and the queue is empty, or if you try to enqueue items to it and the queue is already full. A thread trying to dequeue from an empty queue is blocked until some other th

2021-08-19 15:40:43 476

原创 JVM-垃圾收集器

JVM系列文章收集在我的Github-Java后端成长路线中https://github.com/geekibli/java-study1、什么是垃圾收集器如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。JVM规范对于垃圾收集器的应该如何实现没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器差别较大,这里只看HotSpot虚拟机。 就像没有最好的算法一样,垃圾收集器也没有最好,只有最合适。我们能做的就是根据具体的应用场景选择最合适的垃圾收集器。上图展.

2021-08-18 16:31:49 236

原创 彻底搞懂Java线程池

ThreadPool1. 为什么存在线程池1.1 降低资源消耗通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗;(享元模式)1.2 提升系统响应速度通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度;1.3 提高线程的可管理性线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此,需要使用线程池来管理线程。至于为什么不允许手动创建线程池,请参见https://dayarch.top/p/why-we-need-to-use-thread

2021-08-10 13:27:38 1673

原创 Java多线程之join方法

个人技术博客(IBLi)CSDN Github掘金参考资料1、Java多线程中join方法的理解2、Thread.join的作用和原理3、Thread.join的作用和原理join方法join重载方法1 join()2 join(long millis) //参数为毫秒3 join(long millis,int nanoseconds) //第一参数为毫秒,第二个参数为纳秒功能演示public class JoinDemo implement.

2020-09-21 23:16:24 910

原创 Java泛型详解

Java泛型个人技术博客(IBLi)CSDN Github掘金1、泛型定义使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后在进行强制类型转换的代码具有更好的安全性和可读性。 --《Java核心技术》泛型是在编译时期作用的;泛型变量使用大写形式,在Java库中,一般使用变量E表示集合的元素类型,K和V表示表的关键字与值的类型。2、通配符2.1 无边界通配符无边界通配符又成为非限定通配符public static void main(String[]

2020-09-19 22:54:07 224

原创 Java反射获取List的泛型

Java反射获取List的泛型public static void main(String[] args) throws NoSuchFieldException { Field listField = ListTest.class.getDeclaredField("users"); Type genericType = listField.getGenericType(); System.err.println("genericType name "

2020-09-18 20:10:47 676

原创 Java反射详解

个人技术博客CSDN Github掘金反射反向探知,在程序运行是动态的获取类的相关属性这种动态获取类的内容以及动态调用对象的方法和获取属性的机制,叫做java反射机制;反射的优缺点优点增加了程序的灵活性,避免的固有逻辑写死到程序中代码简介,提高程序的复用性缺点相比于直接调用,反射有比较大的性能消耗内部暴露和安全隐患 (因为反射可以操作private成员变量和调用private成员方法)反射的基本操作获取类对象的4种方式// 调用forName方法得.

2020-09-18 17:40:19 181

原创 FutureTask源码解析

参考资料(1) future.get方法阻塞问题的解决,实现按照任务完成的先后顺序获取任务的结果(2) Java多线程引发的性能问题以及调优策略(3) 可取消的异步任务——FutureTask用法及解析(4) FutureTask源码解读Future方法介绍public interface Future<V> { // 取消任务 可中断的方式取消 boolean cancel(boolean mayInterruptIfRunning);

2020-09-17 17:37:06 368

原创 Spring中的InitializingBean接口

Spring中的InitializingBean接口前言Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,常用的设定方式有以下三种:通过实现 InitializingBean/DisposableBean接口来定制初始化之后/销毁之前的操作方法;通过元素的 init-method/destroy-method属性指定初始化之后/销毁之前调用的操作方法;在指定方法上加上@PostConstruct或@PreDest

2020-09-08 21:27:36 243

原创 JDK自带HttpServer处理Http请求

下面是JDK自带的HttpServer处理Http请求的源码和流程,我看网上貌似还没有介绍这个的流程,所有就画了一下,如有不足,请矫正。1、官方APIhttps://docs.oracle.com/javase/7/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/HttpExchange.html2、启动一个HttpServer demo: privatestaticfinalMap<String, Htt...

2020-07-27 22:06:37 1391

原创 Java调用shell脚本

public class ShellTest { private String callScript( String... workspace) { try { File dir = null; if (workspace[0] != null) { dir = new File(workspace[0]); System.out.println(workspace[.

2020-07-23 17:10:07 470

原创 Spring BeanFactory结构图

下面是我在IDEA中导出的一份Bean Factory的实现结构图,个人习惯,学习源码的时候,先要掌握一个大体的结构,有哪些方法,哪些属性,哪些实现类,依赖哪些interface或者class,掌握他们的关系之后,再仔细的去阅读和学习源码。...

2020-07-21 16:26:15 437

原创 Git统计代码量

在git客户端或服务终端输入以下命令:find . "(" -name "*.java" ")" -print | xargs wc -l效果如下:上面的每一行是你提交的文件以及行数,最后total是你这个项目提交的代码总行数。...

2020-02-10 19:33:57 833

原创 MySql IFNull()函数

背景:A 这张表的user_id 是user这整表的partner_id ,现在需要使用user的主键id正常的sqlUPDATE A old set user_id = (SELECT id FROM user WHERE partner_id = old.user_id);但是在开发环境去刷数据的时候,由于脏数据特别多,会出现赋值为null的情况,就是SELECT id ...

2020-02-10 16:49:48 273

原创 SpringBoot 项目启动加载数据到内存/Redis

@Order(1)@Componentpublic class YjStartRunner implements CommandLineRunner { @Resource private InitStartService initStartService; @Override public void run(String... args) { ...

2020-02-05 14:44:32 2419

原创 mybatis 时间区间查找

mybatis 时间区间查找 req.startTime -> date类型 <if test="req.startTime != null and req.endTime != null"> <![CDATA[ and DATE_FORMAT(ivo.created , '%Y-%m-%d')>= DATE_FORMAT(...

2020-02-03 21:33:52 975

转载 Spring获取环境变量profiles值

业务需求:针对业务的一些告警,需要区分是线上环境的告警还是开发和测试环境的告警,然后发送到不同的微信群。具体工具类:import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.contex...

2019-12-12 23:18:00 2172

原创 mybatis tingint类型对应boolean/byte

mysql数据库表中字段类型为:tinyint长度为1,即类型为:tinyint(1)使用Mybatis查询tinyint字段数据,那么tinyint的数据默认会转化为boolean类型数据,如何将改字段的java类型设置为Integer?解决方案: 1.使用ifnull(column, 0)处理该字段,个人测试过可以; 2.在jdbcUrl添加参数:tinyInt1isBi...

2019-10-17 13:35:59 1881

原创 It is required that your private key files are NOT accessible by others

It is required that your private key files are NOT accessible by others@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: UNPROTECTED PRIVATE KEY FILE! @@@@@@@...

2019-10-08 19:19:27 28258 6

原创 修改 usr/bin 目录权限

修改 usr/bin 目录权限1)重启,过程中按住 command+R,进入保护模式,点击实用工具2)打开terminal终端,输入csrutil disable3)再次重启,即可对 usr/bin 目录下文件进行修改如果要恢复保护机制,重新进入保护模式,输入csrutil enable...

2019-09-24 13:29:14 3068

原创 Mac下安装go语言开发包和配置环境

首先大家可以在 Go语言官网下载对应版本的的安装包(https://golang.google.cn/dl/):点击下载完成后双击安装就可以了。安装完成之后,打开终端,输入 go version 现实如下则安装完成:然后设置GOPATH环境变量:开始写 go 项目代码之前,需要我们先配置好环境变量。编辑 ~/.bash_profile(在终端中运行vi ~/.bash_...

2019-09-05 18:23:28 212

原创 mac 本地搭建kafka及简单案例

安装kafka$ brew install kafka(1) 安装过程将依赖安装 zookeeper(2) 软件位置/usr/local/Cellar/zookeeper/usr/local/Cellar/kafka(3) 配置文件位置/usr/local/etc/kafka/zookeeper.properties/usr/local/etc/kafka...

2019-08-10 16:30:58 896

原创 mac Vue环境的搭建&新项目创建

1、Mac下vue开发环境的搭建步骤以及新建项目总结:https://www.jianshu.com/p/2273e26ff6e82、Mac上搭建vue项目 :https://blog.csdn.net/weixin_42635599/article/details/81304077以上步骤亲测有效,十几分钟搞定环境安装和项目的新建...

2019-08-10 14:20:59 271

转载 mysql 如何查看sql语句执行时间和效率

查看执行时间1 show profiles;2 show variables;查看profiling 是否是on状态;3 如果是off,则 set profiling = 1;4 执行自己的sql语句;5 show profiles;就可以查到sql语句的执行时间;查看操作了多少行在sql语句前面加上 explain就可以了;explain select * fr...

2019-08-09 15:21:21 2589

转载 springboot 打印sql执行信息日志 (sql语句,执行时间)

最近接口ab压测,发现写接口比较慢,所以需要在日志中打印一些sql的执行时间,排查问题。@Aspect@Component@Log4j2public class MapperAspect { @AfterReturning("execution(* com.lsj.xcjfs.dao.*Mapper.*(..))") public void logServiceAcc...

2019-08-09 13:59:52 5092

原创 Guava Cache本地缓存在 Spring Boot应用中的实践

概述在如今高并发的互联网应用中,缓存的地位举足轻重,对提升程序性能帮助不小。而 3.x开始的 Spring也引入了对 Cache的支持,那对于如今发展得如火如荼的 Spring Boot来说自然也是支持缓存特性的。当然 Spring Boot默认使用的是 SimpleCacheConfiguration,即使用 ConcurrentMapCacheManager 来实现的缓存。但本文将讲...

2019-08-07 21:53:54 504

转载 sonar 规则总结

参考:sonar 规则总结

2019-08-07 16:50:36 818

原创 apache bench 压测 (POST/GET)

安装ab工具yuminstallhttpd-tools参数说明-n:执行的请求个数,默认时执行一个请求-c:一次产生的请求个数,即并发个数-p:模拟post请求,文件格式为gid=2&status=1,配合-T使用-T:post数据所使用的Content-Type头信息,如果-T 'application/x-www-form-urlencoded'...

2019-08-07 12:58:17 598

原创 AOP注解检测接口响应时间

首先自定义注解:@Time@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Time { String value();}设置通知(advice)@Aspect@Order(1)@Component@Lazy(false)public class ...

2019-07-27 18:13:00 1147

原创 mysql 数据类型

参考资料 :w3c :https://www.runoob.com/mysql/mysql-data-types.htmlmysql 数据类型 :https://www.cnblogs.com/-xlp/p/8617760.html

2019-07-24 19:22:01 142

原创 springboot全局异常处理 --- @ControllerAdvice

1、首先我们可以针对自己的业务创建自定义异常,系统层面,业务方面等我们系统业务层统一使用BizException,这个是自定义的。2、配置controllerAdvice下面是代码:@ControllerAdvice@ResponseBodypublic class ControllerExceptionHandler { /** * 日志...

2019-07-24 17:07:15 251

原创 LocalDateTime 时间戳 字符串 之间的转换

1、时间戳转LocalDateTime2、LocalDateTime转时间戳3、dateString 转 LocalDateTime4、LocalDateTime转dateString public static void main(String[] args) { Long time = 1562983881098L; LocalDateTime...

2019-07-13 10:41:44 5233 3

原创 java dataUtils

获取当前时间和前一天凌晨时间: LocalDateTime now = LocalDateTime.now(); refundMonitorListReq.setCreateBeginTime(getLastDay(now)); refundMonitorListReq.setCreateEndTime(getThisDay(now));/** ...

2019-07-12 19:24:32 287

原创 mybatis string转date

需求是进行列表查询,传如的参数是string,数据库的类型是timestamp(对应java的date)mybatis 中做一下处理:<if test="createBeginTime != null and createBeginTime != ''"> and create_time <![CDATA[ >= ]]> DAT...

2019-07-11 17:08:09 4408

原创 mysql中int,bigint,smallint 和 tinyint的区别详细介绍

Number 类型:数据类型描述TINYINT(size) -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。占1个字节的存储空间。SMALLINT(size) -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。占2字节的存储空间。MEDIUMINT(size) -8388608 到 8388607 普通。0 to 16...

2019-06-26 14:09:15 2344

原创 xxl-job分布式任务调度项目搭建(单机部署demo)

今天学习了一下分布式任务开源项目xxl-job,然后自己在本地“搭建”了一个单机的任务项目。写了一个定时任务,每分钟向数据库中添加一条数据,很简单的项目,大家可以通过该项目作为xxl-job的入门小试。先介绍一下大致是怎样的吧:第一部分,xxl-job作为一个单独的项目,需要部署在tomcat上面,当然是进行一些简单的配置之后。第二部门,是我单独创建了一个springboot项目,...

2019-04-23 20:49:17 4724 3

原创 MySQL中distinct和group by性能比较

在分组字端是单字端的情况下:没有创建索引时:distinct比group by 要慢一些 在数据量为10万的时候,用时0.78秒group by 耗时0.31在创建了索引之后:discinct的时间较少了107倍group by 加快了43倍以上为实验证明大家有时间可以测试一下多字端去重!!!...

2019-04-19 16:32:51 966

jsonview插件

jsonview插件,可在谷歌浏览器中安装,方便web开发中对json数据的查看和检查

2018-09-27

spring-boot-mybatis-mysql-demo

springboot+mybatis 实现对mysql数据的增删改查。可以直接导入项目使用启动springboot的启动类run.java,在浏览器中输入localhost:8080回车即可

2018-09-15

空空如也

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

TA关注的人

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