自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

RLanffy

通过解释一件事情,继而进一步理解这件事。

  • 博客(52)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 Elasticsearch源码解读六:ES中的倒排索引

文章目录前言分词单词-文档矩阵倒排索引单词词典倒排列表举例倒排索引的搜索过程系列文章前言再Elasticsearch系列三:创建索引过程详解一文中,介绍了ES创建索引的流程。再流程中是调用Lucene的接口来创建索引的。本篇文章主要介绍ES中的索引——倒排索引分词在创建索引之前,会对文档中的字符串进行分词。ES中字符串有两种类型,keyword和text。keyword类型的字符串不会被分词,搜索时全匹配查询text类型的字符串会被分词,搜索时是包含查询不同的分词器对相同字符串分词的结果大

2021-01-07 14:05:58 450

原创 Elasticsearch源码解读五:搜索相关性排序算法详解

前言说明:本文章使用的ES版本是:6.2.4在上一篇文章Elasticsearch搜索过程详解中,介绍了ES的搜索过程。接下来我们具体的看一下ES搜索时,是如何计算文档相关性得分并用于排序的。TF-IDF在介绍ES计算文档得分之前,先来看一下TF-IDF算法。TF-IDF(Term Frequency–Inverse Document Frequency)是一种用于信息检索与文本挖掘的...

2020-03-12 11:13:53 815

原创 Java Standalone Jar Application Example

概述代码发布打包的时候,有很多种方式,其中一种方式在打包的时候可以将整个项目中所用到的依赖包全部一起打包。一般叫做Standalone Application.j即可独立运行的应用。这种打包方式的优点是显而易见的,即打包之后一个Jar即可运行。迁移快,成本低。相反的,其缺点是如果依赖包升级,则需要重新发布打包。所以这种方式适用于小项目,依赖包少的项目。配置要生成Standalone App...

2020-03-10 15:24:13 918

原创 Java中的POST与GET请求

