自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(403)
  • 资源 (6)
  • 收藏
  • 关注

原创 elasticsearch 自定义分析器

自定义分析器分析器analyzer主要有以下几个字段type 指定内置的分析器,custom可以忽略tokenizerchar_filterfilterposition_increment_gap 目前还没用到,不知道各个作用analyzer/analysis (分析器)文档document 如何转化为 倒排索引,一段text变成一个个term,这个过程叫做文本分析.Tokenizer(分词器)语干中提取词元(Token)Filter(过滤器)Character Fi

2021-04-14 00:08:42 15

原创 elasticsearch bool查询

bool 查询must:与关系,相当于关系型数据库中的and。should:或关系,相当于关系型数据库中的or。must_not:非关系,相当于关系型数据库中的not。filter:过滤条件。range:条件筛选范围。gt:大于,相当于关系型数据库中的>。gte:大于等于,相当于关系型数据库中的>=。lt:小于,相当于关系型数据库中的<。lte:小于等于,相当于关系型数据库中的<=。psmust和filter经常连用, should和filter不常在一起

2021-04-13 23:42:00 16

原创 elasticsearch highlight高亮查询

高亮查询highlight预制数据PUT zhifou/doc/4{ "name":"石头", "age":29, "from":"gu", "desc":"粗中有细,狐假虎威", "tags":["粗", "大","猛"]}默认的高亮"highlight" : { "name" : [ "<em>石</em><em>头</em>" ] }G

2021-04-13 23:28:32 15

原创 elasticsearch 重建索引

重建索引当索引改变数据结构的时候,需要重建索引。步骤lol取别名lol_latest, lol_latest作为对外的使用对象新增索引lol_20210409,mapping结构使用业务修改后的。同步数据给lol_20210409添加和lol相同的索引名lol_latest,删除lol的别名lol_latest删除lol索引# 获取所有索引简要信息GET /_cat/indices# 新增一个索引lolPUT /lol# 创建数据结构PUT /lol/_mapping{

2021-04-09 00:14:44 14

原创 bulk 批量导入

bulk 批量导入{"index": {"_index": "book", "_type": "_doc", "_id": 1}}{"name": "权利的游戏"}{"index": {"_index": "book", "_type": "_doc", "_id": 2}}{"name": "疯狂的石头"}# filename 是批量导入的文件名curl -X POST "localhost:9200/_bulk" -H 'Content-Type: application/json' -

2021-04-05 22:41:47 9

原创 elasticsearch 中文分词器

中文分词器使用默认分词器查询中文。# 可以看到一个中文是一个词,对于中文很不友好,所以需要使用中文分词器curl --location --request POST 'localhost:9200/_analyze' \--header 'Content-Type: application/json' \--data-raw '{ "analyzer": "standard", "text": "RNG今年总冠军"}'>>>>>>>&g

2021-04-05 21:03:42 15

原创 elasticsearch 分词器介绍和使用

分词器介绍和使用什么是分词器?就是将一段文本text,拆分成多个关键词keyword 的工具。常用分词器standard analyzersimple analyzerwhitespace analyzerstop analyzerlanguage analyzerpattern analyzerstandard analyzer# 标准分词器,默认的。# 大写变小写# 去掉了符号POST localhost:9200/_analyze{ "analyzer": "

2021-04-05 20:41:56 12

原创 简单搜索

简单搜索预置学习数据# 删除索引DELETE localhost:9200/nba# 创建索引,指定mappingPUT localhost:9200/nba{ "mappings": { "properties": { "name": { "type": "text" }, "team_name": { "type": "text"

2021-04-05 20:13:38 14

原创 doc 文档的增删改查

