自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (1)
  • 收藏
  • 关注

原创 算法学习大纲

算法基础复杂度枚举模拟递归分治贪心排序选择排序冒泡排序插入排序计数排序基数排序快速排序归并排序堆排序桶排序希尔排序锦标赛排序前缀和差分二分查找倍增构造搜索DFS(深度优先搜索)BFS(广度优先搜索)双向搜索启发式搜索A*迭代加深搜索IDA*回溯法Dancing Links优化动态规划记忆化搜索背包 DP区间 DPDAG (有向无环图)上的 DP树形 DP状压 DP数位 DP插头 DP计数 DP动态 DP概率 DPD

2021-06-29 16:41:42 372

原创 【设计模式】单例模式

单例模式主要是为了避免因为创建了多个实例造成资源的浪费,且多个实例由于多次调用容易导致结果出现错误,而使用单例模式能够保证整个应用中有且只有一个实例。

2022-06-06 11:58:32 219

原创 Linux免密登陆

Linux免密登录

2022-06-03 09:00:00 199

原创 设置固定ip

Linux设置固定ip

2022-06-02 17:11:12 522

原创 如何从大量数据中找出高频词?

如何从大量数据中找出高频词?

2022-06-01 10:05:07 1098

原创 如何在大量的数据中找出不重复的整数?

如何在大量的数据中找出不重复的整数?

2022-06-01 10:02:20 406

原创 如何从 5 亿个数中找出中位数?

如何从 5 亿个数中找出中位数?

2022-06-01 10:01:40 313

原创 如何查询最热门的查询串?

如何查询最热门的查询串?

2022-06-01 10:00:13 252

原创 如何从大量的 URL 中找出相同的 URL?

如何从大量的 URL 中找出相同的 URL?

2022-06-01 09:59:36 361

原创 常用锁及其使用场景

常见锁及其使用场景

2022-06-01 09:56:51 506

原创 基本数据类型

基本数据类型

2022-06-01 09:55:11 105

原创 封装、继承、多态

多态分为动态多态和静态多态重写是一种动态多态,在运行时根据引用变量所指向的实际对象的类型来调用方法重载是一种静态多态,在编译期决定调用哪个方法重写的条件参数列表必须完全与被重写方法的相同;返回类型必须完全与被重写方法的返回类型相同;访问级别的限制性一定不能比被重写方法的强;访问级别的限制性可以比被重写方法的弱;重写方法一定不能抛出新的检查异常或比被重写的方法声明的检查异常更广泛的检查异常重写的方法能够抛出更少或更有限的异常(也就是说,被重写的方法声明了异常,但重写的方法可以什么也不声明)不能重写被标

2022-06-01 09:45:14 149

原创 String、Long源码解析和面试题

我们常听人说,HashMap的key建议使用不可变类,比如说 String 这种不可变类。这里说的不可变指的是类值一旦被初始化,就不能再被改变了,如果被修改,将会是新的类,我们写个 demo 来演示一下。从代码上来看,s 的值好像被修改了,但从 debug 的日志来看,其实是 s 的内存地址已经被修改了,也就说 s =“world” 这个看似简单的赋值,其实已经把 s 的引用指向了新的 String,debug 的截图显示内存地址已经被修改

2022-06-01 09:44:50 170

原创 MySQL

基础入门: 与MySQL的零距离接触-慕课网MySQL开发技巧: MySQL开发技巧(一)  MySQL开发技巧(二)  MySQL开发技巧(三)MySQL5.7新特性及相关优化技巧: MySQL5.7版本新特性  性能优化之MySQL优化MySQL集群(PXC)入门  MyCAT入门及应用MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,因此任何人都可

2022-06-01 09:40:32 109

原创 Stream

