博客
CMake 链接 OpenSSL 静态库
示例CMakeLists.txt如下cmake_minimum_required(VERSION 3.5)
project(test CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unu
C++ 获取当前时间并格式化
#include <chrono>
#include <ctime>
#include <iomanip>
#include <sstream>
using namespace std;
int main(int argc, char **argv)
{
// 获取本地时间
au
使用 SOAR 优化 SQL
介绍soar是由小米开源的SQL优化器和重写器项目地址 https://github.com/XiaoMi/soar使用基于 ubuntu20.04 lts按文档安装后https://github.com/XiaoMi/soar/blob/master/doc/install.md现有 catego
Java类加载器机制及应用
0x00 何时触发类加载动作显式加载通过ClassLoader的loadClass方法通过ClassLoader的findClass方法通过Class.forName隐式加载遇到new、getstatic、putstatic、invokestatic这4条字节码指令时对类进行反射调用时当初始化一个类
Ubuntu编译调试OpenJDK8
Centos编译调试OpenJDK11下载源码非官方 切换到jdk8u分支https://github.com/unofficial-openjdk/openjdk.git编译编译jdk需要一个引导jdk, 引导jdk版本需要比编译版本小一个版本或等于当前版本命令行运行sh configure -
Nacos服务发现客户端流程
基于nacos-client:1.4.2Nacos有推/拉两种模式1. 推由Nacos服务端主动发起, 通过UDP进行推送2. 拉由客户端发起启动时调用nacos接口拉取一次调用指定服务时拉取一次通过定时器定时拉取流程梳理如下流程图
微服务架构中OpenFeign请求的流程
1. 代理目标方法注入容器 (OpenFeign)2. 创建请求对象, 组装参数 (OpenFeign)3. 维护服务注册表(Ribbon + Nacos), 且根据负载均衡算法(Ribbon)选取一个真实的服务地址将http://base-service/getInfo替换为http://127.
Ribbon为服务创建独立上下文的流程
从Feign接口开始goodsFeignClient.getGoods(id)
进入代理类的拦截方法feign.ReflectiveFeign.FeignInvocationHandler#invoke
feign.SynchronousMethodHandler#invoke
继续跳转, 默认使
解决Eureka默认缓存配置导致服务无法被调用
开发环境下, 比如A服务调用B服务, B服务更改代码重启后, A服务足足要等上一两分钟才能正常调用到B服务无疑是浪费生命技术架构是Eureka+OpenFeign+RibbonRibbon配置Ribbon调用这个方法启动了一个定时器, 该定时器定期刷新ribbon内缓存的服务列表com.netfli
MyBatis-Plus动态返回实体类
1. 自定义SqlSession@Slf4j
public class GenericSqlSession extends DefaultSqlSession {
private static final ThreadLocal<Class<?>> CTX = new ThreadLoca
自定义SpringCache For Redis配置
SpringCache抽象了缓存使用场景, 对外提供注解, 无需繁琐配置即可获得缓存能力默认支持一堆缓存中间件, 其中就包括Redis在此仅提供一种缓存配置的思路
@Data
@Component
@ConfigurationProperties(prefix = "spring.cache.red
SpringBoot自定义枚举序列化方式
在平常web开发中, 或多或少的会使用到枚举类型但是springboot对枚举的序列化并不太符合实际开发需求比如public enum MerchantStatusEnum {
NORMAL(100, "正常"),
BAN(200, "封禁");
private fina
Java9-17新特性总结
年底即将发布的SpringBoot3.0最低支持Java17版本这里记录下新语法和值得注意的库语法特性moduleJDK9模块系统 Java 9 模块的重要特征是在其工件的根目录中包含了一个描述模块的 module-info.java 文 件通过exports向外开放接口/类, 限定模块使用范围同时
Ubuntu20.04升级gcc/g++
默认版本是9.4.0第一步add-apt-repository ppa:ubuntu-toolchain-r/test
第二步apt update
第三步apt install gcc-11
apt install g++-11
查看是否安装成功ls /usr/bin/gcc*
ls /usr/bi
PostgreSQL设置自增字段
postgres 自增需要先进行创建自增序列, 指定自增值, 最小值, 最大值:CREATE SEQUENCE "public"."tt_id_seq" INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1;
设置序列
Slf4j+Logback MDC使用
MDC 可用于绑定日志上下文信息Slf4j: org.slf4j.MDCslf4j作为日志门面, 定义了相当多的规范例: 生成一个唯一id, 来区分输出的日志归属于哪次http请求效果20:43:30.204 [xid=1529443036298219520] [XNIO-1 task-1 ] I
SpringBoot LocalDateTime序列化配置
项目中用LocalDateTime替换Date后, 许多地方需要增加配置配置Json响应格式化方式注册JavaTimeModule/**
* 序列化LocalDateTime
*/
@Bean
public JavaTimeModule javaTimeModule() {
JavaTi
MySQL主从复制搭建
masterdocker run -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --network rootnet --ip 172.18.0.10 -v /usr/soft/mysql-master/data:/var/lib/mysql:rw -v /u
OpenFeign统一Fallback处理
@Slf4j
@Configuration(proxyBeanMethods = false)
public class FeignLoadBalancedConfiguration {
@Bean
public LoadBalancerFeignClient feignClie