2014 年 12 月 - 24 文章

理解一致性哈希算法

  |   0 评论   |   1,543 浏览

一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1、平衡性(Balance): 平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。 2、单调性(Monotonicity): 单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到原有的或者新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。 3、分散性(Spread): 在分布式环境中,终端有可能看不到所有的缓冲,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上时,由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端….

mysql数据库主从复制

  |   0 评论   |   1,734 浏览

mysql主从复制数据库配置 为了备份一下博客的mysql数据库,想在自己的家里服务器上做一个mysql从库,用来实时备份。先说一下软件安装的环境现状,花了不少时间在配置这个上面,本来是一个挺简单的事情, 但是需要做好也不太容易,遇到了不少问题,下面详细描述下。 博客在线主机 阿里云服务器(ubuntu14.04) 直接使用的是lnmp中的mysql版本号是:Server version: 5.5.37 主要是备份我wordpress站点数据库:wp 家里台式机做的服务器 系统(ubuntu14.04) 使用云安装(apt-get)的方式安装了一个mysql 版本Server version: 5.5.38 上面已经有好几个数据库 ,都是用来做测试用的 暂且就说是 a,b,c三个数据库吧 之前想到要做一个线上的从库, 考虑到直接下载源码安装一个, 但是一直失败,没有找到什么原因, 反正编译安装完就一直不能启动,终于理解为什么别人不用自带的安装了,有些配置什么的 ,都是默认的, 如果想再装一个可能就不好装了。 在上网查找的时候,发现有一个方式是,启动多个实例的方式, 不过我不太清楚能不能….

能用自己技术为社会尽自己的一份力,做一点贡献,我很开心

  |   0 评论   |   1,503 浏览

您好: 在泄露账号中发现您的邮件地址,特友情提示发送信息提示及时修改密码,如有打扰请谅解。 记录信息为:xxxxxx 如果不修改密码,很容易泄露联系人的信息,您的账号信息,身份证信息,甚至订购的火车票也可能被人退票。还有其他网站上的同名账号密码都必须同时需求。 如果对您有帮助的话,请关注我博客善忘技术夹或者关注我的微信号:swjsj_com 可以扫描

Docker学习(一)

  |   0 评论   |   1,521 浏览

docker学习 参照百度百科的内容 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。 优势 由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。 1. 构建标准化的运行环境,现有的方案大多是在一个baseOS上运行一套puppet/chef,或者一个image文件,其缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write 的文件格式在运行时rootfs是read only的)。并且后者文件体积大,环境管理和版本控制本身也是一个问题。 2…..

在家里利用宽带花生壳架设服务器

  |   0 评论   |   1,505 浏览

