与所有单词相关联的字串

题目 https://leetcode-cn.com/problems/substring-with-concatenation-of-all-words/description/ 给定一个字符串 s 和一些长度相同的单词 words,找出 s 与 words 中所有单词(words 每个单词只出现一次)串联一起(words 中组成串联串的单词的顺序随意)的字符串匹配的所有起始索引,子串要与串联串完全匹配,中间不能有其他字符。 举个例子,给定: s:”barfoothefoobarman” words:[“foo”, “bar”] 你应该返回的索引: [0,9]。(任意顺序) 题解 代码写的比较清楚,应该不需要题解。。 code class Solution: def match(self, ss, word_dic): len_ss = len(ss) word_number = i = while True: word = ss[i:i+self.len_of_word] # keys() update if word in word_dic: if word_dic[word] > : word_dic[word] -= 1 word_number += 1 # is update if word_number is self.len_of_words: return True # repeat else: return False # not exist else: return False i += self.

Read More

为了自由

本文出自svtter.com 本文可以随意转载,但是转载请保留本信息. Linux下自由之路颇为难走 — 也不是很难走,openvpn等等工具都还好,但是因为前几天支付宝刚刚挂 掉 — 好吧,我承认挂掉有些时间了,但是我一直懒得跑银行,反正没了网银也不是不能活。 然后的然后就是自由之路的走法了。因为没有网银,买不了vpn,只能自己好好想办法了。goa.ent我尝 试过,但是因为过于慢的速度和不稳定的因素所以决定作为下下策。另外开源了的go堵起来是不是更容 易呢。。也是醉了。 必须要灭蟑了,真心受不了了,外卖给宿舍带来的是无尽的蟑螂。 archlinux下我给的方案是利用一些自由软件来进行走道,这方面的东西还是比较多的,我就不一一列举 了,但是还是主要针对free.oor来进行。 archlinux或者其他的发行版直接安装wine就可以了,方法也是很简单。怎么安装?举个简单的例子,想 要用什么,就发行版 + wine进行搜索,很快就可以找到了。wine是Linux的windows模拟器,暂且这么 理解吧。 搞好了wine以后,点击运行你下载的软件即可 — 会提示MFC42.dll不存在。然后有些双系统的同志喜欢 从自己的另一个系统里cp到.wine/drive_c/windows/system32或者syswow64下,但是事实上这样解决 不了问题,最好的方法是从百度搜索一个:MFC42.dll winxp这样的比较合适,可能是wine在最初适配 的时候主要使用的这个吧。 成功开启以后,就是代理服务器的问题了。代理服务器方面,个人认为Linux设置起来比windows容易( 也可能是我不太喜欢windows,所以没有认真研究的缘故)。 如果在bash下,使用export http_proxy=localhost:PORT即可。对了,PORT是对应的端口,不要搞错 了。这样在bash下开启的程序都是走代理的,更确切的说是从shell跑的程序都是走的代理。所以要搞什 么系统全局的问题, 不同发行版的问题也就迎刃而解了。 感谢你能够读完这篇文章。

Read More

从grub rescue修复

修复grub-rescue模式 今天删除了一个多余的分区,结果grub找不到原来的启动mod了,也是学习了。 grub-rescue模式中只能用ls, insmod, set root= , set prefix= ,这几个命令。 使用ls显示所有的磁盘。 然后ls (hd0, X)/boot/grub2 查看启动的盘符。 set root=(hd0, X); set prefix=(hd0, X)/boot/grub2 insmod normal normal 发现没搞定,重启还是不幸。 使用# grub2-install /dev/sda 然后就搞定= =

Read More

使用 grub customizer 调教grub

调整grub总是需要搜索某个文件,某个配置,相当麻烦,近期找了一个比较不错的图形化配置管理器,grub customizer,可以调整启动的内核,以及启动的画面,非常好用,安利一发。 安装 sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt-get update sudo apt-get install grub-customizer 使用截图 【日后补上】 reference http://ubuntuhandbook.org/index.php/2016/04/install-grub-customizer-ubuntu-16-04-lts/ grub讲解

