自定义博客皮肤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)
  • 收藏
  • 关注

原创 【LeetCode-300.最长递增子序列】

是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。最长递增子序列是 [2,3,7,101],因此长度为 4。,找到其中最长严格递增子序列的长度。

2024-03-25 15:03:51 267

原创 【并发编程---上】

充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升方便进行业务拆分,提升系统并发能力和性能:在特殊的业务场景下,先天的就适合于并发编程。多线程编程中一般线程的个数都大于 CPU 核心的个数,而一个 CPU 核心在任意时刻只能被一个线程使用,为了让这些线程都能得到有效执行,CPU 采取的策略是为每个线程分配时间片并轮转的形式。线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

2024-03-25 14:59:48 844

原创 【LeetCode-45.跳跃游戏】

从下标为 0 跳到下标为 1 的位置,跳。向前跳转的最大长度。生成的测试用例可以到达。跳到最后一个位置的最小跳跃数是。步到达数组的最后一个位置。处,你可以跳转到任意。

2024-03-24 20:24:03 346

原创 【LeetCode-322.零钱兑换】

如果没有任何一种硬币组合能组成总金额,返回。,表示不同面额的硬币;你可以认为每种硬币的数量是无限的。计算并返回可以凑成总金额所需的。

2024-03-24 20:22:22 284

原创 【LeetCode-347.前k个高频元素】

请你返回其中出现频率前。你所设计算法的时间复杂度。

2024-03-23 21:35:07 177

原创 【LeetCode-394.字符串解码】

你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数。给定一个经过编码的字符串,返回它解码后的字符串。,表示其中方括号内部的。

2024-03-23 21:32:42 358

原创 【LeetCode-153.寻找旋转排序数组的最小值】

它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。原数组为 [0,1,2,4,5,6,7] ,旋转 3 次得到输入数组。原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。的数组,预先按照升序排列,经由。你必须设计一个时间复杂度为。

2024-03-22 21:23:07 434

原创 【LeetCode-74.搜索二维矩阵】

给你一个满足下述两条属性的。

2024-03-22 21:20:42 379

原创 【LeetCode-22.括号生成】

代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。

2024-03-21 20:49:24 166

原创 【LeetCode-46.全排列】

给定一个不含重复数字的数组。

2024-03-21 20:37:34 286

原创 【LeetCode-114.二叉树展开为链表】

【代码】【LeetCode-114.二叉树展开为链表】

2024-03-20 22:00:07 368

原创 Java开发面试小结Day1

首先,DELETE是一个数据操作语言(DML)命令,主要用于从表中删除部分或全部元组,即删除表中的特定行。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。使用这些命令时,你可以将它们组合起来,通过管道(|)将一个命令的输出作为另一个命令的输入,从而执行更复杂的操作。在数据库设计中,视图是一个非常重要的工具,它可以帮助开发人员和数据库管理员更好地组织和管理数据,提高系统的性能和可维护性。

2024-03-20 21:56:18 1257

原创 【Leetcode-102.二叉树的层序遍历】

(即逐层地,从左到右访问所有节点)。

2024-03-19 20:31:34 199

原创 【Leetcode-199.二叉树的右视图】

想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

2024-03-19 20:27:46 320

原创 【Leetcode-19.删除链表的第N个节点】

使用栈结构(先进后出)特性进行解答。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。你能尝试使用一趟扫描实现吗?

2024-03-18 17:07:25 298

原创 【Leetcode-21合并两个有序链表】

如果 l1 或者 l2 一开始就是空链表 ,那么没有任何操作需要合并,所以我们只需要返回非空链表。否则,我们要判断 l1 和 l2 哪一个链表的头节点的值更小,然后递归地决定下一个添加到结果里的节点。如果两个链表有一个为空,递归结束。新链表是通过拼接给定的两个链表的所有节点组成的。我们直接将以上递归过程建模,同时需要考虑边界情况。将两个升序链表合并为一个新的。

2024-03-18 17:04:48 454

