自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhexiao

keep going

  • 博客(506)
  • 资源 (23)
  • 收藏
  • 关注

原创 SpringCloud Gateway及 Springboot 服务 跨域配置

配置文件配置组件。

2024-08-21 15:52:48 237

原创 Logback 区分定时日志与正常日志 配置

【代码】Logback 区分定时日志与正常日志 配置。

2024-08-08 15:30:13 110

原创 基于 Java Supplier与Predicate 封装自动重试机制通用接口

关键需要理解Java的函数式接口编程 Supplier 与 Predicate作用。核心逻辑就是把重试的业务与重试中断条件抽象出来函数化,内部重试业务具体化。

2024-08-05 10:52:53 131

原创 C++ 自定义日志函数打印日志

【代码】C++ 自定义日志函数打印日志。

2024-07-25 20:19:48 84

原创 Java Skija 绘图库绘制图形

Skija是一个由JetBrains开发的开源项目,其目标是为Java和Kotlin开发者提供一个高性能、易用的2D图形API,直接与Google的Skia图形库对接。与Java和Kotlin的紧密集成:由于Skija是用Java编写的,并且完全兼容Kotlin,所以对于熟悉这两种语言的开发者来说,上手非常快,无需额外学习新语法。高性能渲染:基于Skia,Skija提供了硬件加速的功能,确保了图像和图形处理的高效性能,无论是绘制复杂的2D图形还是处理大量的图像数据,都能保持流畅。

2024-06-15 16:25:56 249

原创 Controller 自动化日志输出

1.定义注解2.定义捕获日志接口方法3.定义捕获日志方法实现4.定义日志捕获切面5.通过AutoConfiguration实现注入6.starter文件spring.factories新增类。

2024-06-13 15:31:10 432

原创 JVM 双亲委派机制

双亲委派机制(Parent Delegation Mechanism)是Java中的一种类加载机制。在Java中,类加载器负责加载类的字节码并创建对应的Class对象。这种机制的设计目的是为了保证类的加载是有序的,避免重复加载同一个类。Java中的类加载器形成了一个层次结构,根加载器(Bootstrap ClassLoader)位于最顶层,它负责加载Java核心类库。

2024-06-12 15:15:37 978

原创 JVM 三色标记算法

三色标记算法是一种用于JVM垃圾回收的增量式标记算法,它将Java堆中的对象划分为白色、灰色和黑色三种颜色,分别表示未标记对象、部分标记对象和已完全标记对象。这算法被广泛应用于CMS(Concurrent Mark-Sweep)和G1(Garbage-First)等垃圾回收器中,以在GC标记和清理阶段尽量减少Stop-The-World(STW)的时间,提高系统的响应性。总体而言,三色标记算法通过增量标记的方式,尽量避免全局性的STW,提高了垃圾回收的并发性,但也需要处理漏标问题。

2024-06-11 17:32:29 965

原创 JVM 根可达算法

Java中"垃圾"通常指的是不再被程序使用和引用的对象,具体表现在没有被栈、JNI指针和永久代对象所引用的对象。Java作为一种面向对象的编程语言,它使用自动内存管理机制,其中垃圾收集器负责检测和回收不再被程序引用的对象,以释放它们占用的内存空间。以下是一些导致对象成为垃圾的常见情况:无引用对象: 当一个对象没有任何引用指向它时,它就变得不可达,成为垃圾,Java的垃圾收集器会识别这样的对象,并将它们回收。

2024-06-11 17:24:53 865

原创 Java 如何有效地避免OOM:善于利用软引用和弱引用 (四种引用模式)

在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。从Java SE2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利于JVM进行垃圾回收。下面来阐述一下这四种类型引用的概念:1.强引用(StrongReference)

2024-06-11 16:59:45 757

原创 SpringBoot 返回值 i18n 自动处理

定义基础通用类首先定义一波错误码:ResultCode定义返回对象:Result定义一个异常通用类:ApiException定义异常拦截器:ApiExceptionHandler定义 i18n 配置类:I18nConfig定义 i18n 消息内容处理器:I18nUtils。

