自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

翻译 writing idiomatic python翻译

如何编写优雅(地道)的Python代码翻译肯定用词不当和不严禁的地方,请轻拍!^_^欢迎和我联系:QQ:2165426394EMAIL:2165426394@qq.comGitBook地址看云地址博客索引:如何编写优雅(地道)的Python代码 - 第一部分如何编

2017-12-20 08:35:03 358

原创 [置顶]wireshark插件开发 - 汇总

wireshark插件开发 - 自定义协议  wireshark插件开发 - Lua插件解析  wireshark插件开发 - C插件解析  wireshark插件开发 - 更多

2017-09-20 17:28:48 318

翻译 如何编写优雅(地道)的Python代码 - 第四部分

4. 一般建议4.1 避免重造轮子4.1.1 学习Python标准库编写优雅代码的一部分是自由使用标准库。不知觉地重新编码实现标准库中的功能,可能是新手常做的时。Python通常被认为包含一切。标准库中的包涵盖很广泛的领域。使用标准库有两个明显的好处。最明显的是,给你节省了很多时间,不需要从零开始。对那些阅读和维护代码的人同样重要,如果你使用他们都熟悉的内容,将会节省很多时间。

2018-01-22 10:23:25 451

翻译 如何编写优雅(地道)的Python代码 - 第三部分

3. 组织代码3.1 模块和包Python语言支持面向对象编程,不过不是必须要使用的。很多有经验的Python程序员相对较少使用类和多态。有很多这方面的原因。大部分存储在类中的属性可以用列表、字典和集合类型来表示。Python有很多优化(设计和实现层面)的内置函数和标准库来处理这些数据。类仅当需要的时候才使用,并且永远不要超过出API边界。在Java语言中,类是封装的基本单元。

2018-01-22 10:20:02 562

翻译 如何编写优雅(地道)的Python代码 - 第二部分

2. 使用数据2.1 列表2.1.1 使用列表推导创建基于现有列表的新列表机智地使用列表推导,可以使得基于现有数据构建列表的代码很清晰。尤其当进行一些条件检测和转换时。使用列表推导(或者使用生成器表达式)通常还会带来性能上的提升,这是因为cPython的解释器的优化。2.1.1.1 不好的风格some_other_list = range(10)some_list =

2018-01-22 10:16:41 1129

翻译 如何编写优雅(地道)的Python代码 - 第一部分

1. 控制结构和函数1.1 if语句1.1.1 避免直接和True、False或者None进行比较对于任意对象,内建还是用户定义的,本身都有真假的判断。当判断条件是否为真时,主要依赖于对象在条件语句中的真假性。真假性判断是非常清晰的。所有的下列条件都判断为假:NoneFalse数值类型的0空的序列空的字典当调用对象的len或nonzero方法时,返回值是0或False其

2018-01-22 10:11:58 793

原创 6603网狐棋牌搭建视频教程

网上提供的6603网狐棋牌搭建教程,有需要的可以参考,整个棋牌源码基于C++开发,里面有很多很好的思想可以参考,通过棋牌源码的学习,非常有助于提高自己的C++编程水平。  链接:https://pan.baidu.com/s/1c2AlTxm 密码:5xil

2017-11-28 23:28:31 3277

原创 wireshark插件开发 - C插件解析

相比较而言,C语言就比较麻烦,需要准备一堆开发环境和第三方库,不够简洁,不过C语言的一个优点就是快。然而,Lua语言在脚本语言也是出了名的快,除非报文的流量非常大。 C语言这部分内容相对多些, 主要涉及编译环境的构建,更多更完整的内容,请移步百度阅读:https://yuedu.baidu.com/ebook/ca33e60d3a3567ec102de2bd960590c69ec3d8

2017-09-20 17:28:26 1252

原创 wireshark插件开发 - Lua插件解析

wireshark支持C语言和Lua语言开发插件,本部分内先介绍Lua插件部分开发。Lua语言相对C语言开发有一个巨大的优势,就是不需要编译代码,因为Lua语言是脚本语言,只需要编写相关协议解析的脚本内容,然后由wireshark加载即可(Wireshark自带Lua解析器),wireshark封装丰富的接口给Lua使用,实现代码 1 -------------------------

2017-09-20 17:28:24 844

原创 wireshark插件开发 - 自定义协议

