- 博客(130)
- 收藏
- 关注
原创 bitmap 位图
假如要表示4个int数字:1,2,5,7,初步估计内存占用4 * 4byte(32bit) = 16byte,如果有10亿个这样的数字,那么内存占用是:10亿 * 4 / (102410241024)= 3.72G,这么大的数据如果做查找或者排序,内存吃不消。看看用位图如何解决这个问题:用bit来表示数字,0代表数字不存在,1代表存在,那么一个byte就可以表示8个数字,将这些byte组成一个数组,就可以表示很多数字:如图所示,1,2,5,7都可以放入数组的第一个byte中,即bytes[0],10
2021-11-19 15:21:52 699
原创 filebeat + es 日志分析
官网下载filebeat下载及介绍,略。注意,保持fielbeat和es的版本一致,否则可能会报错。配置filebeat.yml主要是:日志文件路径单条日志多行合并kibana和es连接可以参考官网:https://www.elastic.co/guide/en/beats/filebeat/6.3/index.html下面是我的配置:###################### Filebeat Configuration Example ########################
2020-12-02 18:12:45 2303
原创 java并发
java支持并发编程,语言本身提供基础了并发支持,而java.util.concurrent类库提供了一些高层的API。进程和线程并发编程有两个基本的执行单元:进程和线程。对于java,并发编程大部分时候和线程相关,但是进程也很重要。进程拥有独立的执行环境和内存空间。进程通常被视为程序或应用的同义词,但是,一个应用实际上很可能是许多相互合作进程的集合。为了进程间的高效沟通,大部分操作系统支持IPC(Inter Process Communicatin),比如管道和套接字。IPC不仅用于同系统间的进程通
2020-11-06 19:17:27 388
原创 java I/O流
I/O流(I/O Streams)一个I/O流代表一个输入源或者输出目标。一个流可以代表许多不同种类的源和目标,包括磁盘文件,设备,其他程序,以及内存数组。流支持不同种类的数据,包括简单的字节,基本数据类型,字符串,以及对象。一些流仅是传递数据,还有一些则操作和转换数据。不论这些流内部如何工作,但对于使用它们的程序来说,流代表一个简单的模型:一个流就是一个数据序列。程序使用输入流(input stream)从源中读取数据,一次一个单位;使用输出流(output stream)往目标写数据,一次一个单位
2020-09-02 20:12:28 271
原创 java集合框架的实现
集合框架的具体实现集合框架的实现有如下几类:通用实现特殊实现并发实现包装实现简便实现抽象实现Set实现Set实现分为通用和特殊实现通用实现通用实现有三种:HashSetTreeSetLinkedHashSetHashSet比TreeSet快的多,它们的时间复杂度大约是O(1) vs O(logn),但是前者是无序的。如果你需要SortedSet接口中的操作,或者要求元素有序的迭代,使用TreeSet。LinkedHashSet介于HashSet和TreeSet之间,它是
2020-08-31 20:33:44 214
原创 java集合的算法
集合算法java的Collections类以静态方法的形式提供了一些多态算法。这些算法绝大多数处理List实例,也有个别能处理任意集合的实例。下面我们简要的介绍下。排序sort算法对列表的元素按升序进行排序。它有两种处理形式:一种是接收一个列表,并根据其元素的自然顺序进行排序。第二种是接收一个列表,以及额外的一个Comparator对象,用该对象对元素进行排序。sort方法使用优化后的归并排序(merge sort)算法,不仅快,而且稳定:快:它能保证运行的时间复杂度是O(nlog(n
2020-08-21 18:34:06 690
原创 集合的聚合操作
相关知识lambda表达式(Lambda Expression)方法引用(Method References)lambda表达式(Lambda Expression)也叫匿名函数,lambda表示式的句法:括号包裹的,由逗号分割的参数列表。参数类型可以省略,如果只有一个参数,括号也可以省略箭头->表达体,由一个表达式或者语句组成。如果是语句的话,必须用花括号包起来{},java运行时会计算表达式并返回它的值,或者,你也可以使用return语句// example 1Integer
2020-08-18 18:43:39 1339
原创 elasticsearch部署
推荐到官网下载ES源码的打包,个人觉得比起通过yum等包管理工具安装更灵活,且方便管理,比如目录自主可控,便于配置安装插件更方便同义词等词库词库维护##ES长期运行推荐使用进程管理工具来运行ES,这里使用supervisor,将es作为supervisor的子进程运行。配置supervisord[supervisord]; ....nodaemon=false ...
2019-08-27 11:15:36 352
原创 倒排索引、分词、同义词
倒排索引正排索引:文档ID =>文档内容和单词倒排索引:词条 =>文档ID倒排索引组成:词条字典(Term Dictionary),记录所有的词条与倒排列表的映射关系。这个字典很大,通过B+树或哈希拉链法实现,以满足高性能的插入与查询。倒排列表(Posting List),由倒排索引项组成,包含如下信息:文档ID词频(TF):该单词在文档中出现的次数,用于相关性评分...
2019-08-27 11:14:41 827
原创 Mapping
mapping是定义文档及其字段是如何存储和索引的程序。例如,使用mapping定义:哪个字符串字段应该视为全文字段哪个字段包含数字,日期,或地理位置日期的格式自定义规则来控制动态添加字段mapping type每个索引都有mapping type来决定文档如何被索引。mapping type包含:meta-fields: 比如_index, _type, _id, _sou...
2019-08-27 11:14:05 3540
原创 Search API
Search搜索条件可以通过查询字符串,也可以在请求体中传递。搜索接口支持从多个索引中查找文档vj。基本格式:# 单索引内检索文档GET /{index}/_search?q={field}:xxx# 多索引内检索文档GET /{index1, index2}/_search?q={field}: xxx# 全部索引内检索文档GET /_all_/_search?q={fie...
2019-08-27 11:13:13 735
原创 Query DSL
"ES提供了基于JSON的查询DSL,它由两种语句组成:叶子查询(Leaf Query):查询特定字段的特定值,比如match, term, range查询,这些查询可以单独使用。复合查询(Compound Query):复合查询包装其他叶子查询和复合查询,以逻辑运算的方式(比如bool,dis_max查询)连接多个查询,或更改它们的行为(比如,constant_score查询)依据它们...
2019-08-27 11:12:32 520
原创 Document API
Index APIindex api用来新增文档,支持如下几种方式:# 指定id创建,如果id已存在,则会进行更新,`_version` + 1PUT {index}/_doc/{id}# 强制创建,如果id已经存在,409错误(以下二者等价)PUT {index}/_doc/{id}?op_type=createPUT {index}/_create/{id}# POST创建,...
2019-08-27 11:11:56 1018
原创 基本概念
基本概念文档(Document)es是面向文档的,文档是所有可搜索数据的最小单位文档会被序列化为JSON格式,保存在es中每个文档都有一个Unique ID可以自己指定也可以由es自动生成示例{ "year": 1995, "@version": "1", "genre": [ "Adventure", "Animation", ...
2019-08-27 11:11:10 260
原创 介绍及安装
介绍及安装ES版本问题:2015:2.02016:5.0Lucene 6.X2017:6.0Lucene 7.X2019:7.0Lucene 8.0python客户端对以上各版本都提供了支持:elasticsearch-py:低层库,只提供了Elasticsearch REST API的简单封装。个人更推荐这种原生一点的方式。https://...
2019-08-27 11:10:13 300
原创 PYMODM使用记录
PYMODM使用TIPSListField存储其他文档的引用列表时,可以这样定义:class MongoPaper(MongoModel): """mongo试卷""" paper_id = fields.IntegerField(verbose_name='sql试卷pk', primary_key=True) outlines = fields.ListFiel...
2019-05-09 16:50:32 905
原创 MongoDB聚合
聚合操作处理数据并返回计算后的结果。它将来自多个文档的值组合在一起,并且可以对分组数据执行各种操作以返回单个结果。MongoDB提供了三种执行聚合的方式:聚合管道、map-reduce函数、和单用途聚合方法。聚合管道MongoDB的聚合基于管道的概念。文档进入一个多段管道,被转化为聚合后的结果。最基本的管道阶段提供过滤器(filters)进行查询和文档转换(修改文档的输出格式)。其他管道提供...
2019-05-09 16:49:52 516
原创 开启docker中MongoDB的认证授权
开启docker中MongoDB的认证授权思路开启MongoDB服务后,默认是没有权限验证的。直接通过IP加端口就可以远程访问数据库,并对数据库进行任意操作。下面介绍一下如何开启docker中MongoDB的权限认证。安装完MongoDB服务后默认有一个admin数据库,此时admin数据库是空的,没有记录任何权限相关的信息。当admin.system.users一个用户都没有时,即使Mon...
2019-04-12 18:56:03 6141 1
原创 MongoDB数据建模介绍
MongoDB数据建模介绍数据建模需要在满足应用需求、数据库引擎的性能特征、以及数据检索模式之间取得平衡。在设计数据模型时,请始终考虑应用程序对数据的使用场景(比如,查询,更新,和数据处理)以及数据本身的结构。灵活的模型不同于SQL数据库,插入数据前必须声明表的模型。默认情况下,MongoDB的集合不要求其文档具有相同的模型:单个集合内的文档不必拥有相同的字段,并且字段的数据类型也可以不...
2019-04-02 12:20:32 1098
原创 mongo数据库CRUD
#准备从官网下载合适的安装包。这里以win10为例,一路next即可完成安装。安装完成后,进入这个目录:C:\Program Files\MongoDB\Server\4.0\bin\在当前目录打开PowerShell窗口,先启动服务端: .\mongod.exe服务端默认在本地的27017端口运行。启动客户端: .\mongo.exe将默认连接本地27017端口的服务端,并...
2019-04-02 12:19:55 1761
原创 JS杂记
JS 杂记'use strict' JS文件行首声明,防止变量未声明成为全局变量// 对象内部定义的函数称为方法,其中this关键字代指对象本身// 如果不通过对象调用方法,那么this代指window,如果在'strict'模式下,this代指'undefined'ES6 模板字符串// 需要放到 反引号 中才有效哦;另外 反引号 可以支持多行文本var name = '小...
2019-01-23 18:49:00 288
原创 CPU使用率
CPU使用率概念将CPU的时间划分为时间片,轮流执行任务,就达到了多任务同时运行的效果。CPU时间通过节拍率和节拍数来维护。节拍率单位是HZ,分为内核节拍率和用户节拍率,其中用户节拍率的值是固定的100(即1/100秒,10ms),每秒钟触发100次时间中断,没发生一次时间中断,节拍数加1通过/proc虚拟文件系统,用户可以查看系统内部状态的信息,其中/proc/stat,可以查看系统CPU...
2019-01-22 20:40:47 1515
原创 平均负载及CPU上下文切换
平均负载平均负载是指单位时间内,系统处于 可运行状态 和 不可中断状态 的平均进程数。简单理解,就是平均活跃进程数。可运行状态:进程正在或等待使用CPU不可中断状态:进程正在等待硬件设备的I/O,是系统对进程和硬件设备的一种保护机制。最理想的情况是,每个CPU上刚好运行着1个进程,也就是平均负载等于CPU的个数。假如平均负载是2,那么意味着:...
2019-01-11 09:57:46 764
翻译 Falcon 快速开始
介绍当您的目标是构建快速、可扩展的REST风格API微服务时, Falcon 是个不错的选择。这是一个可靠的、高性能的Python Web框架,用于构建大规模应用后端和微服务。Falcon鼓励REST架构风格的 URI到资源的映射,以花费尽可能少的精力同时又保持高效。Falcon重点关注四个方面:速度、可靠性、灵活性和可调试性。它通过"响应者(responder)" (诸如 on_get(...
2019-01-10 06:19:19 1991
转载 supervisor进程管理工具
Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。安装和配置通过pip或a
2018-01-10 14:40:08 618
原创 Docker的简单使用
Docker介绍Docker的英文本意是“搬运工”,Docker搬运的是集装箱(Container)可以成为容器,我们可以把WEB应用以及依赖库打包进一个可移植的容器里传播,解决了应用部署的平台兼容性问题,同时她也是一种轻量级的虚拟化技术可以做到秒级启动一个容器(类似小虚拟机,区别启动快、可以传播);镜像是docker 创建、启动一个容器的文件系统,这个文件系统包含依赖包、命令工具、APP等;安装和
2018-01-02 17:31:26 4152 1
原创 MySQL存储引擎:MyISAM & InnoDB
存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
2017-12-25 16:59:14 551
原创 Redis, Memcache 基本使用
Redis, MemcacheMemcache MemCache是一个自由、源码开放、高性能、分布式的内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。安装https://github.com/memcached/memcached/wiki/Install启动服务memcached -d -m 10 -
2017-12-21 11:17:20 598
原创 MySQL基础(三)表关系及数据的增删改查
这一部分主要使用SQL中的DML,数据库操作语言(data manipulation language),对数据库数据进行增、删、改、查操作,作为前提,先介绍关系型数据库中的表关系。关系型数据库(RDBMS)MySQL作为关系型数据库,数据是存储在表中的,假如设计一个订单系统,可能包含以下信息:供应商(Vendors):产品目录(Products)客户列表(Customers)订单(Orde
2017-12-13 11:34:46 3438 1
原创 Django配置数据库读写分离
Django配置数据库读写分离对网站的数据库作读写分离(Read/Write Splitting)可以提高性能,在Django中对此提供了支持,下面我们来简单看一下。注意,还需要运维人员作数据库的读写分离和数据同步。配置数据库我们知道在Django项目的settings中,可以配置数据库,除了默认的数据库,我在下面又加了一个db2。因为是演示,我这里用的是默认的SQLite,如果希望用MySQL,看
2017-12-12 17:57:57 6794 1
原创 MySQL基础(二)数据库、表的创建及操作
这一部分主要使用SQL中的DDL,数据库定义语言(data definition language),对数据库,表进行新建,修改,和删除。数据库(database)显示所有数据库SHOW DATABASES;创建数据库CREATE DATABASE db_name;每创建一个数据库,就会在Data目录下新建一个以数据库名字命名(db_name)的文件夹。说明:Data默认在程序的解压目录下,比如:C
2017-12-11 13:09:14 1589
原创 MySQL基础(一)介绍和配置
了解数据库基本概念数据库(database)数据库是一个以某种有组织的方式存储的数据集合,可以将它想象为一个文件柜。只不过它是在计算机的存储设备上,按照一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。数据库管理系统DMBS (Database Management System)也就是数据库软件,用于创建、操作、维护数据库用的,比如MySQL, or
2017-12-09 11:28:54 1019
原创 WebSocket剖析
WebSocket剖析http协议在了解WebSocket之前,有必要简单复习一下http协议。请求和响应Http协议用于客户端与服务端的通信,客户端发出请求(request),服务端返回响应(response)。下面我们以访问https://www.sogou.com/搜狗首页为例,来看看请求报文和响应报文: 下面是从客户端访问服务器的请求报文的截取内容:GET / HTTP/1.1Host:
2017-12-07 20:24:50 1041
原创 为tornado自定义session
cookie和session在自定义session前,我们需要先了解cookie和session是什么,可以参考我之前的博客:http://blog.csdn.net/ayhan_huang/article/details/78032097简单来说:cookie是保存在浏览器的键值对session是保存在服务端的键值对session依赖于cookie在Django框架中,我们可以直接操作co
2017-12-06 16:07:32 2951 3
转载 图解GIT
再次感谢原著作者和中文翻译者。 此页图解git中的最常用命令。如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻。 如果你想知道这个站点怎样产生,请前往GitHub repository。 正文 基本用法 约定 命令详解 Diff Commit Checkout Detached HEAD(匿名分
2017-11-29 14:17:34 365
转载 JS 中的事件冒泡与捕获
本文来源:渔人原文地址:http://yuren.space/blog/2016/10/16/事件冒泡与捕获/刚接触 JS 的那个时候,啥也不懂,只想着如何利用 Google、百度到的函数来解决实际的问题,不会想到去一探究竟。渐渐的,对 JS 的语言的不断深入,有机会去了解一些原理性东西。最近在看 JQuery 源码,感触很多,总想着用原生的 JS 去实现自己的一个 JQuery 库。说实在的,JQ
2017-11-25 09:33:13 562
原创 Django contenttypes 应用
contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中。每当我们创建了新的model并执行数据库迁移后,ContentType表中就会自动新增一条记录。比如我在应用app01的models.py中创建表class Electrics(models.Model): pass。从数据库查看ContentType表,显示如
2017-11-24 17:50:49 1583
原创 Django REST framework API开发
REST介绍RESTful API 设计实现API的两种方式FBV 视图函数urlpatterns = [ url(r'^user/$', views.user), url(r'^user/add/$', views.user_add), url(r'^user/edit/(\d+)/$', views.user_edit), url(r'^user/del/(\d+
2017-11-20 19:42:00 4507
原创 Python排序算法总结
Python排序算法总结递归在正式讲算法之前,先介绍一下递归。递归是一种解决问题的思路。特点调用自身必须有一个明确的结束条件,比如if...递归的两个阶段: 递推(压栈):到某个阶段,该阶段返回一个值(没有返回值,默认返回None)回溯(出栈):从那个阶段回溯每进入更深一次递归时,问题规模减少递归效率不高(保存系统堆栈,跳进去,还要再跳出来)应用场景知道结束的条件,但不确定循环次数。
2017-11-17 19:22:59 1220 1
原创 python设计模式总结
介绍 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样你就能一次又一次地使用该方案而不必做重复劳动。—— Christopher Alexander软件危机催生了设计模式,面向对象,软件工程。是什么每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计。热身既然是针对面向对象的,让我们先来回顾一下面向的三大特性和接口面向对象的三大特性:
2017-11-16 17:28:16 1752
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人