2024-05-28 19:54:42 273

原创 JNA、JNI、原生C++函数调用效率及测试过程

6.将生成的DLL及依赖的算法DLL复制到jdk/bin目录下。1.Visual Studio配置头文件及lib库文件的路径。7.java调用JNI函数执行DLL方法。2.生成.h头文件,用于包装C++方法。3.通过Clion封装C++函数。拷贝.h文件,并创建cpp文件。1.构建DLL Library。配置cmakelist文件。5.构建项目,会生成DLL。3.调用函数计算时长。

2024-04-09 10:45:06 640

原创 Springboot 构建异步TaskManager的优雅处理线程任务

【代码】Springboot 构建异步TaskManager的优雅处理线程任务。

2024-03-26 19:36:03 246

原创 Springboot 分片上传客户端Demo

【代码】Springboot 分片上传客户端Demo。

2024-03-09 16:28:51 217 1

原创 Qt 运行一个实例进程

逻辑:首先一个新的实例启动时,将尝试连接到同一个本地服务器,如果连接失败,则表示第一个实例进程,创建一个本地服务器;否则,拉起已打开的实例进程。

2024-03-04 10:51:21 426

原创 QT集成Protobuf

1.定义protobuf2.通过protoc.exe编译proto文件。

2024-02-29 16:19:03 680

原创 cmake多exe生成设计

【代码】cmake多exe生成设计。

2024-02-27 16:17:16 194

原创 C++ 11 fopen 支持打开带中文的路径

【代码】C++ 11 fopen 支持打开带中文的路径。

2024-01-04 16:45:59 1244

原创 cmake多模块架构, DLL依赖编译

然后通过add_custom_command进行拷贝dll到生成路径。主要通过设置环境变量定义具体路径。

2023-12-15 17:44:10 247

原创 cmake通过add_custom_command复制DLL及配置文件

【代码】cmake通过add_custom_command复制DLL及配置文件。

2023-12-09 11:31:26 597

原创 Clion运行QT,模拟VS弹出CMD框打印

参考:https://stackoverflow.com/questions/35385772/running-clion-on-the-system-console-like-visual-studio。

2023-12-06 16:48:22 165

原创 QThread之moveToThread用法

使用moveToThread函数的流程如下:1、创建一个类继承自QObject类或其子类,并在其中定义所要执行的多个任务,执行多个任务就要定义相应的信号。2、任务通过moveToThread指定所要执行的线程。3、线程通过start启动4、通过信号与槽机制触发线程的执行。

2023-12-05 16:01:33 264

原创 采用connector-c++ 8.0操作数据库

把D:\Library\mysql-connector-c+±8.2.0-winx64\lib64\debug中的mysqlcppconn-9-vs14.dll复制到项目的可执行目录下。https://dev.mysql.com/downloads/connector/cpp/,下载带debug的库。2.在cmakelist中定义寻址头文件的路径与库的路径。1.下载最新的Connector。3.复制对应的DLL到可执行目录。

2023-11-22 19:43:21 1176

原创 编译QT Mysql库并集成使用

进入文件夹D:\Library\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\common,打开msvc-version.conf文件,添加。检查mingw73_64/plugins/sqldrivers目录下是否存在qsqlmysql.dll文件,没有就需要编译mysql驱动。一定要复制到mysql对应位数的编译器中,然后在构建的时候,注意选择需要生成的应用是32位还是64位。7.将文件复制到编译器的5.14.2\msvc2017_64\plugins\sqldrivers中。

2023-11-22 19:41:59 563

原创 QT串口通信 基础使用

由于需要使用QT的信号槽,所以Q_OBJECT文件需要额外进行MOC编译,把对应的头文件指明到executable中。使用QT的SerialPort,需要加装对应的依赖。

2023-11-08 16:27:38 117

原创 日志记录库 spdlog 基础使用

