自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【腾讯云 Cloud Studio 实战训练营】使用python爬虫和数据可视化对比“泸州老窖和五粮液4年内股票变化”

是腾讯云发布的云端,支持开发者利用Web IDE(集成开发环境),实现远程协作开发和应用部署。目前,Cloud Studio 全面支持Java Spring Boot、Python、Node.js等丰富的开发模版示例库,具备在线开发、调试、预览、端口自动识别等能力。同时,Cloud Studio已经在内测集成在线开发协作模块,在下一个版本中,会全量开放,让开发者能够随时随地设计、讨论和开发。

2023-09-05 15:40:48 2268 1

原创 GIT——.gitignore文件

git 提交时忽略的文件。

2023-08-23 10:13:21 2261

原创 Liunx——Centos 8.5.2111 重新安装yum

【代码】Liunx——Centos 8.5.2111 重新安装yum。

2023-08-14 15:20:46 2444

原创 SpringBoot——如何运行Python脚本并返回数据

当然,你也可以使用其他的数据交换方式,如在文件中写入数据,让Java代码读取文件,或者使用Socket进行通信等,具体取决于你的需求和场景。通过这种方式,可以将参数传递给Python脚本并在脚本中进行处理。运行Java代码时,参数将被传递给Python脚本,并显示在Java控制台上。要让Python脚本返回数据给调用它的Java代码,你可以在Python脚本中使用打印或输出函数将结果输出到标准输出(stdout)中。获取Python脚本的输出,然后可以将返回的数据进行进一步的处理。是第一个参数,以此类推。

2023-08-11 08:51:52 3033

原创 Java——list.stream().filter(item -> item.getType().equals(“type”)).findFirst()报空指针

在Java中使用。

2023-08-08 17:42:00 5261 1

原创 SpringBoot——如何读写使用JSON文件保存的数据

这个对象将被转换为JSON格式并写入文件。方法接受两个参数:文件对象和要将JSON数据转换为的对象类型。库是处理JSON的Java库,可以轻松地将对象转换为JSON字符串,并将其写入文件。方法接受两个参数:文件对象和要写入文件的对象。要将数据写入JSON文件,可以使用Spring Boot中提供的。文件中读取列表数据,并将每个人的姓名和年龄打印到控制台。类将对象转换为JSON字符串,并将其写入文件。类来读取JSON文件并将其转换为Java对象。类来读取JSON文件并将其转换为对象列表。

2023-08-08 17:33:45 3957

原创 Java——PriorityQueue使用forEach输出元素乱序并实现逆序输出

你可以创建一个自定义的比较器类,然后在创建对象时将该比较器作为参数传入。比较器将比较两个元素的值,并根据需要对它们的顺序进行调整。// 创建自定义的比较器 Comparator < Double > reverseComparator = new Comparator < Double >() {// 逆序比较 } };

2023-08-07 10:39:09 2471

原创 Java——如何使用Stream替换掉List<Student>中符合要求的元素

然后,我们使用map()方法对流中的每个学生对象进行操作。在此示例中,我们使用Lambda表达式来检查学生对象的年龄是否大于等于25,如果是,则将姓名设置为"Updated Name"。要使用Stream流替换掉List中符合特定条件的元素,您可以使用Stream的map()方法对每个元素进行映射,并使用collect()方法将映射后的元素收集到一个新的List中。最后,我们使用collect()方法将更新后的学生对象收集到一个新的List中,并使用forEach()方法将更新后的学生列表打印出来。

2023-08-04 11:12:10 4090

原创 SpringBoot——使用@Value()注解获取yml字段为null

注解来注入配置值,很可能会出现字段为null的情况。这是因为在字段静态化的情况下,Spring框架无法将配置值注入到静态字段中,因为Spring的依赖注入是在实例化bean时进行的。需要注意的是,使用静态字段可能会引入其他线程安全和并发性问题,请根据具体情况慎重使用静态字段。方法,它在应用启动时被调用,并打印出配置文件中读取到的属性值。注解表示在实例化bean之后,由Spring容器调用的方法。注解来读取和赋值YAML配置文件中的值到变量中。方法中,我们将属性的值赋给静态字段。在上述示例中,我们使用。

2023-08-04 11:06:37 3798

原创 Mysql——三大范式

范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。

2023-07-14 09:33:29 2276

原创 Python中np.where()的使用

是NumPy库中一个非常有用的函数,用于根据指定的条件返回一个向量或数组中满足条件的元素的位置。大小相同的数组,其中满足条件的元素用。替代,不满足条件的元素用。

2023-07-06 10:48:31 4677

原创 牛客——二叉搜索树与双向链表

