自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 临近研三毕业的一些思考【秋招】【春招】【毕业季】

未来的道路还很长,我想避免焦虑的最好办法,就是每天进步一点点,每个阶段都能朝着规划前进一步。最后,希望顺利毕业,未来可期。

2023-03-09 11:09:52 182 1

原创 git使用

这个步骤很简单,直接百度就可以知道怎么在pycharm中进行git管理,这个还十分方便,比起git bash黑窗口更加简洁。按照其流程share到github的账户上,会发现几个问题:①大文件无法上传,这个一般我上传的时候是只上传代码,不上传模型文件②无法push到仓库中,这个解决办法是 不使用git的地址,而是使用https的地址。同时本地创建分支dev,要在远程也创建分支dev,完成绑定的工作。

2022-10-24 16:52:30 531

原创 二维数组按照特定规则排序

一般而言,二维数组定制规则需要进行重写比较器,但是那个比较器在java中记忆复杂,所有我们一般使用,lambada表达式进行。5.表示第0列从小到大,若是遇到第0列值相等的,按照第1列从大到小排序。1.表示第0列按照从小到大排序。2.表示第1列按照从小到大排序。3.表示第0列按照从大到小排序。4.表示第1列按照从大到小排序。

2022-09-18 09:36:24 538

原创 实验室网络排查日记

杂谈

2022-09-16 19:12:38 190

原创 虚拟机网络适配器三种模式

VMNet1    使用的是host-only的链接模式,即虚拟机只能与主机构成内部通信,无法对外网进行访问。**VMNet8    模式:      NAT网络模式    场景:      在宿主机安装多台虚拟机,和宿主组成一个小局域网,宿主机,虚拟机之间都可以互相通信,虚拟机也可访问外网,例如 搭建 hadoop 集群,分布式服务VMNet0    模式:      使用桥接模式,安装VM后,在VM里建立虚拟机 默认 就是该模式。    场景:      如果你只是需要一台虚拟机可以

2022-07-07 09:53:58 1639

原创 dp和回溯

参考:https://labuladong.gitee.io/algo/1/4/回溯:总结几个核心:针对子集组合问题(组合就是子集的条件中变化,相当于子集的子集):可重复选 就用i 不可重复选就用i+1针对排列问题:不可以构造下标index!!!针对元素重复问题:元素重复的话一定要使用排序,visited数组,然后剪枝if(visited[i]) continue;,特殊情况下还要多一个保证相同元素之间次序保持不变的操作i > 0 && nums[i] == num

2022-03-25 12:53:44 764

原创 Juc总结

