![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
致宁
不安于现状才能不断努力
展开
-
JAVA—数组的基础操作
用JAVA 实现以前C实现的很简单的数组操作。import com.sun.prism.j2d.PrismPrintGraphics;public class ArrayUtils{ //1.计算数组中最大值 public static int arrayMaxElement(int[] data){ int max = data[0]; ...原创 2018-12-02 18:51:25 · 129 阅读 · 0 评论 -
Java—Lock锁
https://blog.csdn.net/weixin_43214609/article/details/101627433参照上面的博客,得知Synchronized锁是一个重量级的锁,效率很低,而且隐式加解锁,非常不方便。那么Java中也有一个自己实现的锁机制——Lock锁。Lock锁是纯用Java实现的,可以看到底层源代码的那种。1.Lock在Java中是一个接口,是J...原创 2019-09-29 00:14:12 · 207 阅读 · 0 评论 -
Java—Synchronized锁
1.Synchronized是一个关键字,JVM级别的锁。锁的是对象!!同时是一个悲观锁、重量级锁。(悲观锁就是老往最坏情况考虑)隐式加解锁(monitor支持可重入)。2.使用1.同步代码块2.同步方法区别:锁的粒度不同【同步代码块】必须传入要锁住的对象 !!! public void run() { for(int i=0;i<...原创 2019-09-28 23:38:04 · 171 阅读 · 0 评论 -
Java—多线程
1.进程和线程进程:可以看作是一个应用程序,是操作系统中资源分配的最小单位。线程:一个程序中必定要执行多个任务,那一个任务对应的就是一个线程,所以线程是任务调度的基本单位。线程依附进程而存在,相对进程而言,线程的创建、销毁、切换都更加轻便和灵活。同一个进程的所有线程共享进程的一套资源。而Java就可以支持多线程,也是一大特色。2.Java中创建线程一共有四种方法1.继承...原创 2019-09-28 17:52:41 · 120 阅读 · 0 评论 -
ConCurrentHashMap在JDK7和JDK8对比(结构、初始化、Size和添加元素)
推荐阅读:https://www.jianshu.com/p/e694f1e868ec0.特点ConcurrentHashMap在java.util.Concurrent包下,最大的特点是安全、性能较同样安全的HashTable更高。它的设计与实现非常精巧,大量的利用了volatile,final,CAS等lock-free技术来减少锁竞争对于性能的影响。ConcurrentHas...原创 2019-08-20 16:18:37 · 487 阅读 · 0 评论 -
JDK8中的Arrays.sort源码解析
在Java中总是能很方便的调用别人已经写好的方法,无论是导入的jar包还是JDK自带的工具包。就比如JDK中对数组的排序功能,只要是个数组传进去就能排序,这无疑是大大提高了开发的效率,流行的排序有很多,那它里面到底是用了哪一种排序?接下来对照源码分析一波~sort支持各种各样类型数据数组的排序~我们就来看个int[ ]排序的源码叭,一进去是这样的~点进去~我也看不懂~但...原创 2019-08-19 17:09:23 · 704 阅读 · 0 评论 -
详谈HashMap源码以及哈希碰撞
0.底层结构首先看HashMap的底层结构和基本方法transient Node<K,V>[] table; //数组,hash表的桶//hash表每个桶下的链表 Node(int hash, K key, V value, Node<K,V> next) { this.hash = hash; this.key = key; ...原创 2019-08-05 20:26:35 · 345 阅读 · 0 评论 -
实现简单的聊天室(单线程)
可以理解为socket是用来读写的一个对象(双全工)服务器和客户端都各自有一个,这也对应了,TCP四次挥手。服务器端package Single;import java.io.IOException;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;impor...原创 2019-05-11 16:05:52 · 675 阅读 · 1 评论 -
Map接口及其常用子类
1.Map接口集合Map关注事物的映射和键值的唯一性HahsMap:键值对,不关心顺序。Hashtable:是线程安全版的HashMap,效率较低LinkedHashMap:键值对,关心插入顺序。TreeMap:键值对,关心元素自然排序。Map接口结构图,小结保存二元偶对象(键值对)的最顶层接口。public interface Map<K,V>所有的元...原创 2019-04-21 13:15:36 · 710 阅读 · 0 评论 -
Collection接口及其常用子类(java.util包)
1. Collection接口Collection是单个集合保存的最大父接口。每一次进行数据操作的时候只能够对单个对象进行处理。public interface Collection<E> extends Iterable<E>Iterable是一个迭代器接口。接口Iterable,该接口包含一个能够产生Iterator接口的iterator()方法,并且I...原创 2019-04-21 13:03:56 · 8992 阅读 · 0 评论 -
java.util包中重要的接口、子类
java中比较重要必须要了解的包首先就是lang包、util包和io包了。今天总结一下java.util包中比较常用的一些知识。Java集合类框架实际上就是java针对于数据结构的一种实现。类集:实际上就是动态数组。在Java的类集里面(java.util包)提供了两个最为核心的接口:Collection、Map接口。用一张图大概的总结一下大框架,然后分块总结知识点。这些都是比较常用的...原创 2019-04-15 23:48:45 · 1053 阅读 · 1 评论 -
Java快速排序以及其优化(双路快排、三路快排)
1.快速排序思想快速排序是属于交换排序的基本思想。选择一个基准值val,把比val小的放在前面,比val大的放在后面,最后把val放在两个区域中间,val就到了最终的位置。很明显快排是一个原地排序,也是一个不稳定排序。空间复杂度:1.可以是为新数组开辟额外空间O(n)2.当然也可以在原数组内交换得来O(1)时间复杂度:O(nlogn)代码实现1.把数组第一个元素作为v...原创 2019-03-16 17:09:21 · 1425 阅读 · 1 评论 -
JAVA_String类、Object类、包装类
1.【String类】1.1实例化方法:1.直接赋值String str = "Hello Bit";采用共享模式,在JVM底层自动维护一个字符串对象池(对象数组),若采用直接赋值方法,此对象自动保存在对象池中,下次继续采用直接方法,就先去对象池查找,若找到则指向地址,若找不到则开辟并保存到对象池。2.构造方法String str = new String("Hello Bit")...原创 2019-01-04 11:14:14 · 172 阅读 · 0 评论 -
JAVA_字符串基本操作
- 字符与字符串的相互转换(toCharArray、String)- String和StringBuffer、StringBuilder之间的转换(toString、String、append)- String和StringBuffer常用方法调用(append、insert、length)public class StringUtils{ public static Str...原创 2019-01-04 10:54:24 · 137 阅读 · 0 评论 -
Java—线程池
https://blog.csdn.net/weixin_43214609/article/details/101616329说到创建线程的方法,少不了提到线程池,因为其有以下优点:1.降低资源消耗(创建开销)2.提高响应速率(无需等待)3.提高可管理性(统一分配)1.线程池的构成1.核心线程池大小2.阻塞队列:四种(数组、链表、同步、优先级)3.最大线程池大...原创 2019-09-29 00:28:37 · 80 阅读 · 0 评论