
Java基础知识
文章平均质量分 88
We_chuan
或重于泰山,或轻于鸿毛
展开
-
java中的“=”与“equals”的区别
生命之灯因热情而点燃,生命之舟因拼搏而前行。java中的数据类型两大数据类型首先要对java的数据类型有了解。基本数据类型整型 int |short | long | byte浮点型 |float |double字符型|char布尔型|boolean引用类型数组类接口“=”与equals的区别平时我们在学习java语言时,经常遇到“=”与equals ,今天就把这个...原创 2018-10-23 20:26:45 · 220 阅读 · 0 评论 -
java 设计模式(迭代,原型,建造器,装饰)
尺有所短,寸有所长,物有所不足,智有所不明。迭代器模式定义:以一种一致的对集合内的元素进行遍历,而不用在乎集合内的数据结构ArrayList 数组LinkedList 链表HashSet 数组+链表TreeSet 二叉搜索树-》红黑树public class Test { public static void main(String[] ar...原创 2018-11-29 09:04:37 · 265 阅读 · 0 评论 -
Java之反射机制
Java反射我理解的反射机制Java的反射机制,就是Java在运行的时,对任意的类,都可以获取它的全部信息,包括属性,方法等等。这种动态获取的方法就是反射,比如说现在有一个学生类,还有学生类的.class文件,那么只要知道它的类名,就可以获取它的所有属性,方法。再举个简单的例子,现在我们有Student.java类,我只有它的 .calss 文件而且我还知道它的类名是Student,那么...原创 2018-12-03 19:45:34 · 206 阅读 · 1 评论 -
Java面试之Hasmap 底层实现原理
Evernote Export 第三章 5.集合-HashMap原理解析1.问题引入我们都接触过这道题,有如下字符串aabcccdd由任意英文字母组成,试统计每个字母的出现次数?一种笨办法是:public static void main(String[] args) { String str = "aabcccdd"; for(...原创 2019-03-19 19:48:19 · 821 阅读 · 0 评论 -
Java面试之Jvm内存结构和工作原理
1.内存结构jvm 的内存栈 - 线程私有的(每个线程有自己的栈内存)程序计数器 (记录当前线程中代码执行的位置)本地方法栈 (native ) 非java语言编写的方法栈帧多个 每个栈帧对应一次方法调用, 方法内局部变量、方法参数,方法调用时分配栈帧内存,方法调用结束,栈帧内存被回收堆 - 线程共享的当新建一个对象时,对象使用的就是堆内存, 当多个线程访问堆中的对象时,...原创 2019-03-19 19:56:13 · 314 阅读 · 0 评论 -
Java面试之手写栈,数组实现
关于栈的性质就不多说了,直接上代码package com.wechuan;public class ArrayStack { private long[]a ; private int size; //长度 private int top;//栈顶 public ArrayStack(int maxSize){ this.size=max...原创 2019-04-17 15:19:27 · 631 阅读 · 0 评论 -
Java面试之手写队列
用数组写一个队列。上代码主要的功能巧在了循环数组的使用public class RoundQueue { private long[] a; private int size; private int nItems; //实际存储数量 private int front; //头 private int rear; //尾...原创 2019-04-18 18:03:37 · 688 阅读 · 1 评论 -
Java面试之排序算法(冒泡、选择、插入)
排序-古往今来,多少算法叱咤在编程界。终究是,英雄尽是浪淘沙。但是在中滚滚的历史长河里,排序算法经典至极。- 冒泡排序比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 ...原创 2019-05-22 21:16:45 · 336 阅读 · 0 评论 -
Java面试之快速排序
快速排序算法步骤从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;代码示例public ...原创 2019-05-29 11:53:18 · 421 阅读 · 0 评论 -
剑指offer之平衡二叉树
· 如何判断平衡二叉树?答:左右子树高度相差不超过一。题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树思路后续遍历二叉树,遍历过程中求出二叉树的高度,判断是否平衡。public class Main{ private boolean isBalance = true; public boolean isBalanceTree(TreeNode root){ if(roo...原创 2019-06-17 20:11:27 · 191 阅读 · 0 评论 -
滑动窗口(双指针的应用)
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!解题思路双指针技术,就是相当于有一个窗口,...原创 2019-07-15 11:01:22 · 696 阅读 · 0 评论 -
帮你搞懂Java中重写equals方法为什么要重写hashcode方法?
话不多说,直接上例子,包你懂首先我们只重新equals()方法public class Student { private String name; private int age; private String QQ; @Override public boolean equals(Object o) { if (this ==...原创 2019-07-18 11:04:24 · 6860 阅读 · 16 评论 -
线程池的参数及配置
线程池的参数:corepoolsize : 线程池的基本线程数,表示想达到的线程数量,线程池会尽量把线程池的数量维持在这个值的上下保持稳定。maximumpoolsize: 最大的线程数 容许数keepAliveTime: 最大线程数到达这个时间就失效销毁unit : keepAliveTime的单位workQueue: 阻塞队列ThreadFactory:线程工厂,主要用来统一创建线...原创 2019-10-08 09:37:49 · 1111 阅读 · 0 评论 -
java 设计模式(单例,享元,策略)
读书不觉已春深,一寸光阴一寸金。java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问...原创 2018-11-29 09:04:20 · 436 阅读 · 0 评论 -
Java网络爬虫Spider
三更灯火五更鸡,正是男儿读书时。 本次爬取百度贴吧的图片。本次爬虫网址为 https://tieba.baidu.com/f?ie=utf-8&kw=%E9%A3%8E%E6%99%AF%E5%9B%BE&fr=search 本次爬虫用到的工具: IJ URL类,IO流,UUID(随机命名),正则表达式。 首先得到 https://tieba.baidu....原创 2018-11-29 09:02:51 · 1508 阅读 · 0 评论 -
Map集合(HashMap,TreeMap)
Map首先对Map进行一个整体的理解。查看API可以知道,Map 其实就是将键映射到值的对象,每个键最多映射到一个值。Map 与Collection接口的不同: Map Collection 双列的 单列的 数据结构针对键有效,对值无效 数据结构针对元素有效 Map的功能1.添加功能:V put (key,value)...原创 2018-11-09 12:12:55 · 196 阅读 · 0 评论 -
IO流
不必每分钟都学习,但求学习中每分钟都有收获。IO流概念IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的类都在IO包中。流按流向分为两种:输入流,输出流。流按操作类型分为两种:字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的字符流 : 字符流只能操作纯字符数据,比较方便。IO流常用父类 字节...原创 2018-11-13 20:41:49 · 147 阅读 · 0 评论 -
Set集合(TreeSet,HashSet,LinkedHashSet)j
积一时之跬步,臻千里之遥程。TreeSet特点保证元素唯一,并且可以对元素进行排序(自然排序和比较器排序)。注意:使用TreeSet集合进行元素的排序,对元素有要求,要求这个元素必须实现Compareable接口,否则无法进行自然排序。保证元素的唯一是靠compareTo方法的返回值来确定的,如果返回0,表示两个元素相等。则不重复存储。TreeSet的底层数据结构是...原创 2018-11-09 11:24:11 · 269 阅读 · 0 评论 -
Java内存分配之堆栈和常量池
如果敌人让你生气,那说明你还没有胜他的把握,如果朋友让你生气,那说明你仍然在意他的友情java内存的基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个或者多个线程,每一个Java进程对应唯一一个JVM实例,每一个JVM实例唯一对应一个堆,每一个线程有一个自己私有的栈。进程所创建的所有类的实例(也就是对象)或数组(指的是数组的本身,不是引用)...原创 2018-11-19 12:42:08 · 351 阅读 · 0 评论 -
进程和线程以及线程池(一)
千山鸟飞绝,万径人踪灭 是一种境界进程与线程线程:要说线程,我们得先知道另一个该类,进程 线程要依赖于进程进程:正在执行的程序,我们现在的电脑支持多进程单核CPU 在某个时间点上,能执行几个进程,只能执行一个,我们的CPU会在多个进程间进行告诉的切换执行,你是感觉不出来的多进程的意义:提高CPU的使用率当你的进程开启之后,要执行很多任务,每一个任务,每一个要执行的任务, ...原创 2018-11-22 15:32:32 · 287 阅读 · 0 评论 -
Java中的一些例子(常用类的应用)
不要自卑,你不比别人笨。不要自满,别人不比你笨。本篇博客我将对自己学过的一些东西通过直接敲代码,写例子的方式来巩固。1.制作扑克实例主要应用集合类,来实现。public class demo { public static void main(String[] args) { ArrayList<String> pokeList = new...原创 2018-11-19 18:22:47 · 1787 阅读 · 0 评论 -
java多线程复制文件
人生能有几次搏?莫到白发还未博。多线程复制文件 在日常生活中,我们要复制很多文件,这些文件特别大,于是呢,现有的复制速度满足不了我们人类的需求,我们的需求是什么?一个字——快。 所以呢,就想办法。看有没有一种速度能够让我们快速的复制文件来提高我们的效率,而恰巧,刚学完Java的IO流,就想着能不能用,于是我们用IO流通过高效率的一次读取一个数组[1024*8]的大小来读...原创 2018-11-23 14:19:16 · 1643 阅读 · 1 评论 -
java面向编程思想之继承
放下紧箍, 我就无法救你, 带上紧箍, 我就无法爱你Java 继承(inheritance)是 Java 面向对象的三大重要特性之一(封装-encapsulation, 继承-inheritance, 多态-polymorphsim) Java 继承很好的管理了具有相似特征的类之间的关系(主要集中在成员变量、方法), 使程序可扩展、易修改,并且成为java多态的基础Java中继...原创 2018-11-19 13:14:34 · 317 阅读 · 0 评论 -
进程和线程以及线程池(二)
山不过来,我就过去生产者-消费者模型 在前面我们讲了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会...原创 2018-11-22 20:39:45 · 178 阅读 · 0 评论 -
线程的生命周期
无敌的我,又迷路了。线程的生命周期 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态。尤其是当线程启动以后,它不能一直“霸占”着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行...原创 2018-11-23 13:20:10 · 172 阅读 · 0 评论 -
Java网络 服务器与客户端的简单通信
不登高山,不知天之高也。不临深渊,不知地之厚也。 Java中的封装类(Socket),在实现这个功能的时候,需要对Java中的Socket套接字的一些用法熟悉,服务器与客户端之间主要通过的Java中的IO流通信。需要理解IO流的流出,流入问题。 接下来,之间看代码了,在客户端加入了多线程操作。自己定义了一多线程的工厂。 服务器public class Server1 exte...原创 2018-11-28 21:27:53 · 345 阅读 · 0 评论 -
Java Stream特性与lambda表达式
古人学问无遗力,少壮工夫老始成Stream 简介Stream 流是jdk1.8版本引进的,那么Stream主要是对Java中的集合所提出的的集合流抽象工具(java.util.stream),主要用于集合内的元素的计算,准确的说是过滤和统计计算。lambda简介Java9 在语法上提供了Lambda表达式来传递方法体,简化了之前方法必须藏身在不必要的类中的繁琐。Lambda表达式体现了...原创 2018-12-04 21:27:56 · 960 阅读 · 1 评论 -
TCP/IP与OSI
纸上得来终觉浅,绝知此事要躬通俗理解OSI七层模型物理层 硬件<————————>硬件通过1,0的弱电信号形成的比特流,在硬件之间通信。数据链路层通过无线电,将有差错的比特流物理通信变为无差错的能可靠传输数据帧的数据链路。网络层主要之路由算法。假如A电脑要经过不,B,C,D,E,F……给G发数据,我怎么选择最佳路径?这就是路由要做的...原创 2018-11-28 21:06:38 · 262 阅读 · 0 评论 -
死锁以及分析步骤
class MyResource implements Runnable{ public String lockA; public String lockB; public MyResource(String lockA,String lockB){ this.lockA = lockA; this.lockB =lockB; }...原创 2019-10-08 09:39:28 · 350 阅读 · 0 评论