Fork me on GitHub

2013年8月15日

摘要: IO多路复用之select总结1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。 (4)如果一个服务器即要处理TCP,又要处理UDP,一般要使用I/O复用。 (5)如果一个服务器要处理多个服务或多个协议,一般要使用I/O复用。 与多进程和多线程技术相比,I/O多... 阅读全文
posted @ 2013-08-15 11:36 HackerVirus 阅读(186) 评论(0) 推荐(0)
摘要: go实现排序的链表Posted on2013-08-14 23:25mac的学习笔记阅读(224) 评论(0)编辑收藏链表的数据结构比较线性数组,优点是 可以方便的对任意的位置进行插入和删除。这一特性使得它很适合于应用在排序等场景下,由于golang目前类库还不是很完善,在java中可以很简单的使用api提供的支持完成对list或者map的排序,在使用go时就没有那么幸运了,可能需要自己去实现。下面的例子就是使用go package 中的LinkedList实现的排序的链表。有几个功能特性:1.支持固定的长度2.可自定义排序的规则3.组合LinkedList功能?packagecodeforf 阅读全文
posted @ 2013-08-15 11:27 HackerVirus 阅读(371) 评论(0) 推荐(0)
摘要: CLR执行模型与常见的几个概念一、CLR执行模型1.1从代码到程序集CLR执行的模型是从代码开始,经过编译器生成托管模块,默认情况下可以让多个托管模块和资源生成程序集。下图为其大致过程。1.2执行程序集当系统运行托管模块时会检查文件头,判断启用一个32位的进程还是64位的,然后会在其进程中加载对应的MsCorEE.dll,里面有个初始化CLR的一个方法,初始完CLR,加载程序集,进入程序入口方法。在执行Main方法之前,为了能让电脑运行程序,CLR必须让IL程序集转化成指令。首先CLR会建立一个内部的数据结构,用于管理IL方法对CLR的访问,如果函数是第一次对其CLR的访问,那么对应的JIT会 阅读全文
posted @ 2013-08-15 11:26 HackerVirus 阅读(161) 评论(0) 推荐(0)
摘要: Linux下的IO监控与分析近期要在公司内部做个Linux IO方面的培训, 整理下手头的资料给大家分享下 各种IO监视工具在Linux IO 体系结构中的位置 源自 Linux Performance and Tuning Guidelines.pdf1 系统级IO监控iostat iostat -xdm 1 # 个人习惯%util 代表磁盘繁忙程度。100% 表示磁盘繁忙, 0%表示磁盘空闲。但是注意,磁盘繁忙不代表磁盘(带宽)利用率高argrq-sz 提交给驱动层的IO请求大小,一般不小于4K,不大于max(readahead_kb, max_sectors_kb) 可用于判断当前的I. 阅读全文
posted @ 2013-08-15 11:22 HackerVirus 阅读(248) 评论(0) 推荐(0)
摘要: Go学习笔记 - 使用jsonrpc进行远程访问JSON-RPCJSON-RPC是一个轻量级的远程调用协议,简单易用。请求数据体:{ "method": "getName", "params": ["1"], "id": 1}method: 远端的方法名params: 远程方法接收的参数列表id: 本次请求的标识码,远程返回时数据的标识码应与本次请求的标识码相同返回数据体:{ "result": {"id": 1, "name": &q 阅读全文
posted @ 2013-08-15 11:20 HackerVirus 阅读(446) 评论(0) 推荐(0)
摘要: - 高级篇:二,IL设置静态属性,字段和类型转换静态属性赋值先来看 Reflector反射出的IL源码(感谢Moen的提示),这次用 Release模式编译,去掉那些无用的辅助指令public void AAA(string s){ MyClass.Name = s;}.method public hidebysig instance void AAA(string s) cil managed{ .maxstack 8 //L_0000: ldarg.1 //这个是真正反射出的内容,但是理论上 这里应该是ldarg.0 //下面一行是我特意修改的,上面的现象我无法解释... 阅读全文
posted @ 2013-08-15 11:00 HackerVirus 阅读(302) 评论(0) 推荐(0)
摘要: 在WebStorm中集成Karma+jasmine进行前端单元测试前言好久没有写博了,主要还是太懒=。=,有点时间都去带娃、看书了,今天给大家分享一个原创的小东西,如果大家对TDD或者BDD有兴趣,可以也尝试一下哦。PS:附上小女萌图一张:^_^使用的工具/框架webstorm这个做前端的童鞋们应该都比较熟悉了吧,jetBrain出品的IDE神器,做Web开发、Node.js开发都可以。功能十分强大,我们今天的测试框架就是要与它集成,实现“开发的同时自动测试”。下面给出一些相关的资料地址:官网:http://www.jetbrains.com/webstorm淘宝明河同学的webstorm最佳 阅读全文
posted @ 2013-08-15 10:59 HackerVirus 阅读(233) 评论(0) 推荐(0)
摘要: 七大排序的个人总结(三)堆排序(Heap):要讲堆排序之前先要来复习一下完全二叉树的知识。定义:对一棵具有n个结点的二叉树按层序编号,如果编号为i(0 = 0; i--) { adjust(array, i, array.length); }} private static void adjust(int[] array, int n, int size) { int temp = array[n]; // 先拿出数据 int child = n * 2 + 1; // 这个是左孩子 while (child array[child]) { ... 阅读全文
posted @ 2013-08-15 10:56 HackerVirus 阅读(228) 评论(0) 推荐(0)
摘要: Python:Python学习总结背景PHP的$和->让人输入的手疼(PHP确实非常简洁和强大,适合WEB编程),Ruby的#、@、@@也好不到哪里(OO人员最该学习的一门语言)。Python应该是写起来最舒服的动态语言了,一下是一些读书笔记,最后会介绍一下高级的用法:Mixin、Open Class、Meta Programming和AOP。文中有些地方是用2.7开发的,如果您安装的是3.x,有几点需要注意:print "xxx" 要换成 print("xxx")__metaclass__ = type 删除掉。类型和表达式部分你好,世界!1 # 阅读全文
posted @ 2013-08-15 10:54 HackerVirus 阅读(365) 评论(0) 推荐(0)
摘要: 取SQL分组中的某几行数据对表中数据分组,有时只需要某列的聚合值;有时却需要返回整行数据,常用的方法有:子查询、ROW_NUMBER、APPLY,总体感觉还是ROW_NUMBER比较直观。测试数据:if OBJECT_ID('testGroup') is not nulldrop table testGroupGOcreate table testGroup(ID int identity primary key,UserID int,OrderID int) GOinsert testGroup select 1,10 union allselect 1,20 union a 阅读全文
posted @ 2013-08-15 10:52 HackerVirus 阅读(501) 评论(0) 推荐(0)