随笔分类 -  Java基础学习笔记

摘要:学习HashMap时,需要带着这几个问题去,会有很大的收获: 一、什么是哈希表 二、HashMap实现原理 三、为何HashMap的数组长度一定是2的次幂? 四、重写equals方法需同时重写hashCode方法 一.什么是哈希表 在了解哈希表之前,先了解下其他数据结构的操作执行性能,数据结构的物理 阅读全文
posted @ 2018-09-10 18:45 MichaelKai 阅读(255) 评论(0) 推荐(0) 编辑
摘要:题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 题目代码 /** * 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 * Created by YuKai Fan on 2018/9/8. */ public class PrintTreeFromTopBottom { p 阅读全文
posted @ 2018-09-10 10:15 MichaelKai 阅读(1198) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长 阅读全文
posted @ 2018-09-06 16:51 MichaelKai 阅读(229) 评论(0) 推荐(0) 编辑
摘要:题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 题目代码 /** * Created by YuKai Fan on 2018/9/5. */ public class MinStack{ Stack<Integer> dataSta 阅读全文
posted @ 2018-09-05 19:55 MichaelKai 阅读(1007) 评论(0) 推荐(0) 编辑
摘要:题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 题目代码 /** * @program: JavaCode * @description: 操作给定的二叉树,将其变换为源二叉树的镜像。 * 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / 阅读全文
posted @ 2018-09-04 22:45 MichaelKai 阅读(400) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 题目代码 /** * 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) * Created by YuKai Fan on 2018/9/3. */ pub 阅读全文
posted @ 2018-09-03 15:17 MichaelKai 阅读(203) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 题目代码 /** * 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 * Created by YuKai Fan on 2018/8/28. */ public class countNumberOf1 阅读全文
posted @ 2018-08-28 15:05 MichaelKai 阅读(1903) 评论(0) 推荐(1) 编辑
摘要:第1章 类加载器 1.1 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 (1)加载 就是指将class文件读入内存,并为之创建一个Class对象。 任何类被使用时系统都会建立一个Class对象 (2)连接 验证 是否有正确的 阅读全文
posted @ 2018-08-21 17:34 MichaelKai 阅读(747) 评论(0) 推荐(0) 编辑
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 题目代码 /** * <分析>: * 入队:将元素进栈A * 出队:判断栈B是否为空, * 如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈; * 如果不为空,栈B直接出栈。 * Creat 阅读全文
posted @ 2018-08-20 15:59 MichaelKai 阅读(448) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 题目代码 /** * Created by YuKa 阅读全文
posted @ 2018-08-17 11:06 MichaelKai 阅读(230) 评论(0) 推荐(0) 编辑
摘要:第3章 多线程 3.1 线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 我们通过一个案例,演示线程的安全问题: 电影院要卖票,我们模拟电影院的卖票过程。假设要播放的电影是 “功夫 阅读全文
posted @ 2018-08-16 18:51 MichaelKai 阅读(180) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 题目代码 /** * @program: JavaCode * @description:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 * @author: Yukai Fan * @create: 20 阅读全文
posted @ 2018-08-15 22:24 MichaelKai 阅读(249) 评论(0) 推荐(0) 编辑
摘要:第2章 线程池 2.1 线程池概念 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。 我们详细的解释一下为什么要使用线程池? 在java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,创建和销毁线程花费 阅读全文
posted @ 2018-08-15 16:56 MichaelKai 阅读(148) 评论(0) 推荐(0) 编辑
摘要:第1章 线程 1.1 线程介绍 学习线程之前,我们先要了解几个关多线程有关的概念。 进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程 阅读全文
posted @ 2018-08-14 19:10 MichaelKai 阅读(180) 评论(0) 推荐(0) 编辑
摘要:题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 题目代码 import java.util.Scanner; /** * 题目描述 * 在一个二 阅读全文
posted @ 2018-08-14 10:15 MichaelKai 阅读(1534) 评论(0) 推荐(0) 编辑
摘要:第1章 TCP通信 TCP通信同UDP通信一样,都能实现两台计算机之间的通信,通信的两端都需要创建socket对象。 区别在于,UDP中只有发送端和接收端,不区分客户端与服务器端,计算机之间可以任意地发送数据。 而TCP通信是严格区分客户端与服务器端的,在通信时,必须先由客户端去连接服务器端才能实现 阅读全文
posted @ 2018-08-13 19:35 MichaelKai 阅读(264) 评论(0) 推荐(0) 编辑
摘要:第1章 UDP与TCP协议 在介绍TCP/IP结构时,提到传输层的两个重要的高级协议,分别是UDP和TCP,其中UDP是User Datagram Protocol的简称,称为用户数据报协议,TCP是Transmission Control Protocol的简称,称为传输控制协议。 1.1 UDP 阅读全文
posted @ 2018-08-10 18:39 MichaelKai 阅读(2714) 评论(0) 推荐(0) 编辑
摘要:第1章 网络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时 阅读全文
posted @ 2018-08-10 16:07 MichaelKai 阅读(197) 评论(0) 推荐(0) 编辑
摘要:今天跟朋友讨论java的赋值与自增问题 输出为:a = 6,b = 5 输出为:a = 5 解释:a = a++;首先做a = a的操作,这时,后面的基本类型(整型)a已经丢失了,有新的(前面的)基本类型(整型) new Integer(a),这时候后面的基本类型(整型)a++没用了 ,而 b = 阅读全文
posted @ 2018-08-09 11:27 MichaelKai 阅读(141) 评论(0) 推荐(0) 编辑
摘要:什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型 阅读全文
posted @ 2018-03-09 11:14 MichaelKai 阅读(334) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示