![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
九州殊口二
这个作者很懒,什么都没留下…
展开
-
Java实现文件传输
服务端发送,客户端接收。服务端持续运行,一旦有客户端连接就会向客户端发送文件import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.net.ServerSocket;import java.net.Socket;/** * 文件传输server(由服务器发送) * * @author qxt * @date 2021/3/8 17:38 */publ原创 2021-03-11 23:13:00 · 7143 阅读 · 0 评论 -
Java 并发容器
文章目录1.并发集合简介ConcurrentHashMapCopyOnWriteArrayList1.并发集合简介ConcurrentHashMap:线程安全的HashMap,加锁力度更小CopyOnWriteArrayList:适用于在读多写少的场景下,性能优于ArrayListConcurrentLinkedQueue:线程安全的LinkedList,适用链表实现的高效并发队列BlockingQueue:这是一个接口,JDK内部通过链表、数组等方式实现了这个接口。表示阻塞队列,非常适合作为数原创 2020-06-17 14:40:50 · 135 阅读 · 0 评论 -
深入解析Java内存模型(JMM)
文章目录为什么要有内存模型并发编程的问题什么是内存模型什么是Java内存模型Java内存模型的实现总结为什么要有内存模型在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。内存模型,英文名Memory Model,他是一个很老的老古董了。他是与...转载 2020-04-06 16:30:53 · 213 阅读 · 0 评论 -
ConcurrentHashMap详解
文章目录JDK1.8中的升级get()源码为什么ConcurrentHashMap的读操作不需要加锁?volatile关键字是加在数组上volatile吗volatile修饰Node总结JDK1.8中的升级jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS +...原创 2020-03-22 16:32:40 · 376 阅读 · 0 评论 -
重载(Overload)与重写(Override)
文章目录重载(Overload)重写(Override)重载和重写规范为什么不能根据返回类型区分重载?重载(Overload)重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。重写(Override)重写是子类对父类的允许访问的方法的实现过...原创 2020-03-20 19:19:03 · 165 阅读 · 0 评论 -
Java 8大基本类型及所占字节数
Java 8大基本类型所占字节数(或 bit 数)类型存储需求bit 数取值范围备注int4字节4*8-2147483648~2147483647即 (-2)的31次方 ~ (2的31次方) - 1short2字节2*8-32768~32767即 (-2)的15次方 ~ (2的15次方) - 1long8字节8*8即 (-2)的63次...原创 2020-03-19 17:47:34 · 1147 阅读 · 0 评论 -
浅拷贝、深拷贝与clone
文章目录什么是浅拷贝、深拷贝浅拷贝深拷贝总结什么是浅拷贝、深拷贝浅拷贝class Address{ public String addr; public Address(String addr) { this.addr = addr; }}public class Person implements Cloneable{ pri...原创 2020-03-18 11:35:14 · 122 阅读 · 0 评论 -
带你认识IO、BIO、NIO、AIO
文章目录什么是同步、异步、阻塞、非阻塞同步/异步、阻塞/非阻塞 组合为什么要有NIO、AIO(场景分析)BIO、NIO、AIO适用场景分析:IO都有哪些什么是同步、异步、阻塞、非阻塞名词解释举例同步同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致...原创 2020-03-17 23:52:23 · 303 阅读 · 0 评论 -
Java线程创建方式及对比
文章目录1.继承Thread类2.实现Runnable接口3.实现Callable接口4.三种方式的对比关于资源共享实现runnable接口继承Thread类1.继承Thread类继承Thread类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。创建Thread子类的实例,即创建了线程对象。调用线程对象的start()方法来启动该线...原创 2020-03-06 20:54:17 · 148 阅读 · 0 评论 -
接口与抽象类
文章目录1.接口2.抽象类3.区别从设计目的来看每个初学者都会被一个问题困扰:什么是接口?什么是抽象类?区别是什么?1.接口接口中没有构造方法,因为接口不是类接口不能实例化接口中的方法只声明,不实现接口中除了public static final变量,不能有其他变量2.抽象类抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无...原创 2020-03-05 22:25:00 · 378 阅读 · 0 评论 -
Exception 与 Error
文章目录Error和Exception的联系Error和Exception的区别运行时异常和受检查的异常throw 和 throws两个关键字有什么不同try-catch-finally-return执行顺序Error和Exception的联系继承结构:Error和Exception都是继承于Throwable,RuntimeException继承自Exception。Error和R...转载 2020-03-05 18:39:35 · 162 阅读 · 0 评论 -
Java集合及Map详解
文章目录1.整体类图2.特点1.Connection接口:2.Map接口:3.重点1.整体类图此图来源于:http://blog.csdn.net/u010887744/article/details/50575735大图可以点此访问:https://img-blog.csdn.net/20160124221843905简略版:2.特点1.Connection接口:List 有...原创 2019-12-30 10:29:33 · 169 阅读 · 0 评论 -
HashMap详解
文章目录传统 HashMap 的缺点HashMap 在 JDK 1.8 中新增的数据结构 – 红黑树传统 HashMap 的缺点JDK 1.8 以前 HashMap 的实现是 数组+链表,即使哈希函数取得再好,也很难达到元素百分百均匀分布。当 HashMap 中有大量的元素都存放到同一个桶中时,这个桶下有一条长长的链表,这个时候 HashMap 就相当于一个单链表,假如单链表有 n 个元素,...原创 2019-12-30 09:52:40 · 285 阅读 · 0 评论 -
hashCode与equals
文章目录equals方法hashcode最后看到一个面试题:重写equals()是否需要重写hashcode(),不重写会有什么后果。 来分析下Object类中的这两个方法。public boolean equals(Object obj)public int hashCode()equals方法equals()方法是用来判断其他的对象是否和该对象相等.object类:publi...原创 2019-11-27 17:24:59 · 108 阅读 · 0 评论 -
浅谈String.intern()方法
1.String类型“==”比较样例代码如下:package com.luna.test;public class StringTest { public static void main(String[] args) { String str1 = "todo"; String str2 = "todo"; String str3 = "to"; ...转载 2019-11-12 13:32:54 · 126 阅读 · 0 评论 -
Java StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的...原创 2019-04-14 11:31:06 · 145 阅读 · 0 评论 -
Java-String
常用方法char charAt(int index)返回 char指定索引处的值。int compareTo(String anotherString)按字典顺序比较两个字符串。String concat(String str)将指定的字符串连接到该字符串的末尾。boolean contains(CharSequence s)当且仅当此字符串包含指定的char值序列时才返回true...原创 2019-04-11 16:47:46 · 94 阅读 · 0 评论 -
数据结构-队列-Java实现
**1.队列**在Java中实现一个队列最简单的办法是使用ArrayList,但这不是我们经典的数据结构中的队列。为了实现队列,我们可以使用动态数组和指向队列头部的索引。如上所述,队列应支持两种操作:入队和出队。入队会向队列追加一个新元素,而出队会删除第一个元素。 所以我们需要一个索引来指出起点。class MyQueue { // store elements pr...原创 2019-03-28 21:22:28 · 176 阅读 · 0 评论 -
逆波兰表达式求值
题干根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, /。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例 2:...原创 2019-04-02 10:41:09 · 145 阅读 · 0 评论 -
Java中Integer类型的比较
Integer a=300;Integer b=300;System.out.println(a==b);//falseSystem.out.println(a.equals(b));//trueInteger把-128到127的整数都提前实例化了, 所以你不管创建多少个这个范围内的Integer都是同一个对象,他们的id相同。因为“==”比较的是地址,在上述代码中a、b地址不同。所以...原创 2019-04-01 17:01:32 · 7013 阅读 · 3 评论 -
栈-Java
Stack派生于Vector,所以说不如用Vector初始化一个空栈Stack<E> s = new Stack<>();常用方法public boolean empty() 测试此堆栈是否为空。public E peek() 查看此堆栈顶部的对象,而不从堆栈中删除它。 public E pop() 删除此堆栈顶部的对象,并将该对象作为此函数的值返...原创 2019-04-01 16:14:00 · 100 阅读 · 0 评论 -
Java-List
概念List,有序集合(也称为序列 )。 可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。与集合不同,列表通常允许重复的元素。 更正式地,列表通常允许元素e1和e2成对使得e1.equals(e2) ,并且如果它们允许空元素,它们通常允许多个空元素。List接口提供四种位置(索引)访问列表元素的方法。 列表(如Java数组)为零。 请...原创 2019-04-10 19:37:48 · 146 阅读 · 0 评论 -
java Queue中 add/offer,element/peek,remove/poll区别
java Queue中 add/offer,element/peek,remove/poll中的三个方法均为重复的方法,在选择使用时不免有所疑惑,这里简单区别一下:1、add()和offer()区别:add()和offer()都是向队列中添加一个元素。一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,调用 add() 方法就会抛出一个 unchecked 异常,而调用 offer()...转载 2019-03-31 21:17:54 · 102 阅读 · 0 评论 -
完全平方数
题干给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.最短路径->BFSpublic class Perfect_square_num...原创 2019-03-31 21:15:05 · 494 阅读 · 0 评论 -
打开转盘锁
题干示例 1:输入:deadends = [“0201”,“0101”,“0102”,“1212”,“2002”], target = “0202”输出:6解释:可能的移动序列为 “0000” -> “1000” -> “1100” -> “1200” -> “1201” -> “1202” -> “0202”。注意 “0000” -> “00...原创 2019-03-31 11:58:41 · 423 阅读 · 0 评论 -
BFS模板
搜索只是用来遍历连通图的,或许只是解决问题的一部分,还是要具体问题具体分析。模板一/** * Return the length of the shortest path between root and target node. */int BFS(Node root, Node target) { Queue<Node> queue; // store all...原创 2019-03-30 20:36:36 · 1137 阅读 · 0 评论