文档的增删改查新增文档PUT localhost:9200/nba/_doc/1{ "name": "hadeng", "team_name": "勇士", "position": "得分后卫", "play_year": "10", "jerse_no": "13"}新增自增id使用POST,不能用PUT了POST localhost:9200/nba/_doc/1{ "name": "hadeng", "team_name":

2021-04-05 18:09:56 15

原创 mapping 映射的简单操作

mapping 映射的介绍text 会被分词keyword 不会被分词新增curl -X PUT "localhost:9200/nba/_mapping" -H 'Content-Type: application/json' -d'{ "properties": { "name": { "type": "text" }, "team_name": { "type": "text" }, "position": {

2021-04-04 21:52:15 15

原创 alias 索引别名操作

alias 索引别名查询别名# 查询指定索引别名curl -X GET "localhost:9200/nba/_alias"{ "nba" : { "aliases" : { } }}# 查询所有索引别名curl -X GET "localhost:9200/_alias"{ "nba" : { "aliases" : { } }, "cba" : { "aliases" : { } }}新增别名# 新增别名 nab -&gt

2021-04-01 00:19:04 18

原创 elasticsearch index索引操作

elasticsearch index入门新增索引curl -X PUT "localhost:9200/nba"{"acknowledged":true,"shards_acknowledged":true,"index":"nba"}获取索引curl -X GET "localhost:9200/nba"curl -X GET "localhost:9200/nba?pretty"{ "nba" : { "aliases" : { }, # 别名 "mapp

2021-03-31 23:40:13 19

原创 服务注册与发现(python+etcd)

服务注册与发现简单的实现思路如下。服务端启动时,向中心注册, 写入服务器信息.停止时,服务器数据从中心删除。客户端启动时,可以获取所有可用服务器的信息。# 服务端向etcd注册 key value 如下# 客户端 获取以/job/demo开头的所有value,即可知道有哪些服务器可用。key1:/job/demo@127.0.0.1:9001 value1:127.0.0.1:9001key2:/job/demo@127.0.0.1:9002 value2:127.0.0.1:9

2021-03-11 00:50:03 64

原创 消息队列的消息丢失、重复、积压

消息队列 MQ# 好处系统解耦流量控制,削峰填谷# 引入的问题系统解耦,分布式,带来了数据一致性问题,数据丢失与重复流量控制,也会导致消息堆积的问题。保证数据不丢失?# 消息生成阶段send -> ack确认响应,向消息队列存消息的时候,处理好响应结果和异常就可以保证发送成功了。# 消息存储阶段简单的就是交给中间件来保障消息存储不丢失但是我们也要理解原理,比如Broker副本,至少同步两个节点再返回ack确认响应。# 消息消费阶段获取消息后,先不要给Broker发

2021-03-09 23:52:56 45 1

原创 海量并发下的事物一致性

事物:一系列操作,要么都执行,要么都不执行。事物的一致性:分布式的情况下,比如下订单,有订单系统,商品库存,支付系统等。每一个子系统执行的操作,都是一个事物。所有子系统执行的操作,合起来还可以看成一个事物。强一致性:就是同步执行各个事物,所有都正确执行。最终一致性:可以通过消息队列完成,比如商品和支付先执行,通过消息队列发给订单系统,因为消息队列可以数据持久化,我们认为商品系统的事物一定会正确执行,这样最终的结果也是正确的,就是最终一致性。实现分布式的一致性:除了消.

2021-03-08 23:46:04 21

原创 海量存储下的哈希分片

哈希分片哈希(商品ID) % 存储节点数Hash后取模,比如我们有4个存储节点取模结构为0,则存在1号节点上。取模结构为1,则存在2号节点上。取模结构为2,则存在3号节点上。取模结构为3,则存在4号节点上。这就是最简单的哈希分片**优点:**实现了数据的均匀分布,且实现起来简单。**缺点:**扩展性差,比如我们节点变动,由4个增加到5个,会导致大规模数据迁移。如何保证扩展性呢?一致性Hash将存储节点和数据都进行哈希,映射到一个环上。存储节点一般根据IP进行HASH数据就使用唯

2021-03-07 22:52:00 24

原创 Serverless 无服务架构

serverless 无服务架构是一种软件架构思想和方法无需关注应用软件运行 的底层服务器状态,包括cpu、内存、磁盘、网络等,由底层的云计算平台动态提供。用户开发完应用后,部署到支持serverless的云计算平台上,平台负责部署应用到特定主机上当访问量高时,会自动增加应用部署实例。当访问量低时,云计算平台会自动卸载回收应用。# 腾讯云serverlesshttps://serverless.cloud.tencent.com/start?c=sls...

2021-02-12 17:35:03 32 2

原创 CAP理论

CAP理论是分布式计算领域的。C -> Consistency 一致性A -> Availability 可用性P -> Partition Tolerance 分区容错性# 一致性客户端一定可以访问到最新的数据。一致性细分又分为 强一致性、弱一致性、最终一致性。https://zhuanlan.zhihu.com/p/67949045# 可用性没有出现故障的节点,一定可以正常返回,且返回非超时,非系统性错误的响应。# 分区容错性当网络出现故障的时候,系统可

2021-02-06 22:03:00 25

原创 006 Nginx 全局异常兜底Json数据返回

Nginx 全局异常 返回jsonlocation / { proxy_pass http://lbs; proxy_redirect default; # 存放用户的真实ip proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_

2020-12-24 22:57:01 74

原创 005 Nginx 负载均衡

负载均衡 upstream# 这个和server同级别配置upstream lbs { server 192.168.56.11:8081; server 192.168.56.11:8082;}location /api/ { proxy_pass http://lbs; proxy_redirect default;}配置权重weightupstream lbs { server 192.168.56.11:8081 weight=5;

2020-12-24 22:56:21 58

原创 004 Nginx日志挖掘accessLog

日志模版 #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"';实际记录的日志192.168.56.1 - - [23/Dec/20

2020-12-24 22:55:45 68

原创 003 Nginx静态资源服务器

配置多域名 同端口 server服务首先修改本机的host文件,为了后面的域名访问# windowsC:\Windows\System32\drivers\etc\hosts# linux/etc/hosts将域名放入到 hosts中192.168.56.11 aa.com192.168.56.11 bb.com配置conf,配置两个域名,然后修改 Index.html,访问看效果server { listen 80; server_name aa.

2020-12-24 22:55:11 37

原创 002 Nginx 基础

核心目录conf #配置文件 nginx.conf # 默认的配置文件 nginx.conf.default # 默认配置模板备份 html # 编译安装时,Nginx的默认站点目录 50x.html #错误页面 index.html # 默认首页 logs # nginx默认日志路径 error.log # 错误日志 nginx.pid # nginx进程号 access.log #nginx访问日志 sbin # 程序目录 nginx # 启动命令常见命令# 启动.

2020-12-24 22:54:32 51 1

原创 001 Nginx 安装

Nginxhttp://nginx.org/en/download.htmlhttp://nginx.org/download/nginx-1.18.0.tar.gz# 安装依赖yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel# 解压nginx包tar -zxvf nginx-1.18.0.tar.gz# 编译cd nginx-1.18.0./configuremakemake install

2020-12-24 22:53:48 30

原创 链表:头插法实现逆序

#!/usr/bin/env python# coding: utf-8"""实现链表的逆序给定一个带头节点的单链表,将其逆序。head->1->2->3->4->5变为head->5->4->3->2->1https://www.bilibili.com/video/BV1AD4y1d7LX?from=search&seid=9167067349614497192"""# 定义链表的节点类class List

2020-12-20 22:39:00 224 1

原创 Redis 知识点 scan和keys 定位大key

在Redis中,查找特定条件的Key和定位大Keykeys *注意:keys 算法是遍历算法,复杂度是 O(n)没有 offset、limit 参数,不能控制返回的数量keys *keys game*keys gam*lolscan# 先录入一些keyimport redisclient = redis.StrictRedis()for i in range(10000): client.set("key%d" % i, i)现在 redis 中 有 1000

2020-12-14 00:23:07 158

原创 策略模式

"""策略模式1.Strategy 抽象的策略类2.XXXStratege 具体的策略类3.Context 上下文类 -> 设置/转换策略 执行策略"""from abc import ABCMeta,abstractmethod# ----------- 抽象的策略 接口 ----------- class Strategy(metaclass=ABCMeta): @abstractmethod def execute(self,data):

2020-12-13 23:28:32 37

原创 02 Django和数据库 更改表结构的命令

makemigrationspython manage.py makemigrations consumer 这个命令会扫描consumer应用中的模型在 consumer\migrations\0001_initial.py生成一个迁移文件sqlmigratepython manage.py sqlmigrate consumer 0001这个命令会输出一个sql,真正迁移时,实际执行的语句。migratepython manage.py migrate consumer真正创建数

2020-12-04 01:14:06 78

原创 01 Django 项目快速开始

1. 安装djangosource activate python-notebook # 进入python虚拟环境pip install django2. 创建项目django-admin startproject tmall3.django配置文件默认的配置文件,在django包中的 django/config/global_settings.py中项目的配置文件,在tmall/settings.py如果配置不同,项目自定义的会覆盖全局默认的配置文件想看不同,则使用pytho

2020-12-04 01:13:33 41

原创 Redis 应用02 简单限流/限制用户单位时间内的行为次数

简单限流回复帖子、点赞等操作,经常会提示你操作太快,也就是一个简单的限流问题。如一分钟用户最多回复5条,超过就会进行限制,用redis如何设计?实现思路使用zset数据结构, 每个用户的行为作为redis中的key比如 limit:tom:reply, 表示限制tom回复存储的数据为 value:sorce,value 可以使用时间戳 或者uuid唯一值sorce 使用发生行为的时间# 01# 每次操作行为,添加 value:sorce 使用zadd# 02# 删除1分钟之前

2020-12-01 00:18:57 152

原创 Redis 应用01 分布式锁

分布式锁在处理分布式应用并发的时候,常常会使用锁。为什么使用锁比如我们有个 num = 3, 应用对num操作去数据库取值取完值,在内存中,进行逻辑运算后重新赋值存回数据库当多个应用同时对num操作的时候比如 a和b 都对num进行操作取值 a1 b1赋值 b1 b3在数据库操作中,如果执行顺序是a1 a3 b1 b3 ,那num的值是正确的。如果执行顺序是 a1 b1 a3 b3 ,那么num值就会异常所以需要将 a1 b1 绑在一起执行,中间不能穿插其他操

2020-11-29 14:51:00 44 3

原创 Python避坑指南之字符串strip

strip 我们常常使用它去掉两边空白字符如str01.strip(" "), 这样使用没有什么问题但是像我,对它的理解就存在偏差之前的理解是a.strip("tom")去掉a 字符串 两边的 tom,开头结尾严格匹配。看下面的例子,可能就不符合我们的预期。a = "tot a totma"a.strip("toma")# Out: ' a '从现象来看,a.strip("toma")"toma",可以转化成一个集合,匹配开头结尾的时候,以第一个不在集合内的字符结束...

2020-11-24 23:05:53 94

原创 Python 字典列表,根据字段字段进行排序。

对字典列表进行排序from operator import itemgetter# 有如下一个列表,我们需要给其中的字典进行排序,比如根据uid排序rows = [ {'name': 'Brian', 'id': 1003}, {'name': 'David', 'id': 1002}, {'name': 'John', 'id': 1001}, {'name': 'Big', 'id': 1004}, {'name': 'Ag', 'id': 1004}]

2020-11-02 23:41:26 842

原创 Python 列表循环删除

案例列表循环删除中,第一次很容易采坑如下面案例,我们想把列表中 2全部删除alist = [1,2,3,1,2,2,3,4]for i in alist: if i == 2: alist.remove(i)print(alist)我们希望得到 [1, 3, 1, 3, 4]结果 [1, 3, 1, 2, 3, 4,有一个2漏掉了分析for循环一个list的时候,每次循环Index索引+1。如果这个时候动态的改变列表比如第一次循环 索引Index =

2020-10-15 21:14:48 97

原创 Linux /proc/$pid Linux进程文件

Linux中 /proc/$pid 目录下 存放着所有的进程信息https://www.linuxprobe.com/linux-proc-pid.html首先在/root目录下,启动一个进程# 启动一个简单的文件服务器,访问端口9999python -m http.server 9999查询这个进程的pid 号另外起一个终端shell,去查询刚才进程的pid号lsof -i:9999# 或ps -ef | grep python我的pid号是 1780# 进入进程的li.

2020-09-28 00:18:17 152

原创 Python bisect对有序序列进行插入值的操作

import bisect# 使用bisect前,需要先排序data = [4, 2, 9, 7]data.sort() # 排序print("sort", data)bisect.insort(data, 3)print("bisect.insort", data) # 插入并排序index = bisect.bisect(data, 0)print("bisect.bisect", data) # 不会插入,返回如果插入的话,插入的位置print("bisect.bisect -

2020-09-21 00:38:15 105

原创 Python 动态导入

Python 动态导入首先是项目目录结构其中 lib_a.py 和lib_b.py 代码如图# lib_a.pydef do_something(): print("this is lib_a.py") # lib_b.pydef do_something(): print("this is lib_a.py")main代码如下#!/usr/bin/env python# coding:utf8import importlibmodule_name =

2020-09-17 22:19:42 91

原创 小技巧 Python打印有格式的字典dict、json数据

小技巧 Python打印有格式的字典dict、json数据import jsonimport pprinthero_dict = { "heroId": "1", "name": "黑暗之女", "alias": "Annie", "title": "安妮", "roles": [], "isWeekFree": "0", "attack": "2", "defense": "3", "magic": "10", "di

2020-09-17 21:57:46 261

原创 Python Sched定时任务

sched 定时任务模块# coding:utf8import timeimport sched# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。# 一般情况就使用time.time, time.sleep即可s = sched.scheduler(time.time, time.sleep)# 获取时间戳的函数 2020-09-16 19:03:01def get_time(): return time.strftime("%Y-%m-%d .

2020-09-16 22:52:57 307

原创 Python PDB 调试

PDBpython内置的调试工具,Python Debugger支持断点、单步调试、支持流程控制、支持堆栈检查。支持源码嵌入,也可以事后进行调试。源码嵌入调试就是在源代码中嵌入pdb语法,进行打断点。这种import pdbdef add(a,b): c = a + b pdb.set_trace() return cprint(add(3,4))事后进行调试# a.pydef add(a,b): c = a + b return c

2020-09-15 22:52:35 76

huoxingche.py

火星车/火星漫游车 Python版编程题

2020-08-24

shell编写 批量测试防火墙端口开通 使用telnet

# telnet ip port 批量测试多个 ip|port 每次telnet 都要手动关闭 ctrl + ] 然后 ctrl + d 很麻烦 使用 (sleep 1;) | telnet $ip $port 就能1秒自动断开了

2020-03-20

Postman网络请求工具.

windows版 postman,解压后,app中 postman.exe启动即可。

2018-12-31

window版mysql +navicat

window版mysql 和 navicat for mysql,自带激活程序, 只能连接mysql数据库。

2019-01-03

Xshell+Xftp

Xshell+Xftp,绿色版,如果不能启动,请按照VC运行库。

2019-01-03

Python-RQ.md

python RQ 轻量级 消息队列 ,依赖redis 中文文档,markdown版 简介: RQ (Redis Queue)是一个简单的Python库,用于队列任务并在后台与工人(worker)一起处理它们。它由Redis提供支持,旨在降低入门门槛。它可以轻松集成到您的Web堆栈中。

2019-12-13

空空如也

空空如也

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

TA关注的人 TA的粉丝

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