- 博客(56)
- 收藏
- 关注
原创 Mac配置sublime tex快捷键
[ { //删除当前行 "keys" : ["super+d"], "command" : "run_macro_file", "args" : { "file" : "res://Packages/Default/Delete Line.sublime-macro", } }, { //复制当前行 "keys": ["super+alt+down"], "
2021-04-18 15:50:03
275
原创 docker
文章目录1.镜像和容器2.构建flask项目3.导出requirements4.gunicorn配置文件5.编写Dockerfile6.构建image6.查看image文件7.删除image8.上传image文件到仓库9.拉取image文件10.运行容器11.查看本机容器12.停止运行的容器13.删除容器14.实际构建过程15.其他常用命令16.docker, kubernetes(k8s),rancher关系16.安装rancher1.镜像和容器Docker把应用程序及其依赖,打包在 image 文件
2021-03-23 15:33:30
595
原创 nginx
文章目录1.正向代理:代理客户端2.反向代理:代理服务端3.负载均衡4.静态资源服务器5.nginx常用命令6.nginx配置7.nginx原理 [详情点击](https://blog.csdn.net/qianlia/article/details/106496227)1.正向代理:代理客户端服务端不知道真实的用户是谁:比如科学上网服务器,国外搭建一个服务器,然后国内通过访问这台服务器来访问谷歌2.反向代理:代理服务端客户端不知道真实的服务端是谁:比如nginx,客户端访问nginx,nginx
2021-03-23 15:31:21
393
1
原创 grpc-python
文章目录1.什么是RPC2.RPC调用过程3.RPC的实现基础4.GRPC和restful对比5.proto buffers常用数据类型6.proto buffers特殊字符7.GRPC常用错误码8.Protocol Buffer的优点9.rpc框架为我们解决的问题10.使用案例11.手撕RPC1.什么是RPCRPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资
2021-03-23 15:30:31
1271
1
原创 场景设计
文章目录1.怎样保证redis队列不丢失2.分库分表平滑扩容3.千万并发分数排行榜4.抖音评论系统:首先分库分表5.延时队列(未付款半个小时的订单自动取消)6.众包系统7.秒杀超卖问题8.三分钟内得分统计,相同分数按答题所用时间少的高9.微信朋友圈10.微信附近的人11.短链接生成:分享短连接1.怎样保证redis队列不丢失本身我们业务对任务丢失是有容忍的异常处理或超时处理时再次将任务写进任务队列安全队列2.分库分表平滑扩容3.千万并发分数排行榜4.抖音评论系统:首先分库分表1.评论表:i
2021-03-23 15:27:40
264
原创 操作系统相关
文章目录1.进程,线程,协程概念2.进程与线程区别3.协程与线程区别4.进程,线程,协程4.python并发原子性6.并行,并发7.golang的协程--GPM模型(M:N)8.python的协程9.计算机基础10.mesi11.cas(Compare and Swap)12.linux创建进程的方式13.Gunicorn [详情查看](https://blog.csdn.net/dadajuan_plus/article/details/106571287)14.gevent [详情查看](https
2021-03-05 15:30:44
520
原创 python相关知识
文章目录1.python-GIL2.可变参数3.python2和python3的range(100)的区别4.私有属性和私有方法5.静态方法和类方法(self和cls)6.魔法方法和特殊成员属性7.python经典类和新式类的多继承调用顺序8.with9.列表推导,字典推导10.内置函数11.排序12.x="abc",y="def",z=["d","e","f"],分别求出x.join(y)和x.join(z)返回的结果13.举例说明异常模块中try except else finally的相关意义14.生
2021-03-05 15:30:01
921
原创 计算机网络相关
文章目录1.网络分层2.每层的协议3.TCP三次握手4.TCP四次挥手5.为什么客户端在TIME-WAIT阶段要等2MSL?6.为什么TCP链接需要三次握手,两次不可以么,为什么?7.TCP协议如何来保证传输的可靠性8.TCP与UDP的区别9.TCP的拥塞处理10.当你输入一个网址/点击一个链接,发生了什么 [详情点击](https://www.bilibili.com/video/BV1V54y1y7c4?p=1)11.长连接和短连接12.http状态码13.常见的请求头14.同源策略15.http m
2021-03-05 15:29:21
779
原创 shell编程
文章目录1.系统变量2.变量赋值3.特殊变量4.运算符5.条件判断6.流程控制7.read8.系统函数9.自定义函数10.常用命令11.cut12.sed13.awk14.sort15.使用Linux命令查询file1中空行所在的行号16.求和17.Shell脚本里如何检查一个文件是否存在?如果不存在该如何处理?18.用shell写一个脚本,对文本中无序的一列数字排序19.请用shell脚本写出查找当前文件夹(/home)下所有的文本文件内容中包含有字符”shen”的文件名称20.用sed修改test.tx
2021-03-05 15:27:30
442
原创 一文掌握kafka面试题
文章目录1.mq模式2.kafka架构3.kafka配置4.segment5.生产者策略6.生产者高可用方案7.消费者8.kafka效率高的原因9.Zookeeper在Kafka中的作用10.事务11.Kafka中是怎么体现消息顺序性的12.Kafka中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么?13.Kafka生产者客户端的整体结构是什么样子的?使用了几个线程来处理?分别是什么?14.消费组中的消费者个数如果超过topic的分区,那么就会有消费者消费不到数据”这句话是否正确?15.副本数
2021-03-05 15:26:27
904
原创 大数据思想
文章目录1.堆TOP N问题分布式TOP N问题快速外排序问题公共数据问题内存内TOP N问题位图法1.堆1)大根堆: 插入一个元素:新元素被加入到heap的末尾,然后更新树以恢复堆的次序。 取走堆顶元素:堆中每次都删除第0个数据。为了便于重建堆,实际的操作是将最后一个数据的值赋给根结点,然后再从根结点开始进行一次从上向下的调整。2)小根堆 同上TOP N问题如何在海量数据中找出重复最多一个。通过hash映射为小文件通过hash_map统计各个小文件重读最
2021-03-05 15:23:29
268
原创 一文掌握全部mysql面试题
1.mysql慢查询相关命令查看是否开启:show variables like '%slow_query%';查看慢查询判定时长:show variables like '%long_query_time%';设置慢查询判定时长:set long_query_time=5;2.视图(虚拟的表)创建:create view 视图名 as select 字段名 from 表名更新:alter view 视图名 as select 语句删除:drop view 视图名重命名:Rename
2020-12-28 17:10:25
1550
2
原创 一文掌握全部redis面试题
1.redis持久化机制1)实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中, 然后由子进程写入到临时文件中,持久化的过程结束了, 再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。2)RDB(默认):按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。 对应产生的数据文件为dump.rdb,通过配置文件中的save参数来定义快照的周期。 (快照可以是其所表示的数据的一个副本.
2020-12-08 17:10:45
814
原创 面试遇到的redis相关问题
1.redis持久化机制1)实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了, 再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。2)RDB(默认)(体积小,速度快,丢数据):按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。即Snapshot快照存储,对应产生的数据文件为dump.rdb, 通过配置文件中的save参数来定义快照的周期。(快照可
2020-11-10 16:21:41
494
原创 flask基础入门
####1.name1)作为启动文件:name=main2)作为导入模块:name=模块名####2.flask启动参数1)import_name:项目根目录,默认__name__2)static_url_path:访问静态资源的url前缀,默认是static3)static_folder:静态资源目录,默认是__name__/static/4)template_folder:模版文件目录,默认是__name__/template/####3.参数的配置有四种方式1)app.config.
2020-11-08 16:02:53
782
原创 golang make和new的区别
https://www.cnblogs.com/sunsky303/p/11819055.html
2020-07-03 14:32:22
147
原创 使用redis锁的正确姿势
redis锁的使用方式一般有三种,INCR,SETNX,SET。1.INCRINCR命令会将key的值加一,如果key值不存在,则key值会被初始化为0,然后执行INCR操作。127.0.0.1:6379> GET LOCK_1234(nil)127.0.0.1:6379> INCR LOCK_1234(integer) 1127.0.0.1:6379> GET LOCK_1234"1"利用INCR命令,结合程序构建锁,具体使用逻辑如下:1)创建程序中需要加
2020-05-19 16:20:49
854
原创 一文读懂redis五大数据类型的底层实现
redis有五大数据类型,字符串对象(string)、列表对象(list)、哈希对象(hash)、集合(set)对象和有序集合对象(zset),redis构建了一个对象系统,每个数据类型都是一个对象,由于redis是key,value的形式存储的,所以每新建一个数据,系统就会新建两个对象,一个是key对象,一个是value对象,每个对象有五个属性,如下:typedef struct redisObject{ //类型 unsigned type:4; //编码
2020-05-11 21:00:38
945
原创 python-concurrent.futures实现并发
python由于全局解释器锁GIL的存在导致对多线程的效率有不小影响,python为了提高并发提供了两个标准库concurrent.futures和multiprocessing,两者使用方式非常相似,都提拱了线程池和进程池操作。说到线程和进程,就不得不提下协程。我理解的是协程和多线程属于并发操作,而多进程则属于并行操作。并发操作利用的是cpu进行任务的切换,同一时间还是只有一个任务在执行,而协程...
2020-04-29 20:45:21
405
原创 RPC框架Thrift-python服务端运行模式源码解析
1.支持协议TBinaryProtocol-一种简单的二进制格式,将数值编码为二进制,而不是转换为文本。 TCompactProtocol-高效,密集的数据编码(请参见下面的详细信息)。 TDenseProtocol-类似于TCompactProtocol,但是从传输的内容中剥离元信息,并将其添加回接收方。TDenseProtocol仍处于试验阶段,在Java实现中尚不可用。 TJSON...
2020-04-26 18:32:23
627
原创 RPC框架Thrift-python作为服务端支持的传输方式
TSocket-使用阻塞套接字I/O进行传输。 TFramedTransport-以帧为单位发送数据,其中每个帧前面都有一个长度。使用非阻塞服务器时,此传输是必需的。 TFileTransport-此传输将写入文件。尽管此传输不包含在Java实现中,但实现起来应该足够简单。 TMemoryTransport-使用内存进行I / O。Java实现在内部使用一个简单的ByteArrayOutpu...
2020-04-26 18:28:34
683
原创 RPC框架Thrift-python作为服务端支持的传输协议
TBinaryProtocol-一种简单的二进制格式,将数值编码为二进制,而不是转换为文本。 TCompactProtocol-高效,密集的数据编码(请参见下面的详细信息)。 TDenseProtocol-类似于TCompactProtocol,但是从传输的内容中剥离元信息,并将其添加回接收方。TDenseProtocol仍处于试验阶段,在Java实现中尚不可用。 TJSONProtocol...
2020-04-26 18:27:23
636
原创 thrift使用--python版本
RPC(Remote Procedure Call)即远程过程调用,目前主流的rpc框架对比如下:功能 Hessian Montan rpcx gRPC Thrift Dubbo Dubbox Spring Cloud 开发语言 跨语言 Java Go 跨语言 跨语言 Java Jav...
2020-04-24 17:56:51
1178
2
原创 python-id转随机字符串库-Hashids
当你想把你url中的id变成随机字符串,避免被爬虫时你会用到这个工具,Hashids可以将任意字符转换成随机字符串,并能够反编码回来,talk is cheap,show code。1.安装pip install hashidsmac用户请使用如下命令安装:pip install hashids --user2.初始化import hashidshasher = h...
2020-04-22 12:01:18
357
转载 gRPC+python+Protobuf简明教程
这老哥写的贼6https://www.jianshu.com/p/b723053a86a6https://www.jianshu.com/p/9c947d98e192
2020-04-15 20:36:20
808
原创 redis-HyperLogLog基数统计
redis在2.8.9 版本添加了 HyperLogLog 数据结构,用于统计非重复数据个数,这个功能利用redis的set也能实现,但是为什么还要提供HyperLogLog呢?原因在于如果有时我们只需要计算基数个数,不要存储具体的数据时,数据量很大,如果利用set会浪费很大的内存消耗,但是HyperLogLog的有点时,他所需要的内存空间不会随着数据量的增大而增大,当统计元素很少时,HyperL...
2020-04-14 20:43:29
223
原创 一文读懂排序算法-python实现
talk is cheap, showcodedef bubble_sort(arr): ''' 冒泡排序 平均时间复杂度:O(n^2) 最好情况:O(n) 最坏情况:O(n^2) 空间复杂度:O(1) n次遍历,每次找出最大放后边 ''' len_arr = len(arr) if len_arr <...
2020-04-14 19:35:53
156
原创 redis数据类型及其应用场景
1.stringRedis的字符串是动态字符串(SDS),是可以修改的字符串,它的内部表示就是一个字符数组,它的内部结构是一个带长度信息的字节数组,可以包含任何数据。使用场景:string类型使用场景2.hash相当于python中的dict。使用场景:适合存储json对象等。3.list详单于python中的list。使用场景:消息队列4.set相当于py...
2020-04-14 19:15:45
238
原创 缓存穿透、缓存雪崩、缓存击穿、缓存预热
实际工作中虽然没有遇到过,但是这种事情还是不要遇到的好,所以提前加好防护策略测试王道。1.缓存穿透用户查询的数据,数据库中没有,那缓存中也不会有,用户就会绕过缓存直接查询底层数据库,如果用户大量进行这种操作,比如黑客攻击,就会造成底层数据库崩溃,这种现象成为缓存穿透。解决方案:1)对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。...
2020-04-14 17:32:22
164
原创 python实现设计模式-工厂模式
class Person(object): def __init__(self, name, age): self.name = name self.age = age def get_name(self): return self.name def get_age(self): return self....
2020-04-07 17:22:20
131
转载 国内软件源地址
https://blog.csdn.net/u010250863/article/details/70161188pip指定源下载方法:pip install tensorflow==1.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
2020-02-01 13:08:32
3328
原创 mac系统vue项目构建-01
有时候想自己搭个web应用玩玩,没写过前端,今天研究研究vue,记录下学习过程1.下载vue下载vue需要用nmp下载,npm最简单的安装是安装node.js,因为安装node.js会自动安装npm。所以先安装node.js.1)安装node.jsbrew install node由于网络限制,brew很卡,这时候又需要替换brew的源替换brew.gitcd "$...
2019-12-18 23:00:57
162
原创 初识golang-数据类型_map
查看上一篇接口类型请点我golang中的map就相当于python中的dict,key:value形式,无序,key唯一。1.map的创建和增删改查废话少说,上例子:package mainimport "fmt"func main() { people := make(map[string]string) people["name"] = "houyuming"...
2019-12-12 16:47:23
298
1
原创 python调试神器pdb
1.简介对于开发者来说,一个好用的debug工具可以快速准确的定位程序问题,python的dubug方式大概可以归为3类: 1).print,log大法:初级选手,输出直观但不够灵活 2).ide debug:功能强大,但服务器命令行上调试不行 3).pbd,PySnooper:高级选手,功能强大而且灵活(PySnooper使用虽然简单,但输出信息过于冗余)本...
2019-12-12 12:12:41
298
原创 初识golang-数据类型_接口
查看上一篇切片类型请点我1.什么是接口接口是一组仅包含方法名,参数,返回值的未具体实现的方法的集合。是面向对象语言中用来限制类行为的,它只会定义类的方法,但不会具体定义这个方法,实现接口的类必须实现接口中的方法。废话少说,举个例子:package mainimport "fmt"type Animaler interface { Eat(f string) Speak(l...
2019-12-11 18:21:02
336
原创 shell中的#%*处理字符用法
shell提供了简单强大字符串处理方式,有时候需要对path进行处理,通过#%*的搭配使用,可以方便快捷的得到结果。废话少说,举例子。#!/usr/bin/env bashDIR="/dir1/dir2/dir3/abc.def.txt"echo "DIR: $DIR"#删除最左边/及其左边所有字符PROCESS_NAME=${DIR#*/}echo "#*/: $PROCESS...
2019-12-10 17:13:23
3518
原创 python抽象基类abc模块
为什么要有抽象类,This is a good question。抽象类的作用可以在不同的模块相互调用时使用,可以用最精简的方式展示出代码之间的逻辑关系,让模块之间的依赖关系更清晰。可以让开发者不用考虑过多的实现细节,只关注当前抽象类的放方法和描述。方便多人合作开发,让代码可读性更高。python中的抽象基类封装在abc模块中,使用six包可以兼容python2和python3,使用方法如...
2019-12-06 16:43:57
370
原创 linux根据进程号查看项目路径
有时候启动程序时可能没有带路径启动,比如启动python脚本python main.py这时候我们想知道这是哪个程序,可以通过进程号反查项目路径,方式有两种,命令行直接输入如下命令:方式一:pwdx 进程号方式二:ls -l /proc/进程号/cwd...
2019-12-05 20:44:24
1507
转载 Mac系统解除Beyond Compare4 30天试用限制
https://blog.csdn.net/PCCEO1/article/details/88658407
2019-12-05 20:36:57
1020
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人