配置特别简单,仅包含头文件即可;写日志方式简单明了;可实现自动按日期创建日志文件/定时创建日志文件;可自定义日志格式;可以输出当前输出日志所在的文件及函数;可自定义文档大小;可将不同级别的信息输出到不同日志文件;多平台等。*_st:单线程版本,不用加锁,效率更高。*_mt:多线程版本,用于多线程程序是线程安全的。日志记录槽sinkset_pattern(const std::string&):设置日志输出的内容格式。

2023-11-01 15:17:16 1157

原创 cmake构建多项目编译

最外层的主CMakeListsproj1的CMakeListsproj2的CMakeLists。

2023-10-31 14:33:04 335

原创 QT5 通过 webview2 加载网页

官方文档参考:https://learn.microsoft.com/zh-cn/microsoft-edge/webview2/get-started/win32。

2023-10-30 15:49:32 2416

原创 cmake 使用include 分层加载

cmake文件是干什么的,甚至会想.cmake文件是不是cmake的正统文件,而CmakeLists.txt并不是。但其实,CmakeLists.txt才是cmake的正统文件,而.cmake文件是一个模块文件,可以被include到CMakeLists.txt中。include指令一般用于语句的复用,也就是说,如果有一些语句需要在很多CMakeLists.txt文件中使用,为避免重复编写,可以将其写在.cmake文件中,然后在需要的CMakeLists.txt文件中进行include操作就行了。

2023-10-27 15:47:21 313

原创 Clion 初始化 QT

A:检查路径是否正确,set(CMAKE_PREFIX_PATH “D:/Library/Qt5.14.2/5.14.2/msvc2017_64/lib/cmake”)NMAKE : fatal error U1077: “echo”: 返回代码“0x1”解决方法:安装QT5和对应的cmake软件,然后修改makelist配置文件。默认CMakeLists文件。2.打开项目,如果出现报错。5.配置项目生成平台为64。

2023-10-27 14:22:58 414

原创 Aspect 切入点 @Pointcut 语法详解

this:用于匹配当前AOP代理对象类型的执行方法;bean:Spring AOP扩展的,AspectJ没有对于指示符,用于匹配特定名称的Bean对象的执行方法;target:用于匹配当前目标对象类型的执行方法;@target:用于匹配当前目标对象类型的执行方法,其中目标对象持有指定的注解;args:用于匹配当前执行的方法传入的参数为指定类型的执行方法;@args:用于匹配当前执行的方法传入的参数持有指定注解的执行;@annotation:用于匹配当前执行方法持有指定注解的方法;+:匹配指定类型的子类型;

2023-09-18 11:32:46 335

原创 JNI 调用

JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。本地代码与 Java 虚拟机之间是通过 JNI 函数实现相互操作的。JNI 函数通过接口指针来获得,本地方法将 JNI 接口指针当作参数来接受。

2023-04-04 13:46:06 1439 1

原创 密码规则 大小写、数字、特殊符号 至少三种

【代码】密码规则 大小写、数字、特殊符号 至少三种。

2023-03-28 20:39:33 427

原创 重新认识 Java 中的内存映射(mmap)

恰恰和网传的很多言论相反,mmap 由于其不切态的特性,特别适合顺序读写,但由于 sun.nio.ch.FileChannelImpl#map(MapMode mode, long position, long size) 中 size 的限制,只能传递一个 int 值,所以,单次 map 单个文件的长度不能超过 2G,如果将 2G 作为文件大 or 小的阈值,那么小于 2G 的文件使用 mmap 来读写一般来说是有优势的。一个实用的技巧是动态分配的内存映射区域,在读取过后,可以异步回收掉。

2023-03-02 17:14:47 1924

原创 SpringCloud Gateway + Security + JWT 最快速的集成

