博客

解决openfeign的fallback与springmvc注解冲突

@RequestMapping("/account") public interface AccountFeign { @PostMapping("/test") String test(); } @FeignClient(name = "${xxx.feign.basic}"
2021-09-02

RabbitMQ架构及特性

rabbitmq:3.9.2 spring-boot-starter-amqp:2.3.0.RELEASE 架构Producer 生产者消息成功发送到交换机, 会触发回调事件ConfirmCallback(需要配置)消息不能被交换机转发到队列中时, 会触发回调事件ReturnCallback(需要配
2021-08-18
Trie实现词句匹配

Trie实现词句匹配

Trie 字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高树结构如图代码过于
2021-07-26
Java JNI 调用 C++方法 基于 IDEA Visual Stutio 2019

Java JNI 调用 C++方法 基于 IDEA Visual Stutio 2019

JNIJava Native Interface首先写一个java类package com.test; public class JNI { //native关键字 public native int add(int a, int b); } 执行javah命令注意路径我的JN
2021-07-20

Visual Studio 2019编译QT5.12.0 x64

下载源码https://download.qt.io/archive/qt/5.12/5.12.0/single/编译工具Perlhttps://strawberryperl.com/download/5.26.3.1/strawberry-perl-5.26.3.1-64bit-portable.
2021-07-14

C++中友元函数不能重载的运算符

C++规定有四个运算符 =, ->, [], () 不可以是全局域中的重载(即不能重载为友员函数)当把赋值运算符重载为类的友员函数,在程序中执行类对象的赋值语句时,程序就会出现两种矛盾的选择。1、因为它认为类中并没有重载赋值运算符的成员函数,所以它根据C++的规则,会去调用相应的构造函数。2、但是在
2021-07-11

C++复制构造函数几种特殊情况

一int main() { Test cc; //会调用拷贝构造函数 将cc赋值给dd, 因为dd不存在(没有初始化), 所以需要调用拷贝构造函数进行初始化 Test dd = cc; cout << &cc << endl; cout << &dd << e
2021-07-05

ActiveMQ架构及特性

架构主从模式(Master Slave): JDBC方案 相较于集群, 该模式解决高可用的问题集群(Broker Clusters): 相对于主从模式, 该模式可以进行负载均衡, 一个client1连接broker1发送消息,另一个client2连接broker2消费消息,这时就需要将broker1
2021-06-05

常见的大表查询优化

测试表user, user_detail各100w数据下面是一个常见的连表查询分页sqlSELECT * FROM user u LEFT JOIN user_detail ud ON u.id = ud.user_id LIMIT 800000, 10 执行时间3.323s优化下可以写成这样SEL
2021-05-10
SVN在IDEA的相关操作

SVN在IDEA的相关操作

建立svn项目目录我这使用的是coding建立相关文件夹然后使用svn工具checkout到本地如图在trunk(主分支文件夹)文件夹内建立项目在idea中打开这个文件夹在最上面的VCS标签中启用版本控制如图pom.xml在src下是乱写的提交代码操作与git类似更新代码操作与git类似解决代码冲突
2021-05-09

Redis特性

1. GEO可用于存储地理位置添加地理位置的坐标计算两个位置间的直线距离根据指定的经纬度坐标来获取指定范围内的地理位置集合2. Pipinglineing 管道, 一次发送多个命令, 节省网络开销3. Public/Subscribe 发布订阅, 可用于构建轻量级的消息队列, 但如果客户端断连, 消
2021-04-30
TCP三次握手四次挥手

TCP三次握手四次挥手

三次握手是为了证明双方都有发送响应消息的能力比如A 要向 B 建立连接假如 A B 双方都是正常的A向B发送syn, B接收到, 此时B知道A能正常发消息B向A发送syn和ack, A接收到, 此时A知道B能正常收到(ack), 也能正常发送(syn), 但B还不知道A能不能正常收到最后A向B发送a
2021-04-22

RocketMQ解决消息发送与业务落库的一致性

在实际业务中, 经常有如下场景更新一条数据后, 需要发送一条消息异步通知其他服务进行后续处理比如用户完成激活, 发送一条消息通知第三方服务同步用户状态那么会有如下代码@Transactional public void enabled() { //更新用户状态 updateUser(
2021-04-21

RocketMQ架构及特性

架构RocketMQ包含四个组件NameServer, Broker, Consumer, ProducerNameServer类似注册中心, Broker接收存储消息, Consumer和Producer在项目内定义Broker向所有NameServer注册自己, 持续发送心跳包Consumer和
2024-10-23

SpringCloud OpenFeign 微服务调用

现有xxx-common 和 xxx-user两个微服务, 现需要在common中调用user的服务添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-start
2021-04-10

SpringBoot Test bootstrap.yml读取不到指定配置

项目用了springcloud config, 所以用bootstrap读取项目基础配置.但是在单元测试下, 发现bootstrap内的值(@@application.name@@)没有被替换, 导致单元测试一直报错解决方法:在pom中的project->build节点下, 新增如下代码
2021-03-26

模拟Mybatis"无实现类"调用接口

Mybatis让我们通过接口(interface)就能调用到对应sql, 看起来好像没有实现类, 貌似不符合"常识"通过这个简易demo, 带你大致了解mybatis背后所做的事先建立maven工程 <parent> <groupId>org.springframework.b
2021-02-21

MyBatis是如何让我们通过接口就能调用到SQL的

大致可分为如下几个步骤1. 动态注册bean1.1 根据配置mapperScan, 扫描对应的包, 将对应的类解析成BeanDefinition1.2 通过替换BeanDefinition中的BeanClass为MapperFactoryBean, (原来的BeanClass是Mapper接口) 实
2021-02-13

MyBatis拦截器实现SQL打印

mybatis有自带的sql打印, 但只会出现在抛异常的时候, 或者配置日志输出, 但是输出的日志较为冗长像这样### Error querying database. Cause: java.lang.ArithmeticException: / by zero ### The error ma
2021-02-08
MyBatis拦截器执行顺序

MyBatis拦截器执行顺序

最近项目用上了mybatis, 但是想像hibernate那样能打印sql, 于是写了个基于mybatis拦截器的sql打印, 参考这个https://blog.22xcode.com/post/78然后, 碰到了问题, 拦截器会重复输出一句sqlmybatis sql: SELECT id, na
2021-02-08