博客
Seata分布式事务环境搭建
下载seata服务端https://github.com/seata/seata/releases修改registry.conf这里使用nacos做注册中心和配置中心, 也就不需要服务端的file.conf了但是使用nacos时, nacos的密码不能有特殊符号, 否则seata可能连接不上regi
SpringBoot读写分离配置与事务
引入依赖<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.1</version>
MySQL InnoDB 加锁机制
MySQL 版本: 8.0.25隔离级别: 可重复读InnoDB有两种不同的SELECT,即普通SELECT 和 锁定读SELECT. 锁定读SELECT 又有两种,即SELECT ... FOR SHARE 和 SELECT ... FOR UPDATE; 锁定读SELECT 之外的则是 普通SE
MySQL InnoDB MVCC机制
对于普通select来说, InnoDB使用MVCC保证了事务隔离. 同一事务的两次相同查询语句都是同样结果, 其他事务修改记录不影响当前事务, 特殊情况是会看到同一事务中先前语句所做的更新, 所以对于普通select(快照读)来说, MVCC是解决了脏读/不可重复读/幻行的; 而对于当前读(锁定读
MySQL WITH AS 语法
如果一整句查询中多个子查询都需要使用同一个子查询的结果,那么就可以用with as,将共用的子查询提取出来,加个别名。后面查询语句可以直接用,对于大量复杂的SQL语句起到了很好的优化作用特别对于UNION ALL比较有用. 因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,
MyBatis处理一对多关系时的性能考虑
Mybatis框架对于处理一对多的情况有两种方法查询的时候JOIN子表, 然后交给MyBatis拼装数据查询的时候不JOIN子表, 主表查询完成后发起select再查询关联表数据, 还可以配置fetchType=lazy进行懒加载这两种方法各有问题:第一种方案有两个缺陷: 1) 做分页查询的时候不准
C++ 获取Windows环境变量
#include <windows.h>
string getValue(const char* env) {
string value = "";
char valueArr[1024] = { 0 };
unsigned int pathSize = GetEnvi
Java Stream flatMap解析
flatMap对流扁平化处理运行如下代码 String[] words = new String[]{"Hello", "World"};
List<String> a = Arrays.stream(words)
.map(word
Java8 Optional 开发常见用法
class Info {
String a;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
}
第一个例子针对空指
SpringBoot加载外部配置文件的几种方式
一@PropertySource("file:F:/my.properties")
@Configuration
@ConfigurationProperties(prefix = "my")
public class TestConfig {
private String url;
观察者模式与SpringBoot应用
当对象间存在一对多关系时, 则使用观察者模式(Observer Pattern). 比如, 当一个对象被修改时, 则会自动通知依赖它的对象.优点:观察者和被观察者是抽象耦合的建立一套触发机制SpringBoot应用场景在SpringBoot启动流程中org.springframework.boot.
Java SPI机制与应用
SPI全称Service Provider Interface, 是Java提供的一套用来被第三方实现或者扩展的接口实际上是"基于接口的编程+策略模式+配置文件"组合实现的动态加载机制, 更是设计模式的生动体现它可以用来启用框架扩展和替换组件. SPI的作用就是为这些被扩展的API寻找服务实现我们一
MySQL优化-表结构设计
首先明确一个, 减少占用的存储空间, 可以减少操作时占用的内存, 可以提高CPU处理效率字符串的ip地址可以转换为整数类型存储, mysql提供INET_ATON()和INET_NTOA()进行转换尽量避免字段允许为NULL, 字段为NULL会占用额外空间整数类型可以选择置为无符号, 同样的存储空间
C++Web框架Drogon
Drogon是一个基于C++14/17的Http应用框架,使用Drogon可以方便的使用C++构建各种类型的Web应用服务端程序。Drogon的主要应用平台是Linux,也支持Mac OS、FreeBSD和Windows。它的主要特点如下:网络层使用基于epoll(macOS/FreeBSD下是kq
Nginx+Frp+Docker实现HTTPS内网穿透
内网穿透实用性非常强, 例如支付回调/访问内网数据库域名dns需要解析到服务器地址frp下载地址https://github.com/fatedier/frp/releases下载这两个文件frp_0.38.0_linux_amd64.tar.gzfrp_0.38.0_windows_amd64.z
Nginx反向代理-传统单体项目相关配置
nginx.confserver {
listen 80;
server_name blog.22xcode.com;
#路径重写, http转https
rewrite ^(.*)$ https://$host$1 permanent;
}
blog.confse
C++ Web 框架 Oat++
Oat++轻量、跨平台、高性能、完全零依赖Oat++ 主页:https://oatpp.ioOat++ 文档:https://oatpp.io/docs/startGitHub 地址:https://github.com/oatpp/oatpp其主要特性有:随处运行Oat++ 没有任何依赖性,可以很
weixin-java-pay对接微信V3支付记录
https://github.com/binarywang/weixin-java-pay-demo这个demo里, 没有v3版本的配置, 这里记录一下v3支付, 相对之前的版本来说, 更为安全, 也相对繁琐一些, 而且请求和响应都使用了json格式的数据1. 配置发起支付所需的配置有三个证书文件,
更改Nacos配置文件缓存路径
Nacos会对远程拉下来的配置文件做缓存处理默认在%USER_DIR%/nacos/config下Naocs在com.alibaba.nacos.client.config.impl.LocalConfigInfoProcessor这个类里进行路径处理static {
LOCAL_F
SpringCloudAlibaba搭建过程踩坑记录
Nacos如果使用docker部署Nacos, 则需要设置容器环境变量NACOS_AUTH_ENABLE=true, 才能使nacos开启连接密码认证
spring:
profiles:
active: @profileActive@
application:
name: w