作为一个程序员,如果有自己的服务器,做个svn什么的,放点代码, 做个网站,存放一些数据, 在外面通过网络能直接访问, 这也算是一个比较美好的事情吧。当然,在天朝, 就不要期望在自己的服务器上做个外网访问的网站了。除非你能不用80端口来做网站,还有人访问,否者的话, 就放弃吧。不过自己用的网站,或者测试用的, 还是没有问题的。下面就说说我自己的配置 一、前置条件 一台电脑 (稳定的,性能不用太好省电,最好是台式机,你总不能天天开着笔记本放那,为了稳定性,还是放弃windows吧,server也不行,建议还是弄个linux,我对ubuntu熟悉一点, 所以就用ubuntu了。) 宽带(这个就不说了,网速越快越好了,不过如果你家里的网络是小区宽带,宽带通什么的, 直接放弃吧,没有外网ip,什么都做不了, 我用的是联通的20M光纤,坑爹的联通上传速度是300k左右,在这里要痛诉一下假宽带,如果ADSL基本上都能实现的) 花生壳账号 (这不需要有独立的域名, 现在绑定独立域名好像收费了,我绑定的早,免费的用的挺好,就直接上http://hsk.oray.com/去注册申请一个吧,用花生壳提供的….

使用快盘api存储文件,开发应用(一)

  |   0 评论   |   1,492 浏览

没有看到官方的java实现的jdk,打算自己的弄一个。 只看到官方上面提供了,api调用接口文档, 打算自己来显示auth来登陆的, 在github上面发现有一个可以直接用的已经实现好的sdk叫做 kpsdk-java.先试试看, 看快盘有没有禁用这些api的权限, 先弄一个, 以后在自己的网站上用来做备份数据也挺好的, 比起百度来说, 快盘算是厚道的, 至少提供api给你调用,而不是百度云上面的显示pcs的申请。直接不让你用,管你会不会编程, 就是不给你服务,弄的我现在使用php的那个上传,还担心每个月需要重新授权。 从github上下载工程下来,直接导入工作目录就能使用了,github上文档还是比较详细的, 基本上都讲到了。可以认证看看上面文档内容, 了解工作流程。 然后按照运行说明来操作,注意如果你使用的是myeclipse的话, 部署tomcat就不是第5个操作了, 直接把contextpath修改一下, 然后部署到自带的tomcat下吧。 1.请使用jdk 1.6以上版本 2.需要commons-codec,commons-httpclient,commons-logging….

如何快速掌握一门技术

  |   0 评论   |   1,515 浏览

几周前一个朋友也打算通过跑步来甩一甩脂肪,控制一下自己那已经严重扭曲了的身材 —— 他便求教我从衣服到鞋,从腕表到心率带,都买了什么装备,性能如何,他好照着原样来一套。我告诉他我什么装备都没买,跑了半年多了,我还是随便套上件纯棉的T恤,穿条舒服的运动短裤,蹬着跑鞋,抓着手机,就这么跑将起来。他连连说不信,一个连排汗速干的衣服,臂包,运动腕表都没配的人,怎么也能(配得上)跑步? 这让我想起了我在撰写「程序人生」公众号经常会遇到的一些读者留言: 「我想学rails,有没有推荐的ruby的入门书籍?」 「我想学android,对java掌握到什么程度才能开始呢?」 「我c/c++还没入门,能直接学python么?」 这些问题都是初学者常常萦绕心头的疑虑。在我们自己的现状和想要达成的目标间,总是横亘着一条名为「先决条件」的大河,似乎除了花费巨大的精力游过这条大河外,别无他法。很不幸,大部分人还没能够接近目标,便被湍急的水流冲走了。然而,还是有少部分人似乎坐上了阿拉丁的魔毯,毫无迟滞地直达彼岸,好像学什么技术都不那么费劲。这是怎么回事? 学一门新的语言,或者新的技术,与其说是一种能力,不如说是一….

JAVA自带线程池使用

  |   0 评论   |   1,423 浏览

简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。 线程池 线程池的作用: 线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了;否则进入等待队列。 为什么要用线程池: 减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。 可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)….

简单的线程池及其实现

  |   0 评论   |   1,486 浏览

