- 博客(95)
- 资源 (15)
- 收藏
- 关注
原创 http client客户端和Spring boot服务端长连接梳理
最近业务运行,出现了长连接的问题,整理了一下,记录下来。环境:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test&l...
2018-12-23 22:03:39
13403
原创 elasticsearch源码分析——基本概念
还会要先写一写elasticsearch的基本概念的理解吧。基本概念 参照一些博客,想到那,写到哪。Node 集群就是一个个Node组成的,上一篇介绍的有data node和master node的区分。一个节点就是一个elasticsearch实例。关注一下elasticsearch.yml的配置。 比如简答的transport.tcp.port配置,全局搜...
2018-06-13 22:39:27
918
原创 elasticsearch源码分析——集群状态
现在的工程就是在源码的层面进行改动,之前因为一个问题出现了集群假死的状态。所以才深入的去分析了,源码的集群同步的状态。简述 首先需要明白,类似于solr使用的是zookeeper来进行集群状态的同步。等于是使用了三方件实现集群状态的维护。但是要明白elasticsearch没有用到zookeeper,etcd来管理节点的主备逻辑。 所以,集群状态同步是怎么完成的呢。 ...
2018-06-12 23:11:47
1573
原创 kuryr简单的了解
到现在openstack的neutron网络已经发展的比较成熟了,但是对于docker来说,网络方面就比较薄弱,所以就出现了kuryr这个项目来建立docker与neutron的连接,它本质上就是docker的一个插件。kuryrd的结构kuryr是基于flask的一个web框架实现的,所以基本的逻辑阅读一下相关的REST api就差不多知道了。基本就如下图所示: Create Conta
2018-06-11 22:53:41
492
原创 elasticsearch源码分析——客户端
直观一点,现在源码已经可以进行调试,那就先熟悉一下,elasticsearch的操作逻辑。最基础的就是url,elasticsearch本身也做了request和response的封装,有一定了解的话,用起来还是比较方便的。URL1、创建index[当然了,你要是直接导入数据,elasticsearch也是会自动为你创建对应的mappings结构]indexName:test...
2018-06-11 22:24:12
2131
原创 elasticsearch源码分析——源码编译
分析源码,首先要从搭建编译运行环境开始 项目 版本 运行环境 windows IDE intellij 2018.1.4 JDK 1.8.0_171 elasticsearch 5.5.1 gradle 4.3 maven 3.5.0 总是用得上的 备注:之前一直都用的是1.8.0_25...
2018-06-11 21:45:15
2913
原创 solr源码分析--recovery
恢复机制比较复杂,慢慢写写。概述 恢复的流程主要就是三个,一个replay,一个peersync还有一个replicate。下面结合场景,从源码角度分析三个数据恢复场景的流程。replay 这个还是先从solr启动说起,分析一下整体的代码流程。SolrDispatcher.init() @Override public void init(FilterConfig config) thr
2017-12-30 23:50:57
781
原创 solr源码分析--数据类型
如果业务上有需求,需要进行自定义数据类型。这个就需要对solr的数据类型的实现有一定的了解。shema solr的很多配置向都是在一个confset,配置集里面去定义的。比如说前面有提到,要想添加自定义的processor就需要在solrconfig.xml配置文件中进行定义,当然后端还是要写自己的实现。数据类型也是一样。先看一下solr本身是如何定义数据类型的。 简单类比于数据
2017-12-30 22:56:40
1493
原创 solr源码分析--API
solr API请求处理逻辑,reload,create等等使用的都是类似的流程,这个过程中牵扯到了zk的分布式队列以及solr中的overseer的概念。明白这个之后就可以添加自定义API。概要 solr的API基本上可以分为两类。collection级别的API,比如创建collection时候的CREATE的请求。第二类就是core级别的API,collection创建的时候,最终请求是要
2017-12-30 22:11:18
959
原创 solr源码分析--query
solr查询的逻辑比较复杂,下面按场景简单做一个梳理。概述 只考虑一般的查询流程。单节点和分布式搜索流程上还是有很大的差别。简单的先看一下solrServer是如何接受到查询请求的,以及response的构造。整体流程 大体的流程在这篇博客中已经写明。solr6.2源码分析 请求入口 首先,solr是部署在tomcat上的一个web项目,看一下过滤器的逻辑。 web.xml
2017-12-30 17:54:38
1521
原创 solr源码分析--addDocument
马上2017就要结束了,今年研究了不少solr相关的问题,年末的时候还是做一个总结吧。明年说不定就开始搞ES了。一、数据流传递过程数据添加的API是以post的形式发送,此处以solrj数据导入为例,接收数据就用到了JavabinLoader。前面的SolrDispatcher流程暂时跳过,直接看handleRequestBody的处理过程。 ContentStreamHandlerBase.
2017-12-30 13:27:49
3241
原创 循环解析xml dom
最近有用到,简单写一下。不感知内容,递归调用。package com.ferraborghini.parser;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.xml.parsers.DocumentBuilder;import
2017-08-28 23:45:01
433
原创 solr6.2源码分析
最近一直有研究solr源码,所以也做一个分享吧,网上的话对SolrCloud的分享比较少,后续会对SolrCloud的分布式特性做一个介绍,如果有时间的话。由于没有牵扯到代码,所以只是流程上的分析。后续如果有时间的话,再对代码做一个详细的解释。请多多指出批评意见。1. 首先是solrcloud的结构 这个在网上差不多都能找到相应的分析,基本就是这个概念,没有更多新的东西。 图1 Solrc
2017-07-09 22:37:06
760
原创 solr segment合并的一些心得
简单写一下最近看到的一个问题。问题:solr段合并的时候,DocID的逻辑上有些许变化,有些不再是段中的DocId加上偏移量。定位:首先,solr的底层也都是调用的lucenne的代码,所以这一块就跟lucene没有什么区别。逻辑上数据是先写入缓存的,当达到阈值的时候开始持久化到磁盘中,写入新的段。由于段合并的逻辑,会判断相邻的10个段(举例)是否达到合并的要求,如果达到合并的要求,就会进行合并生
2017-05-25 23:06:12
2365
原创 thrift的编译过程
、 终于到终点了,之前的都是做前期准备一、thrift的编译。windows opnessl安装libevent windows vs2010Windows boost库安装 VS2010\thrift-0.9.3\lib\cpp下有VS工程文件thrift.sln,用VS2010打开之后,会看到两个工程。 1)libthrift工程配置: libthrift>属性->C/C++-
2017-05-21 20:27:35
1694
原创 windows opnessl安装
继续安装,搭建thrift环境。操作系统:win10 编译器:VS2010 openssl版本:openssl-1.0.1e 国内还是GitHub快一些 perl:ActivePerl 百度的软件下载安装步骤: 如何在Windows下编译OpenSSL (VS2010使用VC10的cl编译器) 1、使用VS2010下的Visual Studio 2010 Command Prompt进入
2017-05-21 19:45:23
2117
原创 libevent windows vs2010
借鉴前人的经验,注意一点版本尽可能不要搞错,少走弯路。编译器:VS2010 libevent版本:2.0.22 下载地址:libevent-2.0.22 github比较容易下载。 OS:windows 10操作步骤: 1、下载后加压缩就不说了。 2、使用VS2010的命令行工具,会有环境变量的写入,默认使用nmake之类的进行编译。 3、修改以下三个文件,添加宏定义: 在以下3个文
2017-05-21 16:11:25
517
原创 Windows boost库安装 VS2010
记录以下安装的时候出现的坑吧。由于项目需要,目的是为了配置thrift框架,使用RPC服务。但是吧,在Windows上需要配置各种依赖库,重新编译。1.版本问题。最初没有意识到VS版本跟boost版本的问题,出了很多问题,但是最终问题好像也都不是版本的问题。不过最好还是要版本一致吧。 安装boost使用的版本:boost_1_53_0 国内比较好下载的链接地址:boost1.53.0问题:ms
2017-05-21 15:40:27
1379
原创 solr源码导入eclipse进行编译之出现的问题
网上能够找到一大把如何编译导入的文章,这里不再赘述,只记录出现的问题。新手刚用这些工具,所以没有什么经验一点点踩坑。编译参考文章1、最好找一个vpn吧,用的家里的网络一直看在 retrieve上不动了。纠结,后来使用ant -v eclipse进行编译,至少能看到编译时出现的错误。2、使用vpn,maven的源就不用配置了,省了一点事。可能是之前因为下载一直没有成功,所以就ctrl+c进行终止了,
2017-05-21 15:11:22
468
原创 华为OJ 字符串运用-密码截取
要毕业了还是要敲一下代码练练手的,很简单的小程序 项目 内容 题目 Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可
2017-03-04 14:08:40
369
原创 CentOS忘记密码之后的修改
蛮尴尬的,在公司装系统的时候,装机不好用,装完之后,麻蛋发现root密码根本进不去。以前时间不紧急,一般都是再装一遍,今天就看一下怎么去修改,学习一下。1、首先开机进入系统选择界面之后,点击‘e’进入编辑模式。 2、找到 ro 改为 rw init=sysroot/bin/sh 3、根据提示ctrl+x 进入系统 4、passwd 5、修改密码 6、在根目录下创建文件,下次开机的时候系统
2016-10-11 21:40:52
713
原创 CentOS7禁用ipv6
禁用很简单,现在centos基本都是用的grub2。找到grub的配置文件,修改一下。vim /etc/default/grub# 在其中添加ipv6.disable=1 加在GRUB_CMDLINE_LINUX项最后# 然后更新配置grub2-mkconfig /boot/grub2/grub.cfgreboot OK 重启之后就可以看到IPv6已经被禁用了
2016-10-11 21:32:34
772
原创 go语言笔记
了解docker就不得不学习一下go语言了。尤其是接口一类的,感觉不是很方便。一点点更新自己的理解吧。1.go语言中的package。 在java中直接是类的感念,import也是直接对类生效的。但是在go语言中目录和包都会有相应的使用。 目录: import的就是导入的目录。 packege:一个目录下可以有多个go文件,但是只能有一个目录。 另外,系统默认的p
2016-09-19 22:13:05
1006
原创 gRPC使用的分析
看了docker的源码就不得不了解一下gRPC这个鬼东西。下面借鉴一下别人的实例,让我这个初次接触的人做一个,最直接的分析。首先编译安装protobuf 工具。go get google.golang.org/grpcgo get -u github.com/golang/protobuf/{proto,protoc-gen-go} //下载proto转换为go语言的工具export PATH=
2016-09-18 22:44:04
4700
原创 docker1.11的新特性
最近一直在研究这一块东西,做个记录吧。持续更新,有错误的地方也一点点改进。从docker1.11开始,docker的整体框架改动很大。从之前的docker一个二进制文件变成了4个二进制文件。docker, docker-containerd, docker-containerd-shim和docker-runc。docker的模块分离的一个好处就是底层的容器的实现,可以跟上层的daemon进行分离,
2016-09-18 22:17:15
677
原创 练练手,写一个远程桌面连接的东东
一直都有这个想法去写点东西,然后就找各种借口,其实时间还是蛮多的,那就坐下来一点点做,其实想写一下远程桌面控制的,不过慢慢来吧,有时间就一点点改进。先定一个简单的目标,比如说,先把远程桌面的截图获取出来。使用java来实现java的socket编程数据的传输使用序列化实现使用java swing做一个简单的界面实现多线程的解析数据代码: ScreenShot问题:BufferedImag
2016-09-10 14:47:20
681
原创 python爬虫
再不写点东西就真不会写代码了 最近一直在学习云计算的东西,慢慢的也准备整理一下。 今天试试手,写一个简单的爬虫,之前就写了,但一直没有实现。很简单,正好熟悉一下python# coding=utf-8import sysimport osimport urllibimport urllib2import threadingbase_uri = "http://www.youkuaiyun.com/
2016-08-28 22:25:34
488
原创 mysql DELIMITER $$
今天又来复习一下数据库的知识,在写trigger的时候,在编辑器中总是报错误。DELIMITER $$create trigger tg1after insert on testfor each row beginupdate test set name = 'tiansen' where _id =1;end$$DELIMITER ;mysql默认是以;分隔执行一个语句,但是在触发器
2016-03-31 23:54:17
921
原创 使用Volley提交Json数据post
使用以下代码的时候,getParams()传递post请求,根本没有用,只能在构造方法里面传递JsonObject。在servlet中只能使用request.getInputStream()来获取输入流。因为没有设置对象的键值对,所以getParameter()也是没有办法获取的。 JsonRequest<JSONObject> jsonRequest = new JsonObject
2016-03-28 13:28:33
6892
原创 Gson的使用
安卓中自带的是json数据解析的是org.json.JSONObject; 感觉很多时候并不是很好使。Google使用GSon相对而言解析list,或者javaBean相对方便一点。import java.awt.List;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.Iterator;i
2016-03-28 00:48:34
310
原创 Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z
之前做的这个demo现在下载下来部署上之后一直出现这错误。Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z at org.slf4j.impl.Log4jLoggerAdapter.isTraceEnabled(Log4jLoggerAdapter.java:81) at
2016-03-24 23:39:00
4206
原创 git使用的问题
1、TortoiseGit下载拉取推送代码时bad line length character 解决办法: 进入settings,network,ssh client ,选择TortoiseGitPLink.exe,不要选择TortoisePLink.exe2、将本地项目上传至github,官网就有提示,在你生成一个新的repository的时候。 echo “# test” >> READM
2016-03-19 04:04:56
2571
原创 求指定范围中的素数的等差数列
想了一下,没有想出更好的办法,就只能这么多层循环一下。import java.util.ArrayList;import java.util.Scanner;public class Main { public static boolean isPrime(int a) { if (a == 1) { return false; }
2016-03-16 15:40:58
681
原创 华为OJ高精度数的加减法
import java.util.Scanner;import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;public class Main { public static String add(String str1, String str2) { if (str1.length() < str2
2016-03-09 16:02:41
608
原创 华为OJ 计算字符串的距离
题目:描述 Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。 Ex: 字符串A:abcdefg 字符串B: abcdef 通过增加或是删掉字符”g”
2016-03-08 13:41:30
798
原创 华为oj,多线程。。保证四个线程按顺序循环输出
问题描述:有4个线程和1个公共的字符数组。线程1的功能就是向数组输出A,线程2的功能就是向字符输出B,线程3的功能就是向数组输出C,线程4的功能就是向数组输出D。要求按顺序向数组赋值ABCDABCDABCD,ABCD的个数由线程函数1的参数指定。[注:C语言选手可使用WINDOWS SDK库函数] 接口说明: void init(); //初始化函数 void Release(); //资源
2016-03-05 01:40:48
3022
原创 设置主线程等待子线程执行的方法
首先要注意的是: 1、java的Main线程结束之后,子线程还在运行。其实主线程已经退出了,但是JVM守护线程会等待所有的线程结束,才会退出。所以我们可以看到,子线程依然在继续执行。2、那么如何实现主线程等待子线程的执行之后再结束,这个就要用到CountDownLatch,设置要执行的线程的个数,然后再子线程的run方法中调用countDown()的方法,递减线程的计数。在主线程结束之前,调用aw
2016-03-02 22:35:08
3509
原创 Git,tortoise配置,下载github库
换了新电脑,都忘了怎么配置这些东西了,记录一下。使用tortois自带的PuTTYgen点击generate,生成随机秘钥。将公钥复制,粘贴在github的SSH keys里面然后再点击save private key将秘钥保存在本地如下图所示:然后,文件夹中点击右键,设置tortoise的setting,如下图:最后点右键,Git Clone,
2015-12-08 22:37:37
472
转载 字符编码笔记:ASCII,Unicode和UTF-8
转发: http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用
2015-09-29 22:34:44
357
原创 将xml的数据写入swing树形结构
先简单的粘贴下代码,正在学习java的东西,正好用到swing,算是做个练习。API太多,还没有梳理太清楚,慢慢回顾。public class TreeFrame extends JFrame { public static final int WIDTH = 1100; public static final int HEIGHT = 615; private static
2015-09-24 23:48:15
769
win10+VS2010+thrift0.9.3 改进
2017-05-25
python-dev_2.7.9-1_i386
2015-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人