自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Go环境搭建

学习语言的第一步就是先从环境的搭建开始的,首先,需要在下载对应的安装包下载好后,直接点击安装安装即可,基本上是一路next。

2023-01-15 19:39:49 281

原创 删除链表中重复的节点

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5。

2022-10-03 15:55:19 467

原创 分割链表.

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。思路:两个傀儡节点,小于x的节点和大于x的节点分别连接在两个节点上,最后将傀儡节点连接。输入:head = [1,4,3,2,5,2], x = 3。你不需要 保留 每个分区中各节点的初始相对位置。输入:head = [2,1], x = 2。输出:[1,2,2,4,3,5]

2022-10-03 15:53:27 238

原创 21.合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]输入:l1 = [], l2 = []输出:[1,1,2,3,4,4]

2022-10-03 15:47:34 120

原创 141.环形链表

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。输入:head = [3,2,0,-4], pos = 1。给你一个链表的头节点 head ,判断链表中是否有环。输入:head = [1,2], pos = 0。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。输入:head = [1], pos = -1。解释:链表中没有环。

2022-10-03 15:45:12 146

原创 234.回文链表

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true;否则,返回 false。思路:先找到中间节点,再将右半边的链表反转,然后从两头开始遍历,要注意偶数个节点。输入:head = [1,2,2,1]输入:head = [1,2]

2022-10-03 15:42:19 85

原创 876.链表的中间节点

ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.(测评系统对该结点序列化表述是 [3,4,5])。由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。输出:此列表中的结点 3 (序列化形式:[3,4,5])输出:此列表中的结点 4 (序列化形式:[4,5,6])如果有两个中间结点,则返回第二个中间结点。输入:[1,2,3,4,5,6]输入:[1,2,3,4,5]

2022-10-03 15:26:24 142

原创 oslab-实验0-搭建环境

bootsect.S 和 setup.S 是实模式下运行的 16位代码程序,采用近似于 Intel 的汇编语言语法,并且需要使用 8086 汇编编译器和连接器 as86 和 ld86。进入gcc-3.4目录下,可以看到有amd64和i386两个目录,其中amd64目录下存放的是64位操作系统安装gcc3.4的包,i386目录存放的是32位操作系统安装gcc3.4的包。之后,在oslab目录下运行run会出错,这是因为我们缺少一些东西,因此,安装它们。安装完成以后可以输入以下命令,查看是否安装成功。

2022-10-02 12:54:27 978 1

原创 Virtual Box安装Ubuntu

下载Virtual Box虚拟机,可以在进行下载,Ubuntu镜像可以选择或者下载。

2022-10-02 12:35:42 1099

原创 142.环形链表2

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。输入:head = [3,2,0,-4], pos = 1。输入:head = [1,2], pos = 0。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。

2022-09-30 10:39:25 65

原创 160.相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null。

2022-09-30 10:36:38 86

原创 19.删除链表的倒数第N个节点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2。输入:head = [1,2], n = 1。输入:head = [1], n = 1。输出:[1,2,3,5]

2022-09-30 10:33:04 117

原创 24.两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。输入:head = [1,2,3,4]输入:head = [1]输出:[2,1,4,3]输入:head = []

2022-09-30 10:31:18 102

原创 206.反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输入:head = [1,2]输出:[5,4,3,2,1]输入:head = []

2022-09-30 10:29:51 120

原创 707.设计链表

addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。get(index):获取链表中第 index 个节点的值。addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。

2022-09-30 10:28:18 104

原创 203.移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。输入:head = [1,2,6,3,4,5,6], val = 6。输入:head = [7,7,7,7], val = 7。输入:head = [], val = 1。输出:[1,2,3,4,5]

2022-09-27 09:35:38 68

原创 进程和线程

进程和线程进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。对于操作系统来说,进程就是一个PCB,是一个程序的动态描述,通过PCB操作系统才能实现程序的运行调度管理。在Linux下的PCB就是一个task_struct结构体每运行一个程序,就是创建了一个进程,也就是PCB,由操作系统为它分配空间等必要的资源,在内核管理区为该进程创建管理节点,以便来控制和调度该任务。线程线程是进

