
笔记
镜悬xhs
热爱技术,喜欢写代码。
展开
-
set values for System.getenv()
set values for System.getenv()System.getenv()可以获取系统的环境变量,这个环境变量不可以通过程序修改,但有些场景下,可能需要在程序启动时,手动注入部分环境变量(比如,本地测试?)。最近在看相关源码时,偶然翻到一种方式来实现这样的场景。备注下实现方式: private static Map<String, String> getFieldValue(Class<?> klass, Object object, String nam原创 2021-12-20 14:29:56 · 522 阅读 · 0 评论 -
JPA + Hibernate + MySQL Cluster 事务处理
jpa查询数据库时,默认会开启事务,当数据库采用master-slave的架构部署时,事务请求会默认达到master节点,这样会导致master节点的负载过高。下面是对这个问题的分析和处理。首先,默认情况下jpa启动时,会和MySQL数据库产生如下交互:SET NAMES utf8mb4SET character_set_results = NULLSET autocommit=1autocommit=1,是应用向MySQL数据库发起自动提交设置。在自动提交模式下,所有的sql请求都会自动提交。原创 2021-12-18 18:58:16 · 1171 阅读 · 0 评论 -
JPA查询下@ManyToMany导致的N+1次query的问题
这里写自定义目录标题概述假设模型添加数据解决方案概述Spring Data Jpa底层默认使用Hibernate作为ORM框架, Hibernate有一个非常典型的N+1查询的问题。这个问题在有些场景下会非常影响系统稳定性。下面是实际工作中遇到的问题,主要背景如下:系统使用Hibernate对配置模型进行抽象建模,配置模型存储在MySQL数据库中;系统每隔一段时间,会全量加载所有配置信息,刷新实例本地的内存配置,由于使用了@ManyToMany、@ManyToOne、@OneToMany等注解,原创 2021-12-16 11:38:58 · 2518 阅读 · 0 评论 -
高配置小集群还是低配置大集群?
nebula图数据库其实就是一个存储层。最开始以为nebula除了使用图模型存储数据之外,还包含了一系列的基于图数据实现的各类数据挖掘算法,最后发现它并没有想象中的那么复杂。也对,毕竟功能越简单的产品,越能做得性能出众。功能复杂了,反而可能失去聚焦。nebula的基础组件分成三块:meta:元数据管理,现在的分布式应用中,单独抽出一个组件管理元数据已经是常见玩法了 storage:存储组件,存储nebula中的各类数据 graph:查询组件,支持各类图上的查询语句的解析和处理这三个组件在操作系原创 2021-04-19 19:25:59 · 362 阅读 · 0 评论 -
克莱因瓶在现实中为什么不存在
克莱因瓶是一个密闭的空间体,对比的对象是球体,而不应该是玻璃杯。玻璃杯有杯口,内部和外部的空间从杯口的切面处分割开来。杯口如果不加盖子,则内外部空间是联通的。球体是闭合的,直观上很容易区分出球外表面和球内表面,以及球外空间和球内空间,且它们都是相互隔离的。克莱因瓶也是闭合的,但不存在内表面和外表面,也不存在内空间和外空间,内就是外,外就是内。为什么克莱因瓶无法存在于三维世界?因为若想让密闭三维物体不存在内外之分,“平整”的三维空间肯定是做不到的,一定得让空间扭曲…二维平面中,左侧脸如何变成右侧脸原创 2021-04-18 12:36:26 · 741 阅读 · 0 评论