自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【笔记】程序性能优化28个策略原则

根据2/8定律,寻找什么是必须优化的,什么是可以不优化的

2021-05-05 12:46:27 2969 1

原创 【代码】LeetCode刷题Python版

之前用C刷LeetCode,也就刷了60道吧,结果后来也不刷了。。。现在主要用Python,刷一些题目熟悉熟悉基本语法,当然还有数据结构和算法。给定一个数组 strs,其中的数据都是字符串,给定两个字符串 str1,str2。如果这两个字符串都在 strs数组中,就返回它们之间的最小距离;如果其中任何一个不在里面,则返回 -1;如果两个字符串相等,则返回 0。例如:给定[‘’,’3’,’’,...

2019-02-05 22:14:47 1473 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 895

原创 【代码】缓存击穿保护器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 945

原创 【笔记】bytes和bytearray还有memoryview

memoryview 只能应用于那些实现了 Buffer protocol 的对象,一旦创建了 view,之后可以按 bytes 或者 bytearray 的接口进行操作​。​

2021-05-22 19:08:13 1116

原创 【笔记】Celery调研

Celery是一个分布式任务调度系统。但是坑比较深

2021-03-10 20:16:24 270

原创 【代码】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 248

原创 【笔记】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 3095 1

原创 【代码】共享内存SharedMemory

python 3.8 提供了SharedMemory

2021-02-12 11:40:47 1296

原创 【笔记】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 1120 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 3806 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 1060 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 651

原创 【代码】基于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 250

原创 【笔记】designing distributed systems

2020-05-04 11:04:12 275

原创 【代码】基于平衡多路查找树的文件分发系统的架构设计

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 556

原创 【代码】启示录 打造用户喜爱的产品

人员是指负责定义和开发产品的团队成员的角色和职责.流程是指探索, 开发富有创意的产品时, 反复应用的步骤和成功的实践经验.产品是指富有创意的产品具有的鲜明特性.

2020-03-07 10:13:12 200

原创 【笔记】设计心理学 [美] 唐纳德·A·诺曼

绝大多数的日常知识存储于外部世界,而非人的头脑中。

2020-02-19 08:33:12 670

原创 【代码】基于etcd的分布式队列(golang版)

python client 封装了lock,go client 锁实现基于go+etcd实现分布式锁

2020-02-15 18:13:08 1234

原创 【代码】基于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 1520

原创 【笔记】Go 语言调度器与 Goroutine

Go 语言调度器与 Goroutine

2020-02-07 11:19:44 250

原创 【笔记】不一样的 双11 技术,阿里巴巴经济体云原生实践(下)

CSE:Serverless 在阿里巴巴 双11 场景的落地

2020-02-02 11:42:51 570

原创 【笔记】不一样的 双11 技术,阿里巴巴经济体云原生实践(上)

释放云原生价值才是拥抱 Kubernetes 的正确姿势

2020-01-31 09:24:42 1209

原创 【笔记】高德技术2019合辑

系统性能提升利刃 缓存技术使用的实践与思考定期删除A. 方案一:全量数据扫描,依次遍历判断过期时间B. 方案二:存储绝对过期时间+BTree 索引d)单层定时轮算法这样一种算法结构,将时间和空间巧妙地结合在了一起。新增元素的时间复杂度为 O(1),直接插入待批量过期的 slot 的上一个位置即可;获取待删除元素列表时间复杂度也是O(1),就是待批量过期的 slot 位置。流行框架 Net...

2020-01-30 12:58:35 343

原创 【笔记】重构:改善既有代码的设计

任何㆒个傻瓜都能写出计算器可以理解的代码。惟有写出㆟类容易理解的代码,才是优秀的程序员。

2020-01-28 12:39:24 348

原创 【笔记】阿里巴巴Java开发手册1.4.0

15.【参考】设计的本质就是识别和表达系统难点,找到系统的变化点,并隔离变化点。说明:世间众多设计模式目的是相同的,即隔离系统变化点。

2020-01-28 12:05:43 327

原创 【笔记】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 266

原创 【笔记】云原生服务网格Istio

从技术发展的角度来看,我们可以把云原生理解为云计算所关注的重心从“资源”逐渐转向“应用”的必然结果。以“资源”为中心的上一代云计算技术关注物理设备如何虚拟化、池化、多租化,典型代表是计算、网络、存储三大基础设施的云化,以及相关硬件、操作系统、管控面等技术;而以“应用”为中心的云原生技术则关注应用如何更好地适应云环境,相对于传统应用通过迁移改造“上云”而言,云原生希望通过一系列的技术支撑,使...

2020-01-05 08:31:54 478

原创 【代码】多队列处理器

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 136

原创 【代码】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 547

原创 【代码】Go语言程序设计

快速变量声明, 强类型 s:="sdd"

2019-04-25 09:17:07 675

原创 【代码】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 244

原创 【代码】啃Django文档

Django 1.11.6 文档https://www.yiyibooks.cn/xx/Django_1.11.6/intro/tutorial02.html

2019-03-24 23:32:14 290

原创 【代码】CSDN太蛋疼的解决办法

打开页面后需要查看更多:chrome安装tampermonkey插件,执行以下脚本// ==UserScript==// @name CSDN自动展开阅读更多及界面简化// @namespace http://tampermonkey.net/// @version 0.1// @description 如果有阅读更多按钮,将自动点击,去除一些无用元素/...

2019-03-23 21:55:05 194

原创 【代码】西安公交出行(实时)信息爬取(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 1971

原创 【前端】Jquery和Ajax练习

一键查询用户信息表query.html&amp;amp;amp;amp;lt;!DOCTYPE html&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;html lang=&amp;amp;amp;quot;en&amp;amp;amp;quot;&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;head&amp;amp;amp;amp;gt; &amp;am

2019-03-18 10:04:08 331

原创 【代码】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 246

原创 【代码】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 512

原创 【代码】数据结构与算法

快速排序def quick_sort(alist, first, last): if first&amp;amp;gt;=last: return mid = alist[first] low = first high = last while low&amp;amp;lt;high: while low&amp;amp;lt;high and alist[high]&amp;amp;g...

2019-02-08 15:15:23 260

原创 【笔记】网络协议

关于TCP四层模型:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。比如ping的包里就没有应用层协议,但是必须有链路层。对 TCP 协议来说,三次握手也好,重试也好,只要想发出去包,就要有 IP 层和 MAC 层,不然是发不出去的。精彩评论:我觉得可以用多重加密来举例,虽然也不是很贴切,两条地下党分支的领导要联系,每一层地下党都没有箱子的钥匙,他能做的就是给箱子加...

2019-01-18 15:51:44 228

空空如也

空空如也

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

TA关注的人

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