自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

帥樂

一个人的行动,要比他所说的话,更要有详细的表现。

  • 博客(22)
  • 资源 (12)
  • 收藏
  • 关注

原创 ArrayList动态数组,是怎么实现动态的?

ArrayList动态数组是怎么实现动态的?ArrayList是一个动态数组,可以通过泛型来决定数据中存放的元素类型。

2023-08-09 17:17:52 166

原创 JVM虚拟机之——双亲委派模型

双亲委派模型一、简介站在Java虚拟机角度来看,只存在两种不同的类加载器启动类加载起,这个类加载器使用C++语言实现,是虚拟机自身的一部分其他所有类加载器,这些类加载器都由Java实现,独立存在与虚拟机外,并且全部继承自抽象类,java.lang.ClassLoader站在Java开发人员角度来看,Java一直保持着三层类加载器、双亲委派的类加载结构二、三层类加载器&双亲委派模型2.1 启动类加载器(Bootstrap Class Loader)这个类加载器负责加载存放在&

2021-02-10 19:18:48 186

原创 你了解Java的线程池吗?看完就懂了

线程池一、线程池的优势池化技术相比大家已经屡见不鲜了,线程池、数据库连接池、Http 连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。1.1 使用线程池的好处:降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线

2021-02-08 11:42:50 184

转载 HashMap初始容量为什么是2的n次幂及扩容为什么是2倍的形式

HashMap的初始容量都是2的n次幂的形式存在的,而扩容也是2倍的原来的容量进行扩容,也就是扩容后的容量也是2的n次幂的形式存在的,下面就来说明一下为什么是2的n次幂的形式! 先来看一下源码,也就是向HashMap中添加元素,或者扩容时是怎么存放元素的。 第一个截图是向HashMap中添加元素putVal()方法的部分源码,可以看出,向集合中添加元素时,会使用(n - 1) & hash的计算方法来得出该元素在集合中的位置;而第二个截图是HashMap扩容时调用resize()..

2021-01-26 15:08:31 1067 1

原创 JVM虚拟机之 Java内存区域详解

Java 内存区域详解写在前面 (常见面试题)基本问题拓展问题一 概述二 运行时数据区域2.1 程序计数器2.2 Java 虚拟机栈2.3 本地方法栈2.4 堆2.5 方法区2.5.1 方法区和永久代的关系2.5.2 常用参数2.5.3 为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢?2.6 运行时常量池2.7 直接内存总结1. 程序计数器2. Java 虚拟机栈3. 本地方法栈4. 堆5. 方法区6...

2021-01-25 21:18:44 86

原创 操作系统之虚拟内存

文章目录几种常见的内存管理机制什么是虚拟内存局部性原理虚拟内存的技术实现页面置换算法文章开头,我们先来介绍一下几种常见的内存管理机制几种常见的内存管理机制简单分为连续分配管理方式和非连续分配管理方式这两种。连续分配管理方式是指为一个用户程序分配一个连续的内存空间,常见的如 块式管理 。同样地,非连续分配管理方式允许一个程序使用的内存分布在离散或者说不相邻的内存中,常见的如页式管理 和 段式管理。块式管理 : 远古时代的计算机操系统的内存管理方式。将内存分为几个固定大小的块,每个块中只包含一个

2021-01-25 19:03:04 82

原创 MySQL——MVCC原理讲解&当前读、快照读

MVCCMVCC的作用可重复读隔离级别的时候,通过MVCC解决幻读问题只在可重复读和读已提交两个隔离级别下工作因为读未提交总是读取最新的数据,而不是读取当前事务版本的数据行,而可串行化则会对所有读取的行加锁MVCC的基本原理MVCC的实现,通过保存数据在某个时间点的快照来实现的。也就是一个版本链,相当于保存了事务操作的一个历史纪录。版本链对于使用InnoDB存储引擎的表,其聚簇索引记录中包含了两个重要的隐藏列:trx_id:每当事务对聚簇索引中的记录进行修改时,都会把当前事务的事务i.

2021-01-24 22:52:32 724

原创 MySQL——Innodb中的锁及四种隔离级别

MySQL——Innodb中 表锁和行锁的思考InnoDB存储引擎实现了两种标准的锁共享锁(S-Lock):也就是读锁MySQL读锁,是读取操作创建的锁,是不阻塞的,其他的用户可以并发数据,但任何用户都不可以修改数据,直到释放。当上锁时候可以读可以加锁,但不可以更新。排它锁(X-Lock):也就是写锁MySQL写锁,如果事务A对行加入写锁,写锁是阻塞的,其他事务将不能再对该行加任何锁,事务A可以读可以改,其他事务将被阻塞Innodb中的行锁与表锁行锁行锁可以最大程度的支持并发策略,

