- 博客(16)
- 收藏
- 关注
原创 关于Makefile的 $@, $^, $<
eg:$(TARGET) : file1.o file2.o file3.o$(TARGET),表示 目标文件, 冒号后面 file1.o file2.o file3.o 表示目标的依赖文件$@:表示目标文件, 即 $(TARGET)$^:表示所有的依赖文件, 即 file1.o file2.o file3.o$<:表示第一个依赖文件, 即 file1.o...
2021-10-20 14:05:18 227
原创 时间局部性和空间局部性
在CPU访问寄存器时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理。局部性原理又分为时间局部性(temporal locality) 和空间局部性 (spatial locality) 。1. 时间局部性:如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能再次被访问。产生时间局部性的典型原因,是由于在程序中存在着大量的循环操作。----被引用过一次的存储器位置在未来会被多次引用(通常在循环中)。2. 空间局部性:一旦
2020-08-10 15:03:21 18721 1
原创 物理地址和逻辑地址(虚拟地址)
1. 物理地址物理地址是加载到内存地址寄存器中的地址,是指内存中各物理存储单元的地址从统一的基地址进行的顺序编址。又称绝对地址,它是数据在内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0开始一直到可用物理内存的最高端。这些数字被北桥(Nortbridge chip)映射到实际的内存条上。物理地址是明确的、最终用在总线上的编号,不必转换,不必分页,也没有特权级检查(no translation, no paging, no privilege checks)。2. 逻辑地址逻辑
2020-08-10 14:46:36 3552 1
原创 Java 如何实现int和char类型的比较
首先举个栗子????: char charNum = '1'; int intNum = 1; System.out.println(charNum == intNum); System.out.println((int)charNum == intNum); System.out.println((int)charNum); System.out.println(intNum); System.out.println(charNu
2020-07-25 02:39:54 4029
原创 Java实现字符串Stirng中删除一个字符
java中没有写直接删除字母的方法。如果只想删除字符串中第一个出现的‘a’这一个字符(后面出现的a都不删除),那么代码如下: public String delete(String str, char tar){ StringBuilder res = new StringBuilder(); for (int i = 0; i < str.length(); i++) { if(str.charAt(i) != tar){
2020-07-25 00:59:58 557
原创 Java中String和StringBuilder的区别以及在递归中的使用
1.StringString类是一种传统的修改字符串的方式,在进行运算时(如赋值、拼接等)会产生一个***新的实例***。它确实可以完成把一个字符串添加到另一个字符串上,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。2.StringBuilderSystem.Text命名空间下面的StringBuilder类则非如此,它提供的Append方法,能够在已
2020-07-23 22:24:13 424
原创 求二叉树的层数(计算二叉树的高度)
private int countLevel(TreeNode root){ if(root == null){ return 0; } return Math.max(countLevel(root.left),countLevel(root.right)) + 1;}
2020-07-14 11:21:46 4067
原创 StringBuffer和StringBuilder
java. lang. StringBuffer;java. lang. stringBuilder;StringBuffer和StringBuilder的简单小结:1. StringBuffer和StringBuilder是什么?是一个字符串缓冲区.2.工作原理预先在内存中申请一块空间, 以容纳字符序列,如果预留的空间不够用,则进行自动扩容,以容纳更多字符序列。3. StringBuf fer , stringBuilder和string最大的区别? string是不可变得字符序列,
2020-06-30 16:33:34 69
原创 用两个栈来实现队列
开始复杂的代码:用stack1为主,stack2为辅来实现1.若stack1 不为空,则将stack1里面的值全部pop到stack2里面。这样stack2中的栈头元素就是队列要删除的元素;2.再将stack2中的元素pop回stack1中,若需要删除元素再循环第1、2步缺点:第2步再将stack2里面的元素push回stack1这步非常冗余class CQueue { Stack<Integer> stack1; Stack<Integer> stack2
2020-06-30 10:40:41 218
原创 剑指offer-二维数组中的查找 String和StringBulider
问题:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。这里在for循环里面使用了“+”来拼接字符串(res+=…),这样每次都会new一个新的字符串,非常影响性能。class Solution { public String replaceSpace(String s) { String res = ""; for(int i = 0; i < s.length(); i++){ if(s.charAt(i) == ' '
2020-06-29 21:47:39 226
原创 二分查找java
public int BinaryFind(int tar, int[] arr){ int max = arr.length; int min = 0; int len; while(min <= max){ len = (min + max) /2; if(tar == arr[len]){ return arr[len]; ...
2020-06-16 15:51:15 87
原创 面试题39. 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素.思路一:若数字的出现的次数超过数组长度的一半,那么将该数组从小到大排序,返回数组最中间那个值便是我们所求的数字了。...
2020-06-10 17:16:01 102
原创 Java实现斐波拉契数列
今天剑指offer里面的一道题:输出斐波拉契数列的第n项(n<39)以下有两种思路:1.采用递归方式实现,缺点:时间复杂度高,运行消耗内存,如果这里的n是一个无穷大的数那么运算时间非常长,代码如下: public int Fibonacci(int n) { //用递归方式实现,非常的复杂 if(n < 0 || n >39){ return -1; }else if( n == 0){
2020-05-17 18:36:08 109
原创 String和StringBuilder的那些事--剑指offer第二题
刚刚运行程序报错:Array type expected; found: ‘java.lang.StringBuffer’代码片段如下所示: public class Solution { public String replaceSpace(StringBuffer str) { StringBuilder sb = new StringBuilder(); for(int i =0; i < str.length() *
2020-05-17 01:03:17 1012
原创 剑指offer-第一题
二维数组查找1.在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Solution { public boolean Find(int target, int [][] array) { boolean flag = false; for(int i =0; i < array.length;
2020-05-17 00:20:55 80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人