编程
文章平均质量分 69
蚯蚓也自由
迷惘过后的执著
展开
-
代码注释有感
看代码头大了吗?看看这里是否有你需要的方法原创 2023-10-25 19:32:15 · 134 阅读 · 0 评论 -
雨哥聊设计模式(三)用代码描述设计模式
1.聚合与组合聚合: class B { A* a; .....}组合: class B{ A a; ...}2.原创 2020-07-23 13:56:30 · 173 阅读 · 0 评论 -
雨哥聊设计模式(二)简单描述23种设计模式
1.简单工厂 当代码中很多地方使用new,malloc等系统提供的创建关键字,或者是第三方库提供的创建方法,应考虑将创建代码封装。无特殊要求情况下,使用简单工厂方法就可以实现。问:为什么要封装,不封装不行吗?答:使用简单工厂进行封装,是为了应对一旦创建方法需要改变(如:使用对象池、内存池等技术),只需要修改封装的方法即可。代码量少的情况下没问题,可以分别手动修改。当代码量到达一定规模时(出现几十次上百次的使用原始方法创建),修改代码会浪费很多时间,并且可能漏掉几处忘记修改。...原创 2020-07-23 11:25:52 · 195 阅读 · 0 评论 -
雨哥聊设计模式(零)前言
1.设计模式是一种编程范式,但编程可以不符合范式2.设计模式编写代码是需要成本的3.设计模式不依赖与具体编程语言4.设计模式是提高软件质量的利器5.设计模式使用不当可能会引起更大的问题6.设计模式不只有23种...原创 2020-07-23 10:44:28 · 149 阅读 · 0 评论 -
雨哥聊设计模式(一)一句话描述设计模式
创建型模式1.简单工厂:创建实例的函数需用参数指定具体类型2.工厂方法:提供创建操作的类是抽象类3.抽象工厂:一个抽象工厂类可以创建多种抽象类型4.单例模式:这个不用说5.原型模式:通过克隆拷贝已存在的对象实例6.建造者模式:建造过程的步骤确定,但每一步是抽象的结构型模式7.适配器模式:将已有功能的接口转换为需要的形式8.外观模式:将需要的接口都汇总到一个接口9.装饰模式:用动态组合手段,代替新建子类10.组合模式:想组织各对象间的层次结构,并且想统一地使用所有对原创 2020-07-17 15:45:01 · 163 阅读 · 1 评论 -
Linux so动态库路径搜索顺序
项目中遇到一个问题,可执行文件foo在编译时指定的libstdc++.so.6,运行时始终链接到系统/usr/lib64/libstdc++.so.6。经过一番思索(搜索:baidu,google,bing.......)终于找到一篇文章。记录于此,时刻提醒自己,技术的道路还很长!动态库搜索路径&顺序:LD_LIBRARY_PATH,rpath,系统默认动态库路径(/lib;/li...原创 2019-12-24 15:34:52 · 2003 阅读 · 3 评论 -
中文分词器分词效果的评测方法
http://www.codelast.com/?p=7042现在有很多开源的中文分词器库,如果你的项目要选择其一来实现中文分词功能,必然要先评测它们的分词效果。如何评测?下面详细叙述。【1】黄金标准/Golden standard所谓的黄金标准是指:评价一个分词器分词结果的好坏,必然要有一份“公认正确”的分词结果数据来作为参照。通常,我们使用一份人工标转载 2016-01-04 12:19:36 · 771 阅读 · 0 评论 -
五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) – 整理
http://www.awflasher.com/blog/archives/939当Adobe、Microsoft、Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来!最初来自:sinoprise.com/read.php?tid-662-page-e-fpage-1.html(遗憾的是这个链接已经打不开了),我基本未改动,只是进行了一些排版和整理。参转载 2015-12-01 13:53:54 · 388 阅读 · 0 评论 -
Linux段页式管理思想--写操作系统内存管理必备知识,简单易懂
http://zhan.renren.com/h5/entry/3602888497996214030【转帖】一、概念1、物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。—— 这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到转载 2015-12-16 23:11:58 · 907 阅读 · 0 评论 -
如何实现支持数亿用户的长连消息系统 | Golang高并发案例
此文是根据周洋在【高可用架构群】中的分享内容整理而成,转发请注明出处。周洋,360手机助手技术经理及架构师,负责360长连接消息系统,360手机助手架构的开发与维护。不知道咱们群名什么时候改为“Python高可用架构群”了,所以不得不说,很荣幸能在接下来的一个小时里在Python群里讨论golang....转载 2016-01-18 16:52:45 · 13304 阅读 · 1 评论 -
Android Native反调试
http://www.zhaoxiaodan.com/java/android/android-native%E5%8F%8D%E8%B0%83%E8%AF%95.html思考之前研究了下如何调试和尝试反一个别人加密的东西, 所以现在的体会就是:其实重点不是你如何加密, 重点是如何不让别人知道你怎么加密的因为像这种自己加密的资源运行的时候自己解密之后拿来转载 2015-12-10 15:49:51 · 1309 阅读 · 0 评论 -
穷人版valgrind
http://www.douban.com/note/524982126/valgrind是内存泄漏的万灵药,只要能用得上valgrind。但在实际当中不管是运行速度还是运行环境都受限太多。最近碰到一个第三方商业库的内存泄漏,既没有源代码,也没法在实验室的重现,更没法用valgrind,于是周末加班搞定了一个自制valgrind。valgrind提供的信息其实就两条。对所有申请的内存,转载 2015-12-09 20:18:07 · 514 阅读 · 0 评论 -
人工智能(AI)资料大全
http://www.techug.com/awesome-artificial-intelligence这里收集的是关于人工智能(AI)的教程、书籍、视频演讲和论文。欢迎提供更多的信息。在线教程麻省理工学院人工智能视频教程 – 麻省理工人工智能课程人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程EdX 人工转载 2015-12-02 13:12:40 · 2150 阅读 · 0 评论 -
Linux下获得进程id和进程名字
1. 通过进程名字得到进程id。pid_t getProcessPidbyName(char *name){ FILE *fptr; char *buf = new char[255]; char cmd[255] = {'\0'}; pid_t pid = -1; sprintf(cmd,"pidof %s",name);转载 2015-12-23 13:06:08 · 3181 阅读 · 0 评论 -
让你的Socket应用兼容IPv6
随着互联网越来越普及,以及物联网的兴起,IPv4地址已远远不够用,IPv6的普及将是不可避免的趋势。以前,我们的大部分socket程序几乎都是针对IPv4而开发,如果不做升级重构,那么使用IPv6地址的客户端将无法使用服务端提供的服务。如何才能像ESFramework一样,使服务端和客户端都可以同时支持IPv6了?使我们的P2P打洞也兼容IPv6了?下面我们将要点一一点出。 首先转载 2015-12-25 10:05:29 · 2836 阅读 · 0 评论 -
Linux 技巧:让进程在后台可靠运行的几种方法
想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作?转载 2016-01-13 12:36:22 · 423 阅读 · 0 评论 -
机器连接数
记得以前一台机器只能建立65535个连接的这种想法一直长时间占据着思维方式,为什么会有这种想法呢,估计最早起源于学校的port的short(16位65535)吧。一台机器connect同一IP,port的最大连接数嗯,既然一台机器只能最大建立65535个连接,那当然” 为什么一台机器connect同一个IP,port的tcp连接数不能超过65535个”这个问题的答案是对的,没有为什转载 2016-01-13 13:20:33 · 1141 阅读 · 0 评论 -
linux程序调试(一)------内存分布
1、地址映射64位地址采用4层地址映射,如下图:pgd、pud、pmd、pte各占了9位,加上12位的页内index,共用了48位。即可管理的地址空间为2^48=256T。而在32位地址模式时,该值仅为2^32=4G。另外64位地址时支持的物理内存最大为64T,见e820.c中MAX_ARCH_PFN的定义:# define MAX_ARCH_PFN MAXMEM>>P转载 2017-07-11 17:28:20 · 516 阅读 · 0 评论 -
查看linux发行版本及字长
[root@localhost ~]# uname -r2.6.32-358.el6.x86_64[root@localhost ~]# lsb_release -aLSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noa原创 2017-07-17 10:23:26 · 1040 阅读 · 0 评论 -
VS2008 断点不起作用 失效
1、无效断点所在的项目和启动项目的设置:项目->属性->配置属性->C/C++->常规->调试信息格式,这里不能为『禁用』; 2、项目->属性->配置属性->链接器->调试->生成调试信息,这里设为『是』; 3、C/C++->优化->优化选择『禁用』; 4、删除解决方案下的.ncb文件; 5、工具->选项->调试-转载 2018-06-12 11:37:29 · 2384 阅读 · 0 评论 -
超简单的在Eclipse中NDK单步调试JNI代码代码
http://www.apkbus.com/android-124675-1-1.html最近由于项目需要使用了NDK,唯一麻烦的就是java与c端的联调,在网上搜索了很多,都说要使用gdb或打印日志的方式,这样调试效率很低,也很不方便。下面给大家共享一种很简单的可以在可视化界面单步调试的方法。开发环境呢,我是在官网下载的最新的集成ADT+SDK+CDT的开发工具 “adt-bundl转载 2014-02-12 13:46:11 · 1497 阅读 · 0 评论 -
协方差矩阵的概念及matlab计算
http://blog.sina.com.cn/s/blog_4aa4593d01012am3.html今天看论文的时候又看到了协方差矩阵这个破东西,以前看模式分类的时候就特困扰,没想到现在还是搞不清楚,索性开始查协方差矩阵的资料,恶补之后决定马上记录下来,嘿嘿~本文我将用自认为循序渐进的方式谈谈协方差矩阵。统计学的基本概念学过概率统计的孩子都知道,统计里最基本转载 2014-12-22 16:06:16 · 1180 阅读 · 0 评论 -
JNI中jstring操作
http://blog.sina.com.cn/s/blog_80c9582b0100so65.html使用JNI时,最常见的操作是将jstring转换成UTF字符串。JNI提供了几个转换函数:GetStringUTFChars,GetStringUTFRegion。GetStringUTFChars返回一个指向UTF字符串的指针,该函数会分配内存空间存储该字符串,因此使用完后转载 2015-09-10 14:24:46 · 2111 阅读 · 0 评论 -
android手机调试native c代码
环境:CentOS 5.4[root@localhost bin]# cat /etc/redhat-releaseCentOS release 5.4 (Final)[root@localhost bin]# uname -aLinux localhost.localdomain 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT原创 2014-02-09 18:46:17 · 2134 阅读 · 0 评论 -
dll里面分配的空间一定要在dll里面释放吗
关键看这个“申请空间”是怎么来的。Windows下申请内存空间的方式很多,只要用对应的释放就可以了:VirtualAlloc用VirtualFree,CoTaskMemAlloc用CoTaskMemFree,HeapAlloc用HeapFree,GlobalAlloc用GlobalFree,LocalAlloc用LocalFree,等等……一套一套。看到你给出的错误提示信息是_C转载 2014-05-27 17:44:06 · 1189 阅读 · 0 评论 -
一个弱智错误
今天写代码脑袋进水了,原创 2014-04-22 17:40:36 · 636 阅读 · 0 评论 -
linux下编译静态(static)库
configure的时候要指定 --enable-static ,因为很多平台没有基础库,指定该选项将免去一些不必要的麻烦。#./configure --enable-static如果是嵌入式平台的话,首先应指定CC,即用什么编译器,以及平台等CC=arm-linux-gcc ./configure --build=arm-linux --host=i686-linu原创 2014-01-15 11:05:03 · 2193 阅读 · 0 评论 -
在GCC里对宽字符赋值的L表示符怎么不被认
http://bbs.csdn.net/topics/300229456gcc GNU C/C++编译器也可以正确支持wchar_t字符和字符串,但是源代码的保存格式必须符合下面条件: 一、源代码文件的保存编码必须是UTF-8 二、UTF-8编码格式的源代码文件,不能有BOM标志头。 只有源代码文件符合上面两个转载 2014-03-04 16:43:32 · 1741 阅读 · 0 评论 -
输入adb shell 时 提示error: more than one device and emulator
第一种情况:确实用多个设备或者模拟器 解决办法:(指定连接某一个设备或者模拟器)1、获取模拟器/设备列表 adb devices2、指定device来执行adb shell adb -s devicename shell例如: a转载 2014-01-17 14:51:12 · 986 阅读 · 0 评论 -
eclipse运行的第一个hello-jni程序
http://my.oschina.net/f839903061/blog/117614最近要用到jni调用一些知识,所以就从网上搜索了一些资料,安装了环境,我的ndk环境安装在ubuntu上,目前我两天电脑,一台ubuntu,一台xp,所以操作比较方便,下面我说一下我的操作步骤方便刚刚接触jni的朋友更快的熟悉起来使用方法!ndk环境安装方法:http://my.oschin转载 2014-01-26 09:57:45 · 982 阅读 · 0 评论 -
基于c语言中调试工具的用法汇总(不包含gdb)
http://www.jb51.net/article/36829.htm本篇文章是对c语言中调试工具的用法进行了汇总,需要的朋友参考下是不是只有编译的时候才知道程序写了错误?有没有在未编译的时候就让机器帮你检查错误的工具呢?答案是:有!!splint工具.用一个最简单的HELLO WORLD来表述:=====================================转载 2014-01-15 17:37:23 · 1077 阅读 · 0 评论 -
The configure's --help
http://blog.chinaunix.net/uid-20784749-id-1844506.html1、The configure's --help`configure' configures GD 2.0.34 to adapt to many kinds of systems.Usage: ./configure [OPTION]... [VAR=VALUE转载 2014-01-15 14:01:48 · 872 阅读 · 0 评论 -
DLL分配的内存如何在EXE里面释放
总结下面几个要点:1. 保证内存分配和清除的统一性:如果一个DLL提供一个能够分配内存的函数,那么这个DLL同时应该提供一个函数释放这些内存。数据的创建和清除应该在同一个层次上。曾经遇到过这样的例子:在dll中分配了一块内存,通过PostMessage将其地址传给应用。然后应用去释放它,结果总是报异常。2.如果exe用 MFC Appwizard方式生成, dll用win32方式生成,则运行时会出转载 2014-05-27 17:45:35 · 1369 阅读 · 0 评论 -
vs2010通用属性模板
转载:用vc很多年了, 前年在搞libcomcomcpp时, 发现了该项目建的的工程设置里面有个很有趣的vsprops, 如下图:以前从来没有这样做过, 当时研究了一下, 发现这是个很好的技巧, 可以避免多个工程往复相同的设置.当时还仿照这个方法在自己的工程中, 做了一个便于包含第三方库的设置.可能当时印象不是很深刻, 加之这两年来, 没做多少编码工作, 转转载 2014-07-02 16:13:47 · 2220 阅读 · 0 评论 -
有关Windows平台下CPU使用率的计算
http://www.blogjava.net/fjzag/articles/317774.html一. 有关Windows平台下CPU使用率的计算 1. Windows下CPU使用率的定义a) CPU使用率:在任务管理器的刷新周期内CPU忙的时间与整个刷新周期的比值。b) 任务管理器默认的刷新周期是1s。 2. CPU使转载 2014-07-30 10:58:27 · 2449 阅读 · 0 评论 -
一些曾经的奉为经典的做法都被颠覆了
float a = 0.0f;if (a==0.0f){std::cout }if (a==0){std::cout }int b = 0;if (a==b){std::cout }float c = 0.0f;if (a==c){std::cout }输出4个yes原创 2014-10-08 13:29:15 · 467 阅读 · 0 评论 -
gcc ——“cannot execute binary file”
-c 只编译并生成目标文件,即.o文件。不加 -c 就应该可以了转载 2015-04-20 15:56:35 · 1506 阅读 · 0 评论 -
Linux 进程热升级(共享库的动态替换)
http://www.ibm.com/developerworks/cn/linux/l-cn-prcss-hotupgrd/为了实现 Linux 系统进程热升级,本文提供了一种底层的实现方法,即在不重启进程的条件下,升级进程的共享库模块。背景用户总是希望服务进程能保持稳定。如果可以 7*24 小时的工作,那就永远不要重启它。但是,软件产品的功能总是在不断的丰富转载 2014-12-22 17:10:18 · 3920 阅读 · 0 评论 -
Linux下动态链接库的使用
http://www.cnblogs.com/Xiao_bird/archive/2010/03/01/1675821.htmlLinux下的静态链接库,做起来比较容易,只要将目标文件用ar打包就可以,下面写一下动态链接库的制作和使用方法,完全是根据个人理解和经验总结,有不对的地方还请大家指正。动态链接库的生成:代码上与写静态链接库没什么区别,主要是在编译时,以两个文件转载 2014-12-22 16:31:03 · 436 阅读 · 0 评论 -
Leading dimension
如果你用LAPACK解过矩阵本征值问题,你一定会接触到这样一个名词,“leading dimension”,比如在函数zheev中。我想绝大部分人在第一次接触这个词的时候都不明白它到底是什么意思。以前我也不明白,今天索性搜了一把,在下面找到了答案。http://icl.cs.utk.edu/lapack-forum/viewtopic.php?p=661&sid=67c66465dedfcbb转载 2014-09-25 16:11:32 · 2989 阅读 · 0 评论