前端实现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
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
站点版本更新后周期性卡顿分析
本站在今天发版后, 对线上应用自测时发现, 接口出现了周期性的卡顿, 在此记录一下排查过程怀疑是FULLGC影响的, 因为启动时内存确实分配的较少, 且有周期性, 遂调整设置. 重启后问题仍然稳定重现使用jmap -dump将堆内存信息以二进制的方式转储到文件, 使用jdk的jvisualvm工具查
使用 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
java.lang.ClassCastException: xxx cannot be cast to [C
上代码
public class Test {
public static Map<String, Object> MAP = new HashMap<>(2);
static {
MAP.put("int", 1);
MAP.put("string