自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql进阶(二)之事务篇

可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的 update记录。例如:事务 1A读取某表中的数据 A=20,事务 1 修改 A=A-1,事务 2 读取到 A = 19,事务 1 回滚导致对 A 的修改并为提交到数据库, A 的值还是 20。简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。事务2两次读取同一条记录,但是读取到的数据却是不一样的。

2023-07-03 13:32:32 247

原创 Mysql进阶(三)之索引篇

以面试题驱动索引的学习:1.索引底层使用了什么数据结构和算法?2.为什么 MySQL InnoDB 选择 B+tree 作为索引的数据结构?3.什么时候适用索引?4.什么时候不需要创建索引?5.什么情况下索引会失效?6.有什么优化索引的方法?索引是一种用于快速查询和检索数据的数据结构, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

2023-07-01 15:29:24 488

原创 十大排序算法(Java实现)

1.冒泡排序2.快速排序

2023-06-27 14:16:23 2292

原创 Java中List,Set,数组Arrays相互转化

很多场合需要进行转换(例如力扣中数组转换其他时比较容易,反过来就需要操作一番以下转换的方法并不唯一,但确保简洁易懂。

2023-06-26 14:56:04 2559

原创 LeetCode动态规划(四)之打家劫舍&买卖股票

对于动态规划来说,有两个比较有意思的专题,就是打家劫舍和买卖股票,也可以说是经典问题。

2023-06-26 10:38:43 179

原创 LeetCode动态规划(一)之动规思想概述&基础题目

其中F(0) = 0,F(1) = 1。比如F(6)= F(5)+F(4),然后分别计算F(5)和F(4),但是计算F(5)时还会遇到计算F(4),但此时他们俩已经彼此分开了。给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。输入:obstacleGrid = [ [0,0,0],[0,1,0],[0,0,0] ]输入:cost = [1,100,1,1,1,100,1,1,100,1]解释:F(3) = F(2) + F(1) = 1 + 1 = 2。

2023-06-25 22:04:01 485

原创 Java SE(十二)之多线程

进程:是正在运行的程序是系统进行资源分配和调用的独立单位,每一个进程都有它自己的内存空间和系统资源线程:是进程中的单个顺序控制流,是一条执行路径单线程:一个进程如果只有一条执行路径,则称为单线程程序多线程:一个进程如果有多条执行路径,则称为多线程程序。

2023-05-31 19:41:56 594

原创 LeetCode动态规划(三)之子序列问题

开篇肯定回顾一下动规5部曲确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组子序列问题。

2023-05-14 18:05:22 308 1

原创 Java SE(十一)之包装类(各种类型之间的转换)

文章目录Object类 &Number类1.Object2.Number类包装类,装箱,拆箱1.手动装箱/拆箱2.自动装箱/ 拆箱应用——常见包装类1.Integer类2.Character类3.实战——各种类型之间的转换(1)int和Integer相互转换(2)基本数据类型转化为String(3)String转化为基本数据类型Object类 &Number类八种基本数据结构都分别有对应的包装类,属于引用数据类型。包装类层次结构如下所以先介绍Object类和Number类1.Obj

2023-05-14 12:37:23 721

原创 LeetCode数学相关题目

主要介绍关于数学的一些题目这些题目技巧性都比较大,没有什么特殊的数据结构和算法,有时就很简单,没思路时也是挺烦。主打的就是模拟或者看破本质。

2023-05-13 21:22:47 506

原创 LeetCode之回溯算法

(如果要问为什么还需要startIndex,因为这还是组合问题啊,也就是不能走回头路,比如[1,2,3],目标和是4,你可以选[1,1,2],如果没有startIndex,当你到2的时候,又会有[2,1,1]的可能!首先需要建立一个映射,从字符2-9映射到字母,可以hash可以数组。输入:nums = [1,2,2] 输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

2023-05-09 14:07:49 698

原创 Java SE(十一)之异常处理(Exception)

异常是程序在“编译”或者“执行”的过程中可能出现的问题,(语法错误不算在异常体系中)比如:数组索引越界、空指针异常、 日期格式化异常,等…因为Java无法为这个世界上全部的问题提供异常类,所以某些时刻需要自定义异常定义一个异常类继承Exception.重写构造器。在出现异常的地方用throw new 自定义对象抛出作用:编译时异常是编译阶段就报错,提醒更加强烈,一定需要处理!!定义一个异常类继承RuntimeException重写构造器。

2023-04-29 22:32:21 902

原创 Java SE(十四)之 Java 8新特性(Lambda,Stream流,方法引用等)

作用:简化匿名内部类的代码写法首先回顾一下匿名内部类:(为什么要引入匿名内部类?匿名内部类// 首先创建一个接口 interface inter {// 直接使用匿名内部类,重写eat方法并调用 new inter() {System . out . println("正在调用eat方法");} }但是,Lambda看到这里还是觉得不够简便,所以进一步开始简化!Lambda语法:注:-> 是语法形式,无实际含义。

2023-03-14 10:10:30 250

原创 Maven基础入门

是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。Maven是专门用于管理和构建Java项目的工具,它的主要功能有:提供了一套标准化的项目结构提供了一套标准化的构建流程(编译,测试,打包,发布……)提供了一套依赖管理机制什么是依赖管理?如果没有Maven的话,在项目中使用某些第三方资源时,就需要去下载对应的jar包而Maven使用标准的坐标配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。

2023-03-10 17:48:46 395

原创 leetcode字符串(上)——字符串操作

对于字符串的相关题目,主要分为两类字符串操作字符串匹配本文主要介绍字符串操作相关,包括反转,压缩,替换 等java字符串(String & StringBuilder)leetcode字符串小结(下)

2023-03-10 09:55:06 259

原创 初探git——版本控制工具git实用教程

Git是目前世界上最先进的分布式版本控制系统。git 的整体工作流程:1.clone(克隆): 从远程仓库中克隆代码到本地仓库2.checkout(检出):从本地仓库中检出一个仓库分支然后进行修订3.add(添加): 在提交前先将代码提交到暂存区4.commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本5.fetch(抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。6.pull。

2023-03-09 20:56:06 507 1

原创 后端快速上手前端框架Vue+Element+Axios

面向后端人员,旨在快速熟悉Vue框架,更详细的以后再总结JavaScript框架简化Dom操作响应式数据驱动(2)在html文件中引用vue.js和直接创建.vue文件有什么差别?本文主要针对第一种的vue形式,当然平时也会看到直接的.vue文件。两者的区别在于引用Vue.js后可以在 浏览器上直接使用Vue的实例。而创建.vue只能通过编译后,才可在浏览器上运行查看效果。

2023-03-08 00:28:09 818 1

原创 LeetCode算法思想之滑动窗口

滑动窗口,可以称为固定间距的双指针(快慢指针+固定步长)由于它自己独特的性质,所以专门拿出来探讨(双指针指路应用场景:数组,字符串先上东哥()的模板(对于模板,可能会限制你的思维,但有时在你突然没有思路的时候有很有帮助)/* 滑动窗口算法框架 */ void slidingWindow(string s) {// hashmap一般用来判断窗口内的字符是否有重复 int left = 0 , right = 0;// c 是将移入窗口的字符 char c = s . charAt(right)

2023-03-07 09:57:34 372

原创 LeetCode链表(链表操作,反转链表,奇偶链表,排序链表)

本篇文章更注重于链表自身的特点。链表是一种通过指针串联在一起的线性结构。链表中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。链表的入口节点称为链表的头结点也就是head。(1)单链表每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。(2)双链表每一个节点有两个指针域。

2023-03-06 20:32:21 847

原创 后端快速上手前端三剑客 Html&CSS&JavaScript

结构:HTML表现:CSS行为:JavaScript面向后端人员,能看懂前端代码,所以简单介绍一下三大件,更详细的有时间再总结。CSS 指层叠样式表 (Cascading Style Sheets),样式定义如何显示 HTML 元素css代码一般定义在style标签中。JavaScript 是一门跨平台、面向对象的脚本语言;JavaScript是脚本语言,不需要编译,由浏览器直接解析并执行。

2023-03-03 18:46:20 592

原创 LeetCode算法复杂度分析(时间复杂度&空间复杂度)

我们知道,研究算法的最终目的就是如何花更少的时间如何占用更少的内存去完成相同的需求。我们要计算算法时间耗费情况,但我们并不能将时间占用和空间占用量化。所以我们得度量算法的执行时间,那么如何度量呢?我们分析一个算法的运行时间,最重要的就是把核心操作的次数和输入规模关联起来。统计 算法使用内存空间随着数据量变大时的增长趋势.通常情况下,空间复杂度统计范围是「暂存空间」+「输出空间」

2023-03-01 20:31:30 647

原创 Mysql从基础入门(1)之数据库建表和增删改

数据库:存储和管理数据的仓库,数据是有组织的进行存储管理数据库的大型软件DDL() ,创建(准备工作)

2023-02-28 20:20:01 266

原创 LeetCode算法技巧之双指针(左右指针,快慢指针,排序+双指针)

(1)简介首先明确一下,这里的指针并非C或C++中的指针,从名字容易产生误解,这只是一种算法思想,也不是一种数据结构。这里的指针准确的说其实就是索引,回想在数组遍历的时候,经常会写for循环,用一个指针来记录当前遍历的项(arrays[ i ])。那么双指针实际上就是有两个这样的指针一般可以分为左右指针,快慢指针,和固定间距指针(滑动窗口中常见,文章链接(2)应用场景数组,字符串,链表等数组和字符串:前后指针较多,快慢指针也有快慢指针(因为链表没有索引,不容易得到尾指针)

2023-02-22 09:37:46 1446

原创 Spring基础入门(一)之 理论&基础概念

这篇文章主要是介绍Spring主要的一些理论&基本概念(尽量不贴代码)具体实战操作可以见Spring(二)实战常见面试题可以见Spring(三)面试(其实搞懂这篇文章,三的面试题就不难了,当然也可以用来查漏补缺)为什么要用注解开发?——简化配置开发(之前IOC和DI的实现都需要写在applicationContext.xml配置文件的bean标签中)怎么实现注解开发?——删除原来的bean标签,直接在类上方添加@Component注解(注解在哪个类上方这个类就是bean)。} }

2023-02-13 15:26:24 304

原创 SpringMVC基础入门(一)之理论&基础概念

(1)简介表现形式状态转换,它是一种软件架构风格(2)为什么要引入Rest风格当表示一个网络资源时,传统风格资源描述形式id=1查询id为1的用户信息保存用户信息而REST风格描述形式隐藏资源的访问行为,无法通过地址得知对资源是何种操作;书写简化(3)如何区分某请求是什么操作?一个相同的url地址即可以是新增也可以是修改或者查询,所以该怎么区分?按照REST风格访问资源时使用行为动作区分对资源进行了何种操作资源描述作用行为动作查询全部用户信息GET(查询)查询指定用户信息。

2023-02-13 14:31:55 522

原创 Java SE进阶(一)之ArrayList源码分析(底层扩容机制)

本篇文章先回顾一下ArrayList有关特点和常用API,然后介绍重点——ArrayList源码分析(1)特点ArrayList 类实现一个可增长的动态数组,位于。实现了 List 接口,它可以存储不同类型的对象(包括 null 在内),而数组则只能存放特定数据类型的值。存储类型只能存储引用数据类型,如果是基本数据类型,需要用到他们的包装类(2)定义格式// 引入 ArrayList 类 ArrayList < E > objectName = new ArrayList < >();

2023-02-07 23:14:22 144

原创 Java内存原理(数组内存,方法内存,对象内存)

Java内存分配主要是5个部分JDK8之前:主要是栈;堆;方法区;本地方法栈;寄存器JDK8以后:取消方法区,新增元空间。把原来方法区的多种功能进行拆分,有的功能放到了堆中,有的功能放到了元空间中。每个部分的作用是方法运行时使用的内存,比如main方法运行,进入方法栈中执行(2)堆:存储对象或者数组,new来创建的,都存储在堆内存(3)方法区:存储可以运行的class文件(当加载一个类时,这个类的字节码文件就会被加载到方法区)(4)本地方法栈:JVM在使用操作系统功能的时候使用,(与开发无关)

2023-02-07 14:48:05 784

原创 操作系统从入门到入土(二)进程与线程

在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是“死锁”。发生死锁后若无外力干涉,这些进程都将无法向前推进死锁 & 饥饿 & 死循环。

2023-02-05 14:43:26 331

原创 Java SE 进阶(二)之 HashMap&HashSet底层原理

关于Set和HashSet的API使用可参见集合基础入门(Collection,ArrayList,HashSet,HashMap)

2023-02-04 15:05:13 720

原创 二叉搜索树,平衡二叉树,红黑树,B树,B+树

它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树(即任意节点高度差不超过1(1)一种自平衡的二叉搜索树(2)不是高度平衡的(3)特有的红黑规则(来维持平衡)首先可以把B树看作一个M树,并且允许一个结点中包含多个key,并且满足下列条件:(1)树中每个结点最多有M-1个key(有M个孩子节点),并且以升序排列。

2023-02-03 17:23:45 813

原创 操作系统从入门到入土(一)之计算机系统概述

内核态——用户态:执行一条特权指令,修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。用户态——内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。有:I/O指令,置中断指令,存取用于内存保护的寄存器,送程序状态字到程序状态字寄存器等的指令。没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征。这些事件宏观上是同时发生的,内核是计算机上配置的底层软件,是操作系统最核心最基本的部分,(并行:几件事一起执行)

2023-01-06 10:45:38 598

原创 python 导入 包,模块,类,函数

在复杂代码中,需要进行按不同的层次封装代码,方便重用和协作包和模块都是为了更好的对代码进行组织,实现可重用和可维护。

2022-11-17 09:28:46 2114 1

原创 Java Web(六)之会话跟踪技术(Cookier&Session)

会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间。会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁。:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问。存储位置:Cookie 是将数据存储在客户端,Session 将数据存储在服务端。活化:再次启动服务器后,从文件中加载数据到Session中。

2022-10-24 14:08:20 263

原创 Java Web(五)之 web核心(HTTP协议,Tomcat服务器,Servlet)

超文本传输协议,规定了浏览器和服务器之间数据传输的规则。HTTP协议的特点:(1)基于TCP协议:面向连接,安全(2)基于请求—响应模型的:一次请求对应一次响应(请求和响应是一一对应关系)(3)HTTP协议是无状态协议:对于事物处理没有记忆能力。每次请求-响应都是独立的注意: 无状态指的是客户端发送HTTP请求给服务端之后,服务端根据请求响应数据,响应完后,不会记录任何信息。缺点:多次请求间不能共享数据,Java使用会话技术(Session,Cookie)来解决优点:速度快。

2022-10-20 14:11:21 552

原创 LeetCode位运算(找出落单的数,二进制中1的个数,2的幂等)

位运算操作符。

2022-10-12 00:27:10 327

原创 Java SE(四) 之操作符(算术运算符,位运算符,逻辑运算符,三元运算符等)

梳理了一下运算符,比较重要的(或者说是容易弄错的)有算术运算符中的+,逻辑运算符,位运算符,三目运算符等。

2022-10-09 20:45:26 430

原创 Java SE(十)之 网络编程(TCP通信,UDP通信)

TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信的两端形成网络虚拟链路,—旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。端口号:标识正在计算机设备上运行的进程(程序),被规定为一个 16 位的二进制,范围是 0~65535。,接收数据的对象因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念。

2022-10-06 11:00:26 962

原创 Java SE(九)之 IO流(字节流,字符流,缓冲流)

I表示intput,把硬盘文件中的数据读入到内存的过程,称之输入,负责读;O表示output,把内存中的数据写出到硬盘文件的过程,称之输出,负责写。File:它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的;File类的对象代表操作系统的文件,File封装了对文件进行:删除、获取信息、创建文件或文件夹等操作。但是不能读写文件内容;对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已(可以存在或不存在)将来是要通过具体的操作把这个路径的内容转换为具体存在的。

2022-10-05 22:37:29 642

原创 Java SE(二)之 字符集(ASCII,GBK,Unicode,编解码)

注意,如果编解码的方式不同,会造成乱码(例如用GBK编码,用UTF-8解码,因为GBK中一个汉字占两个字节,而UTF-8占三个字节,所以编解码时肯定会造成乱码)因为是UTF-8,所以一个中文占用三个字节,所以总共的长度为15,另外,-27,-101,-67 三个字节表示汉字。在GBK编码中一个汉字占2个字节,在UTF-8编码中一个汉字占3个字节。来表示代表不同的字符,这样电脑就可以根据二进制数来显示其对应的字符。但是不同的字符占用的字节不同,因为存在不同的编码方式。1MB = 1024KB 等等。

2022-10-05 10:47:36 1136

原创 LeetCode数组(二分查找,双指针,滑动窗口,区间问题,二维数组)

数组可以说是大家最早接触的数据结构了,上手应该比较快。数组的基本操作,可以快速回顾数组查找,删除,添加以及内存分布等本文主要是leetcode的习题解析。题目的解法还是秉持一贯的原则,要么很容易想到(或者根据先验知识去联想),要么非常巧妙复杂度低,有些不容易想到或者复杂度高的就没有写出来了。

2022-09-24 15:44:41 560

空空如也

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

TA关注的人

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