原创 【Leetcode-54.螺旋矩阵】

2.其次向右移动到最右,此时第一行因为已经使用过了,可以将其从图中删去,体现在代码中就是重新定义上边界;4.若上下边界不交错,则遍历还未结束,接着向下向左向上移动,操作过程与第一,二步同理;3.判断若重新定义后,上下边界交错,表明螺旋矩阵遍历结束,跳出循环,返回答案;5.不断循环以上步骤,直到某两条边界交错,跳出循环,返回答案。,返回矩阵中的所有元素。1.首先设定上下左右边界;

2024-03-17 10:42:35 386

原创 【Leetcode-73.矩阵置零】

则将其所在行和列的所有元素都设为。的矩阵,如果一个元素为。

2024-03-17 10:07:36 365

原创 【Leetcode-189.轮转数组】

我们可以使用额外的数组来将每个元素放至正确的位置。用 len 表示数组的长度,我们遍历原数组,将原数组下标为 i 的元素放至新数组下标为 (i+k)mod  len 的位置,最后将新数组拷贝至原数组即可。向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100],将数组中的元素向右轮转。

2024-03-14 19:36:47 219

原创 【leetcode-53最大子数组和】

dp[n - 1] 都看一遍,取最大值。根据状态的定义,由于 nums[i] 一定会被选取,并且以 nums[i] 结尾的连续子数组与以 nums[i - 1] 结尾的连续子数组只相差一个元素 nums[i]。而子问题的定义必须以一个数结尾,因此如果子问题 i 的结果是负数或者 000,那么子问题 i + 1 的答案就是以 nums[i] 结尾的那个数。简单的动态规划问题,很有可能问的问题就可以设计成为子问题,复杂的动态规划问题就没有那么容易看出子问题应该如何设计了,这需要一定的解决问题的经验。

2024-03-14 19:05:27 842

原创 ArrayList 和 Vector 的区别是什么?

①线程安全:Vector 使用了 Synchronized 来实现线程同步,是线程安全的,而 ArrayList 是。③扩容:ArrayList 和 Vector 都会根据实际的需要动态的调整容量,只不过在 Vector 扩容每。这两个类都实现了 List 接口(List 接口继承了 Collection 接口),他们都是有序集合。Vector类的所有方法都是同步的。Arraylist不是同步的,所以在不需要保证线程安全时时建议使用Arraylist。

2024-03-10 21:01:36 96 1

原创 ArrayList 和 LinkedList 的区别是什么?

①数据结构实现:ArrayList 是动态数组的数据结构实现,而 LinkedList 是双向链表的数据结。③增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,因为。综合来说,在需要频繁读取集合中的元素时,更推荐使用 ArrayList,而在插入和删除操作。双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前。还存储了两个引用,一个指向前一个元素,一个指向后一个元素。

2024-03-10 21:00:37 144

原创 遍历一个 List 有哪些不同的方式?每种方法的实现原理是什么?Java中 List 遍历的最佳实践是什么?

①如果一个数据集合实现了该接口,就意味着它支持 Random Access,按位置读取元素的平。推荐的做法就是,支持 Random Access 的列表可用 for 循环遍历,否则建议用 Iterator。据集合的特点,统一遍历集合的接口。②如果没有实现该接口,表示不支持 Random Access,如LinkedList。2. 迭代器遍历,Iterator。缺点是只能做简单的遍。1. for 循环遍历,基于计数器。历,不能在遍历过程中操作数据集合,例如删除、替换。置的元素,当读取到最后一个元素后停止。

2024-03-10 20:58:39 727

原创 Java集合的快速失败机制 “fail-fast”?

1. 在遍历过程中,所有涉及到改变modCount值得地方全部加上synchronized。例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中的元素,原因:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount。集合在被遍历期间如果内容发生变化,就会改变modCount的值。是java集合的一种错误检测机制,当多个线程对集合进行结构上的改变的操作时,有可能。在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简单的修改集合元素的。

2024-03-10 20:55:55 86

