- 博客(21)
- 资源 (15)
- 收藏
- 关注
原创 elasticsearch 大数据下 bulk 优化
es中 bulk api 可以在单个API调用中执行许多索引/删除操作,这可以大大提高索引速度。在线上突然遇到这样错误:2019-02-27 12:19:07.836 [inner-job-enable-job-61] ERROR com.dangdang.ddframe.job.executor.handler.impl.DefaultJobExceptionHandler :?...
2019-02-28 15:56:44 40216
原创 Spring Cloud Hystrix 源码系列:隔离策略和请求缓存
隔离是一种常见的风险控制(保护)手段,Hystrix 也使用了隔离策略,称之为bulkhead pattern,翻译为:舱壁隔离模式(舱壁将船体内部空间划分成多个舱室,将舱与舱之间严密分开,在航行中,即使有舱破损进水,水也不会流到其他舱)。本文基于hystrix-core1.5.18(近年来几乎很少更新,建议升级)目录1. Hystrix 隔离1.1 Thread Pool1....
2019-02-27 21:45:20 7327
原创 Spring Cloud Hystrix 源码系列:工作原理
Hystrix 译为 "豪猪",豪猪的棘刺能保护自己不受天敌伤害,代表了强大的防御能力。Hystrix 基于 RxJava 进行实现,RxJava 是一种基于观察者模式的响应式编程框架。Spring Cloud Hystrix 基于 Netflix Hystrix 实现,具备服务降级、服务熔断、线程与信号隔离、请求缓存、请求合并以及服务监控等强大功能。本文基于hystrix-core1.5.18...
2019-02-27 20:13:10 2002 1
原创 Elasticsearch系列:番外篇-Fielddata
在上一篇DocValues中介绍过,它主要是针对not analyzed String字段存储,那要针对需要分词的字段该如何sort,agg,group,facet呢?一般默认情况下,它会报错。GET /test_index/test_type/_search { "aggs": { "group_by_test_field": { "terms": { ...
2019-02-26 22:24:37 3490
原创 Lucene系列:番外篇-DocValues
玩ElasticSearch或Solr的童鞋,对于DocValues这个词,时常出现高阶应用开发者的口中。它像一个熟悉的陌生人一样,很多人对于实现排序,分组和一些聚合类操作的需求信手拈来,但对它底层原理却了解不多。DocValues在LUCENE-3518才引入新特征,初生在Lucene4.0,由Mike(Michael McCandless)提出的。从此Lucene牛逼轰轰了。1. 为什...
2019-02-26 21:22:17 15030 1
原创 Elasticsearch 性能调优
Elasticsearch(ES)作为NOSQL+搜索引擎的有机结合体,不仅有近实时的查询能力,还具有强大的聚合分析能力。本文基于ES 5.6.4,从性能和稳定性两方面,从linux参数调优、ES节点配置和ES使用技巧三个角度入手,介绍ES调优的基本方案。当然,ES的调优绝不能一概而论,需要根据实际业务场景做适当的取舍和调整。当我们发现es使用还是非常慢,需要优先关注在以下这两类的运行情况。...
2019-02-26 20:17:43 11673
原创 Elasticsearch number和keyword滥用
之前有社区上反映ES 2.x -> 5.x升级对于数值类型和Term Query有重大变化。一个很简单的Query查询耗时突然从几十毫秒,变成800-1000毫秒,几十倍的性能下降。{ "from": 0, "size": 10, "query": { "bool": { "filter": [ { ...
2019-02-26 16:36:22 12806 1
原创 java冷知识:程序Debug带来的启示
相信每一个java开发者都使用过IDEA 的 Debug,它能查看断点的上下文环境,并且提供了非常强大的可视化工具,更神奇的是我可以在断点处使用它的 Evaluate 功能直接执行某些命令,进行一些计算或改变当前变量。目录字节码技术-ASMNative AgentJava AgentVM.attach(Vitural Machine)SA.attach()PerfDat...
2019-02-25 19:46:04 623
原创 java冷知识:应用程序安全沙箱
在阅读jdk源码时经常遇到System.getSecurityManager();这样安全检查代码。它保证了jvm所运行程序的完整性,使得jvm不会因为运行有漏洞或恶意的代码而导致出现不可预期的状态。public class File implements Serializable, Comparable<File>{ public boolean canRead...
2019-02-25 18:55:49 7455
原创 mysql partition 实战
一般情况下我们创建的表对应一组存储文件,使用MyISAM存储引擎时是一个.MYI和.MYD文件,使用Innodb存储引擎时是一个.ibd和.frm(表结构)文件。当数据量较大时(一般千万条记录级别以上),MySQL的性能就会开始下降,这时我们就需要将数据分散到多组存储文件,保证其单个文件的执行效率。读写分离分散数据库读写操作压力,分库分表分散存储压力。目录1.hash(field)2...
2019-02-22 15:50:18 12634
原创 InnoDB 并发插入,如何使用自增锁和意向锁
并发的任务对同一个临界资源进行操作,如果不采取措施,可能导致不一致,故必须进行并发控制(Concurrency Control)。InnoDB 存储引擎中使用的多种并发控制策略,按照锁的粒度划分,可以分成行锁和表锁。1. 并发控制并发控制保证数据一致性的常见手段有:锁(Locking)和数据多版本(Multi Versioning)。乐观锁和悲观锁其实都是并发控制的机制,同时它们在原理上就...
2019-02-21 20:31:54 3372 3
原创 MySQL join查询优化
在日常的开发中,我们经常遇到这样情况:select * from TableA inner join TableB...它响应速度一直很快的,随着数据的增长,突然有一天开始很慢了。那该怎么破?对,驱动表是突破口,1. 那什么是驱动表呢?指定了联接条件时,满足查询条件的记录行数少的表为驱动表 未指定联接条件时,行数少的表为驱动表(Important!)如果你搞不清楚该让谁做驱动表、...
2019-02-21 19:05:49 6806
原创 基本功:你忽略的ClassLoader
ClassLoader 是 Java 届最为神秘的技术之一,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序。Class Loaders(类加载器)是JVM用于运行来动态加载类的,同时它们也是JRE的一部分,由于Class Loaders的存在,JVM运行Java程序的时候不需要知道底层文件或文件系统。目录1.基本概念2. 双亲委派2.1...
2019-02-20 21:22:19 4611
原创 理解Redis的线程 IO 模型
最近一位朋友问到:既然Redis是单线程的工作模式,如何处理那么多的并发客户端连接?Redis 是个单线程程序!这点必须铭记。也许你会怀疑高并发的 Redis 中间件怎么可能是单线程。很抱歉,它就是单线程,你的怀疑暴露了你基础知识的不足。莫要瞧不起单线程,除了 Redis 之外,Node.js 也是单线程,Nginx 也是单线程,但是它们都是服务器高性能的典范。优势使用不当就会变成劣势。r...
2019-02-20 19:20:14 5138 1
原创 ThreadPoolExecutor源码解析
在之前章节java并发中讲过线程池,java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须先了解这个类。首先,我们带着问题去了解它。1. 线程池中shutdown、shutdownNow、isShutdown、isTerminated、awaitTermination的使用场景?shutdo...
2019-02-20 17:38:11 2095
原创 基本功:神奇的Java反射机制了解一下
在 Java中,反射机制(Reflection)非常重要,但对于很多开发者来说,这并不容易理解,在此献上一份Java反射机制的介绍。1.简介定义:Java语言中 一种动态(运行时)访问、检测 & 修改它本身的能力作用:动态(运行时)获取类的完整结构信息 & 调用对象的方法2.特点2.1 优点灵活性高。因为反射属于动态编译,即只有到运行时才动态创建 &...
2019-02-19 21:42:07 915 1
原创 基本功:魔法类-Unsafe
体验过多线程程序开发之后,可能问自己一个问题,Java 内置的锁是如何实现的?最常用的最简单的锁要数ReentrantLock,那线程是如何实现阻塞自己的?线程阻塞原语,底层实现是通过 Unsafe 类的 park(阻塞) 和 unpark (唤醒)方法做到的。但这两个方法都是 native 方法,它们本身是由 C 语言来实现的核心功能。/** * 锁数据结构正是通过调用 LockSu...
2019-02-19 17:58:48 855
原创 RocketMQ的有序消息
我们知道Topic的有序消息已经成为mq的标配。而RocketMQ中是这样区分消息类型的, 普通消息也叫做无序消息,简单来说就是没有顺序的消息,而有序消息就是按照一定的先后顺序的消息类型。举个例子,producer 依次发送 order id 为 1、2、3 的消息到 broker,consumer 接到的消息顺序也就是 1、2、3 ,而不会出现普通消息那样的 2、1、3 等情况。那有序消息该...
2019-02-19 13:50:08 3721
原创 newsql
NewSQL概念几乎是紧跟着NoSQL之后变得火热的。Google Bigtable与AWS Dynamo奠定了NoSQL技术的根基,而Google Spanner&F1则引领了NewSQL技术的发展。本文首先探讨NoSQL与NewSQL的概念与范畴,随后结合一些业界观点以及两者之间的优缺点对比,来论述各自的应对场景以及未来的演变趋势。本文首发于"NoSQL漫谈(nosqlnotes.co...
2019-02-19 13:25:16 802
原创 基本功:史上最全java并发攻略
上一篇《Java从线程安全到synchronized和Lock探索》大概是5年前发表,下图是去年在公司内部分享时整理的,可以收藏。误区1:自旋锁 VS 适应性自旋锁阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消耗的时间有可能比用户代码执行的时间还要长。在许多场景中,同步资源的锁定时间很短,为了这一小...
2019-02-15 09:33:01 29956
原创 java冷知识:桥接方法method.isBridge()
在JDK 1.5 引入泛型后就引入了桥接方法,也可以理解为桥接方法是泛型的本质(载体)泛型只是表象。熟悉泛型的童靴可能都知道,Java泛型的处理几乎都在编译器中进行,编译器生成的bytecode是不包涵泛型信息的,泛型类型信息将在编译处理是被擦除,这个过程即类型擦除。当然你只要记住以下几点:虚拟机中没有泛型,只有普通类和普通方法 所有泛型类的类型参数在编译时都会被擦除 创建泛型对象时...
2019-02-13 10:33:33 2287
autojs-debug-4.1.1 Alpha2.apk
2020-09-18
jvascript的调试插件
2009-12-24
动态制作gridview
2009-09-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人