JX's Blog

happy coding ~~

【置顶】《微服务架构核心20讲》笔记

什么是微服务架构 Martin Fowler认为微服务是一种架构风格: 将单体应⽤用划分成一组小的服务,服务之间相互协作,实现业务功能 每个服务运行在独⽴立的进程中 服务间采用轻量量级的通信机制协作(通常是HTTP/JSON) 每个服务围绕业务能力进行构建(比如用户服务、登录服务、商品服务等等) 每个服务能够通过自动化机制独立地部署 很少有集中式的服务管理理,每...

限流之令牌桶算法

# coding=utf8 import time try: import threading as _threading except ImportError: import dummy_threading as _threading class Bucket(object): ''' traffic flow control with token ...

Java入门 —— Hello world

安装JDK JDK,Java Development Kit,是 Java 的开发工具包,主要包含了 javac : javac 程序是 Java 编译器,它将Java 源文件 *.java` 编译成字节码*.class` 文件 java:java程序启动Java虚拟机,虚拟机执行编译器放在class文件中的字节码 等开发工具 编写 Hel...

gunicorn网络模型

prefork guncorn 是 python 常用的 wsgi server 之一, 其并发模型为 prefork。 PPC (Process Per Connection)模式中,当连接进来时才 fork 新进程来处理连接请求,由于 fork 进程代价高,用户访问时可能感觉比较慢,prefork 模式的出现就是为了解决这个问题。 顾名思义,prefork 就是提前创建进程(pre...

学习 Go 语言

学习 Go 语言 摘自《左耳听风》程序员练级攻略(2018):编程语言 首推 Go by Example 作为你的入门教程。 然后,Go 101 也是一个很不错的在线电子书。 如果你想看纸书的话,The Go Programming Language 一书在豆瓣上有 9.2 分。 另外,Go 语言官方的 Effective Go 是必读的,这篇文章告诉你如何更好地使用 Go 语言,...

程序员练级攻略(2018)

耗子哥带你打怪升级


Vue入门:路由管理vue-router(概念篇)

什么是路由router? 在网站开发中,路由通常是指随着浏览器URL的变化,网页UI也跟着变化这个过程。想象一下,当我们点击一个链接,浏览器URL从 https://website.com变成https://website.com/articles,网页刷新呈现出新的内容,这个过程就是路由。可以用这个view = route(url)函数表示路由。 在之前的网站开发中,每次URL变化时,...

Vue入门:构建工具webpack(概念篇)

webpack官方文档概念摘要 webpack是什么 WebPack是一个模块打包工具。 为什么需要webpack 现今的很多网页都是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包。为了简化开发的复杂度,前端社区涌现出了很多好的实践方法 模块化,让我们可以把复杂的程序细化为小的模块; 类似于TypeScript这种在JavaScript基础上拓...

Vue入门:状态管理Vuex(概念篇)

vuex官方文档笔记摘要 Vuex是什么? Vuex是一个专门为Vue.js应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态。 为什么需要Vuex? 一个vue组件一般包含state、view、actions三个部分 状态state:驱动应用的数据源 视图view:将state映射到视图,view=f(state) 行为actions:响应在vie...

Vue入门:vuejs入门

组件 简言之,现代前端开发就是组件开发,一个组件一般包含state、view、actions三个部分 状态state:驱动应用的数据源 视图view:将state映射到视图,视图是状态的纯函数,view=f(state) 行为actions:响应在view上的用户输入导致的state变化 组件之间可以嵌套,最后组成一棵组件树 例如,一个网页应用可能会有页头、侧边栏、内...

Reids —— 有序集合的实现原理

Redis有序集合的底层实现有两种方式: 压缩列表 跳跃表。 如果一个有序集合包含的元素较多,或者有序集合的元素成员是比较长的字符串时,Redis就会使用跳跃表来作为有序集合的底层实现。今天,我们就来看下有序集合健的跳跃表实现。 跳跃表 跳跃表(skiplist)是一种随机化的数据, 由 William Pugh 在论文《Skip lists: a probabilist...

数据库笔记(2) —— 事务隔离级别

当多个事务同时进行时,通过设置隔离级别来处理脏读、不可重复读、幻读现象。 事务指定一个隔离级别,该隔离级别定义一个事务必须与由其他事务进行的资源或数据更改相隔离的程度。 在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的修改,哪些是在事务内和事务间可见的,哪些是不可见的。较低级别的隔离通常可以执行更高的并发,系统的开销也更低。 未提交读(Read uncommitte...

数据库笔记(3) —— PostgreSQL事务隔离

PostgreSQL事务隔离级别 PostgreSQL实现了一下几种事务隔离级别: PG除了考虑到脏读、不可重复读、幻读,还考虑到了serialization anomaly: The result of successfully committing a group of transactions is inconsistent with all possible orde...

数据库笔记(1) —— 脏读、不可重复读、幻读

数据库里面对数据进行并发处理的时候,如果不进行控制可能出现的三个现象: 脏读、不可重复读、幻读 脏读 Dirty Read 脏读,是指一个事务读取另外一个事务还没有提交的数据叫脏读。 具体来说就是在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。 不可重复读 Nonrepeatable Read ...

werkzeug —— URL Routing

werkzeug 路由系统

当wsgi应用涉及到多URL或者多视图函数时,我们就需要一个分发器。分发器的作用就是根据请求的url路径PATH_INFO找到相对应的视图函数,并返回一个响应。一个简单的做法就是在PATH_INFO上使用正则表达式,然后找到注册的回调函数。werkzeug就是这么做的,不过提供更强大的功能。 下面就是一个使用werkzeug.routing简单的例子。 from werkzeug.rou...

werkzeug —— Context Locals

werkzeug 本地环境

Python标准库中有一个叫做 thread locals的东西,一个local对象就是一个线程安全和线程隔离的全局变量。也就是说,不管你是往local对象写数据还是读数据,该local对象都会获取当前程序所处的线程,并提取该线程相应的数据。然而,这种做法有一些缺陷。除了多线程,我们还会使用其它的并发方式。一种很流行的做法就是使用greenlets(协程)。 werkzeug.local的...

Socket编程(4)—— 一个简易的 wsgi 服务器(2)

上文我们介绍了WSGI协议,本文,我们则亲自造一轮字:实现一个wsgi server。我们在模块simple_wsgi实现全部功能,主要包括: WSGIServer类:实现wigs server功能 make_server函数:一个wsgi server工厂函数,用于创建 WSGIServer实例。 WSGIServer WSGIServer类包括一下属性和方法: ...

【译】async/await 到底是怎么工作的呢(3)?

How the heck does async/await work in Python 3.5?

前篇:【译】async/await 到底是怎么工作的呢? 中篇:【译】async/await 到底是怎么工作的呢(2)? 把 async/await 当作异步编程API接口 直到看了David Beazley’s Python Brasil 2015 keynote这个演讲,我才深入思考这个问题。在这个演讲中,David指出,async/await 本质上就是一个异步编程接口。Davi...

Socket编程(3)—— 一个简易的 wsgi 服务器(1)

WSGI 协议

web服务器需要接收HTTP请求、解析HTTP请求以及发送HTTP响应,处理这些底层操作是十分耗时的,且容易出错。为了提高web服务的开发,人们定义了一个接口——WSGI (Web Server Gateway Interfere)——将web服务器分成了两部分: web 服务器:也称为wsgi server web 应用:也称为wsgi application web服务器...

【译】async/await 到底是怎么工作的呢(2)?

How the heck does async/await work in Python 3.5?

前篇:【译】async/await 到底是怎么工作的呢? async/await` 是怎样工作的 Python 3.4 怎样实现async/await相同的效果呢 由于Python 3.3 提供的生成器特性以及asyncio提供的事件循环, Python 3.4 有足够的能力来支持(以并发编程的形式 concurrent programming)异步编程。异步编程是说代码块的运行顺序我...