w1100n
This site is best viewed in Google Chrome
wiloon, 6/29/2016 8:16 | Tag:,

Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的。 网络编程方面,我们最常用的就是tcp socket编程了,在posix标准出来后,socket在各大主流OS平台上都得到了很好的支持。关于tcp programming,最好的资料莫过于W. Richard Stevens 的网络编程圣经《UNIX网络 编程 卷1:套接字联网API》 了,书中关于tcp socket接口的各种使用、行为模式、异常处理讲解的十分细致。Go是自带runtime的跨平台编程语言,Go中暴露给语言使用者的tcp socket api是建立OS原生tcp socket接口之上的。由于Go runtime调度的需要,golang tcp socket接口在行为特点与异常处理方面与OS原生接口有着一些差别。这篇博文的目标就是整理出关于Go tcp socket在各个场景下的使用方法、行为特点以及注意事项。 一、模型 从tcp socket诞生后,网络编程架构模型也几经演化,大致是:“每进程一个连接” –> “每线程一个连接” –> “Non-Block + I/O多路复用(linux epoll/windows iocp/freebsd darwin kqueue/solaris Event Port)”。伴随着模型的演化,服务程序愈加强大,可以支持更多的连接,获得更好的处理性能。 目前主流web … Continue reading

wiloon, 6/10/2016 11:09

http://blog.csdn.net/qinyushuang/article/details/46611709 TC 在Linux中,流量控制都是通过TC这个工具来完成的。通常,要对网卡进行流量控制的配置,需要进行如下的步骤: ◆ 为网卡配置一个队列; ◆ 在该队列上建立分类; ◆ 根据需要建立子队列和子分类; ◆ 为每个分类建立过滤器。 在Linux中,可以配置很多类型的队列,比如CBQ、HTB等,其中CBQ 比较复杂,不容易理解。HTB(Hierarchical Token Bucket)是一个可分类的队列, 与其他复杂的队列类型相比,HTB具有功能强大、配置简单及容易上手等优点。在TC中,使用”major:minor”这样的句柄来标识队列和类别,其中major和minor都是数字。 对于队列来说,minor总是为0,即”major:0″这样的形式,也可以简写为”major: “比如,队列1:0可以简写为1:。需要注意的是,major在一个网卡的所有队列中必须是惟一的。对于类别来说,其major必须和它的父类别或父队列的major相同,而minor在一个队列内部则必须是惟一的(因为类别肯定是包含在某个队列中的)。举个例子,如果队列2:包含两个类别,则这两个类别的句柄必须是2:x这样的形式,并且它们的x不能相同,比如2:1和2:2。

wiloon, 6/5/2016 19:41

sudo pacman -S steam sudo pacman -S ttf-liberation sudo pacman -S wqy-zenhei sudo pacman -S lib32-alsa-plugins sudo pacman -S lib32-curl sudo pacman -S lib32-libxtst sudo pacman -S lib32-gtk2 sudo pacman -S lib32-libpulse STEAM_RUNTIME=0 steam https://wiki.archlinux.org/index.php/steam#Installation https://wiki.archlinux.org/index.php/Steam#Using_native_runtime

wiloon, 6/4/2016 18:48

http://blog.darkmi.com/2011/12/21/2069.html 领域模型 领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。 业务对象模型(也叫领域模型 domain model)是描述业务用例实现的对象模型。它是对业务角色和业务实体之间应该如何联系和协作以执行业务的一种抽象。业务对象模型从业务角色内部的观点定义了业务用例。该模型为产生预期效果确定了业务人员以及他们处理和使用的对象(“业务类和对象”)之间应该具有的静态和动态关系。它注重业务中承担的角色及其当前职责。这些模型类的对象组合在一起可以执行所有的业务用例。 贫血模型 是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。 充血模型 层次结构和上面的差不多,不过大多业务逻辑和持久化放在Domain Object里面,Business Logic只是简单封装部分业务逻辑以及控制事务、权限等,这样层次结构就变成Client->(Business Facade)->Business Logic->Domain Object->Data Access。 参考资料: http://baike.baidu.com/view/757895.htm http://www.uml.org.cn/mxdx/200803141.asp http://www.oschina.net/question/54100_10400 作者:郭凛 链接:https://www.zhihu.com/question/20360521/answer/14891150 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 贫血模型最早广泛应用是源自于EJB2,最强盛时期则是由Spring创造,把“行为”(也称为逻辑、过程)和“状态”(可理解为数据,对应到语言就是对象成员变量)分离到不同的对象之中,那个只有状态的对象就是所谓的“贫血对象”(常称为VO——Value Object),而那个只有行为的对象就是我们常见的N层结构中的Logic/Service/Manager层(对应到EJB2中的Stateless Session Bean)。(曾经Spring的作者Rod Johnson也承认,Spring不过是在沿袭EJB2时代的“事务脚本”,也就是面向过程编程)充血模型其实很简单,就是面向对象设计的本质:“一个对象是拥有状态和行为的”,比如说一个人,他眼睛什么样鼻子什么样这就是状态,人可以去打游戏或是写程序,这就是行为。为什么要有一个“人Manager”这样的东西存在去帮人“打游戏”呢?举个简单的J2EE的例子,设计一个与用户(User)相关的功能,传统的设计一般是: 类:User+UserManager 保存用户调用:userManager.save(User user); 充血的设计则可能会是: 类:User 保存用户调用:user.save(); ——User有一个行为是:保存它自己   http://www.ituring.com.cn/article/125 http://www.infoq.com/cn/articles/cjq-ddd … Continue reading

