正则表达式中的断言

断言属于Group constructs,但是不匹配具体的东西,所以也被称为零宽断言。他们用来指定一个位置,为这个断言为真时才继续进行匹配。

捕获型匹配

(…) 匹配括号中的内容
(a|b) 匹配a或者b
(?<name>…), 同上但是为分组取一个名字,当分组很多时为分组取一个名字很有用。注:在golang,python中为(?P<name>...)
以上匹配都会占用匹配位置,并生成分组,正则表达式内可以通过\1,\2,\3 or \k<name> 来引用

阅读更多

python3 新特性总结

1. f-string 字符串插值

传统字符串格式化是使用%, python2.6 后引入了format提供了更强大,灵活的控制。python3 开始提供了字符串插值的方法,更加方便,清晰。这种方式在其它语言中并不陌生。

1
2
3
4
5
a = "Peeter"
b = 50
s = "{0} has {1:.2f} kg".format(a, b)

s2 = f"{a} has {b:.2f} kg"
阅读更多

go语言学习笔记

  • if 可以有多个;隔开的语句,if xxx; yyy {…}。 golang语句分隔符其实是;但是可以省略
  • golang 中函数名头大小写决定了函数在包外的可见性!
  • a := value 简短变量声明只能用 在函数内, 注意是 声明
  • go 中指针是不能改变的
  • 编译器自动选择在栈上还是堆上分配空间,但是不由var还是new方式决定!
  • 注意go 中 := 和 多重赋值, 和作用域的坑
  • 包导入:. “xx”, _ “xx”, f “xx”
阅读更多

Flutter中的Redux

flutter通过widget树的形式构建UI,不同的widget怎么去访问或者传递一个数据(状态),并且在这个状态改变后通知到其它Widget呢,官方简单demo中是通过构造函数的参数把数据或者修改数据函数传递给子widget,但是随着应用规模扩大,widget树会很复杂:

阅读更多

Google Flutter 初体验

最近想着做个app,自己有一点android开发经验,但是从来没做过ios开发,就想用跨平台的方式,一劳永逸。于是对比了不少跨平台的方案,iconic, xamarin, react native,最后本打算用react native,偶然发现flutter,google的产品,于是尝试了一下。

阅读更多

地铁移动广告原理的个人理解分析

坐地铁时在高速行驶的列车上看到稳定的广告觉得挺有意思,就思考了下实现的原理。
我们都知道人眼有视觉暂留,当图像以24帧每秒显示时,看起来像一幅连续的画面。可以肯定的是这个地铁广告也是利用了这种视觉暂留效果。设想一幅广告画面就是按24帧每秒播放的画面,但是处于固定位置的广告箱肯定不是一直亮,不然列车运行后看起来就是糊的

阅读更多

numpy中轴的理解

最近学numpy中的ndarray,许多函数如np.mean, np.sum, np.min等都有个axis的参数,那什么是轴呢?
其实就是数组的维度,对应ndarray.ndim的值, 也即ndarray.shape的len.

阅读更多

莫听穿林打叶声

莫听穿林打叶声,何妨吟啸且徐行。
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
料峭春风吹酒醒,微冷,山头斜照却相迎。
回首向来萧瑟处,归去,也无风雨也无晴。