2 思〤行

尚未进行身份认证

我要认证

萤火之森

等级
TA的排名 23w+

线程池(详解)

加油,每天一篇博客,我辈岂是蓬蒿人目录1.什么是线程池2.为什么要用线程池3.线程池的创建3.1 四种线程池的使用1.什么是线程池java.util.concurrent.Executors提供了一个 java.util.concurrent.Executor接口的实现用于创建线程池多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。百度:线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线.

2020-09-23 16:36:02

ConcurrentHashMap源码分析(1.7,1.8详解)

ConcurrentHashMap1.JDK1.7版本源码分析1.1 初始化1.2 put操作1.3 get操作1.4 size操作2. JDK1.8的实现2.1 node节点2.2TreeNode2.3 put操作2.4 get操作4.面试题ConcurrentHashMap 与HashMap和Hashtable 最大的不同在于:put和 get 两次Hash到达指定的HashEntry,第一次hash到达Segment,第二次到达Segment里面的Entry,然后在遍历entry链表(1) 从1.

2020-09-20 17:01:54

java线程之:Condition-线程通信更高效的方式

Condition一、Condition概念二、 Condition接口1.方法详解2.获取Condition一、Condition概念1.如果程序不使用synchronized关键字来保证同步 , 直接使用Lock对象 , 则系统中不存在隐式的同步监视器 , 也就不能使用wait(),notify(),notifyAll()方法进行通信了2.当使用Lock对象来保证同步时,使用Condition可以让那些已经得到Lock对象无法继续执行的线程释放Lock对象,Condition对象也可以唤醒其他处

2020-09-19 10:46:51

ASQ源码解析

ASQ1.概念2.核心结构3.实现原理3.1 同步状态的获取3.2 同步队列3.3 独占式同步状态的获取1.概念队列同步器AbstractQueuedSynchronizer(后面简称AQS)是实现锁和有关同步器的一个基础框架,其内部通过一个被标识为volatile的名为state的变量来控制多个线程之间的同步状态。多个线程之间可以通过AQS来独占式或共享式的抢占资源。例如,在锁这个问题上,Java中提供的是synchronized关键字,用这个关键字可以很方便的实现多个线程之间的同步。但这个关键字

2020-09-18 12:22:06

多线程(二)

多线程 七、悲观锁和乐观锁1.悲观锁1.1概念1.2 悲观锁机制存在的问题2、乐观锁2.1概念2.2 乐观锁的实现方式2.3 乐观锁存在的问题八、死锁1.造成死锁的条件2.常见的死锁问题3.哲学家就餐问题4.死锁的预防七、悲观锁和乐观锁1.悲观锁1.1概念总是假设最坏的情况,也就是每一次去拿数据都默认别人会修改,所以每次拿数据都会上锁,这会导致有其他人想要拿到数据就会阻塞知道获取到这把锁synchornized关键字的实现就是:悲观锁1.2 悲观锁机制存在的问题1、多线程竞争下,加锁,解锁都会

2020-09-15 23:40:15

Mybatis框架学习(更新中...)

