- 博客(43)
- 收藏
- 关注
原创 SDK打包
按照正常的思维来说,既然我SDK引入了该依赖,那么在使用SDK的时候,理应不需要再单独引入格外的依赖,根据该思路发现了”胖 JAR“,构建一个包含所有依赖的“胖 JAR”(也称为 Uber JAR)。最近项目中在压测的时候需要提供一个SDK在jmeter中使用,但是在对该SDK生成jar包之后,jmeter脚本使用过程中发现SDK所引入的依赖并没有办法只用,或者说SDK的jar包并不包含所引入的依赖。控制台执行该命令即可生成胖JAR。build.gradle配置。
2025-01-08 17:57:43
335
原创 RestTemple请求GET接口403
使用oss接口获取资源的时候,通过浏览器可以直接下载,在代码中使用RestTemplate的get方式访问的时候,出现403错误。restTemplate默认的生成url的方式会出现该问题,所以考虑自己将url转成uri对象。比对url之后发现实际调用的url已经够被改变。
2024-06-20 16:15:44
708
原创 Windows下使用Docker安装nacos踩坑记录
一直看下边的错误日志然后在网上找解决问题的方式,因为是第一次使用windows的Dcoker方式安装nacos,所以就想着是自己安装方式不对。多次重装及其他思路无果之后,再次查看控制台日志发现问题,nacos的端口默认不是8848吗,我也没改,怎么请求到了9848上了啊。Nacos2.X版本之后,新增了gRPC的通信方式,新增了9848,9849端口。增加对应端口映射即可。正常拉取镜像,然后启动容器;
2024-06-04 11:14:03
396
原创 Docker容器网络互联
docker网络命令前缀创建一个网络:docker network create 自定义网络名称查看所有网络:docker network ls删除指定网络:docker network rm 网络名称可使用 docker network --help 查看更多启动容器时指定网络:docker run -d --name 容器名称 -p 8080:8080--network 自定义网络名称 镜像名称。
2024-05-20 16:06:40
346
原创 windows下Arthas简单使用
在jdk的bin目录下打开cmd,然后执行。执行命令后边是安装之后arthas-boot.jar所在的路径。然后执行对应的方法时,就可以查看方法的执行次数、耗时百分比、耗时等信息;先根据本地服务端口号获取PID。启动之后输入PID对应的序号。
2023-12-08 12:08:35
1638
原创 windows安装kafka
kafka安装路径下的bin\windows目录下的zookeeper-server-stop.bat。kafka安装路径下的bin\windows目录下的kafka-server-stop.bat。kafka安装路径下的bin\windows目录下打开cmd。kafka安装路径下的bin\windows目录下打开cmd。直接解压即可,然后修改配置文件。kafka安装路径下打开cmd。kafka安装路径下打开cmd。kafka安装路径下打开cmd。
2023-08-02 17:33:00
136
原创 IDEA常用快捷键、插件、设置
Ctrl + Alt + Shift + Insert:创建临时文件,不会保存到磁盘中。Ctrl + Alt + Shift + T:打开重构列表。Ctrl + Shift + R:替换字符(所有文件)Ctrl + Shift + F:查找字符(所有文件)Ctrl + Shift + U:大小写转换。Ctrl + Alt + M:提取方法。Ctrl + Alt + P:引入参数。Ctrl + Alt + V:引入变量。Ctrl + Alt + F:引入域。Ctrl + Alt + N:内联。
2023-06-05 17:52:01
602
原创 JAVA基础面试题
hashCode方法默认是对堆上的对象产生独特值,如果没有重写hashCode方法,则该类的两个对象的hashCode值肯定不同;在实际应用中,如果我们需要定义一些公共行为,或者需要实现多重继承的功能,那么可以选择接口;equals首先比较的是内存地址,如果内存地址不同再比较对象的类型,类型不同再比较值;如果没有重写equals方法,那么equals和==的作用相同,比较的是对象的地址值。hashCode方法返回对象的散列码,散列码的作用是确定该对象在哈希表中的索引位置;继承就是子类继承父类的特征和行为。
2023-04-23 12:03:26
111
原创 集合面试题
哈希算法是指将任意长度的二进制映射为固定长度的较小的二进制值,这个较小的二进制值叫做哈希值、链表是可以将物理地址上下不连续的数据连接起来,通过指针来对物理地址进行操作,实现增删改查等功能。链表大致分为单链表和双向链表:单链表每个节点包含两部分,一部分存放数据变量的data,另一部分是指向下一节点的指针;双向链表除了包含单链表的部分,还增加的pre前一个节点的指针。
2023-04-13 15:42:07
142
原创 数据库面试题
in和not in也要慎用,索引不是越多越好,索引固然可以提高select的效率,但同时也降低了insert和update的效率,因为insert和update的时候有可能重建索引,查询条件左侧尽量不要使用聚合函数,否则索引失效。使用聚集索引,索引和记录在一起存储,即缓存索引,也缓存记录。对于索引在mysql调优方面是一个比较大的过程,比如说创建索引时,会考虑一下几个因素:首先覆盖索引,因为覆盖索引可以减少回表次数,mysql5.6以后对覆盖索引做了进一步的优化,支持索引下推的一个功能。
2023-04-05 16:36:38
129
原创 JVM面试题
从一系列的“GC Roots”对象开始向下搜索,搜索走过的路径称为引用链,当一个对象到“GC Roots”之间没有引用链时,被称为引用不可达,不可达对象并不等价于可回收对象,不可达对象变为可回收对象至少要经过两次标记的过程,两次标记后都是不可达对象就是可回收对象,则将面临回收。在java中,引用和对象是有关联的,如果要操作对象则必须用引用进行,因此很显然一个简单的办法就是通过引用计数来判断一个对象是否可以回收,但是引用计数法没办法解决循环引用的问题,所以一般都是用根搜索法。
2023-04-05 11:37:36
86
原创 java锁面试题
偏向锁运行在一个线程进入同步代码块的情况下当第二个线程加入锁争用的时候,偏向锁就会升级为轻量级锁也就是自旋锁(自旋锁的目的就是为了不让线程阻塞,而采用循环去获取锁的过程),轻量级锁膨胀之后,就升级为重量级锁(synchronized就是重量级锁)了也就是互斥锁。JavaSE1.6为了减少获得锁和释放锁带来的性能损耗,引入了“偏向锁”和“轻量级锁”,在JavaSE1.6中,锁一共有4中状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。
2023-04-05 10:50:20
200
原创 线程面试题
run()是在本线程里的,只是线程里的一个函数,而不是多线程,如果直接调用run(),其实就相当于调用了一个普通函数而已;调用start()方法,会启动一个线程并使线程进入就绪状态,当分配到时间片后就可以开始运行,start()会执行线程的相应准备工作,然后自动执行run()方法,这是真正的多线程工作;submit()和execute()都是用来执行线程池的,只不过使用execute()执行线程池不能有返回方法,而使用submit()可以使用Future接收线程池执行的返回值。
2023-04-04 18:16:04
138
原创 redis面试题
获取锁的时候,使用setnx加锁,并使用expire命令设置一个超时时间,超过该时间则自动释放锁,锁的value值为一个随机生成的UUID,释放所得时候通过此值进行判断,获取锁的时候还设置一个获取的超时时间,若超过这个时间则放弃获取锁。缓存穿透是指查询一个一定不存在的数据,由于缓存不命中,就会去数据库中查询,数据库中也没有对应的数据,因此也不会写入缓存,这就会导致每个查询都会请求数据库,对持久层数据库造成很大的压力,这就是缓存穿透。确定:如果无用的key一直不被访问,则不会执行删除,占用内容。
2023-04-04 11:03:05
131
原创 问题: InvocationTargetException
在使用反射进行调用controller的查询方法进行导出时,被框架配置的web拦截器拦截,@Pointcut("execution(public * com.meditrusthealth.fast..controller.*.*(..))") public void fastExpression() { }```真正拦截器的作用是使controller层只能被web进行调用;但是因为表达式public * com.meditrusthealth.fast..controller.*.*(..)
2021-12-29 14:59:03
643
原创 线程池配置类
@Slf4j@Configuration@EnableAsyncpublic class TaskExecutorConfig implements AsyncConfigurer, InitializingBean { @Value("${config.task.corePoolSize}") private int corePoolSize; @Value("${config.task.maxPoolSize}") private int maxPoolSize; @Value("
2021-11-03 15:06:13
527
原创 xxljob配置
1,引入jar包<!-- xxl-job-core --> <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.2.0-SNAPSHOT</version> </dependency>2,添加配置文件信息xxl.job.admin.ad
2021-10-20 11:32:53
353
原创 全局异常处理
@RestControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ModelAndView customException(Exception e){ ModelAndView mv = new ModelAndView(); mv.addObject("message",e.getMessage());
2021-09-15 17:18:32
59
原创 mybatis-plus的generator配置
下载myBatisX插件,用mapper和xml方法的跳转<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration> <con
2021-09-15 16:09:16
780
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人