#python

Struct vs. Class In Swift Explained – LearnAppMaking

Published at June 25, 2019 ·  1 min read

swift 同时有 struct 和 class 两种类型,在 Python 中只有 class,在 Golang 中只有 struct ,而swift 似乎是把两种语言一种类似的类型均融合了。相同之处是,struct 和 class 均可以定义属性和方法,均有 init 以进行状态的初始化。不同的是,class 可以继承,也可以定义 deinitialized 实现在 class 销毁时调用某个函数 Struct vs. Class In Swift Explained – LearnAppMaking...


Get back up and try again: retrying in Python

Published at April 17, 2019 ·  1 min read

在 error retry 设计中的一个技巧,对于后端微服务架构中,当一个被其他服务依赖度很高的服务崩溃时,其他服务相关的请求 failed 后该如何做呢?是不断的重试?如果一个很小的错误引发短暂的 failed,后续会引发其他相关依赖的服务短时间内的大量重试反而会加重该服务的负载压力。所以需要一个 exponential backoff 或者 randomized backoff 机制,将之后的重试以随机时间或指数关系后退,直到服务上线,避免雪崩效应 Get back up and try again: retrying in Python...


What are some (concrete) use-cases for metaclasses?

Published at April 17, 2019 ·  1 min read

非常详细和完整的举例说明 metaclass 的用例。当需要重构,更改新增某些 class 属性时,另外一个则是注册,获取继承 metaclass 的 class 。 What are some (concrete) use-cases for metaclasses?...


What are metaclasses in Python?

Published at April 17, 2019 ·  1 min read

python 中的 metaclass 究竟是什么。metaclass 是 class 的 class,class 是 metaclass 的一个实例。在 Python 中 type 则是一个常见 metaclass What are metaclasses in Python?...


Get back up and try again: retrying in Python

Published at April 17, 2019 ·  1 min read

装饰器的一个很好的用法,将 retry 的时间 randomize 以实现避免用尝试将服务器带来放大的压力 Get back up and try again: retrying in Python...


Socket Programming in Python (Guide) – Real Python

Published at April 16, 2019 ·  1 min read

在 Python 中进行 Socket 编程。服务端先行通过 socket(), bind(), listen(), accept() 建立一个 socket 监听链接,等待客户端的数据,客户端则通过 socket,connect 向服务端发起建立链接的请求,一旦链接建立,则服务端与客户端均可向双方发送接受数据,当客户端发送一个 close 的请求给服务端,服务端则关闭相应的链接。 Socket Programming in Python (Guide) – Real Python...


Memory management in Python

Published at April 14, 2019 ·  1 min read

Python 的内存管理模型,在 Python 中,一切都是 object (对象)。为了更加高效的管理内存,设计了三种不同的数据结构,Block, Pool, Arena. Block 为最小的数据结构,从 8 到 512 bytes,但必须是 8 的整数,被划分为 64 种不同的大小。Pool 则是大小相同的 Block 的集合,一般情况下 Pool 的大小等于 Memory page ,4 kb。将 Pool 限定在只包含固定大小的 Block 是为了方便 fragmentation (碎片)管理,当一个 block 被消除后,随即可以用一个新的 block 填充上来。Pool 是由 doubly linked list (双向链表)链接而成。Arena 是堆上分配的 256k 大小的内存块,为 64 个 pool 提供存储空间。Python 的 small object manager 很少将内存归还给操作系统,只有当Arena 中所有的 Pool 为空时,Arena 才会被释放,也只有短时间内有大量的临时 objects 时才会出现这种情况。所以,对于一些长期运行的 Python 进程,可能会因此占用大量未被释放的内存。 Memory management in Python...


Garbage collection in Python: things you need to know

Published at April 14, 2019 ·  1 min read

在 Python 中,每个 variable 都是一个指向一个对象的 reference(pointer),为了追踪 reference 每个 object 中都会有一个 reference count,当对象被 copy 或 delete 则相应的增减或减少其 count,当 count 值为 0 时,则表明已经没有 variable 指向这个 object 了,这时则需要 gc (garbage collector) 将 object 清除,进而回收其占用的内存。当然也可以通过 gc.disable() 禁用 gc ,gc.collect() 手动运行 gc。 Garbage collection in Python: things you need to know...



Python Metaclasses and Metaprogramming

Published at March 31, 2019 ·  1 min read