流创建通过已有的集合来创建流List<String> strings = Arrays.asList("Hello", "World", "Hello1", "Hello2", "HelloWorld1", "HelloWorld2");Stream<String> stream = strings.stream();通过Stream创建流Stream<String> stream = Stream.of("Hello", "World", "Hello1",

2022-05-31 10:03:31 102

原创 Java8时间常用操作

常用方法总结获取当前时间// 当前日期:2020-09-27LocalDate date = LocalDate.now();// 当前时间:16:30:23.126LocalTime time = LocalTime.now();// 当前日期和时间:2020-09-27T16:30:23.126LocalDateTime dateTime = LocalDateTime.now();月份的第一天和最后一天LocalDate now = LocalDate.now();// 本月

2022-05-31 10:00:20 207

原创 HashMap

HashMap容量、扩容HashMap主要的成员变量size记录了Map中KV对的个数loadFactor装载因子,用来衡量HashMap满的程度。loadFactor的默认值为0.75f(static final float DEFAULT_LOAD_FACTOR = 0.75f;)capacity容量,默认容量16(static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16)threshold

2022-05-31 09:59:00 92

原创 final、static、this、super

final,static,this,super 关键字总结final 关键字final关键字主要用在三个地方:变量、方法、类。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效

2022-05-31 09:58:20 309 1

原创 CopyOnWriteArrayList

CopyOnWriteArrayList

2022-05-31 09:57:40 364

原创 Collections 工具类和 Arrays 工具类常见方法

Collections 工具类和 Arrays 工具类常见方法CollectionsCollections 工具类常用方法:排序查找,替换操作同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合)排序操作void reverse(List list)//反转void shuffle(List list)//随机排序void sort(List list)//按自然排序的升序排序void sort(List list, Comparator c)//定制排序,由

2022-05-31 09:54:01 264

原创 dubbo

dubbo简介Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。基本原理节点角色说明节点角色说明Provider暴露服务的服务提供方Consumer调用远程服务的服务消费方Register服务注册与发现的注册中心

2022-05-31 09:52:26 209

原创 GitHub的基本操作

使用in限制搜索Blog in:nameBlog in:name,descriptionBlog in:name,description,readme根据stars和forks数筛选springboot stars:>=5000springboot forks:>=5000springboot forks:2000..4000 stars:6000..18000使用awesome搜索awesome redis搜索某地址某语言的活跃用户location:beijing

2022-05-31 09:50:47 74

原创 IntelliJ IDEA查看类层次结构图

IntelliJ IDEA查看类层次结构快捷键Crtl + Alt + UCrtl + Alt + Shift + UCrtl + H查看Diagram图形 的类层次结构图Crtl + Alt + U或 Crtl + Alt + Shift + U手动步骤,右键需要查看的类 -> Diagrams -> Show Diagram Popup然后就可以看到类的具体层次结构了...

2022-05-31 09:49:16 683

原创 正则表达式

正则表达式用法

2022-05-31 09:47:40 1306

原创 pwnable-collision

questionDaddy told me about cool MD5 hash collision today.I wanna do something like that too!ssh col@pwnable.kr -p2222 (pw:guest)solution连上ssh后,查看根目录文件发现存在col.c,col,flag三个文件,显然flag是需要获取的内容通过ls -la查看文件权限发现当前用户没有权限查看flag文件分析col.c文件#include <stdi

2021-11-05 15:22:52 455

原创 pwnable-fd

questionMommy! what is a file descriptor in Linux?try to play the wargame your self but if you are ABSOLUTE beginner, follow this tutorial link:https://youtu.be/971eZhMHQQwssh fd@pwnable.kr -p2222 (pw:guest)solutionl连上ssh后,查看根目录文件发现存在fd.c,fd,flag三个

2021-11-05 14:54:24 164

原创 排序-堆排序