*** 需要访问的url/*** 额外放开权限的url** @param urls 自定义的url* @return 自定义的url和监控中心需要访问的url集合} //放开权限的地址 Collections . addAll(set , addContextPath(permitUrl));} /*** 地址加访问前缀* @returni ++) {} }

2022-12-30 16:56:51 2229 3

原创 内存对齐详解

假如没有内存对齐机制,数据可以任意存放,现在一个int变量存放在从地址1开始的联系四个字节地址中,该处理器去取数据时,要先从0地址开始读取第一个4字节块,剔除不想要的字节(0地址),然后从地址4开始读取下一个4字节块,同样剔除不要的数据(5,6,7地址),最后留下的两块数据合并放入寄存器.这需要做很多工作。**考虑4字节存取粒度的处理器取int类型变量(32位系统),该处理器只能从地址为4的倍数的内存开始读取数据。现在有了内存对齐的,int类型数据只能存放在按照对齐规则的内存中,比如说0地址开始的内存。

2022-10-22 10:37:20 951

原创 springboot rabbitmq 配置文件详解

rabbit mq 配置

2022-07-06 20:19:02 1206

原创 Redis 过期删除策略和内存淘汰策略

Redis 是可以对 key 设置过期时间的,因此需要有相应的机制将已过期的键值对删除,而做这个工作的就是过期键值删除策略。过期删除策略有哪些?在说 Redis 过期删除策略之前,先跟大家介绍下,常见的三种过期删除策略:定时删除;惰性删除;定期删除;接下来,分别分析它们的优缺点。定时删除策略的做法是,在设置 key 的过期时间时,同时创建一个定时事件,当时间到达时,由事件处理器自动执行 key 的删除操作。定时删除策略的优点:可以保证过期 key 会被尽快删除,也就是内存可以被尽快地释放。因此,定

2022-07-05 14:03:08 417

原创 java插件化开发

插件化

2022-06-28 18:59:14 2103

原创 文件流读取不存在乱码的数据

过滤乱码数据

2022-06-28 13:35:20 119

Springboot 自动装配原理图文

Springboot 自动装配原理图文,里面描述了整个Springboot的装配流程和所有相关的组件。

2020-12-04

算法图解 - 算法的基本操作

算法是人们利用电脑解决问题的技巧。本书以轻松的对话方式,采用图解的辅助说明,帮助读者简单、自然地掌握算法的基本概念,并养成主动思考的习惯,达到用算法解决实际问题的目的。   全书共分12章,内容包括一切从观察开始、分而治之法、动态规划、贪婪法、修剪与搜索法、树搜索法、问题转换、图算法、计算几何、算法的难题、逼近算法、随机算法等。

2018-06-11

lamp源码编译

lamp源码编译

2012-04-27

Mysql常见问题和应用技巧

Mysql常见问题和应用技巧

2012-04-25

Mysql Cluster(集群)的概念和架构

Mysql Cluster(集群)的概念和架构

2012-04-25

Mysql复制 即主从服务器搭配

Mysql复制 即主从服务器搭配

2012-04-25

优化数据库对象

优化数据库对象

2012-04-11

Thinkphp3.0新增功能.doc

Thinkphp3.0新增功能.doc

2012-04-10

18 SQL优化--其他SQL的优化.doc

18 SQL优化--其他SQL的优化.doc

2012-04-10

18 SQL优化--查询的优化.doc

18 SQL优化--查询的优化.doc

2012-04-10

Mysql事务控制(XA分布式事务)和锁定语句

Mysql事务控制(XA分布式事务)和锁定语句

2012-03-30

SQL优化详解

SQL优化详解

2012-03-28

Mysql存储过程和函数

Mysql存储过程和函数

2012-03-26

mysql索引的设计和使用

mysql索引的设计和使用

2012-03-26

Mysql字符集

Mysql字符集

2012-03-26

8 选择适合的数据类型

8 选择适合的数据类型

2012-03-26

7表类型(存储引擎)的选择

7表类型(存储引擎)的选择

2012-03-26

mysql中的常用函数

mysql中的常用函数

2012-03-21

大型网站架构不得不考虑的10个问题

大型网站架构不得不考虑的10个问题

2012-03-15

mysql优化方案

mysql优化方案

2012-03-15

开发大型高负载类网站应用的几个要点

发大型高负载类

2012-03-15

火狐常用的一些插件

火狐常用插件

2012-03-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除