python metaclass 和 metaprogramming 的一些特点,主要是通过 metaclass 更改原有 class 中 new,init,prepare,call 的默认属性以达到对新 class 的更改 Python Metaclasses and Metaprogramming...


Essential Python Interview Questions

Published at March 30, 2019 ·  1 min read

由 Toptal 出的 python interview 问题,其中几个关键的分别为,1. 函数默认值的传值问题,默认值只在函数定义时执行过一次。2. lambda 闭包函数中的 late binding 问题,循环中只取最新的一个值,可以通过 generator,将 [] 换成 () ,解决。3. Python 继承类中的赋值问题,类的属性是以 dict 的形式保存,当子类中的属性不存在时,则向父类递归查询,直到查到或抛出 AttributeError 为止。当更改父类的属性时,若子类属性未做变更,查询子类相关属性时返回的未父类的属性值。4. [[]] * N 的操作并未生成包含 N 个 Item 的list,而是 N 个对应的引用,所以当改变某个 item 中的值时,改变的是其中所有 item 的值。 Essential Python Interview Questions...


How to Stand Out in a Python Coding Interview – Real Python

Published at March 30, 2019 ·  1 min read

python interview 中的几个技巧,计算要多用 generator 以节省内存及提高计算效率,以及多用 enumerate 代替 range 获取 item 的同时得到 index How to Stand Out in a Python Coding Interview – Real Python...



What is the difference between @staticmethod and @classmethod?

Published at March 29, 2019 ·  1 min read

staticmethod 和 classmethod 的用途及区别。staticmethod 更多的是将与 class 相关的 method 与其相绑定,防止污染整个模块的 namespace,同时也方便继承的类进行方法的重写。 classmethod 则需要显式的将 cls 作为第一个参数传进去。 What is the difference between @staticmethod and @classmethod?...




Abstract Base Classes in Python – dbader.org

Published at March 18, 2019 ·  1 min read

python 中抽象基类的应用,相比于一般的类有以下几点优势:1. Abstract Base Classes (ABCs) ensure that derived classes implement particular methods from the base class at instantiation time. 2. Using ABCs can help avoid bugs and make class hierarchies easier to maintain. Abstract Base Classes in Python – dbader.org...



Top Seven Apps Built With Python

Published at January 20, 2019 ·  1 min read

七家用Python作为开发语言的顶尖互联网公司,Spotify 是头一次听说用Python Top Seven Apps Built With Python...


Tags

abcs accept acid activemq affinity algorithm allocation android array async aws b+tree b-tree backoff benchmark best-practices bfs big-o bigquery bind bitcount blog break broker bubble buffer cache cap cert cgroups channel citus class classmethod cluster concurrency config consumer container cookie cors crawler cronjob csrf ctr data-science data-structure database datadog dataflow datascience decorator defer dfs distributed django dns docker double-shipping drf ecosia elastic-search enumerate epoll extra facebook-pixel financial-report flask flutter forward-proxy freelance frp garbage-collector gc gcp generator get gil git golang goroutine graphql ha handbook haproxy hash hash-slot hashring hashtable hpa http http-auth http-proxy http_proxy https index innodb instagram intergration interview ios javascript jinja2 jobboard jwt k8s kafka kibana kqueue label lambda layer4 layer7 lean levels.io linked-list linux list listen loadbalancer logs long-tail lru marketing master matplotlib memory merge metaclass metaprogramming metrics metrics-server microservices mitm model mq myisam mysql namespace nat netflix network-extension nginx nodejs nomad nosql npm oodesign openssl optimization orm pandas parallelism parkinglot patroni permission pg pipeline pixelme post postgresql postresql prefetch_related prerender process proxy proxycommand put pvm python queue rabbitmq rbac react-native rebase redis redis-cluster replication resource rest restfulapi retargeting retry revenue reverse-proxy rocketmq saas scaleable search-engine security select seo serverless service session set shadosocks shadowsocks shard sharding shell shopify sigint signal sigterm slack slave slow-query sniper sns socket socks5 source-code spa sql sqlalchemy sqs ssh ssl ssl-pinning stack startup state stateful stateless staticmethod string struct swift switch syscall system-design systemctl tcp tcp-proxy thread tmpreaper token traefik trustkit tunning type typeform udp variable vc vpn vuejs web web-development where yarn zset 削峰 宽索引 异步 窄索引 解耦 跨域 跳板机


Archives

2019 (137)
0001 (1)