- 博客(20)
- 资源 (33)
- 收藏
- 关注
原创 JNI学习笔记(2)
JavaVM接口第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。一般都在这个时候保存一个static的JavaVM *jvm,这个jvm指针在进程内是可以放心共享的。第二种方式,在native code中调用JNI_CreateJavaVM(&jvm
2012-09-28 22:15:19
3174
1
原创 结构体的内存对齐
原则一:结构体中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。从结构体存储的首地址开始,每一个元素放置到内存中时,它都会认为内存是以它自己的大小来划分的,因此元素放置的位置一定会在自己宽度的整数倍上开始(以结构体变量首地址为0计算)。原则二:在经过第一原则分析后,检查计算出的存储单元是否为所有元素中最宽的元素的长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。
2012-09-28 21:55:40
699
原创 Jni学习笔记(1)
jni.h文件必须包含, 定义了所有jni函数声明和数据类型JNIEnv结构包含了JNI函数表第二个参数取决于该方法是静态还是实例调用, 是实例的话第二个参数就是实例本身, 静态的话指向类1.签名用于解决方法重载问题Java方法例子:long f(int n, String s, int[] arr);签名: "(IL
2012-09-23 11:28:27
789
原创 用Android NDK编译ffmpeg(ndk 4r && ffmpeg 0.6.6)
折腾了两天多终于成功在windows下用ndk编译了ffmpeg了,虽然ndk和ffmpeg都使用的是老版本, 至少能编译通过并且正常使用,所以本文只介绍ndk 4r下 ffmpeg 0.6.6的编译,其他版本的不要乱套,不一定成功,本人就吃过这个亏。一、安装cygwin、配置ndk和下载ffmpeg源码 这步就不说了,网上很多教程,再次声明本教程只针对ndk R4这
2012-08-06 16:16:59
2134
原创 ConcurrentModificationException异常
最近在写android程序的过程中,对容器ArrayList操作的时候,碰到了java.util.ConcurrentModificationException异常,是在遍历一个容器的时候,删除容器里面的元素:foreach(element e: list){ if(condition){ list.remove(e); }};官方文档中的说法是这样的:
2012-03-14 17:19:20
14143
转载 android解析XML总结(SAX、Pull、Dom三种方式)
很好的一篇对android中xml解析方法进行总结的博文,转自http://www.cnblogs.com/JerryWang1991/archive/2012/02/24/2365507.html在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX、Pull、Dom解析方式。最近做了一个android版的优快云阅读器,用到了其中的两种(sax,
2012-03-03 15:16:29
659
转载 Java抽象类和接口的区别
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很
2012-02-28 13:04:04
327
原创 C++代码优化(2)函数设计与返回值优化
最近在看《提高C++性能的编程技术》,看到返回值优化这一章的时候顺便温习一下《高质量C++编程指南》相应的章节。(1)函数设计 1、参数的书写要完整,不要贪图省事只写参数的类型而省略参数名字。如果函数没有参数,则用void填充。void SetValue(int width, int height); // 良好的风格void SetValue(int, int);
2012-02-24 13:12:03
1619
原创 C++代码优化(1)
经常能看到论坛上讨论C++好还是JAVA好,哪个效率高等等,其实作为编程语言,它们必有自己存在的价值,在某一领域发挥着它们的作用。可以说一个C++菜鸟写出来的程序的性能肯定没有一个JAVA老手写出来的程序的性能好,可见程序性能的好坏是要看程序员的功力。最近在看《提高C++性能的编程技术》,边看边把一些有用的技巧整理一下写到博客上。(1)缓式构造 往往性能的优化经常需要
2012-02-23 12:25:52
707
原创 C++中的重载、覆盖和隐藏
重载:函数被重载是发生在同一个范围内的,例如一个类中的两个成员函数,函数名相同,但是参数不同,与virtual关键字无关系。class A{ void f();//3个f互为重载函数 void f(int); void f(int,float);}覆盖:函数覆盖发生在不同的范围类,例如位于派生类与基类中的两个函数,函数名相同,参数也相同,而且基类函数必须要有virtual
2012-02-19 14:29:51
500
转载 虚函数表指针,虚函数表
虚函数表对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了 这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要
2012-02-15 12:04:39
2177
原创 .x文件结构分析
之前在玩directx编程的时候,对于组织3D网格模型数据的文件,我用过几种格式,分别是.x,.obj,.sdkmesh等等,.x文件用得比较多,.obj文件比较简单,.sdkmesh是要用directx SDK里面的工具转化而成的,看SDK文档说推荐用它,因为会比较高效(好久以前看的了,好像是这样)。在这里对.x文件进行分析一下,对于以后使用physX,bullet等做物理模拟碰、撞检测等会有帮
2012-01-26 17:58:16
2659
原创 Linux2.6系统调用劫持介绍
这几天做操作系统课程的作业,其中一个要求是设计内核模块,在查阅资料的过程中发现内核模块可以在不重新编译内核的情况下增加内核的功能,当然也可以对内核进行修改,实现对系统调用的劫持。这篇文章就是对linux下劫持系统调用的介绍和资料的整理。一、介绍 先介绍一下内核模块。内核模块是在操作系统需要的时候动态载入的目标文件对象,链接成内核的一部分,从而可以在不重新编译整个内核的
2012-01-25 17:24:06
2651
原创 A*寻径算法
看了gamedev上的一篇文章http://www.gamedev.net/page/resources/_/technical/artificial-intelligence/a-pathfinding-for-beginners-r2003,对A*算法有了一定的理解,把算法过程用自己的话描述出来,以便于以后有空的时候实现一下。 主要公式 F = G + H,见原文如下:G = th
2011-11-30 14:06:30
878
原创 static_cast、dynamic_cast、reinterpret_cast、和const_cast
标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。 static_cast用法:static_cast ( expression_r_r )该运算符把expression_r_r转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要
2011-11-30 10:58:11
448
原创 拷贝/复制构造函数
拷贝构造函数将会被调用。1).一个对象以值传递的方式传入函数体2).一个对象以值传递的方式从函数返回3).一个对象需要通过另外一个对象进行初始化例子如下Point:: Point (const Point &);默认的拷贝构造函数一般可以解决很多情况,但是如果要拷贝的对象里面有指针,指向一块内存,拷贝的对象的指针也指向这个地方,然后拷贝的对象析构的时候,会释
2011-11-24 14:12:40
504
原创 new 与 malloc 的区别
1. new/delete是c++的运算符, 而malloc/free是c语言的标准库函数,都可以用用来动态分配和释放内存。2. 对于用户自定义对象而已,malloc只是分配空间,而new却能调用调用对象的构造函数,在delete时候调用对象的析构函数。3. new可以认为是malloc加上构造函数的执行。new出来的指针式直接带类型信息的,而malloc返回的void*指针。4. n
2011-11-24 13:58:58
460
原创 WPF 触发器
1.属性触发器主要用于依赖属性Style.Triggers> Trigger Property="IsMouseOver" Value="True"> Setter Property ="Background" Value="Green"/> Tri
2011-11-24 13:36:30
2149
转载 WPF 关键帧动画
关键帧动画到目前为止介绍的所有动画都是使用线性插值从开始点移动到结束点。但是如果需要创建具有多个分段的动画或者不规则移动的动画,该怎么办呢?例如,您可能希望创建一个动画,快速地将一个元素滑入到视图中,然后慢慢地将它移动到正确的位置。可以通过创建两个连续的动画,并使用BeginTime属性在第一个动画之后开始第二个动画实现这种效果。然而,还有更简单的方法-- 可以使用关键帧动画。关键帧动画是
2011-11-16 23:34:24
3135
转载 TemplateBinding和Binding有什么区别?
TemplateBinding是Binding的一个轻量级版本,它失去了成熟版本Binding的很多功能,比如继承内容引用(inheritence context referencing),RelativeSource引用,还有通过IValueConverter/TypeConverter机制的动态类型转换。它仅支持由模板产生的FrameworkElements,它的数据源引用会指向模板中的父级元
2011-11-16 12:41:49
7847
ActionScript3.0编程精髓(中文版).part2.rar
2012-04-28
ActionScript3.0编程精髓(中文版).part1
2012-04-28
自己写的一个贪吃蛇游戏分享
2011-10-21
Direct3D游戏编程入门教程(第二版)
2011-10-19
NeHe.OpenGL.Tutorial中文
2011-10-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人