文章
这里记录了我的全部文章
-
微信支付|服务商模式V3付款码支付
前言 不多说,官方文档写的乱七八糟,v3还用的v2的付款码,导致代码十分混乱,骂的话已经不想多说了。 结合微信v3的SDK和github上面的描述,对于官方sdk未实现的接口可以自己根据OkHttpClientAdapter 的实现类发送
-
Spring Boot 默认 DataSource 自动配置机制解析
背景: 在一个项目中我自己写了一个db-starter来作为所有模块的数据库连接器,在其它模块引入了db-starter后且没有配置数据库连接信息在配置文件中(需求需要在创建连接的时候才会提供,而不是在配置文件中写死)后启动项目报错Fail
-
Rust引用与借用一
Rust 的安全感来自一条“死规矩”:谁申请的内存、谁负责把它收回。理解这条规矩离不开两个舞台——栈和堆。下面用三段小代码,但把重点放在“钥匙怎么传、数据在哪里”。 先掰清:栈与堆在 Rust 里的分工 栈(stack) 存放固定大小、生命
-
用 gRPC 打造最终一致的 AP-模式注册中心
背景与目标 需求 说明 高可用 (A) 任意 Dispatcher 宕机或网络分区,注册/发现仍立即可用 分区容忍 (P) 各分区内继续服务,网络恢复后自动收敛数据 最终一致 强一致不是刚需;允许短暂不一致 低延迟 注册/心跳 O(μs),
-
Java三元运算符空指针异常?——深入拆箱与类型推导机制
三元运算符 + 包装类型 + null = NullPointerException 案例还原:这段代码为什么会 NPE? protected Long getCurrentUserId() { return getBaseContextS
-
JMM内存模型
八大原子操作 public volatile Boolean isFlag = false; 上面的代码中,当我们在两个线程同时操作isFlag这个字段如果不加上volatile关键字就会出现数据不一致之问题。而volatile局势使用的缓
-
函数式编程-Java
Lambda表达式 规范 明确指明参数类型 代码多于一行,不能省略{}以及最后一行的return 可以根据上下文推断出参数类型是,可以省略参数类型 只有一个参数时,可以省略() 1.(int a, int b) -> a + b; // 两
-
注解和反射
元注解 负责注解其它注解 @Target:用于描述注解的使用范围(可以用在哪个地方) @Retention:描述注解的生命周期(SOURCE<CLASS<RUNTIME) @Document:说明该注解将被包含再javadoc中 @Inhe
-
RabbitMQ数据上传
背景: 在知识图谱可视化的系统中需要将数据同时导入到MySQL数据库和Neo4j数据库中。 大数据量、不需要时效性。 再原来的代码中,只是使用了双线程来执行导入到两个库中的逻辑,对于数据导入的异常和数据一致性等存在较大的问题。 正如标题,在