数据范围:输入二叉树的节点数 0≤n≤1000,二叉树中每个节点的值 0≤val≤1000。输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求:空间复杂度O(1)(即在原树上操作),时间复杂度 O(n)双向链表的其中一个头节点。

2022-10-28 17:49:29 2300 1

原创 TCP——三次握手和四次挥手

去向ACK消息最大存活时间(MSL)+ 来向FIN消息的最大存活时间(MSL)第一,保证客户端发送的最后一个ACK报文能够到达服务器第二,释放的端口可能重连刚断开的服务器端口,这样依然存活在网络里的老的TCP报文可能与新的TCP连接报文冲突。

2022-10-27 21:32:54 2529

原创 Java基础——HashMap特征

此时线程t2调用了put,put了一个新值,最后table[bucketIndex] = t2的新值,当t1再次拿到时间片段继续执行,此时table[bucketIndex] = t1的新值,而t1的新值的next却还是之前的数据所以T2存的值就丢失了。当链表长度超过树化阈值 8 时,先尝试扩容来减少链表长度,如果数组容量已经 >=64,才会进行树化。当HashMap中的元素为总容量的3/4是进行扩容操作,扩容为原来的两倍。注:这个e就是新创建的Entry的next的值。值得注意的是:链表长度可能超过8。

2022-10-26 20:45:32 2448

原创 数据结构——B树和B+树

一旦定位到磁道后,盘片转动,磁道上的每个位经过磁头时,读写磁头就可以感知到该位的值,也可以修改值。由于B树的每一个节点都包含key和value,因此我们根据key查找value时,只需要找到key所在的位置,就能找到 value,但B+树只有叶子结点存储数据,索引每一次查找,都必须一次一次,一直找到树的最大深度处,也就是叶子结点的深度,才能找到value。在数据库的操作中,查询操作可以说是最频繁的一种操作,因此在设计数据库时,必须要考虑到查询的效率问题,在很多数据库中,都是用到了B+树来提高查询的效率;

2022-10-19 08:00:00 3419 2

原创 Java基础——内部类

将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。可以把内部类理解成寄生,外部类理解成宿主。匿名内部类:是内部类的简化写法。他是一个隐含了名字的内部类。开发中,最常用到的内部类就是匿名内部类了。

2022-10-18 09:00:00 2475

原创 基础篇——单例模式

双重检查锁模式是一种非常好的单例实现模式,解决了单例、性能、线程安全问题,上面的双重检测锁模式看上去完美无缺,其实是存在问题,在多线程的情况下,可能会出现空指针问题,出现问题的原因是JVM在实例化对象的时候会进行优化和指令重排序操作。枚举类实现单例模式是极力推荐的单例实现模式,因为枚举类型是线程安全的,并且只会装载一次,设计者充分的利用了枚举的这个特性来实现单例模式,枚举的写法非常简单,而且枚举类型是所用单例实现中唯一一种不会被破坏的单例实现模式。instance对象是随着类的加载而创建的。

2022-10-16 11:20:01 2241

原创 数据结构——红黑树的特性及实现

红黑树是含有红黑链接并满足下列条件的二叉查找树:红链接均为左链接;没有任何一个结点同时和两条红链接相连;该树是完美黑色平衡的,即任意空链接到根结点的路径上的黑链接数量相同;

2022-10-16 09:00:00 2356 1

原创 数据结构——2-3查找树特性

一棵2-3查找树要么为空,要么满足满足下面两个要求:2-结点含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。3-结点含有两个键(及其对应的值)和三条链,左链接指向的2-3树中的键都小于该结点,中链接指向的2-3树中的键都位于该结点的两个键之间,右链接指向的2-3树中的键都大于该结点。

2022-10-15 19:48:46 2274

原创 基础篇——ArrayList VS LinkedList

如果按 内容 进行查询LinkedList 和ArrayList 时间复杂度相同都是。LinkedList 没有实现 RandomAccess 接口。ArrayList 实现了 RandomAccess 接口。ArrayList 用时比 LinkedList 短。头部插入性能对比(LinkedList胜)中间插入性能对比(ArrayList胜)LinkedList:占用内存多。RandomAccess 接口。ArrayList:占用内存少。尾部插入性能对比(不相伯仲)

2022-10-15 11:36:22 2732

原创 基础篇——ArrayList扩容机制

的是,一下所有代码中用反射方式来更直观地反映 ArrayList 的扩容特征,但从 JDK 9 由于模块化的影响,对反射做了较多限制,需要在运行测试代码时添加 VM 参数。extends E> c) 源码。ArrayList(int initialCapacity)源码。演示扩容10次的ArrayList的长度。无参构造ArryList()ArrayList()源码。有初始容量(10) 时扩容。

