- 博客(8)
- 收藏
- 关注
原创 集合之HashMap
前言Map这样的Key Value形式在软件开发中是非常经典的结构,经常用于内存中存放数据。HashMap众所周知HashMap底层是基于数组+链表组成的,不过在JDK1.7和JDK1.8中具体实现稍有不同JDK1.8 /** * 初始化默认的桶大小为16,通常是为2次幂的大小,原因是: n-1 通过 二进制表示,永远都是尾端以连续1的形式表示(00001111,000...
2020-06-13 17:07:08
88
原创 ArrayList之线程不安全
一、为什么是线程不安全我个人认为原因主要有两个:1、我们先来看看JDK源码中的插入源码 public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! 验证是否能被插入 elementData[size++] = e; //2 return true; }从第二行可以看到,索引是自增型的,在单线程的环境中,这个死没有问题的,但是到
2020-06-13 16:53:40
108
原创 一、理解网络编程与套接字的相关概念
1、什么是套接字?现在的计算机都连接在一个巨大的因特网上,各个计算机之间的物理连接已经是小问题,那如何将某一台计算机的应用程序连接到因特网上呢?那么此时就通过“套接字”来完成。2、如何来创建套接字呢?以接受连接请求的服务端为例(用C语言的函数表示): 1、调用socket函数,返回值即为套接字的文件描述符。int socket(int domain, int type, int pro...
2020-04-14 16:33:39
133
原创 通过ReentrantLock来了解AQS
1、AQS的简单介绍AQS是一个抽象类,该类采用的是模板设计方式,内部维护了一个链表用于存储当时没有获取到的锁的线程,其底层实现是依靠着Unsafe类即实现了CAS算法的类和通过设置状态值来判断当前锁的使用情况。2、ReentrantLock的源码分析public class ReentrantLock implements Lock, java.io.Serializable { ...
2020-03-04 15:58:38
86
原创 创建型模式——单例模式
一、饿汉式(线程安全)1.1静态常量式public class Ehanshi_1 { private Ehanshi_1() {} private static Ehanshi_1 instance = new Ehanshi_1(); public static Ehanshi_1 getIntance() { return instance; }}优缺点:优点:这种...
2019-10-06 17:02:51
50
原创 一、synchronized关键字原理
众所周知synchronized关键字是解决并发问题常用的解决方案,有以下三种使用方式:同步普通方法,锁的是当前对象同步静态方法,锁的是当前Class对象同步块,锁的是()中的对象实现原理:JVM是通过进入、退出对象监视器(Monitor)来实现对方法、同步块的同步的。具体实现是在通过编译之后在同步方法之前加入一个monitor.enter指令,在退出方法和异常处插入monito...
2019-10-06 10:45:49
111
原创 基数排序
package cn.gs.radixsort;import java.util.Arrays;/** * 基数排序 * 桶排序的扩展 * @author Administrator * 实现思路:将整数按位数切割成不同的数字,然后按每个位数分别比较 * 出现的小bug:遇到负数会出现索引越界的异常 * 解决方案:1.对负数和正数分开处理,最后进行拼接 * 2.分别加...
2019-09-03 23:05:58
58
原创 数据库事务隔离级别及四大特性
数据库事务隔离级别的四大特性- 四大特性(1)原子性(Atomicity)原子性指的是事务操作要么全部成功,要么全部回滚。简单的来说就是操作成功,就完全应用到数据库中;操作失败,则不影响到数据库中的数据。(2)一致性(Consistency)一致性指的是一个事务执行前后必须保持一致性状态。打个比方:AB两人在银行的总金额为1000,他们之间不管如何转账,转账多少次,他们的总金额...
2019-07-27 12:19:44
144
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人