在服务请求中,通过HTTP的方式发送POST或者GET是最常见的请求方式。下面介绍JAVA中常用的POST、GET请求方式。POST实现代码public static void sendMessage(String url, String message) { try { HttpURLConnection conn = (HttpURLConnection) new...

2020-03-10 15:23:46 930

原创 PHP中Trait详解及其应用

从PHP的5.4.0版本开始,PHP提供了一种全新的代码复用的概念,那就是Trait。Trait其字面意思是"特性"、“特点”,我们可以理解为,使用Trait关键字,可以为PHP中的类添加新的特性。熟悉面向对象的都知道,软件开发中常用的代码复用有继承和多态两种方式。在PHP中,只能实现单继承。而Trait则避免了这点。下面通过简单的额例子来进行对比说明。1. 继承 VS 多态 VS Trait...

2020-03-10 15:23:34 289

原创 MAC OS X 编译安装PHP7

MAC OS X 编译安装PHP7.0.16主要内容包括:php7以上版本的编译,安装,php-fpm配置。下载源代码下载地址:http://www.php.net/downloads.php安装编译源码从压缩包解压,得到源码。复制到:/usr/local/src/ 目录执行 cd /usr/local/src/php-7.x.x执行 ./buildconf --for...

2020-03-10 15:23:22 2457

原创 Mysql 主从同步简介

顾名思义,主从复制就是将主库中的数据复制到从库中。从库可以有多个,同时主库和从库之间的网络拓扑有很多种组合方式,这里不做介绍。为什么需要主从同步?负载均衡通过Mysql主从同步,可以将读操作分不到各个从库服务器上。实现对密集型应用的性能优化,并且实现方便。容灾避免单点故障,数据恢复,高可用性Mysql升级测试可以在从库上使用高版本的Mysql,保证在升级全部实例前,查询能够在从库正...

2020-03-10 15:23:04 137

原创 Mysql 数据类型隐式转换规则

现象今天遇到一个慢查询,查询日志找到慢查询语句是这样的:select * from convert_test where areacode=0001 and period>='20170511' and period<='20170511';convert_test表结构如下:CREATE TABLE `convert_test` ( `id` bigint(20) ...

2020-03-10 15:22:49 1136

原创 ElasticSearch源码解读一:源码编译和Debug环境搭建

环境准备说明:本文章使用的ES版本是:6.7.0JDKElastisearch 6.7.0编译需要JDK版本10.0及以上,我直接安装了JDK12.JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.htmlGradlebrew install gradleElastisearch源码git c...

2020-03-10 15:22:15 560

原创 ElasticSearch源码解读二:启动过程详解

上一篇文章说了ES的源码编译以及如何在本地编译。这一篇文章主要说明ES的启动过程。环境准备参考ElasticSearch源码编译和Debug。说明:本文章使用的ES版本是:6.7.0启动函数:org.elasticsearch.bootstrap.ElasticSearch设置如下断点:启动在上一篇文章中介绍的Debug模式中的一种,这里我用的远程Debug模式。ElasticSe...

2020-03-10 15:21:22 514

原创 Elasticsearch源码解读三:创建索引过程详解

前言说明:本文章使用的ES版本是:6.7.0在上一篇文章搜索引擎ElasticSearch的启动过程中,介绍了ES的启动过程。由此可知,在ES启动过程中,创建Node对象(new Node(environment))时,初始化了RestHandler,由其名字可以知道这是用来处理Rest请求的。在ES源码中,RestHandlerAction如下图:其中:admincluste...

2020-03-10 15:21:07 608

原创 Elasticsearch源码解读四:搜索过程详解

前言说明:本文章使用的ES版本是:6.7.0在上一篇文章Elasticsearch如何创建索引?中,介绍了ES写入文档的过程。接下来我们具体的看一下ES中,搜索过程是怎样的在ES中搜索按照前面几篇文章的步骤,我们直接开始debug搜索的过程。上一篇文章中我们写入了如下的数据{ "id":6, "title": "我是文件标题,可被搜索到66", "text": ...

2020-03-10 15:20:53 307

原创 RPC框架-Thrift的使用

Apache ThriftThrift 是一种接口描述语言,通过二进制通信协议为多种编程语言定义和创建服务。Thrift是一种可扩展的跨语言服务的RPC框架,由Facebook开发并且开源。应用安装MACbrew install thrift其他安装方式下载安装包:http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3

2016-07-10 19:57:44 3203

原创 一道关于股票买卖的算法编程题

前段时间在segmentfault回答了一个关于算法的问题,感觉很有趣,记录下来.题目是这样的:给定数组n,包含n天股票的价格price.一个人一共最多可以买2手股票,但在第一手股票卖出前不能买入第二手股票。如果不买,收益为0.假设每手只买1股。计算这个人最大收益。输入:[3,8,5,1,7,8]输出:12先贴下我的算法代码:<?phpfunction getMaxProfilt(array

2016-07-10 15:29:55 8736

原创 Laravel Homestead的安装和使用

一. 介绍Laravel致力于完善整个PHP开发过程,使得本地开发环境的搭建和分发更加简单.Vagrant提供了一种简单并且优雅的方式来管理和配置虚拟机.Laravel Homestead 是一个官方的Vagrant “box” 安装包,它提供了一个完美的开发环境,它不需要在你的本地机器安装PHP, HHVM, web服务器, 和其他任何服务软件.有了它,你再也不用担心搞乱自己的操作系统了! Vag

2016-07-10 15:10:10 7390

原创 使用Consul快速搭建简易分布式服务监控系统

服务发现是Consul的特性之一,利用这个特性,我们可以做一个简单的分布式服务监控系统.

2016-03-19 22:49:08 9345

原创 VIM 实用技巧 小记

关于本书:http://book.douban.com/subject/25869486/使用超级用户权限保存文件使用场景:当前用户用vim打开了一个只有只读权限的文件,修改后想保存改怎么办呢?命令: :w !sudo tee % > /dev/null %: 在vim命令中,%符号表示当前文件的完整路径使用无名寄存器进行删除,复制,粘贴s: 删除光标所在字符,同时进入插入模式x: 删除光

2016-03-12 12:53:49 452

原创 PHP命名空间解析规则

PHP命名空间解析规则命名空间名称定义非限定名称Unqualified name名称中不包含命名空间分隔符的标识符,例如Foo限定名称Qualified name名称中含有命名空间分隔符的标识符,例如:Foo\Bar完全限定名称Fully qualified name名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符,例如:\Foo\Bar.namespace\Foo 也是一个完全限定名

2015-11-01 16:06:20 613

原创 Vagrant中Nginx配置

在系列文章1和系列文章2文章中,介绍了Vagrant的安装和开发环境软件的自动安装。这篇文章将写点关于虚拟机中Nginx的配置,以及在真实机中访问Nginx的方法。打开Vagrantfile文件中,找到如下配置:config.vm.network "forwarded_port", guest: 80, host: 8080该配置的意思就是将虚拟机的80端口映射到真实机的8080端口。使用vagra

2015-10-24 15:57:06 4924

原创 使用VirtualBox + Vagrant打造属于自己的开发环境2

在上一篇文章中,介绍了Vagrant的安装步骤。然而一开始安装好的虚拟机里面没有安装任何的软件的,甚至连vim都没有。这篇文章就是为了解决这个问题的。这里准备了一些shell,用来在安装vagrant的时候安装的一些软件。详情请查看VagrantForPhp。

2015-10-05 01:58:26 667

原创 如何去掉drwxr-xr-x@中的@符号Linux文件扩展信息

如何去掉drwxr-xr-x@中的@符号Linux文件扩展信息最近从朋友那里拷贝了文件,执行了下ls -lartdrwxrwxrwx@ 10 rlanffy staff 340B 3 6 2015 files-rwxrwxrwx@ 1 rlanffy staff 630B 6 10 17:22 vagrantup.sh-rwxrwxrwx@ 1 rlanffy staf

2015-10-01 20:47:53 5094

原创 GitHub入门与实践一

安装略初始设置设置姓名和邮箱地址git config --global user.name "your name"git config --global user.email "your email"查看设置是否成功git config --global user.namegit config --global user.email提高命令输出的可读性git config --global

2015-09-28 00:35:50 568

原创 使用VirtualBox + Vagrant打造属于自己的开发环境1

很多新进入公司的小伙伴估计都有这样的经历,刚进公司必定会配置公司产品运行所需的开发环境。配置环境对于刚入职场的新手来说,还是很有难度的。Vagrant就是为了解决这个问题而存在的,通过Vagrant可以打造专有的开发环境。通过Vagrant配置好开发环境后,就可以打包开发环境进行分发了。新手只需拿到Vagrant包,运行几个脚本就完成了环境的配置。而且这一切都是在虚拟机中完成的,所以也不用担心配置失

2015-09-28 00:27:41 5906

原创 使用HIGHCHARTS绘制服务端返回数据曲线图

HIGHCHARTS 是什么? Highcharts是一个使用纯JavaScript编写的绘图工具,它提供了简单的方式为你的网页或者Web应用添加交互式图表。 Highcharts目前支持的交互式图表类型如下:line -> 直线图spline -> 曲线图area -> 面积图areaspline -> 曲线面积图arearange -> 面积范围图areasplinerange -

2015-05-31 20:50:55 2094

原创 PHP单例模式

访问控制通过关键字public,protected和private来实现。 被定义为公有的类成员可以在任何地方被访问。 被定义为受保护的类成员则可以被其自身以及其子类和父类访问。、 被定义为私有的类成员则只能被其定义所在的类访问。类属性必须定义为公有、受保护、私有之一。为兼容PHP5以前的版本,如果采用 var 定义,则被视为公有。class Car { $speed = 10; //

2015-05-24 18:41:17 510

原创 Java中的序列化与反序列化

序列化是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。对象序列化和反序列化的过程就是将对象写入字节流和从字节流中读取对象的过程。将对象状态转换成字节流后,可以用java.io包中的各种I/O流类将其保存到文件中,或者应用NIO技术将其传输到另一线程中或通过网络连接将对象数据发送到另一主机。对象序列化功能非常强大,在RMI、Socket、JMS和EJB中都有应用。对象序列化机制是为了

2015-03-25 17:10:42 581

原创 tcpdump基本使用方法

tcpdump基本使用方法简介tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。参数含

2015-03-06 15:10:49 1077

原创 JAVA容器基本概念

基本概念Java容器的主要用途就是用来保存对象,根据对象保存形式的不同,可以将其分为以下两个概念: 1. Collection:保存独立的对象集合,常见的有:List、Set、Queue和已经过时Stack; 2. Map:利用“键值对”来保存对象的容器。常见的容器介绍ListList可以将元素保存在特定的序列中。主要有两种类型的List:ArrayList它常用于元素的随机访问,但在其中插入和

2015-02-28 22:26:52 1163

原创 JAVA类中的equals()方法和hashCode()方法的重写

什么情况下需要重写equals()方法?在比较两个两个对象时,可以使用==和equals()。前者可以理解为潜比较,既比较对象的引用地址是否相等。后者属于深比较,比较的是两个对象的引用所指向的内容是否相等。在Object类中已经定义了equals()方法,但该方法是直接采用==操作符实现的,因此子类如果不重写此方法,那么该方法的比较结果和==是一样的。为了方便的比较两个对象的内容是否相等,在定义类的

2015-02-21 01:54:27 917

转载 OSI七层模型详解

OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。完成中继功能的节点通常称为中继系统。在OSI七层模型中,处于不同层的中继系统具有不同的名称。   一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。

2015-01-31 14:05:28 813

原创 在JAVA中利用SOCKET创建一个用于收发报文的长连接服务器

JAVA中的通信主要靠java.net和java.nio包中的类实现,下面我将演示如何利用java.net包中的类来模拟一个用于收发报文的长连接服务器。服务器的功能:1. 接收来自客户端的请求报文2. 检测报文是否符合规范3. 返回应答报文给客户端实例代码如下:import java.io.IOException;import java.io.InputStream;i

2015-01-26 22:34:57 4300 6

原创 在Java中实现文件的分割与合并

对打文件进行分割,分割成固定大小的文件,并存放与指定的目录,可以指定分割的大小。代码如下:/*** @description* @param filePath 文件名称,包括路径* @param filterFolder 分割文件存放目录* @param fileSize 分割文件大小* @throws IOException */public static void cutFi

2015-01-10 12:12:44 824

翻译 使用java.util.concurrent.ThreadFactory类创建线程

工厂设计模式是Java中最常用的设计模式之一。它是一种创建型设计模式,能够用于创建一个或多个类所需要的对象。有了这个工厂,我们就能集中的创建对象。集中创建方式给我们带来了一些好处,例如:1. 能够很容易的改变类创建的对象或者创建对象的方式;2. 能够很容易限制对象的创建,例如:我们只能为a类创建N个对象;3. 能够很容易的生成有关对象创建的统计数据。在Java中

2015-01-07 00:22:33 2014 1

原创 Linux中,如何实现文档共享以及权限设定

有这样一个需求,在linux中新建两个用户,这里定义为userA和userB。要实现下面的要求:userA登录后,在其家目录下能看到userA和userB目录,并且对userA有读写执行权限,对userB目录有读的权限;userB登录后,在其家目录下能看到userA和userB目录,并且对userB有读写执行权限,对userA目录有读的权限;为了实现这样的要求,首先

2014-12-23 16:11:04 10484

原创 Linux中的磁盘管理

1.df 查看磁盘分区使用状况默认仅显示本地磁盘- T 显示磁盘分区类型- t 显示指定类型文件系统的磁盘分区 例如:-t ext4- x 不显示指定类型文件系统的磁盘分区2.du 统计磁盘上的文件大小- b 以byte为单位-k 以kb为单位-m MB为单位-h 按照1024进制统计-H 按照1000进制统计-s 指定统计目标硬盘分

2014-12-11 22:53:13 774

原创 Linux中的用户与用户组

1. /etc/group 存储当前系统中所有用户组信息    文件中每行内容的含义:    haldaemon:x:68:haldaemon    组名称: 组密码占位符: 组编号: 组中用户名列表当用户组中只有一个用户且用户名与组名相同,则第四列可以为空系统用户组编号范围:0-499新增用户组编号从500开始2. /etc/gshadow 存储当前系统中用户

2014-12-11 22:43:46 684

原创 Linux压缩与解压缩

Linux下常用压缩格式:.zip     .gz    .bz2    .tar.gz    .tar.bz2zip与windows中的zip是通用的压缩命令:zip 压缩文件名 源文件名                 zip -r 压缩文件名 源文件夹名解压缩命令:unzip 被解压文件包gziplinux专用的格式,但在windows中也能解压压缩命令:

2014-10-27 00:59:44 827

转载 NAS和SAN的区别

为了能够充分利用计算机网络的性能,出现了基于网络的存储结构:附网存储(Network Attached Storage,NAS)和存储区域网(Storage Area Network,SAN)。      在NAS系统中,存储设备被连接在某台服务器上,通过网络文件系统(Network File System,NFS)或者通用因特网文件系统(Common Internet File System

2014-09-06 15:22:04 1158

原创 JAVA的静态代理与动态代理比较

JAVA的静态代理与动态代理比较 一、概念 代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,

2014-08-03 23:10:34 550

转载 文件编码详解 彻底解决中文乱码问题

在工作中少不了碰到文件乱码的问题,面对这么多的中文汉字编码,真不知该选哪个好,不如彻底搞清楚,让乱码灰飞烟灭;以下介绍文本编码中常用到的几种:iso8859-1、GDK/GB2312、ANSI、unicode 以及UTF ;iso8859-1iso8859-1 通常叫做Latin-1,属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。比如,字母a的编码为0×61=9

2014-08-02 11:04:11 2125

OpenCV-2.4.1&tbb;(x86)解压即用.zip

OpenCV-2.4.1&tbb;(x86)解压即用。 自带编译tbb。 推荐使用\build\x86\vc10里面的版本

2019-10-27

客户端报文发送模拟器,服务端响应模拟器

使用方法: 客户端模拟:在软件所在目录打开命令窗口,执行:nc ip port < fileName 表示发送报文 ip:接收请求的服务器ip port:接收请求的服务器端口 fileName:发送的报文文件名称,把需要发送的报文存入文件中,fileName就是这个文件的名称,需要指定路径; 服务端模拟:在软件所在目录打开命令窗口,执行:nc -l -p port -o request < response 表示监听本地端口,模拟服务器接收请求,返回响应 port:被监听端口; request:请求报文存放文件名称; response:返回报文存放文件名称。

2015-01-26

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

TA关注的人

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