自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

螃蟹士兵

会思考的工具人

  • 博客(13)
  • 问答 (1)
  • 收藏
  • 关注

原创 ElasticSearch使用elasticsearchTemplate聚合查询

这两天正好做个需求,需要用到聚合查询。前几篇文章只是简单的提到过,并没有真正的运用到实际产出中,本篇结合实际代码,专项学习ES的聚合查询。1、业务背景有一张地址索引表:hisAddress与formatAddress是一对多的关系。当一条地址进来查找hisAddress,然后对formatAddress做聚合,再根据count筛选聚合中的数据。类似以下SQL:select hisAd......

2022-06-09 17:32:14 15495 1

原创 三.手写迷你版Tomcat-minicat3.0

minicat 1.0我们实现了返回固定的字符串"Hello minicat"。minicat 2.0封装Request和Response对象,返回html静态资源文件。minicat 3.0需求:请求servlet动态资源思路分析:想实现servlet动态资源请求,就需要将Servlet初始化在容器中(Map)。如何初始化呢?将配置信息配置在web.xml中使用dom4j解析web.xml内容使用反射机制将servlet初始化在Map中配置web.xml配置web.xml之前,需

2020-08-02 11:57:48 1194

原创 二.手写迷你版Tomcat-minicat2.0

minicat 1.0我们实现了返回固定的字符串"Hello minicat"。minicat 2.0需求:封装Request和Response对象,返回html静态资源文件。封装Request对象想要封装Request对象,得要先知道请求信息里面有哪些数据,所以我们先打印请求信息。/** * minicat启动需要初始化展开的一些操作 */ public void start() throws IOException { // 监听端口

2020-08-01 23:25:11 571

原创 一.手写迷你版Tomcat-初探minicat

大家都成年人了,大名鼎鼎的Tomcat不需要我过多介绍,直接上手写的思路和代码。思路分析名称:minicatminicat要做的事情:作为服务器软件提供服务的,也即我们可以通过浏览器客户端发送http请求,minicat可以接受到请求进行处理,处理之后的结果可以返回浏览器客户端。提供服务,接收请求(Socket通信)请求信息封装成Request对象(Response对象)客户端请求资源,资源分为静态资源(html)和动态资源(Servlet)资源返回给客户端浏览器Minicat1.0版本

2020-08-01 16:23:34 2510

原创 手写mybatis

分析jdbc操作问题先抛出一段jdbc处理sql的代码public static void main(String[] args) { Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //加载数据驱动 Class.forName("com.mys

2020-07-15 19:01:14 287

原创 通过gitlab远程统计git代码量

git的代码量大多数都是根据命令行统计,或者根据第三方插件统计。但是都不满足我的需求,因为我们代码都由gitlab管理,于是想到了通过gitlab暴露出来的接口获取数据。第一步,生成私钥登录你的gitlab申请私钥private_token第二步,获取当前用户可见的所有项目(即使用户不是成员)接口地址:gitlab的地址/api/v4/projects/?private_token=xx...

2019-07-12 19:03:43 25398 19

原创 ElasticSearch批量处理器

其实之前在ElasticSearch之Java API就有提到过批量处理器,它可以把多个请求放在bulk缓存集中处理,大大减少了ES的网络连接,实在是优化ES性能的神兵利器!如何使用首先创建一个BulkProcessor:import org.elasticsearch.action.bulk.BackoffPolicy;import org.elasticsearch.action.bu...

2019-02-22 12:14:18 369

原创 自己动手写一个通信协议

什么是通信协议我们常用的聊天软件比如:微信,都是基于一组通信协议进行服务端与客户端数据交互。协议指的就是客户端与服务端事先约定好的,每个二进制数据包中,每一段字节分别代表什么含义的规则。如下图所示一个简单的登录指令:在这个数据包中,第一个字节为 1 表示这是一个登录指令,接下来是用户名和密码,这两个值以 \0 分割,客户端发送这段二进制数据包到服务端,服务端就能根据这个协议来取出用户名密码,...

2019-01-21 17:44:05 21492 1

原创 Java Agent

在 Java 字节码 一文中有提到,使用 Java Agent 操控字节码,本文将讨论 Java Agent ,这是普通 Java 开发人员的真正的黑魔法。Java Agent 能够通过执行字节码的直接修改,在运行时 “侵入” JVM 上运行的 Java 应用程序的执行。Java Agent 很强大,但是也很危险:它们几乎可以完成所有操作,但是如果出现问题,也很容易导致 JVM 崩溃。我们将通过...

2019-01-15 20:26:53 11346 1

原创 Java字节码

Java最黑科技的玩法就是字节码编程,也就是动态修改或是动态生成 Java 字节码。使用字节码可以玩出很多高级的玩法,最高级的还是在 Java 程序运行时进行字节码修改和代码注入。听起来是不是一些很黑客,也很黑科技的事?是的,这个方式使用 Java 这门静态语言在运行时可以进行各种动态的代码修改,而且可以进行无侵入的编程。比如,我们不需要在代码中埋点做统计或监控,可以使用这种技术把我们的监控代码...

2019-01-14 13:23:40 13635 3

原创 Elasticsearch滚动查询+线程池处理大批量数据

什么是滚动查询?scroll 查询 可以用来对 Elasticsearch 有效地执行大批量的文档查询,而又不用付出深度分页那种代价。scroll查询允许我们 先做查询初始化,然后再批量地拉取结果。 这有点儿像传统数据库中的 游标(cursor) 。如果一次性要查出来比如10万条数据,那么性能会很差,此时一般会采取用scroll滚动查询,一批一批的查,直到所有数据都查询完处理完。scrol...

2019-01-09 11:51:33 4092

原创 IKAnalyzer实现中文分词

1、介绍IK Analyzer 是一个开源的,基于 java 语言开发的轻量级的中文分词工具包。从 2006年 12 月推出 1.0 版开始, IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。 从 3.0 版本开始,IK 发展为面向 Java 的公用分词组件,独立于 Lucene 项目,同时提供了对 Luc...

2018-12-31 16:06:42 1529

原创 python爬取全国五级行政区

以前爬过国家统计局的四级行政区(http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/),但是对于五级数据效果不是很好。偶然间发现这个网站:http://www.yigecun.com/ 里面的行政区数据比较齐全,所以下面尝试用python爬取所有的五级行政区,爬完之后格式如下:1、准备python的安装我就不讲了,我用的是py...

2018-11-30 10:30:20 3062 1

空空如也

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

TA关注的人

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