随笔分类 - 读书笔记
摘要:问题描述topK算法,简而言之,就是求n个数据里的前m大个数据,一般而言,mlistSize = count($list); 14 15 $i = 1; 16 17 foreach ($list as $li) { 18 19 $this...
阅读全文
摘要:很早之前,就从学校的图书馆借了MySQL技术内幕,InnoDB存储引擎这本书,但一直草草阅读,做的笔记也有些凌乱,趁着现在大四了,课程稍微少了一点,整理一下笔记,按照专题写一些,加深一下印象,不枉读了一遍书。与此同时,也加深一下对MySQL的了解,认识了原理,对优化的原则才有把握,对问题的分析才有源...
阅读全文
摘要:1. 关于Objc中函数调用类比[_lblHelloWorld setHidden:![_lblHelloWorld isHidden]];类比为: _lblHelloWorld.setHidden(!(_lblHelloWorld.isHidden()));Tip:objc中的boolean值为YES和NO,而不是True or False-(void) helloWorld:(BOOL)isHelloWorld{}类比为: public void helloWorld(bool isHelloworld){}Tip: 前面带有减号(-)的方法为实例方法,必须使用类的实例才可以调用。对应的有
阅读全文
摘要:介绍:什么是线程,线程的优点是什么线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进程,但却可以看作是Unix进程的表亲,同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。 一个进程可以有很多线程,每条线程并行执行不同的任务。线程可以提高应用程序在多核环境下处理诸如文件I/O或者socket I/O等会产生堵塞的情况的表现性能。在Unix系统中,一个进程包含很多东西
阅读全文
摘要:以前一直使用PHP写爬虫,用Snoopy配合simple_html_dom用起来也挺好的,至少能够解决问题。PHP一直没有一个好用的多线程机制,虽然可以使用一些trick的手段来实现并行的效果(例如借助apache或者nginx服务器等,或者fork一个子进程,或者直接动态生成多个PHP脚本多进程运...
阅读全文
摘要:昨天网上体验了一下Tengine的concat模块,非常不错,通过减少http请求次数来加快页面载入速度。官方地址:http://tengine.taobao.org/document_cn/http_concat_cn.htmlconcat模块的安装默认安装tengine的时候是不安装http_concat_module的,需要重新install一下,还是使用tengine的源代码。配置./configure [--with-http_concat_module | --with-http_concat_module=shared]--with-http_concat_module选项,co
阅读全文
摘要:好几个月前就安装了laravel,但是一直没有真正用起来,因为没有配置的vagrant和一个普通的虚拟机是没有什么区别的,如果打开virtual box,会发现其实里面就是跑着一个虚拟机而已。vagrant的强大在于是一个镜像,配置完以后镜像可以放到任何地方去,真正做到了一劳永逸了。总结一下自己使用vagrant的一点笔记,以免以后忘记还得再去翻官方文档。vagrant的官方网站:http://www.vagrantup.com/ 现在又改版了,挺漂亮的。vagrant的一些镜像:http://www.vagrantbox.es/ 各种linux都有。安装就不废话了,装上以后,在windows
阅读全文
摘要:1.为nginx添加模块进入到nginx的源码包中,重新configure加入相应模块./configure --add-module=/path/to/module例如,我下载的一个ngx_http_push模块放到了/usr/local/ngx_modules目录里,该模块的源码目录为ngx_http_push,那么configure指令为./configure --add-module=/usr/local/ngx_modules/ngx_http_pushconfigure 没问题的话那么就直接执行make && make install 完了以后就可以了,此时模块为静
阅读全文
摘要:Python可用的GUI编程的包很多,Tkinter也是其中一个半标准的工具包。 作为一个老牌的Python GUI工具包(皮皮书屋里找了本书,竟然是2001年的),它由Tk GUI包装而来。在Windows版里面已经包括了,不用单独下载。 用Tkinter实现一个简单的GUI程序,单击click按钮时会在终端打印出’hello world’:__author__ = 'fyby'from Tkinter import * #引入Tkinter工具包def hello(): print('hello world!')win = Tk() #定义一个窗体win.t
阅读全文
摘要:锁机制是数据库系统区别于文件系统的一个关键特性,他可以确保用户能以一致的方式读取和修改数据。 为了保证一致性,必须有锁的介入。MySQL操作缓冲池中的LRU列表,删除、添加、移动LRU列表中的元素等地方也都适用锁,从而允许对多种不同资源的并发访问。 打个比方,我们到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另一个人买,那么如何解决是你买到还是另一个人买到的问题? 这里肯定要用到事物,我们先从库存表中取出物品数量,然后插入订单,付款后插入付款表信息,然后更新商品数量。在这个过程中,使用锁可以对有限的资源进行保护,解决隔离和并发的矛盾。MySQL的锁管理机制:Meta-data元数据锁.
阅读全文
摘要:前几天看了一下Memcached,看到Memcached的分布式算法时,知道了一种Consistent Hashing的哈希算法,上网搜了一下,大致了解了一下这个算法,做下记录。 数据均衡分布技术在分布式存储系统中非常重要,数据分布越均匀,系统的总体性能就越好。 简单的哈希算法:以K取余法,这种算法虽然简单,但难以满足单调性要求,并且平衡性差,增删节点时更新效率低。当系统中存储节点数量发生增加或者减少时,整个系统的数据对象的映射位置都要重新进行计算,严重影响了缓存的命中率,可能会导致系统无法对外界进行正常的响应,从而导致崩溃。 一致性哈希算法(Consisteng Hashing):首先,它.
阅读全文
摘要:1.根据余数进行分散:离散度高,但是增加或者移除服务器的时候,缓存充足的代价非常大。添加服务器后,余数就会产生巨变,这样就无法获取与保存时相同的服务器,从而音像缓存的命中率。2.Consistent Hashing:求出memcached服务器节点的哈希值,然后将其配置到0~2^32的圆上,然后用同样的方法求出存储数据的键的哈希,并映射到圆上。然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过2^32仍然找不到服务器,就会保存到第一胎memcached服务器上。这样在添加一台服务器,只有在continuum上增加服务器的地点逆时针方向的第一胎服务器的键会受到影响,
阅读全文
摘要:1. cron认识 crontab [-u username] [-l|-e|-r] -e是编辑crontab 的工作内容 -l是查阅crontab的工作内容 -r是删除所有的crontab内容,如果想要移除一项,只能用-e去编辑了 2.使用注意 首先要查看一下/etc/cron.deny里面的内容,如果自己这个用户存在这个文件里,那么久不能使用crontab,这一点和at的使用很相似(/etc/at.allow和/etc/at.deny)。 在crontab -e 编辑的时候,是按照 分钟 小时 日期 月份 周 指令来编辑的,要注意的是如果每个时间后都有一个空格,不能多也不能少。...
阅读全文
摘要:1. Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。 例如:select * from wp_posts where post_name REGEXP 'hello',可以检索出列post_name中所有包含hello的行 REGEXP '.og' .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,dog,hog,mog等等都能匹配。注意: 关于LIKE和REGEXP的区别:LIKE匹配整个列。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)。而REGEXP在列值内进行匹配
阅读全文
摘要:Memcached的特点: 协议简单 基于libevent的事件处理 内置内存存储方式 memcached不互相通信的分布式 1.协议简单: 使用简单的基于文本的协议,因而通过telnet也能在memcached上保存数据、取得数据 2.基于libevent: 将Linux等操作系统事件处理功能封装成统一的接口,能在Linux、BSD等操作系统上发挥其高性能 3.内置内存存储方式: 为了提高性能,memcached中保存的数据都存储在memcached内置的存储空间中,如果内容容量达到指定的值以后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存 ...
阅读全文
摘要:大规模服务: 可扩展,负载均衡,保证冗余,低运维成本,开发人数和开发方法的变化 数据处理: 磁盘—>内存—>缓存—>CPU 障碍: 持续增长的服务,”无法在内存中计算“(内存要比磁盘快10^5~10^6倍) Linux的页面缓存: 先把磁盘内容读入内存 ——>建立页面 建立好的页面不会释放而是保存下来 ——>页面缓存 除了例外情况,页面缓存会透明地作用在所有I/O上 ——>例外的情况为负责磁盘缓存部分(VFS) VFS(Virtual File System):虚拟文件系统VFS作为一个抽象层,统一各个文件系统不同的函数,使之拥有共同接口,从而使用同样的机制
阅读全文
摘要:先放上自己前两年做的几个视频吧,懒了,本打算做8个,只做了4个。http://www.boobooke.com/v/bbk4407http://www.boobooke.com/v/bbk4414http://www.boobooke.com/v/bbk4415http://www.boobooke.com/v/bbk4416此文讲解的是vim编辑多字节编码文档(中文)所要了解的一些基础知识,注意其没有涉及gvim,纯指字符终端下的vim。 vim编码方面的基础知识: 1,存在3个变量: encoding—-该选项使用于缓冲的文本(你正在编辑的文件),寄存器,Vim 脚本文件等等。你可以把 ‘
阅读全文
摘要:前言: 从开博到现在,一直想写点东西,可是看了几天书,发现新东西很难深入,但又不想让博客荒芜,遂决定,总结之前所学,以文字记之。一方面看自己学习中遗漏了什么,便于查漏补缺;另一方面则是锻炼一下自己的表达能力,看自己是不是真正的理解透彻了,能不能将自己的知识、自己的经验分享给他人,从而融入一个团队,更好地学习与交流。准备工作: 1.获取jQuery:从大的方面来说,jQuery有两个版本,一个是完整版(Full),一个是压缩版(Min),这两个版本在使用上是没有任何区别的,只不过Min版本是压缩的,体积更小,在网络上使用起来性能更好,而在功能上并未有任何的阉割。(Tip:以前自己傻×了
阅读全文