![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Develop
文章平均质量分 87
ariesjzj
这个作者很懒,什么都没留下…
展开
-
《Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects》Vol.2 笔记
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2015-04-18 16:25:37 · 3195 阅读 · 0 评论 -
Linux下二进制代码的阅读
大多数时候,我们研究的是如何阅读源代码。但在一些情况下,比如源代码不公开或得到源代码的代价很高的情况下,我们又不得不需要了解程序的行为,这时阅读二进制文件就非常重要。假设现在有一个二进制可执行文件,我们木有源代码,但要了解它的实现,这里仅简单列出一些常用的工具。 阅读方式可分为两个方面:静态阅读和动态阅读。静态阅读首先,file命令可以查看可执行文件的大体信息。比如是哪种格式的,哪个体原创 2012-07-08 14:00:44 · 3414 阅读 · 0 评论 -
用于科学计算的Python库-代替Matlab
原文地址:http://blog.csdn.net/ariesjzj/article/details/7477783数值计算,线性代数库 - NumPy, SciPy。相当于BLAS, LAPACK。网址:http://numpy.scipy.org/,http://www.scipy.org/ubuntu安装:# apt-get install python-nu原创 2012-05-02 16:30:20 · 11222 阅读 · 0 评论 -
将GDB中的输出定向到文件
有时候输出信息太长,屏放不下,下面介绍两种将gdb的输出信息存到文件的方法。方法一:适合临时向文件输出些信息的情况。比如要用info functions输出所有函数,结果往往有一大坨,所以可以将之输出到文件。(gdb) set logging file (gdb) set logging on(gdb) info functions(gdb) set log原创 2012-04-01 15:34:20 · 16747 阅读 · 0 评论 -
Windows下用Visual Studio编译x64平台的内联汇编
原文地址:http://blog.csdn.net/ariesjzj/article/details/7085138Linux下,GCC支持x86-32/64的内联汇编。Windows下,Visual Stdio支持x86-32的内联汇编,但不支持x64的内联汇编(至少到Visual Studio 2010是这样),而是提供了一些Intrinsics(一种类似于内联函数的东西)。MSDN给出了原创 2012-01-31 15:26:47 · 10057 阅读 · 1 评论 -
Windows下的"ptrace"-父进程监视子进程Debugging API
原文地址:http://blog.csdn.net/ariesjzj/article/details/7226443 Linux下有功能强大ptrace,用于让父进程监视/修改/控制子进程的状态。Windows也提供了类似的接口,那就是Debuging API,用它可以编写用户级的调试器。 下面是一个例子,用以实现父进程创建并监视子进程运行状态。 #include #include原创 2012-02-03 08:35:14 · 5568 阅读 · 0 评论 -
浅谈Gcc4.4.4优化
Intel Compiler的编译器默认会加载一些有利于程序运行效率的开关,这也是Intel的编译器领先于其他编译器默认开关的原因之一。其实,作为跨平台的编译器,Gcc在选用恰当的优化选项后,运行效率在某些方面也是堪比Intel Compiler的。 下面仅列举Gcc常用的优化选项。有的含义不作说明,请参看帮助文档。1、-O系列(1)-O和-O1 包含下列选项转载 2012-02-08 15:12:51 · 1877 阅读 · 0 评论 -
Windows下的Qt环境安装
Qt是一套基于C++的跨平台开发库,包含了大量GUI控件、容器等实用内容,完全可以替代MFC的作用。而且其设计风格简单易懂,不像MFC中用大量晦涩的宠替换,并且其最大的好处是在Window或Linux下开发的软件可以基本不改代码地移植到另一平台。在Linux下的Qt开发环境大家可能都已比较熟悉,一般的发行版都会包含这个开发平台。其中包括:Qt Designer: GUI开发工具,像VB一样原创 2007-08-16 13:30:00 · 4932 阅读 · 1 评论 -
Unicode数据类型(与ANSI关系和相互转化)
1,Windows定义Unicode数据类型WCHAR(Unicode字符)PWSTR(指向Unicode字符串的指针)PCWSTR(指向一个恒定的Unicode字符串的指针)以上都是Unicode字符和字符串。同时windows定义了ANSI/Unicode通用数据类型PTSTR和PCTSTR。Unicode宏没有前置下划线,_UNICODE宏用于c运行期头文件,而UNICO转载 2012-02-03 17:33:57 · 1352 阅读 · 0 评论 -
32位XP下visual Studio 2010编译64位程序
How to: Configure Visual C++ Projects to Target 64-Bit Platforms:http://msdn.microsoft.com/en-us/library/9yb4317s.aspx http://blog.csdn.net/jiangxinyu/article/details/6205710 SETUP AND DEPLOYM转载 2011-12-07 10:18:54 · 2428 阅读 · 0 评论 -
GDB使用备忘
调试带参数的程序$ gdb program(gdb) run param 使用core dump调试首先打开core dumpulimit -c unlimitedcore文件产生后,使用core dumpgdb --core=core.XXX 设置watch point(gdb) watch *((int*)0x00ABCDEF)查看反汇原创 2012-07-08 01:37:32 · 3125 阅读 · 0 评论 -
使用Git中的Merge与Rebase与开源项目同步代码
基于开源项目的开发有两种主要工作模式。模式1是在从开源项目中拉出一个分支,在这个分支中开发新feature,完成后合并到upstream中。适用于本身是开源项目的developer。模式2是从开源项目中拉出分支后独立发展,但定期从upstream拉更新(如重要版本升级时)。无论是哪种,都会面临本地分支与upstream同步代码的问题。为此,git主要提供了两种方式:一种是merge, 一种是rebase。下面通过例子简单过一下它们的基本流程。原创 2015-03-03 07:52:26 · 6245 阅读 · 2 评论 -
OpenCV在Ubuntu上的安装及《Learning OpenCV》书例编译
在Ubuntu 10.04上安装openCV很方便:#apt-get install opencv-doc libcv4 libhighgui4 libcvaux4 libcv-dev libcvaux-dev libhighgui-dev同时最好顺便把ffmpeg的开发文件也装上。 然后编译《Learning OpenCV》一书的例子试一把,理论上把Makefile.txt改原创 2012-09-23 19:11:20 · 1559 阅读 · 0 评论 -
函数的调用规则(__cdecl,__stdcall,__fastcall,__pascal)
关于函数的调用规则(调用约定),大多数时候是不需要了解的,但是如果需要跨语言的编程,比如VC写的dll要delphi调用,则需要了解。microsoft的vc默认的是__cdecl方式,而windows API则是__stdcall,如果用vc开发dll给其他语言用,则应该指定__stdcall方式。堆栈由谁清除这个很重要,如果是要写汇编函数给C调用,一定要小心堆栈的清除工作,如果是__cde转载 2012-09-08 21:11:41 · 927 阅读 · 0 评论 -
vim使用备忘
Vim多行缩进技巧 .http://blog.csdn.net/xiaochangfu/article/details/4709043 启动打开会话vi -S Session.vim常用快捷键gt:下一个tabgT:上一个tabggdG:清空文件内容gg:查找变量定义(局部)gG:查找变量定义(全局)tabs:tab列表[#:跳到#开头]#:跳到原创 2010-08-12 10:48:00 · 1108 阅读 · 0 评论 -
cygwin编译的win32程序不需要cygwin1.dll库的方法
以下文章翻译自国外网站http://digipen2.xmmg.com/dpweb/docs/mno-cygwin.html简单的代码view plain#include int main(void) { printf("Hello\n"); return 0; } 编译链接如下:转载 2012-07-29 21:37:46 · 5232 阅读 · 0 评论 -
在 console mode 中使用 C/C++ 编译器
在 console mode 中使用 C/C++ 编译器侯捷 1999.04.08我总是鼓励 C/C++ 的学习者,在刚接触这个程式语言的时候,先以 console mode(DOS-like)程式为目标。换言之,不要一开始就想写 GUI 程式、想开视窗、想有眩目亮丽的画面 -- 那只是未走先飞,揠苗助长罢了。所谓 console 程式,就是文字模式的程式,我们可以转载 2012-07-27 11:02:34 · 1491 阅读 · 0 评论 -
手动插int 3实现程序主动断点
gdb的条件断点可以让程序在满足一定条件时停下break ... if cond但有时程序逻辑复杂无比,或者条件复杂无比,让gdb的被动断点很难设。这时可以在程序中加中断语句来进行主动的中断。毕竟大多调试器也是靠在断点处插异常指令实现的,原理一样。 例:test.c#include #include int main(){ printf("hell原创 2012-07-26 08:14:34 · 2397 阅读 · 0 评论 -
内联汇编读取cr0, cr4等值以及fxsave, fxrstor指令的使用
long unsigned int cr0;long unsigned int cr4;asm volatile("mov %%cr0, %0": "=b"(cr0));asm volatile("mov %%cr4, %0": "=b"(cr4));printfk("cr0 = %lx, cr4 = %lx\n", cr0, cr4);其实和读一般寄存器一样,只是注意要在内核原创 2011-11-23 08:17:26 · 3272 阅读 · 0 评论 -
Playing with ptrace(玩转ptrace)
Playing with ptrace, Part Ihttp://www.linuxjournal.com/article/6100Playing with ptrace, Part IIhttp://www.linuxjournal.com/article/6210转载 2011-11-01 11:11:22 · 1092 阅读 · 0 评论 -
vimrc配置
<br />"set short key to edit .vimrc<br />let mapleader=","<br />map <silent> <leader>vs :source ~/.vimrc<cr><br />map <silent> <leader>ve :e原创 2010-08-06 10:44:00 · 1426 阅读 · 0 评论 -
关于二叉树,哈希表等的POSIX函数
貌似都不是标准C里的函数,但是是POSIX标准里的,linux下一般都有线性搜索:lsearch, lfind:用法类似,区别在于找不到目标元素时lfind返回NULL,lsearch插入进序列。ps: 当没有加#include时,会因为没有函数声明而出现warningwarning: assignment makes pointer from integer without a cast.二叉树:tsearch,tfind:查找,两者区别类似lsearch和lfind,tsearch可以用于构建树。tde原创 2010-11-06 12:53:00 · 1114 阅读 · 0 评论 -
Shell Script Utility To Read a File Line By Line
#!/bin/bash# Shell script utility to read a file line line.# Once line is read it can be process in processLine() function# You can call script as follows, to read myfile.txt:# ./readline myfile.txt# Following example will read line from standard input dev转载 2010-09-04 11:57:00 · 2203 阅读 · 0 评论 -
Python: 50个能够满足所有需要的模块
Graphical interfacewxPythonhttp://wxpython.org Graphical interfacepyGtkhttp://www.pygtk.org Graphical interfacepyQThttp://www.riverbankcomputing.co.uk/pyqt/ Graphical interfacePmwhttp://pmw.sourceforge.net/ Graphical interfaceTkinter 3000http://effbot.org/转载 2010-08-12 10:19:00 · 1022 阅读 · 0 评论 -
Vim插件DrawIt安装
<br />安装过程:<br />vim DrawIt.vba.gz <br />:so % <br />:q<br /> <br />注意主页的快捷键都是/开关,实际上是否是/由leader决定,如果你重定义过leader就把/换成相应的键,如在vimrc中如有<br />let mapleader = ","<br />则把<br />/di换成,di<br />/ds换成,ds原创 2010-08-08 18:45:00 · 1875 阅读 · 0 评论 -
性能优化工具gprof & 内存检测工具Valgrind 用法
<br />gprof:<br />//加-pg选项<br />$ gcc -Wall -g -pg test.c -o test<br />//生成gmon.out<br />$ ./test <br />//生成性能检测报告<br />$ gprof -b test gmon.out<br /> <br />Valgrind:<br />//加-g编译<br />$ gcc -g -o test test.c <br />//生成内存检查报告<br />$ valgrind --tool=memchec原创 2010-07-08 10:29:00 · 2882 阅读 · 1 评论 -
Editplus搭建java开发环境
首选安装jdk,设置环境变量JAVA_HOME, CLASSPATH,注意设CLASSPATH时不要忘了最前面的.; 即当前目录,否则编译时错误。工具->配置用户工具,添加工具:命令:javac参数:"文件路径"添加工具:命令:java参数:文件名称(无扩展名)起始路径:文件目录最后再选“捕获输出”原创 2007-10-12 04:21:00 · 1171 阅读 · 0 评论 -
VS2005"unresolved external symbol..."错误分析
一,问题描述error LNK2001: unresolved external symbol _WinMain@16debug/main.exe:fatal error LNK 1120:1 unresolved externals error executing link.exe;二,产生这个问题可能的原因1, 你用vc建了一个控制台程序,它的入口函数应该是main, 而你转载 2007-06-15 10:52:00 · 3211 阅读 · 0 评论 -
Tornado2.2forpcPentium的安装和使用流程
Tornado2.2 for pcPentium的安装和使用流程 一、安装Tornado2.2 for PcPentium和BSP 1、安装时需要install key,:cAQ8i-qP2I&-g$vT6-3&gjw-bEk9g 2、在C盘建立一个flexlm文件夹,将license.dat拷贝进去 3、安装完毕后,如果从开始菜单直接运行tornado,会提示错误,这是因为安装还转载 2007-04-03 11:21:00 · 2912 阅读 · 0 评论 -
cscope、ctags和vim简明使用流程
先将项目中的所有源代码文件路径放入cscope.files: $find /home/jzj/myproject -name “*.h” -o -name “*.c” -o -name “*.cc” > cscope.files #注意find命令中用绝对路径,否则一旦进入子目原创 2011-07-25 13:56:50 · 1666 阅读 · 0 评论 -
C语言中位域(bit fields)的可移植问题
网上有文章说C语言的“位域”(bit fields)有可移植性的问题,原因是不同的编译器对位域的实现不同。 我决定用实验验证一下。 一、 实验过程: 1. 准备实验程序 这 是谭浩强C语言课本上第12章12.2节的位域示例程序: main() { struct bs转载 2011-08-04 23:24:24 · 1323 阅读 · 0 评论 -
Perl脚本:递归替换目录下所有源文件中指定字符串
如需要将目录dir1下的所有源文件中的单词static和inline删除,则建立文件string.txt:staticinline再运行:$ perl ./replace_string dir1 replace_string的内容如下:#!/bin原创 2011-10-08 14:48:06 · 3002 阅读 · 0 评论 -
Building Error: relocation truncated to fit: R_X86_64_32S against symbol 'XXX'
This error denotes mixing of small and medium memory model object files. Even if Pleides had more memory per node it would still appear. The转载 2011-08-25 15:33:04 · 3633 阅读 · 0 评论 -
Perl脚本递归替换所有指定目录指定文件类型中的指定模式
例如把dir1和dir2两个目录下的所有.c和.h文件下的abc()函数替换成def()函数。下面的脚本会把改动前的文件存为以.old为后缀的文件。 #!/usr/bin/perluse strict;use warnings;use File::Find;原创 2011-08-05 10:46:19 · 1206 阅读 · 0 评论 -
VC2005调试时出现“No Debugging Information”错误
No Debugging InformationDebugging information for 'xxx.exe' cannot be found or does not match. No sysmbols loaded. 菜单里Project->prop原创 2011-05-11 22:33:00 · 4590 阅读 · 0 评论 -
C/C++代码风格摘录
Naming:库命名:库的前缀长度大于两个字符,所有的变量及函数都以该前缀开始。外部符号以'_'开头。 命名内容:不要顾虑名字长度,如intnum_errors;intnum_completed_connections;变量和类型用名词:num原创 2011-08-06 14:24:33 · 1509 阅读 · 0 评论 -
printf的一些用法和64位移植性问题
// Debian Linux 32bit#include #include #include #include #include typedef struct data_t { unsigned int a:12; unsigned int原创 2011-08-05 15:54:28 · 4989 阅读 · 0 评论 -
Source Insight使用备忘(查看完整路径和加入指定格式文件)
看当前完整文件路径默认情况下标题栏会显示文件路径,但是省略格式的,中间目录都以...代替,显示完整路径方法:Options -> Preference -> Display -> Trim long path names with ellipses 项目中加入汇编文件默认会加入.原创 2010-11-07 16:02:00 · 1572 阅读 · 0 评论 -
推荐阅读的多核编程技术书籍
多核程序设计技术——通过软件多线程提升性能 , 作 者: (孟加拉)阿克特(Akhter,S.),(美)罗伯茨(Roberts,J.) 著,李宝峰,富弘毅,李韬 译 本书从原理、技术、经验和工具等方面为读者提供关于多核程序设计技术的全方位解释。本书由三大部分组成:第一部分包括第转载 2011-09-07 14:38:40 · 1764 阅读 · 0 评论 -
Linux下如何测试及使用USB转串口线
1、将设备u口插入pc2、输入#lsmod 先看看能否检测到这个设备,就看有没有pl2303字眼可以了。如果有,则不需要再装驱动。另外如果有的话最好再用dmesg | grep usb查找如果看到:“drivers/usb/serial/usb-serial.c: USB Ser转载 2011-08-08 09:45:55 · 2234 阅读 · 1 评论