监控系统杂谈

最近需要做一个监控项目,最终要达到的目的是实现对公司整个业务系统健康状况的实时监控。在出现问题的时候,通过这套系统可以快速准确的定位到问题的所在并通知到相关人员去解决问题。同时需要给领导有一个简洁直观的显示见面好让他掌控全局…在此记录一下整个调研过程。

阅读更多

ASP.NET调用开源ip地址库ip2region小记

最近在做一个asp.net的项目,其中有个功能是根据输入的ip地址得到相对应的省市信息。目前网上有很多相关的服务,但是要么是收费的要么就是使用上有限制(每秒查询次数限制)。经过一番搜索,终于在github上发现了一个开源的准确率99.9%的ip地址定位库ip2region。它目前提供了java,php,c,python,nodejs,golang查询绑定,竟然没有提供C#查询绑定…不过还好,我们有P/Invoke调用

阅读更多

.NET异步编程杂谈(转)

此文记载一些.NET异步编程相关的总结性观点。

阅读更多

前端表格插件DataTables使用小记

最近在做一个网站的改版项目,开了一次需求会(尼玛需求文档都没有,对着PS图呱呱了半天),给了一个月时间,100多个页面,几十个特效,而且最坑爹的是80%都是前端工作。当时内心真的是有千万只草泥马在奔腾。额,扯远了…回到正题,由于之前的项目代码比较老旧而且不易于扩展和维护,所以需要重建项目并且要做到模块化及可配置。网站中用到了大量的表格来显示数据并且这些表格定义有可能经常需要变动,所以领导的意思是最好能将其做成可配置易于维护和改动的。经过一番搜索,最终确定了用一款jquery表格插件Datatables。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。

阅读更多

C#调用C++ dll之P/Invoke点滴总结

P/Invoke的全称是Platform Invoke (平台调用),它实际上是一种函数调用机制通 过P/Invoke我们就可以调用非托管DLL中的函数。
P/Invoke依次执行以下操作:

  • 查找包含该函数的非托管DLL
  • 将该非托管DLL加载到内存中
  • 查找函数在内存中的地址并将其参数按照函数的调用约定压栈
  • 将控制权转移给非托管函数

阅读更多

OpenSSL与fPIC

看到标题大家可能会想,openssl和fPIC会有什么关系呢?这要从最近遇到的一个问题说起。由于openssl去年和今年被爆出了很多漏洞,而我们项目中用到了openssl较老的版本,所以需要重新编译openssl的新版本。这本应该是一间很简单的事,可是却遇到了问题。在RedHat 7.x平台上,编译之后的程序在跑的时候直接crash了,而且奇怪的是在RedHat AS4平台上没有问题。

阅读更多

Nhibernate batch query timeout问题的解决

最近项目中遇到了一个奇怪的问题。在调用Nhibernate去更新数据库的时候不定期的会出现timeout exception:
NHibernate.HibernateException: An exception occurred when executing batch queries ---> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

阅读更多

二进制差量更新算法比较

Introduction

本文对目前比较流行的基于二进制差量更新算法的几个实现进行了一个比较。
差量更新算法的核心思想是尽可能多的利用old文件中已有的内容,尽可能少的加入新的内容来构建new文件。通常的做法是对old文件和new文件做子字符串匹配或使用hash技术,提取公共部分,将new文件中剩余的部分打包成patch包,在Patch阶段中,用copying和insertion两个基本操作即可将old文件和patch包合成new文件。

阅读更多

下载(2G以上)大文件支持小记

背景

最近项目中遇到了下载大文件(大于2G)失败的问题。查看了代码之后发现从一开始实现的时候就没有考虑对大文件的支持。老板追的紧,没办法只能硬着头皮上。整个的解决过程就好像打怪升级一般,一步一个脚印。

阅读更多

Akamai CCU V3 Fast Purge

Concept

Akamai是著名的CDN内容提供商。它提供了一套purge的API用于清空Edge Server上的缓存,使客户可以拿到最新的内容。目前在用的是CCU OPEN V2 API,主要是基于XML或JASON的一套REST API。通过调用它,会将相应的purge请求加入一个队列中,同时它也提供了query status的API用于查询purge请求的状态。一般情况下,从提交请求到请求执行完成需要4-7min。
这里想要介绍的是Akamai那边提供的V3版本的API,目前处于Beta阶段。最大的卖点就是Fast Purge - Featuring 5-second purge。

阅读更多