雕虫「晓」技

「保持更新啊朋友」

ES(Elasticsearch)同义词方案

最佳实践

以下内容针对8.10版本的es 概念 首先,区分几个概念: Synonym Set:也就是同义词的数据部分,这部分可以通过API构建,也可以通过文件构建,官方推荐API Synonym Filter:在analyzer的filter(也叫token filter,与char_filter区分开就好)中使用,包括Synonym graph和Synonym(是的,filter就叫...

运维管理小经验

不会运维的算法不是好全栈

服务器使用 查看某个端口对应的进程 1 sudo netstat -lnutp | grep port tmux恢复到屏幕大小 有时候我们在某个屏幕下开了一个tmux的session,结果断了连接后再换一个另一个尺寸的屏幕,发现周围一堆白点,能用的窗口大小被限制在上一个屏幕大小,如图: 这时候可以执行: 1 tmux a -d -t name 设置时间 1 2 sud...

Python雕虫小技-1

一些较大提升幸福感的小技巧

open(“fila_path”, mode=”x”) 打开文件的几种模式: r:常见的只读模式 w:也很常见的写模式,但是会覆盖 a:追加模式,不会覆盖,会在原有基础上写 x:通俗解释就是【只会在文件不存在时创建文件并写入,如果文件存在则会直接报错】 使用x模式需要注意最好提前检查路径是否存在。在不希望现有结果被覆盖的情况下比较好用(比如怕自己手抖运行了已经修改了...

Python String Format

fstring! fstring! fstring!

python字符串格式化的几种方案 string是我们写代码绕不开的基础类型,而构造string也是我们经常遇到的场景。 在我刚刚接触python的时候,学到的构造string的方法是C或C++的风格,即通过%d, %s, %f等特殊字符构造,然后通过一个%将参数与占位符一一对应,比如这样 1 2 3 a = 1 b = "hello" print("a=%d, b=%s" % (a,...

神兵利器-2

我的Mac装机清单

非常非常个人向的软件清单,我会表达自己对于一些软件的看法,如果和您的看法不一致,大家求同存异。 为什么强调个人向呢,主要是因为自己对于一些东西可能存在偏执,我对于大而全的软件一向兴趣泛泛,比如vim和emacs,大学的时候我就和朋友做过讨论,发现谁也说服不了谁,我还是喜欢用vim,他则是鉴定的emacs党。另外我比较喜欢GUI的东西,比如git,我喜欢看界面而非用命令行。 R...

神兵利器-1

我的Mac装机清单

非常非常个人向的软件清单,我会表达自己对于一些软件的看法,如果和您的看法不一致,大家求同存异。 为什么强调个人向呢,主要是因为自己对于一些东西可能存在偏执,我对于大而全的软件一向兴趣泛泛,比如vim和emacs,大学的时候我就和朋友做过讨论,发现谁也说服不了谁,我还是喜欢用vim,他则是鉴定的emacs党。另外我比较喜欢GUI的东西,比如git,我喜欢看界面而非用命令行。 t...

泛化性较强一些基本思路(1)

遇事不决,默念口诀

在这个系列里,打算总结一下作为一个程序员,在我日常遇到的许多典型场景下的基本思路,可以先按照这个手册来进行debug,避免走一些歪路 场景一:这个程序比较速度慢 这应该是一个现实中常见的场景。一般而言,程序比较慢的原因包括(以下可能是废话): GPU瓶颈 CPU瓶颈 IO瓶颈 但是无论哪种,首先要利用profiling工具看一下是否能找到瓶颈,参见:Pytho...

Python Profiling

性能瓶颈查验

对于一个程序员而言,一般我们的追求包括:稳定性、效率、效果。而profiling就是我们优化效率的重要步骤——瓶颈发现。profiling,在软件工程中的意思大体接近于【性能分析、瓶颈分析】,也就是去看代码运行过程中在各个环节中耗费的时间。 注意,这里profiling只是发现瓶颈的一个选项,而且是一个保底但是通用的选项。如果天赋异禀或者经验老到,完全可以靠经验或灵感发现问题,比如变量反复...

新机器配置记录

开发用机器

最近遇到了需要重新配置机器的机会,因此特地记录一下 请注意:在本篇中,我们统一使用yourname作为用户名 添加用户 假设你获得的是root用户,那么第一件事情就是创建用户,并伴随可能的添加用户权限等 创建用户:sudo useradd yourname 如果是CentOS,你还需要修改密码:sudo passwd yourname 为用户添加sudo权限 ...

一些基本的习惯

或——程序员基本素养

1. 问题搜索 首先树立一个概念:我们日常碰到的问题,分为两类:第一类是常见但是只是我们自己不常用因此不知道具体方法的问题;第二类是当我们对一个领域熟知精深后发现的问题。第一类问题构成了大部分业务上的场景,因此请相信大多数的问题至少曾经有人碰到过,这时候要先充分搜索;第二类问题可能我们踩到了一个坑里,这时候可能没人遇到过,但是也需要先确认这一点,否则很容易走弯路。 其实上面的事情还...