善假于物
文章平均质量分 57
R先森
没有偶然的成功,只有必然的失败。
展开
-
Spring Cloud Eureka的自我保护机制
自我保护背景首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运行。默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,而微服务本身是正转载 2017-12-17 22:02:29 · 2815 阅读 · 1 评论 -
通俗的来讲RPC是什么?
http://www.zhihu.com/question/25536695转载 2016-08-26 10:09:38 · 306 阅读 · 0 评论 -
REST的几个常见错误
过去几年我的工作和学习一直围绕RESTful API,我在不同的项目和社区中见过很多相同的错误,于是我就决定,将我在网上读到的和我自身的经验整理一下。下面这些,是常见的一些设计错误、解释以及例子。URI不够RESTful你的URI没有反应相应资源的用途。RESTful的API是基于资源的,当我们设计URI的时候,要时刻铭记我们应该通过URI正确反映资源,要让用户一看到URI,就能明白这转载 2016-09-14 09:42:02 · 6498 阅读 · 1 评论 -
Python验证码识别
关于python验证码识别库,网上主要介绍的为pytesser及pytesseract,其实pytesser的安装有一点点麻烦,所以这里我不考虑,直接使用后一种库。一、python验证码识别库安装要安装pytesseract库,必须先安装其依赖的PIL及tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google的ocr识别引擎。1、Pillo原创 2016-06-20 23:51:00 · 851 阅读 · 0 评论 -
Worktile中百万级实时消息推送服务的实现
在团队协同工具 Worktile的使用过程中,你会发现无论是右上角的消息通知,还是在任务面板中拖动任务,还有用户的在线状态,都是实时刷新。Worktile中的推送服务是采用的是基于XMPP协议、Erlang语言实现的Ejabberd,并在其源码基础上,结合我们的业务,对源码作了修改以适配我们自身的需求。另外,基于AMQP协议也可以作为实时消息推送的一种选择,踢踢网就是采用 RabbitMQ+S转载 2016-07-06 11:29:08 · 1369 阅读 · 0 评论 -
ejabberd中的http反向推送
http的反向推送通常使用"长轮询"或"长连接"的方式。 所谓"长轮询"是指客户端发送请求给服务器,服务器发现没有数据需要发送给客户端于是hold住不及时返回,等有数据需要发送给客户端时,进行回复,然后关闭连接,客户端收到回复后再发送新的http请求,以便服务器能有对应的请求用于消息的反向推送。而"长连接"是在长轮询的基础上增加"keep-alive"属性,服务器收到请求后不直接回复,转载 2016-07-06 11:09:53 · 784 阅读 · 0 评论 -
AJAX跨域请求-JSONP获取JSON数据
Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索。使用XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器。Ajax 也是许多 mashu转载 2016-06-20 11:29:48 · 488 阅读 · 0 评论 -
开始Sencha Touch 2之旅 -- Sencha Touch 官方指南系列
Sencha Touch是什么?Sencha Touch (以下简称ST)能够帮助你快速地构造出基于HTML5的手机应用。通过ST构造出来的程序有着与原生应用一致的用户体验,目前已全面支持Android、IOS、黑莓这些主流平台。准备工作您不需要太多的准备。只需要:一个免费的Sencha Touch SDK。一个本机的web服务器。一个支持HTML5的浏转载 2016-06-20 10:59:43 · 433 阅读 · 0 评论 -
Spring mvc 中使用 kaptcha 验证码
生成验证码的方式有很多,个人认为较为灵活方便的是Kaptcha ,他是基于SimpleCaptcha的开源项目。使用Kaptcha 生成验证码十分简单并且参数可以进行自定义。只需添加jar包配置下就可以使用。kaptcha所有配置都可以通过web.xml来完成,如果项目使用了Spring MVC,那么实现方式会略有不同。一、Servlet项目1、添加jar包依赖 maven项目转载 2016-07-15 10:29:32 · 435 阅读 · 0 评论 -
分布式一致性算法--Paxos
Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法。Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。在工程实践意义上来说,就是可以通过Paxos实现多副本一致性,分布式锁,名字管理,序列号分配等。比如,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证转载 2016-07-14 18:54:24 · 1625 阅读 · 0 评论 -
Wireshark过滤器
什么是Wireshark? 屏幕截图 系统要求 安装 运行Wireshark 界面说明 过滤器 统计 Chinese translation by Jie Yu & Si Cheng.If you like our tutorials, don't hesitate to support us and visit转载 2016-06-07 15:56:55 · 506 阅读 · 0 评论 -
Wireshark教程(简介,抓包,过滤器)
Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样,Wireshark也使用pcapnetwork library来进行封包捕捉。可破解局域网内QQ、邮箱、msn、账号等的密码!! wireshark的原名是Ethereal,新名字是2006年起用的。当时Ethereal的主要开发者决定转载 2016-06-07 15:55:47 · 492 阅读 · 0 评论 -
Ubuntu 14.04 LTS pip安装
wget https://bootstrap.pypa.io/get-pip.pysudo python get-pip.py原创 2016-04-16 09:29:25 · 347 阅读 · 0 评论 -
再来一发邮箱真实性验证
最近遇到一个需求:需要验证用户填写的邮箱地址是否真实存在,是否可达。和普通的正则表达式不同,他要求尝试链接目标邮箱服务器并请求校验目标邮箱是否存在。先来了解 DNS之MX记录 对于DNS不了解的,请移步百度搜索。 DNS中除了A记录(域名-IP映射)之外,还有MX记录(邮件交换记录),CNAME记录(别名,咱不管)。 MX记录就是为了在发送邮件时使用友好域名规转载 2016-04-15 18:06:43 · 3815 阅读 · 2 评论 -
Java验证邮箱有效性和真实性
Java验证邮箱是否真实存在有效要检测邮箱是否真实存在,必须了解两方面知识:1. MX记录,winodws的nslookup命令。查看学习2. SMTP协议,如何通过telnet发送邮件。查看学习有个网站可以校验,http://verify-email.org/, 不过一小时只允许验证10次。代码如下:import java.io.IOException;import转载 2016-04-14 11:32:56 · 19469 阅读 · 13 评论 -
淘宝开放api
http://open.taobao.com/doc2/apiList.htm原创 2016-04-10 15:29:49 · 512 阅读 · 0 评论 -
git push到github报:fatal: HTTP request failed 的可能原因
1)git版本的问题。 使用如下指令查看版本: # git --version git version 1.7.0.1 可以通过安装更高的版本解决问题2)系统的时间不对使用命令date -s "25 MAY 2015 13:45:00"修改时间即可。3)待续原创 2016-04-08 15:44:29 · 1537 阅读 · 0 评论 -
开发web应用时firefox获取小的静态图片时重复提交请求的bug
最近项目需要图形验证码,于是乎着手写了一个,代码如下:/**省略import*/@Controllerpublic class CaptchaController { private static final Logger logger = Logger .getLogger(CaptchaController.class); private static final Str原创 2016-08-26 16:57:40 · 781 阅读 · 0 评论 -
redis的三种启动方式
Part I. 直接启动 下载官网下载安装tar zxvf redis-2.8.9.tar.gzcd redis-2.8.9#直接make 编译make#可使用root用户执行`make install`,将可执行文件拷贝到/usr/local/bin目录下。这样就可以直接敲名字运行程序了。make install启动#加上`&`号使redis以后台程序方式运转载 2016-10-24 11:15:42 · 252 阅读 · 0 评论 -
JVM系列-参数调优1
说到JVM的参数调休,一定得知道JVM的内存结构,理解JVM内存结构的参数调优都是耍流氓,参数调优至少要知道调的是什么,优化的是什么。JVM内存和物理机内存其实是有很多对应关系的,JVM的内存也受到物理机内存的约束,毕竟JVM内存是基于物理内存虚拟出来的东西,大体来说,JVM内存分为heap区、stack区、method区、程序计数器,再细分一点的话heap区又分为新代和老代,栈区又分为j原创 2017-12-16 17:03:14 · 4140 阅读 · 1 评论 -
Failed to introspect annotated ** org.springframework.boot.web.support.SpringBootServletInitializer
一个spring-boot项目想以外部的tomcat部署而不是内嵌的方式,这个时候需要让spring-boot入口类继承至SpringBootServletInitializer并重载configure方法,并给项目的打包方式改为war,同时添加如下依赖: org.springframework.boot spring-boot-starter-原创 2017-11-23 10:45:47 · 7683 阅读 · 0 评论 -
ZuulProxy fails with “RibbonCommand timed-out and no fallback available” when it should do failover
https://stackoverflow.com/questions/32113671/zuulproxy-fails-with-ribboncommand-timed-out-and-no-fallback-available-when-it这里可以找到答案转载 2017-12-08 11:41:58 · 1234 阅读 · 0 评论 -
基于zookeeper的服务注册中心
1.ZooKeeper中的节点ZooKeeper是一个树形结构的目录服务,支持变更推送,因此非常适合作为Dubbo服务的注册中心。注:在ZooKeeper中,节点分为两类,第一类是指构成集群的机器,我们称之为机器节点;第二类是指数据模型中的数据单元,称之为数据节点ZNode。ZooKeeper将所有数据存储在内存中,数据模型是一棵树(ZNode Tree),由斜杠(/)进行分割转载 2017-11-01 17:40:53 · 900 阅读 · 0 评论 -
XML几种解析方式以及其试用场景
XML解析方式XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标转载 2017-11-01 11:07:52 · 1675 阅读 · 0 评论 -
一些很好的技术资源链接
IBM developerworks原创 2017-11-01 08:36:37 · 408 阅读 · 0 评论 -
Git push 出错以及server端没有显示push后的文件的解决方法
Git: push 出错的解决 master-> master (branch is currently checkedout)在使用GitPush代码到数据仓库时,提示如下错误:[remote rejected]master -> master (branch is currently checkedout)remote: error: refusing to update chec转载 2017-08-09 22:53:29 · 1851 阅读 · 1 评论 -
GIT分支创建与合并
原文地址:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6Git 分支 - 分支的新建与合并分支的新建与合并让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可转载 2017-08-01 19:02:39 · 312 阅读 · 0 评论 -
Java NIO框架--Netty4的简单示例
摘要: Java NIO框架--Netty4的简单示例简介 相比Netty3, Netty4有很多显著的变化: NioEventLoopGroup 是一个处理I/O操作的多线程事件环。即为Netty4里的线程池,在3.x里,一个Channel是由ChannelFactory创建的,同时新创建的Channel会自动注册到一个隐藏的I/O线程。 4.0转载 2016-11-25 19:27:25 · 2161 阅读 · 1 评论 -
RPC框架性能基本比较测试
gRPC是Google最近公布的开源软件,基于最新的HTTP2.0协议,并支持常见的众多编程语言。 我们知道HTTP2.0是基于二进制的HTTP协议升级版本,目前各大浏览器都在快马加鞭的加以支持。 我们可以设想一下,未来浏览器支持HTTP2.0,并通过现有开源序列化库比如protobuf等,可以直接和各种语言的服务进行高效交互,这将是多么“美好”的场景!gPRC的Java实现底层网络库转载 2016-11-24 17:16:17 · 664 阅读 · 0 评论 -
动态代理和静态代理的区别
作者:雨夜偷牛的人链接:https://www.zhihu.com/question/20794107/answer/23330381来源:知乎著作权归作者所有,转载请联系作者获得授权。关于动态代理设计模式很可能题主就在不知不觉中使用了,例如Spring中的AOP,Struts2中的拦截器等。先来看静态代理模式代码:package test;public i转载 2016-11-23 17:56:15 · 1093 阅读 · 0 评论 -
谁能用通俗的语言解释什么是RPC框架?
原文地址:https://www.zhihu.com/question/25536695转载 2016-11-22 11:20:18 · 327 阅读 · 0 评论 -
云主机提示Disk /dev/xvdb doesn’t contain a valid partition table
首先参考如下文章:http://heyongchao.com/ali-cloud-hosting-tips-disk-dev-xvdb-doesn-t-contain-a-valid-partition-table.do之后发现还不行,无法格式化,于是又找了下面的文章:http://www.netshield.cn/support/4560/问题原因:格式化扩展分区转载 2016-11-21 16:50:43 · 808 阅读 · 0 评论 -
百度、腾讯和阿里内部的级别和薪资待遇是什么样的?
级别和薪资待遇,除非身居其位,否则你不会知道;但是等你到那个位置知道了,却又不能说,至少不能在公开场合谈论。这是一个群众喜闻乐见却又讳莫如深的话题。别问我是怎么知道答案的,我不是互联网猎头,我正在做的事就是要用互联网产品替代猎头,因为猎头不透明、不全面,还死贵。各个公司头衔名字都不一样,级别的数目也不一样;有些扁平,有些很多level慢慢升;有些薪水范围严格跟级别挂钩,有些薪水跟级别没绝对转载 2016-11-21 11:35:29 · 6024 阅读 · 0 评论 -
linux内存清理
1、运行sync将dirty的内容写回硬盘sync2、echo 1 > /proc/sys/vm/drop_caches意思是:Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become f原创 2016-11-20 16:18:17 · 401 阅读 · 0 评论 -
nginx和tomcat的入门整合
一.安装Tomcat和jdk 1.安装jdk# tar xvf jdk1.6.0_11.tar# mv jdk1.6.0_11 /usr/local/配置环境变量# vim /etc/profile 添加JAVA_HOME=/usr/local/jdk1.6.0_11export JAVA_HOMECLASSPATH=.:$JAVA_HO转载 2016-11-18 11:09:51 · 338 阅读 · 0 评论 -
扯淡nginx的sendfile零拷贝的概念
今天在看nginx thread pool的时候,频繁的看到sendfile,其实以前也经常看到sendfile,只是我平时选择性的忽视而已。。。 先说下sendfile,明天在好好聊下nginx 线程池的一些突发点, 通过伪官方的博客介绍了如何利用nginx 线程池aio,实现9倍的性能…. 个人看了下,他核心的概念就是把你认为堵塞的模块或者说是逻辑扔到线程池里面,然后去接受新的任务,当有结果的转载 2016-11-16 17:46:20 · 1719 阅读 · 0 评论 -
Eclipse在导入项目时出现“No projects found to import”解决办法
http://stackoverflow.com/questions/2638016/why-no-projects-found-to-import转载 2016-03-25 15:12:02 · 1140 阅读 · 0 评论 -
阮一峰的博客
http://www.ruanyifeng.com/blog/原创 2016-04-07 10:17:46 · 16742 阅读 · 3 评论 -
Git协议深度解析(来自官方文章)
原文地址:https://git-scm.com/book/zh/ch4-1.html4.1 服务器上的 Git - 协议到目前为止,你应该已经有办法使用 Git 来完成日常工作。然而,为了使用 Git 协作功能,你还需要有远程的 Git 仓库。尽管在技术上你可以从个人仓库进行推送(push)和拉取(pull)来修改内容,但不鼓励使用这种方法,因为一不留心就很容易弄混其他人的进转载 2016-03-22 19:53:01 · 642 阅读 · 0 评论 -
Linux文件解压
*.tar 用 tar –xvf 解压*.gz 用 gzip -d或者gunzip 解压*.tar.gz和*.tgz 用 tar –xzf 解压*.bz2 用 bzip2 -d或者用bunzip2 解压*.tar.bz2用tar –xjf 解压*.Z 用 uncompress 解压*.tar.Z 用tar –xZf 解压*.rar 用 unrar e解压*.zip 用 unzip 解压原创 2015-12-11 20:56:18 · 321 阅读 · 0 评论