- 基数树与httprouter
基数树即压缩前缀树, 在前缀树的基础上,通过合并唯一子树与其父节点来节约空间,基数树常应用于关联数组、IP 路由、信息检索中,在基数树中查找的时间复杂度取决于数据的最大长度K, 时间复杂度为O(K)。
Read More
- 有趣的turtle
偶然想起很早以前在小学读物里看到的神奇的logo语言,可以用来绘制一些很有趣的图案,python自带了一个turtle库实现了logo语言的功能,心血来潮用这个库玩了下。
Read More
- 给MySQL的JSON数据创建索引
MySQL从5.7.8版本开始支持JSON数据,给处理一些动态变化的数据存储带来方便,但是MySQL中的JSON数据要通过索引进行查询,需要用到虚拟字段,通过对虚拟字段创建索引从而利用该索引对JSON数据进行查询。
Read More
- Golang的defer和recover
Python中提供了with表达式可以很直观、方便地进行应用上下文资源的管理,在代码块执行结束、抛出异常时会自动处理资源的释放、清理操作。
Read More
- Golang中的方法(method)
Golang中的方法(method)只是带有接收者(receiver)的函数(functino),通过为类型定义方法,可以实现oop编程模式。
Read More
- Golang中的数组与slice
- 数组
-
定义 数组是很常用的一种数据结构,go中的数组定义与c类似, 如c中用int[10]表示一个长度为10的数组,而go用[10]int来表示,只是将类型声明放在后面,go还提供很多方便的数组定义方法。
```go // 数组定义
-
- 数组
- awk、grep的应用
awk、grep是常用的*nix工具,使用这两个工具可以高效对文件、文本流进行处理。
Read More
- Redis数据的持久化
Redis提供了两种方式进行数据库的持久化:
Read More
- Redis not able to persist on disk
今天协助同事进行Rails应用迁移,由于我之前写好了文档,自己也实验过,迁移过程没有太大问题,但今天同事说部署成功后访问总是抛出
Read More
- 记一次数据恢复的经历
缘起
今天有多名用户反映自己的配置丢失,导致访问受限, 起初以为是一个系统的严重性bug,后来对代码几经推敲并未发现逻辑漏洞,后来通过对近一周的log逐一分析比对,终于找到了原因,原来是一名具有较高权限用户的误操作,导致用户配置被误删/(ㄒoㄒ)/~~
Read More
- 食梦者——追逐梦想的青春
第一次看《食梦者》这动漫是在一年多以前,那时还是学生,转眼间已经毕业工作一年多了,当时因为认为作品中人物与年龄设定不符就没继续追下去,直到上星期才又回顾起这曾经被我遗弃的动漫,随着剧情的深入,渐渐地喜欢上了,也意识到了自己差点错过了一部佳作,作品讲述了少年们从中学一直追梦的过程,看完之后竟有种想哭的感觉,带给我的感动不亚于小畑健老师的另一佳作《棋魂》, 看到动漫中秋人、真城、英二、福田等人互相追逐,在逐梦过程中挥洒青春的汗水,不断成长到收获成功的果实,真的为他们感动、兴奋,追逐梦想的过程真的很美好呢!
Read More
- 在WSL(Bash On Windows)中运行jekyll小记
- 安装
ruby
开发环境和bundler
;
- 安装
- PPTV自动签到
前段时间通过活动获得了pptv3个月的会员,有了会员偶尔看下动漫、收费电影还是不错的,免去了广告的干扰,pptv还可以通过积分兑换会员,每天签到获可以取积分,为了避免繁复的每天签到,因而写了一个脚本进行签到,将签到任务交给计算机去完成。 脚本很简单,使用python3编写,requests库进行网络请求操作。
Read More
- 解决python2.x文件读写编码问题
python2.X版本在处理中文文件读写时经常会遇到乱码或者是UnicodeError错误,正如下面的程序所示:
Read More
- 使用textwrap模块进行字符串的指定宽度输出。
python中的
Read Moretextwrap
模块给我们提供了很方便以指定列宽重新排版字符串的方法,这在开发CLI程序时可以很方便根据终端大小进行排版输出。如:
- python进行嵌套列表展开
python中可以利用迭代高效进行列表的展开,下面的代码就是一个列表展开的例子。
Read More
- python实现状态机
(python-cookbook阅读笔记)
Read More
当你要实现一个需要进行状态转换对象,比如实现一个管理连接读写的Connection对象,一般我们会使用if进行对象状态判断,如下:
- python协程
python解释器受制于GIL,导致python的多线程效率不高,不能充分利用CPU的处理能力,但pythoh中存在协程这种方式弥补多线程的不足,利用协程可以充分利用多核cpu的运算处理能力,大大提高程序的性能,python中有greenlet等一些利用协程的库来提高程序的性能,使用yield关键字也可以实现协程,下面用一个经典的生产者-消费者程序来说明:
Read More
- python使用property类
property类有setter、getter、deleter方法,其实property类中对__get__、set、delete__等特殊方法进行重写,在这些重写的方法中调用property对象初始化时传入的setter、getter、deleter方法,因此可以利用@property装饰器装饰方法,从而将对应的方法替代对应的__get、set、__delete__等特殊方法的默认实现,从而对访问、赋值、删除等操作进行控制。
Read More
- python中的一些坑
python是一门简洁优雅的语言,也是我比较喜欢的编程语言,因其是动态脚本语言,因而使用非常方便,但使用过程中有些坑还是要注意下。
Read More
- python中的weakref(弱引用)
python使用
Read Moreweakref
模块可以实现对象的弱引用,python中的垃圾回收机制是通过对象的引用计数来触发的,当对象间有相互引用时,垃圾回收会失败,这时可以使用weakref
模块实现对象的弱引用,给对象设置弱引用并不会增加对象的引用计数,所以不会影响内存的回收,同时也正是因为弱引用不会增加对象的 引用计数,弱引用并不能保证原对象存在,弱引用的初衷是为了在进行大对象处理时实现缓存机制,比如从而节省资源占用,比如当你需要处理大量的二进制图片文件对象时,为了方便读写,我们需要进行一个图片名称到图片对象的映射,如果使用字典进行存储对象和名称的映射的存储,那么在程序运行期间,所有的图片对象都不会被销毁,因为此时对象已经作为dic
t对象中的key
或者value
,这就造成了过多的资源消耗,若此时使用weakref
模块的WeakKeyDictionary
和WeakValueDictionary
类对对象进行弱引用,则可以减少资源占用,方便进行内存回收,下面介绍weakref
模块中的基本使用。
- python——对class中属性的操作进行限制
python不想java等语言一样,对类型有强制要求,这是因为会自动处理变量的类型,所以在python中可以给一个原本为int类型的变量赋予一个字符串类型的值(其实此时实际上是新建了一个字符串的变量),但有时候我们想明确指定变量的类型,只允许给变量赋予特定类型的值,这就需要我们在给变量赋值值进行类型检查,常见的方法是使用@property装饰器或者是重写__get__、 __set__等方法。
使用@property装饰器
Read More
- javascript数组
javascript中数组是继承自Array.prototype的一个特殊的对象,数组内的元素是无类型的,可以容纳各种类型的值、对象。
Read More
- javascript——对象
javascript中对象是一种基本的数据类型,也是一种复合值,将很多对象结合在一起,通过名称进行访问,对象中的属性还有一些相关的值,称为属性特性。其包含:
Read More
- Python迭代器——深度优先搜索
要想给类实现迭代器功能,只需在来中实现__iter__(self)方法,利用python的迭代器可以很轻易构造一个可以实现深度优先搜索遍历的树结构。代码如下:
Read More
- Python中的正则表达式
python中的
Read Morere
模块提供了与Prel语言中正则表达式类似的方法,re
模块提供了强大的字符串匹配功能,符合正则表达式标准,可以使用在其它编程语言中。
- Python中的itertools模块
python提供了itertools模块方便进行迭代器操作,该模块包含了很多迭代器函数,可用各种方式对数据进行循环操作,现在记录下比较常用的功能。
Read More
- Javascript语句-throw、break、continue、with、switch
throw语句及异常捕捉机制
throw语句用于进行抛出异常,可以抛出异常状态、表达式、Error对象等。 如:
Read More
- Javascript声明提前
变量声明提前
Javascript在运行代码前会进行预解析,将变量声明和函数声明提前, 如:
Read More
- 处理Python2.x的中文输出
python2.x版本的中文编码问题一直令人苦恼,在平常的python程序中经常需要处理各种中文编码字符(gbk、utf-8等编码),这无疑非常令人苦恼,针对编码问题,一般是使用decode将字符转换成统一的Unicode编码,然后由Unicode编码的字符通过encode方法转换成特定编码的字符。除此之外,在使用print函数输出到终端时,经常会遇到不显示中文而是显示中文对应的unicode数值,这给我们的程序调试带来很大的麻烦,如:
Read More
- Welcome to Ghost
You’re live! Nice. We’ve put together a little post to introduce you to the Ghost editor and get you started. You can manage your content by signing in to the admin area at
Read More<your blog URL>/ghost/
. When you arrive, you can select this post from a list on the left and see a preview of it on the right. Click the little pencil icon at the top of the preview to edit this post and read the next section!