Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

C代码模拟实现C++的虚拟表

C代码模拟实现C++的虚拟表

C++的类成员如果有Virtual修饰符,则在实例化后的对象中会形成一个叫做VTBL(虚拟表)的东西,另外借助C++内在的滞后绑定功能实现所谓的多态性。下面,我借助C代码来大概演示下VTBL的实现原理,仅供参考。//模拟VTBL,实际为一套函数集合Struct SampleVtbl { void func() {}}//模拟带Virtual成员的类Struct SampleClass {SampleVtbl *pVtbl;}//分配内存空间,在尾部预留空...
基于Hadoop实现通用的并行任务处理

基于Hadoop实现通用的并行任务处理

利用 Hadoop 云技术框架实现通用的并行任务处理功能, 将原本只是单机程序改造成最终运行在 Hadoop 云平台里。优点 :1. 分布并行运行基于 MapReduce 及 dfs (分布式文件系统)实现了分布并行运行,可实现一个NoSplitInputFormat 类用于支持单个 Map 任务运行 。2. 出错自动重试Hadoop 框架具备可配置的出错任务自动重试功能,配置参数为:mapred.map.max.attempts 。3. 可保留原始输入重...
C++实现类似Java反射的基本功能

C++实现类似Java反射的基本功能

在使用C++的时候,有时想通过输入的成员名字得到相应取值的功能,也就是想实现类似JAVA语言自备的反射功能。下面是我自己想到的一个比较方便的实现,仅作记录。首先实现一个自动代码生成器:将中间语言转化为C++语言,如下为中间语言可能的定义:Class CInterLangTrans { int32 i32Trans; String sTrans;}编译之后产生的代码:Class CInterLangTrans {private: int iMemberNu...
Step By Step(Lua调用C函数)

Step By Step(Lua调用C函数)

Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L)。简单说明一下,该函数类型仅仅包含一个表示Lua环境的指针作为其唯一的参数,实现者可以通过该指针进一步获取Lua代码中实...
C++实现按1的个数排序

C++实现按1的个数排序

题目内容:有一些0、1字符串,将其按1的个数的多少的顺序进行输出。输入描述:本题只有一组测试数据。输入数据由若干数字组成,它是由若干个0和1组成的数字。输出描述:对所有输入的数据,按1的个数进行生序排序,每行输出一个数字。题目分析:(1)定义一个string型向量容器存储输入的数据;定义一个string型变量作为向量容器的元素;定义排序方法,若‘1’的个数不相等则按‘1’的个数从小到大的顺序返回,否则按字符串...
C++实现按绩点排名

C++实现按绩点排名

题目内容:有一些班级的学生需要按绩点计算并排名。每门课的成绩只有在60分以上(含),才予以计算绩点。课程绩点的计算公式为:(课程成绩-50)÷10×学分数。一个学生的总绩点为其所有课程绩点总和除以10.输入描述:输入数据中含有一些班级(数量≤20)。第一行为班级数量。每个班级的第一行数据为n(≤10),表示该班级共有n门课程。每个班级的第二行数据为a1,a2,a3,……,an,表示每门课程的...
C++排列对称串

C++排列对称串

题目内容:字符串有些是对称的,有些是不对称的,请将那些对称的字符串按从小到大的顺序输出。字符串先以长度论大小,如果长度相同,再以ASCII码值为排序标准。输入描述:输入数据中含有一些字符串(1<=串长<=256)。输出描述:根据每个字符串,输出对称的那些串,并且要求按从小到大的顺序输出。题目分析:(1)定义一个string类型的向量容器(2)将输入的字符串反转,看是否和原字符串相同,以此判断字符是否对称(3)若对称,则将该字符串插入到向量容器中...
C++实现01串排序

C++实现01串排序

题目内容:将01串首先按长度排序,长度相同时,按1的个数从少到多进行排序,1的个数相同时再按ASCII码值排序。输入描述:输入数据中含有一些01串,01串的长度不大于256个字符。输出描述:重新排列01串的顺序,使得串按题目描述的方式排序。题目分析:(1)定义一个多重集合容器,该容器的元素类型为string,采用设定的比较函数(2)因为元素是string而非结构体,所以可以编写比较函数,重载“()”操作符。对于参与比较的每两个字符串...
C++判断五位以内的对称素数