本文主要参考了这篇文章,并在这个基础上做了一些修改。 进程,线程是现代操作系统两个比较重要的概念。正是由于它们的存在,使得程序和并发执行得了实现。通常,创建一个线程的代价远远小于创建一个进程,所以多线程是编写并发程序的首要选择。然而,即使有多线程,当线程数量太大时,不断的创建线程也会影响系统的性能,这时,我们可以创建线程池来达到重用线程的目的,从而尽可能有减小开消,从而大大提高系统性能,比如在网络爬虫heritrix中就使用了线程池。 以下是一个简单线程池的实现(java程序)。 本程序由4个类构成,TestThreadPool,用来测试的类,用来模拟客户端的请求。它会创建20个任务(Task),交给线程池(ThreadPoolManager)处理。 线程池默认维护10个线程,当客户请求一个任务时,它会获取一个空闲线程,然后 处理交给该线程(SimpleThread)处理。 TestThreadPool 测试线程 package threadpool; public class TestThreadPool { public static void main(String[] args….

JAVA虚拟机类加载器加载顺序

  |   0 评论   |   1,554 浏览

JAVA虚拟机类加载器加载顺序 默认类加载顺序(父类优先) Websphere采用的是父类优先的类加载顺序。通过websphere控制台——故障诊断——类装入器查看器 我们可以看到一个应用在websphere上部署完成启动后真正形成的类加载层次: 类加载层次是: JDK扩展装入器(也就是java类加载器中的扩展加载器(Extensions))——应用程序装入器应用程序加载器(Application)——OSGI(was6.1新特性)装入、引导程序、类保护器——组合类装入器——组合类装入器 改变类加载顺序(应用程序优先) “应用程序优先”的类加载顺序的结果是: 引导加载器(Bootstrap)——原来最低级的web和module加载器——扩展加载器(Extensions)——应用程序加载器(Application)——was扩展classloader、WAS应用程序类加载器 类加载器有一个重要的属性:委托模式(Delegation Mode,有时也称为加载方式:Classloader mode)。委托模式决定了类加载器在查找一个类的时候,是先查找类加载器自身指定的类路径还是先查找父类加载….

Comet:基于 HTTP 长连接的“服务器推”技术

  |   0 评论   |   1,541 浏览

服务器基于tomcat实现 (基于 AJAX 的长轮询(long-polling)方式) 修改tomat配置文件支持comet 修改protocol= “HTTP/1.1” <Connector connectionTimeout=“20000” port=“8080” redirectPort=“8443” protocal =“org.apache.coyote.http11.Http11NioProtocol” /> 创建servlet,实现CometProcessor,不用实现doget dopost的对应service方法 实现的event方法:处理各种请求,根据状态不同得到各种响应 获取响应的request 和 response 长连接方式支持不太好, (长连接方式,状态码是3,只有firefox支持,其他浏览器不支持) //基于流的方式,只有一个连接,全部都使用同一个response来传递,不能关闭流 out.print(l); out.flush(); 长轮询方式: function poll(){ var xhr =createXMLHttpRequest….

使用markdown写blog

  |   0 评论   |   1,560 浏览

新的开始 优点 缺点 sublime text 2配置 Sublime Text 2的快捷键 其它Ubuntu 下的Markdown 工具 一个Markdown语法高亮主题 新的开始 markdown语法说明,这篇文章将的很详细,基本的语法,都已经说的很清楚了。 花半个小时来操作练习一下,就能熟悉了,但还是要多用,毕竟不用,太容易忘了。 和vi编辑器一个样,不用的话,过几天,什么命令都忘光了。只是对于wordpress的支持并不是很好 没有尽善尽美的工具,只要适合自己的工具就好。 优点 语法简单简洁,比起HTML来说,要简单多了。 格式美观,更适合阅读,哪怕是没有样式也能很好阅读 兼容HTML 特殊字符自动转换, 这对于经常有代码快的人来说, 是很方便的 缺点 列表显示是硬伤 图片不能设置大小 编辑器没有一个好用,mac下的mou没有用过不清楚,windows下的是真不方便 有些在线编辑器能和笔记功能绑定,这一点非常的好,但需要付费,客户端工具没有。 没办法,我习惯文本编辑器是sublime text 2,记录笔记用印象笔记,印象笔记不支持直接使用markdonwn格式的语法,只能写好….

学习编程用什么做笔记比较好?

  |   0 评论   |   2,216 浏览

  问:学习编程用什么做笔记比较好? 学习的时候做笔记,Word排版很好,但是处理代码就不是太方便。请问有没有推荐的工具? pezy,互联网的搬运工 【常规笔记攻略】 1、笔记格式化最好的选择无疑是 Markdown 语法。(越来越成为通用格式,对代码有极好的支持) 对于它的简介与使用方法可以参考这个回答:怎样引导新手使用 Markdown? 另参见:Markdown 2、最好的电子笔记公认是Evernote,国内版本叫做印象笔记。 对于它的介绍可以参考这个回答:印象笔记(Evernote)有哪些常见的用途? 其主页:印象笔记 | 记录点点滴滴 3、连接这两者的工具,可以选择马克飞象。 地址如下:http://maxiang.info/ 利用 Evernote 做好笔记的技巧和习惯,网上有很多前辈分享他们的使用心得。也可以搜来看看。 请见:印象笔记之使用窍门 最后愿你能把笔记做好,更高效的学习。 更新: 最近发现一个工具几乎可以兼备以上的全部特性: Cmd Markdown 编辑阅读器 你不需要过分纠缠 Markdown 语法的细节(因为它还提供了类似 Word 一样的工具栏….

kindle114下载中心电子书资源下载

  |   0 评论   |   2,649 浏览

  上午刚刚弄好的, 结果下午就发现了, 好多资源没有办法下载,都需要k币的,测试了一下, 能免费下载的资源已经很少了。 kindle114上资源还是挺不错的, 有很多电子书很适合kindle上阅读,电子书的资源很多, 根本看不过来, 最近朋友做微信推送电子书的功能。需要大量的电子书,正好,网上有源码用来下载这个站点,只是用的是python写的东西,好久没有了,python这东西,早就不知道丢哪去了。调试环境都没有, 直接用java弄一个好了。以下就是我做这个小工具的过程。 首先肯定是先看看网页的源文件,发现查找资源不需要登录, 但下载资源需要登录。没有登陆会跳转到错误页面。 本来一个很简单的东西,中间遇到的一个问题,一直怀疑是程序的问题,后来发现,还是不够仔细的问题。用多线程下载的时候, 始终下载的资源都是一样的,其实只是解析页面的时候,左边栏目中有一个热门下载没有排除掉。。看下面的这个图,每个页面都有,造成了干扰, 使用css过滤一下就行了。 还有一个很严重的错误, 就是没有使用jsoup获取页面源码的时候, 没有设置模拟浏览器终端的问题,导致了,总是访问页面,访问到手机….

springMVC 4.1.1使用注解@ResponseBody返回json的时候出错

  |   0 评论   |   1,395 浏览

错误提示: 大概有三行这样的错误,都是提示相同的内容信息 org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation 网上给出的信息都是添加jackson需要的两个jar包, 添加上去了还是同样的错误 org.codehaus.jackson jackson-core-asl 1.9.13 org.codehaus.jackson jackson-mapper-asl 1.9.13 可能之前的版本spring版本只需要添加这两个,到了spring 4的版本好像不行了。 必须要添加下面的版本了   com.fasterxml.jackson.core jackson-databind 2.4.3

jQuery插件滚动加载更多jqueryscrollpagination

  |   0 评论   |   1,469 浏览

插件下载github路径:https://github.com/andferminiano/jquery-scroll-pagination   今天使用这个插件,主要是用来滚动加载更多产品列表信息。但是发现有个地方,就是后台传值的功能。如果默认按照样例里面的方法传值的话,ajax调用的参数,url,data参数是初始化设置的, 对于获取翻页参数动态传值不方便。如下图:   所以进行了修改,添加了一个传参数的方法,方便调用 ,动态传参数进去,如下图 添加代码: var parm = opts.contentData; if (opts.parm != null){ parm = opts.parm(); } 对应ajax方法中,data参数修改成 data:parm, 这样就行了。前面调用的方法和demo中的调用方法一样。 以下是我调用的代码,加粗的地方属于自己新增的代码 $(‘.pro_list’).scrollPagination({ ‘contentPage’: “/prodetailsmore”, ‘contentData’:$(“#proform”).se….

was服务器提示打开文件过多问题

  |   0 评论   |   1,573 浏览

Linux下运行tomcat出现java.net.SocketException: 打开的文件过多错误 tomcat报“too many open files”的错误,解决办法如下: 报此错误是由于系统内核对进程打开文件个数的限制,默认为1024 [root@localhost ~]# ulimit -n 1024 修改参数,增大这个限制: #vi /etc/security/limits.conf 增加下面这一行内容: * - nofile 65535 将限制增加到65535 注意"nofile"项有两个可能的限制措施。就是项下的hard和soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用"-"字符设定, 则hard和soft设定会同时被设定。 硬限制表明soft限制中所能设定的最大值。 soft限制指的是当前系统生效的设置值。 hard限制值可以被普通用户降低。但是不能增加。 soft限制不能设置的比hard限制更高。 只有root用户才能够增加hard限制值。 重启机器使修改配置生效 [root@localhost ~]# ulimit -n 655….

程序员怎么学好英语

  |   0 评论   |   1,453 浏览

一直以来, 都知道学好英语很重要, 尤其是在计算机方面的,英语好的话, 成功基本上是多了一半。好的文档,好的书籍,技术,计划无一例外的是来自国外, 大部分都是英文文档,等到中文翻译版本, 有些翻译还特别的难以理解。这就发现, 学习新技术等,英文有多么的重要。关键在于坚持,热情大家都有,周末样坚持下来,才是最重要了,我无数次开始,无数次放弃。现在已经记不清楚了。 以下是来自《人生元编程》中的一个方法,希望对大家有用, 我看到觉得挺有道理了。不管什么行业,需要学习英语的话,都试试吧, 万一坚持下来,又或者万一成功了。      一个相对容易坚持的办法就是,找一本和当前工作相关的、急需的技术图书,每天拿出一小时阅读,不认识的单词,如果不影响阅读可以不查词典。如果某个单词多次出现,那么就该查下词典并计入生词本。如果你能坚持查阅英英词典,那么提高就会更快了。每天坚持一小时,这本书读完,你就会发现自己的阅读能力提高了一大截。这样看来提高阅读能力似乎很简单,但是,问题的关键是,你能否坚持下来,尤其是阅读初期,你只能看懂20%,需要不停的查字典,单词记了又忘,几个星期过去….