博客

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

Seata全局事务隔离性

在数据库本地事务隔离级别 读已提交(Read Committed) 或以上的基础上,Seata(AT 模式)的默认全局隔离级别是 读未提交(Read Uncommitted) 。如果应用在特定场景下,必需要求全局的 读已提交 ,目前 Seata 的方式是通过 SELECT FOR UPDATE 语句
2021-01-26

Java 建造者模式

建造者模式建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的构建与其表示相分离
2021-01-25

Docker 安装 MongoDB

docker pull mongo docker run -itd --name mongo -p 27017:27017 mongo --auth -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mo
2021-01-13

Dubbo服务降级-Mock

模块A依赖模块B, 当模块B无法启动或无法提供服务时, 需要进行服务降级 @Reference(version = "${bs.service.version}", timeout = 500000, retries = 0, check = false, mock = "fail:com.code
2021-01-12

Java操作Redis的常见误区

不能使用 keys * 命令不能在set中存放大量数据
2021-01-11