自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(142)
  • 资源 (3)
  • 收藏
  • 关注

原创 HashMap中扩容问题夺命6连问,问到了硬件层,你能顶住吗?

HashMap中扩容为什么是2的n次幂?在进行Hash值计算的时候方便与长度length-1进行按位与操作,相较于取模,速度更快。负数取模存在负数的情况,效率也比较慢。普通计算器是通过硬件的逻辑运算实现加减乘除的。1、加法是基本运算,逻辑关系是异或,即0与0和1与1为0,0与1和1与0为1,得到本位和的值,根据运算要求,确定是否要进位;2、 减法是进行补码加运算,即将减数取反加1,后进行加法运算。实际上加法也是进行补码加运算,只是在数据前用符号为表示,0为正,1为负;3、乘法是采用移位相加,或采

2022-03-16 09:34:19 8208 116

原创 高并发之伪共享和缓存行填充(缓存行对齐)(@Contended)

1.在类中定义看似无用的属性,速度有质的提升伪共享和缓存行填充,我们先看一个例子,让大家感受一下了解底层知识后,你的代码可以快到起飞的感jio:如下是未使用缓存行(Cache Line)填充方法运行的结果,可以看到耗时是329为什么会这么神奇,这里为先提前说下结论,具体的大家可以往后看。缓存一致性是根据缓存行(Cache line)为单元来进行同步的,即缓存中的传输单元为缓存行,一个缓存行大小通常为64Byte;缓存行的内容一发生变化,就需要进行缓存同步;所以虽然用到的不是同一个数据,但是他

2022-03-01 08:53:15 3055 42

原创 面试:精通Java;面试官:来讲一下JVM虚拟机内存模型的最底层原理,必须说详细说清楚,知其所以然。看完后,你还敢在简历上写精通Java吗?

面试简历:精通Java和JVM面试官:来说说JVM虚拟机内存模型的最底层原理,必须说详细说清楚,达到知其所以然的目的。看完后你还敢在简历上写精通Java吗?

2022-02-15 19:07:00 16455 84

原创 CPU和寄存器详解

1.CPU编译器是一个将用用程序语言写的程序翻译成特殊结构的电脑的机器语言的程序。通常,每一种类型的CPU都有它自己唯一的机器语言。这是为什么为Mac写的程序不能在IBM类型PC机运行的一个原因。电脑通过使用时钟来同步指令的执行。时钟脉冲在一个固定的频率(称为时钟频率)。当你买了一台1.5GHz的电脑,1.5GHz就是时钟频率,即每秒15亿次的时钟脉冲。时钟并不记录分和秒。它以不变的速率简单跳动。电子计算机通过使用这个跳动来正确执行它们的操作,就像节拍器的跳动如何来帮助你以正确的节奏播放音乐。一

2022-01-24 20:57:30 10880 5

原创 Bloom Filter布隆过滤器(解决redis缓存穿透)

1.布隆过滤器:布隆过滤器(英语:Bloom Filter)是 1970 年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定,链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢。比如:链表O(n),树O

2022-01-17 18:09:07 5576 12

原创 MySQL的存储引擎(InnoDB与MyISAM)

Mysql 底层数据引擎以插件形式设计,最常见的是 Innodb 引擎和 Myisam 引擎,用户可以根据个人需求选择不同的引擎作为 Mysql 数据表的底层引擎。MyISAM 存储引擎是 MySQL 中常见的存储引擎,虽然性能极佳, 拥有较高的插入,查询速度,但却不支持事务处理(transaction),不支持外键。曾(MySQL 5.5及之前版本)是 MySQL 的默认存储引擎。InnoDB 存储引擎是MySQL的数据库引擎之一,现为MySQL的默认存储引擎,事务型数据库的首选引擎

2021-12-22 20:30:25 2575 26

原创 mysql索引的数据结构为什么用B+树,知其所以然

