HttpClient模拟登录流程

不管是抢购火车票还是电商网站上抢购商品,如果在节假日没有抢购工具是很难靠手动抢到的,所以市面上的抢购工具也是层出不穷,但流程都是差不多的,大体上分为2步: 今天主要介绍一下第一步:模拟用户登录,作为登录我也把它拆分成了这4步: 准备 1.chrome浏览器:因为需要借助chrome强大的开发者工具 2.开源中国的在线工具:密码的加密解密和一些格式化工具方便查看 3.eclipse:开发工具 模拟登录–以下仅供个人学习使用 1.分析请求地址 主要分析验证码的请求,登录的请求,以及为登录提供参数的请求,选定一个网站比如:开源中国,进入它的登录界面:https://www.oschina…

阅读全文 »

Reactor和Proactor模式

在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。 同步和异步 同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。 阻塞和非阻塞 阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回一个状态值。 I/O模型可以分为:同步阻塞,同步非阻塞,异步阻塞,异步非阻塞IO 1.同步阻塞 用户进程在发起一个…

阅读全文 »

redis脚本实现分布式锁

redis被大量用在分布式的环境中,自然而然分布式环境下的锁如何解决,立马成为一个问题。例如我们当前的手游项目,服务器端是按业务模块划分服务器的,有应用服,战斗服等,但是这两个vm都有可能同时改变玩家的属性,这如果在同一个vm下面,就很容易加锁,但如果在分布式环境下就没那么容易了,当然利用redis现有的功能也有解决办法,比如redis的脚本。 redis在2.6以后的版本中增加了Lua脚本的功能,可以通过eval命令,直接在RedisServer环境中执行Lua脚本,并且可以在Lua脚本中调用Redis命令。 使用脚本的好处: 1.减少网络开销:可以把一些要批量处理的功能,发在一个脚本里面执…

阅读全文 »

Redis有多耐久还看fsync

redis提供了2中持久化方式,分别是: RDB方式:可以在指定的时间间隔内,生成数据集的时间点快照(point-in-time snapshot) AOF方式:全称(append-only file)AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。Redis 还 可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。 由于rdb方式是时间间隔内生成一次快照,所有它的耐久度是很低的; aof方式的耐久度得看redis多久将数据fsync到磁盘一次,有三种选项: 选项一:每次有新命令追加到 AOF…

阅读全文 »

程序员都应该有一台自己的服务器

我相信很多程序员都和我一样,经常需要和google的一些服务打交道,特别是google的搜索引擎,但是由于国内无法访问,这时候大多数情况下我们都会考虑vpn,通过vpn去浏览国外的网站。这时候我们大多会选择免费的vpn或者收费的vpn; 免费的vpn: 1.可能会面临一些不稳定的因素,可能你刚好要查一个很重要的资料,但是这时候确连接不上 2.不安全,毕竟你的数据是经过别人的服务器 收费的vpn: 1.每个月大概支付20元左右 2.也同样存在不安全的问题 我相信很多程序员也经常有这样的需求,出于爱好做一些简单的app或者游戏,又或者搭建一个自己的个人博客网站,这时候我们需要一台外网服务器,你可能…

阅读全文 »

redis存储对象

redis已经应用相当广泛了,但redis本身并没有直接存储对象的方法,我们可以通过转换对象的方式来存储对象。 大致总结了以下几种方案来存储对象: 方案一:序列化对象为二进制 使用redis的接口: 至于序列化方式,我们有很多种选择,比如:Java serialize,Protobuf,或者自己手动序列化都行 方案二:序列化对象为字符串 使用redis的接口: 序列化为字符串,我们也有很多选择:Json(Jackson,FastJson),Xml等方式 方案三:转换对象为Map 使用redis的接口: 将对象转成一个map: 将map转成java对象: 这种方式有一个优势:在更新对象的时候不需…

阅读全文 »

redis集群方案

单机 redis最主要的适用场景:少量数据存储,高速读写访问,数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能。 分布式 随着用户量的增长,数据量随之增长,大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,这时候我们需要横向扩展,多台主机共同提供服务,既分布多个redis协同工作。大致有如下几种集群方案: 方案一:Redis官方集群方案Redis Cluster Redis Cluster由3.0版本正式推出,是一种服务器sharding技术,对客户端来说是完全透明的。 Redis Cluster中,Sharding采用slot(槽)的概念,一共分成1638…

阅读全文 »

Excel2DB

这是一款将excel转成二进制文件的软件,excel对非技术人员来说很容易填写数据,但是excel对程序来说并不是很友好; 一个常用的环境是在游戏开发中,经常有大量的原型数据,而原型数据经常都是通过excel进行编写,此项目将excel转成ndb文件(二进制文件),然后客户端和服务器可以按照指定的格式读取,极大的减少了客户端包体的大小。 源码地址:https://github.com/ksfzhaohui/excel2db

阅读全文 »