Deep♂In WCF

WCF全称Windows Communication Foundation, 是微软爸爸开发出的用于构建面向服务的应用程序的统一编程模型。用于替代和统一.net remoting和web service。

WCF大致是以web service那个基于xml的soap为基础,又除http/https外同时支持tcp(net.tcp)、udp(net.udp)、msmq、named pipe这些通讯方式。也提供了json格式对象序列化方式(好像默认仅限web?)。当然实际上还支持扩展(比较麻烦),比如说把序列化协议改成protobuff。

Deep♂Dark♂Fan[……]

继续阅读

基于iptables实现内网穿透

其实这个问题我在17年10、11月份的时候就遇到了,当时没有解决。当时我在AWS上折腾docker,我有一个php的docker想要访问宿主机的mysql,两个机器网络不一样(docker的傻逼网络?还是我tmd从aws处又拿了一个内网ip?),宿主机是172.31.x.x,docker是172.32.x.x,需求就是如何在docker里访问宿主机的mysql。(讲道理可以直接访问啊,但最后还是没搞定,具体情况记不清了,后来那台ubuntu好像sshd挂了,又开了一台amz linux ami,就没复现这个问题)

现在这个问题在我配置mysql innodb cluster时遇到的。我原[……]

继续阅读

MySQL集群搭建

不知道mysql5.7从什么时候加入了innodb cluster,于是mysql就有了2种集群路线,一个是使用NDB的mysql cluster,一个是用innodb 的mysql innodb cluster。

MySQL Cluster

NDB意思是Network DataBase,是mysql cluster(非mysql)专用引擎,离开集群无法工作。NDB是一个shared nothing的内存数据库,不过官网说他会存储部分数据在硬盘上(猜测是blob类型,可能还有text类型)。NDB数据与mysqld进程分离,存储在专门的数据节点中,名为ndbd或ndbmtd(ndbd的多线[……]

继续阅读

一个WinApi Hook程序(下)

项目地址:https://github.com/HDRorz/WriteFileHook

我这个项目是用VS2015 Community创建的。项目里设置的编译目标平台是Win8.1,底层库设置的VS2015,估计低版本的VS打开项目里的C++项目应该会有问题,而且因为我系统是Win7(还没装Win7 SDK)(拿到电脑就是Win7 sp1了,懒得处理了),在调试和编译时有很多麻烦,VS2015在编译C++时还会添加很多私货,在注册COM组件时还需要dcomp.dll、IEShims.dll、ucrtbased.dll(Win10 SDK)这3个dll。

dcomp.dll(网上下的)[......]

继续阅读

一个WinApi Hook程序(上)

项目地址:https://github.com/HDRorz/WriteFileHook

起因是各系统日志太多,机器也太多,查日志和监控都非常痛苦,所以有意做一套日志收集系统。其实各大公司都有这种东西,现成的也有Elasticsearch + Logstash + Kibana这套解决方案。然而上头就有点推进困难,也畏首畏尾。其实日志系统的demo也做了3、4版了,各种方案都有。

我接到开发任务的时候大概是16年10月份,那时方案设计是直接在日志中间件里埋点,异步调用一个webapi统一存储,同时还实现了服务存活检测(

当然当时我还有另一个脑洞,就是无需修改原系统,直接hoo[……]

继续阅读

windbg调试.net小记

某日被告知文件没有生成,发现文件生成服务(WCF寄宿windows服务)异常阵亡。(服务监控没到位啊→ →)还好那个服务器的设置了发生异常dump内存镜像,收集了当时的尸体,同时Windows事件提示发生了堆栈溢出。

虽然(宇宙第一IDE)VS可以调试dump文件,但是还是有一些问题,比如说

64位调试器花费的时间比预期的要长

通过百度谷歌了一些解决方案,但是都没有作用,因为他就是花费时间长,晾旁边过了几个小时,切过去的时候竟然发现dump文件读取完成了。

然而接下来的操作依旧令人痛苦,切换一个线程也要等上几十分钟,还有就是日常符号加载问题。

这种时候只能寻求别的工具的帮[……]

继续阅读

IIS的IP限制管理工具

IISConfigTool

先放GitHub

IIS不同于apache、nginx使用图形化界面管理,虽然“简化”了操作,但也有不方便的地方,比如一次禁用100个IP,点100次添加IP限制那也是一件很绝望的事。

于是组长看我闲着没事干,就让我做这么一个需求(我也很绝望啊)。微软的东西都是一些黑盒,官方文档也不一定全。(虽然讲道理,可以反编译IIS管理控制台)反正这个东西全工做了2周的样子,兼容了IIS6、7。理论上IIS6以下都可以跑6的那套逻辑,IIS7及以上可以跑AppCmd工具命令行。(内部没有调用跑命令行的方法,而是用的Microsoft.Web.Administration,这个东西看上[……]

继续阅读