软件技术【C/JNI..】
x-teamer团队
X-teamer打造了一个互联网交易模型的核心, 在这个模型之下,建立千变万化的商业生态和定制化产品研发。这就是商业的万有引力模型。
展开
-
Eclipse GCC 入门
下面是本人入门的一些做法及结论: 1. 安装:下载Eclipse3.5 CPP版本 和Cygwin. 如果Cygwin安装成功, 则配置开发环境基本无问题。网上有关于Cygwin和MinGW的Eclipse配置,这里也无需我多费口水。 2. Note: Cpp源代码的后缀名要小心, CPP和cpp混写造成编译通不过的问题. //这个问题折磨了我不少时间。 使用这个环境一段时原创 2009-07-30 17:35:00 · 6310 阅读 · 7 评论 -
C语言难点专题——复杂的函数声明
类似void(*signal(int, void(*)(int)))()的说明, 经典或者不经典的书籍, 都有过解读, 《C专家编程中》, 设定了一套长长的解读规则, 记住它恐怕绝非易事, 后面终于在《C traps and pitfalls》找到能让人轻松的解释。 下面个人对这方面的理解。 建议大家翻阅一下 书的2.1节 1. 理解之一. 无论是变量声明, 还是函数声明, 包含两方面的内原创 2010-03-21 09:55:00 · 2886 阅读 · 3 评论 -
耗时操作方案总结
总结了以下几种耗时操作: 1. 界面调用一个耗时的后台操作(以SWT 为例) 2. Java 调用一个耗时的本地代码(JNI)原创 2010-06-27 10:05:00 · 2525 阅读 · 0 评论 -
JNI 的多线程
之前的博文中讲述了JNI的基础知识: Java 类型和C/C++类型的转换 cygwin + gcc+makeFile入门(三): JNI的编译 这两篇文章讲述了JNI最普遍的两个问题, 环境的建立以及参数的传递. JNI作为连接Java 和 本地C资源的一个非常重要的技术, 需要被好好重视并掌握, 本章将总结一下JNI涉及的多线程问题, 在此之前, 需要原创 2010-05-25 21:21:00 · 14694 阅读 · 4 评论 -
笔试面试—C语言基础
将面试和笔试中出现的问题归档如下: java基础, c 基础, Linux操作系统, Android系统, 通信协议, 不断更新常见的, 有意思的问题. 本章讲的是c 语言基础原创 2010-06-06 09:27:00 · 1840 阅读 · 5 评论 -
字符编码知识
看到字符, 想到编码, 联想文本;看到字节, 想到解码,联想二进制。 注意Java和c之间的区别.原创 2010-06-11 20:17:00 · 1341 阅读 · 3 评论 -
C语言(Unix)IO 总结
总结一下IO原创 2010-06-22 20:53:00 · 1572 阅读 · 2 评论 -
Android NDK 原理
本文介绍Android NDK 原理, 熟悉此教程, 需要有JNI的基础, 以及Android 应用程序的入门知识(环境搭建, 工程运行等), 可以查看本站的其它文章. 本文关注Android NDK的原理知识.原创 2010-09-23 08:54:00 · 5049 阅读 · 2 评论 -
C++对象赋值的四种方式
通过函数可以得到一个对象, 这个对象可以存在于堆中, 也可以存在于栈中, 总结下来一般有四种方式, 四种方式都可以实现目的, 但会带给我们不少陷阱. 做个简单总结.原创 2010-12-14 21:56:00 · 11190 阅读 · 2 评论 -
利用Eclipse CDT 阅读C/C++代码
常见阅读代码的工具有 , visual c++, visual studio + va(visual assistant), 以及 source insight, 这几个功能强大的收费软件 , 目前用得非常多 , 尤其是 Source Insight( 以下简称 SI), 是一个不错的跨平台的软件 . 今天推荐的 Eclipse C++ 版本 , 同样也是一个优秀的开源阅读代码的工具 , 其优越性有甚于 SI, 表现在以下几点 .原创 2010-10-25 14:42:00 · 20218 阅读 · 5 评论 -
C++ 的常见问题和解答[不断更新]
总结项目中碰到的C++/C出现的部分问题原创 2010-10-26 14:55:00 · 1598 阅读 · 6 评论 -
简明CallBack 教程
模块间的通信机制是架构学习的重点, Call-back的应用无疑是最常见的, 由此引申出来的设计模式也非常之多, 如观察者模式, 这篇文章无疑是非常浅显的, 做这个总结, 也是为了将来引出工作中用到的Event配信机制. 后面涉及到通信的文章将会一起串烧. Callback的目的是用来1 V N系统, 即一个系统要负责和N个子系统进行动作或者消息的交互. 目的是为了方便系统的维护.原创 2010-12-24 15:00:00 · 2019 阅读 · 0 评论 -
Java 走向C++
本文不涉及一些微妙蛋疼的语法比较, 关注的是宏观方面, 当然后期逐步更新如果, 如果觉得必要, 可能会加上.议题之一: 初始化的比较1. CPP基类的任何类构造函数会默认调用父类的不带参数的构造函数,这点Java也是同样处理的.子类调用父类的构造函数方式会原创 2010-11-25 17:48:00 · 2935 阅读 · 1 评论 -
C语言难点专题——数组和指针
数组和指针是C中常见的数据结构,和基本类型不同,这两个数据结构可以表示多个数据的集合。在理解和区分这两个概念前,先了解一下内存模型。 内存就相当于街道两边的房子,内存地址,就是房子的门牌号。内存和房子一样,可以存放需要的数据。 现在问题就来了, 怎么描述一排排的房子【内存数据】呢?这里有两个方案,第一种,就是数组,第二种,就是指针。 这两个东东用来描述“连续且有相同结构的内存数据”。这两种数据的原创 2009-12-06 19:59:00 · 1892 阅读 · 2 评论 -
GDB调试入门
调试符号-g 是在编译的时候产生,而非链接的时候产生;所以: 编译成.o文件时候,需要带这个选项. 与调试相关的几个知识点:1. 执行命令: gdb [可执行文件] 如果不是-g选项编译出来的,会直接告诉你,不能调试 2. 通过list标出文件 多个源文件可以是: list a.cpp:10 表示列出源文件a.cpp的第十行(不指定行号,此命令将无效原创 2010-01-29 23:21:00 · 4219 阅读 · 5 评论 -
不同平台下,库文件的编译和应用原理
可能你还在用Visual C++平台或者VS2005编译源文件, 最后生成一个.exe或者DLL或者是lib文件,这一切都发生得那么神不知鬼不觉,测试一下,你是否了解下面的概念: 1. 一个dll或者exe文件的生成经过了哪些环节?2. dll的调用有哪些方式?在这些不同的方式中,随DLL发布的.h文件, .lib文件,.dll文件将参与新的编译连接过程,那么他们分别参与到哪些过程.原创 2009-11-29 10:15:00 · 2966 阅读 · 3 评论 -
MakeFile 入门
MakeFile是个很不错的编译管理工具, 现在发现好的工具必然是这样的, 它能提供一个细分的方法,把一个大的目标让你细化, 最后汇成总目标。 所有的软件工程必须具备这样的条理和逻辑思维,否则当项目功能增加,导致无法编译, 还是谈MakeFile:目标:【依赖一,依赖二】然后编译。这两篇文章不错,http://blog.csdn.net/gudi3798/archive/2007/05/11/16原创 2009-08-14 15:13:00 · 1108 阅读 · 0 评论 -
VS2005 JNI编译
VS2005应该存在一个硕大的Bug。 描述,在编译JNI的时候, 反复不能编译出.dll, 而是.dll后面加一些embed后缀, 也不报错。 解决方法, 手动删除Debug目录下的全部文件。然后再编译。 有点意思。原创 2009-09-16 10:46:00 · 1775 阅读 · 0 评论 -
JNI的提高,Java类型和C(C++)类型转换源代码
JNI的环境准备就不说了, 网上大把大把的, 这里讲到的内容层次稍微深一点, 涉及Java和C的类型问题, 并配了实际案例的源代码。 JNI大体的流程是: Java端发起调用, 使C端的代码运行, 此时从Java侧传过来的对象, 可以在C端运行. 首先谈谈Java侧准备的代码:1. 包含Native 方法的class2. 通过JavaH, 将1中的Native方法生成C的函原创 2009-09-16 11:41:00 · 13789 阅读 · 6 评论 -
什么是多态
通过基类的方法, 展现出不同子类功能。这就是多态. 比方一下: 你和你朋友都是烟鬼, 某日,你没有带烟, 而你朋友有n种烟, 你说: 来根烟, 朋友给你一根; 你吸了一下,品出为白沙烟 你再要一根, 你吸了一下,品出这次是芙蓉王, 再要一根, 你吸了一下,品出这次是熊猫 ... 上面描述的就是多态! 烟 a = 白沙 烟 b = 芙蓉王 烟 c = 熊猫 但发现没有, 仅仅通过"烟"原创 2009-10-05 09:22:00 · 1475 阅读 · 1 评论 -
覆盖(重写),重构,重载的区别
论坛中常常看到有人问这样的问题,因此总结一下: 首先这三个概念描述得范围是不同的: 重构, 是对软计设计方法的描述, 这个层面是架构和设计方法, e.g: 你今天写了一个应用, 读txt文档并显示, 几天后,用户的新需求来了, 告诉你, 我要读一个XML文本并显示, 这个时候, 你从前的代码需要做变更, 这个变更的动作, 就叫做重构; 更小一点的例子,你维护的模块有原创 2009-10-05 09:04:00 · 11402 阅读 · 5 评论 -
传值还是传引用—— java和C函数参数传递解读
关于Pass-By-refrence 和Pass-By-value 的争论始终活跃在论坛一线。 今天就来揭露其中的来龙去脉, 给自己和初学者来个彻底剖析。 首先来看, 为什么有"值"和"引用"的提法. 什么是值(Value), 直接操作的东西, 就是值。如我有一个包裹, 不用通过中间手段, 我拿起来就可以操作。相对于引用(refrence), 是指间接的东西。比如我有一个包原创 2009-10-03 23:09:00 · 3242 阅读 · 4 评论 -
字符串的两种不同风格: C++风格和C风格
这个提法有点怪异,但还是常常出现: char *p = "abcd"; 和 string str = "abcdefg"; 第一个叫做C风格的字符串,原因是有null作为结尾; 第二个为C++风格的, 不是以null结尾. 实质上: C风格的字符串是: char[] pArr = {a, b, c, d, /0}; 这样原创 2009-10-21 15:48:00 · 1220 阅读 · 3 评论 -
cygwin + gcc+makeFile入门(一): Mafile的基本指令
别指望这篇文章帮你搭建Cygwin的环境。 因为说这个的太多。这篇文章的环境是Cygwin的开发环境。 这篇文章将指引如何写MakeFile, 以及Gcc编译的几个常用开关: MakeFile的思想:提供一个细分的方法,把一个总目标让你细化成小目标, 小目标执行完之后,总目标最后再执行。MakeFile的基本格式: 总体目标:依赖目标1【空格】 依赖目标2【原创 2009-11-21 13:07:00 · 13226 阅读 · 5 评论 -
cygwin + gcc+makeFile入门(二): 动态链接库编译
编译DLL指令有如下三部曲: 第一步: DLL源文件编译成.o文件gcc -c dll.cpp -o dll.o 第二步: DLL的.o文件编译成.so或者.dll文件(注意务必以lib开头, 这是gcc的约定)gcc -shared -o libmyDLL.dll dll.o 第三步: 编译应用程序(务必省略后缀文件名以及lib前缀, gcc的约定)-L不能省原创 2009-11-21 13:34:00 · 6549 阅读 · 9 评论 -
cygwin + gcc+makeFile入门(三): JNI的编译
不想花大力气介绍JNI,所以这部分需要你自己去查阅入门资料: 1. 写包含Native方法的Java类 2. 编译上述java类,并通过javah生成.h头文件 3. 根据头文件写CPP 4. 编译.h + .cpp文件 首先学习一下设置环境变量:1. 引用环境变量, 用美元符号 $PATH2. 设置环境变量, export helloworld=a原创 2009-11-21 13:40:00 · 9075 阅读 · 2 评论 -
C语言难点专题——enum, struct 和 Union
C语言常用的几个数据结构, 做一个小总结, 方便查阅:一: enum enum没有任何神奇的地方,仅仅是让某些整数值变得有意义, 比如说, 电源开,用0表示,电源关,用1表示, 那么我们可以定义一个变量open, 和close, 表示电源的开和关。 void testEnum(){ enum MyEnum{first = 1, sec原创 2010-01-24 10:57:00 · 3722 阅读 · 1 评论 -
C语言难点专题——static
static修饰的函数或者变量存在两种情况: 第一, 全局的静态函数和方法; 第二, 局部的静态变量。 第一: 全局的static变量和方法 全局的Static变量和函数,仅仅在定义的文件中有效。 <spanlang=EN-US><v:shape id="_x0000_i1025" type="#_x0000_t75" style=width:5in; he原创 2010-01-24 11:30:00 · 2541 阅读 · 2 评论 -
C语言难点专题——const
1. const对值类型的数据修饰: 如基本类型(int, double, char), struct, array 值类型的数据,const放置在前面和后面都一样。 对于struct和 Array类型的数据, 跟java的类对象不同,由于java都是对象的引用,所以只要求引用不乱指就行, 而c中,直接要求这个对象的内部成员都不可改变,即struct的任何成员,不可改变,array的任意一项不可原创 2009-12-06 20:13:00 · 4684 阅读 · 5 评论