learn and grow up

learn and grow up

学无止境

es模糊搜索的注意点
写在前面​ 测试环境测试新功能的时候发现一个问题,es搜索的模糊搜索使用部分字段搜索不到指定的记录,如使用条件”2_“搜索不出来”2_test“的记录出来 正文​ 观察代码发现使用的是match_phrase,搜索语句如下: 12345678910111213141516171819202122232425262728{ "query": { "bool": { "must": [ { "term": { "deleted": { ...
hbase倒叙scan可能会遇到的坑
写在前面​ hbase的Rowkey根据不同业务需求可能设计成各式各样的格式,因为业务复杂多变,所以除了最基础的那些原则,另外一般是根据搜索频率、搜索有效性质来排序拼接成rowkey,在最近开发中设计了一个操作日志表,设计的rowkey为:操作Id+时间戳+模块。这样做可以快速搜索到某个人的操作日志,但是在实际测试中却遇到了一个查询数据丢失的问题。 正文​ 首先去hbase,直接shell执行scan: 1scan 'user_log'; 得到结果发现hbase本身并没有数据丢失,如下: 而且可以看到scan的结果是按照时间戳正序排序的。那么再跟踪代码中看到构建scan ...
es嵌套查询的小误区
写在前面​ 生产上出现个es数据不一致的问题,需要用嵌套查询出所有不一致的数据,但是就是一个简简单单的嵌套查询,对于之前一直用java api的人来说,太难了,所以记录下 正文假设需要查询的条件如下: ​ where deleted = 0 and (iiapIftttId =’’ or iiapIftttId is null) 按照单个查询的规律来写,第一次写成了这样 1234567891011121314151617181920212223242526272829303132333435{ "query": { "bool": {"m...
mysql诡异的死锁问题排查及分析全过程记录四之分析
写在前面​ 接上文,本文主要是对复现的场景仔细分析下,如何会产生死锁以及该怎么避免?以及后续的思考 正文 接下来我们有机会一步步分析下为什么会出现死锁(因为锁等待50s会自动关闭事务,所以截图内的事务id某个步骤会变化,但是不影响问题分析) 第一步:事务1:select * from lotest where type=’B20’ lock in share mode; 日志如下(无锁等待): 第二步:事务2: select * from lotest where type=’B20’ lock in share mode; 日志如下(亦无锁等待): ...
mysql诡异的死锁问题排查及分析全过程记录三之重现
写在前面​ 接上文,本文主要是根据前两篇的场景,扩展重现篇章最开始的死锁问题。 正文 上文说的,RR使用gap锁和next-key锁能解决大部分幻读问题,还有某些特定场景还是会出现幻读,如下: 步骤 事务1 事务2 1 select * from lotest where type=’B20’; success 1 row 2 select * from lotest where type=’B20’; success 1 row 3 insert into lotest (type) values(‘B20’); success...
mysql诡异的死锁问题排查及分析全过程记录二之RR的锁
写在前面​ 接上文,本文主要讲述RR锁的概念和场景 正文 innodb默认隔离级别为RR,本服务用的也是RR,所以我们重点来看下RR相关的东西 假如有如下表: 12345CREATE TABLE `lotest` ( `type` varchar(20) NOT NULL, `name` varchar(255) NOT NULL DEFAULT '1', KEY `idx_order_id` (`type`)) ENGINE=InnoDB DEFAULT CHARSET...
mysql诡异的死锁问题排查及分析全过程记录一之概述
写在前面​ 在负责一功能优化改造后,测试运行过程中极少几率会出现如下错误,而其他环境却没出现过此错误: 123456789101112131415161718org.springframework.dao.DeadlockLoserDataAccessException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restartin...
openjdk源码浅析之jni_registerNatives二
写在前面​ 接上文 正文1234567891011121314151617181920212223242526272829303132//继续注册void Method::set_native_function(address function, bool post_event_flag) { assert(function != NULL, "use clear_native_function to unregister natives"); assert(!is_method_handle_intrinsic() || function == SharedRunt...
openjdk源码浅析之jni_registerNatives
写在前面​ 既然成功编译和搭建了openjdk的源码及调试环境,则更要继续深入探究openjdk的内部。 ​ 这篇文章是基于了解了c、c++的基础语法和概念。 ​ 这篇主要浅析在平时jdk源码中比较显眼的一个东西:registerNatives 正文registerNatives在有native方法的jdk基础类里,十分常见,比如:Object,System等等。​ 常用的写法如下: 1234private static native void registerNatives();static { registerNativ...
habse中使用shell模相关命令
写在前面​ 最近使用hbase进行相关业务日志的存储和搜索,学到了不少新东西,所以记录下 正文进入:hbase shell。 建表语句 如: create 'resource_data_gather:resource_complete_log',{NAME => 't', VERSIONS => 1, COMPRESSION => 'SNAPPY', BLOOMFILTER => 'ROW', DATA_BLOCK_ENCODING => 'DIFF', TTL...
avatar
styytNOTstop
Knowledge has no limit.
FRIENDS
liwei