2021-01-23 17:35:44 479

原创 JVM之 用例子讲解JVM虚拟机的类加载机制

虚拟机类加载机制因为疫情原因,都从去年颓废到今年了,这可不行,得抓紧了,还要暴富呢!!!今年让我们先从Java虚拟机类的加载机制开始1.1 生命周期一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,整个生命周期将会经历七个阶段,其中验证,准备,解析,三个部分统称为连接。其中只有解析阶段不一定按顺序执行,它在某些情况下可以在初始化阶段之后开始。1.2 什么情况下开始 “ 初始化阶段 ”关于开始第一个阶段 “ 加载阶段 ”,这点交给虚拟机的具体实现...

2021-01-01 16:06:51 83

原创 大白话——用Java实现快速排序

快速排序简介快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。快速排序的基本思想是:1.先从数列中取出一个数作为基准数,保存起来。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复执行以上操作,直到各区间只有一个数。 .

2020-12-10 23:10:49 126 1

原创 Java设计模式——单例模式的线程安全和不安全的实现方式

Java设计模式——单例模式的实现对于单例模式的实现,在Java面试中也是会经常问到,单例模式有好多种实现方法,让我在下面给大家展开讲解1.饿汉模式class Singleton1 { // 饿汉模式 private static Singleton1 singleton1 = new Singleton1(); private Singleton1(){} public static Singleton1 getInstance(){ retu.

2020-12-04 15:54:50 182 1

原创 Java基础——对HashMap的put和resize方法进行理解

Java基础——对HashMap的put和resize方法进行理解前言一、Put方法put方法源码put方法总结:二、resize方法resize源码resize方法总结:前言我们可以看到,在面试所有大厂Java岗位的时候,都有对了解HashMap原理的要求,意识到透彻了解HashMap的底层原理迫在眉睫,所以决定再写一篇博文对HashMap进行记忆和分享。一、Put方法开篇我们直接上干货!put方法源码public V put(K key, V value) { return

2020-11-22 14:55:48 371 2

原创 你知道ArrayList和LinkedList之间有什么区别吗?

写在前面众所周知,在面试Java岗位的时候,面试官最常问的问题之一就是,你常用哪些Java集合框架啊?可以说一说ArrayList和LinkedList之间有什么区别吗?我们今天就来聊一聊到底有什么样的区别。不同点ArrayListArrayList的底层实现是基于动态数组的数据结构,所以它可以以O(1)的时间复杂度去对元素进行随机访问因为底层是数组,所以对于插入和删除操作来说,最坏则需要遍历整个数组,而且在插入元素时候(除了使用尾插法)还需要重新计算数组大小,更新索引,并且在数组空

2020-09-09 10:18:28 211 1

原创 你了解红黑树吗?数据结构——红黑树

文章目录红黑树:引言红黑树的介绍红黑树的五条性质红黑树的关键操作红黑树的旋转正常插入节点红黑树的变色红黑树的旋转1.右旋转2.左旋转红黑树:引言因为博主最近在学习HashMap的源码,因为自从jdk1.8之后,HashMap就是由数组+链表+红黑树实现的,所以为了更深的去了解HashMap的原理,先来带大家一起复习一下红黑树的知识红黑树的介绍红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树是在1972年

2020-09-07 23:53:20 321

原创 Java集合框架的底层实现原理之——ArrayList

文章目录一、ArrayList1、ArrayList介绍2、ArrayList源码分析2.1 ArrayList底层使用List2.2 ArrayList的构造方法2.3 ArrayList的新增操作2.4 ArrayList的删除操作2.5 ArrayList的查找操作一、ArrayList1、ArrayList介绍public class ArrayList<E> extends AbstractList<E> implements List<E&g

2020-08-16 15:30:42 745

原创 常用的Java包小记

第一个包:java.lang包。该包提供了Java语言进行程序设计的基础类,它是默认导入的包。该包里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread以及Throwable类需要重点掌握,因为它们应用很广。第二个包:java.util包。该包提供了包含集合框架、遗留的集合类、事件模型、日期和时间实施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。第三个包:java.io包。该包通过文件系统、数据流和序列化提供系统

2020-08-12 21:21:16 112

原创 弄清Java中的String,StringBuilder,StringBuffer的区别

Java中的String,StringBuilder,StringBuffer一、三者区别String对象是常量,它的值不能被创建后改变,StringBuffer和StringBuilder可以可变;StringBuilder非线程安全(单线程使用),String与StringBuffer线程安全(多线程使用);如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。二、String 类——String字符串常量字符串广泛应用 在Java 编程中

2020-08-12 19:26:00 510 2

原创 递归实现单链表的反转(Java实现)

要求很简单,输入一个链表,反转链表后,输出新链表的表头递归的大致过程,就是从链表最后一个结点开始,依次回溯到head头结点,实现翻转大致步骤如下首先第一步,创建一个结点类class Node{ public int id; public Node next; public Node(int id){ this.id=id; ...

2020-03-24 18:51:30 1684

原创 Ubuntu18.04命令行安装mysql未提示输入密码,修改mysql默认密码

Ubuntu18.04命令行安装mysql未提示输入密码,修改mysql默认密码mysql默认密码为空但是使用mysql -uroot -p 命令连接mysql时,报错ERROR 1045 (28000): Access denied for user 'root'@'localhost'此时修改root的默认密码即可1.进入到etc/mysql 目录下,查看debian.cnf...

2019-12-06 11:43:19 240

原创 数据结构——通俗讲解关于任一二叉树n0=n2+1的证明

对于任一二叉树,若度为2的结点有n2个,则叶子结点数必为n2+1证明: 假设该二叉树总共有n个结点(n=n0+n1+n2),则该二叉树总共会有n-1条边,度为2的结点会延伸出两条边,同理,度为1的结点会延伸出一条边,则可列公式:n-1 = 2*n2 + 1*n1 ,合并两个式子可得:2*n2 + 1*n1 +1 =n0 + n1 + n2 ,则计算可知n0=n2+1。...

2019-06-05 01:33:05 13682 8

转载 树、森林与二叉树的转换

树、森林与二叉树的转换1、树转换为二叉树由于二叉树是有序的,为了避免混淆,对于无序树,我们约定树中的每个结点的孩子结点按从左到右的顺序进行编号。将树转换成二叉树的步骤是:(1)加线。就是在所有兄弟结点之间加一条连线;(2)抹线。就是对树中的每个结点,只保留他与第一个孩子结点之间的连线,删除它与其它孩子结点之间的连线;(3)旋转。就是以树的根结点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。...

2018-06-03 15:57:48 257

原创 利用python3爬虫爬取全国天气数据并保存入Mysql数据库

使用的python版本:3.6导入的库:from bs4 import BeautifulSoupimport requestsimport pymysql首先开始观察要爬取的网页(此处为中国天气网天气预报)这是华北地区的天气预报,可以观察到网页url为:http://www.weather.com.cn/textFC/hb.shtml那么切换到东北地区...

2018-02-11 23:00:09 12051 16

正则爬虫小工具

一个Python编写的正则表达式爬虫小工具,用PyQt5编写界面,附带代码+exe可执行程序+ui文件,适合初学

2018-12-21

利用python3爬虫爬取全国天气数据并保存入Mysql数据库

利用python3爬虫爬取全国天气数据并保存入Mysql数据库 具体可见博客 https://blog.csdn.net/u013523775/article/details/79313803

2018-08-07

python英汉词典,在线翻译器,带GUI界面

python英汉词典,在线翻译器,带GUI界面,支持自定义单词搜索

2018-02-06

python随机数猜数游戏,带GUI界面

python随机数猜数游戏,带GUI界面,简单,适合代码重造

2018-02-06

python百度图片自定义搜索自动下载爬虫

python百度图片自动下载爬虫,支持输入关键词搜索,输入保存路径,输入下载数量等功能

2018-02-06

python 爬虫全国大部分城市最低气温爬取并用pyecharts实现可视化

python 爬虫全国大部分城市最低气温爬取并可视化源码,会在当前文件目录下生成一个render,html即为气温可视化文件。

2018-02-06

C语言程序实力大全,220个程序+源码从易到难

C语言程序实力大全,220个程序+源码从易到难,内含目录

2018-01-31

C语言获得系统用户名

C语言获得系统用户名,一个小程序,附源代码,代码简单易懂

2018-01-19

C语言代码,生成bmp位图

C语言代码,生成bmp位图,代码简单注释详细,适合学习C语言文件操作使用!

2018-01-19

c语言农夫过河思维游戏程序及源代码

c语言农夫过河思维游戏程序及源代码,简单易懂,并有详细注释!

2018-01-17

HTML+CSS旋转特效源码

HTML+CSS旋转特效源码,适合初学HTML+CSS的人进行参考,代码详细

2018-01-17

c++贪吃蛇游戏程序源码

c++贪吃蛇游戏程序源码,详细编写,适合c及c++初学者学习与临摹!

2018-01-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除