博客
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
解决openfeign的fallback与springmvc注解冲突
@RequestMapping("/account")
public interface AccountFeign {
@PostMapping("/test")
String test();
}
@FeignClient(name = "${xxx.feign.basic}"
RabbitMQ架构及特性
rabbitmq:3.9.2
spring-boot-starter-amqp:2.3.0.RELEASE
架构Producer 生产者消息成功发送到交换机, 会触发回调事件ConfirmCallback(需要配置)消息不能被交换机转发到队列中时, 会触发回调事件ReturnCallback(需要配
Trie实现词句匹配
Trie 字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高树结构如图代码过于
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
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.