自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FIRE_TRAY的Android之路

I love Android

  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 C 函数值传递和指针传递的效率问题

C 函数值传递和指针传递的效率问题C中有两种传递,值传递和指针(地址)传递。值传递需要把数据的一份拷贝传递入函数形参表,并存储在栈中,函数返回后弹出栈,拷贝被删除。而指针传递则不然。如果形参表是指针,那么函数在执行时会直接去指针指向的地址中获取此数据并操作,而不用直接拷贝。看下这个例子:const int ARRAY_SIZE = 20;typedef struct{ long long

2016-05-14 17:02:21 2031

原创 Java GC 日志格式理解小结

Java GC 日志理解小结下面以一个典型的GC日志做分析:33.125: [GC[DefNew:3324K->152K(3712K), 0.0025925 secs]3324K->152K( 11904K), 0.0031680 secs]100.667: [FullGC[Tenured: 0 K->210K(10240K) , 0.0149142secs]4603K->210K( 19456K

2016-05-13 19:40:05 1713

原创 JVM的几种垃圾收集器

JVM的几种垃圾收集器Serial收集器基本原理:新生代收集器,采用标记复制算法它是一个单线程收集器,只会使用一个CPU和一条收集线程完成GC。缺陷:在于它“Stop-The-World”的收集方式。进行垃圾收集时必须暂停其他线程的所有工作优点:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做GC反而效率更高。适用场景

2016-05-13 17:20:02 822

原创 C strpbrk 查找任意几个字符

C strpbrk 查找任意几个字符头文件string.h函数原型char *strpbrk(char const *str, char const *group);返回的是字符集合group中任意字符在str中第一次出现的位置(最左面的)。同样,函数返回的是指向此位置字符的指针。注意事项注意匹配的是group中任意一个字符,而且区分大小写。看下代码就明了了:int main(){ cha

2016-05-13 11:15:46 721

原创 C strchr strrchr查找一个字符

C strchr strrchr查找一个字符头文件string.h函数原型char *strchr(char const *str, int ch);char *strrchr(char const *str, int ch);注意事项返回值的类型注意返回的不是一个整数index,而是一个指向字符的指针。看代码:int main(){ char *string = "abcde";

2016-05-13 11:04:43 1152

原创 C 可指定长度的字符串函数

C 可指定长度的字符串函数头文件string.h函数原型char *strncpy(char *dst, char const *src, size_t len);char *strncat(char *dst, char const *src, size_t len);int strcmp(const char *s1, const char *s2, size_t len);后面len可指

2016-05-13 10:46:55 1099

原创 C strcmp 字符串比较

C strcmp 字符串比较头文件string.h函数原型int strcmp(const char *s1, const char *s2);返回的是一个int。注意事项注意比较的结果是依照字典序确定的:如果 s1 < s2 ,也就是s1的字典序排在s2的前面,返回 -1如果 s1 = s2,也就是两者字典序相同,也就是为同字符串, 返回 0 如果 s1 > s2,也就是s1的字典序排在s

2016-05-13 09:38:58 1375

原创 C strcat

C strcat头文件string.h函数原型char *strcat(char *dst, const char *src);返回的是第一个参数dst的拷贝。用于拼接字符串。注意事项dst的空间约束dst必须有足够的空间保留之前已经有和要拷贝进来的字符串。正确的使用案例:#include<stdlib.h>#include<string.h>#include<stdio.h>char s

2016-05-13 09:17:33 825

原创 C strcpy

C strcpy头文件string.h函数原型char *strcpy(char *dst, const char *src);返回的是第一个参数dst的拷贝。注意事项dst的约束由于 dst 参数将进行修改,所以它必须是一个字符串数组或者一个指向动态分配内存的数组指针,不能是字符串常量,而且必须保证有足够的空间。代码举例:这样是可以的char *src = "***";char strin

2016-05-12 16:59:55 538

原创 C strlen

C strlen 返回值注意事项基础知识头文件string.h函数原型size_t strlen(char const *string);这个size_t是在头文件stddef.h中定义的,是一个unsigned long类型。注意事项注意它的返回值,是一个无符号整数类型(可能为unsigned int 或者 unsigned long)。下面的代码就会因此产生问题:/** * 两个无符号整型相减

2016-05-12 16:01:20 713

原创 C 数组基础知识分析

C 数组基础知识分析数组名含义一言以蔽之,数组名就是一个指向比其所在维度低一维的东西的指针。让我们再深入的分析一下一维数组比一维再低一维的就是元素。因此,一维数组名就是一个指向所存元素类型的指针。且其值为首元素地址。如果有 int a[10],那么这个a就是一个指向整型的指针,且指向首元素a[0],且其值等于&a[0]。多维数组比多维再低一维的还是数组。因此,多维数组就是一个指向低一维度的数组的指针

2016-05-12 11:22:21 592

原创 HotSpot GC 具体实现关键点概要

HotSpot GC 具体实现关键点概要GC roots 枚举过程枚举过程的困难点:范围大: GC roots主要在全局性的引用(常量与静态变量)和执行上下文(如栈帧中的本地变量表)。现在程序仅仅就方法区而言就很大,程序整体体积更是不用说。如果要注意检查这些引用,如查看所有栈帧中的本地变量表,那么时间上肯定是无法接受的。必须在快照中进行:在枚举过程中,不能出现程序运行。因为这会导致GC root

2016-05-05 10:12:24 1670

原创 Java 垃圾清理基础理论

Java 垃圾清理基础理论标记-清除算法基本原理先标记需要回收的对象,然后回收被标记的对象。标记过程标记过程(对象的死亡至少要经历两次标记):首先,如果发现对象从GC root出发不可达,那么就会被第一次标记并进行筛选。筛选条件是此对象是否有必要执行finalize()方法。当对象没有覆盖finalize()方法,或者finalize()方法已经被执行过了,则会被判定为“没有必要执行”。在确定对

2016-05-05 09:56:11 622

原创 C 可变参数的使用

C 可变参数的使用C中的可变参数需要使用 stdarg.h 头文件。此头文件中声明了一个类型va_list和三个函数——va_start、va_arg 和 va_end。让我们先看一个求均值函数的实现,看看C中可变参数是如何使用的。样例代码#include <stdio.h>#include <stdlib.h>#include <stdarg.h>float average(int count

2016-05-04 17:52:07 658

原创 C ADT 的实现

C ADT 的实现C也可实现ADT。主要是利用static关键字。static可将被修饰者的作用域限定到文件中,此文件以外则不可对它进行访问。笔者这里实现了一个简单的链表,可以参考下:NameList.c#include<stdlib.h>#include<stdio.h>static const int MAX_PEOPLE_NUM = 100;static char* data[MAX_PE

2016-05-04 16:39:08 923

原创 JVM 方法区回收小结

JVM 方法区回收小结方法区也会发生垃圾回收,只是效率和性价比较低。回收主要分为两部分内容:废弃常量和无用的类。废弃常量的回收这与堆中对象的回收类似。以常量池的字符串为例,如果没有任何对象引用了此字符串,那么它就有可能被系统清理出常量池。废弃类的回收此类回收条件较为苛刻,需要满足如下的3点:该类所有实例已被回收,即Java堆中不存在该类的任何实例加载该类的ClassLoader已经被回收该类对

2016-05-02 20:23:48 1109

原创 关于指针的小杂碎

关于指针的小杂碎关于指针的一些小点,这里简单整理下间接取值(指针解引用)的含义根据指针找内容的过程被称为:间接取值 或 指针的解引用NULL与0的关系NULL在外部表现为0。为指针赋值NULL,等价于为指针赋予0。用代码验证下:int *p = NULL; printf("%d",p); // 0printf("%d", NULL == 0) // 1但是,就内部实现而言,NULL值可能并非0

2016-05-02 16:15:08 495

原创 C 运算符优先级与记忆口诀

运算符详情表优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员

2016-05-01 20:16:21 664

原创 C 的布尔值

C 的布尔值基本原理C中并没有像Java中true 和 false 中那种显式的布尔类型,整型担任了此重任。原则就是:0为假,任何非0值为真代码验证#include <stdio.h>#include <stdlib.h>void printLine(char *s){ printf("%s\n",s);}int main(){ if(-1){ printLin

2016-05-01 15:37:11 829

原创 C 逗号运算符

C 逗号运算符语法格式exp1, exp2, exp3, ..., expN;执行效果运算符中每个表达式exp(i)都会被计算,且整个逗号表达式的最终结果为最后一个表达式expN的值。代码举例#include <stdio.h>#include <stdlib.h>int main(){ int a = -1; while(a *= -1,a){ printf("

2016-05-01 10:14:04 942

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除