Vim 快捷键整理

一、移动光标1、左移h、右移l、下移j、上移2、向下翻页ctrl + f,向上翻页ctrl + 3、向下翻半页ctrl + d,向上翻半页ctrl + 4、移动到行尾$,移动到行首0(数字),移动到行首第一个字符处5、移动光标到下一个句子 ),移动光标到上一个句子6、移动到段首{,移动到段尾7、移动到下一个词w,移动到上一个词8、移动到文档开始gg,移动到文档结束9、移动到匹配的{}.().[]处10、跳到第n行 ngg 或 nG 或 :11、移动光标到屏幕顶端H,移动到屏幕中间M,移动到底部12、读取当前字符,并移动到本屏幕内下一次出现的地方 13、读取当前字符,并移动到本屏幕内上一次出现的地方 二、查找替换1、光标向后查找关键字 #或者g2、光标向前查找关键字 *或者g3、当前行查找字符 fx, Fx, tx, T4、基本替换 :s/s1/s2 (将下一个s1替换为s2... Read More

Redis(PHP) 常用操作

[code lang="php"class MyRedis private $redis;/** @param string $hos* @param int $pos*public function __construct($host = '10.102.1.8', $port = 6379) $this->redis = new Redis$this->redis->connect($host, $port);return $this->red/** 设置值 构建一个字符串* @param string $key KEY名称* @param string $value 设置值* @param int $timeOut 时间 0表示无过期时间*public function set($key, $value, $timeOut=0) $retRes ... Read More

高并发场景下的缓存使用误区

十一聚会,某谈及人生理想。我要的是“地位,身份和爱情!”,其实就是金钱,面子和美女。O.正文9月份,连续两天(AB两天)线上出现业务故障,redis监控曲线瞬间上涨。业务场景:一千万UV / 日redis监控曲线(修改图片好麻烦,曲线意会下吧~)redis日志业务代码[code lang="php"(self::$_debug) ? Helper_Log::writeApplog('newFeatureOfMixedFeed', "初始化配比数据.") : null;if(self::$_redisDb == null) self::$_redisDb = new Comm_Redisdb(self::REDIS_SERVER);/** 判断是否有缓存数据 **$total = self::$_redisDb->lSize... Read More

恢复删除文件的方法

真的是很巧,正在浏览博客时,一个同学问我如何恢复PC被删除的文件,而恰恰正在浏览的这篇文章提到的方法是她在网上找到的。看来比较实用,贴出来在我们平常使用电子设备时,总时不时地手贱误删文件或者电脑借给别人用了别人却把你的东西删了而且还“体贴地”清空了回收站,这时我们就想要恢复文件,现在给你一颗后悔药,让你找回错删文件。PC错删文件恢复加入在PC上误删文件还清空了回收站,且没有备份,可以这样做。快捷键“Win+R”,打开Windows的运行命令窗口,输入“regedit”进入注册表中,找到“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\DeskTop\NameSpace\”,在右边空白处单击右键,新建“项”,并重命名为“{645FFO40-5081-101B-9F08-00AA002F954E},接... Read More

我用 Go 语言做了一个红白机模拟器

最近我编写了一个 FC 模拟器。制作这样一个模拟器主要是出于兴趣以及为了从中学习 FC 的工作原理。在这个过程中我学到了很多有趣的知识,于是写下这篇文章同诸位分享我所学到的内容。由于相关的文档已经有很多了,所以这里我只打算讲述一些有趣的特性。请注意,接下来都将是些技术方面的内容。图1 我的模拟器可以将画面录制成 GIF。这是我正在玩《大金刚》(Donkey Kong)的画面。CPFC 使用 MOS 6502(主频1.79MHz)作为其CPU。6502 是一枚诞生于 1975 年(距今已有 40 年之久了)的 8位微处理器。在当时这款芯片非常流行,不仅应用于 FC,还被广泛应用于雅达利 2600 & 800、Apple I & II、Commodore 64、VIC-20、BBC Micro等机器上。事实上,直到今天6502的修订版(65C02)还依然在生产。 6502 的... Read More

抓包工具 tcpdump 的使用说明与官方文档

一直在Linux下开发的人一定会用到tcpdump,下面就是关于tcpdump的使用方法说明tcpdump的选项-a —— 将网络地址和广播地址转变成名字-d —— 将匹配信息包的代码以人们能够理解的汇编格式给出-dd —— 将匹配信息包的代码以c语言程序段的格式给出-ddd —— 将匹配信息包的代码以十进制的形式给出-e —— 在输出行打印出数据链路层的头部信息-f —— 将外部的Internet地址以数字的形式打印出来-l —— 使标准输出变为缓冲行形式-n —— 不把网络地址转换成名字-t —— 在输出的每一行不打印时间戳-v —— 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息-vv —— 输出详细的报文信息-c —— 在收到指定的包的数目后,tcpdump就会停止-F —— 从指定的文件中读取表达式,忽略其它的表达式-i —— 指定监听的网络接口-r —— ... Read More

Git 与 SVN 的使用感受

这是一篇上网一搜一大堆的文章,所以,重在个人感受(不说具体实现,当然现在也不懂!)。工作环境需要,分别接触了Git和SVN版本控制工具。接触不久,尽管这两种工具都不是很熟悉,目前仅能达到满足简单的工作需求(有时还需要查引擎)。但,还是有一些感受以记录。分支(branches)与里程碑(tagsGit的分支和里程碑很有趣和简单,可以快速地在当前工作区切换不同的分支和里程碑。SVN的分支和里程碑本身就是一个目录(拷贝),目录下分别有一个.svn的文件夹以存储版本信息。所以,SVN切换分支很麻烦,需要切换工作区(每一个工作区只对应服务器的某一分支)。而Git却很方便。集中式与分布式这个事情和上面的分支和里程碑是有重叠的地方的。Git采取的是分布式。简单的说就是每台checkout过代码的笔记本上都有着一个完整的代码库。而SVN却是集中式的,只有一个是代码仓库,就是服务器。所以,Git可以本地提交,SVN需联网提交。... Read More

五个编程谬论

我是一名黑客。在我还就膝盖那么高的时候就开始用一台古老的 Commodore 64 写代码了。直到今天,也没有什么比戴上耳机,破解东西更让我着魔的了。所以在我创建我的第一家企业时,我就已经知道了很多有关于编程的事情。是不是谬论,且听我下面一一道来1. 代码很重要我在很多地方工作过,发现成功之中隐藏着这样一种普遍现象:早期的代码看上去像是一群程序猿喝醉之后写的。这听上去似乎有悖常理,那是因为你得竭尽全力让企业成长,所以就没有时间去追求软件的完美。从另一方面讲,失败的企业,却会花很多很多时间来修正其代码库。打个比方:如果你是一个寿司师傅。作为你工作的一部分,你收集了一套绝版的刀具。你花时间花精力来完成收藏,它们提升了你作为一名厨师的竞争力。但无论你每天用多少时间去打磨你的道具,你就不是一个铁匠。你的工作依然是做寿司。你虽然拥有了世界上最好的刀具,但如果做不好寿司,那么你的客户服务就是差评。你... Read More

MySQL 数据库优化笔记

视频地址:http://www.imooc.com/video/3688 可以从以下几个方面进行优化 硬件系统配置数据表结构SQL语句和索引一般来说,上述方式的实现成本(自上而下)由高到低,而效果(自上而下)由低到高。使用慢查询日志使用系统的慢查询日子来监控有问题的SQL。show variables like 'slow_query_log'set global slow_query_log_file = '/home/mysql/log/slow_query_log.log'set global log_queries_no_using_indexes = onset global long_query_time = 1慢查询分析工具pt-query-digest如何发现有问题的SQL查询次数多,且占用时间长的(通常为pt-query-digest分析中前几个SQL);IO大得SQL(... Read More

WEB 开发之前端与后端通信解决方案篇

每天都得找点乐子,今天的乐子就是“WEB开发中前端与后端通信的解决办法”。首先,说一下“神圣”的需求。假设,我们面前是一个报名活动的页面。所有的逻辑都发生在这报名按钮上,下面是导图做法一按钮是一个链接,当我们用可爱的手指轻轻抚摸他时。他会告诉浏览器,我是一个链接。之后,浏览器被跳转到一个新的连接上。与此同时,后端会执行当前的逻辑,渲染对应的WEB页面。这种做法很糟糕1、用户体验不好,跳转页面的吞吐量比较高,加大用户的等待时间2、同时,也加大服务器的负担;3、代码冗余度较高,需要写若干个前端页面和后端方法。做法二那么,用AJAX来实现前后端的通信(异步)也许是个不错的做法。既然,谈到通信,那么必定要有个标准。那,标准是个什么东西?举个例子(秒懂!哈哈公认的标准脸型: 不符合标准的脸型所以,你知道。如果程序没有标准,是一件多么令人“恼怒”的事情。需要两个PHP类库标准接口[code lang="php"... Read More

CI 框架随记

[code lang="php"1、在讲解文件所在目录方面的问题时applicatio|-----cor|-----MY_Controller.phsyste|-----cor|-----Controller.ph思路一、目前在企业中使用比较多的框架有如下几种1、zendframework框架:此框架由zend公司开发并负责维护,入门比较困难一点,但是据说功能很强悍,属于一款偏重量级的MVC框架2、Yii框架:又称为 "易框架&qu3、thinkphp框架:是国人开发的一款框架,由于它的注释和使用文档都是中文,所以很受国人的喜欢4、codeigniter框架:简称CI框架,是国外一款流行的框架,跟前面的框架比较,ci框架是最轻量级的,也是最容易上手的二、我们选择这款框架来学习,主要有以下几点原因1、ci是一个轻量级的框架,关于轻量级,可从两方面来理解1、体... Read More

微信支付 JSAPI 开发中的问题

前言:这篇文章讲的是利用微信官方提供的JSPAI接口,实现微信网页支付。希望在看之前,要确认一下几件事情,否则会让您在解决问题是很费解。① 接口文档版本号是V3.3(在官方提供的PHP DEMO中的README.txt文件中查看。当然,也可以参考压缩包的名字(wxm-payment-biz-api218f8e.zip,我想官方不会把不同版本的文档压缩成一个名字吧!)来确认版本;② 微信支付PDF文档的版本为V3.3.7(如果上述版本对了,这步应该也是一致的,因为这两个文件是在一个包里);③ 该文章说的是JSAPI的开发;今儿是工作的第五个工作日。前两天在调整页面,后两天在调整微信支付功能。今天是周日,工作周的第一天。调了两天的微信支付(JSAPI:调用微信JSAPI接口实现微信网页支付功能),经过今天早上的一分钟“努力”解决,感觉很爽。下面说说我在开发微信支付过程中遇到的若干问题。第一天,... Read More