自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

坤健的博客

天行健,君子以自强不息。地势坤,君子以厚德载物

  • 博客(203)
  • 资源 (8)
  • 收藏
  • 关注

原创 代码优雅之路-避免大量if...else方法二

这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。订单实体:service接口:传统实现根据订单类型写一堆的if else:使用策略模式实现利用策略模式,只需要两行即可实现业务逻辑:可以看到上面的方法中注入了HandlerContext,这是一个处理器上下文,用来保存不同的业务处理器,具体在下文会...

2019-11-27 10:07:47 411

转载 分库分表?如何做到永不迁移数据和避免热点?

一、前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分比较简单,也就是本来一个数据库,数据量大之后,从业务角度进行拆分多个库。如下图,独立的拆分出订单库和用户库。水平拆分的概念,是同一个业务数据量大之后,进行水平拆分。上图中订单数据达到了4000万,我们也知道mysql单表存储量推荐是百万级,如果不进行处理,mysql单表...

2019-11-27 09:40:14 255

原创 java线程池原理

Java ThreadPoolExecutor线程池原理及源码分析一、源码分析(基于JDK1.6)ThreadPoolExecutor是使用最多的线程池组件,了解它的原始资料最好是从从设计者(Doug Lea)的口中知道它的来龙去脉。在Jdk1.6中,ThreadPoolExecutor直接继承了AbstractExecutorService,并层级实现了ExecutorService和E...

2019-11-23 23:50:53 262

原创 代码优雅之路-建造者模式的使用

建造者模式是一种创建型模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创造不同的表示。主要特点是通过逐步添加单体对象形成一个复杂的对象。建造者模式有两种写法,为:原型用法:原型写法中的builder分为四个模块:Product:被构造的复杂对象Builder:抽象接口BuilderImpl:抽象接口的具体实现Director:接口的构造者和使用者上代码...

2019-11-20 23:03:53 268

原创 代码优雅之路-避免大量new

使用工厂模式-通用1//抽象产品类public abstract class Product { public void method1(){ //所有产品的共性 } //抽象方法 具体有继承它的类去实现 public abstract void method2();}//产品实现类 public class ConcretProduct1 extends Pro...

2019-11-18 23:56:00 185

原创 代码优雅之路-避免大量if...else方法

