- 博客(65)
- 资源 (29)
- 收藏
- 关注
原创 Java 实现暴力匹配算法(也称为朴素字符串匹配算法)
暴力匹配算法是一种简单但有效的字符串匹配算法,它通过遍历主串和模式串的每一个字符,并在遇到不匹配的情况下逐个后移字符进行匹配。暴力匹配算法(也称为朴素字符串匹配算法)是一种简单但有效的字符串匹配算法。它通过遍历主串和模式串的每一个字符,并在遇到不匹配的情况下逐个后移字符进行匹配。字符串匹配是计算机科学中常见的问题,暴力匹配算法是最简单的一种解决方法。它的核心思想是通过遍历主串和模式串的每一个字符,当遇到不匹配的情况下逐个后移字符进行匹配,直到找到匹配的位置或者匹配失败。
2023-09-10 08:36:26 437
原创 Java 语言实现最小生成树算法(如Prim算法、Kruskal算法)
之后,每次将离生成树最近的顶点添加到生成树中,并将所选顶点与其余顶点的边进行比较,选择最小边加入生成树,直至所有顶点都加入生成树。从时间复杂度上来看,当图稠密时,Prim算法的效率更高,而当图稀疏时,Kruskal算法效率更高。本文深入探讨了Prim算法和Kruskal算法的原理和实现,并比较了它们的优缺点。代码中包含了Prim算法和Kruskal算法的实现,并提供了一个简单的图示例进行测试。Prim算法和Kruskal算法的空间复杂度均为O(|V|+|E|),其中|V|表示顶点数,|E|表示边数。
2023-09-09 08:48:49 864
原创 Java 中应用Dijkstra算法求解最短路径
Dijkstra算法是一个经典的解决最短路径问题的算法,在路由算法、导航系统等领域都有广泛的应用。它通过逐步选择距离起始节点最近的节点,并更新其邻接节点的最短距离,最终得到起始节点到其他所有节点的最短路径。然后,在一个循环中,每次选择距离最小且未加入最短路径集合的节点,将其加入最短路径集合,并更新其邻接节点的最短路径长度。它遍历所有未加入最短路径集合(shortestPathTreeSet)的节点,查找距离最小且未加入最短路径集合的节点,并返回其索引。数组来追踪起始节点到其他节点的最短路径长度,
2023-09-07 21:04:41 655
原创 Java 语言实现广度优先搜索(BFS)图算法
广度优先搜索(BFS)是一种用于图的搜索算法,它从图的起始节点开始,逐层扩展搜索,直到找到目标节点或者遍历完整个图。BFS使用队列来存储已经访问过但是未被扩展的节点。中取出一个节点,并打印该节点。接着,迭代该节点的邻接节点,如果其中某个节点尚未被访问过,则标记为已访问,并将其添加到。用于存储已经访问过但是还未被扩展的节点。该方法从起始节点开始,将其标记为访问过,并将其添加到。是一个邻接表数组,用来存储图的边。对象,并添加几条边。然后,进入一个循环,直到。数组来追踪已经访问过的节点,来表示图中顶点的数量,
2023-09-07 20:57:40 590
原创 java 语言实现深度优先搜索(DFS)图算法
在这个示例中,我们使用了一个栈来保存待访问的节点。在每次循环中,我们从栈中弹出一个节点,并将其标记为已访问。然后,我们迭代该节点的邻居节点,如果邻居节点尚未被访问,则将其压入栈中。深度优先搜索算法的核心思想是递归地探索每个节点的邻居节点,直到到达最深处,然后再回溯到上一个节点,继续探索其他未被访问的节点。然后,我们迭代该节点的邻居节点,如果邻居节点尚未被访问,则递归调用。在深度优先搜索中,使用栈数据结构来保存待访问的节点。方法中,我们创建一个示例图,并从节点0开始进行深度优先搜索。方法中,我们创建一个。
2023-08-30 21:30:18 959
原创 Java 语言哈希查找算法实现
哈希查找是一种高效的查找算法,它能够快速定位元素并返回其位置。在Java语言中,我们可以使用HashMap或HashTable类来实现哈希查找。本文介绍了Java语言中的哈希查找算法的实现步骤,并给出了代码示例和运行结果。希望本文能够帮助你理解和使用哈希查找算法。
2023-08-30 09:18:11 530 3
原创 Java 语言实现二分查找算法
它适用于已排序的数组或列表,并通过将目标值与中间值进行比较,来确定目标值在左侧还是右侧。本文将使用Java语言实现二分查找算法,并详细讲解其思想和代码实现。本文使用Java语言实现了二分查找算法,并详细讲解了其思想和代码实现。二分查找算法是一种高效且常用的查找算法,特别适用于已排序的数组或列表。通过不断缩小查找区间,最终找到目标元素的索引,或者返回-1表示目标元素未找到。二分查找算法是一种稳定的查找算法,因为它按照一定的规则进行比较和缩小区间,不会改变元素的相对顺序。二分查找的核心思想是不断缩小查找区间。
2023-08-28 21:40:48 343 1
原创 Java 语言实现线性查找算法
它从数组的第一个元素开始逐个比较,直到找到目标元素,或者遍历完整个数组。本文将使用Java语言实现线性查找算法,并详细讲解其思想和代码实现。本文使用Java语言实现了线性查找算法,并详细讲解了其思想和代码实现。它接受一个整数数组和目标元素作为输入,通过逐个比较寻找目标元素。线性查找算法的时间复杂度为O(n),其中n表示数组的大小。由于需要逐个比较数组元素,线性查找算法的时间复杂度较高。线性查找算法是一种稳定的查找算法,因为它会按顺序比较数组元素,不会改变元素的相对顺序。【Java代码实现】
2023-08-27 08:48:39 439
原创 Java 语言实现归并排序算法
它采用分治法的思想,将数组反复分割成两个子数组,直到每个子数组只有一个元素。本文将使用Java语言实现归并排序算法,并详细讲解其核心思想和代码实现。本文使用Java语言实现了归并排序算法,并详细讲解了其核心思想和代码实现。归并排序算法的时间复杂度为O(nlogn),其中n表示待排序数组的大小。归并排序是一种稳定的排序算法,因为在合并过程中,如果两个元素相等,我们会优先选择左边的元素。方法是归并排序的主要方法,它接受一个整数数组、最低索引和最高索引作为输入,并对数组进行排序。【Java代码实现】
2023-08-26 11:20:24 783 1
原创 Java 语言实现快速排序算法
它通过选择一个基准元素,并将数组分割成两个子数组,一边存放比基准元素小的元素,另一边存放比基准元素大的元素。本文将使用Java语言实现快速排序算法,并详细讲解其核心思想和代码实现。本文使用Java语言实现了快速排序算法,并详细讲解了其核心思想和代码实现。快速排序是一种不稳定的排序算法,因为在分割过程中,相等元素可能会交换位置。方法是快速排序的主要方法,它接受一个整数数组、最低索引和最高索引作为输入,并对数组进行排序。方法用于将数组分割成两个子数组,返回基准元素的索引。在代码中,我们定义了三个静态方法。
2023-08-25 23:42:17 860
原创 Java 语言实现选择排序算法
它的原理是每次从未排序的元素中选择最小(或最大)的元素,放在已排序的末尾(或开头),逐渐形成有序序列。本文将使用Java语言实现选择排序算法,并详细讲解其思想和代码实现。本文使用Java语言实现了选择排序算法,并详细讲解了其思想和代码实现。选择排序算法的时间复杂度为O(n^2),其中n表示待排序数组的大小。虽然选择排序算法的时间复杂度较高,但它是一种不稳定的排序算法,适用于小规模数据的排序。选择排序的核心思想是每次通过一次遍历,在未排序序列中找到最小(或最大)的元素,将其放在已排序序列的末尾(或开头)。
2023-08-25 23:40:17 1424
原创 Java 语言实现插入排序算法
它通过依次将未排序的元素插入已排序序列中的正确位置来达到排序的目的。本文将使用Java高级语言实现插入排序算法,并讲解其核心思想和代码实现。本文使用Java高级语言实现了插入排序算法,并详细讲解了其核心思想和代码实现。插入排序算法的时间复杂度为O(n^2),其中n表示待排序数组的大小。虽然插入排序算法的时间复杂度较高,但它是一种稳定的排序算法,适用于小规模数据的排序。插入排序的核心思想是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。【Java代码实现】
2023-08-23 21:48:39 434 2
原创 Java 语言实现冒泡排序
冒泡排序虽然是一种简单的排序算法,但在某些情况下它的性能可能不够理想,因为它需要进行多次的比较和交换操作。但在小规模数据的排序中,冒泡排序也是一种有效的选择。在本文中,我们使用Java高级语言实现了冒泡排序算法,并给出了代码示例和运行结果。希望本文能够帮助你理解和使用冒泡排序算法。
2023-08-23 10:27:23 1665 1
原创 Selenium 问题 java.io.IOException: Invalid Status code=403 text=Forbidden
java.io.IOException: Invalid Status code=403 text=Forbidden
2023-03-29 16:49:46 4077 7
原创 Java 正则表达式 匹配替换网页所有的http或者https
1. 代码示例String html = "从网页下载对应的HTML";// 构建匹配正则对象,正则表达式可以根据需求添加对应的字符集来匹配更多的URLMatcher m = Pattern.compile("(https?://[A-Za-z:0-9_@.-]+)").matcher(html);// 匹配替换// 构建容器,存储替换后的内容StringBuffer htmlBox = new StringBuffer();// 进行读取,也可以将URL存储或者下载对应资源,根据实
2021-12-07 16:00:02 2430
原创 Python 操控微信客户端给指定联系人发送消息
1. 代码示例,看注释,有问题留言沟通。#!/usr/bin/env python# -*- coding: utf-8 -*-# 引入相关依赖import psutilfrom pywinauto.application import Applicationimport pyperclipimport ioimport sysimport timeimport pyautoguipyautogui.FAILSAFE=False # 关闭自动保护机制#改变标准输出的默认编码
2021-12-04 10:57:49 2933 11
原创 Java WebSocketClient 同步返回数据,建立长链接这一篇就够用了
1. Maven 坐标引入依赖# Java-WebSocket 坐标<!-- https://mvnrepository.com/artifact/org.java-websocket/Java-WebSocket --><dependency> <groupId>org.java-websocket</groupId> <artifactId>Java-WebSocket</artifactId> &
2021-08-18 21:29:34 8203 19
原创 Java Httpclient 常用请求一篇就够用了
/*** httpHelper 帮助类*/public class HttpHelper { public static final Logger logger = Logger.getLogger(HttpHelper.class.getName()); public static int SOCKETTIMEOUT = 5000; // get 请求 public static JSONObject httpGet(String url) { HttpGet h..
2021-08-12 21:47:07 522 8
原创 Node.js 使用request组件库发送post 、get请求
// 引入request组件 const request = require('request')// 发送post请求request({ url: 'http://localhost:8080/api/user/insert', method: "POST", json: true, headers: { "content-type": "application/json", }, body: { id:'234232332', name:'张三'.
2021-08-12 21:14:44 7271 1
原创 ~~ 推荐Java开发神器Hutool开源工具包,几乎涵盖Java所有的操作封装,炒鸡好用
# 简介Hutool谐音“糊涂”,一方面简洁易懂,一方面寓意“难得糊涂”。官方文档点这里# Maven 引用<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.7</version></dependency&g...
2021-08-10 21:28:51 3360 18
原创 Java File 对象的常用的几个方法笔记
// 要操作的文件String path = "D://test//file.txt"// 构建文件对象File file = new File(path);// 验证文件或者文件夹是否存在file.exists(); // true 表示存在 false 表示不存在// 验证是否为文件file.isFile(); // true 表示是 false 表示不是// 验证是否为文件夹file.isDirectory(); // true 表示是 false 表示不是// 获取.
2021-08-10 21:18:05 160 2
原创 ICMP timestamp 请求响应漏洞解决方案
原链接ICMP timestamp 请求响应漏洞1. 解决方案* 在您的防火墙上过滤外来的ICMP timestamp(类型13)报文以及外出的ICMP timestamp回复报文。google之,于是动手解决: 具体解决方式就是禁用ICMP timestamp-request,编辑etc/sysconfig/iptables文件,在防火墙规则里面添加如下记录:-A RH-Firewall-1-INPUT -p ICMP --icmp-type tim...
2021-08-10 14:30:34 5499 2
原创 Node.js 使用substr函数从路径截取文件名称(依赖os组件库区分系统)
// 下载os组件库 代码可以直接使用npm install os --save // 引入os依赖const os = require('os')// 函数 lastIndexOf 获取到最后斜杠出现的位置let filePath = 'D:\\temp\\test.txt';let index = 0;if(os.platform().toString() === 'win32'){ index = filePath.lastIndexOf('\\');}else if..
2021-08-09 21:21:41 983
原创 Javascript 构建表单对象异步上传文件
1. HTML 代码// 表单域<input tupe="text" id="fileName" name="fileName"><input type="file" id="file" name="file"/>2. Javascript 代码// 代码可以直接进行使用let formData = new FormData();let ajaxHttp = null;if (window.XMLHttpRequest) {// code for IE7..
2021-08-08 12:03:11 539 2
原创 SpringMVC 文件下载 (缓冲流下载)可以直接把宽带拉满内网环境下每秒几十兆
// 下载文件 可以直接使用private void downloadFile(HttpServletResponse resp, File file, String fileName) { try { if (file.exists() && file.isFile()) { InputStream ins = new FileInputStream(file); BufferedInputStream bins = new BufferedI.
2021-08-07 13:11:54 425
原创 Node.js 使用dayjs组件库格式化时间(年-月-日 时-分-秒)
// 下载 dayjs 组件库npm install dayjs --save// 进行引用const dayjs = require('dayjs')// 引用的dayjs实例是一个函数返回的实例,可以直接使用。// 获取到当前时间,格式化(年-月-日 时-分-秒)let currDate = dayjs().format('YYYY-MM-DD HH:mm:ss'); // 初始化其他时间,格式化(年-月-日 时-分-秒)let date = new Date();let cu.
2021-08-07 10:40:22 3182
原创 Electron 使用 regedit 控制注册表(实现win文件右键菜单)
// 下载regedit依赖库npm install regedit --save// 引入regedit const regedit = require('regedit')// 创建keyregedit.createKey("HKCR\\*\\shell\\xxx系统\\shell\\xxx操作",(err) => { if(err){ console.error("出现错误",err); return ; .
2021-08-04 21:27:16 694
原创 Electron-builder Linux平台打包安装后执行的shell脚本(deb)
1.package.json 文件 build 下的 nsis 和 linux配置"nsis": { "oneClick": false, "allowElevation": true, "allowToChangeInstallationDirectory": true, "installerIcon": "./build/icons/icon.ico", "uninstallerIcon": "./build/icons/icon.i..
2021-08-03 14:55:40 3478 8
原创 Electron-builder Windows平台打包安装后执行指定的bat脚本(exe)
1. package.json 文件 build 下的 nsis 配置"nsis": { "oneClick": false, "allowElevation": true, "allowToChangeInstallationDirectory": true, "installerIcon": "./build/icons/icon.ico", "uninstallerIcon": "./build/icons/icon.ico", .
2021-08-03 10:34:12 2678
原创 Node.js 使用ws组件库发布 WebSocket
// 下载ws依赖npm install ws// 实现代码 (仅供参考,可以直接使用)// 引入 ws 模块const WebSocket = require('ws')// 初始化实例 const wss = new WebSocket.Server({ port : 8686 , // 设置端口号 verifyClient : socketVerify // 可选,对连接客户端进行限制(function)})/** * 验证客户端访问 * @param i.
2021-08-01 09:34:38 719
原创 npm 常见问题的实战解决记录
# linux root 用户执行 npm install 认定为不安全携带参数 --unsafe-perm=true --allow-rootnpm install --unsafe-perm=true --allow-root# linux 指定个别资源远程资源链接# 设置全局环境变量 export 写入到 /etc/profile 文件尾部 npm config set ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/&a.
2021-08-01 07:50:56 628
原创 JAVA 日志框架级别记录
# log4j ALL 各级包括自定义级别 DEBUG 指定细粒度信息事件是最有用的应用程序调试 ERROR 错误事件可能仍然允许应用程序继续运行 FATAL 指定非常严重的错误事件,这可能导致应用程序中止 INFO 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息 OFF 这是最高等级,为了关闭日志记录 TRACE 指定细粒度比DEBUG更低的信息事件 WARN 指定具有潜在危害的情况# logback TRACE < DEBUG < INFO < W.
2021-07-30 21:39:39 181
原创 JDK1.8 绿色解压版配置安装(CentOS 6.x)
1. 解压文件到某个目录下# 切换到某个目录下cd /opt# 创建文件夹mkdir jdk# 解压缩tar -zxvf jdk1.8.0_221.tar.gz -C /opt/jdk2. 配置环境变量# 编辑核心配置vim /etc/profile# 在文件尾部增加配置(设置全局的变量)export JAVA_HOME=/opt/jdkexport JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib
2021-07-30 21:32:21 582
原创 安全扫描漏洞修复相关思路
Mongodb未授权访问漏洞【原理扫描】MongoDB 服务探测 # 修改mongodb 的配置文件 1. 修改ip 2. 修改认证 3. 绑定固定访问ip * 已解决检测到目标主机上运行着NTP服务 # systemctl is-enabled nptd 查看开机是否启用,功能同步时间 # systemctl enable nptd 设置开机启动 # systemctl disable n...
2021-07-30 21:13:51 2106
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人