摘要: 注:如果能够接受使用mysql-proxy,sharding-jdbc/sphere,mycat等分库分表方案,那么基于citus的分布式postgresql一定是更好的方案,更稳定、强大的数据库,更稳定的半内核原生实现,不二的选择。 为什么需要分布式数据库 有很多原因数据库需要扩展性。1、请求需要 阅读全文
posted @ 2021-12-15 13:53 zhjh256 阅读(4156) 评论(0) 推荐(0) 编辑
摘要: JDK 8的CompletionService相对于之前版本的Future而言,其优势是能够尽可能快的得到执行完成的任务。例如有4个并发任务要执行,正常情况下通过Future.get()获取,通常只能按照提交的顺序获得结果,如果最后提交的最先完成的话,总执行时间会长很多。而通过CompletionS 阅读全文
posted @ 2020-01-29 13:02 zhjh256 阅读(4106) 评论(1) 推荐(1) 编辑
摘要: 各gc的行为(包括各种gc在哪个节点花费的时间最多)及适用场景,应先理解这些前提,分析gc日志才会事半功倍,核心参数解析参见java垃圾回收及gc全面解析(全面覆盖cms、g1、zgc、openj9) 开启gc日志选项:-XX:+PrintGC -XX:+PrintGCApplicationStop 阅读全文
posted @ 2020-01-29 12:05 zhjh256 阅读(4936) 评论(1) 推荐(1) 编辑
摘要: 一般来说,gc的停顿时间和活跃对象的堆大小成比例,视gc线程的数量,每1GB可能会停顿1-3秒,且cpu数量通常和gc呈现阿姆达尔定律(Amdahl’s Law),而非我们直观计算的线性变化。如下: 体现在gc中的时候,不同cpu数量下的gc成本如下: 使用不同类型的gc将会在停顿和吞吐量之间发生很 阅读全文
posted @ 2019-12-21 15:45 zhjh256 阅读(4762) 评论(0) 推荐(1) 编辑
摘要: mybatis插件(准确的说应该是around拦截器,因为接口名是interceptor,而且invocation.proceed要自己调用,配置中叫插件)功能非常强大,可以让我们无侵入式的对SQL的执行进行干涉,从SQL语句重写、参数注入、结果集返回等每个主要环节,典型的包括权限控制检查与注入、只 阅读全文
posted @ 2019-09-14 19:18 zhjh256 阅读(8783) 评论(1) 推荐(0) 编辑
摘要: 最近开发一cdc框架,为了测试极端情况,需要kafka传递100万条数据过去,1个G左右,由于其他环节限制,不便进行拆包(注:测下来,大包走kafka不一定性能更好,甚至可能更低)。 测试百万以上的变更数据时,报消息超过kafka broker允许的最大值,因此需要修改如下参数,保证包能够正常发送: 阅读全文
posted @ 2019-08-17 16:31 zhjh256 阅读(9570) 评论(0) 推荐(0) 编辑
摘要: 现在AOP的场景越来越多,所以我们有必要理解下和AOP相关的一些概念和机制。基础知识和原理类大家搜索spring aop/aspectj,有大量现成的可以参考,基本上只要理解了jdk动态代理、cglib字节码动态生成代理就足够了,而且必须知道这个代理类是spring托管的(如果是自己创建的代理类,是 阅读全文
posted @ 2019-04-19 09:05 zhjh256 阅读(47933) 评论(3) 推荐(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 阅读(34086) 评论(0) 推荐(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 阅读(9351) 评论(2) 推荐(2) 编辑
摘要: 目前我们使用的是主从+分库分表的系统架构,主库有N个分库,从库为多个slave做负载均衡,所以数据库端的架构是下面这样的: 因为差不多有一年半没有专门搞技术为主了,顺带回顾下。 这就涉及到多个主库数据同步到不分库分表的从库共查询和管理类系统使用。在mysql 5.6以及之前的版本中,没有原生的解决方 阅读全文
posted @ 2018-07-03 20:51 zhjh256 阅读(5454) 评论(0) 推荐(1) 编辑
摘要: 基于3.1.0配置spring boot可参考sharding jdbc(sphere) 3.1.0 spring boot配置。 选择开源核心组件的一个非常重要的考虑通常是社区活跃性,一旦项目团队无法进行自己后续维护和扩展的情况下更是如此。 至于为什么选择sharding-jdbc而不是Mycat 阅读全文
posted @ 2018-06-25 13:30 zhjh256 阅读(23131) 评论(1) 推荐(3) 编辑
摘要: 原先使用jedis的时候,处理手段是在从连接池获取连接时捕获JedisConnectionException异常,在异常处理部分重新获取连接,但是spring dame redis似乎不会,如下所示: org.springframework.dame.redis.RedisConnectionFai 阅读全文
posted @ 2018-06-14 17:00 zhjh256 阅读(20688) 评论(4) 推荐(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 阅读(59814) 评论(14) 推荐(7) 编辑
摘要: 虽然我们在内部rpc通信中使用的是基于认证和报文头加密的方式实现安全性,但是有些时候仍然需要使用SSL加密,可能是因为对接的三方系统需要,也可能是由于open的考虑。中午特地测了下netty下集成ssl的功能,关于ssl的握手过程以及java安全框架中的相关组件说明,请参考如下链接: http:// 阅读全文
posted @ 2017-03-02 07:51 zhjh256 阅读(20200) 评论(2) 推荐(0) 编辑
摘要: 最近在看pthread方面的书,看到条件变量一节的时候,回忆了下java中条件变量的使用方式。 java中条件变量都实现了java.util.concurrent.locks.Condition接口,条件变量的实例化是通过一个Lock对象上调用newCondition()方法来获取的,这样,条件就和 阅读全文
posted @ 2017-02-11 17:16 zhjh256 阅读(15086) 评论(1) 推荐(1) 编辑
摘要: 之所以sockjs会存在,说得不好听点,就是因为微软是个流氓,现在使用windows 7的系统仍然有近半,而windows 7默认自带的是ie 8,有些会自动更新到ie 9,但是大部分非IT用户其实都不愿意或者不会升级(通常我们做IT的认为很简单的事情,在其他行业的人来看,那就是天书,不要觉得不可能 阅读全文
posted @ 2016-11-10 19:10 zhjh256 阅读(24858) 评论(3) 推荐(2) 编辑
摘要: 原博客地址http://blog.chinaunix.net/uid/20656672.html不再维护(数百篇oracle/teradata性能优化、故障处理原创文章) 阅读全文
posted @ 2016-05-16 13:31 zhjh256 阅读(687) 评论(0) 推荐(0) 编辑
摘要: 事务 事务ID及回卷 参见postgresql中的事务回卷原理及预防措施。 子事务(事务处理:概念与技术 4.7) 子事务具有ACI特性,但是不具有D特性。只会在主事务提交时,才会提交,无法单独提交。pg不支持子事务。 xact 保存点 保存点是不支持子事务/嵌套事务时的折中实现,但它是ANSI S 阅读全文
posted @ 2024-11-10 20:42 zhjh256 阅读(8) 评论(0) 推荐(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 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 该事件和"enq: US - contention"是一并出来的,但是他俩应该是刚好相反的,但是却在一个实例上出现,这时就有点怪了。下次找机会再去确认下具体的参数设置。 enq: US - contention的解决方法参见:19c生产环境enq: US - contention等待事件一例 参见: 阅读全文
posted @ 2024-10-10 09:43 zhjh256 阅读(8) 评论(0) 推荐(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 阅读(7) 评论(0) 推荐(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 阅读(3) 评论(0) 推荐(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 阅读(8) 评论(0) 推荐(0) 编辑
摘要: GCC地址空间随机化是一种安全措施,旨在增加攻击者利用缓冲区溢出攻击的难度。这通常通过对堆、栈和其他内存区域进行随机化来实现。在GCC中,可以使用-fstack-protector-strong、-random-base和-Wl,-z,relro,-z,now等编译选项来实现。 -fstack-pr 阅读全文
posted @ 2024-09-16 19:46 zhjh256 阅读(30) 评论(0) 推荐(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 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 在不少服务器应用中,会采用插件化或者模块化的体系实现具体的业务功能,比如mysql支持插件化体系,nginx采用模块化体系。总得来说,很多时候,因为扩展性,系统会采用动态加载so的方式扩展业务功能,而主框架不需要每次新增功能就不得不重新编译,很多时候,对于二进制发行的应用来说,不可能这么做。 最近抽 阅读全文
posted @ 2024-08-04 09:05 zhjh256 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 在开源pg中,pg 11才正式比较接近可用的支持哈希索引,之前的版本在wal、锁并发方面要么不可用、要么限制较多。和数据结构中的hash特性类似,持久化的hash索引也是分桶存储的,如下: Hash index uses four kinds of pages (gray rectangles): 阅读全文
posted @ 2024-06-07 17:25 zhjh256 阅读(5) 评论(0) 推荐(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 阅读(17) 评论(0) 推荐(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 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 恒生电子LightDB顺利通过了金融信创生态实验室的产品测试,本次测试基于典型金融业务场景并在国产硬件环境中进行,经过测试,LightDB在产品性能、功能性、兼容性以及可靠性等多个维度100%符合金融业务系统,表现优异。 在本次测试的性能效率方面,共执行了8个场景,包括系统登录场景、简单查询场景、复 阅读全文
posted @ 2024-05-17 18:13 zhjh256 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 8月1日,强制性国家标准GB 18030-2022《信息技术 中文编码字符集》实施。10月09日,恒生电子LightDB正式通过中国电子技术标准化研究院强制性国家标准GB18030-2022《信息技术 中文编码字符集》最高级(实现级别3)认证,彰显了LightDB在数字化信息处理领域对标国家标准的卓 阅读全文
posted @ 2024-05-17 17:15 zhjh256 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 对数据量过亿的大表而言,dba最头疼的是随着业务变化增加带默认值的字段,以及修改字段的数据类型,在实现不好的数据库中,动不动执行半天,中途失败的话,还会卡半天。这在lightdb中是不会发生的。如下所示: lightdb@oradb=# create table t(id int,v varchar 阅读全文
posted @ 2024-05-16 15:37 zhjh256 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 数据库设计通常需要满足一定的范式要求,其中主键更是最基本的要求。不过,数据库管理系统却允许我们创建没有主键的表。这样的表在数据库中会带来查询性能低下、复制延迟甚至无法实现高可用配置等问题。 为此,lightdb在22.1版本引入了一个新的功能,叫做不可见主键(Generated Invisible 阅读全文
posted @ 2024-05-16 15:24 zhjh256 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 在业务开发中,通常因为代码不规范、中间件缺陷、DBA误提交批量SQL等原因,会导致服务端连接一直存在、但是实际上并未在执行的情况,从而导致数据库连接泄露。为了防止这种异常情况积压,lightdb中包含了多个参数用于控制超时相关的行为: lock_timeout:控制多久拿不到锁就自动超时并回滚事务 阅读全文
posted @ 2024-05-16 15:14 zhjh256 阅读(9) 评论(0) 推荐(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 阅读(6) 评论(0) 推荐(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 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 近日,一19c oracle rac测试环境,初始反馈是sys用户查询很快,cdb用户如c##any查询系统表如all_tables很慢,至少相差几十倍、有时候直接半天超时还没执行完,经查一开始发现在等待gc cr multi block mixed事件,该事件据官方解释,该事件时提升性能用的,如下 阅读全文
posted @ 2024-03-06 09:56 zhjh256 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 1、总体可以参考https://blog.csdn.net/mengxiangfeiyang/article/details/129034747 创建用户、目录、依赖rpm、权限、内核参数、环境。下面重点说明几个容易出错的地方,或者该文章没有标记或者不必要的地方。 2、内存,最好8GB,4GB是非常 阅读全文
posted @ 2024-01-30 20:12 zhjh256 阅读(182) 评论(0) 推荐(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 阅读(173) 评论(0) 推荐(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 阅读(1451) 评论(0) 推荐(0) 编辑
摘要: 最近研究PG源码时,遇到行构造器的特性。官方文档https://www.postgresql.org/docs/current/functions-comparisons.html#ROW-WISE-COMPARISON并未给出ROW构造器的示例。 ROW()对应的实现是RowExpr(里面解析后会 阅读全文
posted @ 2024-01-15 10:35 zhjh256 阅读(106) 评论(0) 推荐(1) 编辑
摘要: Maven 作为一个优秀的项目管理工具,其插件机制为其功能扩展提供了非常大的便捷性,本身它所有的功能都是插件完成的,maven自身只是一个框架。虽然说大多数情况下,我们可能不太会自己去编写 Maven 插件,但不排除在某些特殊的情况下,我们需要去完成一个自己的插件,来协助我们处理某些比较通用的事情, 阅读全文
posted @ 2024-01-14 23:16 zhjh256 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 0、和java一样,go也是跨平台,天生支持Unicode。但是go直接生成可执行文件,性能更高,内存占用少。但是又和java一样,go打出来的二进制包能够扫描到依赖的库,如果库有漏洞,安全扫描会被扫出来。 1、安装、环境配置及术语 从https://golang.google.cn/下载对应的版本 阅读全文
posted @ 2024-01-14 22:55 zhjh256 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 依赖包 jdk 8或11都行,不要到jdk 17 jdk 17第一个问题是jdk内部类默认不允许反射,很多配置要改。 scala 2.13 scala 2.13版本是为scala 3.0版本准备的,改进挺多。可通过scala编程(第四版)学习。 hadoop 3.2.1 因为windows hado 阅读全文
posted @ 2024-01-13 21:17 zhjh256 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 一级缓存的特性是: 1,一级缓存模式是开启状态(可通过localCacheScope属性控制,默认为SESSION,开启)2,一级缓存作用域在于SqlSession(大家可以关闭SqlSession,然后创建一个新的,再获取对象,观察实验结果),缓存随着会话(SqlSession)的创建而产生,随着 阅读全文
posted @ 2024-01-12 16:00 zhjh256 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 除了我们熟知的distinct外,postgresql还支持distinct on,它的用途跟mysql没有启用ONLY_FULL_GROUP_BY SQL选项是一样的,针对声明的字段做分组,分组外的字段返回随机一行。如下: lightdb@oradb=# create table t_distin 阅读全文
posted @ 2024-01-10 09:56 zhjh256 阅读(118) 评论(0) 推荐(0) 编辑
摘要: PostgreSQL 在2009年发布的8.4版本中开始支持window语法,直到2017-10-5发布了pg 11才完全支持sql:2011中所有的子句(所以具体厂商实现通常要三五年甚至更长才能完成对标准规范的支持)。 窗口函数的语法定义如下: function_name ([expression 阅读全文
posted @ 2024-01-10 09:31 zhjh256 阅读(9) 评论(0) 推荐(0) 编辑
摘要: rhel 7的主要新特性参见https://www.cnblogs.com/zhjh256/p/6675315.html。 8和7比又有不少新特性和废弃的特性。如下: /etc/inittab废弃 查看防火墙 systemctl status firewalld.service nftables代替 阅读全文
posted @ 2024-01-07 20:33 zhjh256 阅读(16) 评论(0) 推荐(0) 编辑
摘要: CMU 15-445/15-645中在索引一节有提到“Pointer Swizzling”,意思是内存地址和物理地址之间的转换。但它的翻译当前没有很能表达意思的术语,理解即可,有时候就是不好翻译不如不翻译。 https://stackoverflow.com/questions/21218304/w 阅读全文
posted @ 2024-01-05 20:43 zhjh256 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 回文子串基本是动态规划里面的应用示例之一。虽然在实际中或者网上,我没有找到回文子串的使用案例。 #include <stddef.h> #include <stdio.h> #include <string.h> void longestPalindrome(char str[100],size_t 阅读全文
posted @ 2024-01-03 09:48 zhjh256 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 一、WinCC WinCC是西门子公司推出的一款上位机组态软件,是工业自动化领域中非常常用的一款软件,被广泛应用于自动化控制、监控等方面。WinCC具有丰富的图形化界面,可灵活地配置、监控、控制和维护工业生产流程,支持多语言、分布式、网络化的特点。 二、LabVIEW LabVIEW是美国国家仪器公 阅读全文
posted @ 2024-01-03 09:39 zhjh256 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 主要用于避免遍历的时候做无用功。 // 用于处理不相交集合的合并问题。 // 经典应用有: // –连通子图 // –最小生成树Kruskal算法 // –最近公共祖先 // O(n) #include <bits/stdc++.h> // 万能库,测试可用,生产不可用 using namespac 阅读全文
posted @ 2024-01-02 22:05 zhjh256 阅读(8) 评论(0) 推荐(0) 编辑
摘要: java.lang.RuntimeException: org.codehaus.plexus.component.repository.exception.ComponentLookupException: com.google.inject.ProvisionException: Unable 阅读全文
posted @ 2024-01-02 10:01 zhjh256 阅读(706) 评论(0) 推荐(0) 编辑
摘要: 创建无向图的邻接表和邻接矩阵 ALGraph.h #pragma once #define MAXVEX 100 typedef char VertexType; //顶点类型 typedef int EdgeType; //边上的权值类型 struct EdgeNode //边表结点 { int 阅读全文
posted @ 2024-01-01 23:36 zhjh256 阅读(11) 评论(0) 推荐(0) 编辑
摘要: c/c++编译、构建工具链(包括4部分 编译工具,构建工具,sdk,运行时库)。https://zhuanlan.zhihu.com/p/655701220虽然cmake已经很成熟了,但是make和Ninja(pg 16采用Ninja而不是cmake)仍然广泛在使用中,并且相比cmake,make更 阅读全文
posted @ 2024-01-01 11:13 zhjh256 阅读(246) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h> #include <malloc.h> struct TreeHeap { int v; }; typedef struct TreeHeap TreeHeap; static void print_bp(int bp[],int len); void crea 阅读全文
posted @ 2023-12-31 10:37 zhjh256 阅读(33) 评论(0) 推荐(0) 编辑
摘要: PG_PROC PG_OPERATOR pg_opclass用于定义索引上的相关操作符,一般来说是同一类数据类型。pg_opfamiliy定义了相互兼容的数据类型的操作符,关系见https://www.postgresql.org/docs/9.1/catalog-pg-opclass.html。p 阅读全文
posted @ 2023-12-28 08:35 zhjh256 阅读(102) 评论(0) 推荐(0) 编辑