JUC思考总结1 创建线程有几种方式?1 创建线程有几种方式?有三种,实现Runnable接口,实现Callable接口,继承thread类。在具体点就是,实现Runnable接口,需要实现接口中的run方法,使用Runnable实例再创建一个Thread实例,然后调用Thread实例的start()方法来启动线程。实现Callable接口和实现Runnable相比(实现的是call()方法),Callable是可以有返回值的,返回值通过FutureTask进行封装(FutureTask是一个可

2021-12-31 11:15:30 192

原创 动态规划刷题总结

动态规划509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯首先要理解什么是动态规划?和贪心的区别是什么?所谓的动态规划中的每一个状态是由上一个状态推导出来的,贪心是没有状态推导,而是从局部直接选出最优。在动态规划中涉及到最优子结构、重叠问题(相比较递归而言,使用一个dp数据记录了前面已经计算过的值)509. 斐波那契数本题很经典的就是使用递归解法,递归出口和处理函数题目也给出来了。class Solution { public int fib(int n) {

2021-12-13 10:34:40 636

原创 Java秒杀系统方案优化 高性能高并发实战 学习笔记

秒杀系统项目

2021-12-10 21:44:32 2886 2

原创 贪心算法总结

贪心算法455. 分发饼干1005. K 次取反后最大化的数组和860. 柠檬水找零376. 摆动序列55. 跳跃游戏根据卡尔的说法,贪心算法没有所谓的套路框架,只有常识。一般来说,贪心算法只要能把测试案例跑通就可以,不需要去证明,贪心不可以,那么就是可以切换到使用动态规划了。455. 分发饼干这是一个简单的贪心思想题目,每次满足胃口值最小的孩子,于此同时,我还是运用了双指针的思想。class Solution { public int findContentChildren(int[] g

2021-12-08 11:27:40 96

原创 回溯算法总结

回溯法17. 电话号码的字母组合22. 括号生成当遇到组合问题的时候,要想到回溯法。17. 电话号码的字母组合class Solution { List<String> res = new ArrayList<>(); // 储存隐射关系:这里要用Character Map<Character,String> map = new HashMap<>(); public List<String> letterCo

2021-12-05 10:46:11 915

原创 DFS和BFS专题

DFS和BFS专题130. 被围绕的区域130. 被围绕的区域总的思想是寻找边界条件,使用标记数组。class Solution { // 将需要的变量设置为全局变量 char[][] board; int rows; int cols; boolean[][] visited; public void solve(char[][] board) { /** 分析: 题目中提示的很明显要处理边界条件。

2021-11-30 10:49:43 301

原创 二叉树专题总结

二叉树的总结94. 二叉树的中序遍历(递归+迭代)100. 相同的树(递归出口的思考)101. 对称二叉树(改造dfs)102. 二叉树的层序遍历(层序遍历模板)103. 二叉树的锯齿形层序遍历(加了一个标签的层序遍历)107. 二叉树的层序遍历 II(使用api)104. 二叉树的最大深度(递归)110. 平衡二叉树(计算树高)111. 二叉树的最小深度(计算树高)基本知识:二叉树是一种天然的递归数据结构,这个章节一定要掌握递归的写法,但是面试经常反套路,喜欢问迭代的写法(就是就是将递归的过程用栈模拟出

2021-11-16 10:27:08 863

原创 堆和优先队列

堆和优先队列总结215. 数组中的第K个最大元素(优先队列)347. 前 K 个高频元素(哈希表+优先队列)703. 数据流中的第 K 大元素(小顶堆+维护k个容量=堆顶是第k大值)973. 最接近原点的 K 个点(大顶堆+维护k个容量=超过k则移除堆顶,余下就是k个最小值)1046. 最后一块石头的重量(大顶堆)首先要了解什么是堆,大顶堆,小顶堆,优先队列的概念。https://www.cnblogs.com/lanhaicode/p/10546257.htmlJava中的优先队列默认是小顶堆形式

2021-11-10 16:19:53 491

原创 栈和队列总结

栈和队列20. 有效的括号(栈的简单应用)20. 有效的括号(栈的简单应用)class Solution { public boolean isValid(String s) { /** 分析: 括号匹配问题是栈的知识 */ // 若是奇数,则必然不会匹配 if(s.length() % 2 == 1){ return false; }

2021-11-08 15:57:56 154

原创 排序算法总结

排序法总结50. Pow(x, n)(快速幂)50. Pow(x, n)(快速幂)注意:以下算法为暴力法,时间复杂度为O(n),最后结果是超时了,那么想想能不能降低以下时间复杂度。class Solution { public double myPow(double x, int n) { /** 分析: 题目要求实现pow函数,最直接的思路就是暴力遍历。结果是时间复杂度超时。 */ // return Math

2021-11-01 10:25:46 357

原创 位运算总结

位运算刷题总结29. 两数相除(数学知识+位运算知识)29. 两数相除(数学知识+位运算知识)注意:下面的解法,时间超时了!!!因为,如果被除数是最大值,除数是1,那么循环了O(n),最大值的时间复杂度达到了10^10,超过10 ^8 ,O(n)算法大概率超时。而且下面的算法还使用了longclass Solution { public int divide(int dividend, int divisor) { /** 分析: 题目中要求很明

2021-10-26 10:44:51 294

原创 数学问题归纳

常见数学问题2. 两数相加(加法模板 + 链表操作)2. 两数相加(加法模板 + 链表操作)/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode n

2021-10-23 10:44:48 102

原创 字符串总结

字符串总结28. 实现 strStr()38. 外观数列(模拟进行循环,变态的过程)28. 实现 strStr()class Solution { public int strStr(String haystack, String needle) { /** 分析: 我的第一想法就是使用滑动窗口解题,事实上确实可以使用滑动窗口。 但是对于字符串匹配问题,一般的思路就是暴力解法和kmp算法 */ /

2021-10-19 21:18:22 119

原创 数组类总结

数组类型总结135. 分发糖果135. 分发糖果注意:本题的核心就是拆解为子问题,然后使用数组的正向遍历和反向遍历特性,进行迭代求解最优解。class Solution { public int candy(int[] ratings) { /** 分析: 每个孩子至少分配1个糖果==》定义一个数组,数组初始化全为1 若i的分数比左右高,i处的孩子比i-1和i+1的糖果数要多。==》分治成左右两个规则,数组的正向反向遍历,最后取最

2021-10-10 11:21:22 162

原创 哈希表总结

哈希表刷题总结1002. 查找共用字符(计数法,数组优化哈希)1370. 上升下降字符串(计数法,数组优化哈希)1002. 查找共用字符(计数法,数组优化哈希)class Solution { public List<String> commonChars(String[] words) { /** 分析: 一般来说使用哈希表用来表示 字符-数量关系,但是本题的字符是26个字母,完全可以使用数组来替代哈希表 这种类型的题

2021-10-09 10:14:38 175

原创 链表类(Linked List)

链表类总结206. 反转链表链表如何实现,如何遍历链表。链表可以保证头部尾部插入删除操作都是O(1),查找任意元素位置O(N),快慢指针和链表反转几乎是所有链表类问题的基础,尤其是反转链表,代码很短,建议直接背熟。206. 反转链表注:本题对递归又有了新的认知,前面学习递归的思想,更多的是不要用人脑去计算递归过程,而是用一种通用的办法直接得出答案,这种通用的过程称之为递推公式,后续部分已经完成了,只要关注第k个和第k+1个的逻辑即可!那么本题新的认知是,递归是由递和归组成,递的过程反映的思想就是拆解

2021-10-02 22:19:56 658

原创 双指针总结

双指针总结532. 数组中的 k-diff 数对(前后指针)925. 长按键入56. 合并区间532. 数组中的 k-diff 数对(前后指针)class Solution { public int findPairs(int[] nums, int k) { /** 分析: 题意中是要返回不同数对的数量,那么(1,2)和(2,1)其实本质是一样的,这里规定从小到大排序,即数对是非严格递增的==》将数组排好序,利用双指针特性,在合适的时候,进行前后

2021-09-30 20:28:34 214

原创 二分法总结

二分法刷题记录167. 两数之和 II - 输入有序数组167. 两数之和 II - 输入有序数组class Solution { public int[] twoSum(int[] numbers, int target) { // Map<Integer,Integer> map = new HashMap<>(); // for(int i = 0; i < numbers.length; i++){ //

2021-09-21 21:47:23 285

原创 排序算法(上:冒泡、插入、选择)

冒泡、插入、选择一、几种经典排序算法及其时间复杂度级别二、如何分析一个排序算法?三、冒泡排序四、插入排序五、选择排序六、思考一、几种经典排序算法及其时间复杂度级别冒泡、插入、选择 O(n^2) 基于比较快排、归并 O(nlogn) 基于比较计数、基数、桶 O(n) 不基于比较二、如何分析一个排序算法?1.学习排序算法的思路?明确原理、掌握实现以及分析性能。2.如何分析排序算法性能?从执行效率、内存消耗以及稳定性3个方面分析排序算法的性能。3.执行效率:从以下3个方面来衡量1)最好情况、最坏

2021-09-08 15:31:26 104

原创 队列的学习

队列一、什么是队列?二、如何实现队列?三、队列有哪些常见的应用?一、什么是队列?1.先进者先出,这就是典型的“队列”结构。2.支持两个操作:入队enqueue(),放一个数据到队尾;出队dequeue(),从队头取一个元素。3.所以,和栈一样,队列也是一种操作受限的线性表。二、如何实现队列?1.队列APIpublic interface Queue {public void enqueue(T item); //入队public T dequeue(); //出队public int s

2021-09-07 09:03:35 93

原创 递归的学习

递归一、什么是递归?二、为什么使用递归?递归的优缺点?三、什么样的问题可以用递归解决呢?四、如何实现递归?五、递归常见问题及解决方案六、如何将递归改写为非递归代码?七、调试递归:一、什么是递归?1.递归是一种非常高效、简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索、前中后序二叉树遍历等都是使用递归。2.方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。3.基本上,所有的递归问题都可以用递推公式来表示,比如f(n) = f(n-1) + 1;f(n) = f(n-1)

2021-09-07 08:59:28 216

原创 剑指offer刷题心得

刷题套路总结数组专题很多简单题,看似简单实则不简单,因为面试官会让你多种解法、做出时间复杂度最低的算法。因此刷题过程一定要记录时间复杂度和空间复杂度!!!数组专题39.数组中次数超过数组个数一半的数字分析:最直接的想法,枚举数组中元素,再遍历数组,计算其枚举元素的个数,时间复杂度是O(n^2)。很明显在面试中不会这么考察。1如何保存数组中的数字以及出现的个数呢?很容易想到哈希表k-v方法2在数组中个数超过一半的数字,那么其出现位置必有一个在数组下标为 n/2 位置 (这里是向下取整),为什

2021-09-05 11:31:44 139

原创 5.栈的学习

实现浏览器的前进和后退栈的基础知识空间复杂度时间复杂度设计一个支持增量操作的栈栈的应用栈在函数调用中的应用栈在表达式求值中的应用栈在括号匹配中的应用实现浏览器的前进和后退栈的基础知识先进先出,操作受限的线性表只允许在一端插入和删除数据。当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,这时我们就应该首选“栈”这种数据结构栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈,我们叫作顺序栈,用链表实现的栈,我们叫作链式栈。空间复杂度不管是顺序栈还是链式栈,我们存储数据

2021-09-04 11:01:43 296

原创 4.链表的学习(下)

核心:写出链表代码LRU缓存设计中涉及链表操作在链表操作这里尤其要警惕指针丢失和内存泄露利用伪节点(哨兵节点)进行增删改边界条件的处理画图LRU缓存设计中涉及链表操作// 其中head为伪头部,tail为伪尾部,这是双向链表的常规操作!// 插入到头部(这里只能利用head) public void addToHead(DLinkedList node){ node.prev = head; node.next = head.next; head

2021-09-04 10:39:48 138

原创 1.mysql初级篇

Mysql初级知识整体大纲第一章:基本操作指令操作指令查看mysql服务端版本SQL语言分类第二章:DQL语言操作整体大纲第一章:基本操作指令操作指令进入mysql:mysql -u root -p输入密码:查看mysql中有哪些个数据库:show databases;新建一个数据库:create database 数据库名如: create database book;选择一个数据库:use 数据库名称如:use test;查询数据表:show tables;

2021-09-02 15:53:58 117 1

原创 1.牛客网社区管理系统后端核心面试总结

后端核心技术栈Spring Boot2.xMybatisMysqlRedisCaffeineKafkaSpring SecuritySping MailSpring QuartzSLF4J(日志接口)+Logback(日志实现)Spring Boot2.xMybatisMysqlmysql初级教程笔记mysql高级教程笔记mysql八股文背诵RedisCaffeineKafkaSpring SecuritySping MailSpring QuartzSLF4J(日志接口)+Log

2021-09-02 15:04:36 566

原创 3.链表的学习(上)

核心:掌握链表的基础知识、写出链表代码链表基础知识LRU缓存淘汰算法链表 VS 数组性能大比拼基于链表实现 LRU 缓存淘汰算法Leetcode 146. LRU 缓存机制链表基础知识LRU缓存淘汰算法链表(LinkedList)的一个经典应用场景就是LRU缓存淘汰算法。LRU最近最少未使用算法。在OS虚拟存储器那部分用到了该算法,根据程序的局部性原理,设计出了虚拟储存器,内个进程只被分配了几个内存块,当进程的内存块被占完之后,从硬盘上又重新读取了一个内存块的数据量。此时,哪个内存块的内容被换出去

2021-09-01 09:36:27 144

原创 算法技巧套路

算法技巧双指针法对撞指针快慢指针二分查找法滑动窗口加法模板双指针法这是一种使用两个指针互相配合来存储节点以便于运算的技巧适用于数组、链表等线性结构,常用思路有碰撞指针、滑动窗口、快慢指针。对撞指针leetcode第一题两数之和class Solution { public int[] twoSum(int[] nums, int target) { //双指针法 //采用对撞指针法,时间复杂度降低到 o(n) int len = n

2021-08-31 20:45:54 124

原创 91刷题记录

91天刷算法Day1 -989. 数组形式的整数加法思路Day2- 821. 字符的最短距离思路1思路2Day3 -1381. 设计一个支持增量操作的栈思路Day4 - 394. 字符串解码思路Day5 - 232.用栈实现队列思路Day6 - 768.最多能完成排序的块②思路Day7 - 61.旋转链表思路Day8 - 24.两两交换链表中的节点思路Day9 - 109.有序链表转换二叉搜索树思路代码优化Day10 - 160.相交链表思路Day11 - 142.环形链表②思路Day12 - 146.LR

2021-08-31 20:43:37 290

原创 2.数组的学习

核心:掌握数组基本概念数组基础知识关键词1: 线性表关键词2: 连续内存和相同类型的数据数组基础知识数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。关键词1: 线性表线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。关键词2: 连续内存和相同类型的数据

2021-08-31 20:17:03 115

原创 1.大O法和复杂度的理解

数据结构和算法总体概览常用数据结构和算法复杂度分析大o法时间复杂度分析几种常见时间复杂度实例分析空间复杂度常用数据结构和算法数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法复杂度分析大o法算法执行效率,粗略的将就是算法代码的执行时间。从cpu的角度来看,每一行代码都执行的类似的操作:读数据-运算-写数据,一般而言每行代码对应的cpu执行个数、执行时间都不一样,这里假设执行时间

2021-08-31 20:00:52 194

空空如也

空空如也

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

TA关注的人

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