避免大量if...else方法根据if中的条件定义对应的类型/** * @author * @date 2019/4/11 */public class CompensationTask { private CompensationTaskType compensationTaskType; private String data; private ...

2019-11-17 23:53:57 668

原创 缓存中存储数据推荐格式

不要使用二进制格式当使用如protoBuf、msgpack或者java自带的二进制格式进行序列化时候,为了节约数据量的原因,会将类里的字段按字段在类中出现的顺序进行序列化。当我们因为需求进行升级时,可能会对类里的字段进行增删或者移动。此时,我们之前存储在jimdb里的数据在读取回来进行反序列化时就会报错。因为上述原因,我们推荐用顺序兼容&新增字段兼容的序列化方式,如JSON,进行数...

2019-11-08 11:44:29 537

原创 sql注入问题

mybatis中的#和$的区别:1、#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:where username=#{username},如果传入的值是111,那么解析成sql时的值为where username="111", 如果传入的值是id,则解析成的sql为where username="id". 2、$将传入的数据直接显示生成在sql中。如:where us...

2019-08-22 16:57:58 254

原创 elastic search中父子关系文档

1、为什么要有父子文档?(1)、nested object的数据建模,是采取类似冗余数据的方式,将多个数据都放在一起,维护成本就比较高;(2)、parent-child数据建模,采取的是类似于关系型数据库的三范式,多个实体都分割开来,每个实体之间都通过一些关联方式,进行了父子关系的关联,各种数据不需要都放在一起,父doc和子doc分别在进行更新的时候,都不会影响对方;为什么父子文档性能...

2019-07-29 23:23:14 3055

原创 elastic search中nested object

1、为什么需要nested object?冗余数据方式的来建模,其实用的就是object类型;PUT /website/blogs/6{ "title": "花无缺发表的一篇帖子", "content": "我是花无缺,大家要不要考虑一下投资房产和买股票的事情啊。。。", "tags": [ "投资", "理财" ], "comments": [ { ...

2019-07-29 00:07:15 723

原创 elastic search数据建模-共享锁,排它锁

场景2:已经有线程上了共享锁,然后有其他线程要上排他锁1、概念共享锁:这份数据是共享的,多个线程都可以获取同一个数据的共享锁,然后对这个数据执行读操作,读锁;排他锁:是排他的操作,只能一个线程获取排他锁,然后执行增删改操作,写锁;排它锁和共享锁是互斥的;2、实验场景1:线程在读数据,其他线程也能过来读数据judge-lock-2.groovy: if (ctx._sourc...

2019-07-28 17:19:01 248

原创 elastic search数据建模-对文件系统进行数据建模以及文件搜索实战

需求:对类似文件系统这种的有多层级关系的数据进行建模;1、文件系统数据构造PUT /filesystem{ "settings": { "analysis": { "analyzer": { "paths": { "tokenizer": "path_hierarchy" } } } ...

2019-07-28 15:38:45 218

原创 elastic search数据建模-数据冗余实现数据关联

1、构建博客和用户的数据用冗余数据,采用文档数据模型,进行数据建模,实现用户和博客的关联PUT /website/users/1{ "name": "小鱼儿", "email": "[email protected]", "birthday": "1980-01-01"}PUT /website/blogs/1{ "title": "小鱼...

2019-07-28 15:03:30 245

原创 elastic search数据建模-文档数据模型与关系型数据模型

对应java中的对象类型,部门,员工public class Department { private Integer deptId; private String name; private String desc; private List<Employee> employees;}public class Employee { private In...

2019-07-28 14:52:20 231

原创 elastic search中聚合查询的深度优先和广度优先

当buckets数量特别多的时候,深度优先和广度优先的那种比较合适?比如数据:每个演员的每个电影的评论需求:每个演员的评论的数量 --> 每个演员的每个电影的评论的数量评论数量排名前10个的演员 --> 每个演员的电影取到评论数量排名前5的电影1、深度优先的方式去执行聚合操作的原理: actor1 actor2 ...

2019-07-28 12:10:01 993

原创 elastic search中_string field聚合实验以及fielddata原理初探

1、对于分词的field执行aggregation,报错。。。GET /test_index/test_type/_search { "aggs": { "group_by_test_field": { "terms": { "field": "test_field" } } }}{ "error": { "...

2019-07-28 12:04:58 306

原创 elastic search中易并行聚合算法,三角选择原则,近似聚合算法浅析

1、有些聚合分析的算法,是很容易就可以并行的,比如说max有些聚合分析的算法,是不好并行的,比如说,count(distinct),并不是说,在每个node上,直接就出一些distinct value,就可以的,因为数据可能会很多es会采取近似聚合的方式,就是采用在每个node上进行近估计的方式,得到最终的结论,cuont(distcint),可能会有5%左右的错误率,近似估计后的结果,不...

2019-07-27 23:31:22 608

原创 elastic search中的bucket和metric

概念bucket:按照某个字段进行bucket划分,那个字段的值相同的那些数据,就会被划分到一个bucket中;metric:对一个bucket执行的某种聚合分析的操作,比如说求平均值,求最大值,求最小值对这两个与sql语句进行类比:select count(*) from access_log group by user_idbucket:group by user_id --...

2019-07-27 16:39:22 514

转载 linux后台运行程序nohup和&的区别

1.nohup用途:终端ssh关闭了也一直运行,不挂断地运行命令语法:nohup Command [ Arg … ] [ & ]    例:nohup start.sh &  无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。nohup.out相对于日志  如果当前目录的 nohup.out 文件不可写,输出重...

2019-07-27 10:25:31 394

原创 elastic search中在index_time时使用n-gram来进行搜索推荐

什么是n-gram?n元预发模型,对某个词按长度n进行分割quick,5种长度下的ngramngram length=1,q u i c kngram length=2,qu ui ic ckngram length=3,qui uic ickngram length=4,quic uickngram length=5,quick什么是edge ngram?边界n-gram,切...

2019-07-22 22:51:03 602

翻译 elastic search中前缀搜索,通配符搜索,正则搜索的使用

PUT my_index{ "mappings": { "my_type": { "properties": { "title": { "type": "keyword" } } } }}GET my_index/my_type/_search{ "query": { "pr...

2019-07-21 23:47:43 1089

翻译 elastic search中混合使用match实现召回率和精确率的平衡

召回率:比如你搜索一个java spark,总共有100个doc,能返回多少个doc作为结果,就是召回率,即recall;精准度:比如你搜索一个java spark,能不能尽可能让包含短语 "java spark",或者是java和spark离的很近的doc,排在最前面,即precision;在使用近似匹配的时候,召回率比较低,精准度太高了,比如:match phrase,proxi...

2019-07-21 22:52:11 837

原创 elastic search中的match phase和近似匹配的原理

phrase match:短语匹配,将多个term作为一个短语,一起去搜索,只有包含这个短语的doc才会作为结果返回。 proximity match:近似匹配1、java spark,就靠在一起,中间不能插入任何其他字符,就要搜索出来这种doc,使用短语匹配2、java spark,但是要求,java和spark两个单词靠的越近,doc的分数越高,排名越靠前,使用近似匹配GET /f...

2019-07-21 18:21:59 1426

原创 elastic search中的most fields策略以及与best fields策略的区别

best-fields策略,主要是说将某一个field匹配尽可能多的关键词的doc优先返回回来 most-fields策略,主要是说尽可能返回更多field匹配到某个关键词的doc,优先返回回来POST /forum/_mapping/article{ "properties": { "sub_title": { "type": "string...

2019-07-21 10:06:24 572

原创 elastic search中best fields策略

需求:搜索title或content中包含java或solution的帖子?进行multi-field多字段搜索GET /forum/article/_search{ "query": { "bool": { "should": [ { "match": { "title": "java solution"...

2019-07-20 16:49:05 559

原创 elastic search在多shard场景下reveleance score不准确问题解析

如果一个index有多个shard的话,可能搜索结果会不准确,原因见下图:2、怎么解决该问题?(1)生产环境下,数据量大,数据应该尽可能实现均匀分配数据量很大的话,一般情况下,在概率学的背景下,es都是在多个shard中均匀路由数据的,路由的时候根据_id,负载均衡比如说有10个document,title都包含java,一共有5个shard,那么在概率学的背景下,如果负载均衡的...

2019-07-20 16:38:50 278

原创 elastic search中multi-value搜索的实现方式及控制全文搜索的精准度

1、为帖子数据增加标题字段POST /forum/article/_bulk{ "update": { "_id": "1"} }{ "doc" : {"title" : "this is java and elasticsearch blog"} }{ "update": { "_id": "2"} }{ "doc" : {"title" : "this is java blog"...

2019-07-20 15:10:43 779

原创 elastic search中filter过滤器内部实现

大致过程:在倒排索引中查找搜索串,获取document list; 为每个在倒排索引中搜索到的结果,构建一个bitset; 遍历每个过滤条件对应的bitset,优先从最稀疏的开始搜索,查找满足所有条件的document; caching bitset,跟踪query; 如果document有新增或修改,那么cached bitset会被自动更新; 以后只要是有相同的filter条件的...

2019-07-20 13:09:50 1124

原创 工作流activiti中dueDate设置

格式解析R2/2015-06-04T19:25:16.828696-07:00/P1DT10S上面的字符串通过"/"分为了三部分即:重复次数/开始时间/运行间隔重复次数R - 将永远重复 R1 - 将重复一次 R231 - 将重复231次。开始时间任务第一次运行的时间。如果开始日期时间已经过去,Kala将返回一个错误。其中"T"用来分割日期和时间,时间后面跟着的"-...

2019-06-06 15:42:05 5711 1

原创 什么是回调函数?

例子:你到商店买东西,刚好你要买的东西没货了,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话就到店里去取了货。在这个例子里,你的电话号码就是回调函数; 你把电话号码留给店员就叫等记回调函数; 店里后来有货了叫做触发了回调关联的事件; 店员给你打电话叫做调用回调函数; 你到店里取货叫做响应回调事件;...

2019-04-25 20:37:10 470 1

原创 Tomcat启动时 Illegal access: this web application instance has been stopped already的处理

现象在接入日志采集client包时,总时出些奇怪的问题,昨天接入日志采集,但是加入后,就是启不来;tomcat 有异常信息 信息: Illegal access:thisweb application instance has been stopped already. Could not load org.apache.kafka.common.metrics.Met...

2019-04-24 08:59:28 11014

转载 发布或重启线上服务时抖动问题

转载至http://www.cnblogs.com/LBSer发布或重启线上服务时抖动问题解决方案一、问题描述 在发布或重启某线上某服务时(jetty8作为服务器),常常发现有些机器的load会飙到非常高(高达70),并持续较长一段时间(5分钟)后回落(图1),与此同时响应时间曲线(图2)也与load曲线一致。注:load飙高的初始时刻是应用服务端口打开,流量打入时(loa...

2019-04-17 00:10:15 172

转载 记录IntelliJ IDEA 合并冲突时的一个bug(冲突解决后代码和本地仓库一样时导致merge失败)

https://blog.csdn.net/qq_29663071/article/details/80760957

2018-08-08 00:39:14 2038

原创 spring源码之-策略模式

定义定义一系列算法,将每个算法封装到具有公共接口的一系列策略类中,从而使它们可以相互替换 &amp; 让算法可在不影响客户端的情况下发生变化简单来说:准备一组算法 &amp; 将每一个算法封装起来,让外部按需调用 &amp; 使得互换。作用将算法的责任和本身进行解耦,使得:算法可独立于使用外部而变化 客户端方便根据外部条件选择不同策略来解决不同问题策略模式仅仅封装算法(包括...

2018-07-30 21:14:52 1688

原创 spring中用到的设计模式

 refresh()方法使用的是模板方法模式模板方法模式:定义:定义一个模板结构,将具体方法延迟到子类中去实现。主要作用:在不改变模板结构的前提下在子类中重新定义模板中的内容。解决的问题:提高代码复用性 将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中 实现了反向控制 通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制 &...

2018-07-29 22:51:13 306

原创 Intella IDEA中的postfix

100.forr等于for(int i=0;i&lt;100;i++){}user.nn等于if(user!=null){}i.sout等于System.out.println(i);自动创建函数alter+enterlist raplace导包alter+enter 重构:批量修改变量名shift+F6多处引用相同的字符串的时候...

2018-07-29 10:51:19 511

转载 git学习之路

转载https://blog.csdn.net/autfish/article/details/52513465

2018-07-22 23:20:45 328

原创 linux学习-文件的隐藏属性

Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。明明权限充足但却无法删除某个文件的情况,或者仅能在日志文件中追加内容而不能修改或删除内容,这在一定程度上阻止了黑客篡改系统日志的图谋。1.  chattr命令chattr命令用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。如果想要把某个隐藏功能添加到文件上,则需...

2018-06-03 20:37:02 2382

原创 linux学习-SUID、SGID

1.  SUIDSUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。例如,所有用户都可以执行passwd命令来修改自己的用户密码,而用户密码保存在/etc/shadow文件中。仔细查看这个文件就会发现它的默认权限是000,也就是说除了root管理员以外,所有用户都没有查看或编辑该文件的权限。但是,在使用passwd命令时如果...

2018-06-03 14:52:20 546

转载 linux学习-重要的环境变量

变量是计算机系统用于保存可变值的数据类型。在Linux系统中,变量名称一般都是大写的,这是一种约定俗成的规范。我们可以直接通过变量名称来提取到对应的变量值。Linux系统中的环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的宿主目录、邮件存放位置等。为了通过环境变量帮助Linux系统构建起能够为用户提供服务的工作运行环境,需要数百个变量协同工作才能完成。在用户执行了一条命令之后,Linu...

2018-05-29 16:25:28 382

chm编辑工具

CHM编辑器,适合编辑chm文件

2018-05-03

web项目UI界面2

适合web信息管理平台的UI搭建,结合后台,可以达到良好的用户体验

2017-05-13

web项目UI界面

适合web项目开发,结合后台,可以达到良好的用户体验

2017-05-13

管理系统UI模板

比较好的web项目前台界面,结合后台能达到很好的用户体验

2017-05-13

log4j配置文件

文件内包含log4j.properties文件的基本配置以及注释,方便理解

2017-02-17

inno setup

inno工具,用于将jar转换成的exe文件连同运行环境一起做成安装文件,使用户安装时能直接安装运行环境

2017-02-15

exe4j_windows_5_1

exe4j用于将jar文件转成.exe文件

2017-02-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除