文本数据可视化
目录
【实验目的】
【实验原理】
【实验环境】
【实验步骤】
原理
操作步骤
图像展示
【实验目的】
-
了解什么是文本可视化
-
掌握文本可视化的相关技术
-
文本信息的提取和可视表达
-
本次实验是将某一文本进行可视化生成词云图片
-
尝试构造文本指纹
【实验原理】
文本是语言和沟通的载体,文本的含义以及读者对文本的理解需求均纷繁复杂。例如,对于同一个文本,不同的人的解读也是不一样的,有的人希望了解文本中涉及到的事物,而有的人希望得到文本中的关键词。鉴于对文本信息需求的多样性,需要从不同层级提取与呈现文本信息。一般把对文本的理解 需 求 分 成 三 级 : 词 汇 级 ( Lexical Level ) 、 语 法 级(Syntactic Level)和语义级(Semantic Level)。不同级的信息挖掘方法也不同,词汇级当然是用各类分词算法,语法级用一些句法分析算法,语义级用主题抽取算法。文本文档的类别多种多样,包括单文本、文档集合和时序文本数据三大类,这使得文本信息的需求更为丰富。
【实验环境】
Python:v3.6
【实验步骤】
1、读入txt文本数据
数据来源:实验-第六章文件夹,千千阙歌-歌词.txt
2、安装matplotlib、jieba、wordcloud
3、编写代码,构造不同形状的词云。
提示:
1.读入 txt 文本数据
2.结巴中文分词,生成字符串,默认精确模式,如果不通过分词,无法直接生成正确的中文词云
3.生成词云图,需要注意的是 WordCloud 默认不支持中文,所以这里需已下载好的中文字库
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import os
from matplotlib.font_manager import FontProperties
from matplotlib.colors import LinearSegmentedColormap
import random
import io
from matplotlib.animation import FuncAnimation
from matplotlib.backends.backend_agg import FigureCanvasAgg# 1. 设置中文字体
def set_chinese_font():try:# 尝试常见字体路径font_paths = ['simhei.ttf','C:/Windows/Fonts/simhei.ttf','C:/Windows/Fonts/msyh.ttc','/System/Library/Fonts/PingFang.ttc','/usr/share/fonts/truetype/wqy/wqy-microhei.ttc']# 查找可用字体for path in font_paths:if os.path.exists(path):# 返回字体属性对象return FontProperties(fname=path)# 如果都找不到,尝试使用系统默认中文字体return FontProperties(family='sans-serif')except:return FontProperties(family='sans-serif')# 获取字体属性
font_prop = set_chinese_font()# 2. 读取文本文件
def load_text(file_path):try:with open(file_path, 'r', encoding='utf-8') as f:return f.read()except FileNotFoundError:print(f"错误: 文件 '{file_path}' 未找到!")return ""except Exception as e:print(f"错误: 读取文件时发生异常: {e}")return ""# 3. 中文分词处理
def chinese_text_segmentation(text):# 移除常见停用词stopwords = {'的', '了', '在', '是', '我', '有', '和', '就', '不', '人', '都', '一', '一个', '上', '也', '很', '到','说', '要', '去', '你', '会', '着', '没有', '看', '好', '自己', '这'}word_list = jieba.cut(text, cut_all=False)return " ".join([word for word in word_list if word not in stopwords and len(word) > 1])# 4. 创建不同形状的遮罩
def create_shapes(width=400, height=400):# 矩形rect_mask = None# 圆形x, y = np.ogrid[:height, :width]circle_mask = (x - height / 2) ** 2 + (y - width / 2) ** 2 > (min(width, height) / 2 - 10) ** 2circle_mask = 255 * circle_mask.astype(int)# 心形t = np.linspace(0, 2 * np.pi, 1000)x = 16 * np.sin(t) ** 3y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)# 标准化到图像尺寸x = ((x - x.min()) / (x.max() - x.min()) * width * 0.8 + width * 0.1).astype(int)y = ((y - y.min()) / (y.max() - y.min()) * height * 0.8 + height * 0.1).astype(int)heart_mask = np.ones((height, width)) * 255for i in range(len(x)):if 0 <= x[i] < width and 0 <= y[i] < height:heart_mask[y[i], x[i]] = 0# 填充心形内部from scipy.ndimage import binary_fill_holesheart_mask = binary_fill_holes(heart_mask == 0).astype(int) * 255# 五角星star_mask = np.ones((height, width)) * 255cx, cy = width // 2, height // 2r = min(width, height) // 3for i in range(height):for j in range(width):x, y = j - cx, i - cyangle = np.arctan2(y, x) % (2 * np.pi)distance = np.sqrt(x ** 2 + y ** 2)# 五角星的极坐标方程k = 5 # 五角星的角数star_radius = r * (0.5 * np.cos(k * angle) + 0.5)if distance <= star_radius:star_mask[i, j] = 0return {'rect': rect_mask,'circle': circle_mask,'heart': heart_mask,'star': star_mask}# 5. 生成静态词云
def generate_static_wordcloud(mask_shape, title, bg_color='white', contour_color='pink', colormap='viridis',output_file=None):# 创建词云对象wc = WordCloud(font_path=font_prop.get_file() if font_prop.get_file() else None,background_color=bg_color,mask=mask_shape,max_words=200,contour_width=2,contour_color=contour_color,collocations=False,width=800,height=600,colormap=colormap,prefer_horizontal=0.9)wc.generate(word_string)# 显示词云plt.figure(figsize=(10, 8))plt.imshow(wc, interpolation='bilinear')plt.axis('off')plt.title(title, fontproperties=font_prop)if output_file:plt.savefig(output_file, dpi=300, bbox_inches='tight')print(f"已保存图片: {output_file}")plt.show()# 6. 生成多层词云
def generate_multi_layer_wordcloud(output_file=None):# 创建自定义颜色映射colors1 = [(0.1, 0.1, 0.3), (0.4, 0.4, 0.8)] # 深蓝色到浅蓝色colors2 = [(0.1, 0.3, 0.1), (0.4, 0.8, 0.4)] # 深绿色到浅绿色colors3 = [(0.3, 0.1, 0.1), (0.8, 0.4, 0.4)] # 深红色到浅红色cmap1 = LinearSegmentedColormap.from_list('custom1', colors1)cmap2 = LinearSegmentedColormap.from_list('custom2', colors2)cmap3 = LinearSegmentedColormap.from_list('custom3', colors3)# 基本词云plt.figure(figsize=(15, 12))# 第一层:高频词plt.subplot(2, 2, 1)wc1 = WordCloud(font_path=font_prop.get_file() if font_prop.get_file() else None,background_color='white',max_words=50,max_font_size=150,colormap=cmap1,width=800,height=600).generate(word_string)plt.imshow(wc1, interpolation='bilinear')plt.axis('off')plt.title('第一层:高频词', fontproperties=font_prop)# 第二层:中频词plt.subplot(2, 2, 2)wc2 = WordCloud(font_path=font_prop.get_file() if font_prop.get_file() else None,background_color='white',max_words=100,max_font_size=100,min_font_size=20,colormap=cmap2,width=800,height=600).generate(word_string)plt.imshow(wc2, interpolation='bilinear')plt.axis('off')plt.title('第二层:中频词', fontproperties=font_prop)# 第三层:低频词plt.subplot(2, 2, 3)wc3 = WordCloud(font_path=font_prop.get_file() if font_prop.get_file() else None,background_color='white',max_words=150,max_font_size=70,min_font_size=10,colormap=cmap3,width=800,height=600).generate(word_string)plt.imshow(wc3, interpolation='bilinear')plt.axis('off')plt.title('第三层:低频词', fontproperties=font_prop)# 综合多层词云plt.subplot(2, 2, 4)# 创建综合词云wc_combined = WordCloud(font_path=font_prop.get_file() if font_prop.get_file() else None,background_color='white',max_words=200,width=800,height=600,prefer_horizontal=0.9).generate(word_string)# 按频率排序并着色word_freq = wc_combined.process_text(word_string)sorted_words = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)# 根据排名设置不同颜色def color_func(word, font_size, position, orientation, random_state=None, **kwargs):rank = next((i for i, (w, _) in enumerate(sorted_words) if w == word), 0)if rank < len(sorted_words) * 0.2: # 前20%return "rgb({}, {}, {})".format(random.randint(0, 100), random.randint(0, 100), 200) # 蓝色elif rank < len(sorted_words) * 0.6: # 中间40%return "rgb({}, {}, {})".format(random.randint(0, 100), 200, random.randint(0, 100)) # 绿色else: # 后40%return "rgb({}, {}, {})".format(200, random.randint(0, 100), random.randint(0, 100)) # 红色wc_combined.recolor(color_func=color_func)plt.imshow(wc_combined, interpolation='bilinear')plt.axis('off')plt.title('综合多层词云', fontproperties=font_prop)plt.tight_layout()if output_file:plt.savefig(output_file, dpi=300, bbox_inches='tight')print(f"已保存图片: {output_file}")plt.show()# 7. 生成动态词云
def generate_animated_wordcloud(output_file=None):# 创建词云对象wc = WordCloud(font_path=font_prop.get_file() if font_prop.get_file() else None,background_color='white',max_words=100,width=800,height=600,prefer_horizontal=0.9)wc.generate(word_string)# 创建画布和图形fig, ax = plt.subplots(figsize=(10, 8))plt.axis('off')plt.title('动态词云', fontproperties=font_prop)# 初始图像im = ax.imshow(np.zeros((100, 100)), interpolation='bilinear')# 更新函数def update(frame):# 随机改变颜色def random_color_func(word=None, font_size=None, position=None,orientation=None, font_path=None, random_state=None):h = 360.0 * random.randint(0, 240) / 240.0s = 100.0 * random.randint(60, 100) / 100.0l = 100.0 * random.randint(30, 70) / 100.0return f"hsl({h}, {s}%, {l}%)"# 重新着色词云wc.recolor(color_func=random_color_func)im.set_data(wc)return im,# 创建动画ani = FuncAnimation(fig, update, frames=range(20), interval=500, blit=True)if output_file:try:# 保存为GIFani.save(output_file, writer='pillow', fps=2)print(f"已保存动态词云: {output_file}")except Exception as e:print(f"保存动态词云失败: {e}")print("尝试保存为静态图片...")plt.savefig(output_file.replace('.gif', '.png'), dpi=300, bbox_inches='tight')print(f"已保存静态图片: {output_file.replace('.gif', '.png')}")plt.show()# 8. 生成3D效果词云(使用不同颜色层次模拟深度)
def generate_3d_wordcloud(output_file=None):# 创建词云对象wc = WordCloud(font_path=font_prop.get_file() if font_prop.get_file() else None,background_color='white',max_words=150,width=800,height=600,prefer_horizontal=0.9)wc.generate(word_string)# 按频率排序word_freq = wc.process_text(word_string)sorted_words = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)# 颜色映射 - 模拟深度def depth_color_func(word, font_size, position, orientation, random_state=None, **kwargs):rank = next((i for i, (w, _) in enumerate(sorted_words) if w == word), 0)depth = rank / len(sorted_words)# 前景词 - 亮色if depth < 0.3:r = int(200 - depth * 100)g = int(100 + depth * 150)b = int(100 + depth * 150)return f"rgb({r}, {g}, {b})"# 中景词 - 中等亮度elif depth < 0.7:r = int(150 - depth * 50)g = int(150 - depth * 50)b = int(200 - depth * 50)return f"rgb({r}, {g}, {b})"# 背景词 - 暗色else:r = int(50 + depth * 50)g = int(50 + depth * 50)b = int(150 - depth * 50)return f"rgb({r}, {g}, {b})"# 应用颜色wc.recolor(color_func=depth_color_func)# 显示词云plt.figure(figsize=(10, 8))plt.imshow(wc, interpolation='bilinear')plt.axis('off')plt.title('3D效果词云', fontproperties=font_prop)if output_file:plt.savefig(output_file, dpi=300, bbox_inches='tight')print(f"已保存图片: {output_file}")plt.show()# 主程序
if __name__ == "__main__":# 读取文本text = load_text("千千阙歌-歌词.txt")if not text:# 使用示例文本text = "红日升在东方 其大道满霞光 我何其幸 生于你怀 承一脉血流淌 难同当 福共享 挺立起了脊梁 吾国万疆 以仁爱 千年不灭的信仰"# 分词处理word_string = chinese_text_segmentation(text)# 创建形状遮罩shapes = create_shapes()# 创建输出目录output_dir = "词云输出"os.makedirs(output_dir, exist_ok=True)# 生成各种形状的词云generate_static_wordcloud(shapes['rect'], '矩形词云', colormap='plasma',output_file=f"{output_dir}/矩形词云.png")generate_static_wordcloud(shapes['circle'], '圆形词云', colormap='viridis',output_file=f"{output_dir}/圆形词云.png")generate_static_wordcloud(shapes['heart'], '心形词云', colormap='Reds',output_file=f"{output_dir}/心形词云.png")generate_static_wordcloud(shapes['star'], '星形词云', colormap='YlOrBr',output_file=f"{output_dir}/星形词云.png")# 生成多层词云generate_multi_layer_wordcloud(output_file=f"{output_dir}/多层词云.png")# 生成动态词云generate_animated_wordcloud(output_file=f"{output_dir}/动态词云.gif")# 生成3D效果词云generate_3d_wordcloud(output_file=f"{output_dir}/3D效果词云.png")print(f"所有词云已保存到 '{output_dir}' 目录")
1.矩形词云图
2.圆形词云图
3.心形词云图
4.星形词云图
5.多层词云图
6.动态词云图
7.3D效果词云图
4、文献指纹练习(Literature Fingerprinting)
数据来源:实验-第六章文件夹,《师说》-韩愈.txt
尝试构造该文本内容的文献指纹。
要求:将操作步骤逐一展示,描述背后的原理。内容要求有层次有逻辑。
文献指纹是用于唯一标识文献内容的一种特征表示,其原理是通过对文献内容进行特定处理,提取出能代表该文献独特性的信息。下面以一种基于词频统计结合哈希算法的方式来构造《师说》文本的文献指纹,并使用matplotlib
库绘制词频统计的柱状图来展示文本中词汇的频率分布情况。
原理
- 哈希算法:哈希算法是一种将任意长度的数据映射为固定长度值的函数。在这个过程中,无论输入数据的大小和内容如何,哈希算法都会生成一个固定长度的哈希值。对于不同的输入,哈希值通常是不同的(虽然理论上存在哈希冲突的可能性,但在实际应用中概率极低)。因此,通过计算哈希值,可以将文本内容转换为一个唯一的特征标识,即文献指纹。
sha256
算法:sha256
是一种广泛使用的哈希算法,它生成的哈希值长度为 256 位(32 字节),具有较高的安全性和稳定性,能够有效地减少哈希冲突的发生,适用于文本内容的指纹生成。
操作步骤
-
文本预处理:读取文本内容,将文本转换为小写形式,去除标点符号,这样可以统一文本格式,方便后续处理。
-
分词:使用合适的分词工具(如
jieba
库)将文本分割成单个的词语。 -
词频统计:统计每个词语在文本中出现的频率,记录这些频率信息。
-
生成特征向量:根据词频统计结果,选取出现频率较高的若干个词语及其频率组成特征向量。这一步是为了提取文本的关键特征,减少数据维度同时保留重要信息。
-
计算文献指纹:将特征向量转换为字符串形式,使用哈希算法(如
MD5
)计算该字符串的哈希值,得到文献指纹。哈希算法能将任意长度的数据映射为固定长度的哈希值,不同的输入通常会得到不同的哈希值,从而保证指纹的唯一性。 -
绘制词频统计图像:使用
matplotlib
库,根据词频统计结果绘制柱状图,直观展示文本中词汇的频率分布。
import jieba
import string
import hashlib
import matplotlib.pyplot as plt
from wordcloud import WordCloud# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedef preprocess_text(text):# 转换为小写text = text.lower()# 去除标点符号text = text.translate(str.maketrans('', '', string.punctuation))return textdef tokenize_text(text):return jieba.lcut(text)def calculate_word_frequency(tokens):word_freq = {}for token in tokens:if token in word_freq:word_freq[token] += 1else:word_freq[token] = 1return word_freqdef select_top_words(word_freq, top_n=10):sorted_word_freq = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)top_words = sorted_word_freq[:top_n]return top_wordsdef generate_fingerprint(top_words):feature_vector = ''.join([f"{word}:{freq}," for word, freq in top_words])fingerprint = hashlib.md5(feature_vector.encode()).hexdigest()return fingerprintdef plot_word_frequency(word_freq):words = list(word_freq.keys())frequencies = list(word_freq.values())plt.figure(figsize=(10, 6))plt.bar(words, frequencies)plt.xlabel('Words')plt.ylabel('Frequency')plt.title('Word Frequency Distribution in "Shi Shuo"')plt.xticks(rotation=45)plt.tight_layout()plt.show()def generate_wordcloud(word_freq):# 创建词云对象wc = WordCloud(font_path='C:/Windows/Fonts/SimHei.ttf', # 确保字体能正确显示中文background_color='white',width=800,height=600,max_words=200)# 根据词频生成词云wc.generate_from_frequencies(word_freq)# 显示词云图plt.figure(figsize=(10, 8))plt.imshow(wc, interpolation='bilinear')plt.axis('off')plt.title('《师说》词云图')plt.show()if __name__ == "__main__":with open("《师说》-韩愈.txt", 'r', encoding='utf-8') as file:text = file.read()preprocessed_text = preprocess_text(text)tokens = tokenize_text(preprocessed_text)word_freq = calculate_word_frequency(tokens)top_words = select_top_words(word_freq)fingerprint = generate_fingerprint(top_words)print(f"文献指纹: {fingerprint}")plot_word_frequency(word_freq)generate_wordcloud(word_freq)
图像展示
相关文章:
文本数据可视化
目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 原理 操作步骤 图像展示 【实验目的】 了解什么是文本可视化 掌握文本可视化的相关技术 文本信息的提取和可视表达 本次实验是将某一文本进行可视化生成词云图片 尝试构造文本指纹 【实验原理】…...
qt命名空间演示
#ifndef CIR_H #define CIR_Hnamespace cir {double PI3.141592653;//获取圆行周长double getLenthOfCircle(double radius){return 2*PI*radius;}//获取圆形面积double getAreaOfCircle(double radius){return PI*radius*radius;}} #endif // CIR_H#include <iostream> …...
Android学习总结之布局篇
一、大厂面试高频布局真题解析 1. ConstraintLayout vs RelativeLayout 深度对比 真题问法: "为什么说 ConstraintLayout 是 RelativeLayout 的替代方案?两者在布局原理、性能、复杂场景处理上有什么核心区别?" 核心考点解析&am…...
星际篮球争霸赛/MVP争夺战 - 华为OD机试真题(A卷、Java题解)
华为OD机试题库《C》限时优惠 9.9 华为OD机试题库《Python》限时优惠 9.9 华为OD机试题库《JavaScript》限时优惠 9.9 针对刷题难,效率慢,我们提供一对一算法辅导, 针对个人情况定制化的提高计划(全称1V1效率更高)。 看…...
RNN(循环神经网络)原理与结构
1 RNN(循环神经网络)原理与结构 循环神经网络(Recurrent Neural Network, RNN)是一类专门用于处理序列数据(如时间序列、文本、语音等)的深度学习模型。与传统的前馈神经网络不同,RNN在每个时间…...
Claude深度解析:从技术原理到实战应用的全栈指南
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言:AI编程新纪元中的Claude 在生成式AI技术爆发的2024年,Anthropic的Claude系列模型以卓越的长文本处理能力和精确的代码生成质量,正在重塑程序员的开发范式。当开发者…...
9.渐入佳境 -- 套接字的多种可选项
前言 套接字具有多种特性,这些特性可通过可选项更改。本章将介绍更改套接字可选项的方法,并以此为基础进一步观察套接字内部。 一、套接字可选项和I/O缓冲大小 我们进行套接字编程时往往只关注数据通信,而忽略了套接字具有的不同特性。但是…...
AI日报 - 2024年05月13日
🌟 今日概览 (60秒速览) ▎🚀 技术突破 | Flow-GRPO将在线RL引入流匹配模型,提升性能并降低训练成本;「层内循环」(ILR)技术无需增加参数即可提升Transformer性能。▎💬 行业热议 | ICML强制作者参会政策引发广泛争议…...
开发工具分享: Web前端编码常用的在线编译器
1.OneCompiler 工具网址:https://onecompiler.com/ OneCompiler支持60多种编程语言,在全球有超过1280万用户,让开发者可以轻易实现代码的编写、运行和共享。 OneCompiler的线上调试功能完全免费,对编程语言的覆盖也很全&#x…...
Android学习总结之线程池篇
一、线程池参数调优实战真题 真题 1:直播 APP 弹幕加载线程池设计 题目描述:直播 APP 需要实时加载弹幕数据(网络请求,IO 密集型),同时渲染弹幕视图(UI 操作需切主线程)࿰…...
03.Golang 切片(slice)源码分析(二、append实现)
Golang 切片(slice)源码分析(二、append实现) 前言: Golang 切片(slice)源码分析(一、定义与基础操作实现) 在前面的文章我们介绍了,切片的结构体与创建\扩容…...
Python实例题:pygame开发打飞机游戏
目录 Python实例题 题目 pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本 代码解释 初始化部分: 游戏主循环: 退出部分: 运行思路 注意事项 Python实例题 题目 pygame开发打飞机游戏 pygame-aircraft-game使用 Pygame 开发…...
MySQL创建了一个索引表,如何来验证这个索引表是否使用了呢?
MySQL创建了一个索引表,如何来验证这个索引表是否使用了呢? 1. 使用 EXPLAIN 分析查询执行计划 在 SQL 查询前添加 EXPLAIN 关键字,查看 MySQL 优化器是否选择了你的索引。 示例: EXPLAIN SELECT * FROM db关键输出字段: typ…...
Go语言多线程爬虫与代理IP反爬
有个朋友想用Go语言编写一个多线程爬虫,并且使用代理IP来应对反爬措施。多线程在Go中通常是通过goroutine实现的,所以应该使用goroutine来并发处理多个网页的抓取。然后,代理IP的话,可能需要一个代理池,从中随机选择代…...
Linux文件编程:操作流程与内核机制
在 Linux 操作系统中,一切皆文件,这意味着从硬盘上的数据文件、设备驱动、到管道、套接字等都以文件的形式存在。Linux 的文件系统将这些不同类型的文件统一抽象成文件对象,允许程序通过文件描述符来访问它们。 一、核心概念解析 文件描述符…...
用短说社区搭建的沉浸式生活方式分享平台
你是否想打造一个融合小红书式种草基因与论坛深度互动的全新社区?本文依托短说社区论坛系统的社区功能规划,一起来规划,如何搭建一个集内容分享、社交互动、消费决策于一体的沉浸式生活社区。 短说社区的界面样式支持普通资讯列表或瀑布流列…...
【ASR学习笔记】:语音识别领域基本术语
一、基础术语 ASR (Automatic Speech Recognition) 自动语音识别,把语音信号转换成文本的技术。 VAD (Voice Activity Detection) 语音活动检测,判断一段音频里哪里是说话,哪里是静音或噪音。 Acoustic Model(声学模型࿰…...
2025年best好用的3dsmax插件和脚本
copitor 可以从一个3dsmax场景里将物体直接复制到另一个场景中 Move to surface 这个插件可以将一些物体放到一个平面上 instancer 实体器,举例:场景中有若干独立的光源,不是实体对象,我们可以使用instancer将他变成实体。 paste …...
电厂除灰系统优化:时序数据库如何降低粉尘排放
在环保要求日益严苛的当下,电厂作为能源生产的重要主体,其除灰系统的运行效率与粉尘排放控制效果紧密相关。传统除灰系统在数据处理和排放控制方面存在一定局限性,而时序数据库凭借对时间序列数据的高效存储、处理和分析能力,为电…...
upload-labs通关笔记-第2关 文件上传之MIME绕过
目录 一、MIME字段 1. MIME 类型的作用 2. 常见的 MIME 类型 二、实验准备 1.构造脚本 2.打开靶场 3.源码分析 三、修改MIME字段渗透法 1.选择shell脚本 2.bp开启拦截 3.上传脚本bp拦包 4.bp改包 5.获取脚本地址 6.获取木马URL 7.hackbar渗透 8.蚁剑渗透 本文通…...
未来技术展望:光子量子计算集成与连续变量可视化
光子量子计算作为量子计算的重要分支,凭借其独特的光子传输优势和连续变量编码方式,正在量子计算领域掀起新的技术革命。以Xanadu公司的Borealis光量子处理器为代表,连续变量量子计算的可视化技术将面临全新的挑战与机遇。以下从技术适配、可视化方法及工具开发三个维度展开…...
vite项目使用i18n-ally未读取到文件
前言 在使用 Vue CLI 创建的Vue 3项目中,语言文件(src/lang/zh.js和en.js)正常加载。 .vscode/settings.json如下:i18n-ally.enabledParsers中增加了js {"i18n-ally.localesPaths": ["src/i18n","src/…...
yarn workspace使用指南
作用 Yarn workspace 是 Yarn 包管理工具中的一个功能,主要用于管理多包项目(monorepo)。它的主要作用如下: 支持多包结构:允许在一个仓库中管理多个独立的包或项目。项目间依赖管理:方便地在不同包之间添…...
Spring Boot 参数验证
一、依赖配置 首先确保在 pom.xml 中添加了以下依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency> 这个依赖包含了 Hibernate Valida…...
Electron学习大纲
Electron 实际工作学习大纲路线,结合技术原理、实战开发与工程化最佳实践,分为 5 大核心阶段,每个阶段包含关键知识点和实践目标,帮助快速掌握桌面应用开发能力: 阶段一:Electron 基础与环境搭建(1-2周) 核心概念与架构Electron 组成: 主进程(Main Process):控制应…...
Linux 系统中设置开机启动脚本
Linux 系统中设置开机启动脚本有多种方法,适用于不同的场景和需求。以下是几种最常用且详细的方法: 核心理念: 无论哪种方法,核心都是让系统在启动过程中的某个阶段执行你的脚本。 1. 使用 systemd (推荐,现代 Linux 发行版的标准) systemd 是目前大多数主流 Linux 发行…...
如何解决Deepseek服务器繁忙的问题?
在现如今互联网技术飞速发展的时代,AI技术也逐渐开始兴起,Deepseek作为一款强大的AI工具,可以帮助各个行业的用户高效的处理复杂任务,但是,用户在使用这一工具的过程中,可能会遇到服务器繁忙的问题…...
四、STM32 HAL库API完全指南:从功能分类到实战示例
STM32 HAL库API完全指南:从功能分类到实战示例 一、HAL库API的总体架构 STM32 HAL库(Hardware Abstraction Layer)作为STMicroelectronics推出的统一驱动框架,提供了覆盖所有STM32外设的标准化API。HAL库的API设计遵循严格的分层…...
集成学习——Bagging,Boosting
一.什么是集成学习 集成学习的基本思想是通过结合多个基学习器的预测结果,来提高模型的泛化能力和稳定性。这些基学习器可以是相同类型的算法,也可以是不同类型的算法。 当基学习器之间具有一定的差异性时,它们在面对不同的样本子集或特征子…...
如何有效追踪需求的实现情况
有效追踪需求实现情况,需要清晰的需求定义、高效的需求跟踪工具、持续的沟通反馈机制,其中高效的需求跟踪工具尤为关键。 使用需求跟踪工具能确保需求实现进度可视化、提高团队协作效率,并帮助识别和管理潜在风险。例如,使用专业的…...
网页Web端无人机直播RTSP视频流,无需服务器转码,延迟300毫秒
随着无人机技术的飞速发展,全球无人机直播应用市场也快速扩张,从农业植保巡检到应急救援指挥,从大型活动直播到智慧城市安防,实时视频传输已成为刚需。预计到2025年,全球将有超过1000万架商用无人机搭载直播功能&#…...
基于SpringBoot的蜗牛兼职网设计与实现|源码+数据库+开发说明文档
一、项目简介 蜗牛兼职网是一个集职位信息发布、用户申请、企业管理、后台运维于一体的校园类兼职招聘平台,使用 SpringBoot 作为后端核心框架,搭配 Layui Bootstrap 实现前端页面开发,前后端结合,功能齐全。 系统共分为 三种角…...
kafka消费组
Kafka【二】关于消费者组(Consumer Group)、分区(partition)和副本(replica)的理解_consumergroup-CSDN博客 定义: 消费者组是一组可以协同工作的消费者实例的集合。 每个消费者都属于一个特定…...
每日一题洛谷P8662 [蓝桥杯 2018 省 AB] 全球变暖c++
P8662 [蓝桥杯 2018 省 AB] 全球变暖 - 洛谷 (luogu.com.cn) DFS #include<iostream> using namespace std; char a[1001][1001]; bool s[1001][1001]; int res 0; int n; bool flag true; int dx[4] { -1,0,1,0 }; int dy[4] { 0,-1,0,1 }; void dfs(int x, int y)…...
2025年Energy SCI1区TOP,改进雪消融优化算法ISAO+电池健康状态估计,深度解析+性能实测
目录 1.摘要2.雪消融优化算SAO原理3.改进策略4.结果展示5.参考文献6.代码获取7.读者交流 1.摘要 锂离子电池(LIBs)的健康状态(SOH)估计对于电池健康管理系统至关重要,为了准确估计LIBs的健康状态,本文提出…...
docker使用过程中遇到概念问题
容器和虚拟机的区别 容器共享主机内核;虚拟机占用主机内核硬件容器的启动速度是秒级别;虚拟机的启动速度是分钟级别容器资源占用低,性能接近原生;虚拟机资源占用高,性能有一定的损耗容器是进程级别的隔离;…...
leetcode-hot-100(双指针)
1. 移动零 题目链接:移动 0 题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 解答 类似于签到题&#x…...
力扣HOT100之二叉树:101. 对称二叉树
这道题我本来想着挑战一下自己,尝试着用迭代的方法来做,然后就是用层序遍历,将每一层的元素收集到一个临时的一维向量中,然后再逐层判断每一层是否都是轴对称的,一旦发现某一层不是轴对称的,就直接return f…...
深入解读tcpdump:原理、数据结构与操作手册
一、tcpdump 核心原理 tcpdump 是基于 libpcap 库实现的网络数据包捕获与分析工具,其工作原理可分解为以下层次: 数据包捕获机制 底层依赖:通过操作系统的 数据链路层接口(如 Linux 的 PF_PACKET 套接字或 AF_PACKET 类型&#x…...
HTML5 中实现盒子水平垂直居中的方法
在 HTML5 中,有几种方法可以让一个定位的盒子在父容器中水平垂直居中。以下是几种常用的方法: 使用 Flexbox 布局 <div class"parent"><div class"child">居中内容</div> </div><style>.parent {di…...
个人博客系统测试报告
目录 1 项目背景 2 项目功能 3 项目测试 3.1 测试用例 3.2 登录页面测试 3.3 博客列表页面测试 3.4 博客详情页面测试 3.5 自动化测试 3.5.1 Utils类 3.5.2 登录测试页面类 3.5.3 博客列表页测试类 3.5.4 博客详情页测试类 3.5.5 博客修改页测试类 3.5.6 未登录…...
适配WIN7的最高版本Chrome谷歌浏览器109版本下载
本仓库提供了一个适用于Windows 操作系统的谷歌浏览器109版本的离线安装包。 点击下面链接下载 WIN7的最高版本Chrome谷歌浏览器109版本下载...
从规划到完善,原型标注图全流程设计
一、原型标注图:设计到开发的精准翻译器 1. 设计意图的精准传递 消除模糊性:将设计师的视觉、交互逻辑转化为可量化的数据(尺寸、颜色、动效参数),避免开发“凭感觉还原”。 统一理解标准:通过标注建立团…...
极狐GitLab 通用软件包存储库功能介绍
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 极狐GitLab 通用软件包存储库 (BASIC ALL) 在项目的软件包库中发布通用文件,如发布二进制文件。然后,…...
系统架构-嵌入式系统架构
原理与特征 嵌入式系统的典型架构可概括为两种模式,即层次化模式架构和递归模式架构 层次化模式架构,位于高层的抽象概念与低层的更加具体的概念之间存在着依赖关系,封闭型层次架构指的是,高层的对象只能调用同一层或下一层对象…...
hive两个表不同数据类型字段关联引发的数据倾斜
不同数据类型引发的Hive数据倾斜解决方案 #### 一、原因分析 当两个表的关联字段存在数据类型不一致时(如int vs string、bigint vs decimal),Hive会触发隐式类型转换引发以下问题: Key值的精度损失:若关联字…...
制作一款打飞机游戏45:简单攻击
粒子系统修复 首先,我们要加载cow(可能是某个项目或资源),然后直接处理粒子系统。你们看到在粒子系统中,我们仍然有X滚动。这现在已经没什么意义了,因为我们正在使用一个奇怪的新系统。所以我们实际上不再…...
《Vuejs设计与实现》第 5 章(非原始值响应式方案) 中
目录 5.4 合理触发响应 5.5 浅响应与深响应 5.6 只读和浅只读 5.4 合理触发响应 为了合理触发响应,我们需要处理一些问题。 首先,当值没有变化时,我们不应该触发响应: const obj = { foo: 1 } const p = new Proxy(obj, { /* ... */ })effect(() => {console.log(p…...
深入理解 Webpack 核心机制与编译流程
🤖 作者简介:水煮白菜王,一位前端劝退师 👻 👀 文章专栏: 前端专栏 ,记录一下平时在博客写作中,总结出的一些开发技巧和知识归纳总结✍。 感谢支持💕💕&#…...
okhttp3.Interceptor简介-笔记
1. Interceptor 简介 okhttp3.Interceptor 是 OkHttp 提供的一个核心接口,用于拦截 HTTP 请求和响应,允许开发者在请求发送前和响应接收后插入自定义逻辑。它在构建灵活、可扩展的网络请求逻辑中扮演着重要角色。常见的用途包括: 添加请求头…...