- 博客(68)
- 收藏
- 关注

原创 【代码】LeetCode刷题Python版
之前用C刷LeetCode,也就刷了60道吧,结果后来也不刷了。。。现在主要用Python,刷一些题目熟悉熟悉基本语法,当然还有数据结构和算法。给定一个数组 strs,其中的数据都是字符串,给定两个字符串 str1,str2。如果这两个字符串都在 strs数组中,就返回它们之间的最小距离;如果其中任何一个不在里面,则返回 -1;如果两个字符串相等,则返回 0。例如:给定[‘’,’3’,’’,...
2019-02-05 22:14:47
1622
1
原创 【代码】数据类型和内存占用
import arrayimport jsonfrom sys import getsizeofbi = 1 << 100 * 10000bij = json.dumps(bi)print('int', getsizeof(bij), len(bij))bs = json.dumps(bin(bi))print('str', getsizeof(bs), len(bs))bx = json.dumps(hex(bi))print('hex', getsizeof(bx),
2021-07-17 11:49:41
960
原创 【代码】缓存击穿保护器singleflight
fs = dict()lock = Lock()def singleflight(key, func): with lock: if key in fs: wait = True f = fs[key] else: wait = False f = [None, Event()] if wait: f[1].wait() r =
2021-07-15 08:51:36
1035
原创 【笔记】bytes和bytearray还有memoryview
memoryview 只能应用于那些实现了 Buffer protocol 的对象,一旦创建了 view,之后可以按 bytes 或者 bytearray 的接口进行操作。
2021-05-22 19:08:13
1225
原创 【代码】tarfile的使用
为了避免额外的数据拷贝,想了半天怎么压缩到socket,而且发现了issueimport tarfilecopybufsize = 1024*10class Fo: def __init__(self): self.fileobj = open('myshm.tar', 'wb') def read(self,b): print('read') return self.fileobj.read(b) def tell(self):
2021-02-15 12:49:06
334
原创 【笔记】Python进程使用内存后不释放
使用python进行大量的文件IO读写,压缩,复制,数据操作过程中RES占用(0.2G-5G,Python的GC会频繁地malloc/free),发现RES内存不释放。排查代码后,没有发现内存泄露的情况(实际上有泄露,但是修改代码后,依然没有解决本文的问题),GC也是默认开启的。使用tracemalloc,objectgraph调试,Python对象的产生和释放并没有啥异常,我们使用的是大对象,应该也不会被Python缓存。考虑到代码中使用pandas.DataFrame,Google发现类似的问题
2021-02-14 18:41:45
3341
1
原创 【笔记】k8s通信相关
Kubernetes API Conceptsrest api高效检测变化,resourceVersion机制watch请求使用httpTransfer-Encoding: chunkedContent-Type: application/jsonbookmark事件(应该是防止某个客户端的resourceVersion落后太多,因为resourceVersion是全局唯一递增的)limit和continue机制,类似于关系型数据库MySQL的offset和limit,对于etcd也可
2021-01-24 12:05:34
1252
1
原创 【代码】flask对asyncio的支持
from time import sleepfrom flask import Flask, jsonify, has_request_context, copy_current_request_contextfrom functools import wrapsfrom concurrent.futures import Future, ThreadPoolExecutorimport asynciodef run_async(func): @wraps(func) def
2020-12-12 15:24:10
3966
1
原创 【代码】flask通过uds传输socket描述符实践
#!/usr/bin/python3# coding:utf-8import osimport socketfrom http import HTTPStatusimport structimport loggingfrom time import sleeppa, pb = socket.socketpair()pid = os.fork()from socketserver import BaseRequestHandler, _SocketWriterfrom werkzeu
2020-12-06 13:52:21
1202
1
原创 【代码】基于etcd的分布式锁(python版)
参考k8s的leader选举: k8s.io/client-go/tools/leaderelectionimport osimport socketimport timefrom threading import Threadimport etcd3class DistributedLock(object): def __init__(self, etcd, name, ttl, renew): self.etcd: etcd3.Etcd3Client = etc
2020-06-07 14:50:01
772
原创 【代码】基于mmap和fcntl的一写多读实现
消息发送方import mmaptry: import fcntlexcept ImportError: fcntl = Nonefrom time import sleep, timewith open('db', "w") as f: for i in range(1000): f.write(1 * 1024 * 1024 * '\0') f.close()end = "a".encode() * 200 * 1024 * 1024w
2020-05-31 07:49:15
315
原创 【代码】基于平衡多路查找树的文件分发系统的架构设计
class Node(object): def __init__(self, key=None, parent=None): self.key = key self.parent = parent self.children = list() def __repr__(self): return f"key={sel...
2020-05-03 21:53:34
622
原创 【代码】启示录 打造用户喜爱的产品
人员是指负责定义和开发产品的团队成员的角色和职责.流程是指探索, 开发富有创意的产品时, 反复应用的步骤和成功的实践经验.产品是指富有创意的产品具有的鲜明特性.
2020-03-07 10:13:12
304
原创 【代码】基于etcd的分布式队列(golang版)
python client 封装了lock,go client 锁实现基于go+etcd实现分布式锁
2020-02-15 18:13:08
1346
原创 【代码】基于etcd的分布式队列(python版)
构成组件:**watcher**(长连接,监听):1.监听业务操作etcd产生的事件,打毫秒戳来记录,写入central queue(保证对象的历史事件不丢失)2.写入central queue后,记录此次监听的mod revision**scheduler**(短连接,定时列举):1.从队列读出事件,分发给alive handler2.将dead handler未消费的事件写回central queue3.如果对象已绑定binding handler,则分发该对象的后续事件给bindi
2020-02-08 19:33:14
1696
原创 【笔记】高德技术2019合辑
系统性能提升利刃 缓存技术使用的实践与思考定期删除A. 方案一:全量数据扫描,依次遍历判断过期时间B. 方案二:存储绝对过期时间+BTree 索引d)单层定时轮算法这样一种算法结构,将时间和空间巧妙地结合在了一起。新增元素的时间复杂度为 O(1),直接插入待批量过期的 slot 的上一个位置即可;获取待删除元素列表时间复杂度也是O(1),就是待批量过期的 slot 位置。流行框架 Net...
2020-01-30 12:58:35
395
原创 【笔记】阿里巴巴Java开发手册1.4.0
15.【参考】设计的本质就是识别和表达系统难点,找到系统的变化点,并隔离变化点。说明:世间众多设计模式目的是相同的,即隔离系统变化点。
2020-01-28 12:05:43
375
原创 【笔记】UNIX环境高级编程
以存储器分配函数 m a l l o c为例。有多种方法可以进行存储器分配及与其相关的无用区收集操作 (最佳适应,首次适应等),并不存在对所有程序都最佳的一种技术。U N I X系统调用中处理存储器分配的是s b r k ( 2 ),它不是一个通用的存储器管理器。它增加或减少指定字节数的进程地址空间。如何管理该地址空间却取决于进程。存储器分配函数 m a l l o c ( 3 )实现一种特定类...
2020-01-05 14:23:12
327
原创 【笔记】云原生服务网格Istio
从技术发展的角度来看,我们可以把云原生理解为云计算所关注的重心从“资源”逐渐转向“应用”的必然结果。以“资源”为中心的上一代云计算技术关注物理设备如何虚拟化、池化、多租化,典型代表是计算、网络、存储三大基础设施的云化,以及相关硬件、操作系统、管控面等技术;而以“应用”为中心的云原生技术则关注应用如何更好地适应云环境,相对于传统应用通过迁移改造“上云”而言,云原生希望通过一系列的技术支撑,使...
2020-01-05 08:31:54
580
原创 【代码】多队列处理器
import timefrom concurrent.futures.thread import ThreadPoolExecutorfrom queue import Queue, Emptyfrom threading import Event, Lock, Condition, Threadclass QueueSet:“”"unique tasks =>q1=> p...
2019-12-22 15:42:30
168
原创 【代码】kubenetes集群部署
配置机器准备虚拟机vmware系统镜像为:CentOS-7-x86_64-DVD-1708CPU 2核磁盘 20G,内存 2G共三台,组成节点安装选择 Install CentOS 7软件选择 开发及生产工作站安装位置选择默认自动分区禁用Kdump打开网络配置网络查看ip地址:ip addr配置静态ip,保证节点之间互通:vim /etc/sysconfig/net...
2019-10-18 22:12:48
609
原创 【代码】Flask应用配置uwsgi+nginx
环境依赖cat /etc/issue Ubuntu 14.04.5 LTS(pyenv )python Python 3.6.4flask --version Flask 1.0.2uwsgi --version 2.0.17.1nginx -v nginx version: nginx/1.4.6 (Ubuntu)安装uwsgipip3 install uwsgi在项目目录下新建...
2019-03-29 11:17:17
332
原创 【代码】啃Django文档
Django 1.11.6 文档https://www.yiyibooks.cn/xx/Django_1.11.6/intro/tutorial02.html
2019-03-24 23:32:14
390
原创 【代码】优快云太蛋疼的解决办法
打开页面后需要查看更多:chrome安装tampermonkey插件,执行以下脚本// ==UserScript==// @name 优快云自动展开阅读更多及界面简化// @namespace http://tampermonkey.net/// @version 0.1// @description 如果有阅读更多按钮,将自动点击,去除一些无用元素/...
2019-03-23 21:55:05
243
原创 【代码】西安公交出行(实时)信息爬取(Selenium方式 / Ajax方式)
信息来自于西安公交出行信息服务网,selenium基本不到10秒,还是有点慢,等一下看看能不能直接postfrom selenium import webdriverfrom selenium.webdriver import ActionChainsfrom selenium.webdriver.common.keys import Keysimport timet1 = time....
2019-03-19 08:42:51
2150
原创 【前端】Jquery和Ajax练习
一键查询用户信息表query.html&amp;amp;amp;lt;!DOCTYPE html&amp;amp;amp;gt;&amp;amp;amp;lt;html lang=&amp;amp;quot;en&amp;amp;quot;&amp;amp;amp;gt;&amp;amp;amp;lt;head&amp;amp;amp;gt; &am
2019-03-18 10:04:08
403
原创 【代码】idea配置maven构建和管理
1.下载maven,配置环境使用IntelliJ IDEA 配置Maven(入门)2.idea的plugin中安装maven,junit相关插件3.配置maven依赖源解决maven 在intellij IDEA 下载依赖包速度慢的问题4.新建maven项目,groupid:com.test,artifactid:hello,如果依赖配置并下载好了,会自动创建src,点击Enable A...
2019-02-12 22:29:30
284
原创 【代码】Java小练习
处理注解请根据注解:@NotNull:检查该属性为非null@Range:检查整型介于min~max,或者检查字符串长度介于min~max@ZipCode:检查字符串是否全部由数字构成,且长度恰好为value实现对Java Bean的属性值检查。如果检查未通过,抛出异常。import java.lang.reflect.Field;public class Main { p...
2019-02-09 23:17:46
591
原创 【代码】数据结构与算法
快速排序def quick_sort(alist, first, last): if first&amp;gt;=last: return mid = alist[first] low = first high = last while low&amp;lt;high: while low&amp;lt;high and alist[high]&amp;g...
2019-02-08 15:15:23
305
原创 【笔记】网络协议
关于TCP四层模型:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。比如ping的包里就没有应用层协议,但是必须有链路层。对 TCP 协议来说,三次握手也好,重试也好,只要想发出去包,就要有 IP 层和 MAC 层,不然是发不出去的。精彩评论:我觉得可以用多重加密来举例,虽然也不是很贴切,两条地下党分支的领导要联系,每一层地下党都没有箱子的钥匙,他能做的就是给箱子加...
2019-01-18 15:51:44
269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人