自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

岸河世界

将军发于士卒

  • 博客(103)
  • 收藏
  • 关注

原创 jvm调优经验总结

jvm调优分析

2023-03-01 18:04:15 484 1

原创 【IDEA快捷键】收起目录

IDEA常见快捷键

2022-12-26 17:01:11 628

原创 IDEA打包deploy梳理

我们有时候经常需要将本地的包deploy到私服上去,可能是snapshot的,也可能是release的,具体逻辑如下deploy会涉及到两个仓库,一个是包下载仓库,一个是包上传仓库,完成一次deploy,我们要清楚这两个标签内的内容包下载路径是从maven的settings文件的标签内配置的仓库下载的包上传是根据distributionManagement发布管理标签上传的但是不同的deploy方式,会走不同的配置文件,我们需要关注一下包下载第一种方式包下载,通过terminal命令

2022-04-01 08:06:33 8475

原创 漏桶算法代码简单实现

漏桶算法的意义在于能够平滑请求,不给下游服务造成过大压力,特别适用于突发流量或者定时任务拉取大量数据时,需要处理大量数据或者请求的场景。使用单线程的for循环太慢,使用线程池仍无法避免一瞬间会发起很多请求,我们需要的是匀速的请求第三方。拿定时任务补偿数据来说,每隔一分钟拉取100条数据,希望下游服务能在1分钟之内将这些数据处理掉就行,如果使用线程池,可能1秒钟之内就将20条数据发出去了,即使使用的线程数比较少,在一瞬间也会有多个请求发出,我们希望每间隔一定时间,发出一个请求,让下游服务匀速消化,即希望控

2022-03-18 09:22:36 729

原创 分享一个github使用技巧

