![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
吴春旭呀
为天地立心,为生民立命,为往圣继绝学,为万世开太平
展开
-
程序员基本功04JAVA的内存回收
读书笔记自己看的(O_O)1、Java引用的功能和意义程序员需要通过关键字new创建Java对象,即可视作为Java对象申请内存空间,JVM会在堆内存中为每个对象分配空间;当一个Java对象失去引用,Java回收机制会自动清除它们。2、Java引用与内存回收之间的关系只要还有引用变量引用该对象,垃圾回收机制就不会回收它。Java对象被创建出来后,垃圾回收机制会实时地监控每一个对象的...原创 2019-02-21 21:04:59 · 286 阅读 · 0 评论 -
剑指offer(21)栈的压入、探出序列
链接:https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106思路:借用一个辅助的栈,遍历压栈顺序,先将第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,很显然1≠4,所以我们继续压栈,直到相等以后开始出栈,出栈一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压...转载 2019-03-01 20:20:58 · 141 阅读 · 0 评论 -
剑指offer(20)包含min函数的栈
import java.util.Stack;public class Solution { //创建俩个辅助栈,stack1用来存放压入的元素,stack2用来保存较小元素 Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new...原创 2019-03-01 20:40:28 · 107 阅读 · 0 评论 -
剑指offer(23)二叉搜索树的后序遍历序列
前提:二叉搜索树的后续遍历由{左子数、右子树、根}组成,根的值小于右子树,大于左子树。思路就是:后续遍历sequence,通过与根节点比较,找到左子树与右子树的分界点(i);如果如果分界点前面的数有大于根节点的,则返回false;否则递归遍历左子树和右子树,若果直到start>end还没返回false,则返回ture。public class Solution { pub...转载 2019-03-02 22:25:46 · 100 阅读 · 0 评论 -
剑指offer(21)从上往下打印二叉树
public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { //创建俩个数列,一个存放数,一个存放节点 ArrayList<Integer> list1 = new ArrayList<Integer>()...转载 2019-03-02 22:31:22 · 88 阅读 · 0 评论 -
剑指offer(12)旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:总的来说左边的数组大于右边的数,用折半查找法,找到俩个字数组的分界点import java.util.Ar...转载 2019-03-02 23:09:48 · 96 阅读 · 0 评论 -
程序员基本功09 线性表
I(Information)信息、T(Technology)技术,编程的本质是对数据的处理。数据结构就是研究数据之间的逻辑关系、存储方式及其操作的学问。从数据的逻辑结构来分,数据元素之间存在的关系被称为数据的逻辑结构。大致分为四种:集合:数据元素之间只有“同属于一个集合”关系。 线性结构:数据元素之间存在一个对一个的关系 树形结构:数据元素之间存在一个对多个的关系 图形结构或网状结...原创 2019-03-03 15:39:39 · 161 阅读 · 0 评论 -
剑指offer(12)数值的整数次方
快速幂的算法太美了对于if((b&1)==1)这是判断b是否为奇数:例如:如果b=8(1000),即指数为8,进入循环时,b不是奇数,那么基数翻倍,现在base值为,然后b右移,此时b为4.进入下一个循环;此时b还不是奇数,base再翻倍,此时base的值为,b为2;然后base再翻倍,,然后现在b为1,进入if中,result=;当b=7(111)时,b为奇数,result...转载 2019-02-28 18:27:41 · 155 阅读 · 0 评论 -
程序员基本功08异常捕捉的陷阱
1、使用finally正确地关闭资源在实际开发中,经常需要 在程序中打开一些物理资源,如数据库连接、网络连接、磁盘文件等,打开这些物理资源后必须显示关闭,否则将引起资源泄露。JVM的垃圾回收机制属于Java内存管理的一部分,它只负责回收堆内存中分配出来的内存,至于程序中打开的物理资源,垃圾回收机制无能为力。finally{ if(oos!=null){ try{ ...原创 2019-03-03 22:43:31 · 152 阅读 · 0 评论 -
程序员基本功 06 流程控制的陷阱
1、switch语句中的default语句switch语句用于判断某个表达式的值,根据不同的值执行不同的分支语句。default分支潜在的条件是:表达式的值与前面分支的值都不相等,也就是说,正常情况下,只有switch语句前面分支没有获得执行时,default分支才会获得执行机会。2、switch语句中break语句的作用break用来终止当前分支的循环体,否则一直执行,除非遇到bre...原创 2019-03-05 11:33:23 · 167 阅读 · 0 评论 -
程序员基本功10栈和队列
1、栈的基本概念栈是一种数据结构,它代表只能在某一段进行插入、删除操作的特殊线性表,通常就是在线性表的末端进行插入、删除操作。归纳起来就是:栈就是一种后进先出的线性表2、栈提供的基本方法栈不允许提供从中间任意位置访问元素的方法,栈只允许在栈顶插入、删除元素初始化:通常是一个构造器,用于创建一个空栈返回栈的长度、入栈、出栈、访问栈顶元素、判断栈是否为空、清空栈3、顺序栈的...原创 2019-03-03 15:40:41 · 370 阅读 · 0 评论 -
程序员基本功05表达式中的陷阱
你尽管去做,其他的交给天意:读书笔记读书笔记1、Java字符串的特点当程序使用字符串、基本类型包装类实例是,尽量使用字符串直接量、基本类型值的直接量,避免通过new String()、new Integer()形式来创建字符串、基本类型包装类实例。对于Java程序中的字符串直接量,JVM会使用一个字符串池来保护它们,当程序再次使用该字符串时,无需创建一个新的字符串。JVM在编译时就可以确定...原创 2019-02-22 23:28:41 · 352 阅读 · 0 评论 -
程序员基本功01数组与内存控制
以下的答案为我自己的读书心得(捏造的答案),如有童鞋不忍直视,还请不吝赐教1、JAVA数组基本语法 int[] a 2、JAVA数组的静态特性当数组被初始化后,数组的长度是不可改变的 3、JAVA数组的内存分配机制 栈区保存局部变量,堆内存保存对象。JAVA数组是静态的,一旦初始化完成,数组内存空间分配即结束,程序只能改变数组元素的值,无法改变数组的长度。4、初始化J...原创 2019-02-17 13:36:37 · 183 阅读 · 0 评论 -
程序员基本功02对象与内存控制
以下的答案为我自己的读书心得(捏造的答案),如有童鞋不忍直视,还请不吝赐教1、实例变量属于JAVA对象2、类变量属于类本身类体内定义的变量称为成员变量,没有static修饰的为非静态变量或实例变量,有static修饰的为静态变量或类变量。static只能修饰类里的成员,不能修饰外部类、局部变量、局部内部类。3、实例变量的初始化细节实例变量属于JAVA对象本身,每次程序创建对象时...原创 2019-02-18 14:11:15 · 161 阅读 · 0 评论 -
剑指offer(15)反转链表
反转链表就是先把当前节点所指向的原节点存起来,这里用tmp表示,此时tmp的值为2;然后使当前节点指向前一个节点(cur.next=pre),然后将当前节点的值赋给pre(pre=cur);再然后就是使tmp为当前节点(cur=tmp)。就是改变节点所指方向后,整体后移。public class Solution { public ListNode ReverseL...转载 2019-02-28 18:27:10 · 110 阅读 · 0 评论 -
程序员基本功11树和二叉树
1、树的概念和基本术语2、树的基本操作3、树的父节点存储实现4、树的子节点链表示法5、二叉树的定义和基本概念6、二叉树的基本操作7、二叉树的顺序存储的实现8、二叉树和二叉链表存储的实现9、先序遍历二叉树10、中序遍历二叉树11、后续遍历二叉树1、树的概念和基本术语树是一种非线性的数据结构,如果一组数组节点之间存在复杂的一对多关联时,程序可...原创 2019-02-23 23:11:47 · 420 阅读 · 0 评论 -
程序员基本功03常见JAVA集合的实现细节
笔记笔记自己看的1、Set和Map的关联之处Set代表一种集合元素无序、不可重复的集合,Map代表一种由多个键值对组成的集合。Map集合的Key之间不能重复且无序,也就是说,把map里的key单列出来是set集合。2、Hash存储机制的快速存取原理系统采用Hash算法决定集合元素的存储位置,保证快速存取集合元素3、红黑树的快速访问机制 红黑树是一种自平衡二叉查找树,树中每个...原创 2019-02-20 20:20:06 · 163 阅读 · 0 评论 -
剑指offer(17)树的子结构
1. 从根节点开始判断,判断树root2是不是root1的子树。2. 如果不是,再递归判断root2是不是root1.left的子树。3. 如果第二步没成立,则再判断root2是不是root1.right的子树。4. 直到返回true,或者递归结束下面程序是综合吸收多位道友的心得后,自己手撕的。public class Solution { public boolea...转载 2019-02-28 18:20:17 · 113 阅读 · 0 评论 -
剑指offer(04)重建二叉树
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。这道题困了我快俩天了,不得不记录以下,转载 2019-02-24 22:26:16 · 128 阅读 · 0 评论 -
剑指offer(05)用两个栈实现队列
参考:https://www.cnblogs.com/wanghui9072229/archive/2011/11/22/2259391.html思路1:始终维护s1作为存储空间,以s2作为临时缓冲区。入队时,将元素压入s1。出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。思路2如:入队时,先判断s1是...原创 2019-02-25 09:38:02 · 122 阅读 · 0 评论 -
程序员基本功 07 面向对象的陷阱
1、instaceof运算符的陷阱instanceof运算符的前一个操作数通常是一个引用类型的变量,后一个操作数通常是一个类,它用于判断前面的对象是否是后面的类或其子类、实现类的实例。instanceof运算符有一个限制:要么与后面的类相同,要么是后面类的父类、要么是后面类型的子类。使用null调用instanceof运算符时返回false时非常有用的行为,因为这可以保证第一个操作数所...原创 2019-03-04 14:44:55 · 238 阅读 · 0 评论