原创 List,Set,Map三者的区别?List、Set、Map 是否继承自Collection 接口?List、Map、Set 三个接口存取元素时,各有什么特点?

Java 容器分为 Collection 和 Map 两大类,Collection集合的子接口有Set、List、Queue。多个null元素,元素都有索引。Map没有继承于Collection接口,从Map集合中检索元素时,只要给出键。我们比较常用的是Set、List,Map接口不是collection的子接口。是一个键值对集合,存储键、值和之间的映射。一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以重复,可以插入。一个无序(存入和取出顺序有可能不一致)容器,不可以存储重复元素,只允许存入。

2024-03-10 20:53:29 216

原创 人工智能与大数据:技术前沿与实践

在当今信息爆炸的时代,人工智能(AI)与大数据已经成为推动社会进步的重要力量。本文将探讨这两项技术的最新发展,以及如何将其应用于实践。

2024-01-31 22:34:54 491

原创 JVM 执行引擎

JVM 的将字节码装载到内存,但字节码。随着时间的推移,编译器把越来越多的代码编译成本地代码,此时运行本地机器指令,编译器把代码编译成本地代码需要一定的执行时间,但编译为本地代码后。执行引擎的翻译过程有两种:1、通过解释器将字节码文件转为机器指令执行;为了执行内存中的字节码文件指令,执行引擎。则会将字节码文件编译为机器指令,存在方法区中,编译完成后直接执行本。用即时编译器(JIT)将字节码文件的二进制流编译成机器指令执行。解释器可以马上发挥作用,省去编译的时间,立即执行。获得更高的执行效率。

2024-01-31 22:24:16 343

原创 JVM 内存模型

常量数据会存放到方法区的常量池中,不管是基本数据类型还是引用数据类型都会存放常量池的地址。则无法继续运行程序。引用数据类型将值的引用存放到虚拟机栈中,而对象存放在堆内存中,引用数据类型占用 4。每一个线程都会对应一个虚拟机栈,线程中的每个方法都会创建一个栈帧,存放本次方法执。当线程被销毁的时候,共享区的数据不会立即回收,需要等待达到垃圾回收的阈(yu)存放当前线程中所声明的变量,包括基本数据类型的数据和引用数据类型的引用。执行的方法一定在栈顶,我们只能获取栈顶的栈帧,栈帧在虚拟机栈中先进后出。

2024-01-30 14:51:27 738

原创 类加载机制

父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器。如果父类加载器可以完成类加载任务,就成功返回。如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给。<JAVA_HOME>/lib/ext 中,是启动类加载器的子类。倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载。(1)验证:验证被加载类的正确性:如文件的格式,元数据等。(3)解析:把类的符号引用转为直接引用。主要加载 JAVA 中的一些拓展类,位于。

2024-01-30 14:44:06 333

原创 JAVA 语言的执行原理

文本文件(java) --> 编译器 --> class 文件(虚拟指令) --> JAVA 虚拟机(JVM)--> 解释为指令执行。A. 编译型语言(C 语言):文本文件(.c) --> 编译器 --> 可执行文件(.exe) -->B. 解释型语言(JavaScript):文本文件 --> 解释器 --> 翻译成机器指令并执。在遵循语法的前提下,写一个文本文件,之后利用某种方式,把文本转换为计算机指令执行。计算机能够直接执行的指令。特点:运行速度快,但不能跨平台。特点:运行速度较慢,但能跨平台。

2024-01-27 14:16:12 132

原创 操作系统重点

六、PCB的作用:(一)作为独立运行基本单位的标志,系统是通过PCB来感知进程的存在的。操作系统OS是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充,其主要作用是管理硬件设备,提高它们的利用率和系统吞吐量,并为用户和应用层序提供一个简单的接口,以便用户和应用程序使用硬件设备。在同一进程中,线程的切换不会引起进程的切换,但从一个进程中的线程切换到另一个进程中的线城市,必然会引起进程的切换。由于资源等因素的限制,进程的执行通常不可能“一气呵成”,而是以“停停走走”的方式运行,这是由于中断技术的引用。

