Shiro与SpringAOP冲突导致无法请求到Controller

各依赖版本org.crazycake:shiro-redis-spring-boot-starter:3.2.1org.springframework.boot:spring-boot-starter-aop:2.3.0.RELEASE有个配置如下@Bean public static Defaul
2023-04-16

Spring的cglib代理类无法取到被代理类的成员属性

cglib的原理是生成一个被代理类的子类进行增强, 那么为什么子类访问不到父类的属性呢@Service public class AopTestService { public String value = "hello world"; @Transactional pu
2023-04-14

微信小程序检查更新

当小程序版本低于指定的最低版本时, 通知其进行更新let remoteVersion = await api.minVersion() let localVersion = version.split('.') let needUpdate = false for (let i = 0; i < l
2023-04-03

Spring循环依赖与三级缓存

常见的循环依赖@Component public class Aoo { @Autowired Boo boo; } @Component public class Boo { @Autowired Aoo aoo; } A依赖B B依赖A首先判断三级缓存中存不存在
2023-03-30

Gin框架集成Zap日志库

在go语言gin框架中,日志是默认输出到终端的,但是我们在实际工作中,一般来说是需要记录服务器日志的。而最常用的日志库就是zap日志库,我们需要将gin在终端输出的内容通过zap日志库记录到文件中假设你已配置好了Gin/ZapginDefault := gin.New() ginDefault.Us
2023-03-22

Docker启动容器出现No Such File Or Directory排查

dockerfile如下FROM alpine ADD test-backend /test-backend RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/time
2023-03-22

Ubuntu Golang 编译 + Docker部署

配置Golang编译环境下载go环境 https://studygolang.com/dl 选择go1.20.2.linux-amd64.tar.gztar -zxvf go1.20.2.linux-amd64.tar.gz 解压到 /usr/local/go创建 /usr/local/go-pat
2023-03-22
阿里云maven镜像仓库pom文件错误导致无法下载依赖 启动应用报错ClassNotFoundException

阿里云maven镜像仓库pom文件错误导致无法下载依赖 启动应用报错ClassNotFoundException

导一个新项目, 怎么都跑不起来, 报错就是Caused by: java.lang.ClassNotFoundException: org.elasticsearch.core.RefCounted 对比其他人的依赖, 发现是这个jar包没有下载elasticsearch-core-7.17.8.j
2023-03-08

Go的方法接收: 值接收与指针接收

package main import "fmt" type Circle struct { r uint } func (c *Circle) add() uint { c.r++ return c.r } func (c Circle) show() uint { c.r++
2023-03-04

使用字节数组创建String后通过getBytes()得到的数组与创建时不同

问题:使用默认编码创建字符串后,通过生成的字符串的getBytes()方法获得的数组与创建时的数组不同。demo代码如下byte[] bytes=new byte[]{-42, -48, -50, -60, -78, -30, -54, -44}; System.out.println(Arrays
2023-02-28

自定义HttpServletRequestWrapper报错

Bug代码public class BodyReaderHttpServletRequestWrapper extends HttpServletRequestWrapper { private final byte[] body; public BodyReaderHttpServletR
2023-02-28

sun.misc.CharacterEncoder#encode(byte[])自动添加\r\n

当编码的字节较长时,encode出来的字符串会自动加入\r\n进行自动换行。这是因为是rfc规范规定76个字符要换一次行导致编码后无法正常显示图片解决方法: 换个工具类
2023-02-28

SpringBoot获取配置项原内容

@Component public class PropertySourcesUtil { @Autowired ConfigurableEnvironment environment; public String getProperty(String key) {
2023-02-23

快速上手Go以及实战Gin+Gorm

阅读本文需要一定的java开发经验以及一点c/c++的基础语法特性变量命名一般是名称在前, 类型在后匿名变量使用_标记忽略常量使用 const, 例const c_name1, c_name2 = value1, value2. 关键字: iota, 索引自增进行初始化常量package main
2022-12-20

解决GoLand无法Debug

go 1.20rc1goland 2022.2.3无法进行debug控制台提示WARNING: undefined behavior - version of Delve is too old for Go version 1.20.-1 (maximum supported version 1.1
2022-12-14

MySQL Binlog/Redolog和CrashSafe机制

redo logredo log是MySQL InnoDB的日志, 是物理日志, 记录的是"在某个数据页上做了什么修改"提一下MySQL里经常说到的WAL技术, WAL的全称是Write Ahead Logging, 它的关键点就是先写日志, 再写磁盘. 日志是顺序写的, 磁盘是随机写. 顺序写速度
2022-12-12

Java重载匹配算法

算法如下找出全部可以调用的方法。(可以调用的方法意味着形參个数等于实參个数,实參的类型可以转换为方法形參的类型。)假设实參与形參的类型可以直接相应。则运行该方法。假设可以调用的方法仅仅有一个。则运行该方法。可以调用的方法不止一个时, 逐一作出推断: 假设一个方法的类型签名都可以赋值给还有一个方法。则
2022-11-29

浅谈ThreadLocal

ThreadLocal是为了避免共享, 避免锁竞争, 使用了空间换时间的思路若使用Map, Thread做Key, 则回到了问题本身, 仍会发生锁竞争, 降低效率所以数据实际上是存储在java.lang.Thread#threadLocals的 ThreadLocal相当于一个钥匙/桥梁去访问Thr
2022-11-28

Gradle使用记录

下载Gradle环境变量配置GRADLE_HOME 指向安装目录环境变量配置GRADLE_USER_HOME 指向依赖下载目录往Path中添加%GRADLE_HOME%\bin在USER_HOME路径, 路径示例: C:\Users\root\.m2. 添加settings.xml文件配置maven
2022-11-19

RabbitMQ/RocketMQ消息可靠性保证

RabbitMQRabbitMQ刷盘机制异步写入文件前会有一个Buffer,大小为1M(1048576),数据在写入文件时,首先会写入到这个Buffer,如果Buffer已满,则会将Buffer写入到文件(此时写入到内核态缓存中, 未必刷到磁盘);有个固定的刷盘时间:25ms,也就是不管Buffer
2022-11-04