20150605字符串及内存管理
来源:互联网 发布:js获取input text 编辑:程序博客网 时间:2024/06/06 04:50
main.c文件
//
// main.c
// IOS150605
//
// Created byPeng Junlong on 15/6/5.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#include <stdio.h>
#include <ctype.h>
//*****************************
//* *
//* 字符串 *
//* *
//*****************************
//字符串操作
//int isalnum(int);
//int isalpha(int);
//int isblank(int);
//int iscntrl(int);
//int isdigit(int);
//int isgraph(int);
//int islower(int);
//int isspace(int);
//int isupper(int);
//int isxdigit(int);
//int tolower(int);
//int toupper(int);
//int isascii(int);
//int toascii(int);
//int _tolower(int);
//int _toupper(int);
//int digittoint(int);
//int ishexnumber(int); //等同于isxdigit
//int isnumber(int); //等同于isdigit
//int main(int argc, const char * argv[]) {
//
// printf("isalnum = %d\n",isalnum('a'));//判断是否是字母或者数字字符
// printf("isalnum = %d\n",isalnum(' '));
//
// printf("isalpha = %d\n",isalpha('a'));//判断是否为英文字母字符
// printf("isalpha = %d\n",isalpha('0'));
//
// printf("isdigit = %d\n",isdigit('0'));//判断是否为十进制数字字符
// printf("isdigit = %d\n",isdigit('a'));
//
// printf("isgraph = %d\n",isgraph('a'));//判断是否为可见字符
// printf("isgraph = %d\n",isgraph(' '));
//
// printf("islower = %d\n",islower('a'));//判断是否为小写字母
// printf("islower = %d\n",islower('A'));
//
// printf("isupper = %d\n",isupper('A'));//判断是否为大写字母
// printf("isupper = %d\n",isupper('a'));
//
// printf("isxdigit = %d\n",isxdigit('a'));//判断是否为16进制字符
// printf("isxdigit = %d\n",isxdigit('g'));
//
// printf("tolower = %c\n",tolower('A'));//将大写字母转换成小写字母
// printf("toupper = %c\n",toupper('a'));//将小写字母转换成大写字母
//
// printf("digittoint = %d\n",digittoint('e'));//把十六进制字符转换成整型数据
//
// printf("isspace = %d\n",isspace(' '));
// printf("isblank = %d\n",isblank(' '));
// return 0;
//}
//字符串
//"Hello China"
//1.字符串中的每一个字符占一个字节
//2.字符串必须用""包含
//3.字符串的末尾必须要有'\0'
//4.打印字符串用%s占位符,只需要传递字符串的首地址
//5.字符串可以用字符数组存储或者存储在堆内存中
//int main(int arg, const char *argv[])
//{
// char str[] = "Hello China"; // 隐含包括一个'\0'字符;省略数组长度必须初始化数组
// printf("size = %lu\n",sizeof(str));
//
// printf("%s\n",str);
// return 0;
//}
//int main(int arg, const char *argv[])
//{
// char str1[] = "Hello China";
// char *str2 = "Hello China";
//
// str1[5] = 'A';
// //*(str2 + 5) = 'A';//str2指针指向字符串常量,不能修改字符串常量
//
// printf("str1 = %s\n",str1);
// printf("str2 = %s\n",str2);
//
// //str1 = "Hello World"; // 可以对字符指针变量赋值,但不能对数组名赋值
// str2 = "Hello World";
// printf("str1 = %s\n",str1);
// printf("str2 = %s\n",str2);
//}
//字符串长度(字符串的有效长度,有效长度不包含'\0')
#include <string.h>
//unsigned long --> size_t
//size_t strlen(const char *);
//int main(int arg, const char *argv[])
//{
// char str[] = "Hello China";
//
// printf("size = %lu\n",sizeof(str));//字符串在内存中占用的大小
// printf("length = %lu\n",strlen(str));
//
// return 0;
//}
//字符串拷贝
//char*strcpy(char *dest, const char *src); //将src的字符复制到dest,返回dest的地址;dest指针指向的内存空间足够容纳src字符串
//char*strncpy(char *, const char *, size_t); //dest:目的缓冲区,src:源字符串,n:最多拷贝的字符个数
//char *my_strcpy(char *dest, const char *src)
//{
// int i=0;
// while (src[i] != '\0') {
// *(dest+i) = src[i];
// i++;
// }
// *(dest+i) = '\0';
// return dest;
//}
//
//int main(int arg, const char *argv[])
//{
// char *str1 = "Hello China";
// char str2[100] = {};
//
// strncpy(str2, str1, 2);
// printf("str2 = %s\n",str2);
//
// //printf("str2 = %s\n",my_strcpy(str2,str1));
//
// //strcpy(str2, str1);
// //printf("str2 = %s\n",str2);
//
// return 0;
//}
//字符查找函数
//char*strchr(const char *, int); //正序查找字符,返回字符在源字符串第一次出现的位置(地址)
//char*strrchr(const char *, int); //倒序查找字符,返回字符在源字符串第一次出现的位置(地址)
//char *my_strchr(const char *src,int index)
//{
// int i =0;
// while (src[i] != '\0') {
// if (src[i] == index) {
// return (char *)(src+i);
// }
// else
// {
// i++;
// }
// }
//
//
// return NULL;
//}
//
//int main(int arg, const char *argv[])
//{
// char *str = "Hello World";
//
// printf("%s\n",my_strchr(str, 'k'));
// printf("%s\n",strchr(str, 'o'));
// printf("%s\n",strrchr(str, 'o'));
// return 0;
//}
//字符串比较
//int strcmp(const char *, const char *);
//int strncmp(const char *, const char *, size_t);
//int my_strcmp(const char *str1, const char *str2)
//{
// int i=0;
// while (str1[i] && str2[i] && *(str1+i) == *(str2+i)) { //若一个结束,另一个还有,'\0'
// i++;
// }
// return str1[i] - str2[i];
//}
//int main(int arg, const char *argv[])
//{
// char *str1 = "Hello World";
// char *str2 = "Hello Sorldas";
//
// printf("%d\n",my_strcmp(str1, str2));
//
// printf("%d\n",strcmp(str1, str2)); //从左到右逐个比较两个字符串字符的大小,用str1中的字符减去str2中的字符,
// //返回两个字符的差,只要有一个不同后面的就不再比较
//
// printf("%d\n",strncmp(str1, str2,7));//比较两个字符串的前n个字符
//
// return 0;
//}
//字符串拼接函数
//char*strcat(char *dest, const char *src);
//char*strncat(char *dest, const char *src, size_t n);//n:是最多往dest里拼接的字符个数
//char *my_strcat(char *dest, const char *src)
//{
// int i = 0;
// int j = 0;
// while (dest[i] != '\0') {
// i++;
// }
// while (src[j] != '\0') {
// dest[i] = src[j];
// i++;
// j++;
// }
// dest[i] = src[j];
//
// return dest;
//}
//
//int main(int arg, const char *argv[])
//{
// char str1[100] = "HelloWorld";
// char str2[] = "Peng";
// //printf("str = %s\n",my_strcat(str1, str2));
// //printf("str = %s\n",str1);
// printf("str = %s\n",strncat(str1, str2,10));
//
//
// return 0;
//}
//字符串分割函数
//char*strtok(char *src, const char *delim);
//src:被分割的字符串
//delim:分隔符字符串.一定要用双引号包含
//int main(int arg, const char *argv[])
//{
// char str[100] = "Hello world* peng #:Junlong";
//
// char *pstr = strtok(str, " ");
// printf("pstr = %s\n",pstr); // 结果:pstr = Hello
//
// pstr = strtok(NULL, "* ");
// printf("pstr = %s\n",pstr);//结果:pstr = world ,底层有一个指针记录了w的位置
// for (int i=0; i<100; i++) {
// printf("%c",str[i]);
// }
// printf("\n");
// pstr = strtok(NULL, " #:");
// printf("pstr = %s\n",pstr);
// pstr = strtok(NULL, " #:");
// printf("pstr = %s\n",pstr);//最后不能分割时返回的时NULL
// pstr = strtok(NULL, " #:");
// printf("pstr = %s\n",pstr);//最后不能分割时返回的时NULL
//
//// char *pstr = str;
////
//// while ((pstr = strtok(pstr, "* #:"))) {
//// printf("%s\n",pstr);
//// pstr = NULL;
//// }
//
// return 0;
//}
//查找子字符串函数
//char*strstr(const char *, const char *);
//int main(int arg, const char *argv[])
//{
// char *src = "Hello WorldPengJunlong";
// printf("str = %s\n",strstr(src, "World"));
// printf("str = %s\n",src);
// return 0;
//}
//输入两个字符串,以第二个字符串整体作为分割条件把第一个字符串进行分割,然后输出分割之后的单词。
//比如:
//输入:
//Hi#@wel@come#@to#@qian#feng
//#@
//输出:
//Hi
//wel@come
//to
//qian#feng
//char *my_strstr(const char *src, const char *sub)
//{
// char *pstr = src;
// int len = (int)strlen(src);
// int sublen = (int)strlen(sub);
// int j=0;
// for (int i=0; i<len; i++) {
// for (int j=0; j<sublen; j++) {
//
// }
// if (src[i] == sub[j]) {
// pstr = src+i;
// }
// }
// while (src[i]) {
// <#statements#>
// }
//}
//int main(int arg, const char *argv[])
//{
// char str[100] = {};//"Hi#@wel@come#@to#@qian#feng";
// char substr[20] = {};
// gets(str);
// gets(substr);
// char *pstr1 = str;
// char *pstr2 = str;
// int len = (int)strlen(substr);
// while ((pstr1 = strstr(pstr1, substr))) {
// *pstr1 = '\0';
// printf("%s\n",pstr2);
// pstr1 += len;
// pstr2 = pstr1;
// }
// if (*pstr2) {
// printf("%s\n",pstr2);
// }
// return 0;
//}
//sscanf sprintf
//int sprintf(char * __restrict, const char * __restrict, ...)
//格式化往字符缓冲区写入字符串
//int sscanf(const char * __restrict, const char * __restrict, ...)
//int main(int arg, const char *argv[])
//{
// char buf[100] = {};
// int a = 100;
// float f = 3.14;
// int ret;
// ret = sprintf(buf, "this int number is %d,and float number is %.2f\n",a,f);
//
// printf("buf = %s\n",buf);
// printf("length = %d\n",ret);
//
//
// char *src = "#234$4.22fs*";
// int b;
// float f1;
// float f2;
// ret = sscanf(src, "#%d$%ffs*",&b,&f1);//按"#%d$%ffs*"格式对src进行解析,成功解析赋值几个就返回几
//
// printf("b = %d,f1 = %f\n",b,f1);
// printf("length = %d\n",ret);
//
// ret = sscanf(src, "#%d$%ffs%f*",&b,&f1,&f2);
// printf("b = %d,f1 = %f,f2 = %f\n",b,f1,f2);
// printf("length = %d\n",ret);
// return 0;
//}
//
// MemoryManage.c
// IOS150605
//
// Created by qianfeng on 15/6/5.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
MemoryManage.c文件
//*****************************
//* *
//* 内存管理 *
//* *
//*****************************
#include <stdio.h>
//内存管理 :内存地址从低到高如下:
//.text:存储二进制可执行程序
//.data:初始化的全局变量及初始化的static关键字修饰的变量,分为只读数据段及可读可写数据段,只读数据段存储常量,如:"hello"
//.bss:未初始化的全局变量及未初始化的static修饰的变量
//.heap:堆内存,手动申请,手动释放(使用malloc和free)
//.stack:栈内存,存储局部变量
//static 关键字 ---static关键字和extern关键字不能同时修饰一个变量
//1.修饰局部变量,全局变量的生命周期,局部变量的作用域
//2.修饰全局变量,全局变量只能在当前定义的文件中可以访问
//3.修饰函数,函数只能在定义的文件中使用,其他外部文件不可以调用
void print_num(void)
{
static int num = 100; //只有该函数第一次被调用的时候才会定义num;
for (int i=0; i<5; i++) {
printf("num = %d\n",num++);
}
}
//修饰函数
static void print_Hell0()
{
printf("Hello Peng\n");
}
int main(int argc, const char *argv[])
{
print_num();
print_num();
print_Hell0();
return 0;
}
main.c文件
//
// main.c
// IOS150605
//
// Created byPeng Junlong on 15/6/5.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#include <stdio.h>
#include <ctype.h>
//*****************************
//* *
//* 字符串 *
//* *
//*****************************
//字符串操作
//int isalnum(int);
//int isalpha(int);
//int isblank(int);
//int iscntrl(int);
//int isdigit(int);
//int isgraph(int);
//int islower(int);
//int isspace(int);
//int isupper(int);
//int isxdigit(int);
//int tolower(int);
//int toupper(int);
//int isascii(int);
//int toascii(int);
//int _tolower(int);
//int _toupper(int);
//int digittoint(int);
//int ishexnumber(int); //等同于isxdigit
//int isnumber(int); //等同于isdigit
//int main(int argc, const char * argv[]) {
//
// printf("isalnum = %d\n",isalnum('a'));//判断是否是字母或者数字字符
// printf("isalnum = %d\n",isalnum(' '));
//
// printf("isalpha = %d\n",isalpha('a'));//判断是否为英文字母字符
// printf("isalpha = %d\n",isalpha('0'));
//
// printf("isdigit = %d\n",isdigit('0'));//判断是否为十进制数字字符
// printf("isdigit = %d\n",isdigit('a'));
//
// printf("isgraph = %d\n",isgraph('a'));//判断是否为可见字符
// printf("isgraph = %d\n",isgraph(' '));
//
// printf("islower = %d\n",islower('a'));//判断是否为小写字母
// printf("islower = %d\n",islower('A'));
//
// printf("isupper = %d\n",isupper('A'));//判断是否为大写字母
// printf("isupper = %d\n",isupper('a'));
//
// printf("isxdigit = %d\n",isxdigit('a'));//判断是否为16进制字符
// printf("isxdigit = %d\n",isxdigit('g'));
//
// printf("tolower = %c\n",tolower('A'));//将大写字母转换成小写字母
// printf("toupper = %c\n",toupper('a'));//将小写字母转换成大写字母
//
// printf("digittoint = %d\n",digittoint('e'));//把十六进制字符转换成整型数据
//
// printf("isspace = %d\n",isspace(' '));
// printf("isblank = %d\n",isblank(' '));
// return 0;
//}
//字符串
//"Hello China"
//1.字符串中的每一个字符占一个字节
//2.字符串必须用""包含
//3.字符串的末尾必须要有'\0'
//4.打印字符串用%s占位符,只需要传递字符串的首地址
//5.字符串可以用字符数组存储或者存储在堆内存中
//int main(int arg, const char *argv[])
//{
// char str[] = "Hello China"; // 隐含包括一个'\0'字符;省略数组长度必须初始化数组
// printf("size = %lu\n",sizeof(str));
//
// printf("%s\n",str);
// return 0;
//}
//int main(int arg, const char *argv[])
//{
// char str1[] = "Hello China";
// char *str2 = "Hello China";
//
// str1[5] = 'A';
// //*(str2 + 5) = 'A';//str2指针指向字符串常量,不能修改字符串常量
//
// printf("str1 = %s\n",str1);
// printf("str2 = %s\n",str2);
//
// //str1 = "Hello World"; // 可以对字符指针变量赋值,但不能对数组名赋值
// str2 = "Hello World";
// printf("str1 = %s\n",str1);
// printf("str2 = %s\n",str2);
//}
//字符串长度(字符串的有效长度,有效长度不包含'\0')
#include <string.h>
//unsigned long --> size_t
//size_t strlen(const char *);
//int main(int arg, const char *argv[])
//{
// char str[] = "Hello China";
//
// printf("size = %lu\n",sizeof(str));//字符串在内存中占用的大小
// printf("length = %lu\n",strlen(str));
//
// return 0;
//}
//字符串拷贝
//char*strcpy(char *dest, const char *src); //将src的字符复制到dest,返回dest的地址;dest指针指向的内存空间足够容纳src字符串
//char*strncpy(char *, const char *, size_t); //dest:目的缓冲区,src:源字符串,n:最多拷贝的字符个数
//char *my_strcpy(char *dest, const char *src)
//{
// int i=0;
// while (src[i] != '\0') {
// *(dest+i) = src[i];
// i++;
// }
// *(dest+i) = '\0';
// return dest;
//}
//
//int main(int arg, const char *argv[])
//{
// char *str1 = "Hello China";
// char str2[100] = {};
//
// strncpy(str2, str1, 2);
// printf("str2 = %s\n",str2);
//
// //printf("str2 = %s\n",my_strcpy(str2,str1));
//
// //strcpy(str2, str1);
// //printf("str2 = %s\n",str2);
//
// return 0;
//}
//字符查找函数
//char*strchr(const char *, int); //正序查找字符,返回字符在源字符串第一次出现的位置(地址)
//char*strrchr(const char *, int); //倒序查找字符,返回字符在源字符串第一次出现的位置(地址)
//char *my_strchr(const char *src,int index)
//{
// int i =0;
// while (src[i] != '\0') {
// if (src[i] == index) {
// return (char *)(src+i);
// }
// else
// {
// i++;
// }
// }
//
//
// return NULL;
//}
//
//int main(int arg, const char *argv[])
//{
// char *str = "Hello World";
//
// printf("%s\n",my_strchr(str, 'k'));
// printf("%s\n",strchr(str, 'o'));
// printf("%s\n",strrchr(str, 'o'));
// return 0;
//}
//字符串比较
//int strcmp(const char *, const char *);
//int strncmp(const char *, const char *, size_t);
//int my_strcmp(const char *str1, const char *str2)
//{
// int i=0;
// while (str1[i] && str2[i] && *(str1+i) == *(str2+i)) { //若一个结束,另一个还有,'\0'
// i++;
// }
// return str1[i] - str2[i];
//}
//int main(int arg, const char *argv[])
//{
// char *str1 = "Hello World";
// char *str2 = "Hello Sorldas";
//
// printf("%d\n",my_strcmp(str1, str2));
//
// printf("%d\n",strcmp(str1, str2)); //从左到右逐个比较两个字符串字符的大小,用str1中的字符减去str2中的字符,
// //返回两个字符的差,只要有一个不同后面的就不再比较
//
// printf("%d\n",strncmp(str1, str2,7));//比较两个字符串的前n个字符
//
// return 0;
//}
//字符串拼接函数
//char*strcat(char *dest, const char *src);
//char*strncat(char *dest, const char *src, size_t n);//n:是最多往dest里拼接的字符个数
//char *my_strcat(char *dest, const char *src)
//{
// int i = 0;
// int j = 0;
// while (dest[i] != '\0') {
// i++;
// }
// while (src[j] != '\0') {
// dest[i] = src[j];
// i++;
// j++;
// }
// dest[i] = src[j];
//
// return dest;
//}
//
//int main(int arg, const char *argv[])
//{
// char str1[100] = "HelloWorld";
// char str2[] = "Peng";
// //printf("str = %s\n",my_strcat(str1, str2));
// //printf("str = %s\n",str1);
// printf("str = %s\n",strncat(str1, str2,10));
//
//
// return 0;
//}
//字符串分割函数
//char*strtok(char *src, const char *delim);
//src:被分割的字符串
//delim:分隔符字符串.一定要用双引号包含
//int main(int arg, const char *argv[])
//{
// char str[100] = "Hello world* peng #:Junlong";
//
// char *pstr = strtok(str, " ");
// printf("pstr = %s\n",pstr); // 结果:pstr = Hello
//
// pstr = strtok(NULL, "* ");
// printf("pstr = %s\n",pstr);//结果:pstr = world ,底层有一个指针记录了w的位置
// for (int i=0; i<100; i++) {
// printf("%c",str[i]);
// }
// printf("\n");
// pstr = strtok(NULL, " #:");
// printf("pstr = %s\n",pstr);
// pstr = strtok(NULL, " #:");
// printf("pstr = %s\n",pstr);//最后不能分割时返回的时NULL
// pstr = strtok(NULL, " #:");
// printf("pstr = %s\n",pstr);//最后不能分割时返回的时NULL
//
//// char *pstr = str;
////
//// while ((pstr = strtok(pstr, "* #:"))) {
//// printf("%s\n",pstr);
//// pstr = NULL;
//// }
//
// return 0;
//}
//查找子字符串函数
//char*strstr(const char *, const char *);
//int main(int arg, const char *argv[])
//{
// char *src = "Hello WorldPengJunlong";
// printf("str = %s\n",strstr(src, "World"));
// printf("str = %s\n",src);
// return 0;
//}
//输入两个字符串,以第二个字符串整体作为分割条件把第一个字符串进行分割,然后输出分割之后的单词。
//比如:
//输入:
//Hi#@wel@come#@to#@qian#feng
//#@
//输出:
//Hi
//wel@come
//to
//qian#feng
//char *my_strstr(const char *src, const char *sub)
//{
// char *pstr = src;
// int len = (int)strlen(src);
// int sublen = (int)strlen(sub);
// int j=0;
// for (int i=0; i<len; i++) {
// for (int j=0; j<sublen; j++) {
//
// }
// if (src[i] == sub[j]) {
// pstr = src+i;
// }
// }
// while (src[i]) {
// <#statements#>
// }
//}
//int main(int arg, const char *argv[])
//{
// char str[100] = {};//"Hi#@wel@come#@to#@qian#feng";
// char substr[20] = {};
// gets(str);
// gets(substr);
// char *pstr1 = str;
// char *pstr2 = str;
// int len = (int)strlen(substr);
// while ((pstr1 = strstr(pstr1, substr))) {
// *pstr1 = '\0';
// printf("%s\n",pstr2);
// pstr1 += len;
// pstr2 = pstr1;
// }
// if (*pstr2) {
// printf("%s\n",pstr2);
// }
// return 0;
//}
//sscanf sprintf
//int sprintf(char * __restrict, const char * __restrict, ...)
//格式化往字符缓冲区写入字符串
//int sscanf(const char * __restrict, const char * __restrict, ...)
//int main(int arg, const char *argv[])
//{
// char buf[100] = {};
// int a = 100;
// float f = 3.14;
// int ret;
// ret = sprintf(buf, "this int number is %d,and float number is %.2f\n",a,f);
//
// printf("buf = %s\n",buf);
// printf("length = %d\n",ret);
//
//
// char *src = "#234$4.22fs*";
// int b;
// float f1;
// float f2;
// ret = sscanf(src, "#%d$%ffs*",&b,&f1);//按"#%d$%ffs*"格式对src进行解析,成功解析赋值几个就返回几
//
// printf("b = %d,f1 = %f\n",b,f1);
// printf("length = %d\n",ret);
//
// ret = sscanf(src, "#%d$%ffs%f*",&b,&f1,&f2);
// printf("b = %d,f1 = %f,f2 = %f\n",b,f1,f2);
// printf("length = %d\n",ret);
// return 0;
//}
//
// MemoryManage.c
// IOS150605
//
// Created byPeng Junlong on 15/6/5.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
MemoryManage.c文件
//*****************************
//* *
//* 内存管理 *
//* *
//*****************************
#include <stdio.h>
//内存管理 :内存地址从低到高如下:
//.text:存储二进制可执行程序
//.data:初始化的全局变量及初始化的static关键字修饰的变量,分为只读数据段及可读可写数据段,只读数据段存储常量,如:"hello"
//.bss:未初始化的全局变量及未初始化的static修饰的变量
//.heap:堆内存,手动申请,手动释放(使用malloc和free)
//.stack:栈内存,存储局部变量
//static 关键字 ---static关键字和extern关键字不能同时修饰一个变量
//1.修饰局部变量,全局变量的生命周期,局部变量的作用域
//2.修饰全局变量,全局变量只能在当前定义的文件中可以访问
//3.修饰函数,函数只能在定义的文件中使用,其他外部文件不可以调用
void print_num(void)
{
static int num = 100; //只有该函数第一次被调用的时候才会定义num;
for (int i=0; i<5; i++) {
printf("num = %d\n",num++);
}
}
//修饰函数
static void print_Hell0()
{
printf("Hello Peng\n");
}
int main(int argc, const char *argv[])
{
print_num();
print_num();
print_Hell0();
return 0;
}
- 20150605字符串及内存管理
- 20150605字符串及内存管理_练习
- delphi中Dispose内存释放及字符串内存管理
- C语言字符串处理及内存管理函数
- NSString 字符串管理内存
- 内存管理属性字符串
- 内存管理及优化
- 关于字符串String内存管理
- 变长字符串的内存管理
- 内存管理 - 指针数组字符串
- python内存管理2-----字符串
- wince内存分配及管理
- C++内存动态分配及管理
- JAVA 内存管理及GC
- 内存管理及泄露检测
- 内存管理及小技巧
- JVM内存管理及GC
- JVM内存划分及管理
- 数据仓库工具:Hive
- Kafka学习笔记-基本概念与安装部署
- git乱码解决方案汇总
- C++之预定义类型IO格式控制
- js上传图片预览实现
- 20150605字符串及内存管理
- 第十四周项目4 - 处理C++源代码的程序(排查main())
- 好题 HDU 2846 Repository (字典树)
- 有序向量Vector
- LevelDB场景分析2--Open
- BitSet类
- WebBrowser之获取跳转页面的Document接口源码
- 苹果应用商店审核指南
- 哈希表分离链接发解决冲突