2024-01-27 14:12:44 798

原创 Java基础面试题

在 Java 5 以前,switch(expr)中,expr 只能是 byte、short、char、int。String中的equals方法是被重写过的,因为object的equals方法是比较的对象的内存地址,而String的equals方法比较的是对。它支持面向缓冲的,基于通道的I/O操作方法。this()和super()都指的是对象,所以,均不可以在static环境中使用。hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode()函数。

2024-01-25 15:36:52 881

原创 HTTPS和HTTP

HTTP 超文本传输协议,明文传输的HTTPS 是在 TCP 和HTTP网络层之间 加入 SSL/TLS 安全协议,使得报文能够加密传输HTTPS在TCP 3次握手之后还需要 SSL/TLS 的握手过程,才可以进入加密报文传输HTTPS之中非对称加密用于确认身份,对称加密用于加密传输的数据,哈希值验证数据完整性私钥加签数据,公钥解密加签后的数据公钥加密数据,私钥解密数据。

2024-01-25 15:28:34 426

原创 应用 传输 网络 网络接口

操作系统上层。

2024-01-25 15:27:19 414

原创 tcp保活机制

tcp连接在一个时间段内没有任何活动,保活机制的作用下,隔段时间发送探测报文。

2024-01-24 20:57:51 413

原创 计算机网络面试题

粘包代码解释 <socket编程入门:1天玩转socket通信技术(非常详细)> 客户端发送3次服务端当成1个messge输出客户端发送数据长度不明确,服务端固定长度地接收数据,服务端接收的数据分界线不明确​解决方案 - 拆包策略1. 固定消息长度2. 特殊字符作为边界 (http用的是这个)3. 自定义消息结构。

2024-01-24 20:57:16 570

原创 # 服务器出现大量 TIME_WAIT 状态的原因有哪些

第一个场景:HTTP 没有使用长连接 (Connection: Keep-Alive or Connection:close)第二个场景:HTTP 长连接超时(注意不是请求响应超时,这里指的是tcp连接很久不再使用,比如nginx.keepalive_timeout 60s都没有新的请求就会关闭连接)HTTP 长连接的请求数量达到上限(nginx.keepalive_requests) (比如请求次数超过100次就会关闭该tcp连接)

2024-01-23 10:57:10 406

原创 ---代理ip

HTTP请求一定能获取client的真实ip吗 (可以获取tcp连接的地址remote address)Golang如何实现代理IP (httputils)代理IP和VPN是什么关系 (vpn是正向代理)golang的http.Get底层是如何拨号socket的,accpet的时候如何获取tcp连接的信息。

2024-01-23 10:55:59 438

原创 《信息安全》

模式描述典型应用电码本(CBC)用相同的密钥分别对明文分组独立加密单个数据的安全传输(如一个加密密钥)密文分组链接(CBC)加密算法的输入是上一个密文组和下一个明文组的异或面向分组的通用传播 认证密文反馈(CFB)一次处理s位,上一块密文作为加密算法的输入,产生的伪随机数输出与明文异或作为下一个单元的密文面向数据流的通用传播 认证输出反馈(OFB)与CFB类似,只是加密算法的输入是上一次加密的输出,且使用整个分组噪声信道上的数据流传输(如卫星通信)计数器(CTR)

2024-01-21 21:24:29 888

原创 《数据库》

关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。关系代数的运算对象是关系,运算结果亦为关系。关系系统和关系模型是两个密切相关而有不同的概念。支持关系模型的数据库管理系统称为关系系统。但是关系模型中并非每一部分都是同等重要的,所以我们不苛求完全支持关系模型的系统才能称为关系系统。因此,我们给出一个关系系统的最小要求以及分类的定义。关系系统的定义1.支持关系数据库(关系数据结构)从用户观点看,数据库由表构成,并且只有表这一种结构。

2024-01-21 21:22:27 802

空空如也

空空如也

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

TA关注的人

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