自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 linux查看CPU使用率【top】

linux使用top命令显示当前系统的进程信息、CPU使用情况、内存占用情况

2024-04-22 18:22:23 1426

原创 什么是RSS订阅

RSS 是一个能让你在一个地方订阅不同来源信息的工具,即内容聚合;

2024-03-11 22:12:33 1041 1

原创 HashMap问题整理

hashmap扩容原理和扩容形式的演变

2021-10-14 16:59:51 282

原创 基数排序(Java实现)

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

2021-10-04 16:45:50 224

原创 归并排序(Java实现)

归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。分阶段可以理解为就是递归拆分子序列的过程,递归深度为log2n。再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有

2021-10-04 16:24:23 268

原创 堆排序(Java实现)

堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2]小顶堆:arr[i] <= arr[2i+1] && arr[i] <= arr[2i+2]思路:将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆;将堆顶元素与末尾元素交换,将最大元素"沉"到数组

2021-10-04 16:15:56 192

原创 希尔排序(Java实现)

该方法实质上是一种分组插入方法希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。希尔排序是基于插入排序的以下两点性质而提出改

2021-10-04 15:43:14 93

原创 直接插入算法(Java实现)

直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。package paixu;import java.util.Arrays;public class InsertSort { public static int[] insertSort(int[] array){ for(int i=1;i<array.length;i++)//第0位独自作为有

2021-10-04 15:30:49 442

原创 每日一题 密钥格式化

有一个密钥字符串 S ,只包含字母,数字以及 ‘-’(破折号)。其中, N 个 ‘-’ 将字符串分成了 N+1 组。给你一个数字 K,请你重新格式化字符串,使每个分组恰好包含 K 个字符。特别地,第一个分组包含的字符个数必须小于等于 K,但至少要包含 1 个字符。两个分组之间需要用 ‘-’(破折号)隔开,并且将所有的小写字母转换为大写字母。给定非空字符串 S 和数字 K,按照上面描述的规则进行格式化。来源:力扣(LeetCode)482. 密钥格式化示例 1:输入:S = “5F3Z-2e-9-

2021-10-04 14:58:44 116

原创 String、StringBuilder和StringBuffer

String、StringBuffer、StringBuilder区别一、StringString 底层:public final class String //序列化、可排序类的排序方式、描述字符串结构的接口(三个常用子类String、StringBuffer和StringBuilder) implements java.io.Serializable, Comparable<String>, CharSequence { //由final修饰的字符数组,这里就注定St

2021-10-04 14:12:45 87

原创 Java基础(快问快答)

Java基本类型类型自动转换是什么八大排序思想、冒泡快排代码实现接口和抽象类的区别equals和==区别(String中的equals)为什么重写equals要重写hashCode重写hashCode要注意什么,为什么什么是代理,举例说明什么是反射,举例说明面向对象的三个特征多态的好处父类静态方法能否被子类重写static关键字final关键字String、StringBuffer、StringBuilder区别构造函数特点...

2021-09-29 18:22:20 97

原创 冒泡排序和选择排序(Java实现)

一、冒泡排序优缺点:优点:比较简单,空间复杂度较低,是稳定的;缺点:时间复杂度太高,效率慢; public static int[] sort(int[] arr){ for (int i =0;i<arr.length;i++){ for (int j = 0; j < arr.length-i-1; j++) { if(arr[j]>arr[j+1]){

2021-09-29 13:54:34 189

原创 快速排序算法(java实现)

快速排序(Quicksort)是对冒泡排序算法的一种改进。复杂度:O(nlog2 n)是否稳定:快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。适用场景:当数据量较大,要求速度较快的时候可以使用(比较的元素越多,快速排序比冒泡排序越快)当输入的数据基本有序的时候数据量小时不建议用优化:序列长度达到一定大小时,使用插入排序尾递归优化聚集元素多线程处理快排快速排序算法通过多次比较和交换来实现排序,其排序流程如下:1. .

2021-09-28 22:28:17 600

原创 Java的equals()方法和hasahCode()方法详解

Java的equals()方法和hasahCode()方法详解目录文章目录简介正文什么是equals方法什么是hashCode()方法`hashCode`的几个特性:equals()方法和hashCode方法的关联为什么重写equals()方法就要重写HashCode()方法简介Object是Java所有类的超类,equals和hashCode方法都是从Object中来的,讨论equals和hashCode方法必定绕不开Object、继承、重写正文什么是equals方法Object类中eq.

2021-09-28 21:08:27 586

原创 equals方法规范的5个特性

equals方法规范的5个特性:自反性:就是自己反过来跟自己比,要返回true;比如x.equals(x) == true对称性:就是x.equals(y) == true时,也要y.equals(y) == true传递性:就是x.equals(y) == true,同时y.equals(z) == true,那么x.equals(z) == true一致性:就是传说中的幂等性,即x.equals(y)调用多次,都应该返回一样的结果非空和空比较则返回false的特性:就是x.equals(y)

2021-09-27 23:31:48 343

原创 if(!super.equals(o)) return false;——equals重写理解误区

在仿照别人博客写equals重写方法的时候,我发现在if(!super.equals(o)) return false;这个语句上我的理解一直存在问题,所以写一篇博客记录一下。类重写euqals方法1. 判断两个引用指向的对象是否相等2. 判断传来的参数是否为当前类或者当前类的子类3. 比较各个属性值是否相等(其中包括比较父类值的属性)因为如果一个子类继承了父类,那么这个子类拥有父类所有的成员属性和方法,即使是父类里有private属性的变量,子类也是继承的,只不过父类的私有属性和方法,子类是

2021-09-27 22:56:48 679

原创 B/S结构和C/S结构

B/S和C/S都是随着互联网的发展而出现的一种网络结构模式,而其用的非常广泛,下面简单介绍一下它们的结构以及区别和联系。一、C/S结构C是英文单词“Client”的首字母,C/S就是“Client/Server”的缩写,即“客户端/服务器”模式。C/S结构是一种软件系统体系结构,也是生活中很常见的。这种结构是将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,可以充分利用两端硬件环境的优势,但是升级维护相对困难。比如我们手机中安装的微信、qq、王者荣耀等应用程序就是C/S结构。

2021-09-15 17:12:07 600

原创 Tcp三握四挥

一、三次握手最初,客户机A与服务器B的TCP进程都处于 CLOSED 状态。然后由服务器B先创建TCB(传输控制块),进入到 LISTEN 状态,准备随时响应客户请求。下面开始三握:第一次握手  A的TCP进程创建TCB(传输控制块),然后向B发出连接请求报文段。段首部中的 同步位SYN=1,同时选择一个初始序列号seq=x;(SYN报文段不能携带数据,但需要消耗一个序列号)这时客户端A进入到 SYN-SENT(同步已发送)状态。第二次握手  B收到连接请求报文段,如果同意建立连接,则

2021-09-12 00:01:35 278

原创 每日一题 找到Ascii码排序为k的索引

package leetcode;import java.util.Arrays;import java.util.HashMap;import java.util.Map;import java.util.Scanner;/** * 输入一个由n个大小写字母组成的字符串, * 按照Ascii码值从小到大的排序规则, * 查找字符串中第k个最小ascii码值的字母(k>=1) , * 输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为0) 。 * k如果大于字符串长度

2021-09-11 14:51:38 813

原创 jdk1.7的HashMap底层原理

简介基于哈希表的 Map 接口的实现 HashMap是线程不安全的,在多线程下可能出现问题,而HashTable是线程安全的。 HashMap 的实例有两个参数影响其性能:初始容量 和加载因子。将在下文介绍。源码分析Entry类型存储//用于存储Node节点,由上图所示static class Entry<K,V> implements Map.Entry<K,V> { final K key; //键 V value; ..

2021-09-11 11:58:11 101

原创 实现jdk1.7的简易HashMap

我的gitee中该项目地址:https://gitee.com/dianlanhong/hash-map1.7

2021-09-11 11:24:16 87

原创 单链表反转

给出一个单链表,反转单链表一、图解思路。。。代码演示:public static void main(String[] args) { //头插法构建单链表 LinkList list = null; for(int i =0;i<10;i++){ LinkList a = new LinkList(); a.val = i; a.next = list;

2021-09-11 10:45:46 74

原创 数据库左连接、右连接、内连接的区别

内连接inner join…on… / join…on…    展现出来的是共同的数据    select m.Province,S.Name from member m inner join ShippingArea s on m.Province=s.ShippingAreaID;    相当于:select m.Province,S.Name from member m ,

2021-09-11 10:44:55 489

原创 抽象类和接口类的区别

一、抽象类和接口类的理解接口和抽象类是Java的两个基础机制。接口是对行为的抽象,他是抽象方法的集合。接口不用被实例化,不能包含非常量成员。所有成员默认被public static final所修饰,接口中也没有非静态方法的实现,所有方法要么是抽象方法,要么是静态方法。接口实现了定义与实现分离的目的。抽象类也不能被实例化,但是形式上和一般的Java方法没有太大区别,一个抽象类中可以有一个或者多个抽象方法,也可以不含有抽象方法。抽象类是对共有方法实现或者共有的成员变量的抽取,主要用于代码重用(通过继承的方

2021-09-07 20:07:07 115

原创 每日一题 比较版本号

给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号 1 和修订号 001

2021-09-01 17:49:19 215

原创 每日一题 航班预订统计

这里有 n 个航班,它们分别从 1 到 n 进行编号。有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。请你返回一个长度为 n 的数组 answer,其中 answer[i] 是航班 i 上预订的座位总数。来源:力扣(LeetCode)链接:航班预订统计示例 1:输入:bookin

2021-08-31 23:27:28 213

原创 每日一题 所有奇数长度子数组的和

给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。来源:力扣(LeetCode)链接:所有奇数长度子数组的和示例 1:输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] = 1[4] = 4[2] = 2[5] = 5[3] = 3[1,4,2] = 7[4,2,5] = 11[2,5,3] = 10[1,4,2,5,3]

2021-08-30 22:28:59 231

原创 八大排序算法整理

术语解释稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序非原地排序:需要利用额外的数组来辅助排序时间复杂度:一个算法执行所消耗的时间空间复杂度:运行完一个算法所需的内存大小选择排序插入排序冒泡排序非优化

2021-08-25 22:13:26 109

原创 每日一题 所有可能的路径

给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序)二维数组的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些节点,空就是没有下一个结点了。译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a 。来源:力扣(LeetCode)链接:所有可能的路径示例 1:输入:graph = [[1,2],[3],[3],[]]输出:[[0,1,3],[0,2,3]]解释:有两条路径 0 -> 1 -.

2021-08-25 21:12:24 366

原创 Java 计算一段代码运行的时间

一、精确到毫秒 (ms)//获取开始时间long startTime = System.currentTimeMillis(); //测试的代码段method(); //获取结束时间long endTime = System.currentTimeMillis(); //输出程序运行时间System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); 二、精确到纳秒 (ns)//获取开始时间long startTime=

2021-08-25 16:59:41 817

原创 刷题 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。来源:力扣(LeetCode)链接:198. 打家劫舍示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 =

2021-08-24 19:48:25 89

原创 死锁 基础

有一天张三来面试,面试官要张三谈谈对死锁的理解,张三却说你先给我offer我再说,面试官说你得把我的问题打上来我才能有机会给你offer啊。其实这就涉及到死锁了,张三要offer,面试官要死锁的解释,他俩谁都不松口的话,那么大概率就是面试官拿不到死锁的解释,然后挂掉张三,接着面下一个人,但是如果张三松口,提前说出了死锁的定义,那么他还是有机会看到offer的死锁:多个进行相互等待对方资源,在得到所有资源继续运行之前,都不会释放自己已有的资源,这样造成了循环等待的现象,称为死锁。一、 产生死锁的必

2021-08-20 17:10:23 77

原创 Java 队列(Queue)基础

Java的队列:队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。代码示例:import java.util.LinkedList;import java.util.Queue; public class Main { public static void main(String[] args) { //add()和remove(

2021-08-18 21:15:56 67

原创 MySQL where in 用法详解

IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,这里分两种情况来介绍WHERE column IN (value1,value2,…)WHERE column NOT IN (value1,value2,…)in 后面是记录集,如:SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)在这个 SQL 例子里,我们实现了查出所有状态为 0 的用户(可能是被禁止)的所有文章。首先通过一

2021-08-18 20:34:21 16241 1

原创 MySQL ‘IS’ 和 ‘=’

is可以测试一个布尔值(true/false/null)is 一般情况下和 null 连用,比较该字段的值是否为空(is null / is not null)= 用在2种情况下:一是判断值是否相等 where id=1;二是用于赋值set id=1

2021-08-18 20:13:22 2534

原创 MySQL DISTINCT 去重

牛客网sql题:找出所有员工当前薪水salary情况描述有一个薪水表,salaries简况如下:请你找出所有员工具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示,以上例子输出如下:1.常规解法,使用DISTINCT和ORDER BY:SELECT DISTINCT salaryFROM salariesORDER BY salary DESC2.也可以使用GROUP BY(按照salary进行分组) :SELECT salaryFROM sal

2021-08-18 19:49:12 70

原创 MySQL HAVING 和 WHERE

MySQL中Where和Having的区别Where是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用聚合函数Having是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用聚合函数。所谓聚合函数,是对一组值进行计算并且返回单一值的函数:sum—求和,count—计数,max—最大值,avg—平均值等。为什么where语句中不能直接使用聚合函数大致解释如

2021-08-18 19:28:33 1056

原创 MySQL 命令参数的写的顺序及执行顺序

SELECT 子句的顺序SELECTFROMWHEREGROUP BYHAVINGORDER BYLIMIT参考博客园:https://www.cnblogs.com/wyq178/p/11576065.html

2021-08-18 08:38:54 127

原创 MySQL 左连接、右连接、内连接

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行mysql左连接和右连接的区别:左连接,以左表为参照,显示所有数据,右表中没有则以null显示右连接,以右表为参照显示数据,左表中没有则以null显示左连接where只影向右表,右连接where只影响左表。一、内连接查询 inner join关键字..

2021-08-17 22:07:32 8905

原创 MySQL limit

在MySql中经常有获取第几条数据或数据分页的要求,具体由limit参数实现SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset offset:从第几条开始;rows:查询几条数据;mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: mysql> SELECT

2021-08-17 21:37:28 87

空空如也

空空如也

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

TA关注的人

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