-
谈一谈二叉搜索树中序迭代器的重点设计
所属栏目:[教程] 日期:2021-11-19 热度:70
之前在完成TinySTL项目中二叉搜索树的设计时发现要想完成其中序迭代器的设计,关键的一步是完成迭代器的++操作,当实现了这个操作时那么这个迭代器的90%的操作都可以很快的完成了。 下面先来看看node的定义: struct node{ typedef T value_type; T data_; n[详细]
-
[C/C++基础] C语言常用函数memset的使用技巧
所属栏目:[教程] 日期:2021-11-19 热度:165
函数声明:void *memset(void *s, int ch, size_t n); 用途:为一段内存的每一个字节都赋予ch所代表的值,该值采用ASCII编码。 所属函数库:memory.h 或者 string.h 参数:(1)s,开始内存的地址;(2)ch和n,从地址s开始,在之后的n字节长度内,把每一个字[详细]
-
C语言达成服务端和客户端进行TCP通信实例
所属栏目:[教程] 日期:2021-11-19 热度:189
本文给出一个很实用的C语言实现的服务端和客户端进行TCP通信的小例子。具体实现上非常简单,只是平时编写类似程序,具体步骤经常忘记,还要总是查,暂且将其记下来,方便以后参考。 (1)客户端程序,编写一个文件client.c,内容如下: #include stdlib.h #i[详细]
-
Java中如何达成单例模式
所属栏目:[教程] 日期:2021-11-19 热度:182
Java中,单例模式通常有2种分类饿汉模式和懒汉模式。 饿汉模式指的是单例实例在类装载时就被创建了。 懒汉方式值的是单例实例在首次使用时才被创建。 无论是饿汉模式还是懒汉模式,都是用了一个静态成员变量来存放真正的实例。并且私有化构造函数,防止被外[详细]
-
C++String中用于查找的find系列函数畅聊
所属栏目:[教程] 日期:2021-11-19 热度:92
总述: 以下所讲的所有的string查找函数,都有唯一的返回类型,那就是size_type,即一个无符号整数(按打印出来的算)。若查找成功,返回按查找规则找到的第一个字符或子串的位置;若查找失败,返回npos,即-1(打印出来为4294967295)。 1.fine() 原型: //[详细]
-
Lua介绍赋值类型代码的过程
所属栏目:[教程] 日期:2021-11-19 热度:175
我们来看看lua vm在解析下面源码并生成bytecode时的整个过程: 1 foo = bar 2 local a, b = a, b 3 foo = a 首先我们先使用ChunkySpy这个工具来看看vm最终会具体生成什么样的vm instructions 在这里,开头为[数字]的行是vm真正生成的字节码,我们看到一共生成[详细]
-
Lua执行字节码的过程详解
所属栏目:[教程] 日期:2021-11-19 热度:113
前面一篇文章中介绍了lua给下面代码生成最终的字节码的整个过程,这次我们来看看lua vm执行这些字节码的过程。 1 foo = bar 2 local a, b = a, b 3 foo = a 生成的字节码如下所示: 之前lua是在luaY_parser函数(入口)中完成了lua脚本的解析生成字节码的整个[详细]
-
PHP中处理浮点数的一些技巧记录
所属栏目:[教程] 日期:2021-11-19 热度:79
请不要在程序中直接使用等号、大于、加、减、乘、除等操作浮点数,如果需要对浮点数进行以上操作,请使用下面的BC系列函数。以确保准确性及精度。 两个高精度数比较大小 int bccomp ( string $left_operand , string $right_operand [, int $scale ] ) left=[详细]
-
C#的前景:闭包注解
所属栏目:[教程] 日期:2021-11-19 热度:188
在有一定兴趣列表上的下一条提议是相当有争议的,这条关于 Lambda 捕获列表的提议假设,它能够对闭包中的变量捕获提供更多的控制能力。 这条提议一上来就讲到了捕获列表,这是一种常见于 C++ 中的概念。以下的示例中包含了一个常见的闭包,以及一个用捕获列[详细]
-
Java达成二分查找
所属栏目:[教程] 日期:2021-11-19 热度:50
二分法查找 1.二分法查找是建立在已经排序的基础之上的。 2.以下程序分析从小到大排序。 3.这个数组中没有重复的元素. 1 3 5 9 11 13 56 以上是一个已经排好序的int类型的数组,要求快速找出13这个元素的下标。 分析过程如下: int begin = 0; int end = 6; in[详细]
-
Android系统关机或重启的实现技巧
所属栏目:[教程] 日期:2021-11-19 热度:161
前阵子工作上遇到一些关于Android系统关机或重启的系统修改,于是,做了一些尝试,也搜集了一下资料,现在整理一下,做一些总结,方便学习或者日后工作的需要。 默认的SDK并没有提供应用开发者直接的Android系统关机或重启的API接口,一般来讲,实现Android[详细]
-
iOS高级编程之XML,JSON数据介绍
所属栏目:[教程] 日期:2021-11-19 热度:144
解析的基本概念 所谓解析:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式、数据提供方按照格式提供数据、数据获取方按照格式获取数据 iOS开发常见的解析:XML解析、JSON解析 一、XML数据结构 XML数据结构基本概念 XML:Extensible Markup lang[详细]
-
C++ 达成01背包动态规划
所属栏目:[教程] 日期:2021-11-19 热度:150
简述一下01背包: 背包容量大小固定,有一些物品,每个物品都有重量和价值两个属性,且物品唯一不重复(即同一物品只能放入一个),放入物品的总重量不能超过背包容量 ,求放入背包的物品的总价值最大化。0代表不放入,1代表放入。 可以通过建表的方式实现01[详细]
-
C++ sizeof概括
所属栏目:[教程] 日期:2021-11-19 热度:188
关键字sizeof的作用是返回对象或类型占用的内存字节数,返回值是size_t。 基本数据类型占用的字节数:(32位系统) char 1字节 bool 1字节 short 2字节 int 4字节 long 4字节 float 4字节 double 8字节 对sizeof结果的一个重要影响因素是字节对齐。首先看一[详细]
-
C++ 不使用virtual达成多态
所属栏目:[教程] 日期:2021-11-19 热度:67
不使用virtual实现多态可以用成员函数指针完成。 成员函数指针形式:返回类型(A::*指针名)(形参表) 其中A是类类型,即这个指针是指向A类的成员函数的函数指针 例如:int(A::*P)(int,int)这是一个指向 A类的带有两个int型形参且返回值是int的成员函[详细]
-
快速排序的递归方式和非递归办法
所属栏目:[教程] 日期:2021-11-19 热度:179
我们知道快递排序大部分的版本都是递归的方式来实现的:通过Pritation来实现划分,并递归实现前后的划分。由于同学上次百度二面面试官问起快速排序的非递归的实现方式,当时同学不会,因为我们大部分看到的都是递归方式来实现快速排序。并没有关注非递归的方[详细]
-
选择排序算法的Java达成
所属栏目:[教程] 日期:2021-11-19 热度:96
1,采用选择排序对元素进行排列时,元素之间需要进行比较,因此需要实现ComparableT接口。即,T extends ComparableT. 更进一步,如果允许待比较的类型可以和它的父类型进行比较,则需要写成:T extends Comparable? super T, 其中? super T 表示 T 的任意[详细]
-
使用Java数组达成顺序表
所属栏目:[教程] 日期:2021-11-19 热度:142
1,引入了Java泛型类,因此定义了一个Object[] 类型的数组,从而可以保存各种不同类型的对象。 2,默认构造方法创建了一个默认大小为16的Object数组;带参数的构造方法创建一个指定长度的Object数组 3,实现的顺序表的基本操作有:返回表的长度、获取指定索[详细]
-
C#的前景:方法契约
所属栏目:[教程] 日期:2021-11-19 热度:62
近些年来,开发者可以通过代码契约(Code Contracts)这个研究性项目获得添加方法级别契约的能力,但这种方式存在许多问题,它所使用的命令式语法相当冗长,并且通过工具提供的语法支持也很差。无论是开发类库或是应用程序,要完整的利用这一契约特性,必须[详细]
-
用 Python 达成各种排序算法
所属栏目:[教程] 日期:2021-11-19 热度:130
归并排序 归并排序也称合并排序,是分治法的典型应用。分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并。 具体的归并排序就是,将一组无序数按n/2递归分解成只有一个元素的子项,一个元素就是已经排好序的了。然后将这些有序的子元素进行[详细]
-
Linux最简单的驱动编写及测试步骤
所属栏目:[教程] 日期:2021-11-19 热度:115
本文采用nfs挂载网络文件系统的方式,手动创建设备节点,动态加载驱动模块,对理解驱动编写流程有很大好处! 一、初级驱动执行流程: 1、写好Makefile文件,里面包含将应用程序编译成app文件,将驱动程序编译成mydrv.ko文件的脚本 2、在Ubuntu里执行sudo mak[详细]
-
Java日期时间操作的一些措施
所属栏目:[教程] 日期:2021-11-18 热度:74
1. 获得Calendar实例: Calendar c = Calendar.getInstance(); 2. 定义日期/时间的格式: SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); 3. 把日期/时间转换成固定格式,使用SimpleDateFormat的format()方法: String datetime = sdf.form[详细]
-
对socket编程的认识
所属栏目:[教程] 日期:2021-11-18 热度:180
最近看了看socket网络编程,对于我这种一点经验都没有的选手来说只能理解一点点吧。所以在此记录一下最近的收获。 socket编程无非就那几个函数,对于服务端来说,主要的为socket(),bind(),listen(),accept(),close()。对于客户端来说主要为connect(),cl[详细]
-
JVM ClassLoader加载步骤
所属栏目:[教程] 日期:2021-11-18 热度:83
JVM ClassLoader加载过程 1)三个类加载器: bootstrap classloader - 引导(也称为原始)类加载器,它负责加载Java的核心类。 extension classloader - 扩展类加载器,它负责加载JRE的扩展目录中JAR的类包。 system classloader - 系统(也称为应用)类加[详细]
-
ArrayList和LinkedList差异
所属栏目:[教程] 日期:2021-11-18 热度:145
一般大家都知道ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,Line[详细]