- 博客(93)
- 收藏
- 关注
原创 【无标题】
985/211高校经验贴与真题:上百位名校保研上岸er根据亲身经历倾力打造,覆盖夏令营、预推免、笔试面试资料,帮你精准备考。专业课复习资料:覆盖数据结构、操作系统、计算机网络、离散数学、软件工程等核心课程,帮你夯实基础。面试常见问题:提前准备,轻松应对面试官的科研问题、简历问题、压力面试等各种“灵魂拷问”。硕博导师情报圈:近万条导师选择经验+套磁模板,帮你找到适合的导师并成功套磁。联系导师邮件模板:用专业的邮件打动导师,赢得机会。简历模板:简洁大方,突出亮点,让导师一眼相中你。
2025-02-06 23:12:12
139
原创 【软件安全实验】使用American Fuzzy Lop工具挖掘 C/C++程序漏洞
选择的目标程序是ultrix42-src下的/usr/bin/deroff.d下的deroff.c以及。使用American Fuzzy Lop工具挖掘C/C++程序漏洞。1、下载American Fuzzy Lop。3、make并展示指令列表,确认安装成功。同目录下的chroot.c(加强测试)3、fuzzing程序deroff.c。(3)编译测试chroot.c加强测试。2、安装gcc编译器。
2023-12-19 23:19:37
1551
原创 【软件安全实验】使用Find Security Bugs工具静态分析WebGoat
Find-Sec-Bugs 是扫描插件 FindBugs的 Java 安全漏洞规则扩展库,它支持在多种主流 IDE 环境进行安装:Eclipse, IntelliJ, Android Studio 和 NetBeans。WebGoat是OWASP组织研制出的用于进行Web漏洞实验的应用平台,官方网址是http:/www.owasp.org.cn/owasp-project/webscan-platform。控制、线程安全、操作隐藏字段、操纵参数、弱会话Cookie、SQL盲注、数字型SQL注入、
2023-12-19 23:08:33
1551
原创 力扣225. 用队列实现栈【附进阶版】
一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。,把que1最后面的元素以外的元素都备份到que2,然后弹出最后面的元素,再把其他元素从que2导回que1。但是依然还是要用两个队列来模拟栈,只不过没有输入和输出的关系,而是另一个队列完全用来备份的!所以用栈实现队列, 和用队列实现栈的思路还是不一样的,这取决于这两个数据结构的性质。
2023-12-18 20:50:50
745
原创 【基础算法】前缀和
数组: a[1], a[2], a[3], a[4], a[5], …, a[n]前缀和 Si为数组的前 i项和前缀和: S[i] = a[1] + a[2] + a[3] + … + a[i]注意: 前缀和的下标建议要从 1开始, 避免进行下标的转换s[0] = 0前缀和的解题思路其实都是先得到相应的和s,然后根据公式求得对应的前缀和,公式一定要理解,不能死记硬背!一/二维前缀和模板总结如下:一维前缀和二维前缀和S[i, j] = 第i行j列格子左上部分所有元素的和。
2023-12-17 22:31:20
542
原创 【星环云课堂大数据实验】InceptorSQL使用方法
1. 批处理;2.统计分析;3. 图计算和图检索;4.交互式统计分析外部表(或简称为外表)和托管表(内表)。TEXT表、ORC表、CSV表和Holodesk表。分区表和非分区表。分桶表和非分桶表。托管表(内表)CREATE TABLE 默认创建托管表。Inceptor对托管表有所有权——用 DROP 删除托管表时,Inceptor会将表中数据全部删除。外表。
2023-12-16 17:25:24
3217
原创 【星环云课堂大数据实验】kafka消息发布与订阅
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,[4]这使它作为企业级基础设施来处理流式数据非常有价值。此外,Kafka可以通过Kafka Connect连接到外部系统(用于数据输入/输出),并提供了Kafka Streams——一个Java流式处理库。大白话就是kafka其实消息队列得一种。
2023-12-16 16:47:38
1217
原创 Java常用API合集(一)
我们前面使用StringBuilder拼接字符串的时候,代码写起来还是有一点麻烦,而StringJoiner号称是拼接神器,不仅效率高,而且代码简洁。经过验证,直接使用Stirng拼接100万次,等了1分钟,还没结束,我等不下去了;Math是数学的意思,该类提供了很多个进行数学运算的方法,如求绝对值,求最大值,四舍五入等,话不多说,直接上代码。这个类可以用来获取JVM的一些信息,也可以用这个类去执行其他的程序。需求:要求将java的int类型数组,转成"【1,2,3】"格式的样式输出。
2023-12-15 17:06:36
1071
原创 【反射】Java小白也能手写的简易版框架
在日常实习开发中,反射基本其实是用不太到的。一个我们常见的例子:平时我们用IDEA开发程序时,用对象调用方法,IDEA会有代码提示,idea会将这个对象能调用的方法都给你列举出来,供你选择,如果下图所示。创建一个测试类,在测试中类创建一个Student对象,创建一个Teacher对象,用ObjectFrame的方法把这两个对象所有的属性名和属性值写到文件中去。再次强调一下设置值、获取值的方法时Filed类的需要用Filed类的对象来调用,而且不管是设置值、还是获取值,都需要依赖于该变量所属的对象。
2023-12-15 16:51:38
1518
原创 Windows下查看端口被占用并结束进程
第二步:netstat -ano | findstr “端口号”,回车就可以看到这个端口被哪个进程占用 (记住最后一列的值,就是进程的PID,进程的唯一标识)第三步:tasklist | findstr “进程id号”,查看到对应的进程id之后,就可以通过id查找对应的进程名称,使用命令。第四步:taskkill /f /t /im “进程id或者进程名称”,通过命令杀掉进程,或者是直接根据进程的名称杀掉所有的进程。第一步:win+R cmd 启动命令行。
2023-12-14 21:43:26
798
原创 《拥抱变化:解析极限编程》读书笔记
拥抱变化:解析极限编程》是一本深入而全面的关于极限编程的指南。书中深刻探讨了适应变化的理念,提供了实用的方法和准则,帮助读者理解敏捷软件开发的核心原则。作者Kent Beck通过丰富的案例和实践经验,生动地呈现了极限编程的实际应用。书中详细介绍了在不同阶段的软件开发过程中如何应对变化,以及如何建立灵活、高效的团队文化。尽管可能存在一些理论和实际之间的差异,但该书为读者提供了深刻的思考,并激发了对于敏捷开发的实践探索。是一本值得在软件开发领域深入研读的重要著作。
2023-12-14 08:57:36
1850
原创 【BigDecimal类—常用API系列】解决java浮点计算精度损失问题
其底层原理会涉及到很多计算机组成原理方面的知识,包括计算机中二进制和十进制之间的转换以及计算机对浮点数的存储等等,这里不深入讲解,作为开发人员知道有这个事情以及解决方案就好啦!使用float和double运算时会造成结果的不准确,因此浮点数运算的时候,我们可以使用java提供的BigDecimal,使用BigDecimal对小数进行运算的时候,会先将数字扩大N倍,同时保存精度,转为整数进行相应的运算,最后再转为小数。运行以上代码,我们会发现,结果并和我们想看到的不太一样。
2023-12-13 15:01:57
629
原创 【设计模式】模板方法模式
模板方法模式(Template Method Pattern):定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法是一种类行为型模式。
2023-12-13 10:11:10
1360
原创 单元测试技术
除了@Test注解,还有一些其他的注解,我们要知道其他注解标记的方法什么时候执行,以及其他注解在什么场景下可以使用。前面的注解是基于Junit4版本的,再Junit5版本中对注解作了更新,但是作用是一样的。②为需要测试的业务类,定义对应的测试类,并为每个业务方法,编写对应的测试方法(必须:公共、无参、无返回值)需求:某个系统,有多个业务方法,请使用Junit单元测试框架,编写测试代码,完成对这些方法的正确性测试。③测试方法上必须声明@Test注解,然后在测试方法中,编写代码调用被测试的业务方法进行测试;
2023-12-12 23:03:57
1461
2
原创 Redis安装教程
如果在最后执行这段报如上错,有可能是vim /etc/systemd/system/redis.service创建的文件有问题,复制内容时,文件中的[Unit]变成了t]。这是因为没有在编辑模式下复制,导致直到遇到[Unit]中的字母i才进入编辑模式,所以只有t],因此复制粘贴前,先按字母i进入编辑模式再粘贴。点击即可建立连接了,Redis默认有16个仓库,编号从0至15. 通过配置文件可以设置仓库数量,但是不超过16,并且不能自定义仓库名称。
2023-12-12 22:45:58
1287
原创 【特殊文件(一)】属性文件读写实操
IO流是用来读、写文件中的数据。但是我们接触到的文件大部分都是普通的文本文件,普通的文本文件里面的数据是没有任何格式规范的,用户可以随意编写。但是在java项目的开发中,我们还会遇到一些特殊的文本文件,这些文件是有一些格式要求的,方便程序对文件中的数据进行处理。比如,后面我们会用到两种特殊的文本文件,一种是properties文件,还有一种是xml文件。后缀为.properties的文件,称之为属性文件,它可以很方便的存储一些类似于键值对的数据。经常当做软件的配置文件使用。
2023-12-11 14:59:43
918
原创 【日志技术】附Logback入门教程
而程序中的日志,通常就是一个文件,里面记录了程序运行过程中产生的各种数据。Logback提供了一个核心配置文件logback.xml,日志框架在记录日志时会读取配置文件中的配置信息,从而记录日志的形式。这样我们只要会一套日志框架,那么其他的也就可以通过用,甚至可以在多套日志框架之间来回切换。下面我们快速使用一下Logback日志框架,使用Logback记录几条日志信息到文件中去和将日志信息打印在控制台上。日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下:(优先级依次升高)
2023-12-11 14:43:58
1244
原创 二叉树的层序遍历模板
层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。这种遍历的方式和我们之前讲过的都不太一样。需要借用一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑,而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。而这种层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上。
2023-12-10 16:52:11
470
原创 二叉树前中后序遍历——(非)递归写法
二叉树遍历也分为两种广度优先遍历(Breadth-first order):尽可能先访问距离根最近的节点,也称为层序遍历深度优先遍历(Depth-first order):对于二叉树,可以进一步分成三种(要深入到叶子节点)pre-order 前序遍历,对于每一棵子树,先访问该节点,然后是左子树,最后是右子树in-order 中序遍历,对于每一棵子树,先访问左子树,然后是该节点,最后是右子树post-order 后序遍历,对于每一棵子树,先访问左子树,然后是右子树,最后是该节点。
2023-12-10 13:12:59
1174
原创 【IO流(1)】——基于字节流实现的文件复制及资源释放新写法
我们知道File只能操作文件,但是不能操作文件中的内容。而IO流则就是来操控文件中的内容的,例如上述需求的实现。IO流的作用:就是可以对文件或者网络中的数据进行读、写的操作。如下图所示把数据从磁盘、网络中读取到程序中来,用到的是输入流。把程序中的数据写入磁盘、网络中,用到的是输出流。简单记:输入流(读数据)、输出流(写数据)其核心就是以程序为中心,读到程序内存中来,那就是输入,写到磁盘网络中去那就是输出。IO流在Java中有很多种,不同的流来干不同的事情。
2023-12-09 12:05:51
1119
原创 454. 四数相加 II
本题是使用哈希法的经典题目,力扣15.三数之和 (opens new window),力扣18.四数之和 (opens new window)并不合适使用哈希法,因为三数之和和四数之和这两道题目使用哈希法在不超时的情况下做到对结果去重是很困难的,很有多细节需要处理。而这道题目是四个独立的数组,只要找到A[i] + B[j] + C[k] + D[l] = 0就可以,不用考虑有重复的四个元素相加等于0的情况,所以相对于题目18. 四数之和,题目15.三数之和,还是简单了不少!
2023-12-09 11:37:41
443
原创 Java线程池—附阿里巴巴Java开发手册强制规范要求
线程池就是一个可以复用线程的技术。想象一下,如果不使用线程池会有什么问题?假设:用户每次发起一个请求给后台,后台就创建一个新的线程来处理,下次新的任务过来肯定也会创建新的线程,如果用户量非常大,创建的线程也讲越来越多。然而,创建线程是开销很大的,并且请求过多时,会严重影响系统性能。而使用线程池,就可以解决上面的问题。如下图所示,线程池内部会有一个容器,存储几个核心线程,假设有3个核心线程,这3个核心线程可以处理3个任务。
2023-12-08 16:06:25
2299
原创 Java线程安全问题及其三大线程同步“锁”方案
线程安全问题指的是,多个线程同时操作同一个共享资源的时候,可能会出现业务安全问题。下面通过一个取钱的案例演示一下。案例需求如下:场景:杨过和小龙女是一对夫妻,他们有一个共享账户,余额是10万元,杨过和小龙女同时来取钱,并且2人各自都在取钱10万元,可能出现什么问题呢?杨过和小龙女假设都是一个线程,本来每个线程都应该执行完三步操作,才算是完成的取钱的操作。但是真实执行过程可能是下面这样子的 ① 杨过线程只执行了判断余额是否足够(条件为true),然后CPU的执行权就被小龙女线程抢走了。
2023-12-08 15:45:37
1194
原创 低代码——“平衡饮食”才是王道
在我看来,低代码就像是一顿美味的膳食,它在某些场景下提供了高效、快速、简单的开发方式,特别适用于初创公司、原型验证和快速迭代。合理地使用低代码,结合传统编程,才能形成一种平衡饮食,满足不同场景的需求,创造出更为健康、可维护的软件生态。然而,在复杂的项目中,尤其是需要深度算法和大规模数据处理的领域,传统编程的灵活性和可控性更为重要。理论知识固然重要,但真正的理解和熟练是通过实际项目实践获得的。低代码的出现会为我我们提供了一个更友好的入门途径,让我们能够在不深入学习庞大的技术体系的情况下,快速实现我们的创意。
2023-12-07 22:07:59
1388
原创 力扣541.反转字符串 II
这道题目其实就是模拟,实现题目中规定的反转规则就可以了。但是在思考过程中,走了一些弯路,也就是为了处理逻辑我尝试这样做过:每隔2k个字符的前k的字符,写了一堆逻辑代码或者再搞一个计数器,来统计2k,再统计前k个字符。但是其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。因为要找的也就是每2 * k 区间的起点,这样写,程序会高效很多。所以当需要固定规律一段一段去处理字符串的时候,要想想在在for循环的表达式上做做文章。
2023-12-07 15:13:25
594
原创 【多线程】线程的三种常见创建方式
不能直接去调用run方法,如果直接调用run方法就不认为是一条线程启动了,而是把Thread当做一个普通对象,此时run方法中的执行的代码会成为主线程的一部分。此时执行结果是这样的。**线程其实是程序中的一条执行路径。****那怎样的程序才是多线程程序呢?** 例如12306网站就是支持多线程的,因为同时可以有很多人一起进入网站购票,而且每一个人互不影响。再比如百度网盘,可以同时下载或者上传多个文件。这些程序中其实就有多条执行路径,每一条执行执行路径就是一条线程,所以这样的程序就是多线程程序。下面会逐一介
2023-12-06 21:37:29
1365
原创 初识MQ——消息队列技术选型
订阅者从Broker订阅事件,不关心谁发来的消息。我们在开发中常用的feign调用就属于同步方式,虽然调用可以实时得到结果,但是存在耦合度高、性能和吞吐能力下降、额外的资源消耗、有级联失败问题等。Broker 是一个像数据总线一样的东西,所有的服务要接收数据和发送数据都发到这个总线上,这个总线就像协议一样,让服务间的通讯变得标准和可控。在事件模式中,支付服务是事件发布者(publisher),在支付完成后只需要发布一个支付成功的事件(event),事件中带上订单id。同步通讯:就像打电话,需要实时响应。
2023-12-06 21:19:38
1154
原创 File类—递归文件搜索执行脚本文件
为了实现该需求,我们需要了解File类和Runtime类的基本使用,下面会一一介绍,最后会给出最终的代码实现!4.当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在FIle数组中,包含隐藏文件。3.当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹路径放在File数组中,并把数组返回。3.delete(): 文件可以直接删除,但是文件夹只能删除空的文件夹,文件夹有内容删除不了。1.先调用文件夹的listFiles方法,获取文件夹的一级内容,得到一个数组。
2023-12-05 22:49:50
1063
原创 字符集——带你了解UTF-8的前世今生
咱们国家可以用GBK字符集来表示中国人使用的文字,那世界上还有很多其他的国家,他们也有自己的文字,他们也想要自己国家的文字在计算机中处理,于是其他国家也在搞自己的字符集,就这样全世界搞了上百个字符集,而且各个国家的字符集互不兼容。在Unicode字符集中,采用一个字符4个字节的编码方案,又造成另一个问题:如果是说英语的国家,他们只需要用到26大小写字母,加上一些标点符号就够了,本身一个字节就可以表示完,用4个字节就有点浪费。,为了能够显示英文字母,GBK字符集也兼容了ASCII字符集,
2023-12-05 22:13:00
1851
原创 JDK8新特性——Lambda表达式
除了基本使用以外,java还提供了Lamdba表达式的几种简化写法。,只有基于函数式接口的匿名内部类才能被Lambda表达式简化。使用Lambda表达式,简化匿名内部类书写,案例如下。Lambda表达式是JDK8新增的一种语法形式,其。在使用Lambda表达式之前,像这样的接口,我们称之为。
2023-12-04 21:38:18
548
原创 JDK8新特性——Stream流
Stream流(也叫Stream API)。它是从JDK8以后才有的一个新特性,是专业用于对集合或者数组进行便捷操作的。Stream流的终结方法的特点是,调用完方法之后,其结果就不再是Stream流了,所以不支持链式编程。,找出姓张,且是3个字的名字,存入到一个新集合中去。流的一般处理流程如下,后面我们一步步学习。1、如何获取List集合的Stream流?2、如何获取Set集合的Stream流?3、如何获取Map集合的Stream流?4、如何获取数组的Stream流?需求:有一个List集合,元素有。
2023-12-04 21:31:09
760
原创 力扣66. 加一
让我看看有多少人是想着是通过先把原数组转换为一个数,加1后在转成数组!这样是不行的,会溢出,开long long也不够!事实上,最终我们只需要对数组 digits 进行一次逆序遍历,找出第一个不为 9 的元素,将其加一并将后续所有元素置零即可。如果 digits中所有的元素均为 999,我们需要返回一个新的数组即可。以上就可以涵盖了所有的情况了。
2023-12-03 00:35:51
430
原创 编程中常见的技术难题和解决策略
在一个多用户的系统中,处理并发和多线程的问题是一项具有挑战性的任务。通过使用性能分析工具,优化数据库查询,改进算法,以及使用缓存技术,最终成功提升了系统的性能。通过学习和应用安全最佳实践,修复了一些潜在的安全漏洞,增强了系统的防护能力。在解决一个需要高效算法的挑战性问题时,需要深入理解和应用复杂的数据结构和算法。重要的是采用灵活的策略,结合不同的方法来解决问题,以提高解决问题的效率和准确性。在编程过程中,我遇到了一些常见的技术难题,这些难题不仅仅是挑战,也是学习和成长的机会。调试工具是解决问题的强大助手。
2023-12-03 00:35:36
781
原创 力扣225.用队列实现栈
使用两个队列queue来实现。为了满足栈的特性,即最后入栈的元素最先出栈,在使用队列实现栈时,应满足队列前端的元素是最后入栈的元素。可以使用两个队列实现栈的操作,其中 queue1用于存储栈内的元素,queue2作为入栈操作的辅助队列。入栈操作时,首先将元素入队到queue2,然后将queue1的全部元素依次出队并入队到queue2,此比时queue2的前端的元素即为新入栈的元素,再将queue1和queue2互换,则queue1的元素即为栈内的元素,queue1的前端和后端分别对应栈顶和栈底。
2023-12-02 00:01:36
526
原创 力扣232.用栈实现队列
将一个栈当作输入栈,用于压入 push传入的数据;另一个栈当作输出栈,用于 pop 和 peek操作。每次 pop 或 peek时,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。这里具体实现用的是双端队列Deque表示栈的嗷,效率更高科普一个小tips,Deque中的D就是double,e表示edge,所以是双端队列。
2023-12-02 00:01:10
626
原创 《凤凰项目》读书笔记
凤凰项目:一个IT运维的传奇故事》是一部引人入胜、实用性强的著作,为DevOps领域提供了深刻见解。通过生动的故事和实例,以及清晰的方法论,本书为读者提供了推动组织变革的实用工具和策略。作者通过讲述一个虚构公司的IT挑战,深刻阐释了DevOps原则的重要性,并提供了可操作的建议,涵盖了持续交付、自动化、文化变革等方面。尽管在技术快速演进的背景下,书中的一些工具和技术可能已经过时,但其核心思想和方法仍具有普适性。对于希望提高IT效率、加速交付周期的专业人士和组织而言,这是一本不可多得的指南。
2023-12-01 16:26:00
1281
原创 【Java内部类】带你玩转Java内部类那些事
内部类是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,这个类就是内部类。当一个类的内部,包含一个完整的事物,且这个事物没有必要单独设计时,就可以把这个事物设计成内部类。比如:汽车、的内部有发动机,发动机是包含在汽车内部的一个完整事物,可以把发动机设计成内部类。//内部类} }内部类有四种形式,分别是成员内部类、静态内部类、局部内部类、匿名内部类。后面依次介绍!
2023-12-01 09:47:05
496
原创 【Java泛型】带你玩转泛型那些事
接下来我们学习一下自定义泛型类,但是有一些话需要给大家提前交代一下:泛型类,在实际工作中一般都是源代码中写好,我们直接用的,就是ArrayList这样的,自己定义泛型类是非常少的。自定义泛型类的格式如下//这里的其实指的就是类型变量,可以是一个,也可以是多个。字母随意public class 类名{接下来,我们自己定义一个MyArrayList泛型类,模拟一下自定义泛型类的使用。注意这里重点仅仅只是模拟泛型类的使用,所以方法中的一些逻辑是次要的,也不会写得太严谨。
2023-12-01 09:38:07
964
数据库应用系统课设-附68页电子报告和完整的源代码
2023-11-26
设计模式-java语言实现-期末复习资料大全
2023-11-26
服务计算报告-多线程程序模拟乒乓球双打比赛(附完整源程序)
2023-11-25
开发者测试、web功能测试、移动应用功能测试、web性能测试
2023-11-25
创新创业学院课程设计 大学生初始创业中的常见问题以及解决改进策略 -基于贺燕萍创业历程案例分析
2023-11-25
微服务+DockerCompose+用户订单功能模块+微服务集群部署搭建
2023-11-25
数据爬虫+python+爬取招聘网站有关信息+帮助更好的搜索求职信息
2023-11-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人