博客
Spring循环依赖与三级缓存
常见的循环依赖@Component
public class Aoo {
@Autowired
Boo boo;
}
@Component
public class Boo {
@Autowired
Aoo aoo;
}
A依赖B B依赖A首先判断三级缓存中存不存在
Gin框架集成Zap日志库
在go语言gin框架中,日志是默认输出到终端的,但是我们在实际工作中,一般来说是需要记录服务器日志的。而最常用的日志库就是zap日志库,我们需要将gin在终端输出的内容通过zap日志库记录到文件中假设你已配置好了Gin/ZapginDefault := gin.New()
ginDefault.Us
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
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
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++
SpringBoot获取配置项原内容
@Component
public class PropertySourcesUtil {
@Autowired
ConfigurableEnvironment environment;
public String getProperty(String key) {
快速上手Go以及实战Gin+Gorm
阅读本文需要一定的java开发经验以及一点c/c++的基础语法特性变量命名一般是名称在前, 类型在后匿名变量使用_标记忽略常量使用 const, 例const c_name1, c_name2 = value1, value2. 关键字: iota, 索引自增进行初始化常量package main
解决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
MySQL Binlog/Redolog和CrashSafe机制
redo logredo log是MySQL InnoDB的日志, 是物理日志, 记录的是"在某个数据页上做了什么修改"提一下MySQL里经常说到的WAL技术, WAL的全称是Write Ahead Logging, 它的关键点就是先写日志, 再写磁盘. 日志是顺序写的, 磁盘是随机写. 顺序写速度
Java重载匹配算法
算法如下找出全部可以调用的方法。(可以调用的方法意味着形參个数等于实參个数,实參的类型可以转换为方法形參的类型。)假设实參与形參的类型可以直接相应。则运行该方法。假设可以调用的方法仅仅有一个。则运行该方法。可以调用的方法不止一个时, 逐一作出推断: 假设一个方法的类型签名都可以赋值给还有一个方法。则
浅谈ThreadLocal
ThreadLocal是为了避免共享, 避免锁竞争, 使用了空间换时间的思路若使用Map, Thread做Key, 则回到了问题本身, 仍会发生锁竞争, 降低效率所以数据实际上是存储在java.lang.Thread#threadLocals的 ThreadLocal相当于一个钥匙/桥梁去访问Thr
Gradle使用记录
下载Gradle环境变量配置GRADLE_HOME 指向安装目录环境变量配置GRADLE_USER_HOME 指向依赖下载目录往Path中添加%GRADLE_HOME%\bin在USER_HOME路径, 路径示例: C:\Users\root\.m2. 添加settings.xml文件配置maven
RabbitMQ/RocketMQ消息可靠性保证
RabbitMQRabbitMQ刷盘机制异步写入文件前会有一个Buffer,大小为1M(1048576),数据在写入文件时,首先会写入到这个Buffer,如果Buffer已满,则会将Buffer写入到文件(此时写入到内核态缓存中, 未必刷到磁盘);有个固定的刷盘时间:25ms,也就是不管Buffer
前端实现tooltip
鼠标悬浮在问号图标上, 下方展示提示文本..tooltip {
margin: 8px;
padding: 8px;
border: 1px solid #CCCCCC;
background-color: #F6DBB3;
position: absolut
使用OpenFeign+Validator优雅对接第三方接口
例如对接百度的根据ip查询地理信息的接口这里使用的是OpenFeignimport com.xxx.xxx.thirdparty.dto.baidu.BaiduIpInfoDTO;
import org.springframework.cloud.openfeign.FeignClient;
imp
自定义rocketmq-spring-boot-starter
一般使用rocketmq-starter都会进行不同程度的封装, 在此分享一种封装思路基于rocketmq-spring-boot-starter
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rock
Postman效率篇
postman是开发常用的接口测试工具这里记录一下postman提效方法创建目录: 后台定义目录变量host 接口域名目录定义预执行脚本// 添加前置url 使用目录定义的变量 pm.request.url = pm.collectionVariables.get("host") + pm.requ
开发常用软件
IDEIntelliJ IDEAJavahttps://www.jetbrains.com/idea/WebStorm前端https://www.jetbrains.com/webstorm/CLionC/C++https://www.jetbrains.com/clion/HBuilderX前端h
C++ 类型转换操作符重载
示例template <typename T>
operator T () const
{
}
Poco库中的使用Var.hPoco::Dynamic::Var
template <typename T>
operator T () const
{
VarHolder* pHolder =
CMake 链接静态库 示例
现有库lib-a, lib-b可执行文件final链接情况lib-b 静态链接 lib-a, final静态链接lib-b 和 lib-a, 且final同样静态编译lib-aCMakeLists.txtcmake_minimum_required(VERSION 3.19)
project(lib