
C/C++/JAVA
conceptcon
这个作者很懒,什么都没留下…
展开
-
C语言内存地址对齐详解
C语言内存地址对齐详解什么是地址对齐?现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排列,这就是对齐。为什么要地址对齐?对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台转载 2012-08-06 16:04:59 · 1578 阅读 · 0 评论 -
Java 线程安全性(thread-safe)
《Java并发编程实践》学习笔记之二:线程安全性(thread-safe) 1、什么是线程安全性 1.1 不可用状态 调用一个函数(假设该函数是正确的)操作某对象常常会使该对象暂时陷入不可用的状态(通常称为不稳定状态),等到操作完全结束,该对象才会重新回到完全可用的状态。 1.2 线程安全性的核心问题 如果其他线程企图访问一个处于不可用状态的对象,该对象将不能正确响应从而产生无法预料的结果,如何避...转载 2018-03-19 11:12:34 · 1108 阅读 · 0 评论 -
JNI学习
JNI是Java Native Interface的缩写,JNI是一种机制,有了它就可以在java程序中调用其他native代码,或者使native代码调用java层的代码。也就是说,有了JNI我们可以使Android项目中,java层与native层各自发挥所长并相互配合。 JA转载 2013-09-12 11:49:39 · 4627 阅读 · 0 评论 -
C/C++的预编译和宏定义
预编译是整个编译过程的第一步,是g++ -E选项输出的结果。这个步骤处理的是源文件/头文件中的宏,宏指令常用的有以下几类:文件包含:#include宏定义:#define、#undef条件编译:#ifdef、#ifndef、#if、#elif、#else、#endif1. 文件包含 #include预处理会把要包含的文件的内容全部包含进来,比如下面这个文件prepr转载 2015-03-04 19:17:30 · 2070 阅读 · 0 评论 -
Linux C语言调用C++动态链接库
如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明,那么你如何用c调用呢,别着急,本文通过一个小小的例子,让你能够很爽的搞定. 链接库头文件://head.hclass A{ public: A(); virtual ~A(); int gt(); int pt();private: int s;};.cpp//firstso.转载 2013-09-12 10:53:39 · 3881 阅读 · 0 评论 -
双链表排序--可以在任意位置正确插入节点
/** 本文件代码包含对双链表进行排序操作及测试,其中冒泡法,采用值交换排序;选择法,采用节点交换排序*/#include #include /* 双链表结构体声明,注意链表结点创建参照了《C与指针》一书 */typedef struct list{ int data; struct list *forward; /* 指向前向结点 */原创 2012-10-17 08:18:10 · 2560 阅读 · 0 评论 -
C++中抽象类、虚函数和纯虚函数与Java中相关概念的对比
C++中没有接口的概念,与之对应的是纯虚类,即只含有纯虚函数的类,C++抽象类的概念是含有纯虚函数成员的类。这是因为C++提供多继承,而像 java、C#这些只提供单继承(避免多继承的复杂性和低效性)的语言为了模拟多继承功能就提供了接口概念,接口可以继承多个。abstract class是抽象类,至少包含一个纯虚函数的类就叫做抽象类。但是如果一个类,所有的成员都是纯虚函数,那么它和一般的抽转载 2013-06-13 10:43:46 · 2874 阅读 · 0 评论 -
宏中"#"和"##"的用法
宏中"#"和"##"的用法 一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include #include using namespace std; #define STR(s) #s #define CONS(a,b) int(a##e##b) int main() { printf转载 2013-08-26 08:27:01 · 1005 阅读 · 0 评论 -
extern "C"
简介extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。含义(1) 被extern限定的函数或变量是extern类型的:a.extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明externint v,然后就可以引用变量v。这原创 2013-09-12 11:27:57 · 875 阅读 · 0 评论 -
没看懂,保下
几周前, Linus Torvalds在Slashdot上回答了一些问题。其中有一条引发了开发者们的强烈关注,当被问到他心目中的内核黑客时,他说自己这些日子已经不怎么看代码了,除非是帮别人审查。他稍微暂停了一下,坦言那些“狡猾”的通过文件名查找高速缓存又抱怨自己能力一般的内核“恶魔”(黑客)才是他欣赏的。他说:相反,很多人连低水平的内核编程都还没学好。像lockless用名字查找(na转载 2013-01-14 22:27:20 · 823 阅读 · 0 评论 -
Eclipse快捷键,部分
1. Ctrl+左键 和F3这个是大多数人经常用到的,用来查看变量、方法、类的定义跳到光标所在标识符的定义代码。当按执行流程阅读时,F3实现了大部分导航动作。2 Ctrl+Shift+G在工作空间中查找引用了光标所在标识符的位置。可以说是与F3相反的快捷键。当按类定义进行阅读时,可以迅速找出当前类方法在被哪些类调用了。3. Ctrl+O查看一个类的纲要,列出其方法和成员变量转载 2013-08-05 11:47:42 · 1174 阅读 · 0 评论 -
Android中消息系统模型和Handler Looper
from : http://www.cnblogs.com/bastard/archive/2012/06/08/2541944.html作为Android中大量使用的Handler,结合Thread使其具有众多的使用形式和方法,让我一时感觉这个东西有些玄乎,不明所以然,这到底是一个什么样的存在呢?通过网上资料和源码的学习,这个Handler也差不多弄清楚了,现在总结下这个转载 2013-07-16 15:04:28 · 938 阅读 · 0 评论 -
[C++][Thread] 转:线程池原理及创建(C++实现)
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。为什么需要线程池 目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库转载 2013-07-08 09:13:28 · 3344 阅读 · 2 评论 -
C++模板学习
from: http://www.cnblogs.com/gaojun/archive/2010/09/10/1823354.html1.模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Over转载 2013-07-16 09:53:38 · 970 阅读 · 0 评论 -
static_cast和const_cast有什么作用
C++通过引进四个新的类型转换操作符克服了C风格类型转换的缺点,这四个操作符是, static_cast, const_cast, dynamic_cast, 和reinterpret_cast。在大多数情况下,对于这些操作符你只需要知道原来你习惯于这样写,(type) expression 而现在你总应该这样写: static_cast(expression) 例如,假设你想转载 2013-04-28 18:10:06 · 1210 阅读 · 0 评论 -
Java线程系列---Runnable和Thread的区别
from: http://blog.youkuaiyun.com/wwww1988600/article/details/7309070在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是转载 2013-07-15 09:08:45 · 947 阅读 · 0 评论 -
malloc分配内存-----一个有错
#include #include char * init(char *p){p = malloc( sizeof(char)) ;if( !p ){printf("p is NULL !\n");return NULL ;}return p ;}char * init_test(char **p){*p = malloc( siz原创 2012-11-23 09:06:42 · 623 阅读 · 0 评论 -
从Android代码中来记忆23种设计模式
原文链接:http://www.jianshu.com/p/1a9f571ad7c0相信大家都曾经下定决心把23种设计模式牢记于心,每次看完之后过一段时间又忘记了~,又得回去看,脑子里唯一依稀记得的是少数设计模式的大致的定义。其实,网上很多文章讲得都非常好,我也曾经去看过各种文章。也曾一直苦恼这些难以永久记下的设计模式,直到我接触到了《Android源码设计模式解析与实战》——何红辉...转载 2019-06-11 16:29:25 · 702 阅读 · 0 评论