自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

西格玛的博客

我可是要成为海贼王一样的男人

  • 博客(46)
  • 资源 (3)
  • 收藏
  • 关注

原创 golang 之bytes.Buffer 写操作扩容解读

golang(go1.12.9) 的标准包bytes.Buffer,是一个简单的字节(byte) 缓冲buffer,定义了一个默认的最小容量smallBufferSize = 64,实现了byte的读,写,清空等操作,其中写操作稍微麻烦,需要考虑扩容的情形,下面主要分析一下buffer 扩容首先,看一下buffer结构体的定义type Buffer struct { buf [...

2019-10-05 10:20:49 2473

原创 Redis 压缩列表ziplist 解读(续 级联连续更新)

Redis 压缩列表ziplist 解读 级联更新1. 为什么会发生级联更新由于entry中的prevlen字段是指示前一个entry的长度,有两种取值,1byte或者5byte.当一个entry前边的entry的长度发生变化时,会导致需要更新entry 的prevlen字段的size 来存储前一个entry的长度,如果有连续多个entry的容量接近254时,就会发生需要连续增加多个entr...

2019-09-14 16:35:58 1190

原创 Redis 压缩列表ziplist 解读

Redis 压缩列表ziplist 解读1.redis为什么使用ziplist redis是一种基于内存的数据库,内存是一种稀缺资源,需要寻找高效的数据结构来减少内存的使用。 redis中存储小对象时,LISTs, HASHes, and ZSETs 采用了ziplist数据结构,当超过一定大小后,变为linkedlist数据结构如上图1. LIST元素个数比较少,而且每个元素的长...

2019-09-13 16:15:26 1636 2

原创 Python源码之旅-可重入锁RLock

Python 的可重入锁(RLock)的实现在threading.py文件中,部分源码摘录如下:1. 源码注释版本def RLock(*args, **kwargs): """ 函数工厂返回一个可重入锁(R锁)对象 一个可重入锁必须由获取它的线程释放。一旦一个线程获取一个可重入锁, 同一个线程可以无阻塞的再次获取他。线程每次获取该锁后必须释放他。...

2018-04-29 18:37:36 726 1

翻译 linux 系统编程手册 读书笔记之-----IO模式的选择

技术对比select()与poll()基本的优势是更轻便。缺点是:随着文件描述符的数量增加[成百上千级别],性能下降。 epoll()优势在于在高并发的情形下,性能显著的优于select()与poll() 总之:select()与poll()更轻便,epoll()的性能更好。水平触发与边沿触发通知水平触发通知(LT):当文件描述符就绪时[可以无阻塞的实现IO系统调用] 边沿触...

2018-01-23 17:11:39 213

原创 flask-cache 之缓存cache实现原理

前言flask-cache的版本为:0.13.1。具体的使用例程见官方网站 flask-cache主要实现了两种功能,一种是对模板的缓存,一种是对视图函/其他函数的缓存。其中对模板缓存的原理分析请戳这里。下边我们主要写对函数的缓存原理。源码之旅flask-cache 对函数的缓存有两种方式,通俗的讲可以分为: 记忆参数型缓存:由@cached装饰器实现 无记忆参数型缓存:由@

2017-12-17 18:45:01 6673

原创 flask-cache 缓存Jinja2模板之源码解读

注:缓存jinja2模板的代码详见:flask-cache缓存的示例代码1.缓存模板的关键代码:模板cached_blueprint_app/templates/zen.html 定义缓存参数:{% cache timeout %} #timeout是缓存超期时间{% endcache %} # 缓存区域结束标记文件cached_blueprint_app/app.py中实例一

2017-12-02 12:03:22 3633

翻译 如何自定义flask的响应类(customizing-the-flask-response-class)

Response是Flask中响应客户端请求的类,然而在Flask应用中很少直接使用Response。Flask使用Response作为响应数据的容器,在响应客户端的请求时会添加一些创建HTTP响应所需要的附加信息。flask的响应数据是由应用的路由函数返回给客户端。然而,Flask也为应用提供了一种选择,来使开发者自己定义一些response类。本文将利用这一点来展示如何简化你应用的代码。Flas

2017-11-08 15:37:23 4577

翻译 Python中partial函数的工作原理

partial的代码示例:>>> sum = lambda x, y : x + y>>> sum(1, 2)3>>> incr = lambda y : sum(1, y)>>> incr(2)3>>> def sum2(x, y): return x + y>>> incr2 = functools.partial(sum2, 1)>>> incr2(4)5大体上来讲,

2017-10-28 15:30:23 773

翻译 Flask中上下文栈(context stacks)的目的?

[回答者Mark Hildreth]Multiple Apps 多个应用Flask可以有多个应用,如果没有了解到这一点,应用上下文的作用确实会令人迷惑。考虑一下这种场景:你想在一个WSGI python解释器运行多个Flask应用。这里我们讲的不是蓝本,而是完全不同的Flask应用。 一个应用分发(Application Dispatching)的例子from werkzeu...

2017-10-21 11:45:07 3734

翻译 Flask中的蓝图

原文:https://stackoverflow.com/questions/24420857/what-are-flask-blueprints-exactly蓝图的汉语意思: 用感光后变成蓝色或其他颜色的感光纸制成的图纸。供工程设计施工或编绘地图等用。(来自 http://cidian.xpcha.com/28d668gajnz.html) 显然,人们可以根据蓝图来建造大厦,桥梁等工程建筑

2017-10-14 11:03:00 3250

原创 Werkzeug 之数据结构解读不可变类

不可变对象,即immutable object。顾名思义我们不可以修改这个对象的数据。 在Werkzeug中request 对象是不可变的,而reponse 对象是可变的。 在Werkzeug.datastructures定义的是该框架的数据结构类型。其中就实现了不可变类。 [datastructures结构图] 可以看到,文件中实现了不可变的Dict和List,其中不可变的属性控制是通

2017-09-24 16:49:03 583

翻译 WSGI Helper

WSGI Helper WSGI 帮助器为了方便在WSGI层的一些操作,WSGI提供了以下的一些类和函数。这个模块的所有功能都可以 应用到高层次抽象的Request/Response 类. 所有的帮助类和函数都位于模块werkzeug.wsgi中。(werkzeug.wsgi 模块的代码结构图) Iterator / Stream Helpers 迭代器/流 帮助器以下的类和函数有助于简化WS

2017-09-23 15:27:01 267

原创 第五章 创建高性能的索引

索引是存储引擎用于快速找到记录的一种数据结构。对于良好的性能非常关键。 是对查询性能优化最有效的手段了。5.1 索引基础MYSQL现在索引中找到对应的值,然后根据匹配的索引记录找到对应的数据行。5.1.1 索引的类型索引是在存储引擎层实现的。 B-Tree索引 值按顺序存储,每个叶子页到根的距离相同。适合超找范围数据。 不需要全表扫描,而从索引的根节点开始进行搜索。

2017-09-21 17:19:24 247

翻译 Werkzeug 之URL 路由

Werkzeug 之URL 路由原文链接http://werkzeug.pocoo.org/docs/0.12/routing/ 当需要组合控制器和视图函数时,我们需要一个调度器来实现。一个简单的实现方式是采用正则表达式匹测试路由信息,调用回调函数并返回结果。 Werkzeug 提供了一个类似Route[1]的强大功能.下文提到的所有对象都是从 werkzeug.routing 导入而不是

2017-09-16 18:48:42 1300

原创 Flask之run函数背后的秘密

一个最简单的基于Flask的web应用:from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello World!'if __name__ == '__main__': app.run()下面分析一下运行run()函数背后的细节: Flask 的run方法如

2017-09-09 14:09:35 5010

翻译 werkzeug的Request / Response 对象

request 和response 对象是对WSGI环境或WSGI应用的返回值的包装,其本质也是一种WSGI应用。工作原理WSGI应用必须传入两个参数:WSGI环境和WSGI启动响应(start_response)函数.start_response函数常用于服务器响应客户端过程的起始阶段。Request类对程序环境进行封装,以便客户端更好地访问request变量(表格数据,request头文件等)。

2017-09-08 16:31:36 1126

原创 《高性能MYSQL》第一章 MySQL架构与历史

第一章 MySQL架构与历史

2017-09-05 17:16:55 405

原创 第七章 事务

分类扁平事务 最简单的一种,使用最频繁 带有保存点的扁平事务 回滚到特定的保存点,保存点是易失的。系统崩溃时,保存点会消失。 链事务 嵌套事务: MYSQL不支持嵌套事务,无法满足并行事务需求。事务的实现隔离性由锁来实现。 Redo log —保证事务的原子性和持久性 Undo log 保证事务的一致性 undo不是redo的逆过程 redo通常是物理日志,记录页的物理修改操作

2017-09-04 17:30:36 280

原创 第5章 索引与算法,第6章 锁

第5章 索引与算法5.1 InnoDB存储引擎索引概述索引类型: • B+树索引 • 全文索引 • 哈希索引 B+树索引时最为常用和最为有效的索引, B+树索引并不能查找一个给定键值的具体行 查找流程: 查找数据所在的页->将页读入内存->在内存中查找数据 B+树的层数一般是2-4层,查找键值只要2-4次IO操作,查询时间只需0.02~0.04秒 5.4.1

2017-09-04 17:27:14 297

原创 第4章 表

4.1 索引组织表索引组织表 :表根据主键顺序组织存放 4.2 InnoDB逻辑存储结构数据被逻辑的放在一个空间中【表空间】 屏幕剪辑的捕获时间: 2017/8/21 15:214.2.1 表空间逻辑结构的最高层4.2.4 页磁盘管理的最小单位 MySQL官方手册中定义的65535长度是指所有VARCHAR列的长度总和 屏幕剪辑的捕获时间: 2017/8/22 13:484.6.3 约束和

2017-08-31 17:16:58 267

翻译 什么是元类,怎么运用元类?

翻译自:https://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python什么是元类,怎么运用元类?类是对象 在理解元类之前,必须掌握Python中的类,Python中的类是非常特别的思想,其借鉴自Smalltalk 语言。在许多语言中,类是一段描述如何产生对象的代码。Python也是如此.>>> class Obj

2017-08-30 16:06:47 1675

原创 第2章 InnoDB存储引擎

后台线程负责刷新内存池中的数据 多线程模型 后代线程: 1.Master Thread 核心线程 缓冲池数据异步刷新到磁盘 2、IO Thread IO请求回调 3.Purge Thread +———————-+——-+ | Variable_name | Value | +———————-+——-+ | innodb_purge_threads | 4

2017-08-28 16:31:54 298

转载 缓存更新的套路

转载自 http://coolshell.cn/articles/17416.html#comments

2017-08-25 14:50:54 262

转载 mysql 查看数据库中所有表的记录数

mysql使用select count(*) from table_name可以查询某个表的总记录数。想快速的知道数据库中所有表的记录数信息怎么办?如果使用mysql的版本在5.0及以上,可以通过查询information_schema库中的tables表来获取,该表中使用table_rows记录表的行数信息。例如查看库testdb中所有表的记录数:use information_schema

2017-04-26 10:48:20 3462

转载 The internals of Python string interning(关于字符串is比较两个字符串对象的深度解析)

转载自:http://guilload.com/python-string-interning/

2017-02-22 15:25:34 253

原创 Web Scraping with Python-Chapter1读书笔记

前记:正式开始我的Python爬虫之旅Chapter 1. Your First Web Scraper1.库函数的安装本章涉及两个库函数的使用,分别是urllib与BeautifulSoup 4 library(通常也被称为BS4)。前者是Python的标准库,BS4需要自行安装。WIN10系统的安装方法:执行命令pip install beautifulsoup4。过程如下

2017-01-02 11:51:09 241

转载 注解系列知识总结(一)

声明: 本文由金丝燕网原创编译,转载请保留链接: 注解系列知识总结(一)(http://swiftlet.net/archives/1906)注解系列知识总结(一)栏目:Java基础 作者:admin 日期:2016-07-22 评论:1点击: 3,439 次第一节:注解的作用Annotation(注解)是JDK5.0及以后版本引入的。它

2016-11-27 22:27:17 259

翻译 web service 基本原理(思维导图)

以下内容参考https://www.tutorialspoint.com/webservices/index.htm进行整理

2016-11-19 18:37:06 848

原创 第39条 : 必要时进行保护性拷贝

若为了实现表示不可变的时间周期,采用如下定义class的方法:public class Period { private final Date start; private final Date end; public Period(Date start, Date end){ if (start.compareTo(end) >0) { throw new Illeg

2016-10-29 16:10:37 278

原创 MySql无法启动解决办法

启动MySql数据库是提示“ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)”。解决办法:控制面板中查找“”服务“”选项。找到Mysql,启动该项服务

2016-10-18 22:51:48 3428

原创 第4章 构筑测试体系 _第5章 重构列表

2016-09-24 10:04:27 235

原创 第一章 重构,第一个案例

1.1 起点背景:影片出租商店应用。涉及三个类:电影,出租,顾客。源码链接:https://github.com/sigma65535/Refactoring_improving_the_design_of_existing_code/tree/master/Chapter1UML图:问题所在:在Customer中statement()这个函数非常长,大约有50

2016-09-21 22:41:03 439

原创 第七章 在对象之间搬移特性

7.1搬移函数l  搬移动机:1.一个类有太多行为。2.一个类与另一个类有太多合作而形成高耦合。l  源函数处理方式:删除或者,当一个委托函数留下来范例class Account... privateAccountType _type; privateint _daysOverdrawn; doubleoverdraftChar

2016-09-20 07:24:31 239

原创 第九章简化条件表达式

/*分解条件表达式*/if (date.before (SUMMER_START) || date.after(SUMMER_END))charge = quantity * _winterRate + _winterServiceCharge;else charge = quantity * _summerRate;整理后if (notSummer(date))charge

2016-09-20 07:11:45 361

原创 第3,6,7,10章读书笔记

第三章函数3.1 短小函数的最重要的原则说三遍:短小、短小、短小。if,else,while等语句,代码块应该尽量只有一行,且改行是一个函数调用语句。且函数名应该具有说明性,增加文档的价值。例:JDK源码:private static inthugeCapacity(int minCapacity) {        if (minCapacity

2016-08-29 07:20:51 407

原创 算法4版 -执行源文件提示找不到类的解决办法

将网站下载下来的源文件导入eclipse之后,直接用java xxx 来运行程序,提示找不到类。这是由于路径没有指定的原因例如:java TopM错误: 找不到或无法加载主类 TopM解决办法:1.首先转换到工程路径下边cd D:\myjava\Design_Model\Algorithms2.查看java文件的包名。3.在工程路径下,用

2016-08-21 09:47:37 530

转载 如何解决Sublime Text 3不能正确显示中文的问题

今天在Windows上使用Sublime Text 3的时候,发现一些txt文本打开以后,中文都是乱码。于是搜了一下,找到了解决方案。步骤:在Sublime Text里,按ctrl+`,打开Console,一次性输入如下代码:import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = subli

2016-08-19 17:15:52 1616

转载 sublime快捷键

Sublime Text 3非常实用,但是想要用好,一些快捷键不可或缺,所以转了这个快捷键汇总。用惯了vim,有些快捷键也懒得用了,尤其是在win下面,还有图形界面,所以个人觉得最有用的还是搜索类,对于阅读和修改代码来说,非常实用。选择类Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本。Alt+F3 选中文本按下快捷键,即可一次性选择全

2016-08-19 16:09:10 221

原创 第一章简洁代码,二章有意义的命名

简洁代码标准:有呀,高效,干净利落的抽象。2.3避免误导避免使用与本意相悖的词:例如别用accountList来表示一组账号,除非他真的是Listl类型。别用小写字母l和大写字母O做变量名2.4做有意义的区分例如以数字系列命名(a1,a2,….aN),这样的命名完全没有提供正确的信息例如:public static voidcopyChars(char a1[]

2016-08-07 17:46:28 356 4

七周七并发模型

七周七并发模型

2017-08-22

数字图像处理(MATLAB版)

冈萨雷斯数字图像处理MATLAB版.中文版.pdf

2014-09-05

空空如也

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

TA关注的人

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