2022-10-14 19:41:13 6687

原创 基础篇——快速排序

j 指针负责找到比基准点小的元素,一旦找到则与 i 进行交换。i 指针维护小于基准点元素的边界,也是每次交换的目标索引。最后基准点与 i 交换,i 即为分区位置。基准点在左边,并且要先 j 后 i。选择最右元素作为基准点元素。数据量较大时,优势非常明显。

2022-10-12 18:26:33 2654

原创 基础篇——二分查找

有一个有序表为 1,5,8,11,19,22,31,35,40,45,48,49,50 当二分查找值为 48 的结点时,查找成功需要比较的次数。使用二分法在序列 1,4,6,7,15,33,39,50,64,78,75,81,89,96 中查找元素 81 时,需要经过( )次比较。③ A[M] < T,中间值左侧的其它元素都小于 T,无需比较,中间索引右边去找, M + 1 设置为左边界,重新查找。对于前两个题目,记得一个简要判断口诀:奇数二分取中间,偶数二分取中间靠左。当 l 和 r 都较大时,

2022-10-11 17:01:19 2299

原创 Linux——Docker安装及配置RocketMQ

【代码】Linux——Docker安装及配置RocketMQ。构建namesrv容器docker run -d \--restart=always \--name rmqnamesrv \-p 9876:9876 \-v /docker/rocketmq/data/namesrv/logs:/root/logs \-v /docker/rocketmq/data/namesrv/store:/root/store \-e "JAVA_OPT_EXT=-server -Xms

2022-09-22 20:55:56 4348

原创 Jvm——垃圾回收

只有所有 GC Roots 对象都不通过【强引用】引用该对象,该对象才能被垃圾回收。定义: Mark Sweep。

2022-09-14 20:44:01 2286

原创 设计模式——概述、UML图、原则

"设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ralph Johnson)

2022-07-10 14:22:38 2368

原创 MySql——存储引擎

1). 连接层2). 服务层3). 引擎层4). 存储层和其他数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎上,插件式的存储引擎架构,将查询处理和其他的系统任务以及数据的存储提取分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。1). 建表时指定存储引擎2). 查询当前数据库支持的存储引擎示例演示:A. 查询建表语句 — 默认存储引擎: InnoDBB. 查询当前数据库支持的存储引擎C. 创建表 my_myisam , 并指定M

2022-07-03 11:31:30 2286

原创 Linux——ifconfig中没有ens33 连接不上Xshell

1、ifconfig 只有lo、virbr0,却没有ens332、上述命令执行后,ifconfig 是有ens33的了,但它里面没有ip然后激活连接接着重启网络再次连接即可连接成功

2022-06-16 21:53:03 2543

原创 LeetCode——532. 数组中的 k-diff 数对

给定一个整数数组和一个整数 k,你需要在数组里找到 不同的 k-diff 数对,并返回不同的 k-diff 数对 的数目。这里将 k-diff 数对定义为一个整数对 ,并满足下述全部条件:注意, 表示 的绝对值。示例 1:示例 2:示例 3:提示:官方答案方法一:哈希表思路遍历数组,找出符合条件的数对。因为是寻找不同的数对,所以可以将数对放入哈希表 res,完成去重的效果,最后返回哈希表的长度即可。遍历数组时,可以将遍历到的下标当作潜在的 j,判断 j 左侧是否有满足条件的 i 来构成 k-diff

2022-06-16 09:20:27 2310

原创 LeetCode——面试题 04.06. 后继者

面试题 04.06. 后继者题目描述答案我的答案官方答案中序遍历题目描述设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例 1:示例 2:答案我的答案/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right;

2022-05-16 16:14:32 2262

原创 LeetCode——面试题 01.05. 一次编辑