2021-11-29 15:57:14 207

原创 redis哨兵

redis哨兵

2021-06-28 20:30:42 102 1

原创 redis主从复制

redis主从赋值

2021-06-28 19:42:29 149 2

原创 redis删除策略

redis删除策略过期数据redis是一种内存级的数据库,所有数据均存放在内存中,内存中的数据通过TTL指令获取其状态XX:具有时效性的数据-1:永久有效的数据已经过期的数据 或 被删除的数据 或 未定义的数据数据删除策略策略定时删除惰性删除定期删除时效性数据的存储结构数据是删除策略的目标在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成整体redis性能的下降,甚至引发服务器宕机或内存泄漏。定时删除创建一个定时器,当key设置过期时间,且过期时间到达时,有定

2021-06-27 18:08:02 136 2

原创 redis事务、事务锁

redis事务redis事务的定义redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体(一个队列)。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。redis的基本操作开启事务multi作用:设定事务的开启未知,此指令执行后,后续的所有指令均加到事务中执行事务exec 作用:设定事务的结束未知,同时执行事务,与multi成对出现,成对使用取消事务discard作用:终止当前事务的定义,发生在multi之后,exec之前事务操作的

2021-06-27 17:41:55 58

原创 redis

redisredis简介redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串(String),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间(Geospatial)索引半径查询。其中常见的数据结构类型有:String、List、Set、Hash、ZSet这5种。redis有多快redis采用的是基于redis的是单线

2021-06-26 23:12:22 69

原创 redis的持久化

redis的持久化简介什么是持久化利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行回复的工作机制称为持久化。为什么要持久化防止数据意外丢失,确保数据安全性持久化过程保存的是什么将当前数据状态进行保存。快照形式,存储数据结果,存储格式简单,关注点在数据将苏剧的操作过程进行保存,日志形式,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程RDBRDB启动方式——save命令save作用手动执行一次保存操作RDB配置相关dbfilename d

2021-06-26 21:37:19 161 1

原创 Lombok的注解使用

Lombok注解前言Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。对于这些方法,它能够在编译源代码期间自动帮我们生成这些方法,并没有如反射那样降低程序的性能。它所有的增强都是通过注解实现,所以了解其使用主

2021-06-10 11:47:45 189

原创 CurrentHashMap

CurrentHashMap

2021-05-07 15:18:50 1119

原创 线程池

线程池

2021-05-06 16:32:30 84

原创 synchronized的原理

synchronized的原理synchronized初始synchronized是Java中的关键字,是一种同步锁。synchronized可以保证方法或代码块在运行时,同一时刻只有一个线程可以进入到临界区(互斥性),同时它还保证了共享变量的内存可见性。Java中的每个对象都可以作为锁。普通同步方法,锁是当前实例对象。静态同步方法,锁是当前类的class对象。同步代码块,锁是括号中的对象。import java.util.concurrent.TimeUnit;public clas

2021-05-06 09:45:32 1133 6

原创 乐观锁 VS 悲观锁

乐观锁 VS 悲观锁悲观锁:总是假设最坏的情况,每次取数据时都认为其他线程会修改,所以都会加锁(读锁、写锁、行锁等),当其他线程想要访问数据时,都需要阻塞挂起。乐观锁:总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改。乐观锁在Java中通过使用无锁来实现,常用的是CAS,Java中原子类的递增就是通过CAS自旋实现。CASCAS全称 Compare And Swap(比较与交换),是一种无锁算法。

2021-05-04 22:27:50 5462 18

原创 Java内存模型

Java内存模型简单介绍一下Java内存模型Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。Java内存模型是共享内存的并发模型,线程之间主要通过读-写共享变量(堆内存中的实例域,静态域和数组元素)来完成隐式通信。Java 内存模型(JMM)控制 Java 线程之间的通信,决定一个线程对共享变量的写入何时对另一个线程可见。JVM主内存与工作内存Jav

2021-05-03 22:54:27 159 1

原创 详解单例模式

概念:  java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。  单例模式有以下特点:  1、单例类只能有一个实例。  2、单例类必须自己创建自己的唯一实例。  3、单例类必须给所有其他对象提供这一实例。    单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若