前提:以下的一些数据结构大家需提前知道,否则看起来会比较有困难,大家也可以按照本文所提到的知识点去主动查阅学习。1.Hash表?No因考虑到在数据检索的过程中经常会有范围的查询(如下),而hash表不能提供这种功能。SELECT * FROM hero WHERE age>5 AND age<20;使用哈希算法实现的索引虽然可以做到快速检索数据,但是没办法做数据高效范围查找,因此哈希索引是不适合作为 Mysql 的底层索引的数据结构。2.二叉查找树(BST)?No二叉查找树(Bi

2021-12-20 17:16:34 2786 11

原创 Java多线程那些事,对Java并发编程2w余字的总结,超详细(从入门到完全掌握)

1.前言现代操作系统(Windows,macOS,Linux)都可以执行多任务。多任务就是同时运行多个任务,例如:在听歌的时候同时打游戏,并且时不时还回复一下微信或者qq。操作系统是如何做到这些的呢?原来CPU执行代码都是一条一条顺序执行的,但是,即使是单核cpu,也可以同时运行多个任务。因为操作系统执行多任务实际上就是让CPU对多个任务轮流交替执行;例如,让游戏执行0.001秒,让微信或者qq执行0.001秒,再让音乐播放器执行0.001秒,在人看来,CPU就是在同时执行多个任务。并且即使是多核CP

2021-11-22 15:18:50 5181 41

原创 常见的几种限流算法

固定窗口算法实现简单,性能高,但是会有临界突发流量问题,瞬时流量最大可以达到阈值的2倍。为了解决临界突发流量,可以将窗口划分为多个更细粒度的单元,每次窗口向右移动一个单元,于是便有了滑动窗口算法。滑动窗口当流量到达阈值时会瞬间掐断流量,所以导致流量不够平滑。想要达到限流的目的,又不会掐断流量,使得流量更加平滑?可以考虑漏桶算法!需要注意的是,漏桶算法通常配置一个FIFO的队列使用以达到允许限流的作用。由于速率固定,即使在某个时刻下游处理能力过剩,也不能得到很好的利用,这是漏桶算法的一个短板。

2022-10-24 23:44:20 3757 4

原创 JVM之垃圾回收算法和垃圾回收器(大厂收割机)

三种颜色假设现在有白、灰、黑三个集合(表示当前对象的颜色),其遍历访问过程为:什么是根?根就可以理解为,标记清除(Mark-Sweep)标记压缩(标记清除的升级)(Mark-Compact)复制算法(Coping)三种算法在垃圾回收器中搭配使用。目前的垃圾回收器总共十种:其中serial和serial old有stop the world 简称stw,即停止其他业务线程,只进行垃圾回收线程的执行;并且是单线程的。serial是单线程的,如下:ps和po是多线程的,如下图:ParNew与ps、po区别不大,也

2022-06-21 10:35:16 1848 17

原创 微服务(三)之负载均衡(服务端和客户端)

通过心跳检测来剔除故障的服务端节点以保证清单中都是可以正常访问的服务端节点。当客户端发送请求到负载均衡设备的时候,该设备按某种算法(比如线性轮询、按权重负载、按流量负载等)从维护的可用服务端清单中取出一台服务端端地址,然后进行转发。目前Dubbo和Ribbon是客户端负载均衡。客户端负载均衡是在spring-cloud分布式框架组件Ribbon中定义的。我们在使用spring-cloud分布式框架时,同一个service大概率同时启动多个,Ribbon通过策略决定本次请求使用哪个service的方式就是客户

2022-06-12 03:07:38 2852 30

原创 JVM详解基础篇之执行引擎(玩转Java,游刃有余)

文章目录前言1.两种执行器1.1、解释器(Interpreter)1.2、JIT即时编译器(Just In Time Compiler)2.热点代码探测技术2.1 栈上替换OSR(On Stack Replacement)2.2方法调用计数器与回边计数器2.2.1方法调用计数器2.2.2回边计数器3.热度衰减4.其他的热点探测技术4.1采样探测4.2踪迹探测4.3三种探测技术的对比5.通过JVM参数指定执行模式6.热机与冷机7.编译器的种类7.1、C1编译器(Client Compiler)7.2、C2编译

2022-05-24 07:30:00 1421 19

原创 Java架构师必经之路:类和对象的加载过程原理(上篇)

1.类加载的结论和代码演示顺序:父类静态属性(可以是对象)和静态代码块,看其在类中的先后顺序子类静态属性和静态代码块 ,看其在类中的先后顺序父类非静态属性和非静态代码块 ,看其在类中的先后顺序父类构造方法子类非静态属性和非静态代码块 ,看其在类中的先后顺序子类构造方法难点:与前面的过程分开讲解,类中的静态属性是自己,这个时候应该如何加载呢?即如下的第一行代码:class Root { public static Root s = new Root(

2022-05-13 10:09:17 1400 28

原创 Java并发包(JUC)中的信号量Semaphore详解,深入浅出Semaphore

🍋🔥 🍑🚀支持博主:点赞👍、收藏⭐、留言💬 🐾目录1.🍅Semaphore简介1.1🍑Semaphore是什么1.2🍑Semaphore的作用2.🍅Semaphore中的方法(我们在之后的章节中会详细讲解,读者可以先大致看一下)3.🍅acquire()方法和release()方法3.1🍑构造方法、acquire()方法和release()方法简介3.2🍑Semaphore构造器中控制线程并发量为一(某段时间内只能并发一个线程)3.3🍑Semaphore构造器中控制线程并发量为二(只能并发两个线程,即两个线

2022-05-04 22:17:31 1987 8

原创 高频算法题冒险之旅精讲(一)之LeetCode小牛试刀五道题

前言:本次算法冒险之旅将围绕LeetCode上面的算法面试题汇总进行讲解,该部分的题型在面试或笔试中出现的频率很高。如下是本次冒险之旅的目录:本篇文章讲解冒险之旅开始前的五道题,让大家感受一下算法的魅力,之后笔者会逐一进行讲解如下的每一章节,每一个大标题都会写一篇文章,算是对其进行剖析和详细汇总。在进入正题之前,不妨先让我们回顾几个有意思的经典互联网公司的面试题目,热热身。1.只出现一次的数字1.1题目:1.2解题思路及完整Java代码根据题目所给出的信息,我想到的map或者set去解决

2022-03-25 20:07:24 2602 58

原创 微服务(二)之有HTTP协议,为何还需要在RPC中使用自定义的协议?

既然有http为何还有RPCHTTP的REST风格的调用:REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。在微服务的设计中,一个服务A如果访问另一个服务B,可以采用HTTP REST传输数据,并在两个服务之间进行序列化和反序列化操作,服务B把执行结果返回过来。我们的前后端分离开发也

2022-03-25 17:34:25 5517 36

原创 必踩的坑之Java方法中形参、实参传递

首先亮明Java中方法参数传递的规则,这两点很重要:如果实参是基本类型(包括包装类型)或者String,则实参不会变(传的是值);如果实参是对象集合或者数组,则实参会改变(传的是引用)。

2022-03-24 12:02:13 4909 74

原创 保姆级教程从零搭建云服务器(小彩蛋,请大家看烟花秀)

1. 云服务器和轻量应用服务器的区别首先看如下截图:可以看到第一个ESC共享型n4和第三个轻量应用服务器是有区别的,第三个多了月流量包的提示,这个是肿么回事呢?原因是因为第一个是云服务器,它对于流量没有限制,而第二个是轻量应用服务器,它每个月对流量会有一个限制,就和我们电话卡的流量一样,超过了之后会额外收取费用。他们的具体介绍如下:1.1轻量应用服务器面向单机应用场景的新一代计算服务,提供应用一键部署、一站式域名解析、网站发布、安全、运维、应用管理等服务。所以说轻量应用服务器极大地优化了搭建简

2022-03-11 09:27:18 33239 116

原创 微服务(一)之分布式、微服务小结

1.微服务和分布式是什么?首先我们必须清楚:微服务是架构设计方式;分布式有两种概念,即可指架构设计方式也可指系统部署方式。总结就是微服务分散能力 ;分布式分散压力下面为们具体讲解:1.1分布式分布式的核心思想就是拆。1.1.1分布式系统部署方式把服务进行拆分,分别部署到不同的机器上。分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系

2022-03-08 09:19:22 5099 58

原创 高并发之volatile、synchronized关键和内存屏障(Memory Barrier)

我们都知道在Java中,如果不使用volatile和synchronized指令可能会发生重排,指令重排分为编译器指令重排和CPU指令重排。- Java多线程程序通常使用高层程序设计语言中的同步原语,比如volatile和synchronized,因此一般不需要明确使用内存屏障。- 也就是说在Java中我们使用的是volatile和synchronized关键字,javac编译转化成字节码的时候,还是用到了内存屏障。

2022-03-04 08:44:13 2375 48

原创 技术经理给我安排了一个上古时期的Tomcat项目,Tomcat中的bat批处理脚本源码分析,还好我是练过的,基础的底层知识掌握得妥妥滴

根据上面的2.1 、2.2、2.3的分析,我们现在总结一下:bin目录下的startup.bat—调用—>catalina.bat—调用—>setclasspath.bat说明:tomcat的startup.bat脚本主要用来判断环境,找到catalina.bat脚本源路径,将启动命令参数传递给catalina.bat执行;setclasspath.bat检查各种变量是否赋值,验证tomcat启动停止需要涉及到的文件,保障tomcat顺利启动停止;catalina.bat脚本使用了大量的判断,使

2022-02-24 17:15:18 2466 22

原创 “了解高并发底层原理”,面试官:讲一下MESI(缓存一致性协议)吧

本期围绕着,什么是(Who),为何来(How),是什么(What),这三点内容来进行讲解该协议。1.什么是(Who):MESI(Modified Exclusive Shared Or Invalid)协议是基于Invalidate的高速缓存一致性协议,并且是支持回写高速缓存的最常用协议之一。 它也被称为伊利诺伊州协议(由于其在伊利诺伊大学厄巴纳 - 香槟分校的发展)。用于解决缓存一致的问题。2.为何来(How):2.1缓存不一致带来的后果如上图,数据加载的流程如下:(从内存到寄存器)将

2022-02-22 09:10:21 2615 28

原创 JS隐式类型转换

转换规则表:减乘除:在对各种非Number类型运用数学运算符(- * /)时,会先将非Number类型转换为Number类型。加:当一侧为String类型,被识别为字符串拼接,并会优先将另一侧转换为字符串类型。当一侧为Number类型,另一侧为原始类型,则将原始类型转换为Number类型。当一侧为Number类型,另一侧为引用类型,将引用类型和Number类型转换成字符串后拼接。== 比较NaN和其他任何类型比较永远返回false(包括和他自己)。Bo

2022-02-09 21:15:26 1943 1

原创 Abstract Factory抽象工厂模式(Java代码实现)——创建型模式

在本人所编写的关于23种设计模式的文章中,前言基本上都是一样的,读者可以从章节2开始阅读,本篇是关于创建型模式中抽象工厂模式(Abstract Factory Pattern)的详解。文章目录1.前言1.前言根据Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用面向对象软件的基础) 一书,四位作者把设计模式分为三大类,分别如下:1.创建型模式这些设计模式提供了一种在创建对象的同时隐藏创建逻辑

2022-02-05 01:24:17 1557 1

原创 Factory Method工厂方法模式(Java代码实现)——创建型模式

对于MessageDigest.getInstance()方法也是如此,比如我们可以通过`MessageDigest.getInstance("MD5");`来获取MD5算法。并且在Effective Java一书中,第二章第一条就是`用静态工厂方法代替构造器`。

2022-02-04 00:48:55 1710 14

原创 用户代码和操作系统代码是如何在CPU上面运行的(用户态和内核态)

1.CPU的四种状态与操作系统的两种状态(用户态和内核态)首先我们要知道CPU有四种状态,分别为编号为0(特权最大)到3(特权最小),以及3个受保护的主要资源:内存、I/O端口和执行某些机器指令的能力。操作系统它基于CPU之上,只用到了CPU的两种状态,一个内核态,一个用户态,内核态运行在CPU的第 0 等级,用户态运行在CPU的第 3 等级。2.操作系统的用户态和内核态之间的切换首先内核态与用户态是操作系统的两种运行级别,跟intel cpu没有必然的联系, intel cpu提供Ring

2022-01-20 20:36:56 4338 11

原创 redis常用命令总结,一文足以(5种基本数据结构+bitmap+Geo+HyperLogLog+Streams)

与mysql 的区别MySQL数据库需要自己去创建数据库,Redis数据库不用自己创建数据库,默认情况下有0-15号数据库Redis数据库没有表,数据是以key-value键值对的形式存在数据库下1.对数据库的操作:select:选择切换数据库例如:select 6dbsize:查看当前数据库key的数量flushdb:清空当前数据库flushall:清空所有数据库2.key健的操作:keys pattern:查找所有符合给定模式( pattern)的key例如:keys *:查看当

2022-01-19 14:55:06 2104 4

原创 Git底层原理与相关操作

本地Git相关知识工作区、版本库、暂存区:如上图,左侧为工作区,在电脑中能看到的部分;右侧为版本库,工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库,如下图第一个红框;在版本库中标记为 “index” 的区域是暂存区,英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index),如下图第二个红框。分支:标记为 “master” 的是 master 分支所代表的目录树,我

2022-01-11 09:21:38 1104 9

原创 Windows上快速安装WSL2教程

windows下以管理员身份打开PowerShell,运行以下命令行:1.启用WSLdism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart2.启用“虚拟机平台”WSL 2 需要启用 Windows 10 的“虚拟机平台”特性。它独立于 Hyper-V,并提供了一些在 Linux 的 Windows 子系统新版本中可用的更有趣的平台集成。dism.exe /onl

2021-12-29 14:22:23 7062 3

原创 Java解析XML(DOM解析和SAX解析)

前言:在程序中访问和操作XML文件一般有两种模型:DOM(文档对象模型)和流模型;在本篇文章中分别对应DOM解析和SAX解析。1 .DOM解析与SAX解析的相关知识点1.1 DOM文档对象模型(Document Object Model,简称DOM),是W3C制定的标准接口规范,是一种处理HTML和XML文件的标准API。将HTML或XML文档转化为DOM树的过程称为解析(parse)。HTML文档被解析后,转化为DOM树,因此对HTML文档的处理可以通过对DOM树的操作实现。DOM模型不仅描述了

2021-12-15 10:49:02 1607 45

原创 DOM方式解析XML的时候encoding属性的作用

目录1.规定2实际DOM解析的时候或者是浏览器解析XML的规则2.1如果出现以下几种情况XML解析将会出错:(用上述规则进行分析)2.2出现如下几种情况正常解析3.Dom4j解析中的编码4.这里对BOM说明一下(了解的同学可跳过该部分)1.规定W3C定义了三条XML解析器如何正确读取XML文件的编码的规则:如果文本文件头部有BOM(Byte Order Mark),即字节顺序标记(它是在Unicode编码标准中用于标识文件是采用哪种格式的编码),就按照BOM来。如果没有BOM,就查看XML声明的编

2021-12-14 13:57:23 1969

原创 加解密,加签、验签也就这肥事

1.非对称加密非对称加密技术,需要两个秘钥,公钥和私钥。公钥和私钥成对出现。常见算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)等。1.1.加密加签、解密解签完整流程下图为本人用processon画的图:1.2.为何只能用公钥进行加密、解签,私钥解密、加签加签的目的:验证信息的发送方是否正确,信息是否被其他人篡改。之所以用发送方的私钥加签,是因为,即便信息被黑客拦截,黑客修改了信息,但是加签需要用发送方的私钥,黑客没有发送方的私

2021-12-09 15:54:06 3928 30

原创 3.无重复字符的最长子串

算法简介滑动窗口,顾名思义,就是有一个大小可变的窗口,左右两端方向一致的向前滑动(右端固定,左端滑动;左端固定,右端滑动)。可以想象成队列,一端在push元素,另一端在pop元素,如下所示:假设有数组[a b c d e f g h]一个大小为3的滑动窗口在其上滑动,则有:[a b c][b c d][c d e][d e f][e f g][f g h]适用范围1、一般是字符串或者列表2、一般是要求最值(最大长度,最短长度等等)或者子序列算法思想1、在序列中使用双指针中的左右

2021-12-03 10:21:30 1163

原创 TimeUnit类详解

其类作者Doug Lea在其javadoc中写道:A TimeUnit represents time durations at a given unit of granularity and provides utility methods to convert across units, and to perform timing and delay operations in these units. A TimeUnit does not maintain time information, bu

2021-11-24 12:22:03 3264

原创 C++编译过程详解(图文)

1.编译过程详解2.动态链接和静态链接2.1静态链接静态库 在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。静态库可以简单看成是一组目标文件(.o .obj文件)的集合, 将若干个.o文件转换为静态库的过程,称之为打包. Linux下是使用ar工具, Windows下是使用lib.exe。Linux下动态链接库的后缀是.lib;Windows下动态链接库的后缀是.a。2.2动态链接动态库在程序编译时并不会被连接

2021-11-09 14:52:39 4218

原创 Java中关于win下的环境变量以及不同版本JDK自由切换的原理分析,授人以渔

一. 不同版本JDK自由切换须知点:下载JDK之后,系统会自动将java.exe,javaw.exe,javaws.exe三个可执行文件复制到了 [C:\Windows\System32或C:\Program Files (x86)\Common Files\Oracle\Java\javapath或C:\Program Files\Common Files\Oracle\Java\javapath或C:\ProgramData\Oracle\Java\javapath]中,由于这个目录在windows

2021-09-27 16:08:41 735

原创 Java中native方法read()可以人为的去输入-1让文件读取的时候还没到末尾提前结束读取吗?

InputStream就是Java标准库提供的最基本的输入流。它位于java.io这个包里。java.io包提供了所有同步IO的功能。要特别注意的一点是,InputStream并不是一个接口,而是一个抽象类,它是所有输入流的超类。这个抽象类定义的一个最重要的方法就是int read(),起方法在源码中定义如下:我们如下以FileInputStream类为例,来结束read()方法,在FileInputStream类中,read()方法调用了read0()方法,而read0()方法才是我们标题中提到的n

2021-09-26 22:58:41 664

原创 base64编码底层转换规则举例解读

一.作用Base64就是一种基于64个可打印字符来表示二进制数据的方法,把一些不可打印的字符转换成全部都是可打印的字符。ps:关于ASCII编码(含扩展ASCII)中,打印字符和不可打印字符:https://blog.csdn.net/MrYushiwen/article/details/107998062二.base64编码转换表(64个可打印字符)总共64个可打印字符,从0开始到63结束。三.base64举例说明全过程1.规则关于这个编码的规则:把3个字节变成4个字节,6位为一组,高

2021-09-13 14:51:11 2884 15

原创 2.两数相加

题目:分析:链表中所给的数中,都是按照逆序排序的,也就是说高位在后面,低位在前面,到时候两数相加涉及到低位向高位进位的问题,可以定义一个进位标识。实现:public class TwoNumAdd { //解题主方法 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode head = null, tail = null; //标记头尾,头部最后用来输出,尾部用来连接其他节

2021-08-24 21:20:18 980

原创 1.两数之和

题目:分析:题目中已经提示了每种输入只会对应一个答案,也就是说这个数组是一个比较特殊的数组,数组中两个数相加得到的目标值target是唯一的,不可能存在多对两个数相加得到同一个目标值target,也就是说我们得到了两个数相加的值等于target了,这个时候我们可以直接返回,因为每种输入只会对应一个答案,后面不会存在其他两个数相加等于目标值target的情况。蛮力解法:public class TwoSum { public int[] twoSum(int[] nums, int targ

2021-08-24 11:06:46 537

动态烟花原代码Demo

烟花Demo,html文件

2022-03-21

dom4j-1.6.1.zip

dom4j-1.6.1文件用于Dom4j技术解析XML

2021-01-26

spring入门相关jar包

spring入门相关jar包,相关jar包为: commons-logging-1.2.jar spring-beans-5.2.6.RELEASE.jar spring-context-5.2.6.RELEASE.jar spring-core-5.2.6.RELEASE.jar spring-expression-5.2.6.RELEASE.jar

2020-11-21

空空如也

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

TA关注的人

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