虽然wireshark自带了很多知名协议的解析插件,譬如HTTP、DHCP等等,然而在实际应用环境中,有不少软件之间的通信协议都是私有的,如游戏客户端和服务器之间的交互协议通常都是私有的,wireshark无法具体解析出各种字段之间的含义,只能显示接收到的二进制数据,给协议的分析和问题的排查带来了一定的困难,尤其是协议内容比较复杂时。本文一个自定义的简单协议入手,分析如何基于wireshark...

2017-09-20 17:28:21 2096

原创 Notepad++正则表达式分组替换方法

背景:将Mongo数据库的数据导出(导出格式为JSON),使用Node.js进行一些批量操作,可是Mongo中像注册时间等是这样的格式"activetime" : NumberLong("148487595004"),在解析为JSON的时候会出错。 因此,想要实现这样一种要求:将NumberLong("xxxxx") 转化为 “xxxxx"   本文介绍一种使用Note

2017-09-20 17:28:16 1869

原创 tomcat启动非常慢原因深入分析

有些情况下tomcat启动非常慢,通过jstack查看当前堆栈  /opt/java/jdk1.8.0_121/bin/jstack  14970 > /home/ubuntu/j.log 关键内容"main" #1 prio=5 os_prio=0 tid=0x00007fc69c00a000 nid=0x3a7b runnable [0x00007fc6a5db5...

2017-09-20 17:28:13 3847

原创 Node.js与Go的性能对比

硬件配置: CPU:Intel(R) Xeon(R) CPU           E5506  @ 2.13GHz  8核  内存:24G 软件:Go  1.6Node v6.9.5 测试简单输出hello world!,对比Node与Go,Node单线程,公平起见,将Go限制到单核上。 ---------------------server.js---...

2017-09-20 17:28:08 7586

原创 erlang实现zipwith函数

实现一个zip函数,将两个集合的元素合并起来,譬如zip [1,2,3] [4,5]  = [(1,4),(2,5)], 和空集合合并还是空的。 -module(zip).-export([zip/2]).zip(_, []) -> [];zip([], _) -> [];zip([X|XS],[Y|YS]) -> [{X, Y}|zip(XS, YS)].

2017-09-20 17:28:03 278

原创 解决A full JDK (not just JRE) is required

1、运行配置中切换安装的JRE2、Java安装目录下搜索3、自动列出JRE,含JDK和JRE4、根据项目需要选择不同的JDK

2017-09-20 17:27:58 2439

原创 为什么select只能监听1024个

内核定义了1024,如果要扩大,只能重新编译内核。

2017-09-20 17:27:54 1379

原创 (转)理解不同的I/O模式

Linux下的I/O模型可以分为以下几种:- 阻塞 I/O(blocking IO)- 非阻塞 I/O(nonblocking IO)- I/O 多路复用( IO multiplexing)- 信号驱动 I/O( signal driven IO)- 异步 I/O(asynchronous IO)实际上信号驱动I/O并不长用,这里主要阐述其他四种模型。信号驱动I/O和异步I

2017-09-20 17:27:49 219

原创 大数运算:支持加减乘运算

本程序仅为演示,仅供参考,没有考虑负数情况。优点:1、支持任意数量的数字,直到内存不足;2、C++运算符重载,方便使用。不足:1、没有实现除法运算 1 #pragma once 2 #include 3 #include 4 #include string> 5 6 using namespace std; 7 8 class Big

2017-09-20 17:27:44 369

原创 (转)JVM内存参数说明

1、jvm的内部体系结构浅析2、jvm的几个运行时数据区域3、jvm的内存溢出异常 -Xss128k              //可以这么理解,ss代表stack size每个线程的java栈大小,一个线程java栈所有栈帧大小总和最大允许的尺寸128k。-Xms128m            //可以这么理解,ms代表malloc small, malloc的大小是在堆上面

2017-09-20 17:27:39 204

原创 (转)tomcat架构分析

出处:http://gearever.iteye.com tomcat架构分析 (概览)tomcat架构分析 (容器类)tomcat架构分析 (valve机制) tomcat架构分析 (valve源码导读) tomcat架构分析 (Session管理)tomcat架构分析 (JNDI配置)tomcat架构分析 (JNDI体系绑定)tomcat架构分析 (co

2017-09-20 17:27:34 183

原创 Visual Studio开启Nuget

