在虚拟机VirtualBox中安装UbuntuServer进行实验,默认使用NAT网络模式,但是宿主机无法联通虚拟机,因此将NAT模式改为桥接模式。
Arch安装手记.md
arch安装手记
其实arch的安装并不复杂,如果你使用图形化安装工具安装过其他linux发行版,那么你应该知道安装时会进行一系列的设置,设置分区,设置用户名等等。
arch的安装没有图形化的工具,因此需要使用命令行来设置。其设置的内容也和图形化安装并无任何差异。
下面整理了一下安装一个arch所基本的命令。
字符串匹配算法-Rabin Karp算法
一个很简单的问题,给定一个字符串txt和一个模式串pat,写一个函数search来输出字符串txt中所有和pat相等的子串。
例如,给定txt=”this is a test text”, pat=”text”,返回 [10]
这个问题非常简单,我们只需要暴力穷举所有txt中所有长度等于len(pat)的子串,并判断其是否和pat相等即可。相等就返回其起始索引。
在判断子串是否和pat相等时,我们需要逐位去比较。这样,这个问题的复杂度就是 O(mn)。这种算法我们称为朴素字符串匹配算法。
很显然,这样的算法效率并不高。
traefik自定义中间件
Træfɪk自定义中间件
Træfɪk 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。
Traefik是golang写的,与docker,k8s深度集成,支持服务的自动发现与热部署。
从Traefik2.0版本开始,其加入了中间件,功能更丰富,但是目前(v2.2)官方还不支持以插件的形式自定义中间件。因此,如果要自定义中间件的话,需要在源码上做改动。
滑动窗口算法思想
滑动窗口算法思想是非常重要的一种思想,可以用来解决数组,字符串的子元素问题。它可以将嵌套循环的问题,转换为单层循环问题,降低时间复杂度,提高效率。
滑动窗口的思想非常简单,它将子数组(子字符串)理解成一个滑动的窗口,然后将这个窗口在数组上滑动,在窗口滑动的过程中,左边会出一个元素,右边会进一个元素,然后只需要计算当前窗口内的元素值即可。
一道SQL练习题
SQL技能是开发人员的基本技能,因此面试开发时,都会问到SQL相关的知识。
我在帮助公司招人时,也会出一道SQL的题目,来考察候选人的SQL技能。
下面这道题就是我面试时用到的,一个题,几个小题,难度逐步增大,考察候选人对于SQL的理解与应用。
减治策略和分治策略
在算法设计与分析里,有这么两个算法,减治策略和分治策略。减治我还是第一次听说,分治之前听说过,但说实话,减治和分治什么区别,有时候还真说不上来。今天趁着这个机会,再复习一下这两个算法分析策略。
聊聊算法之递归
递归在编程时,是一项非常有用的思想,对分析问题很有帮助。可是在面试聊候选人的时候发现,很多人对递归的认识不是很到位,经常得到的回答就是“递归就是自己调用自己啊”这样的回答。然而在什么情况下用递归,或者递归解决了什么样的问题等,基本就回答不上来了。
递归虽然很简单,但也不至于简单到,“递归就是自己调用自己啊”这种程度。
这篇文章也是自己的一份整理总结吧,对自己知识的巩固。
一道Easy的LeetCode题目引发的血案
LeetCode 题目
一直觉得,程序员应该持续的修炼内功,训练编程思维。最近也是不间断的在做 LeetCode 算法题,来锻炼思维。可是,今天在一道难度为 Easy 的题目上,栽了,受打击了,于是整理成此博文,来记录一下吧。
那些反直觉的数学
数学一向是非常严谨的,在生活中,有用到数学的地方也是和我们的直觉相符的。但确实会有一些反直觉的数学现象存在,而且非常有趣,今天我就整理了之前遇到的一些非常有趣的反直觉的数学问题,来聊聊为什么数学在生活中那么有用。