Read More

使用Docker安装Spark

在国内加载Dockerhub上的镜像速度会比较慢,对此我们可以通过设置mirror镜像的方式来加速images的下载。 此外,如果是ipv6的网络,在一些mirror可以直接走ipv6通路,速度非常客观。这里以USTC的mirror为例。 我这里的环境是Ubuntu 14.04,对于不同的Linux环境,修改的方式都差不多;修改文件/etc/docker/daemon.json,如果没有这个文件,创建一个,注意,此处可能需要root权限。修改完成后,运行命令sudo service docker restart重启docker服务。 { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } 配置好以后,选择2.1.0版本的spark进行docker下载。 docker pull p7hb/docker-spark:2.1.0 或者直接运行 docker run -it -p 4040:4040 -p 8080:8080 -p 8081:8081 -h spark --name=spark p7hb/docker-spark:2.1.0 参考 https://lug.ustc.edu.cn/wiki/mirrors/help/docker https://github.com/P7h/docker-spark

Read More

使用Docker时遇到的sitemap问题

这两天感觉博客访问量已经不能靠用嘴宣传了,于是决定做一下sitemap,但是发现django自带的sitemap生成器存在这样的问题:生成的sitemap是依照container的hostname来显示的。 为此我查询了一下其他人是怎么搞的,发现他们都把nginx和django放在一个容器下——但是如此构建不仅麻烦,似乎违背了docker的构建思路,在一个container里面放了多个进程。因此,我认为下面的方案是合理的。 解决方案 Enabling the sites framework To enable the sites framework, follow these steps: Add ‘django.contrib.sites’ to your INSTALLED_APPS setting. Define a SITE_ID setting: SITE_ID = 1 Run migrate. django.contrib.sites registers a post_migrate signal handler which creates a default site named example.com with the domain example.com. This site will also be created after Django creates the test database. To set the correct name and domain for your project, you can use a data migration.

Read More

使用Fabric进行部署

Fabric是一个可以在远程机器上运行命令的库 Fabric官方目前只支持Python2版本,但是有勤劳的人开发出了适配Python3的版本。具体可以查看这个fork。 Fabric的使用 我在使用Fabric的时候主要是用于部署我的网站。使用时候,首先需要引入所有的API: # 导入Fabric API: from fabric.api import * 这样就可以导入Fabric的API进行远程控制啦。 具体问题 git需要输入密码 env.forward_agent = True ssh通过秘钥链接 # 使用秘钥 env.key_filename = ['/Users/xiuhao/.ssh/key'] 使用root # 服务器登录用户名: env.user = 'ubuntu' # sudo用户为root: env.sudo_user = 'root' 一个简单的部署例子 这个部署例子结合了更新代码,进入指定目录,运行命令等。 BASE_DIR = '/home/ubuntu/django_blog' def deploy(): """ deploy new changes """ with cd(BASE_DIR): run('git pull') run('make down') run('make up') 写好文件以后,保存为fabfile.

Read More

使用cd快速在目录间移动

本文出自 难得看见一篇好文= = 操作方法 在此学习并且记录。 标记一个书签: mark [书签] 进入一个书签: g [书签] 输出全部标签: gs 实现原理 sudo vim /etc/profile 也可以使用:w !sudo tee %这种方式来保存 # mark export MARKPATH=$HOME/.marks export MARKDEFAULT=sanguo#设置你的默认书签,可以直接输入g跳转 function g { local m=$1 if [ "$m" = "" ]; then m=$MARKDEFAULT; fi cd -P "$MARKPATH/$m" 2>/dev/null || echo "No such mark: $m" } function mark { mkdir -p "$MARKPATH" local m=$1 if [ "$m" = "" ]; then m=$MARKDEFAULT; fi rm -f "

Read More