面试题 01.05. 一次编辑题目描述答案我的答案官方答案分情况讨论题目描述字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入:first = “pale”second = “ple”输出: True示例 2:输入:first = “pales”second = “pal”输出: False答案我的答案class Solution { public boolean

2022-05-13 11:53:13 2298

原创 LeetCode——944. 删列造序

944. 删列造序题目描述答案我的答案官网答案直接遍历题目描述给你由 n 个小写字母字符串组成的数组 strs,其中每个字符串长度相等。这些字符串可以每个一行,排成一个网格。例如,strs = ["abc", "bce", "cae"] 可以排列为:abcbcecae你需要找出并删除 不是按字典序升序排列的 列。在上面的例子(下标从 0 开始)中,列 0('a', 'b', 'c')和列 2('c', 'e', 'e')都是按升序排列的,而列 1('b', 'c', 'a')不是,所以要删

2022-05-12 21:56:38 2251

原创 LeetCode——449. 序列化和反序列化二叉搜索树

449. 序列化和反序列化二叉搜索树题目描述答案我的答案官方答案后序遍历题目描述序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。设计一个算法来序列化和反序列化 二叉搜索树 。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。编码的字符串应尽可能紧凑。示例 1:输入:root = [2,1,3]输出:[2,1,3]

2022-05-11 18:52:18 2304

原创 LeetCode——942. 增减字符串匹配

942. 增减字符串匹配题目描述答案我的答案官方答案方法一:贪心题目描述由范围 [0,n] 内所有整数组成的 n + 1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中:如果 perm[i] < perm[i + 1] ,那么 s[i] == 'I' 如果 perm[i] > perm[i + 1] ,那么 s[i] == 'D'给定一个字符串 s ,重构排列 perm 并返回它。如果有多个有效排列perm,则返回其中 任何一个 。示例 1:输入:s = “IDI

2022-05-09 14:01:04 2251

原创 LeetCode——442. 数组中重复的数据

442. 数组中重复的数据题目描述答案我的答案官方答案方法一:将元素交换到对应的位置方法二:使用正负号作为标记题目描述给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。示例 1:输入:nums = [4,3,2,7,8,2,3,1]输出:[2,3]示例 2:输入:nums =

2022-05-08 17:01:58 2836

原创 LeetCode——933. 最近的请求次数

933. 最近的请求次数题目描述答案我的答案官网答案队列题目描述写一个 RecentCounter 类来计算特定时间范围内最近的请求。请你实现 RecentCounter 类:RecentCounter() 初始化计数器,请求数为 0 。int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。保证 每次对 ping 的调用都使用比之前

2022-05-06 23:26:51 2271

原创 LeetCode——1823. 找出游戏的获胜者

1823. 找出游戏的获胜者答案我的答案官网答案方法一:模拟 + 队列方法二:数学 + 迭代共有 n 名小伙伴一起做游戏。小伙伴们围成一圈,按 顺时针顺序 从 1 到 n 编号。确切地说,从第 i 名小伙伴顺时针移动一位会到达第 (i+1) 名小伙伴的位置,其中 1 <= i < n ,从第 n 名小伙伴顺时针移动一位会回到第 1 名小伙伴的位置。游戏遵循如下规则:从第 1 名小伙伴所在位置 开始 。沿着顺时针方向数 k 名小伙伴,计数时需要 包含 起始时的那位小伙伴。逐个绕圈进行计数,

2022-05-04 23:49:12 2193

原创 LeetCode——937. 重新排列日志文件

937. 重新排列日志文件答案我的答案官网答案自定义排序给你一个日志数组 logs。每条日志都是以空格分隔的字串,其第一个字为字母与数字混合的 标识符 。有两种不同类型的日志:字母日志:除标识符之外,所有字均由小写字母组成数字日志:除标识符之外,所有字均由数字组成请按下述规则将日志重新排序:所有 字母日志 都排在 数字日志 之前。字母日志 在内容不同时,忽略标识符后,按内容字母顺序排序;在内容相同时,按标识符排序。数字日志 应该保留原来的相对顺序。返回日志的最终顺序。示例 1:

2022-05-04 00:07:52 2260

原创 LeetCode——1305. 两棵二叉搜索树中的所有元素

1305. 两棵二叉搜索树中的所有元素题目描述答案我的答案官方答案中序遍历 + 归并题目描述给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表,其中包含 两棵树 中的所有整数并按 升序 排序。.示例 1:输入:root1 = [2,1,4], root2 = [1,0,3]输出:[0,1,1,2,3,4]示例 2:输入:root1 = [1,null,8], root2 = [8,1]输出:[1,1,8,8]提示:每棵树的节点数在 [0, 5000] 范围内-1

2022-05-01 23:29:49 2375

原创 LeetCode——908. 最小差值 I

908. 最小差值 I题目描述答案我的答案官方答案数学思路与算法代码复杂度分析题目描述给你一个整数数组 nums,和一个整数 k 。在一个操作中,您可以选择 0 <= i < nums.length 的任何索引 i 。将 nums[i] 改为 nums[i] + x ,其中 x 是一个范围为 [-k, k] 的整数。对于每个索引 i ,最多 只能 应用 一次 此操作。nums 的 分数 是 nums 中最大和最小元素的差值。在对 nums 中的每个索引最多应用一次上述操作后,返回 n

2022-04-30 17:29:36 2297

空空如也

空空如也

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

TA关注的人

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