随笔分类 -  语言知识

摘要:前言 Java Stream API借助于Lambda表达式,为Collection操作提供了一个新的选择。如果使用得当,可以极大地提高编程效率和代码可读性。 本文将介绍Stream API包含的方法,并通过示例详细展示其用法。 一、Stream特点 Stream不是集合元素,它不是数据结构也不保存 阅读全文
posted @ 2019-05-28 21:15 clover_toeic 阅读(3717) 评论(1) 推荐(1) 编辑
摘要:前言 Java中空指针异常(NPE)一直是令开发者头疼的问题。Java 8引入了一个新的Optional类,使用该类可以尽可能地防止出现空指针异常。 Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Option 阅读全文
posted @ 2019-05-22 16:40 clover_toeic 阅读(5190) 评论(0) 推荐(4) 编辑
摘要:Python实现C代码统计工具(三) 标签: Python 性能分析 exe [TOC] 声明 本文将对 "《Python实现C代码统计工具(二)》" 中的C代码统计工具进行性能分析,并制作Windows系统下可用的exe文件。本文所述的方法也适用于其他Python脚本。 一. 性能分析 Pytho 阅读全文
posted @ 2016-05-24 17:02 clover_toeic 阅读(1494) 评论(0) 推荐(3) 编辑
摘要:Python标准输出重定向 标签: Python stdout 重定向 [TOC] 声明 本文基于Python2.7版本,介绍常见的几种标准输出(stdout)重定向方式。显然,这些方式也适用于标准错误重定向。 本文同时也发布于 "作业部落" ,视觉效果略有不同。 一. 背景知识 在Python中, 阅读全文
posted @ 2016-05-13 21:44 clover_toeic 阅读(60495) 评论(0) 推荐(9) 编辑
摘要:Python2.7字符编码详解 标签: Python 字符编码 [TOC] 声明 本文主要介绍字符编码基础知识,以及Python2.7字符编码实践。 注意,文中关于Python字符编码的解释和建议适用于Python2.x版本,而不适用于3.x版本。 本文同时也发布于 "作业部落" ,阅读体验可能更好 阅读全文
posted @ 2016-03-21 08:30 clover_toeic 阅读(13320) 评论(2) 推荐(7) 编辑
摘要:引言 考虑下面的结构体定义:1 typedef struct{2 char c1;3 short s; 4 char c2; 5 int i;6 }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址... 阅读全文
posted @ 2014-07-18 16:04 clover_toeic 阅读(114309) 评论(16) 推荐(93) 编辑
摘要:一 前言 预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。 预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分... 阅读全文
posted @ 2014-07-17 17:35 clover_toeic 阅读(46349) 评论(5) 推荐(44) 编辑
摘要:问题:采用递归方法计算给定整型数组元素之和。 以下给出几种递归算法的实现: 1 int sum1(int a[], int n) 2 { 3 if(n > 0) 4 return a[n-1] + sum1(a, n-1); 5 else 6 r... 阅读全文
posted @ 2014-06-11 19:30 clover_toeic 阅读(729) 评论(0) 推荐(0) 编辑
摘要:6 调用栈实例分析 本节通过代码实例分析函数调用过程中栈帧的布局、形成和消亡。6.1 栈帧的布局 示例代码如下: 1 //StackReg.c 2 #include 3 4 //获取函数运行时寄存器%ebp和%esp的值 5 #define FETCH_SREG(_ebp, _esp) ... 阅读全文
posted @ 2014-05-29 16:40 clover_toeic 阅读(5547) 评论(2) 推荐(13) 编辑
摘要:5 函数调用约定 创建一个栈帧的最重要步骤是主调函数如何向栈中传递函数参数。主调函数必须精确存储这些参数,以便被调函数能够访问到它们。函数通过选择特定的调用约定,来表明其希望以特定方式接收参数。此外,当被调函数完成任务后,调用约定规定先前入栈的参数由主调函数还是被调函数负责清除,以保证程序的栈顶指... 阅读全文
posted @ 2014-05-28 16:02 clover_toeic 阅读(22378) 评论(13) 推荐(29) 编辑
摘要:程序的执行过程可看作连续的函数调用。当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行。函数调用过程通常使用堆栈实现,每个用户态进程对应一个调用栈结构(call stack)。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用的上下文)以备... 阅读全文
posted @ 2014-05-27 17:01 clover_toeic 阅读(77381) 评论(12) 推荐(131) 编辑
摘要:分析以下代码中变量存储空间如何分配: 1 //MemSeg.c: 代码无意义,仅供分析用 2 #include <stdio.h> 3 #include <stdlib.h> //malloc函数声明位于<stdlib.h>或<cstdlib>头文件中 4 #include <string.h> 5 阅读全文
posted @ 2014-05-27 14:35 clover_toeic 阅读(2118) 评论(0) 推荐(0) 编辑
摘要:在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Add... 阅读全文
posted @ 2014-05-27 09:44 clover_toeic 阅读(40077) 评论(7) 推荐(49) 编辑
摘要:背景 C89标准规定初始化语句的元素以固定顺序出现,该顺序即待初始化数组或结构体元素的定义顺序。 C99标准新增指定初始化(Designated Initializer),即可按照任意顺序对数组某些元素或结构体某些成员进行选择性初始化,只需指明它们所对应的数组下标或结构体成员名。GNU C将其作... 阅读全文
posted @ 2014-05-20 16:21 clover_toeic 阅读(16949) 评论(0) 推荐(6) 编辑
摘要:1 二维数组 多维数组即数组维数不止1个。例如,可用如下两种方式声明二维数组:1. char Lion[3][5];2. typedef char Animal[5]; Animal Tiger[3]; Lion或Tiger可视为包含3个元素的一维数组,只不过每个元素本身是个包含5个char型... 阅读全文
posted @ 2014-05-20 13:53 clover_toeic 阅读(4357) 评论(0) 推荐(2) 编辑
摘要:1 缓冲区溢出原理 缓冲区是一块连续的计算机内存区域,可保存相同数据类型的多个实例。缓冲区可以是堆栈(自动变量)、堆(动态内存)和静态数据区(全局或静态)。在C/C++语言中,通常使用字符数组和malloc/new之类内存分配函数实现缓冲区。溢出指数据被添加到分配给该缓冲区的内存块之外。缓冲区溢出... 阅读全文
posted @ 2014-05-20 08:23 clover_toeic 阅读(46601) 评论(6) 推荐(21) 编辑
摘要:可变参数函数又称参数个数可变函数(本文也简称变参函数),即函数参数数目可变。原型声明格式为:type VarArgFunc(type FixedArg1, type FixedArg2, …); 其中,参数可分为两部分:数目确定的固定参数和数目可变的可选参数。函数至少需要一个固定参数,其声明与... 阅读全文
posted @ 2014-05-19 19:52 clover_toeic 阅读(43909) 评论(3) 推荐(22) 编辑
摘要:(被调)函数内的局部变量在函数返回时被释放,不应被外部引用。虽然并非真正的释放,通过内存地址仍可能访问该栈区变量,但其安全性不被保证。后续若还有其他函数调用,则其局部变量可能覆盖该栈区内容。常见情况有两种:前次调用影响当前调用的局部变量取值(函数的"遗产");被调函数返回指向栈内存的指针,主调函... 阅读全文
posted @ 2014-05-19 12:24 clover_toeic 阅读(2789) 评论(0) 推荐(7) 编辑
摘要:sscanf()为C语言标准库函数,用于从指定字符串中读入与指定格式相符的数据。函数原型声明在stdio.h头文件中:int sscanf(const char *str, const char *format, ...); 该函数根据参数format(格式化字符串)来转换参数str指向的字符... 阅读全文
posted @ 2014-05-14 10:03 clover_toeic 阅读(13778) 评论(0) 推荐(6) 编辑