堆排序简介工作原理排序过程在数组上建立二叉堆性质稳定性时间复杂度空间复杂度代码大顶堆小顶堆简介堆排序(Heapsort)是指利用 二叉堆 这种数据结构所设计的一种排序算法。堆排序的适用数据结构为数组。工作原理本质是建立在堆上的选择排序。排序过程首先建立大顶堆,然后将堆顶的元素取出,作为最大值,与数组尾部的元素交换,并维持残余堆的性质;之后将堆顶的元素取出,作为次大值,与数组倒数第二位元素交换,并维持残余堆的性质;以此类推,在第 n−1n-1n−1次操作后,整个数组就完成了排序。在数组上建立

2021-07-01 09:50:33 276

原创 排序-归并排序

归并排序简介工作原理性质代码实现简介归并排序(merge sort)是一种采用了 分治 思想的排序算法。工作原理归并排序分为三个步骤:将数列划分为两部分;递归地分别对两个子序列进行归并排序;合并两个子序列。不难发现,归并排序的前两步都很好实现,关键是如何合并两个子序列。注意到两个子序列在第二步中已经保证了都是有序的了,第三步中实际上是想要把两个 有序 的序列合并起来。性质归并排序是一种稳定的排序算法。归并排序的最优时间复杂度、平均时间复杂度和最坏时间复杂度均为 O(nlog⁡n)O

2021-06-30 17:45:35 108

原创 排序-快速排序

快速排序简介基本原理性质稳定性时间复杂度代码分区算法双指针分区算法简介快速排序(Quicksort),又称分区交换排序(partition-exchange sort),简称快排,是一种被广泛运用的排序算法。基本原理快速排序的工作原理是通过 分治 的方式来将一个数组排序。快速排序分为三个过程:将数列划分为两部分(要求保证相对大小关系);递归到两个子序列中分别进行快速排序;不用合并,因为此时数列已经完全有序。和归并排序不同,第一步并不是直接分成前后两个序列,而是在分的过程中要保证相对大小

2021-06-30 17:36:50 239 1

原创 排序-基数排序

基数排序 简介性质稳定性时间复杂度空间复杂度代码实现最低位优先法LSD简介基数排序(Radix sort)是一种非比较型的排序算法,最早用于解决卡片排序的问题。它的工作原理是将待排序的元素拆分为 kkk 个关键字(比较两个元素时,先比较第一关键字,如果相同再比较第二关键字……),然后先对第 kkk 关键字进行稳定排序,再对第 k−1k-1k−1 关键字进行稳定排序,再对第 k−2k-2k−2 关键字进行稳定排序……最后对第一关键字进行稳定排序,这样就完成了对整个待排序序列的稳定排序。基数排序需要借

2021-06-30 16:42:43 166

原创 排序-计数排序

计数排序简介工作原理性质稳定性时间复杂度代码实现计数排序倒序遍历的计数排序计数排序简介计数排序(Counting sort)是一种线性时间的排序算法。工作原理计数排序的工作原理是使用一个额外的数组 CCC,其中第 iii 个元素是待排序数组 AAA 中值等于 iii 的元素的个数,然后根据数组 CCC 来将 AAA 中的元素排到正确的位置。它的工作过程分为三个步骤:计算每个数出现了几次;求出每个数出现次数的 前缀和;利用出现次数的前缀和,从右至左计算每个数的排名。性质稳定性计数.

2021-06-30 16:34:12 237

原创 排序-冒泡排序

冒泡排序简介工作原理性质稳定性时间复杂度代码实现方法一方法二方法三冒泡排序简介冒泡排序(Bubble sort)是一种简单的排序算法。由于在算法的执行过程中,较小的元素像是气泡般慢慢「浮」到数列的顶端,故叫做冒泡排序。工作原理它的工作原理是每次检查相邻两个元素,如果前面的元素与后面的元素满足给定的排序条件,就将相邻两个元素交换。当没有相邻的元素需要交换时,排序就完成了。经过 iii 次扫描后,数列的末尾 iii 项必然是最大的 iii 项,因此冒泡排序最多需要扫描 n−1n-1n−1 遍数组就.