Mybatis1、框架概述1.1 什么是框架1.2 三层架构2、学习大纲3、JDBC存在的问题4、Mybatis4.1 概述4.2 实现原理4.3 案例4.3.1 创建数据库和表4.3.2创建Mybaties工程4.3.3 引入依赖4.3.4 全局配置文件4.3.5 POJO类(Student.java)4.3.6 Mapper接口文件(StudentMapper.java)4.3.7 Mapper.xml文件(StudentMapper.xml)4.3.8修改全局配置文件(mybatis-config.x

2020-08-25 22:44:03

多线程(一)

多线程一、进程和线程1>进程和线程的概念和特点二、JVM内存结构一、进程和线程1>进程和线程的概念和特点进程:1、进程是一个正在运行的程序,一个程序可以同时执行多个任务(线程)2、进程拥有独立的内存空间,保持各自的运行状态,相互之间互不干扰3、进程是并发执行程序在执行过程资源分配和管理的基本单位(资源分配的最小单位)4、每个进程都有自己的独立的地址空间,每启动一个进程,系统就会分配地址空间线程:1、通常,每一个任务成为一个线程,线程有时、候会被称为轻量级的进程,它是程序执

2020-08-25 22:42:21

java集合详解

集合源码解析一、前言二、List集合(一)ArrayList(二)ArrayList方法(三)ArrayList底层源码实现和解析一、前言上图是java集合框架图,我们可以看到java集合类主要由三个接口派生而出,即Collection和Map接口和Iteratorjava有三种集合,包括Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有...

2020-04-28 22:53:33

Linux

Linux一、Linux系统(一)什么是Linux系统(二)常见的linux发行版(三)Linux和Windows系统(四)Linux的目录结构(五)基本操作命令(六)文件类型(七)文件权限二、Linux基础操作命令(一)创建文件(二)删除文件(三)拷贝文件(四)剪切文件(五)重命名(六)修改文件属主和组三、vim操作(一)vim三种模式转换(二)末行模式下的命令(三)命令行模式下的命令(四)文...

2020-04-15 20:46:18

JDBC

JDBC一、JDBC(一)什么是JDBC(二) 操作步骤二、statement对象执行sql语句(一)参数配置(二)建立连接(三)操作数据库(1)增(2)删(3)改(4)查三、PrepareStatement对象执行sql语句(一)参数配置(二)建立连接(三)操作数据库(1)增(2)查四、statement和PreparedStatement对象()什么是sql注入异常一、JDBC(一)什么是...

2020-04-14 16:27:32

Mysql优化

一、mysql的优化问题我们在使用mysql时候,可能会出现一些性能低下的问题,也就是说我们在使用mysql时候,可能sql语句书写正确,逻辑思维也是没问题的,但mysql反应比较慢,这就是mysql效率比较低下,必须要进行优化。二、慢查询日志慢查询日志作用MySQL可以设置慢查询日志,当SQL执行的时间超过我们设定的时间,那么这些SQL就会被记录在慢查询日志当中,然后我们通过查...

2020-04-14 11:21:56

Mysql事务

事务一、sql语句执行过程分析(1)缓存(2) 解析器(3)预处理器(4)查询优化器二、 Mysql异常中断(没来及刷脏,数据丢失)(一) redo log(重做日志)三、什么是事务开启事务,事务回滚,执行事务四、Mysql中undo log日志一、sql语句执行过程分析(1)缓存mysql支持一种 Buffer pool 机制,文件类型数据库:mysql将数据都存储在文件中。对数...

2020-03-28 19:59:56

深入JVM工作原理(二)

深入JVM工作原理(二)一、详解 新生代和老年代(一)新生代(二)老年代(接着JVM工作原理(一),继续更新JVM的内容)一、详解 新生代和老年代(一)新生代java堆可以分为新生代和老年代,默认创建的对象都是先放在新生代,当gc收集发生之后,若该对象没有没回收,并且达到了老年代的年龄,就被转移到老年代。一般占据堆的1/3空间。由于频繁创建对象,所以新生代会频繁触发MinorGC进行...

2020-03-23 14:52:34

详解堆排序

一、什么是堆排序堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点二、堆排序的基本思想1、将待排序的序列构成一个大顶堆(即:根节点为树的最大值)2、然后将大顶堆与末尾元素进行交换3、再把剩下的n-1个元素元素重新构成一个堆,这样会得到n个元素的次小值。如此反复执...

2020-03-19 16:51:55

基数排序(桶子法)

一、基数排序基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog®m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性...

2020-03-16 15:21:30

归并算法的递归和非递归实现

一、非递归实现什么是归并排序?归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。/** * 非递归代码实现 ...

2020-03-11 12:56:26

Mysql索引底层原理

Mysql索引底层原理一、InnoDB行格式、数据页结构一、InnoDB行格式、数据页结构存储引擎负责对表中的数据进行读取和写入,常用的存储引擎有:InnoDB,MyISAM,Memory等,不同的存储引擎有着自己的特性,数据在不同的存储引擎中存放格式也是不同的,比如:Memory都不用磁盘来存储数据。...

2020-03-10 17:11:00

深入JVM工作原理(一)

AVM一、JVM基础知识(一)java跨平台解释(二)JVM介绍(三)JDK、JRE、JDK三者关系(四)JVM的生命周期启动和消亡:JVM运行起点:JVM的两种线程:二、JVM的工作机制(类加载机制)(一)类加载时机(二)类加载器(三)双亲委派模型(四)类加载详细过程一、JVM基础知识(一)java跨平台解释注意:我们提到java跨平台性,就会想到JVM,但能跨平台的是java程序,而不是...

2020-03-09 16:36:49

Mysql基础部分

Mysql基础部分一、常见的数据库管理系统二、sql、DB、DBMS分别是什么三、SQL语句包括增删查四、操作数据库五、创建、修改、删除表五、数据类型(一)、整数类型(二)、浮点数类型和定点数类型(三)、日期与时间类型(四)、字符串类型(五)、二进制类型六、查找数据(一)、单表查询(常用的)(1)、 分组查询(2)、集合函数(分组函数)(3)、having和where的区别(4)、limit 限制...

2020-03-08 15:30:09

二分查找的递归,非递归,面试题

一、二分查找二分查找也叫折半查找,每次查找缩减当前元素量的一半,这种查找效率是很惊人的时间复杂度:假设我们有n个数据,查找一次,元素量变为:2/n;查找k次后的区间:n/2k,等比数列,当n/2k = 1时,k就是总的缩小次数,=> O(K) = logn二、二分查找的递归,非递归,面试题非递归: /** *二分查找非递归方式 * @param arr 查找...

2020-03-07 18:01:33

查看更多

勋章 我的勋章
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。