- 博客(56)
- 资源 (3)
- 收藏
- 关注
原创 阿里开源TransmittableThreadLocal使用经验记录
本文章主要记录我在一次业务优化中,使用线程池带来的子父线程值传递问题,及使用TransmittableThreadLocal来解决该问题的经验,并对TransmittableThreadLocal原理做些梳理。
2022-06-01 10:07:41
2773
原创 阿里开源TransmittableThreadLocal避坑
前言 最近优化公司项目一个功能,由于牵涉到数据量比较大,业务复杂,之前单线程执行响应时间比较久,大概10s左右。优化的思路,想到了多线程执行。 由于业务中使用了ThreadLocal,它是来解决变量在多线程使用相互影响问题,ThreadLocal能够做到变量在多线程间隔离,是因为每个线程将变量存储到自己的threadLocals(ThreadLocal.ThreadLocalMap类型)中。如果使用多线程话,需要解决父子线程值传递问题,想到了InheritableThreadLoc...
2021-12-09 16:38:13
5096
3
原创 springboot 实现图片上传功能
环境介绍springboot 版本2.1.3<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <relativePath /></paren
2021-01-12 10:17:49
901
1
原创 springboot 多模块使用Jib插件发布镜像
前言:如果项目是单体,使用的tomcat是springboot内嵌tomcat。直接使用mvn clean compile jib:build -DsendCredentialsOverHttp=true 打包发布镜像即可。现在springboot项目都是多模块具备父子结构项目。如果你想在A模块打包镜像发布到镜像仓库中心,但A模块依赖B模块,B模块需要被打成jar依赖到A模块中,这种情况使用jib:build命令,将会找不到B依赖。处理办法:将jib与mvn构建的生命周期绑定<ex.
2020-12-31 16:30:06
1634
4
原创 linux 安装rabbitmq
第一步:安装前环境检测,RabbitMQ是用Erlang语言编写的,需要有Erland环境。命令:erl -version 如果显示 未找到命令 ,需要安装Erland安装epcl存储库命名:yum -y install epel-release安装erland 命令:sudo yum install erlang再次执行erl -version 查看erland版本 可以看到对应版本号 如下:Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulat..
2020-12-30 11:41:36
352
2
原创 Docker 部署web应用,获取项目根目录问题
问题描述: 项目中将一些文件存在容器根目录某文件夹下,获取项目根目录地址:request.getSession().getServletContext().getRealPath("/)使用自制的tomcat镜像,docker容器部署项目话,获取不到结果。问题处理:更改项目根目录获取方式:String rootPath= 类.class.getClassLoader().getResource(".").getFile();File classFile = new File(rootPath)
2020-12-09 14:26:29
1581
原创 docker 制作tomcat9.0 镜像 并修改context.xml内容
第一步:资源准备准备jdk 和tomcat 安装文件jdk-8u144-linux-x64.tar.gz apache-tomcat-9.0.39.tar.gz第二步:编辑Dockerfile 文件我将所有文件存在/root 目录。文件说明:context.xml 是我准备替换tomcat conf 目录下面的context.xml文件,该文件存在了数据源jndi 方面配置信息。readme.txt是一个空文件下面开始编辑Dockerfile文件FROM centosM..
2020-11-19 15:36:34
917
原创 linux 安装python3.6.10
第一步:下载离线安装包,使用.tgz 格式,为.tar.giz格式缩写(官网地址:https://www.python.org/downloads/release/python-3610/)第二步:环境检测与安装python安装需要有gcc环境 环境检测:gcc --version如果缺少gcc环境 则安装gcc 命令:yum install gcc zlib-devel open...
2020-11-19 10:22:00
251
原创 win10 修改c盘用户文件夹名称
c盘用户文件夹如果是中文名 可能会导致需要没必要的麻烦,记录一下修改方法第一步:如果你电脑不是本地用户administrator,注销当前用户使用administrator登录按win+x 点击关机或注销 在点击注销注销后如果没有Administrator登录方式,尝试一下方法打开命令行 输入:net user administrator /active:yes成功即可。如果出...
2020-03-10 11:18:00
256
原创 RabbitMQ 3.8.2版本 window 安装教程
第一步安装Erlang下载安装 Erlang为RabbityMQ的开发语言和运行环境。 安装Erlang时要注意安装的RabbityMQ所依赖的Erlang版本,具体依赖版本请参考 Erlang Versions网址:http://www.rabbitmq.com/which-erlang.html --查看RabbitMQ和Erlang的对应关系Erlang下载地址:http://w...
2020-03-10 10:05:00
242
原创 maven intall 命令用法
作用:将自定义maven项目 打成maven依赖存放到本地库,我们可以在另一个项目pom文件中加入相应依赖,刷新mavne即可将其加入项目中使用使用说明:win+R 打开命令窗口,将目录切换至项目所在位置,执行maven install --settingD:\apache-maven-3.3.9\conf\setting.xml (备注:--setting 参数指所使用的本地库地址,...
2020-02-25 15:10:00
523
原创 redis 模糊查询与删除
创建一条数据set name1 zhangsan查询get name1在创建一条数据set name2 lisi查询get name2模糊查询keys name*查询结果 name1 name2删除当前库中所有keyflushdb删除多有库中所有keyflushall批量删除以name开头的所有key退出redis-cli 客户端执行命令:redis-cl...
2020-01-16 17:52:00
129
原创 git 创建分支并提交代码
1、查看所有分支git branch -a2、查看当前分支git branch3、新建一个分支git branch feature-xx4、切换到新建分支上面git checkoutfeature-xx5、提交代码到本地缓存区git add .6、添加提交的代码备注git commit -m "备注内容"7、推送提交的代码到远程新建的分支上面git push orig...
2020-01-03 09:05:00
75
原创 win10提示防火墙没有法更改某些设置的处理办法
一、问题发现远程链接电脑时间发现远程链接失败 提问在“控制面板” 中打开“程序” 列表中启用“windows 防火墙” 。按照提示启用防火墙 ,发现启用或关闭页面不可编辑二、原因是防火墙Windows Defender Firewall 没用启用打开电脑服务列表(win+r 然后输入services.msc)找到Windows Defender Firewall 服务右键点击属性...
2019-12-23 11:47:00
158
原创 oracle 实现主键id自增
公司现在项目数据库使用oracle,oracle实现表主键自增比mysql麻烦mysql 在表主键auto_increment 打钩即可。oracle没有改属性,就相对麻烦。特此记录一下自增方法测试案例如下第一步创建一张测试表table1sql语句create table table1( id int not null, name varchar2(20), sex varcha...
2019-09-16 17:29:00
86
原创 idea 将部分class文件打包成jar使用
工作中有时候有太多模块堆放一块比较混乱,将某个功能(例如:三方支付)所需要的模块打包成jar使用起来会方便点。步骤如下:选择 Empty,然后为自己打的jar起个名字然后在myjar上面右键 创建一个目录如果红色箭头。接着在com模块上面创建模块接着创建最后结构图下一步就是向包model、util中添加对应的class文件点击+ 号 选择file,选择你项目编译后对...
2019-05-30 15:54:00
173
原创 liunx mysql 5.7 二进制安装
liunx 5.6版本 本人安装次数不下20次,基本上按照正常的操作流程不会出现什么问题,一切顺利。今天开发新项目需要按照mysql 5.7 版本。mysql 5.7版本和mysql 5.6版本变化挺大的,按照流程稍作休整。例如:mysql 5.6 初始化使用scripts目录下面的mysql_install_db 命令,而mysql 5.7 初始化使用 bin目录下的mysqld -...
2019-05-29 11:26:00
99
原创 springboot 多模块打war 部署
先展示一下自己项目结构一共有5个模块依赖关系:下面的模块依赖上面所有的模块其中 rongke-web是我要部署的模块 最终要打war进行部署,其他模块均打jar 被rongke-web引用。开始打war前准备工作1、父pom.xml 移除spirngboot 自带的tomcat 导入外用tomcat依赖<dependency> <groupId>o...
2019-04-27 19:28:00
108
原创 springboot idea 代码更改自己编译设置
第一步:在pom.xml文件中添加springboot 编译依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true<...
2019-04-24 13:27:00
102
原创 spring 启动找不到shiro中 自定义的realm对应的class问题
干巴巴盯着项目半天,启动了好多次,每次都是sping报错找不到shiro配置文件中自定义的realm对应的class文件,明明有的,就是找不到。后来将eclipse对应的jdk1.7 更新为1.8 重新启动项目,好了。莫名奇妙,也不知道什么原因...
2019-04-17 14:16:00
113
原创 安装kafka过程及出现的问题解决
第一步:下载kafka安装包下载地址:http://kafka.apache.org/downloads解压 到/usr/local 目录tar -zxvfkafka_2.12-2.2.0第二步 下载zookeerper(之所以下载 是因为我使用kafka自带的 会出错)下载地址:http://zookeeper.apache.org/第三布:安装 zookeerper解压 ...
2019-03-28 16:57:00
251
原创 window mysql8.0 zip版本安装
第一步下载安装包官方下载地址:https://dev.mysql.com/downloads/mysql/解压到D盘目录中D://db第二步配置环境变量编辑path内容 添加mysql地址第三步 编辑my.int文件新建一个my.txt文件,内容[mysql]# 设置mysql客户端默认字符集default-character-set=utf8[mysqld]#设置33...
2019-03-18 13:38:00
43
原创 不使用synchronized和lock 锁实现线程安全单例
单例实现方式一,锁机制public class Singleton { private static Singleton singleton=null; public Singleton() { } public static Singleton getIntance(){ if(singleton==null){ synchroni...
2019-02-28 10:38:00
78
原创 shiro 错误登陆次数限制
第一步:在spring-shiro.xml 中配置缓存管理器和认证匹配器<!-- 缓存管理器 使用Ehcache实现 --><bean id="cacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager"> <property name="cacheManagerConfigFile" v...
2019-01-08 17:15:00
127
原创 java 生产者消费者简单实现demo
第一种方式 使用BlockingQueue 阻塞队列public class Threads { public static void main(String[] args) { final ArrayBlockingQueue<Integer> queue=new ArrayBlockingQueue<>(10); produce p...
2019-01-07 15:16:00
44
原创 java 数组排序 插入排序、快排法
一、插入排序插入排序法思想:将n个数字分为前面几个是有序数字集合,后面几个为无序集合。当然尚未排序之前,可以将n0 看为有序数集合,N1-Nn-1 看为等待排序的无序集合。从N1开始将无序数一个一个插入到有序数集合中,使之再次成为有序数集合,当第Nn-1 个数字插入有序数集合中后。整个n数字集合便成为有序集合。示例:2,1,8,9,6,3,4,7,5第一步排序后结果:1,2,8,9,6,3...
2019-01-05 17:36:00
50
原创 mysql 利用druid 为访问密码加密
在原来数据库配置文件jdbc.properties 文件中增加几行加密文件jdbc.username=rootjdbc.password=KqYkfcQkQOdOpCnaokLfb9Kbzdf+NGaavui9yBS8R20fqQWSUZuh647GPe3ZHgHNqm3csBaM6XqmXQUpA2ljZA==jdbc.filters=config,log4jjdbc.publicKey=M...
2018-12-21 13:06:00
66
原创 liunx redis集群添加密码
第一种方法:修改每个节点redis.conf配置文件:masterauth 123456requirepass 123456各个节点的密码都必须一致,否则Redirected就会失败重新启动各节点第二种方法(推荐不需重新各个节点)./redis-cli -c -p 7001config set masterauth 123456config set requirepass 12...
2018-12-14 17:44:00
70
原创 liunx 下WebBench 安装与压力测试
安装:wgethttp://blog.zyan.cc/soft/linux/webbench/webbench-1.5.tar.gztar zxvf webbench-1.5.tar.gzcd webbench-1.5make && make install可能会出现的错误/bin/sh: ctags: command not found没有安装 ctagsy...
2018-12-05 17:04:00
59
原创 @Transactional 无效原因
在controller 上面使用@Transactional 注解时候发现数据没有回滚,在执行完update 更新语句,事务直接就commit 了,此时方法尚未执行结束,数据库数据已经更新了。第一反应应该是配置文件有问题,自己检查了spring.xml 和spring-mvc.xml文件,配置文件没什么问题。在pring.mvc中<tx:annotation-driven ...
2018-11-16 16:02:00
109
原创 @Autowired mapper 层次 bean 带红线
在利用@Autowired 注解创建bean 时候 有时间会带有下滑红色横线 给人一种报错的感觉下面是去除红线的办法将颜色红色error 等级降低为黄色warn 即可
2018-10-17 13:13:00
64
原创 java 类加载机制 阿里面试题
/** * 加载方法不等于执行方法,初始化变量则会赋值 * 类加载顺序应为 加载静态方法-初始化静态变量-执行静态代码块 * 实例化时 先加载非静态方法-实例化非静态变量-执行构造代码块-执行构造函数 * */public class StaticTest { /**第一个加载*/ public static int k = 0; /**第二个加载,因为是ne...
2018-08-31 15:27:00
41
原创 liunx 修改ssh 端口22
vim/etc/ssh/sshd_config找到Port 22 添加 Port 5002重启sshd/bin/systemctl restart sshd.service防火墙释放5002端口测试使用ssh链接5002端口 如果能成功链接重新编辑/etc/ssh/sshd_config 文件 将22端口注释掉 防火墙关闭22端口重新启动sshd 和防火墙 即可...
2018-08-27 18:07:00
45
原创 通过mysqlbinlog 恢复数据
前提数据库开启了bin_log记录日志。查看日志刷新日志flush logs;再次查看show binary logs;向表中插入一条数据现在执行delete误操作,删除所有的数据。delete from admin;先查看binlog,生成002.sql:mysqlbinlog mysql-bin.000002 > 002.sql查看002.sql,并只摘取d...
2018-08-15 18:42:00
49
原创 nginx 配置身份验证 http_auth_basic_module
ngx_http_auth_basic_module模块实现访问必须输入用户名和密码 正确情况向访问,这为我们一些重要资源访问增添了一道安全锁。语法: auth_basic_user_file file;默认值: —配置段: http, server, location, limit_except用户密码加密方式http://nginx.org/en/docs/htt...
2018-08-06 17:51:00
88
原创 liunx mysql 备份
执行命令:mysqldump -uroot -p lanwei > lanwei2018-08-02.sql出错-bash: mysqldump: command not found查看mysqldump 路径find / -name mysqldump -print输出路径:/usr/local/mysql/bin/mysqldump创建软连接ln -s /usr/loc...
2018-08-02 20:08:00
34
原创 8080 端口只允许内网访问配置
如果项目是通过nginx 代理访问的话,如果用户绕开nginx 直接访问我们服务器的话,nginx就没用处了。需要配置一下服务器例如tomcat 的端口 比如8080 只允许内网访问,外边不能访问。通过防火墙来实现。配置iptables-A INPUT -s 127.0.0.1 -p tcp --dport 8080 -j ACCEPT-A INPUT -p TCP --dport 808...
2018-08-01 15:49:00
435
原创 nginx 配置白名单
在http 模块 增加geo $remote_addr $ip_whitelist{ default 0; include white_ip.conf; }在location 模块 增加 (注意if 和($ip)之间有空格)if ($ip_whitelist = 0){ return 403; }在c...
2018-08-01 15:39:00
192
shiro使用简单Demo
2017-11-01
Catalina.out日志分割工具
2017-08-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人