- 博客(27)
- 收藏
- 关注
原创 VPN网络环境下 本地客户端能连上mysql 本地启服务连不上mysql的原因
使用-Djava.net.preferIPv4Stack=true选项可以解决一些与IPv6相关的网络问题,因为在某些环境中,IPv6配置可能不正确或受限,从而导致无法正常建立连接。通过强制应用程序使用IPv4协议栈,可以绕过这些IPv6相关的问题。使用-Djava.net.preferIPv4Stack=true选项可以强制应用程序在IPv4协议栈上运行。在Springboot 启动参数中加 -Djava.net.preferIPv4Stack=true 就解决了。
2023-11-03 16:55:06
641
原创 自定义注解给查询加redis缓存
背景接上篇(canal同步mysql数据到redis缓存:https://blog.youkuaiyun.com/Mr__simon/article/details/123549828)所讲,mysql同步redis通过canal实现,那接下来原有项目的查询加缓存应该有两种处理方式:1. 硬编码方式,重新封装查询方法,查询时先查缓存,缓存未查到查DB;2.使用自定义注解方式,需要使用的地方加自定义注解,使用aop切面统一进行处理。方式2较方式1代码侵入性低,且便于扩展。若是新开发,开发时就用方式1进行封装查询方法..
2022-03-17 15:31:29
1030
原创 使用canal同步mysql数据库到redis +实践策略模式
背景为提高系统性能、减小数据库压力,需要对频繁查询的数据进行缓存处理。为保证mysql和redis数据一致,网上博客一大堆缓存同步策略,最核心的问题其实还是数据修改时的数据一致性:先更新(删除)缓存再更新数据库、先更新数据库再更新(删除)缓存、延时双删等。以上所说的这些策略主要是考虑并发场景下db-redis之间的数据最终一致,如果业务场景没有多大的并发,或缓存的数据大多是配置之类不影响业务主流程的数据,其实以上策略基本也不会有问题。如果想做到数据强一致,那就只有一种方式就是串行,但是串行必然导致性..
2022-03-17 14:39:48
3016
2
原创 Springboot使用ResourceUtils.getFile()读取resource下文件的坑
先说结论,使用ResourceUtils.getFile()方法读取resource下文件,在IDEA等开发工具场景下是没问题的,但是将服务达成jar包后,执行该方法就会包错文件找不到;因此尽量不要使用该方法来读取文件,可以使用以下几种方式替代:ClassPathResource classPathResource = new ClassPathResource("excleTemplate/test.txt");InputStream inputStream =classPathResource.
2022-02-07 10:17:10
14213
1
原创 使用ossUtils清空bucket内所有数据
背景近日,要对oss某个桶中的数据进行跨账号迁移,首先就要删除A账号的桶在B账号重新建重名的桶,而在oss控制台想直接删除桶,需先清空桶内数据,该桶内数据较多,在oss控制台也未找到快速删除桶内所有数据的功能,所以考虑使用ossUtils进行处理。扩展在oss同一个区内,不允许同名桶的存在;当一个桶删除后,不能立即建同名的桶,而是要等半小时后,oss后台清空后台缓存后才可以。oss的通的安全策略中 “公共读写”权限要慎用,如果开了公共读写,任何人都可以对你这个桶进行读写,而oss是按流量收费的.
2021-11-24 11:46:02
1691
原创 阿里云ECS与云redis内网不通排查及解决
可能原因:ECS与redis没在同一区域redis配置的ip白名单中无该ECS内网ipECS和redis在不同的VPC网络中解决方法:ECS和Redis在不同地域的VPC中,内网是不通的。在不同地域下的ECS连接Redis,目前只能通过高速通道实现跨VPC的内网访问,详见官方文档:https://help.aliyun.com/knowledge_detail/67882.html若未配置白名单,则配置白名单若在同一区域的不同vpc网络中,切换vpc网络...
2021-04-25 11:31:23
618
原创 Springboot jar包启动远程debug
开放服务器某个端口(以8000端口为例),若有空闲的已开放的端口可直接使用,本步骤可省略用以下命令启动服务:java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n -jar product-core-1.0.jar --spring.profiles.active=pro 其中–spring.profiles.active=pro 含义为指定以pro配置文件启动服务在IDEA配置中配置...
2021-02-25 19:40:15
838
原创 mybatis <collection>标签使用及分页数量问题解决
场景: 最近做查询酒店订单集合时,需要把酒店订单详情也查出来,酒店订单表 和 酒店订单详情表 是一对多的关系(用订单编号进行关联);最初的做法是 :先去查询酒店订单集合 再循环查询酒店订单详情集合。这么做相当于一次查询要循环执行多次查询,会导致查询效率异常的慢。 所以想找一种方式 一次查询出酒店订单集合并且直接将酒店订单详情集合作为list 封装进结果集。于是想到了 <collection>标签。部分代码及DO类:订单DO类(其余无关字段已省略):public cl.
2021-01-09 18:18:51
7023
1
转载 定时备份数据库并上传到OSS
定时备份数据库并上传到OSS场景:开发/测试数据为自己安装,未使用RDS,且开发/测试环境安装操作频繁,为防止数据库出现问题,影响开发/测试进度,现需要将开发/测试数据库定时备份到oss上。下载oss工具ossutil# 下载ossutilwget http://gosspublic.alicdn.com/ossutil/1.5.0/ossutil64# 授权chmod 755 /usr/local/src/ossutil64/ossutil64# 软链接到bin目录下直接执行ln -s
2021-01-09 16:31:51
847
原创 Docker入门(二)
Docker容器的数据卷数据卷概念及作用数据卷是宿主机中的一个目录或文件,当容器目录和数据卷绑定后,对方的修改会立即同步。为什么使用数据卷?不使用数据卷会有以下问题:docker容器删除后,在容器中产生的数据会随之销毁;docker容器无法和外部机器(注意是外部机器,不是宿主机)直接交换文件;容器之间数据交互比较棘手。一个数据卷可以被多个容器挂载;一个容器也可以挂载多个数据卷。...
2020-04-05 15:21:21
130
原创 Docker启动mysql镜像后外部机器用sqlyog无法连接
现象通过以下命令启动mysql容器docker run -id -p 3307:3306 --name=mysql01 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest启动后,发现用sqlyog连...
2020-04-05 14:39:42
845
原创 docker入门(一)
基本概念docker是一个开源的应用容器引擎docker可以让开发者们打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上。总体来说,docker是一种容器技术,解决软件跨环境迁移问题。安装docker具体安装参照菜鸟教程或其他网上教程安装完后检测是否安装成功,用docker -v命令 如上图,执行完命令后,显示docker版本证明安...
2020-04-04 18:33:16
172
原创 thymeleaf模板支持(解析)JS
背景:项目中,有两个thymeleaf模板中的一些内容需要服务端来同步渲染,后续需求中需要服务端在thymeleaf模板中 申明一个全局变量,因此,需要thymeleaf模板 支持js。如何实现:如上,加入这种格式,thymeleaf就可以支持js:<script th:inline="javascript"> /*<![CDATA[*/ js代...
2020-04-04 15:06:56
1139
原创 thymeleaf模板及静态资源放到系统目录下(服务器指定目录下),而非classpath下(即实现后台代码和静态资源分离)
场景:项目中使用到thymeleaf模板技术,模板文件在项目resources>templates目录下,模板相应的静态资源也在后台代码中,静态资源由前台同事维护,每次发布时,前台将文件给后台,后台覆盖后再由后台统一发布,比较麻烦。需求:模板文件分离及热加载,即将模板文件及其静态资源单独部署到服务器指定目录并实现热加载。分离部署:修改配置:常规的配置:## 前缀...
2020-04-04 14:56:55
2728
1
原创 Springboot配置多个redis源
- 场景:项目中需要用到连接两个redis数据源实现:首先在配置文件中配置数据源信息:#redisspring.redis.database=88spring.redis.host=XXXXspring.redis.port=6379spring.redis.password=XXXX#redis2spring.redis.database.ad=0spring.r...
2020-04-04 14:42:56
903
原创 Redis报错:WRONGTYPE Operation against a key holding the wrong kind of value
场景:与别人约定他在redis中存了一个大key为black_ip_list 小key为具体ip的hash表,我这边从Redis中取出使用,结果报WRONGTYPE Operation against a key holding the wrong kind of value错误redisService.hHasKey("black_ip_list", ip);hHasKey()是re...
2020-04-04 14:33:24
485
原创 IDEA检测不到代码库上新建的分支
右键项目点击“Open in Terminal”(或工具左下角)在控制台输入“git pull”命令(注意 通过右键项目的git-pull选项只能够拉取项目的代码,并不可以更新分支)...
2020-04-04 14:24:47
796
原创 SpringBoot多环境配置
背景:在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、服务器端口等等配置都会不同,如果在为不同环境打包时都要频繁修改配置文件的话,那必将是个非常繁琐且容易发生错误的事。解决方式:在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格...
2020-04-04 14:21:21
135
原创 java -jar命令启动jar包
以命令方式启动jar包:java -jar XXX.jar特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出。java -jar XXX.jar &特点:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。nohup java -jar XXX.jar &特点:当窗口关闭时,程序也不会中止运行;当用 nohu...
2020-04-04 14:13:54
21098
原创 @CrossOrigin注解解决跨域问题
首先,springMVC的版本要在4.2或以上版本才支持@CrossOrigin关于跨域的几种解决方案:通过jsonp跨域:JSONP实现跨域请求的原理简单的说,就是动态创建< script>标签,然后利用< script>的src不受同源策略约束来跨域获取数据使用代理服务器:使用代理方式跨域更加直接,因为同源限制是浏览器实现的。如果请求不是从浏览...
2020-04-04 14:08:27
430
原创 SpringBoot集成log4j后报错SLF4J: Class path contains multiple SLF4J bindings...
现象:SpringBoot集成log4j后,项目启动可能会报错类似以下:SLF4J: Class path contains multiple SLF4J bindings…原因:log4j与SpringBoot默认的logback冲突,导致启动报错解决方法: 在pom.xml中排除logback:<dependencies> <...
2020-04-04 14:00:31
323
1
原创 关于@Autowired注解不可注入静态成员
现象:@Autowiredprivate static RedisService redisService; 会报错,对象无法注入原因:静态成员是属于类的,当类加载器加载静态变量时,Spring上下文尚未加载。所以类加载器不会在bean中正确注入静态类,并且会失败,不建议这样使用。解决方法:使用@PostConstruct注解@Componentpublic ...
2020-04-04 13:56:37
1139
原创 关于@PostConstruct注解
被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行代码实例:@PostConstructprivate void init(){ log.info("LimitStreamService init e...
2020-04-04 13:51:02
356
原创 定时任务之@Scheduled注解
定时任务之@Scheduled注解首先,在SpringBoot启动类上加@EnableScheduling 注解,开启定时服务该注解直接添加到定时任务类上是否可生效待验证创建定时任务类:定时任务类上必须加注解 @Component 注解(当然也可以使用 @Controller 和 @Service 等其他与 @Component 作用相同的注解)定时方法上加上@Sch...
2020-04-04 13:45:31
639
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人