2021-06-30 16:23:16 152

原创 排序-选择排序

选择排序选择排序简介性质稳定性时间复杂度代码实现选择排序二元选择排序选择排序简介选择排序(英语:Selection sort)是排序算法的一种,它的工作原理是每次找出第 iii 小的元素(也就是 Ai..nA_{i..n}Ai..n​ 中最小的元素),然后将这个元素与数组第 iii 个位置上的元素交换。性质稳定性选择排序是一种不稳定的排序算法。时间复杂度选择排序的最优时间复杂度、平均时间复杂度和最坏时间复杂度均为 O(n2)O(n^2)O(n2)。代码实现选择排序双重循环遍历数组,每经

2021-06-30 16:14:22 146

原创 排序-插入排序

排序-插入排序插入排序简介性质稳定性时间复杂度代码交换法移动法插入排序简介插入排序(英语:Insertion sort)是一种简单直观的排序算法。它的工作原理为将待排列元素划分为“已排序”和“未排序”两部分,每次从“未排序的”元素中选择一个插入到“已排序的”元素中的正确位置。一个与插入排序相同的操作是打扑克牌时,从牌桌上抓一张牌,按牌面大小插到手牌后,再抓下一张牌。性质稳定性插入排序是一种稳定的排序算法。时间复杂度插入排序的最优时间复杂度为 O(n)O(n)O(n),在数列几乎有序时效率很

2021-06-30 15:34:09 177

原创 算法基础-模拟

算法基础-模拟模拟技巧模拟模拟就是用计算机来模拟题目中要求的操作。模拟题目通常具有码量大、操作多、思路繁复的特点。由于它码量大,经常会出现难以查错的情况,如果写错是相当浪费时间的。技巧遵循以下的建议有可能会提升解题速度:在动手写代码之前,在草纸上尽可能地写好要实现的流程。在代码中,尽量把每个部分模块化,写成函数、结构体或类。对于一些可能重复用到的概念,可以统一转化,方便处理:如,某题给你 “YY-MM-DD 时:分” 把它抽取到一个函数,处理成秒,会减少概念混淆。调试时分块调试。模块化的

2021-06-30 14:23:53 300

原创 算法基础-枚举

算法基础-枚举枚举枚举在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。 是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。...

2021-06-30 13:42:31 500

原创 算法基础-复杂度分析

复杂度分析复杂度分析复杂度分析

2021-06-30 10:33:09 535 1

原创 【剑指 Offer】二维数组中的查找

题目在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]示例1给定 target = 5,返回 true示例

2021-05-30 16:23:23 68

原创 【剑指 Offer】数组中重复的数字

题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例示例1输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3提示2<=n<=1000002 <= n <= 1000002<=n<=100000题解方法一:哈希表思路与算法由于只需要找出数组中任意一个重复的数字,因此遍

2021-05-30 14:34:54 152

原创 准时抵达会议现场的最小跳过休息次数

题目给你一个整数 hoursBefore ,表示你要前往会议所剩下的可用小时数。要想成功抵达会议现场,你必须途经 n 条道路。道路的长度用一个长度为 n的整数数组 dist 表示,其中 dist[i] 表示第 i 条道路的长度(单位:千米)。另给你一个整数 speed ,表示你在道路上前进的速度(单位:千米每小时)。当你通过第i条路之后,就必须休息并等待,直到 下一个整数小时 才能开始继续通过下一条道路。注意:你不需要在通过最后一条道路后休息,因为那时你已经抵达会议现场。例如,如果你通过一条道路用去

2021-05-30 13:28:18 184

MP3Stego_1_1_16

MP3Stego_1.1.18 著名的MP3隐写工具最新版,这是一个在通用的mp3音频文件中隐写的软件。在把WAV压缩转换成MP3的过程中,对要隐藏的文本txt文件进行加密压缩并写入MP3。

2018-02-28

空空如也

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

TA关注的人

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