自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 BST

Node.javapublic class Node { int data; Node left; Node right; public Node(int data){ this.data = data; }}Tree.javapublic class Tree { public Node root; public Tree(){ this.root =...

2019-01-10 21:18:09 187

原创 java IO缓冲流高效原理及使用

带缓冲的字节输入流:我们知道文件字节输入流读取时,是直接从字节流中读取的。由于字节流是与硬件(存储介质)进行的读取,所以速度较慢。而CPU需要使用数据时通过read()、read(byte[])读取数据时就要受到硬件IO的慢速度限制。我们又知道,CPU与内存发生的读写速度比硬件IO快10倍不止,所以优化读写的思路就有了:在内存中建立缓存区,先把存储介质中的字节读取到缓存区中。CPU需要数据时直接从...

2018-12-26 15:12:40 2482

原创 java IO流

说到java IO流,我们用的最多的就是文件的输入流和输出流。那么,FileInputStream就是从文件中读取数据的流,FileOutputStream就是往文件中写数据的流。判断文件是否读到结尾用read()==-1来判断。当然,也分为字节输入输出流和字符输入输出流。字符输入输出流与字节输入输出流有相同的功能,但传送数据的方式不一样,字节流以字节为单位传送数据,可以使任何类型的数据,例如...

2018-12-26 12:14:11 204

原创 Socket编程---read方法阻塞问题

java通信项目简单写了个聊天室,实现群聊私聊了,就大言不惭地往简历上写了对java网络编程和多线程有了一定的了解。给客户端各自开了线程,写了句server.accept()、Socket client=new Socket("127.0.0.1",9999),就叫了解了? Too young too simple.然而一问,BIO和NIO有什么区别?--- 纳尼?什么玩意儿?      ...

2018-12-25 21:32:23 11685 3

原创 java接口与抽象类

在讲接口与抽象类之前,我先更正一下https://blog.csdn.net/weixin_40321672/article/details/79904135这篇博客的错误,    自动转型和强制转型:    假如有Student父类,UNStudent子类。则:    //自动转型    Student un = new UNStudent();    un.setName("Fir...

2018-12-11 16:39:48 171

原创 String str = new String("abc"); 创建了几个对象

1.如果常量池有“abc”,则直接copy到堆内存,str指向的是在堆内存创建的对象。这个时候只创建一个对象2.如果常量池没有“abc”,则先创建新的String对象“abc”放入到常量池中,然后new String("abc")的时候,将常量池中的对象copy到堆内存,str指向的是在堆内存创建的对象。这个时候创建的是两个对象,一个是常量池里面的,一个是new String的。 参考...

2018-12-09 13:51:41 209

原创 关于‘==’的种种比较你知道吗

上篇文章谈了equals与==的区别,其实对于引用类型,如果equals没有重写,二者比较的都是内存地址,重写了就变成比较内容的了,也没什么好说的。那其实‘==’在包装类和String里那真是变化莫测啊,必须得详细谈一下的。1.Integer与int直接上代码分析最清楚了。参考此文:https://www.cnblogs.com/liuling/archive/2013/05/05/int...

2018-12-09 13:37:34 131

原创 java中==与equals区别

我们经常会去判断两个东东相等,却也没怎么关注==和equals区别,就知道基本数据类型用==,比较两个字符串内容相等就用equals,当时老师就这么跟我说的,理由也没说,反正==就是不行。为防止混淆,还是简单总结一下吧。1.比较基本数据类型只能用‘==’,不能用‘equals’,‘==’比较的就是两个基本数据类型的值2.比较包装类public class TestEquals{...

2018-12-09 11:33:57 274

原创 每行输入一个数,怎么结束这个循环呢

这回我不按空格隔开输入了,我要每行输入一个,怎么结束循环呢?哎,只能每行当做字符串输入,最后一行碰到输入的那一行为空,结束循环。这样造成的结果就是最后会留出一个空行然后结束。尴尬也没办法。 // 每行输入一个字符串,输入多个字符串 public static void inputStr() { Scanner scanner = new Scanner(Sy...

2018-12-04 16:21:38 940

原创 连续输入几个空格隔开的整数,怎么回车结束输入

首先来讲一个非常丢人的事。以前刷ccf的时候,遇见的都是先输入n大小,然后建立一个n大小的数组,然后依次往数组里输入填充。可是在帮实验室师姐助攻一道深信服的校招笔试题,我遇到了一种情况,就是我事先并不知道我要输入几个整数,就是一直输,最后回车结束输入。事先不知道输入几个数,那我建立一个ArrayList数组啊,然后声明一个变量接收从键盘输入的数啊,然后往数组里add。如果这个变量接收到的是回车...

2018-12-04 16:02:42 4874

原创 jvm内存模型和java内存模型

初识java虚拟机,就碰到一系列不懂的问题。我们以前常说java把局部变量放在栈里,new出来的变量放在堆里,然后堆里的数据不定时就给回收了。然后,如果是多线程的话,每个线程自己都有会一个私有的虚拟机栈,运行每个方法时都会创建一个栈帧,栈帧里存储着局部变量啦等信息,方法结束栈帧就出栈。这好像就是我们对java内存模型的第一次理解吧。直至今天,我看了java线程通讯之java内存模型,出现了主内存、...

2018-12-03 21:46:29 9229 2

原创 二叉树之建立和遍历

今天总结一下以前学过的树,直接讲二叉树吧,就是说节点最多会有两个孩子。以前一直没有去实现过,只是泛泛而谈,导致其实我自己对建树这一块很模糊。今天总结了三种建树的方法:1.就直接new很多个TreeNode节点,然后自己手动去指哪一个左孩子和右孩子2.采用递归的方式去建树,就是定好根节点后,再建左子树(这儿递归,从左子树的根节点递归下去),再建右子树。递归终止条件我想就是遇到null了吧...

2018-12-02 22:07:13 116

原创 单链表之判断链表中是否有环

想想这个问题是来湖大复试的时候老师问的,到现在已经有一年多了,今天才来整理,想想挺惭愧的。首先链表节点声明如下:class Node{ int val; Node next; public Node(int val){ this.val = val; }}然后我们再来利用尾插法造一个链表: public void addNodeFail(int val){ N...

2018-12-01 19:44:01 180

原创 单链表之链表反转

介于链表反转是面试高频问题,且必须会手撕代码的那种,特地拿出来单独做一个总结。这里总结两种方式的反转:迭代和递归。(本来想搞三种的,因为一开始对这个问题的第一思路就是用头插法实现,那思路总归是思路了,代码一实现,那迭代里面的核心思想不就用到了头插嘛,后面着重标记一下。这里大佬请绕开,别笑话我,只是我自己一时想记录下来的)1.迭代法实现链表反转个人觉得迭代法的实现特别清晰,无非就是申明一...

2018-12-01 16:26:06 434

原创 单链表的基本操作

想想单链表都是大二那会学的了,以前觉得没什么,最近频繁的面试季节,仿佛不会这玩意儿感觉面试是寸步难行。从今天开始,还是从基础开始总结一下。今天先总结了单链表的基本操作,总觉得纸上谈兵永远得不到进步,就都用java实现了一下,方便自己理解。后续还会总结常用相关单链表的面试题。import java.util.Scanner;public class BasicOp { private ...

2018-12-01 00:34:16 129

原创 数组越界引起的死循环

闲话不多说,先上一段代码:int main(){ int i = 0; int arr[3] = {0}; for(;i<=3;i++){ arr[i] = 0; printf("hello world\n"); } return 0;}看到没,数组大小为3,arr[0],arr[1],arr[2],而我们的for循环结束条件错写为i<=3,出现了arr[...

2018-10-25 22:42:12 1785

原创 完全分布式hadoop集群搭建

考虑到以后还会去配置,总结记录一下这几天迈过的坑。准备工作:两台笔记本,其中一台主机,一台节点。(条件限制,我只有两台)需要提前下载好的文件:VMware-workstation-full-14.1.2-8497320.exeubuntu-18.04.1-desktop-amd64.isojdk-10.0.2_linux-x64_bin.tar.gzhadoop-2.7.7.ta...

2018-08-13 00:08:45 1691

原创 浅谈java基础之反射

都说反射是框架设计的灵魂,特地学习一下。一、反射是什么?说这个问题之前,先明确两个概念:静态编译和动态编译。静态编译:在编译时确定类型,绑定对象,即通过。 动态编译:运行时确定类型,绑定对象。而反射可以帮助java实现动态编译。通俗的说就是反射可以在运行时根据指定的类名获得类的信息。二、反射的基本使用1.获取Class对象的三种方式:obj.getClass()类...

2018-08-04 21:31:05 189

原创 HashSet添加元素时判断是否重复用到的hashCode()方法和equals()方法

今天在梳理java集合类的基本用法过程中,中间出了一点点小岔子。什么呢?HashSet集合不能包含存储重复元素---》那么元素之间是否重复,HashSet怎么去判断的呢?HashSet使用HASH算法来存储集合中的元素,具有良好的存取和查找性能。大概过程是这样:HashSet在添加一个元素时,会调用该对象的hashCode()方法来得到该对象的hashCode值,与遍历到的每个元素的hashCod...

2018-06-10 18:59:21 2161

转载 TCP为何采用三次握手来建立连接,若采用二次握手可以吗(部分原创+转载)

1.TCP连接建立在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收...

2018-06-08 23:57:56 2913

原创 java五子棋实现---权值、博弈树

花了很多天学习的一个关于五子棋的博弈树,记录一下。先讲一下五子棋的基本实现过程:一、界面实现Gobang.javashow(){}main(){}paint(){}窗口使用Border布局,写俩JPanel,一个画棋盘,一个做动作按钮。这里要注意的有两点:一是重绘机制,直接把棋盘画在paint方法里;二是我们先不对棋盘做鼠标监听,等到我们点击了动作按钮后再去监听获取画笔。二、界面实现了,要考虑在监...

2018-04-26 17:56:48 3277 2

原创 关于java继承的几点总结

关于java继承的几点总结:    java继承的作用,实现代码复用。    首先java继承是单继承,也就是说每个子类只能有一个父类,而一个父类可以被多个子类继承。父类(基类,超类)和子类(派生类)是包含关系。子类又可以被其他类继承。    子类会继承父类的所有属性和方法,但私有变量和方法不能被直接访问。私有变量必须通过相应的set(),get()方法进行访问。java声明变量和方法有四种范围:...

2018-04-11 22:18:35 289

空空如也

空空如也

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

TA关注的人

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