有时候想搜一个类的示例或者含义,在百度上经常搜不到,或者搜到的都是一些无效信息。今天发现了一个github的好玩的用法,直接在github里搜这个类名,如下显示没有相关仓库无所谓,我们这里直接选择code![在这里插入图片描述](https://img-blog.csdnimg.cn/8313720ce03649a7825eb52aadf2fde4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NET

2022-03-10 07:35:37 168

原创 IDEA加快maven编译速度

IDEA的maven设置里面,将线程数设置为8,这个时候maven将使用多线程编译,速度会更快,我这边实测,速度大概快了3倍

2022-03-06 08:43:45 3132 1

原创 final修饰方法参数的意义或者作用是什么

方法参数上加final字段,再对参数进行赋值操作时会直接提示编译报错Cannot assign a value to final variable 'user'个人觉得更大的意义在于提示开发者,不要对方法参数进行变更,以免引起不必要的问题...

2022-03-06 07:14:37 369

原创 StringBuilder使用tips

StringBuffer太粗糙了,或者说锁的粒度太大了,只是简单粗暴的加在方法上,所以很少人使用。StringBuilder使用tipsnew StringBuilder的时候,如果拼接的字符串比较简单,可以直接new一个带初始化容量大小的StringBuilder,比如RocketMQ源码会有类似写法private String buildKey(final String topic, final int queueId) { StringBuilder sb = new String

2022-03-05 07:15:39 233

原创 【Java基础】Integer.parseInt(s)与Integer.valueOf(s)的区别

区别valueOf内部调用的是parseIntvalueOf返回的是包装类型,parseInt返回的是基本类型,基本类型不能equals比较数据大小valueOf内部会走Integer的静态内部类IntegerCache的判断逻辑,使用Integer数组存储一些缓存值,在其范围内的值会从缓存中取。最下范围是[-128, 127],最大值可以通过jvm参数值进行自定义配置,java.lang.Integer.IntegerCache.high但是不能小于127...

2022-03-04 21:40:46 316

原创 【面试题】求一串整数算式表达式的结果,1-2+3-4+5+7

两年前的面试题,早上突然想起来,写下算法有两点需要注意的Integer.parseInt方法可以将字符串“-2”解析成负数,不需要特殊处理从前向后遍历比较麻烦,换种思路,从后向前遍历,可以直接得到我们要的数字 public static void main(String[] args) { String input = new String("-1+2+3-4+5+7"); Integer result = 0; // 从后向前遍历

2022-03-04 08:34:02 161

原创 IDEA 编辑文本多行合并成一行

使用快捷键ctrl+shift+J,多行会变成一行,但是中间会多出一个空格,然后使用ctrl+R,替换掉空格就ok了

2022-02-19 10:18:58 2355

原创 Failed to configure a DataSource: ‘url‘ attribute is not specified

先说解决办法,看下自己的驱动包类是不是com.mysql.cj.jdbc.Driver之前写的是spring.datasource.driver-class-name=com.mysql.jdbc.Driver因为之前的SpringBoot版本较低,所以写这个没有问题错误提示Failed to configure a DataSource: ‘url’ attribute is not specifiedFailed to determine a suitable driver class

2022-01-18 22:53:00 678

原创 Invalid bound statement (not found)

网上各种原因都找遍了,都不是最后发现原因是@MapperScan注解写的太随意了,只定义了com.tang,导致扫包的时候扫到service类下去了。要写到mapper层接口的上一级包目录上面,类似`@MapperScan(basePackages ={"com.tang.mapper"})`...

2022-01-17 23:31:38 287

原创 Bean Validation 与 hibernate-validator

Bean Validation碎碎念基本介绍大家所知道的JSR 303,是参数校验Bean Validation的第一版规范,也称为Bean Validation 1.0,通过类似@Null,@NotNull,@NotBlank,@Valid的注解,帮助我们对参数进行校验。避免在业务代码中写长长的if else的判断。版本介绍但实际上,到2019年8月份的时候,这个参数校验的的规范已经到了到了Bean Validation 2.0 版本,规范也变了,Bean Validation 2.0是属于JSR

2022-01-16 12:38:27 1032 1

原创 CompletableFuture

CompletableFuture常用方法CompletableFuture的join方法可以直接拿到返回值supplyAsync,开启异步任务thenCompose,接收前面的返回值,前面执行完了再执行后面的thenCombine,两个任务一起执行thenApply,把前面异步执行的结果,交给后面的异步任务,同一个线程thenApplyAsync,把前面的几个结果交给后面的异步任务,不同线程 和thenCompose 比较像applyToEither,要么,上个任务和这个任务一起运行,哪个

2022-01-15 23:23:12 1586

原创 Bean Validation 从JSR 303到JSR 349到JSR 380

参数校验,是我们绕不过去的话题。Controller参数校验,Service层参数校验。如何形成一套标准的,满足各场景的参数校验规范,是一件很重要的事,本篇文章,就来聊一聊参数校验相关规范与发展。Java(也就是Jakarta,从18年以后,Java EE 正式改名为 Jakarta EE 了。)参数校验的官网地址:https://beanvalidation.org/java中参数校验版本变化如图是官网中的Bean Validation的版本历史,从JSR 303到JSR 349到JSR 3.

2022-01-15 23:19:05 369

原创 Spring-Boot参数校验规范 Bean Validation ; Hibernate Validator

Spring-Boot引入版本依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>注意,高版本的Spring-boot,不需要再单独引入validation-api或者hibernate-validator了,我

2022-01-15 20:31:27 261

原创 @NotNull注解不生效

进行参数校验的时候,加了@NotNull注解,@Validated注解和@Valid注解,但是参数校验的时候不生效。最后发现是因为我的Spring-boot版本较高,后面不需要引入validation-api,hibernate-validator这种依赖,直接引入spring-boot-starter-validation即可,其他的依赖都可以去掉了<dependency> <groupId>org.springframework.boot</groupId

2022-01-15 20:22:29 5313

原创 Correct the classpath of your application so that it contains compatible versions of the classes org

解决办法一般这种错误都是重复引入包了,看具体报错的是哪个类,把这个依赖注释掉比如我的完整报错是:Correct the classpath of your application so that it contains compatible versions of the classes org.hibernate.validator.internal.xml.config.ValidationBootstrapParameters and javax.validation.BootstrapCon

2022-01-15 19:00:27 33260 1

原创 【业务线程池】 业务线程池实现多个任务并行处理

@RestControllerpublic class ApplicationTaskExecutorController { /** * 使用spring的默认线程池 */ @Autowired private ThreadPoolTaskExecutor applicationTaskExecutor; /** * 串行计算 */ @RequestMapping("save1") public String

2022-01-13 23:34:49 466

原创 Liunx查看一个进程有多少线程

在Liunx中进程和线程是没有区别的,平时我们可以使用# 拿java应用进程举例# top命令按cpu使用率查看top -Hp 19597# pstree查询列表pstree -p 19597| grep java# pstree查询线程总数pstree -p 19597| grep java|wc -l...

2022-01-07 06:50:40 247

原创 Spring-Boot中Redis的应用,lettuce与jedis

基本认识lettuce是什么?redis客户端,也是spring-boot中redis客户端的默认实现jedis是什么?redis客户端,如果在Spring-boot中使用jedis,需要额外添加jedis依赖,然后指定client-type为jedis讲讲Spring-boot项目中redis相关依赖一般来讲,Spring-boot项目中的redis都是spring-boot-starter-data-redis<dependency> <groupId&gt

2022-01-05 23:09:48 3634

原创 内部类如何访问外层变量

通过类名.this进行访问

2022-01-05 20:38:45 327

转载 线上异常堆栈不打印了

昨天晚上发布之前,遇到一个问题线上有一个异常问题,频繁打日志,由于是非核心业务,已经很晚了,就决定第二天再看。结果第二天的时候一看,搜不到完整的异常堆栈了,只能看到2行堆栈信息各种grep,tail都没找到完整的堆栈信息最后终于找到原因了jdk1.5之后的一个优化,频繁抛出的异常,JIT会重新编译后抛出没有堆栈的异常...

2022-01-05 15:09:12 412

原创 Java线程池 ThreadPoolExecutor 业务线程池

1.什么是业务线程池?在业务开发中,用来处理业务的线程池。2.为什么需要业务线程池?大多数同学都是做业务开发的,很多业务的操作并非要求一定是同步的。例如,对于一系列连续的业务逻辑处理,很多都是数据的组装,拼接,查询,或者将数据同步给各个下层业务(对事务性没有严格要求);或者对数据的批量操作;这些都可以是异步的。通常业务项目使用的都是的servlet框架,都是使用一个线程进行业务逻辑处理,这种模型是通用的,但不一定是最佳的,不一定是最适合的。需要我们业务开发者根据实际的业务场景去灵活应用,达到最快的响.

2021-12-31 18:08:33 1641 1

原创 代码整洁之道 阿里规约

命名:类名一般用名词,方法名一般用动词,表名不用tableif方法一般内部只放一行代码,一个方法的参数最好不要超过3个,同一块代码多个方法的层级应该保持一致常量的好处是便于检索,见名知意,且常量更要见名知义,长点无所谓方法参数尽量不要传布尔值方法名称可以长点,见名知义多层级的if,else也可以用try catch来优化复杂的&& ||布尔表达式,直接用一个函数命名除了BO/DO/DTO/VO/AO/PO/UID,其他的都要按驼峰的规则来...

2021-12-29 08:32:27 281

原创 设计模式简述

模板方法抽象类定义抽象方法,子类实现(中间可以加一个adapter,就变成适配器模式)。更常用的,使用组合的方式,类似回调处理,实现类在方法实现时实现接口,可以减少继承。策略模式基于注册的策略模式,才真正可以做到开闭原则...

2021-12-29 08:30:27 197

转载 Spring之@Nullable、@NonNull注解

@NonNull可以标注在方法、字段、参数之上,表示对应的值不可以为空@Nullable注解可以标注在方法、字段、参数之上,表示对应的值可以为空以上两个注解在程序运行的过程中不会起任何作用,只会在IDE、编译器、FindBugs检查、生成文档的时候有做提示;我使用的IDE是STS,不会做自动的检查,只有安装了FindBugs插件并运行后会做对应的提示...

2021-12-28 23:26:12 693

原创 intellij idea 多行编辑 列编辑 多行 列 编辑

第一步:File——>Settings——>搜索 column selection mode(windows上默认的快捷键是:shift + alt + insert)第二步:鼠标放在你需要多行编辑的地方,ctrl + A 全选需要执行多行编辑的内容第三步:按住shift + alt,再按2次insert,全选的内容就出来了,就可以自由编辑了...

2021-12-27 09:24:49 3938

原创 Netty 面试题

Netty面试题整理官方罗列的相关文档(有部分中文文档)https://netty.io/wiki/related-articles.htmlJava Guide整理的,目前已经在知识星球收费了https://baijiahao.baidu.com/s?id=1669639041722396699&wfr=spider&for=pc关于Reactor模式,零拷贝,TCP的粘包拆包问题https://blog.csdn.net/qq_34039868/article/details

2021-12-27 07:32:26 169

原创 BIO(Blocking IO)多线程版本

BIO(Blocking IO)多线程版本BIO多线程版本即每次客户端来连接时,都单独创建一个线程和客户端进行通信。代码示例public static void main(String[] args) throws IOException { ServerSocket socket = new ServerSocket(8082); while (true) { try{ System.out.println(

2021-12-26 12:46:13 477

原创 BIO(Blocking IO)单线程版本

BIO(Blocking IO)单线程版本java 阻塞性IO,又称为BIO,OIO,或者经典IO,下面是经典IO的单线程版本代码示例public static void main(String[] args) throws IOException { ServerSocket socket = new ServerSocket(8081 ); while (true) { try{

2021-12-26 12:22:19 689

原创 《Netty in action》《Netty 实战》学习笔记

Netty in action学习笔记1.Netty——异步和事件驱动# 查看本地线程栈大小,我本地是8192,即8M,进程栈不会大于线程栈的2倍ulimit -s异步和可伸缩性,是netty的特色,正因为一步,所以才提高了可伸缩性future虽好,但是缺乏了事件通知机制,导致我们不得不手动检查或者一直阻塞到事件完成,ChannelFuture通过注册一个或多个ChannelFutureListener实例,实现了事件监听因为netty是异步的,所以Channel的操作会返回Cha

2021-12-18 20:58:36 321

原创 Netty 学习笔记(已完结)

Nettynetty执行流程分析与重要组件介绍应用rpc通信框架,通信协议(基于Socket,应用场景广泛)长链接服务器(web socket服务器)http服务器(jetty,tomcat类似的servlet容器,不过其编程模型并不是基于servlet规范的,其参数获取,参数封装是有差异的,其并没有实现servlet规范,servlet接口)特点netty涉及到了很多对线程的处理,对线程的控制,还有对IO异步的操作,异步的调度http 服务器的应用核心概念:channel,通道,类

2021-12-08 23:37:20 1764

原创 nested exception is java.lang.IllegalArgumentException: Extension name == null

报错信息:nested exception is java.lang.IllegalArgumentException: Extension name == nulldubbo调用的时候,有时候为了方便本地调试,会在@DubboReference注解上指定url,以便请求能够指定路由到指定应用。类似@DubboReference(url = “192.168.12.345:20890”,timeout =1000000)然后调用方应用在启动的时候,就一直报上面这个错查找了一个小时,终于找到原因了

2021-11-10 17:05:03 2218

原创 Circular view path would dispatch back to the current handler...This may be the result of an unspeci

问题背景项目升级了SpringBoot 2.2.7之后,项目中少数遗留的前后端未分离的界面出现问题完整报错信息Circular view path would dispatch back to the current handler…This may be the result of an unspecified view, due to default view name generation解决办法添加配置spring.freemarker.suffix=.ftl...

2021-10-27 14:28:16 885

原创 记录两个IDEA源码调试的小技巧

记录两个IDEA源码调试的小技巧当某个类的实现类比较多的时候,不知道具体代码走的是哪个实现类,这个时候可以启动项目debug跟一下,在关键代码那一行打个断点,然后看一下实现类是什么,然后进入实现类,debug再打一个断点,再验证一下能不能debug进去就OK了当我想验证一下某个项目有没有调用一个底层方法,可以直接在底层方法加个断点,比如我想验证一下SpringBoot启动的时候有没有使用堆外内存,或者什么时候使用的堆外内存,可以在java.nio.ByteBuffer#allocateDirect里加

2021-10-09 16:43:03 290

原创 一些常见的即将废弃的jvm参数说明

jdk1.8.0_171,在应用启动的时候,配置如下jvm参数,会出现警告信息-XX:+UseFastAccessorMethods含义:get,set 方法转成本地代码(对于jvm来说是冗余代码,jvm将进行优化)说明: UseFastAccessorMethods option is harmful and has been removed in JDK 9. You need to delete this option from run configuration.-XX:+UseCo.

2021-10-04 14:27:30 1456

原创 .java文件转换成jvm指令

方法一将.java文件转成.class文件windows上javac编译带有汉字的.java文件,会出现错误编码 GBK 的不可映射字符,这个是字符集问题,我们需要加上一个参数 javac -encoding UTF-8 Hello.java将.class文件转成jvm指令javap -v Hello.class -v verbose表示 输出附加信息(包括行号、本地变量表,反汇编等详细信息)javap -c Hello.class -c表示对代码进行反汇编方法二IDEA安装插件A

2021-09-21 14:33:41 197

原创 snipaste截图工具下载

官网地址:https://zh.snipaste.com/

2021-09-05 11:24:36 174

空空如也

空空如也

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

TA关注的人

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