wiloon, 6/4/2016 17:08

http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Maven

wiloon, 6/3/2016 12:24

http://os.51cto.com/art/200910/158639.htm 经过搜集和整理相关的linux杀死进程的材料,在这里本人给大家推荐本篇文章,希望大家看后会有不少收获。 1. kill 作用:根据进程号杀死进程 用法: kill [信号代码] 进程ID 举例: [root@localhost ~]# ps auxf |grep httpd 注意:kill -9 来强制终止退出 举例 [root@localhost ~]# ps aux |grep gaim 或者 [root@localhost ~]# pgrep -l gaim 5031 gaim 5031 gaim [root@localhost ~]# kill -9 … Continue reading

wiloon, 6/2/2016 12:48

http://tonylian.iteye.com/blog/563457 什么时候考虑使用静态 博客分类:【编程技术】 OOWinForm设计模式编程百度 用百度搜索“什么时候使用静态”,会得到大致这些结果:   静态方法不用new对象可以直接调用 1.与类相关与对象无关 2.不需要对象的“轻”方法 3.工厂方法 如果某个方法是用频率较高,或者方法本身通用性较强,无需初始化类成员变量,则可以使用静态方法,那样方便,速度也快. 可以直接拿来就用的方法,就算是静态的. 肯定不涉及具体对象,因为静态方法内,是无法直接使用任何非静态成员的。 (1)制作工具类 (2)可以当作"作局"对象或方法来使用 (1)重载"操作符" (2)C#3.0中的扩展方法(配合C#4.0的扩展事件,引领C#向”动态语言”的方向发展) 静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。 静态方法不用创建实例就可调用,比较简单从面向对象的角度上来说,在抉择使用实例化方法或静态方法时,应该根据是否该方法和实例化对象具有逻辑上的相关性,如果是就应该使用实例化对象  反之使用静态方法。 我是把静态类当做全局变量和全局函数的整合对象来用的 全局累加时用 不需要生成对象的 经常频繁使用的 工具类里的(如SqlHelper) 适当地使用static方法本身并没有什么,当一个人从来不懂使用多态、接口设计时,很自然地会滥用static方法。 个人理解在多个类中需要调用并且是与对象无关的方法可设为静态方法,方便调用。 所有对象共有的方法 再不关系到任何于特定对象相关的操作 比如学生的年龄就是学生的相关。 修改学生的年龄就不适合用静态方法。 一般来说,如果你的方法里没有用到this关键字, 那就适合用静态方法 通常通用的类中一些常用的方法可以设计为静态类 只要是没有用到类的状态信息,只从参数获取信息的都可以为静态的 可以实现某些特殊的设计模式:如Singleton 由于没有this指针,可以把某些系统API的回调函数以静态函数的形式封装到类的内部 可以封装某些算法,比如数学函数,如ln,sin,tan等等,这些函数本就没必要属于任何一个对象,所以从类上调用感觉更好 总之,从OOA/OOD的角度考虑,一切不需要实例化就可以有确定行为方式的函数都应该设计成静态的 静态方法与非静态方法最明显的区别就是如果某个方法是公共静态的,那么可以直接通过类名.方法名的方法来调用,而公共实例方法则需要事先实例化对象,然后才能调用。 … Continue reading

辽ICP备14012896