- 博客(85)
- 收藏
- 关注
原创 mybatisPlus多数据源方案
在微服务李娜一般一个服务只有一个数据源,但是在有的老项目或者一些特定场景需要多数据源链接不同的数据库,本文以mybatisPlus为基础给出解决方案多数据源场景分类解决方案(本人都有使用过):1.提供框架,使用是使用注解切换 缺点很大,不建议2.使用sharding等分库分表工具,这个是可以用来当做多数据源的解决方案的3.分包 本文使用次方案。
2023-08-31 18:22:14
623
原创 自定义loadbalance实现feignclient的自定义路由
服务A有多个同事同时开发,每个同事都在dev或者test环境发布自己的代码,注册到注册中心有好几个(本文nacos为例),这时候调用feign可能会导致请求到不同分支的服务上面,会出现一些问题,本文重点在于解决该问题。
2023-08-24 16:22:17
2196
原创 graalvm把java编译为c/c++能够使用的动态库(dll/so)
graalvm把java编译为c/c++能够使用的动态库(dll/so)
2023-05-28 23:12:36
1968
2
原创 redis sds动态字符串(未完)
sdsstruct __attribute__ ((__packed__)) sdshdr5 { unsigned char flags; /* 3 lsb of type, and 5 msb of string length */ char buf[];};struct __attribute__ ((__packed__)) sdshdr8 { uint8_t len; /* used */ uint8_t alloc; /* excluding the head
2021-12-07 18:42:22
1290
原创 java日志之JUL
定义:JUL全称Java util logging,是java原生的日志框架,使用时不需要另外引入第三方类库,相对于其他框架使用方便,学习简单,能够在小型的应用中灵活使用。架构:Application:我们的程序应用。LogManager:管理Logger,是个单例Bean。Logger:日志记录器,我们的应用程序通过获取日志记录器Logger对象,调用其API来发布日志信息,Logger通常是应用程序访问日志系统的入口。Handler:日志处理器,每个Logger会关联持有多个Handler
2021-11-29 18:23:48
664
原创 企业微信会话存档功能开发
企业微信会话存档功能开发概述为保障客户服务质量、提高内部协作效率和监管合规等原因,企业微信提供会话内容存档功能。企业可以统一设置存档的员工范围,并通过API获取开启存档员工的工作沟通内容,满足企业的外部监管合规和内部管理需求。使用前帮助企业维信官方文档## 环境开发:win10部署: linuxsdk下载把动态库拷贝到lib目录下面,Financ类放在com.tencent.wework包下面(必须的)动态库加载/** * 加载动态库 * /lib 或者usr/lib 或
2021-11-26 15:54:29
1786
4
原创 Tomcat源码导入idea
1.下载tomcat代码本文选择9.0分支,此版本servlet还是javax开头的 github2.下载之后的目录结构3.源码使用ant构建(这里改用pom)<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/P
2021-09-29 04:10:08
771
原创 clion使用cmake导入redis源码3.0和6.0版本
redis源码导入clion文章目录redis源码导入clion背景环境redis3.0redis-3.0源码目录结构CMakeLists.txt的编写,在相应目录创建CMakeLists.txt根目录depsdeps/hiredisdeps/jemallocdeps/linenoisedeps/luareload项目redis6.0fork源码2.git clone 切换到6.0分支3. 导入到clion4.CMakeLists.txt的编写根目录deps/hiredis启动使用注意点背景学习red
2021-09-13 03:06:25
1356
原创 redis常用用法记录
redis常用用法分析1常用命令:https://www.runoob.com/redis/keys-scan.html2.脚本用法redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]EVAL "local unread = redis.call('GET',KEYS[1]) if(not unread) then return 0 end local desc = tonumber(unread)-to
2021-08-27 19:38:37
488
原创 使用jni进行java和c++相互操作
#include "com_git_MathInterface.h"using namespace std;JNIEXPORT jint JNICALL Java_com_git_MathInterface_add(JNIEnv * jni, jclass clazz, jint a, jint b){ return a+b;}JNIEXPORT jobject JNICALL Java_com_git_MathInterface_addInteger(JNIEnv * jni,
2021-03-11 20:24:57
1111
1
原创 Qt 5主窗体构成
Qt 5主窗体构成1.菜单栏菜单是一系列命令的列表。为了实现菜单、工具栏按钮、键盘快捷方式等命令的一致性,Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction动作对象构成的列表,而菜单栏则是包容菜单的面板,它位于主窗口顶部、主窗口标题栏的下面。一个主窗口最多只有一个菜单栏。2.状态栏状态栏通常显示GUI应用程序的一些状态信息,它位于主窗口的底部。用户可以在状态栏上添加、使用Qt窗口部件。一个主窗口最多只有一个状态栏。3.工具栏工具栏是由一系列的类似于按钮的动作排列
2021-01-07 23:49:51
251
1
原创 qt对话框
qt对话框相 关 类类 说 明静 态 函 数函 数 说 明QFileDialog类标准文件对话框getOpenFileName获得用户选择的文件名getSaveFileName获得用户保存的文件名getExistingDirectory获得用户选择的已存在的目录名getOpenFileNames获得用户选择的文件名列表QColorDialog类标准颜色对话框getColor获得用户选择的颜色值QFontDialog
2021-01-07 23:47:45
198
原创 qt布局
qt布局分割窗口(1)新建Qt Widgets Application(详见1.3.1节),项目名称为“Splitter”,基类选择“QMainWindow”,取消“创建界面”复选框的选中状态。(2)在上述工程的“main.cpp”文件中添加如下代码。其中,(a) QSplitter *splitterMain =new QSplitter(Qt::Horizontal,0):新建一个QSplitter类对象,作为主分割窗口,设定此分割窗口为水平分割窗口。(b) QTextEdit *text
2021-01-07 23:44:33
288
原创 qt的反射用法(新版本)
qt的反射用法,直接上代码Animal.h#ifndef ANIMAL_H#define ANIMAL_H#include<QString>#include<QObject>class Animal : public QObject{ //Q_OBJECT,这个为什么注释,因为后面发现一只提示方法重复定义,所以取消父类的标记public: explicit Animal(QObject *parent = 0); //Animal();
2020-11-03 02:20:39
5769
原创 # lua与c++交互(swig)
lua与c++交互上一篇大致的说明了lua和c++的基本调用方式,本文重点分享一下常见的luaApi,以及自定义类型的使用先来手工绑定c++代码头文件#ifndef CAT_H#define CAT_H#include<QDebug>#include<QString>class Cat{public: Cat(const QString& name,const int age); virtual ~Cat(){ qDeb
2020-11-02 00:38:33
741
原创 shardingjdbc 入门demo(jdbc+mybatis+springboot)
shardingjdbc 入门demo(jdbc+mybatis+springboot,同库分表)一.使用场景本人有两张用户表,想根据id的奇偶进行分表test_user_1 、test_user_2二.代码示例框架使用的是mybatis+plus全局pom<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-sta
2020-10-30 16:39:11
885
1
原创 太阳神三国杀(一),c++与lua交互
c++与lua互相调用(内嵌式)1.下载lualua固网2.解压 tar-zxvf3.将源码导入项目里面,去掉lua.c和luac.c里面的main方法,在使用之前创建一个lua.hpp文件,作为后面的头文件#ifndef LUA_HPP#define LUA_HPP// lua.hpp// Lua header files for C++// <<extern "C">> not supplied automatically because Lua also c
2020-10-23 01:18:53
734
原创 qt编译太阳神三国杀
qt编译太阳神三国杀编译前置条件qt环境本文环系统包括win10(qt5.14),deepinv15(qt5.9.9)g++编译,本文win10采用的是mingw64编译器1.下载源码github源码,下载比较慢的去gitee找找2.下载qt,win和linux自己操作,版本大于5.3就行3.打开qtCreator,选中源码的.pro文件4.开始编译下载swig编译swigwin10的直接下载可执行版,deepin下载源码,直接 sudo make install利
2020-10-16 01:33:22
1550
原创 本文介绍spring cloud 集成 nacos案例
本文介绍spring cloud 集成 nacos案例官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html单机部署:1.git克隆项目git clone https://github.com/alibaba/nacos.git2.进入根目录cd nacos/3.maven编译mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U3.进入目录cd distribution/ta
2020-09-10 20:02:22
553
原创 spring如何管理mybatis的事务
springaop如何接管mybatis的事务本文重点:aop的大致流程mybatis如何把事务托管给spring1.本文项目依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId>
2020-07-13 15:59:37
1517
1
原创 spring-boot-configuration-processor的真实作用
很多人都不知道这个包的真实作用在网上搜索了一下,一大堆都是复制粘贴的,不少博客都是说这个包是用来加载传统的xml或者properties配置,其实这都是错的。没有springboot的时候照样有方法加载。spring官网说明这个包的作用是生成配置元数据,比如你平常在yml文件里面配置server: port: 8080 #你在idea里面可以点击port,进到这个字段里面,还可以看到配置的提示信息aaa: bbb: haha # 自己自定义的就不能点击这是因为在你的资源文件里面
2020-06-28 10:27:19
21220
14
原创 springaop之拙劣实现
springaop之拙劣实现简单使用1.定义注解@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface MyLog {}@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @in
2020-06-16 20:26:24
325
1
原创 springaop和maven中使用aspectj
AOP概念:面向切面编程目的:扩展功能实现原理:一个java类到执行过程需要及经过的流程.java源码文件--------------->.class字节码文件-------------->loadclass->------->实例化,执行方法很明显,要想扩展(更改代码)在上面几步里面都可以做到,总体将实现原理分为两类静态代理分为:编译时织入(比如aspectj的ajc编译)、类加载时织入(自定义类加载器实现)。动态代理有 : jdk动态代理(基于接口来实现
2020-06-03 16:57:56
2681
1
原创 mybatis源码考究二(sqlsession线程安全和缓存失效)
mybatis源码考究二1.mybatis整合spring解决sqlsession线程安全问题2.mybatis整合spring一级缓存失效问题mybatis结合spring使用1.项目依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId>
2020-05-29 16:04:09
681
原创 mybatis源码考究一
mybatis源码考究一1.项目结构2.mybatis使用步骤介绍获取SqlSessionFactory这里面就会用到全局配置,本文的con1.xml使用SqlSessionFactory打开sqlSession使用sqlSession操作数据库3.快速入门1.构建SqlSessionFactory官网介绍使用xml构建static SqlSessionFactory sqlSessionFactory = null; static{ S
2020-05-28 17:21:11
236
2
原创 运行时动态改java注解的值
涉及内容:注解jdk动态代理编译与反编译引言java和c/c++不同,c/c++在编译的时候有一个预处理功能,java没有,从java文件到class文件之后所编写的代码就固定了。在下面即将讲述的场景如下,不同环境的数据库可能不一样,但是表名字一样,这时候在注解里面写死就不满足当前的需求直接上代码,demo如下/** * @author authorZhao * @date 2020年05月09日 */public class TestAnno { //简单解析${}或者#{
2020-05-11 17:55:35
803
原创 springboot的SpringApplication的创建过程
SpringApplication的创建过程运行main方法new SpringApplication(primarySources).run(args)new SpringApplication(primarySources) primarySources就是自己的启动类调用如下构造方法 /** * resourceLoader,此时传的是null * primarySourc...
2020-04-26 16:57:57
423
原创 canal客户端canal-spring-boot-starter
canal使用canal官网介绍1.开启mysql的bin-logwindows[mysqld]# 设置mysql的安装目录[根据本地情况进行修改]basedir=D:/mysql/mysql-5.7.24-winx64#Path to the database rootdatadir=D:/mysql/mysql-5.7.24-winx64/data#设置3306端口po...
2020-04-23 19:48:11
6952
4
原创 elk单机搭建
elk单节点集群搭建(单机)1.elasticsearch本文版本为 6.5.4,会对比当前的7.6.2作比较 jdk为1.81.下载2.解压3.配置配置文件 config目录下面cluster.name: es #设置集群的名字,要小写node.name: node-1 #设置节点的名字network.host: 0.0.0.0 #设置ip地址,使外界可以访问eshttp.p...
2020-04-18 11:05:32
344
原创 const关键字的常用用法
c语言中const关键字的常用用法1.const关键字的意思const 是 constant 的缩写,恒定不变的、常数;恒量它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。2.用法试例2.1修饰普通变量const int i = 1;<==> int const i = 1;代码段#include<stdio.h>int main(...
2020-03-17 22:15:42
591
原创 deepin创建桌面图标
之前下载了idea、clion等开发软件发现没有图标然后直接把启动脚本发送到桌面,clion.sh每次启动就点击一下也能正常启动,但是就觉得少点什么。从商店下载的应用是有图标的,比如我的桌面有一个自带的网易云,我发送到桌面,用编辑器打开一下[Desktop Entry]Version=1.0Type=ApplicationName=NetEase Cloud MusicName[z...
2020-03-15 15:30:13
2431
原创 数组和指针的区别
数组和指针的区别1.数组和数组第一个元素#include<stdio.h>void main() { int arr[] = { 5,8,6,9,3,4,1,7,2,0 }; //arr = { 2,5,1 };数组名是常量,不可被赋值,这么操作报错 int* p = arr; printf("数组的地址:%p\n", arr); printf("数组第一个元素的地址:...
2020-02-26 15:36:42
387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人