C++判断五位以内的对称素数

题目内容:判断一个数是否为对称且不大于五位数的素数。输入描述:输入数据含有不多于50个的正整数n(0<n<232)。输出描述:对于每个n,如果该数是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。题目分析:(1)判断它是否是五位以内的数,即该数是否小于100000.(2)判断该数是否对称,以下三种情况成立:该数是一位数或11;该数是三位数,即该数大于100且小于...
S3C2440时钟频率

S3C2440时钟频率

系统时钟MINI2440开发板在没有开启时钟前,整个开发板全靠一个12MHz的晶振提供频率来运行,也就是说CPU,内存,UART等需要用到时钟频率的硬件都工作12MHz下,而S3C2440A可以正常工作在400MHz下,两者速度相差可想而知,就好比牛车和动车。如果CPU工作在12MHz频率下,开发板的使用效率非常低,所有依赖系统时钟工作的硬件,其工作效率也很低,比如,我们电脑里面经常提到的超频,超频就是让CPU工作在更高的频率下,让电脑运算速度更快,虽然频...
Java序列化机制

Java序列化机制

Java序列化机制的主要目的是将内存中的对象转换成字节流,然后传输到其它的系统,并在其它系统中将字节流重新生成对象。典型的应用场景就是Java分布式系统,在一个JVM中创建的对象经常要通过网络等传输到另外一个JVM中。因此在Java分布式中,序列化是非常重要的一环。Java语言提供序列化对象方式有两种:实现 Serializable接口;这是系统的默认实现实现 Externalizable,并实现其中的writeExternal(ObjectOutput ...
Hadoop解析序列文件并可视化输出

Hadoop解析序列文件并可视化输出

Hadoop版本:1.0.4,jdk:1.7.0_25 64bit。在进行mahout算法分析的时候有时会遇到算法最后的输出文件是序列文件的情况下,这样就不能直接通过HDFS文件系统看到最终的结果了(乱码,因为是序列文件)。以前编写过一个可以直接把序列文件<key,value>读入到一个map变量中的java文件,叫做ReadArbiKV ,可以在下面的地址下载。免费下载地址在 http://linux.linuxidc.com/用户名与密码都...
Spring 3 调度器示例 —— JDK 定时器和 Quartz 展示

Spring 3 调度器示例 —— JDK 定时器和 Quartz 展示

Spring框架提供了执行和调度任务的抽象,支持线程池或者在应用服务器环境中代理给CommonJ. Spring也集成了支持使用JDK Timer和Quartz调度库提供的Quartz Scheduler来实现任务调度的类.两种调度器通过分别引用可选的Timer或者org.quartz.Trigger实例的工厂Bean来进行设置. 另外,还有一个可以同时满足Timer和Quartz Scheduler的类允许我们调用一个存在的目标对象的方法。在这篇教程中,...
基于 Spring 设计并实现 RESTful Web Services

基于 Spring 设计并实现 RESTful Web Services

在本教程中,你将会使用Spring来创建一个具有生产力的RESTful网络服务。为什么用RESTful网络服务?从和Amazon Web Services的整合,到聚合多个数据源,RESTful网络服务遵从了Roy Fielding的架构风格的指导方针,提供了简单、高效的web APIs,支持的API用户数量从少量到百万级别。你要实现一个RESTful风格的网络服务,可能会是因为:你正在创建一个API,而客户端需要通过网络才能使用它。你想要开放你们单位的数...
按键从Linux到Android

按键从Linux到Android

现在的普通按键也集成到Linux Input子系统中了,只需要把按键对应的IO端口配置好,按键就可以工作了。所以一般提供的BSP(或者叫作解决方案)中,已经完善了按键驱动。关键是快速的了解按键的映射。所以这里不作源码级分析。源码分析可以参考这里:《基于S3C2440的Linux-3.6.6移植——按键驱动》 http://www.linuxidc.com/Linux/2013-10/91993p3.htm Linux按键的扫描码 ...
<< 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 >>