摘要:
注:如果能够接受使用mysql-proxy,sharding-jdbc/sphere,mycat等分库分表方案,那么基于citus的分布式postgresql一定是更好的方案,更稳定、强大的数据库,更稳定的半内核原生实现,不二的选择。 为什么需要分布式数据库 有很多原因数据库需要扩展性。1、请求需要
阅读全文
posted @ 2021-12-15 13:53
zhjh256
阅读(4373)
推荐(0)
摘要:
JDK 8的CompletionService相对于之前版本的Future而言,其优势是能够尽可能快的得到执行完成的任务。例如有4个并发任务要执行,正常情况下通过Future.get()获取,通常只能按照提交的顺序获得结果,如果最后提交的最先完成的话,总执行时间会长很多。而通过CompletionS
阅读全文
posted @ 2020-01-29 13:02
zhjh256
阅读(4179)
推荐(1)
摘要:
各gc的行为(包括各种gc在哪个节点花费的时间最多)及适用场景,应先理解这些前提,分析gc日志才会事半功倍,核心参数解析参见java垃圾回收及gc全面解析(全面覆盖cms、g1、zgc、openj9) 开启gc日志选项:-XX:+PrintGC -XX:+PrintGCApplicationStop
阅读全文
posted @ 2020-01-29 12:05
zhjh256
阅读(5182)
推荐(1)
摘要:
一般来说,gc的停顿时间和活跃对象的堆大小成比例,视gc线程的数量,每1GB可能会停顿1-3秒,且cpu数量通常和gc呈现阿姆达尔定律(Amdahl’s Law),而非我们直观计算的线性变化。如下: 体现在gc中的时候,不同cpu数量下的gc成本如下: 使用不同类型的gc将会在停顿和吞吐量之间发生很
阅读全文
posted @ 2019-12-21 15:45
zhjh256
阅读(4864)
推荐(1)
摘要:
mybatis插件(准确的说应该是around拦截器,因为接口名是interceptor,而且invocation.proceed要自己调用,配置中叫插件)功能非常强大,可以让我们无侵入式的对SQL的执行进行干涉,从SQL语句重写、参数注入、结果集返回等每个主要环节,典型的包括权限控制检查与注入、只
阅读全文
posted @ 2019-09-14 19:18
zhjh256
阅读(8923)
推荐(0)
摘要:
最近开发一cdc框架,为了测试极端情况,需要kafka传递100万条数据过去,1个G左右,由于其他环节限制,不便进行拆包(注:测下来,大包走kafka不一定性能更好,甚至可能更低)。 测试百万以上的变更数据时,报消息超过kafka broker允许的最大值,因此需要修改如下参数,保证包能够正常发送:
阅读全文
posted @ 2019-08-17 16:31
zhjh256
阅读(9792)
推荐(0)
摘要:
现在AOP的场景越来越多,所以我们有必要理解下和AOP相关的一些概念和机制。基础知识和原理类大家搜索spring aop/aspectj,有大量现成的可以参考,基本上只要理解了jdk动态代理、cglib字节码动态生成代理就足够了,而且必须知道这个代理类是spring托管的(如果是自己创建的代理类,是
阅读全文
posted @ 2019-04-19 09:05
zhjh256
阅读(47959)
推荐(4)
摘要:
[root@iZ23nn1p4mjZ zookeeper-3.4.10]# bin/zkCli.sh -server localhost:2181,localhost:2182,localhost:2183 Connecting to localhost:2181,localhost:2182,lo
阅读全文
posted @ 2018-10-09 11:43
zhjh256
阅读(34928)
推荐(0)
摘要:
版本介绍 目前最新版本为2.3(20190808更新)。demo搭建可参见https://www.orchome.com/6,收发消息测试可见https://www.cnblogs.com/yoyo1216/p/14024427.html。 从使用上来看,以0.9为分界线,0.9开始不再区分高级(相
阅读全文
posted @ 2018-09-20 10:58
zhjh256
阅读(9433)
推荐(2)
摘要:
目前我们使用的是主从+分库分表的系统架构,主库有N个分库,从库为多个slave做负载均衡,所以数据库端的架构是下面这样的: 因为差不多有一年半没有专门搞技术为主了,顺带回顾下。 这就涉及到多个主库数据同步到不分库分表的从库共查询和管理类系统使用。在mysql 5.6以及之前的版本中,没有原生的解决方
阅读全文
posted @ 2018-07-03 20:51
zhjh256
阅读(5475)
推荐(1)
摘要:
基于3.1.0配置spring boot可参考sharding jdbc(sphere) 3.1.0 spring boot配置。 选择开源核心组件的一个非常重要的考虑通常是社区活跃性,一旦项目团队无法进行自己后续维护和扩展的情况下更是如此。 至于为什么选择sharding-jdbc而不是Mycat
阅读全文
posted @ 2018-06-25 13:30
zhjh256
阅读(23367)
推荐(3)
摘要:
原先使用jedis的时候,处理手段是在从连接池获取连接时捕获JedisConnectionException异常,在异常处理部分重新获取连接,但是spring dame redis似乎不会,如下所示: org.springframework.dame.redis.RedisConnectionFai
阅读全文
posted @ 2018-06-14 17:00
zhjh256
阅读(21084)
推荐(2)
摘要:
mybatis 3.x源码深度解析与最佳实践 html版离线文件可从https://files.cnblogs.com/files/zhjh256/mybatis3.x%E6%BA%90%E7%A0%81%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90%E4%B8%8E%E6
阅读全文
posted @ 2018-03-06 09:11
zhjh256
阅读(61288)
推荐(7)
摘要:
虽然我们在内部rpc通信中使用的是基于认证和报文头加密的方式实现安全性,但是有些时候仍然需要使用SSL加密,可能是因为对接的三方系统需要,也可能是由于open的考虑。中午特地测了下netty下集成ssl的功能,关于ssl的握手过程以及java安全框架中的相关组件说明,请参考如下链接: http://
阅读全文
posted @ 2017-03-02 07:51
zhjh256
阅读(20507)
推荐(0)
摘要:
最近在看pthread方面的书,看到条件变量一节的时候,回忆了下java中条件变量的使用方式。 java中条件变量都实现了java.util.concurrent.locks.Condition接口,条件变量的实例化是通过一个Lock对象上调用newCondition()方法来获取的,这样,条件就和
阅读全文
posted @ 2017-02-11 17:16
zhjh256
阅读(15197)
推荐(1)
摘要:
之所以sockjs会存在,说得不好听点,就是因为微软是个流氓,现在使用windows 7的系统仍然有近半,而windows 7默认自带的是ie 8,有些会自动更新到ie 9,但是大部分非IT用户其实都不愿意或者不会升级(通常我们做IT的认为很简单的事情,在其他行业的人来看,那就是天书,不要觉得不可能
阅读全文
posted @ 2016-11-10 19:10
zhjh256
阅读(24889)
推荐(2)
摘要:
原博客地址http://blog.chinaunix.net/uid/20656672.html不再维护(数百篇oracle/teradata性能优化、故障处理原创文章)
阅读全文
posted @ 2016-05-16 13:31
zhjh256
阅读(692)
推荐(0)
摘要:
CAS 是支持单点登录的技术框架 oauth2.0 是授权协议 CAS适合场景 多个应用系统,只需要登录一次就可以同样访问其他系统 如图: CAS它提供了CAS Server 和CAS Client , CAS Server 独立部署, CAS Client 是一个jar 包,导入到项目中,配合 C
阅读全文
posted @ 2025-05-15 13:36
zhjh256
阅读(4)
推荐(0)
摘要:
Go-Micro、Go-Zero 和 GoFrame 是 Go 语言生态中三个主流的微服务开发框架,它们各自针对不同的场景和需求设计,具有不同的优缺点。以下是对它们的详细对比分析: 1. Go-Micro 定位:老牌通用微服务框架,提供服务发现、RPC、事件总线等基础组件。 优点 组件化设计:提供服
阅读全文
posted @ 2025-05-10 20:41
zhjh256
阅读(19)
推荐(0)
摘要:
package main import ( "context" "flag" "fmt" "log" "os" "os/signal" "syscall" "time" ) // 配置结构体,用于存储命令行参数和配置信息 type Config struct { Count int // 生成的斐波
阅读全文
posted @ 2025-05-10 17:49
zhjh256
阅读(1)
推荐(0)
摘要:
在 Go 语言里,Build tags(构建标签)是一种非常实用的机制,它能让你依据不同的条件(例如操作系统、架构、构建目标等)来选择性地编译代码。 跟c/c++里面的宏基本上相同的定位。难怪go的定位是c的底层性+java的易用性,一点没毛病(在我看来,唯一的缺点就是协程debug稍微有点不够方便
阅读全文
posted @ 2025-05-05 16:58
zhjh256
阅读(10)
推荐(0)
摘要:
在 Go 语言里,协程(goroutine)本身没有内置的停止机制,不过可以借助一些技巧和工具来实现协程的停止,主要有三种方式。 1. 使用 context 包 context 包为在 Go 程序中传递请求范围的数据、取消信号和截止时间等提供了一种方式。可以利用 context 中的 WithCan
阅读全文
posted @ 2025-05-04 23:46
zhjh256
阅读(1)
推荐(0)
摘要:
在 Go 语言里,结构体中的嵌入类型(也叫匿名字段)是一种独特的特性,它能够让一个结构体 “继承” 另一个结构体或者接口的字段和方法。下面从定义、使用方式、访问规则、方法提升、注意事项等方面详细介绍。 定义与使用方式 在结构体中定义嵌入类型时,只需指定类型名,无需给出字段名。示例如下: packag
阅读全文
posted @ 2025-05-04 20:44
zhjh256
阅读(3)
推荐(0)
摘要:
在 Go 语言里,interface{} 和 []byte 是两种不同的数据类型,它们在定义、用途、内存布局和使用方式上都有明显区别,下面为你详细介绍: 定义和本质 interface{}:它是 Go 语言里的空接口类型。在 Go 中,接口定义了一组方法签名,而空接口没有定义任何方法,这意味着所有类
阅读全文
posted @ 2025-05-04 16:12
zhjh256
阅读(1)
推荐(0)
摘要:
方法描述 + 使用 + 操作符进行拼接会对遍历字符串,计算并开辟一个新的空间来存储合并后的字符串 fmt.Sprintf 由于 printf 中可以使用 %d 等表示变量类型, sprintf 需要使用到反射来将不同的类型进行转换,效率较低 strings.Builder 使用 WriteStrin
阅读全文
posted @ 2025-04-30 19:53
zhjh256
阅读(6)
推荐(0)
摘要:
X/Open 组织(即现在的 Open Group )定义了分布式事务处理模型。 X/Open DTP 模型( 1994 )包括应用程序( AP )、事务管理器( TM,如Tuxedo, Oracle WebLogic Server,Oracle,PostgreSQL、IBM WebSphere A
阅读全文
posted @ 2025-04-21 16:26
zhjh256
阅读(10)
推荐(0)
摘要:
Infoworld 特约撰稿人 Nick Hodges 发布了一篇名为 “Four paradoxes of software development” 的文章,阐述了他眼中的软件开发领域的四大悖论。 全文内容如下: 桥梁建设 vs 软件开发:四个令人困惑的悖论 土木工程师可以理直气壮地说,世界上没
阅读全文
posted @ 2025-04-17 20:42
zhjh256
阅读(14)
推荐(0)
摘要:
从技术上来看,获取堆栈信息第一步。跟java/c中的jstack/pstack一样。# 获取goroutine堆栈信息 kill -SIGABRT <pid> # 会生成堆栈到stderr 内置pprof import _ "net/http/pprof" go func() { log.Print
阅读全文
posted @ 2025-04-12 19:49
zhjh256
阅读(25)
推荐(0)
摘要:
在 Go 语言中,泛型(Generics)是 Go 1.18 版本引入的一个强大特性,它允许你编写可以与多种类型一起工作的函数和类型。为了使用泛型,你需要定义一个或多个类型参数(type parameters),并为这些参数指定约束(constraints)。 泛型普通用法 定义类型参数 类型参数是
阅读全文
posted @ 2025-04-12 16:51
zhjh256
阅读(25)
推荐(0)
摘要:
本文主要介绍B+树的Copy-On-Write(纯属理论,现在实际中除了文件系统外,数据库基本不会采用copy-on-write实现),包括由来、设计思路和核心源码实现(以Xapian源码为例)。中文的互联网世界里,对B树、B+树的科普介绍很丰富,但对它们在工业界的实际使用却几乎没有相关介绍文章,本
阅读全文
posted @ 2025-04-04 13:28
zhjh256
阅读(8)
推荐(0)
摘要:
推荐使用次次版本,比如现在1.23,则用1.21.x,x至少发到10以后才稳定。尤其是go的dlv和go本身不是同时发布,存在一个依赖关系。一般需要1-2年dlv才会跟上最新版本的go。 无论是deepseek、chatgpt、还是书籍如Mastering Go里面都是不全面的,故有了本文,真正的从
阅读全文
posted @ 2025-01-10 15:28
zhjh256
阅读(144)
推荐(0)
摘要:
事务 事务ID及回卷 参见postgresql中的事务回卷原理及预防措施。 子事务(事务处理:概念与技术 4.7) 子事务具有ACI特性,但是不具有D特性。只会在主事务提交时,才会提交,无法单独提交。pg不支持子事务。 xact 保存点 保存点是不支持子事务/嵌套事务时的折中实现,但它是ANSI S
阅读全文
posted @ 2024-11-10 20:42
zhjh256
阅读(52)
推荐(0)
摘要:
都定义在<stdio.h>中,有些事C99的一部分,有些事C11新加的。如下: int printf( const char* format, ... ); (until C99) int printf( const char* restrict format, ... ); (since C99)
阅读全文
posted @ 2024-10-19 15:08
zhjh256
阅读(114)
推荐(0)
摘要:
该事件和"enq: US - contention"是一并出来的,但是他俩应该是刚好相反的,但是却在一个实例上出现,这时就有点怪了。下次找机会再去确认下具体的参数设置。 enq: US - contention的解决方法参见:19c生产环境enq: US - contention等待事件一例 参见:
阅读全文
posted @ 2024-10-10 09:43
zhjh256
阅读(31)
推荐(0)
摘要:
pg表达式引擎里面各个表达式的串联是使用goto动态label实现的。 // 定义部分 #if defined(EEO_USE_COMPUTED_GOTO) static const void *const dispatch_table[] = { &&CASE_EEOP_DONE, &&CASE_
阅读全文
posted @ 2024-10-06 20:22
zhjh256
阅读(33)
推荐(0)
摘要:
如下所示: lightdb@oradb=# explain analyze select * from (select a.*,rownum rn from (select * from v,v1 where v.id=v1.id and not exists (select 1 from t wh
阅读全文
posted @ 2024-09-29 15:42
zhjh256
阅读(8)
推荐(0)
摘要:
根据对pl/lua的相关介绍和一些说明如http://www.pgsql.tech/project_305_10000096,其性能相比plpgsql和plsql快不少,那实际到底如何呢?下面拿demo和一些实际的来对比下。 1、lua安装。 从https://www.lua.org/downloa
阅读全文
posted @ 2024-09-25 23:29
zhjh256
阅读(27)
推荐(0)
摘要:
GCC地址空间随机化是一种安全措施,旨在增加攻击者利用缓冲区溢出攻击的难度。这通常通过对堆、栈和其他内存区域进行随机化来实现。在GCC中,可以使用-fstack-protector-strong、-random-base和-Wl,-z,relro,-z,now等编译选项来实现。 -fstack-pr
阅读全文
posted @ 2024-09-16 19:46
zhjh256
阅读(52)
推荐(0)
摘要:
首先要安装gcc 7.3以上版本,依赖于c++ 17.参见gcc 7安装及4.8.5和7.5并存。 需要rpm方式或源码安装gflags 2.2,否则系统可能内置了gflags 2.1,从而导致链接时一直找不到gflags库。如下: /tmp/ccUXmr9R.o: In function `__s
阅读全文
posted @ 2024-08-04 09:15
zhjh256
阅读(356)
推荐(0)
摘要:
在不少服务器应用中,会采用插件化或者模块化的体系实现具体的业务功能,比如mysql支持插件化体系,nginx采用模块化体系。总得来说,很多时候,因为扩展性,系统会采用动态加载so的方式扩展业务功能,而主框架不需要每次新增功能就不得不重新编译,很多时候,对于二进制发行的应用来说,不可能这么做。 最近抽
阅读全文
posted @ 2024-08-04 09:05
zhjh256
阅读(983)
推荐(0)
摘要:
在开源pg中,pg 11才正式比较接近可用的支持哈希索引,之前的版本在wal、锁并发方面要么不可用、要么限制较多。和数据结构中的hash特性类似,持久化的hash索引也是分桶存储的,如下: Hash index uses four kinds of pages (gray rectangles):
阅读全文
posted @ 2024-06-07 17:25
zhjh256
阅读(13)
推荐(0)
摘要:
J.1. 版本发布 13.8-24.1 J.1.1. Oracle 兼容J.1.2. plorasql 增强J.1.3. MySQL 兼容J.1.4. lightdb 新特性J.1.5. ltjdbc 增强 版本发布日期:. 2024年04月30日 J.1.1. Oracle 兼容 支持group
阅读全文
posted @ 2024-05-26 22:14
zhjh256
阅读(27)
推荐(0)
摘要:
开源BSD有三大系列:freebsd、openbsd、netbsd。其实Mac OS X也是BSD系列,只不过是商业。 1.FreeBSD FreeBSD是从386BSD的基础上 发展起来的,而386BSD是由伯克利的计算机科学家Bill Jolitz 开发的针对Intel 80386芯片的一种BS
阅读全文
posted @ 2024-05-22 18:48
zhjh256
阅读(1078)
推荐(0)
摘要:
恒生电子LightDB顺利通过了金融信创生态实验室的产品测试,本次测试基于典型金融业务场景并在国产硬件环境中进行,经过测试,LightDB在产品性能、功能性、兼容性以及可靠性等多个维度100%符合金融业务系统,表现优异。 在本次测试的性能效率方面,共执行了8个场景,包括系统登录场景、简单查询场景、复
阅读全文
posted @ 2024-05-17 18:13
zhjh256
阅读(51)
推荐(0)
摘要:
8月1日,强制性国家标准GB 18030-2022《信息技术 中文编码字符集》实施。10月09日,恒生电子LightDB正式通过中国电子技术标准化研究院强制性国家标准GB18030-2022《信息技术 中文编码字符集》最高级(实现级别3)认证,彰显了LightDB在数字化信息处理领域对标国家标准的卓
阅读全文
posted @ 2024-05-17 17:15
zhjh256
阅读(29)
推荐(0)
摘要:
对数据量过亿的大表而言,dba最头疼的是随着业务变化增加带默认值的字段,以及修改字段的数据类型,在实现不好的数据库中,动不动执行半天,中途失败的话,还会卡半天。这在lightdb中是不会发生的。如下所示: lightdb@oradb=# create table t(id int,v varchar
阅读全文
posted @ 2024-05-16 15:37
zhjh256
阅读(12)
推荐(0)
摘要:
数据库设计通常需要满足一定的范式要求,其中主键更是最基本的要求。不过,数据库管理系统却允许我们创建没有主键的表。这样的表在数据库中会带来查询性能低下、复制延迟甚至无法实现高可用配置等问题。 为此,lightdb在22.1版本引入了一个新的功能,叫做不可见主键(Generated Invisible
阅读全文
posted @ 2024-05-16 15:24
zhjh256
阅读(15)
推荐(0)
摘要:
在业务开发中,通常因为代码不规范、中间件缺陷、DBA误提交批量SQL等原因,会导致服务端连接一直存在、但是实际上并未在执行的情况,从而导致数据库连接泄露。为了防止这种异常情况积压,lightdb中包含了多个参数用于控制超时相关的行为: lock_timeout:控制多久拿不到锁就自动超时并回滚事务
阅读全文
posted @ 2024-05-16 15:14
zhjh256
阅读(19)
推荐(0)
摘要:
如下: /usr/bin/ld: postgres.lto.o:(.note.stapsdt+0x24): undefined reference to `postgresql_statement__status_semaphore' /usr/bin/ld: postgres.lto.o:(.no
阅读全文
posted @ 2024-04-04 11:43
zhjh256
阅读(13)
推荐(0)
摘要:
看issue https://github.com/citusdata/citus/discussions/7206应该是网络不通,但是连接本地节点,那唯一的可能应该就是被kill或者工作节点挂了。模拟参见:https://blog.csdn.net/fm0517/article/details/7
阅读全文
posted @ 2024-04-04 11:18
zhjh256
阅读(10)
推荐(0)
摘要:
近日,一19c oracle rac测试环境,初始反馈是sys用户查询很快,cdb用户如c##any查询系统表如all_tables很慢,至少相差几十倍、有时候直接半天超时还没执行完,经查一开始发现在等待gc cr multi block mixed事件,该事件据官方解释,该事件时提升性能用的,如下
阅读全文
posted @ 2024-03-06 09:56
zhjh256
阅读(153)
推荐(0)
摘要:
1、总体可以参考https://blog.csdn.net/mengxiangfeiyang/article/details/129034747 创建用户、目录、依赖rpm、权限、内核参数、环境。下面重点说明几个容易出错的地方,或者该文章没有标记或者不必要的地方。 2、内存,最好8GB,4GB是非常
阅读全文
posted @ 2024-01-30 20:12
zhjh256
阅读(237)
推荐(0)
摘要:
1、参考https://blog.csdn.net/AllanHwang/article/details/127782317为主体 2、asm磁盘创建参考 https://blog.csdn.net/applmanwx/article/details/120389476,udev配置nvme不生效
阅读全文
posted @ 2024-01-29 09:49
zhjh256
阅读(240)
推荐(0)
摘要:
在oracle 11g中,SCAN IP还用的很少。到oracle 12.2或者19c,用户已经基本上清一色的切换到了SCAN IP。所以很有必要理解oracle的SCAN IP运行机制和配置。 先回顾下VIP。 RAC的每个节点都需要有一个虚拟IP,这就是VIP。VIP需要和PUBLIC IP同一
阅读全文
posted @ 2024-01-27 23:45
zhjh256
阅读(2256)
推荐(0)
摘要:
最近研究PG源码时,遇到行构造器的特性。官方文档https://www.postgresql.org/docs/current/functions-comparisons.html#ROW-WISE-COMPARISON并未给出ROW构造器的示例。 ROW()对应的实现是RowExpr(里面解析后会
阅读全文
posted @ 2024-01-15 10:35
zhjh256
阅读(171)
推荐(1)
摘要:
Maven 作为一个优秀的项目管理工具,其插件机制为其功能扩展提供了非常大的便捷性,本身它所有的功能都是插件完成的,maven自身只是一个框架。虽然说大多数情况下,我们可能不太会自己去编写 Maven 插件,但不排除在某些特殊的情况下,我们需要去完成一个自己的插件,来协助我们处理某些比较通用的事情,
阅读全文
posted @ 2024-01-14 23:16
zhjh256
阅读(134)
推荐(0)
摘要:
0、和java一样,go也是跨平台,天生支持Unicode。但是go直接生成可执行文件,性能更高,内存占用少。但是又和java一样,go打出来的二进制包能够扫描到依赖的库,如果库有漏洞,安全扫描会被扫出来。 1、安装、环境配置及术语 从https://golang.google.cn/下载对应的版本
阅读全文
posted @ 2024-01-14 22:55
zhjh256
阅读(273)
推荐(0)