安装Visual Studio 2013,想使用DocX库,发现找不到Nuget,折腾一番,现将方法共享下:1、打开扩展与更新2、联机搜索安装安装完插件需要重启Visual Studio,这里安装完OK了。-----------------------------Nuget安装插件-----------------------------------1、打开Nuget

2017-09-20 17:27:29 276

原创 服务核心 - 工具类

虽然类名称为CWHService,我理解更多的是工具函数。主要接口功能有:1)SetClipboardString设置字符串到windows剪贴板2)GetMachineID获取机器标识,网卡地址MD5加密;3)GetMachineIDEx获取机器标识,网卡地址和硬盘信息MD5加密;4)RegisterHotKey与UnRegisterHotKey为注册热键和注销热键;5)

2017-09-20 17:27:26 287

原创 如何提升Node执行效率

Node.js基予Google V8引擎,性能优秀,但JavaScript毕竟是脚本语言,和C/C++相比还是有差距的,本文通过计算fibnacci数列来对比Node Addon和JavaScript之间的性能差距,对性能有要求可以作为参考。 1 // addon.cc 2 #include 3 4 namespace demo { 5 6 using v8::E

2017-09-20 17:27:21 424

原创 学习scala: Hello World

最近在学习scala编程语言,看了几章确实很好用,尤其是函数式编程,之前曾了解过haskell函数式编程语言,就深深地喜欢上了,不过在实际应用中,确实很少。scala不一样,兼容java字节码,可以理解为Java的一种语法糖,Java的类库可以无缝使用,工作中更多的用的时Java,这样学习了scala,就可以在工作中大显身手。先来一段hello world程序object HelloW

2017-09-20 17:27:18 155

原创 服务核心 - 线程类

代码对windows线程进行了很好的抽象,用面向对象的思想进行了封装,用户只用重点关注三个函数:1、OnEventThreadRun          --线程运行函数2、OnEventThreadStrat        --线程开始事件3、OnEventThreadConclude  --线程结束事件 对象声明 1 //线程对象 2 class SERVICE_

2017-09-20 17:27:14 211

原创 C++编写Node.js插件(Addon)

Google V8引擎的性能无用质疑,不过相对C/C++而言,还是有差距的,毕竟JavaScript是脚本语言。对于性能要求苛刻的可以考虑C++编写,本文介绍如何使用C++编写Node.js插件。     第一步、编写C++代码 1 // hello.cc 2 #include 3 4 namespace demo { 5 6 using v8::Functi

2017-09-20 17:27:11 437

原创 Node.js中如何处理耗时长的任务

Node.js是单线程模型,运用在服务器模型中,如果一次用户请求,后台做了耗时任务的处理,譬如复杂的数据运算等等,将会堵塞所有的用户请求,无法利用起异步高并发的特征。不过可以通过child_process克隆进程的方式,防止线程阻塞,进程间可以进行通信。     本文以斐波那契数列为例,如何优化此类问题。斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·

2017-09-20 17:27:08 1782

原创 iperf3已不再支持双工模式测试

iperf是一个很好的网络流量测试工具,最近想在工具里面集成iperf最新的版本iperf3,希望借助iperf3测试以太网口的吞吐量,客户要求测试双工模式下吞吐量,可是,整了一圈,原来iperf3并不支持双工模式测试,iperf2是指支持的。       官方原文是这么说的:       Not planning to support these iperf2 flags. If you

2017-09-20 17:27:05 9587

原创 何为Monad

Monad时学习Haskell函数式编程语言所必须要掌握的内容,stackoverflow中有两个对此的解释,比较抽象:1)http://stackoverflow.com/questions/44965/what-is-a-monad2)http://stackoverflow.com/questions/2704652/monad-in-plain-english-for-the-oo

2017-09-20 17:27:00 219

原创 (转)关于尾递归的解释

来之知乎http://www.zhihu.com/question/20761771/answer/19996299尾递归和一般的递归不同在对内存的占用,普通递归创建stack累积而后计算收缩,尾递归只会占用恒量的内存(和迭代一样)。SICP中描述了一个内存占用曲线,用以上答案中的Python代码为例(普通递归):def recsum(x): if x == 1:

2017-09-20 17:26:56 163

原创 WebStorm2016.1 破解 激活