2021-05-03 18:32:15 93 1

原创 指针碰撞和空闲列表

对于Java开发来说,在虚拟机内存管理的帮助下,不需要为每个新的对象在代码层面分配内存,回收内存,比如像C语言那样操作。所以在正常情况下,内存泄露和内存溢出等问题也不太容易出现。所以要是运行中的程序出现了内存泄露问题,排查还是有一定困难。Java堆是被所有线程共享的一块内存区域,主要用于存放对象实例,为对象分配内存就是把一块大小确定的内存从堆内存中划分出来,通常有指针碰撞和空闲列表两种实现方式。1.指针碰撞法假设Java堆中内存时完整的,已分配的内存和空闲内存分别在不同的一侧,通过一个指针作为分界点,

2021-04-26 17:21:23 2312

原创 CPU制造

CPU制造一、简述计算机从上个世纪被发明后,由第一代的电子管计算机时代到现在的大规模集成电路,体积是越来越小,性能则是越来越强悍。我们都知道,计算机系统的硬件结构主要由几部分组成:控制器、运算器、存储器和输入、输出设备等,各个部件之间通过系统总线联系起来协同工作。控制器和运算器就是CPU的组成部分(还有寄存器组),控制器主要负责协调工作,运算器则负责计算机的算术运算和逻辑运算。CPU本身其实就是一块大规模的集成电路,我们现在主要介绍这一部分的内容。二、制造硅(Si),是一种非金属元素,它具有半导体

2021-04-24 20:36:26 132

原创 Class文件结构

Class文件结构1 概述作为Java程序员,为什么我们需要接触字节码文件?字节码文件的跨平台性Java语言:跨平台的语言(write once, run anywhere)当Java源代码成功编译成字节码后,如果想在不同平台运行,则无需再次编译这个优势不再那么吸引人了。Python、PHP、Perl、Ruby、Lisp等有强大的编译器跨平台似乎已经快成为一门语言必选的特性了Java虚拟机:跨语言的平台Java虚拟机不和包括Java在内的任何语言绑定,它只与“Class文件”这

2021-04-14 22:07:41 173

原创 垃圾回收器

垃圾回收器

2021-04-12 21:50:32 387

原创 HTTP

HTTP认识 HTTP首先你听的最多的应该就是 HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),这你一定能说出来,但是这样还不够,假如你是大厂面试官,这不可能是他想要的最终结果,我们在面试的时候往往把自己知道的尽可能多的说出来,才有和面试官谈价钱的资本。那么什么是超文本传输协议?超文本传输协议可以进行文字分割:超文本(Hypertext)、传输(Transfer)、协议(Protocol),它们之间的关系如下按照范围的大小 协议 > 传输 >

2021-04-12 18:20:49 1212 1

原创 垃圾回收相关概念

垃圾回收相关概念

2021-04-11 17:02:28 89

原创 垃圾回收相关算法

垃圾回收相关算法标记阶段:引用计数算法标记阶段的目的方法区和堆存在GC和OOM程序计数器既没有GC也没有OOM本地方法栈和虚拟机栈没有GC,但是存在StackOverFlow频繁的回收新生代,较少的回收老年代,基本不懂元空间垃圾标记阶段:主要是为了判断对象是否存活在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃

2021-04-10 18:30:18 140

原创 垃圾回收概述

垃圾回收概述什么是垃圾?概述Java 和 C++语言的区别,就在于垃圾收集技术和内存动态分配上,C++语言没有垃圾收集技术,需要程序员手动的收集。垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候回收?如何回收?垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java的垃圾收集机制

2021-04-09 20:09:28 111

原创 StringTable(字符串常量池)

StringTable(字符串常量池)String的基本特性String:字符串,使用一对 “” 引起来表示String s1 = "chinese";// 字面量的定义方式String s2 = new String("hello");// new 对象的方式String被声明为final的,不可被继承String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小String在jdk8及以前内部定义了

2021-04-07 15:24:55 489 4

原创 三次握手四次挥手

三次握手四次挥手

2021-04-05 20:38:23 90

空空如也

空空如也

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

TA关注的人

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