方法对WebStorm2016.2无效。1.从官网下载WebStorm2016.1安装。https://download.jetbrains.com/webstorm/WebStorm-2016.1.exe2.下载破解补丁并解压,记住路径 补丁下载3.编辑WebStorm安装目录下 bin 文件夹中的 WebStorm.exe.vmoptions 与 WebStorm64.ex

2017-09-20 17:26:53 566

原创 TypeScript实现贪吃蛇小游戏

1、概述    前面讲过MFC实现贪吃蛇小游戏,这里用typescipt重现实现一下。typescript就不在介绍了,网络上有很多。  2、设计  整个游戏有三个组成部分:背景面板、食物、蛇。面板划分成不同的网格,食物和蛇都出现在网格中。  1)食物的随机生成要保证在网格内;  2)蛇的移动要保证按照格子大小进行。  3、运行结果     完整源码:  h

2017-09-20 17:26:48 940

原创 MFC实现贪吃蛇小游戏

1、概述    贪吃蛇是一个很经典的小游戏,这里介绍如何分离UI和逻辑来设计该游戏。  2、设计思路  整个游戏有三个组成部分:背景面板、食物、蛇。面板划分成不同的网格,食物和蛇都出现在网格中。  1)食物的随机生成要保证在网格内;  2)蛇的移动要保证按照格子大小进行。  3、类描述  1)属性   1 /**食物 2 * 1.位置 3 * 2.

2017-09-20 17:26:45 2971

原创 获取应用程序所在目录的方法

程序中经常要读取自身应用所在目录,用于读取配置文件等,这里介绍一种方法:CString strINIFilePath;GetModuleFileName(NULL,strINIFilePath.GetBuffer(MAX_PATH),MAX_PATH);strINIFilePath.ReleaseBuffer();CString path = strINIFilePath.Le

2017-09-20 17:26:40 359

原创 Apache与Tomcat负载均衡(转载)

Apache HTTP Server 与 Tomcat 的三种连接方式JK,http_proxy,ajp_proxy。下面逐个介绍一下(本篇介绍的示例都是基于前面介绍的已经搭建好的Tomcat集群,都是本机,端口分别为18080和28080):JK: JK是最常见的方式,JK 本身有两个版本分别是 1 和 2,目前 1 最新的版本是 1.2.37,而版本 2 早已经废弃了,以后不再有新版本的推

2017-09-20 17:26:28 231

原创 Tomcat apr模式开启方法

apr(Apache Portable Runtime/Apache可移植运行时),是Apache HTTP服务器的支持库。你可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。Tomcat apr运行模式的

2017-09-20 17:26:23 1650

原创 Tomcat管理页面登陆方法

Tomcat管理页面可以查看Tomcat的运行信息,然而通常管理页面时需要用户登陆,很多刚接触的人不了解用户名和密码 是多少,如何修改。。这里介绍一种方法。 实际上点击取消,Tomcat本身也是有提示的,对于角色的描述很详细。修改方式也很简单 --> user username="admin" password="ad

2017-09-20 17:26:21 1399

原创 Tomcat NIO模式修改

bio(blocking I/O),顾名思义,即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。Tomcat在默认情况下,就是以bio模式运行的。遗憾的是,就一般而言,bio模式性能比较地下。我们可以通过Tomcat Manager来查看服务器的当前状态。其中ajp端口是用于和服务器负载均衡时使用的。nio(new I/O),是Jav

2017-09-20 17:26:18 2816

原创 RTTI运行时类型识别

概述RTTI(Run-Time Type Identification),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。。面向对象的编程语言,像C++,Java,delphi都提供了对RTTI的支持。本文主要介绍C++的RTTI以及MFC相关的RTTI。1、C++RTTI提供了以下两个非常有用的操作符:1)typeid操作符,返回指

2017-09-20 17:26:13 199

原创 线程局部存储技术

Q&A启动十个线程,如何记录这个10个线程的执行时间?要求能够在线程退出时打印?很多人直观的想法是用一个全局变量表记录每个线程的执行时间。对于全局变量使用的缺点分析,这里不做讨论,很多地方都有讲解。本文介绍一种线程局部技术在多线程的应用场景。线程局部存储,英文为Thread Local Storage,缩写为TLS。为什么要有TLS?原因在于,全局变量与函数内定义的静态变量,是各个线程

2017-09-20 17:26:10 202

go语言编程

golang语言的ppt演示文档,可以有个大致的了解,需要的拿去

2018-06-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除