当前位置: 首页 > news >正文

babeltrace与CTF相关学习笔记-1

babeltrace与CTF相关学习笔记-1

  • 写在前面
  • 代码下载
    • 代码
    • 代码编译
      • 相关的依赖
      • bootstrap
      • configure过程
      • 编译和安装
  • 编译完成后,初步的审视
    • 找到与ctf相关的工程
    • tests
    • ./test-ctf-writer.sh
      • 先运行./test-ctf-writer.sh
      • ctf-writer脚本
  • vscode跟踪ctf-writer.c
  • 后记:

写在前面

背景是了解完大概的Nanolog之后,还需要准备实现将nanolog转为ctf。
最开始的方向,的确是按之前的计划,采用lttng usr lib。
写了一个工程,后面可能用上。
但lttng lib相对难用,有时间我们详述。简言之,过多地与C语言的宏绑定。我是不喜欢这种编码方式的,不灵活。
所以,因为前面虽然GPT强调应该基于lttng,但查看文章也发现,babeltrace不仅有读和转换,还有写入的ctf的能力。
所以,抽时间,还是临时调研一下。故有本文。

代码下载

代码

https://github.com/efficios/babeltrace
git clone下来即可。

代码编译

babeltrace的编译并不是特别简单。有两方面困难,一是选择多,另一个是依赖多。

相关的依赖

apt install autoconfsudo apt-get install libglib2.0-dev sudo apt-get install dh-autoreconf bison libdw-dev libelf-dev flex uuid-dev libpopt-dev

bootstrap

 ./bootstrap

configure过程

如下三选一,我选的最后下,因为需要调试

 ./configure./configure --enable-debug-info BABELTRACE_DEBUG_MODE=1 BABELTRACE_DEV_MODE=1 BABELTRACE_MINIMAL_LOG_LEVEL=TRACE ./configure   --enable-debug-info

编译和安装

  makemake install

我目前遇到点问题,主lib目前不能跟踪,可能是configure时,忘了加:BABELTRACE_DEBUG_MODE=1
如果也遇到这样的情况,将下面的几个O2,改为O0
在这里插入图片描述

编译完成后,初步的审视

找到与ctf相关的工程

vscode加载后,大至看了一下,
看到两个ctf-writer目录:
./src/ctf-writer
./tests/ctf-writer
事后证明,这两个目录都有用。

tests

毕竟我在风河呆过,算是半个科班出身,对tests或者ptest,是相当熟悉的。自吹一下。
所以,先锁定tests目下录的内容。

/data/babeltrace/babeltrace/tests/ctf-writer# find . -type f -executable
./test-ctf-writer.sh
./.libs/ctf-writer
./ctf-writer

根所上面的信息,我们知道,这里有三个文件需要关注。
/data/babeltrace/babeltrace/tests/ctf-writer/test-ctf-writer.sh
解释一下:

./test-ctf-writer.sh

先运行./test-ctf-writer.sh

看到大部分测试例都通过了。

ok 275 - Create an event class
ok 276 - Reject addition of a field with an empty name to an event
ok 277 - Reject addition of a field with a NULL type to an event
ok 278 - Reject addition of a type with an illegal name to an event
ok 279 - Add field of type unsigned integer to an event
ok 280 - Add field of type signed integer to an event
ok 281 - Add composite structure to an event
ok 282 - bt_ctf_event_class_get_name returns a correct name
ok 283 - bt_ctf_event_class_get_id returns a negative value when not set
ok 284 - bt_ctf_event_class_set_id handles NULL correctly
ok 285 - Set an event class' id
ok 286 - bt_ctf_event_class_get_id returns the correct value
ok 287 - event class has the expected initial log level
ok 288 - as expected, event class has no initial EMF URI
ok 289 - bt_ctf_event_class_set_log_level handles a NULL event class correctly
ok 290 - bt_ctf_event_class_set_log_level handles an unknown log level correctly
ok 291 - bt_ctf_event_class_set_log_level succeeds with a valid log level
ok 292 - bt_ctf_event_class_get_log_level returns the expected log level
ok 293 - bt_ctf_event_class_set_emf_uri handles a NULL event class correctly
ok 294 - bt_ctf_event_class_set_emf_uri succeeds with a valid EMF URI
ok 295 - bt_ctf_event_class_get_emf_uri returns the expected EMF URI
ok 296 - bt_ctf_event_class_set_emf_uri succeeds with NULL (to reset)
ok 297 - as expected, event class has no EMF URI after reset
ok 298 - Reject addition of NULL event class to a stream class
ok 299 - Add an event class to stream class
ok 300 - bt_ctf_event_class_get_stream_class returns the correct stream class
ok 301 - bt_ctf_event_class_get_field_by_name handles an invalid field name correctly
ok 302 - Instantiate a complex event
ok 303 - bt_ctf_event_get_class returns the correct event class
ok 304 - Use bt_ctf_event_get_payload to get a field instance
ok 305 - bt_ctf_field_integer_unsigned_get_value succeeds after setting a value
ok 306 - bt_ctf_field_integer_unsigned_get_value returns the correct value
ok 307 - bt_ctf_field_integer_signed_get_value succeeds after setting a value
ok 308 - bt_ctf_field_integer_signed_get_value returns the correct value
ok 309 - bt_ctf_field_string_append succeeds
ok 310 - bt_ctf_field_string_append_len succeeds (append 5 characters)
ok 311 - bt_ctf_field_string_append_len succeeds (append 0 characters)
ok 312 - bt_ctf_field_string_append_len succeeds (append 0 characters)
ok 313 - bt_ctf_field_string_get_value returns a string
ok 314 - bt_ctf_field_string_get_value returns a correct value
ok 315 - bt_ctf_field_type_variant_get_field_type_from_tag returns the correct field type
ok 316 - Set a sequence field's length
ok 317 - Append a complex event to a stream
ok 318 - Flush a stream containing a complex event
ok 319 - two event classes with the same name may cohabit within the same stream class
ok 320 - two event classes with the same ID cannot cohabit within the same stream class
ok 321 - bt_ctf_stream_class_get_trace returns NULL when stream class is orphaned
ok 322 - bt_ctf_stream_class_get_trace returns the correct trace after a stream has been created
ok 323 - Created a stream class with default attributes and an empty stream
ok 324 - Get metadata string
12-12 01:52:28.276 414616 414616 W PLUGIN/CTF/META/WARN-MEANINGLESS-HEADER-FIELDS warn_meaningless_field@plugins/ctf/common/src/metadata/tsdl/ctf-meta-warn-meaningless-header-fields.cpp:18 User field found in packet header: ignoring: name="custom_trace_packet_header_field"
12-12 01:52:28.276 414616 414616 W PLUGIN/CTF/META/WARN-MEANINGLESS-HEADER-FIELDS warn_meaningless_field@plugins/ctf/common/src/metadata/tsdl/ctf-meta-warn-meaningless-header-fields.cpp:18 User field found in event header: ignoring: name="seq_len"
12-12 01:52:28.276 414616 414616 W PLUGIN/CTF/META/WARN-MEANINGLESS-HEADER-FIELDS warn_meaningless_field@plugins/ctf/common/src/metadata/tsdl/ctf-meta-warn-meaningless-header-fields.cpp:18 User field found in packet header: ignoring: name="custom_trace_packet_header_field"
12-12 01:52:28.276 414616 414616 W PLUGIN/CTF/META/WARN-MEANINGLESS-HEADER-FIELDS warn_meaningless_field@plugins/ctf/common/src/metadata/tsdl/ctf-meta-warn-meaningless-header-fiel

结尾处似乎有点问题

## 跟踪 ./test-ctf-writer.sh
#!/bin/bash
if [ -n "${BT_TESTS_SRCDIR:-}" ]; thenUTILSSH="$BT_TESTS_SRCDIR/utils/utils.sh"
elseUTILSSH="$(dirname "$0")/../utils/utils.sh"
fi
# shellcheck source=../utils/utils.sh
source "$UTILSSH"
echo $BT_TESTS_BT2_BIN
"${BT_TESTS_BUILDDIR}/ctf-writer/ctf-writer" "$BT_TESTS_BT2_BIN"

运行后,发现
$BT_TESTS_BT2_BIN的值为:
/data/babeltrace/babeltrace/tests/…/src/cli/babeltrace2
也就是,将可执行文件作为输入
这里目前我还没有完全理解,
file /data/babeltrace/babeltrace/tests/…/src/cli/babeltrace2
/data/babeltrace/babeltrace/tests/…/src/cli/babeltrace2: Bourne-Again shell script, ASCII text executable
可以看到,我们只知道,这是一个脚本。内部指向了一些.a
这个放一下。
我们目前只是想得到参数。

ctf-writer脚本

${BT_TESTS_BUILDDIR}/ctf-writer/ctf-writer
还是一个脚本。
虽然这个脚本很长,但在这里下断,
原来是指向可执行文件:./.libs/ctf-writer 和 上面的参数:
/data/babeltrace/babeltrace/tests/…/src/cli/babeltrace2
在这里插入图片描述有了这些信息,我们就可以构建vscode跟踪工程了

vscode跟踪ctf-writer.c

如上所述,
可执行文件是:./.libs/ctf-writer
main()在这个文件中。
/data/babeltrace/babeltrace/tests/ctf-writer/ctf-writer.c

.vscode/launch.json

{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"type": "bashdb","request": "launch","name": "Bash-Debug (ctf-writer)","cwd": "${workspaceFolder}","program": "${workspaceFolder}/tests/ctf-writer/ctf-writer","args": ["/data/babeltrace/babeltrace/tests/../src/cli/babeltrace2"]},{"type": "bashdb","request": "launch","name": "Bash-Debug (test-ctf-writer.sh)","cwd": "${workspaceFolder}","program": "${workspaceFolder}/tests/ctf-writer/test-ctf-writer.sh","args": []},{"name": "C++ Launch ctf_write_test","type": "cppdbg","request": "launch","program": "${workspaceFolder}/tests/ctf-writer/.libs/ctf-writer","args": ["${workspaceFolder}/tests/../src/cli/babeltrace2"],//"args": ["decompress","/tmp/logFile"],//"environment": [{ "name": "config", "value": "Debug" }],"cwd": "${workspaceFolder}/tests/ctf-writer","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

然后开始跟踪工程:
在这里插入图片描述上面的代码,现在我稍微有点熟悉了。
暂时到这里。

后记:

不能跟入babeltrace core的问题,在改变makefile后,没有解决。原因已经清楚了,小伙伴位自己解决吧:

root@xylxperf:/data/babeltrace/babeltrace/tests/ctf-writer/.libs# ls
ctf-writer
root@xylxperf:/data/babeltrace/babeltrace/tests/ctf-writer/.libs# ldd ctf-writerlinux-vdso.so.1 (0x00007ffc8ec6c000)libbabeltrace2-ctf-writer.so.0 => /lib/x86_64-linux-gnu/libbabeltrace2-ctf-writer.so.0 (0x00007fd850eca000)libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fd850d90000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd850b67000)/lib64/ld-linux-x86-64.so.2 (0x00007fd850f3e000)libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fd850af1000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd850a0a000)
root@xylxperf:/data/babeltrace/babeltrace/tests/ctf-writer/.libs# file ctf-writer
ctf-writer: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=b711a75943ce20beaa28b1b56113853c73ec1c76, for GNU/Linux 3.2.0, with debug_info, not stripped
root@xylxperf:/data/babeltrace/babeltrace/tests/ctf-writer/.libs# file libbabeltrace2-ctf-writer.so.0
libbabeltrace2-ctf-writer.so.0: cannot open `libbabeltrace2-ctf-writer.so.0' (No such file or directory)
root@xylxperf:/data/babeltrace/babeltrace/tests/ctf-writer/.libs# file libbabeltrace2-ctf-writer.so.0^C
root@xylxperf:/data/babeltrace/babeltrace/tests/ctf-writer/.libs# ls -l /lib/x86_64-linux-gnu/libbabeltrace2-ctf-writer.so.0
lrwxrwxrwx 1 root root 34 Mar 17  2022 /lib/x86_64-linux-gnu/libbabeltrace2-ctf-writer.so.0 -> libbabeltrace2-ctf-writer.so.0.0.0
root@xylxperf:/data/babeltrace/babeltrace/tests/ctf-writer/.libs# ls -l /lib/x86_64-linux-gnu/libbabeltrace2-ctf-writer.so.0.0.0
-rw-r--r-- 1 root root 261456 Mar 17  2022 /lib/x86_64-linux-gnu/libbabeltrace2-ctf-writer.so.0.0.0
root@xylxperf:/data/babeltrace/babeltrace/tests/ctf-writer/.libs# ls -lt
total 256
-rwxr-xr-x 1 root root 258512 Dec 12 02:16 ctf-writer
root@xylxperf:/data/babeltrace/babeltrace/tests/ctf-writer/.libs# file /lib/x86_64-linux-gnu/libbabeltrace2-ctf-writer.so.0.0.0
/lib/x86_64-linux-gnu/libbabeltrace2-ctf-writer.so.0.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=bbba9e66669c2cd836eadbd23fb7cae5015f904f, stripped
root@xylxperf:/data/babeltrace/babeltrace/tests/ctf-writer/.libs#

如下,现在链接的文件
libbabeltrace2-ctf-writer.so.0 => /lib/x86_64-linux-gnu/libbabeltrace2-ctf-writer.so.0 (0x00007fd850eca000)
是stripped的,而且,看样也不像是debug版,现在2024年12月12日,可是目前链到的库是2022年的。
应该是这个原因,大家自己处理吧。
我现在的处理方法是,将/usr/local/lib下的相关的内容,覆盖了/lib/x86_64-linux-gnu下的同名文件。
然后能够进入到核心库:
在这里插入图片描述

相关文章:

babeltrace与CTF相关学习笔记-1

babeltrace与CTF相关学习笔记-1 写在前面代码下载代码代码编译相关的依赖bootstrapconfigure过程编译和安装注 编译完成后,初步的审视找到与ctf相关的工程tests./test-ctf-writer.sh先运行./test-ctf-writer.shctf-writer脚本 vscode跟踪ctf-writer.c后记&#xff1…...

国内Chrome浏览器下载安装教程,谷歌浏览器最新下载教程

今天主要讲解的是国内Chrome浏览器下载安装教程,谷歌浏览器最新下载教程,包括确认浏览器版本、ChromeDriver 驱动的下载,同理,这个教程同样适用于windows版本的,linux 版本的, mac 版本的。 众所周知&…...

使用秘钥登录服务器

在我们测试或生产环境中,为了服务器安全性,有时可能需要以 SSH 密钥的方式登录服务器,接下来,将演示如何通过 SSH 私钥的方式来远程服务器。 一、远程服务器生成密钥对 1、首先在目标远程服务器下生成 SSH 密钥对 ssh-keygen然…...

vscode中PyQt5模块代码提示问题

在VSCode中使用PyQt5时遇到代码提示缺失的问题,尝试了更新jedi、使用Pylance插件以及修改python.autoComplete.extraPaths配置均未见效。 ## 配置qgis的vscode开发环境 在vscode编辑器中qgis的引入会报错,请按一下步骤解决: 1. 在vscode中&a…...

SpringBoot 整合 RabbitMQ 实现流量消峰

RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将 RocketMQ 捐献给了 Apache,当然了今天的主角还…...

Jenkins与SonarQube持续集成搭建及坑位详解

Jenkins和SonarQube都是软件开发过程中常用的工具,它们在代码管理、构建、测试和质量管理方面发挥着重要作用。以下是关于Jenkins与SonarQube的作用及整合步骤环境搭建的详细解释: 一、Jenkins与SonarQube的作用 Jenkins: Jenkins是一个开源的持续集成和交付工具,它可以帮…...

从YOLOv5到训练实战:易用性和扩展性的加强

文章目录 前言一、模型介绍二、YOLOv5网络结构1.Input(输入端):智能预处理与优化策略2.Backbone(骨干网络):高效特征提取3.NECK(颈部):特征增强与多尺度融合4.Prediction…...

聊聊Oracle自适应查询优化

成也AQO败也AQO 因为工作的原因,我们接触到的客户大部分是金融和运营商行业,这些客户有个最大的特点是追求稳定,对于使用数据库新特性持保守的态度,不会轻易尝试某些可能会导致生产系统不稳定的新特性。上线前通常都会将一些新特…...

MySQL其四,各种函数,以及模拟了炸裂函数创建用户等操作

目录 一、MySQL中的函数 1、IFNULL 2、IF 3、case (难点) 4、exists(难) --存在的意思 二、常见的函数 1、字符串函数 2、数学函数 3、日期函数 (使用频率不是很高) 4、其他函数 5、关于字符集的问题 6、mysql炸裂函数…...

浅谈 php 采用curl 函数库获取网页 cookie 和 带着cookie去访问 网页的方法!!!!

由于近段时间帮朋友开发一个能够查询正方教务系统的微信公众平台号。有所收获。这里总结下个人经验。 开讲前,先吐槽一下新浪云服务器,一个程序里的 同一个函数 在PC测试可以正常运行,在它那里就会挂的现象。 老样子,我将在代…...

ssm-springmvc-学习笔记

简介 简单的来说,就是一个在表述层负责和前端数据进行交互的框架 帮我们简化了许多从前端获取数据的步骤 springmvc基本流程 用户在原本的没有框架的时候请求会直接调用到controller这个类,但是其步骤非常繁琐 所以我们就使用springmvc进行简化 当用…...

nVisual 登录页页面配置说明

一、概述 nVisual登录页面可根据具体客户需要通过public\config\access.js文件进行自定义配置。页面可以大致分为4个部分,头部、底部、可移动区域以及页面中间的信息填写区域。其中头部和底部又包含头部左侧、头部中间、头部右侧、底部左侧、底部中间、底部右侧六个…...

Qt6开发自签名证书的https代理服务器

目标:制作一个具备类似Fiddler、Burpsuit、Wireshark的https协议代理抓包功能,但是集成到自己的app内,这样无需修改系统代理设置,使用QWebengineview通过自建的代理服务器,即可实现https包的实时监测、注入等自定义功能…...

crapy 爬虫框架的使用

1.scrapy框架安装 安装前先安装python3和pycharm 社区版 执行命令安装scrapy, pip install scrapy 2.创建项目 执行命令: scrapy startproject test_spider 如图: 3.使用pycharm大开项目并设置pipenv虚拟机环境 虚拟环境是为了依赖隔…...

Edge SCDN 边缘安全加速有什么用?

Edge SCDN是最新推出的边缘安全加速服务,它是一种融合了安全防护和内容分发加速功能的网络服务技术,通过在网络边缘部署服务器节点,来优化内容的传输和用户的访问体验,同时保障网络安全。 抵御 DDoS 攻击: Edge SCDN …...

使用aarch64-unknown-linux-musl编译生成静态ARM64可执行文件

使用aarch64-unknown-linux-musl编译生成静态ARM64可执行文件 使用aarch64-unknown-linux-musl编译生成静态ARM64可执行文件1. 安装aarch64-unknown-linux-musl目标2. 安装交叉编译工具链安装musl-cross-make 3. 配置Rust编译器使用交叉编译工具链4. 编译你的Rust项目5. 运行或…...

u-boot移植、配置、编译学习笔记【刚开始就中止了】

教程视频地址 https://www.bilibili.com/video/BV1L24y187cK 【这个视频中途停更了…原因是实际中需要去改u-boot的情况比较少】 使用的u-boot的源码 视频中使用的是 u-boot-2017.03 学习到这里,暂停u-boot的移植、配置、编译学习,原因是经过与老师…...

torchaudio.load 段错误

使用 torchaudio.load 时出现崩溃,如图 解决: 安装 ffmpeg ​conda install ffmpeg -c conda-forge 尝试但没解决问题的方法包括 重装 cuda,重装 pytorch,安装 PySoundFile、SoundFile、sox。...

自定义函数库

求两点距离 double dis(double x1, double y1, double x2, double y2){return sqrt(pow(x2-x1, 2)pow(y2-y1, 2)); }判断闰年 bool isLeapYear(int year){return year%40 && year%100!0 || year%4000; }判断素数 bool isPrime(int num){if(num<2) return false;f…...

Tomcat的下载和使用,配置控制台输出中文日志

目录 1. 简介2. 下载3. 使用3.1 文件夹展示3.1.1 控制台输出乱码 3.2 访问localhost:80803.3 访问静态资源 4. 总结 1. 简介 Tomcat&#xff0c;全称为Apache Tomcat&#xff0c;是一个开源的Web应用服务器和Servlet容器&#xff0c;由Apache软件基金会的Jakarta项目开发。它实…...

STM32应用开发——BH1750光照传感器详解

STM32应用开发——BH1750光照传感器详解 目录 STM32应用开发——BH1750光照传感器详解前言1 硬件介绍1.1 BH1750简介1.2 硬件接线 2 软件编程2.1 软件原理2.1.1 IIC设备地址2.1.2 IIC读写2.1.3 BH1750指令集2.1.4 BH1750工作流程2.1.5 BH1750测量模式 2.2 测试代码2.3 运行测试…...

java jar包加密 jar-protect

介绍 java 本身是开放性极强的语言,代码也容易被反编译,没有语言层面的一些常规保护机制,jar包很容易被反编译和破解。 受classfinal&#xff08;已停止维护&#xff09;设计启发,针对springboot日常项目开发,重新编写安全可靠的jar包加壳加密技术,用于保护软件版权。 使用说…...

NMEA/观测文件/导航电文

NMEA-0183 NMEA-0183是美国国家海洋电子协会为海用电子设备制定的标准格式。它包含了定位时间&#xff0c;纬度&#xff0c;经度&#xff0c;高度&#xff0c;定位所用的卫星数&#xff0c;DOP&#xff0c;差分状态和校正时段等很多信息。 参考&#xff1a;GPS NMEA数据包解析…...

HTTPS的工作原理深入解析

在当今互联网时代&#xff0c;网络安全已经成为了一个备受关注的话题。随着越来越多的个人隐私和商业数据被传输在网络中&#xff0c;如何确保这些数据在传输过程中的安全性成为了每个网络开发者和用户关注的核心问题之一。而HTTPS&#xff08;HyperText Transfer Protocol Sec…...

pandas.core.frame.DataFrame怎么进行对象内容的读写

在 Python 中&#xff0c;pandas.core.frame.DataFrame 是 Pandas 数据库的核心数据结构&#xff0c;可以方便地读取和操作表格数据。以下是几种常见的读取内容的方法&#xff1a; 读取特定列 通过列名获取数据。 # 假设 df 是一个 DataFrame data df["列名"] # …...

OFCA-OpenHarmony人才认证题库答案

单选题 1.[单选题] 位于后台的应用&#xff0c;启动组件需校验的权限是: A: ohos.permission.DISTRIBUTED_DATASYNC B: ohos.permission.START_ABILITIES_FROM_BACKGROUND C: ohos.permission.ABILITY_BACKGROUND_COMMUNICATION D: ohos.permission.START_INVISIBLE_ABIL…...

若依微服务如何获取用户登录信息

文章目录 1、需求提出2、应用场景3、解决思路4、注意事项5、完整代码第一步&#xff1a;后端获取当前用户信息第二步&#xff1a;前端获取当前用户信息 6、运行结果后端测试&#xff1a;前端展示&#xff1a; 总结 1、需求提出 在微服务架构中&#xff0c;获取当前用户的登录信…...

题目 2778: 判断数正负

题目 2778: 判断数正负 时间限制: 2s 内存限制: 192MB 提交: 12161 解决: 6681 题目描述 给定一个整数N&#xff0c;判断其正负。 输入格式 一个整数N(-109 < N < 109) 输出格式 如果N > 0, 输出positive&#xff1b; 如果N 0, 输出zero&#xff1b; 如果N < 0, 输…...

【Hexo】博客自动生成AI摘要

工具介绍 如何让博客支持AI摘要&#xff0c;使用TianliGPT自动生成文章的AI摘要 摘要AI-文章摘要生成工具 文章摘要是一个专业的文字摘要生成工具&#xff0c;你可以将需要提取摘要的文本内容发送给TianliGPT&#xff0c;稍等一会他就可以给你发送一个基于这段文本内容的摘要。…...

vue3-count-to实现数字动态增长效果

vue3-count-to 是一个用于 Vue 3的数字计数动画库&#xff0c;常用于在页面上实现数字的动态增长效果&#xff0c;类似于从某个起始值渐变到目标值的效果。它可以用来显示各种数字、统计数据或展示动画效果。 1 安装 vue3-count-to 首先&#xff0c;你需要安装 vue3-count-to …...

第一课【输入输出】(题解)

1.向世界问好 题目描述 编程输出以下内容: Hello World! Im a C program. 输入格式 本题无输入。 输出格式 请按照样例输出&#xff0c;注意大小写、空格、感叹号&#xff0c;句号&#xff0c;单引号都必须使用英文输入法里的符号。 样例输入/输出 输入数据 1 本题无…...

边缘AI和智能音频专家XMOS全球首家增值经销商(VAR)落地中国

强强合作——XMOS与飞腾云达成全球首家增值经销协议以用智能音频技术和产品服务全球厂商和消费者 中国深圳&#xff0c;2024年12月——全球领先的软件定义系统级芯片&#xff08;SoC&#xff09;开发商XMOS宣布&#xff1a;公司已与飞腾云科技达成增值分销协议&#xff0c;授权…...

实战 | 某院校小程序记录

视频教程在我主页简介里 目录&#xff1a; 前言&#xff1a; 渗透思路 1.绕过前端 2.信息泄露 3.爆破用户账号密码 4.信息泄露2 结束 前言&#xff1a; 遇到一个学校小程序的站点&#xff0c;只在前端登录口做了校验&#xff0c;后端没有任何校验&#xff0c;奇葩弱口令离…...

正则表达式——参考视频B站《奇乐编程学院》

智能指针 一、背景&#x1f388;1.1. 模式匹配&#x1f388;1.2. 文本替换&#x1f388;1.3. 数据验证&#x1f388;1.4. 信息提取&#x1f388;1.5. 拆分字符串&#x1f388;1.6. 高级搜索功能 二、原料2.1 参考视频2.2 验证网址 三、用法3.1 限定符3.1.1 ?3.1.2 *3.1.3 3.1.…...

【Vue + Print.js】前端打印, 自定义字体大小, 自定义样式, 封装共享样式

在前端开发中&#xff0c;打印功能是一个常见的需求&#xff0c;尤其是在生成报表、打印用户资料或者导出文档时&#xff0c;通常需要通过前端代码进行打印。Print.js 是一个非常流行的 JavaScript 库&#xff0c;它提供了简单而强大的打印功能&#xff0c;允许你灵活控制打印内…...

python模拟练习第一期

问题一 如果一个数 p 是个质数&#xff0c;同时又是整数 a的约数&#xff0c;则 p 称为 a的一个质因数。 请问 2024 有多少个质因数&#xff1f; 步骤 1: 分解 2024 首先&#xff0c;2024 是偶数&#xff0c;说明可以被 2 整除。我们从 2 开始进行除法分解&#xff1a; 202…...

Java-25 深入浅出 Spring - 实现简易Ioc-01 Servlet介绍 基本代码编写

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…...

华硕奥创软件在线安装和离线安装方法

华硕奥创软件在线安装和离线安装方法 1. 华硕奥创软件介绍2. 华硕奥创软件在线安装2.1 第一种2.2 第二种 3. 华硕奥创软件离线安装3.1 概述3.2 华硕奥创软件离线包下载方式 4. 卸载华硕奥创软件4.1 概述4.2 华硕奥创卸载软件下载与使用方式 结束语 1. 华硕奥创软件介绍 华硕奥…...

AI监控赋能健身馆与游泳馆全方位守护,提升安全效率

一、AI视频监控技术的崛起 随着人工智能技术的不断发展&#xff0c;AI视频监控正成为各行业保障安全、提升效率的关键工具。相比传统监控系统&#xff0c;AI技术赋予监控系统实时分析、智能识别和精准预警的能力&#xff0c;让“被动监视”转变为“主动防控”。 二、AI监控应用…...

SQL Server数据库还原差异备份

适用范围&#xff1a;SQL Server 本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中还原差异数据库备份。 限制和局限 不允许在显式或隐式事务中使用 RESTORE。 无法在早期版本的 SQL Server 中还原较新版本的 SQL Server创建的备份。 在…...

Python 给 Excel 写入数据的四种方法

Python 在数据处理领域应用广泛&#xff0c;其中与 Excel 文件的交互是常见需求之一。 本文将介绍四种使用 Python 给 Excel 文件写入数据的方法&#xff0c;并结合生活中的例子进行解释&#xff0c;帮助新手小白快速上手。 1. 使用 openpyxl 库 openpyxl 是一个用于读写 Exc…...

实验14 RNN的记忆能力和梯度爆炸实验

一 循环神经网络的记忆能力 1.数据集构建 创建了一个DigitSumDataset 类&#xff0c;包括初始化函数init、数据生成函数 generate_data、数据加载函数 load_data、__len__ 方法、__getitem__ 方法。 init函数&#xff1a;接受的参数是data_path&#xff08; 存放数据集的目录…...

【电子通识】电流倒灌为什么需要注意?

电流倒灌是一个很常见的问题,以“IO电流倒灌”为关键词在百度上进行搜索,可以找到很多相关案例。 电流倒灌问题在5V电平的单片机时代几乎不会发生,主要是因为5V单片的IO耐压值高,单片机内部结构对IO保护设计很好。 到了3.3V单片机时代,这类问题有一定的偶发性,但…...

Elasticsearch 集群部署

Elasticsearch 是一个分布式的搜索和分析引擎&#xff0c;广泛应用于日志分析、全文搜索、实时数据分析等场景。它以其高性能、高可用性和易用性而著称。本文档将引导您完成一个基本的 Elasticsearch 集群配置&#xff0c;包括节点间的通信、客户端访问、安全设置等关键步骤。我…...

Windows系统VSCode 搭建ESP-IDF环境

VS Code&#xff0c;安装ESP-IDF插件 快捷键CTRLSHIFTP&#xff0c;弹出显示所有命令的窗口&#xff0c;选择ESP-IDF的欢迎 使用第一个选项&#xff0c;要选择一个ESP-IDF版本&#xff0c;选最新的就行 点击Install,等待下载 提示安装成功&#xff0c;如果过程中出现python已存…...

在centos 7.9上面安装mingw交叉编译工具

1.说明 为了在centos上面编译windows的程序&#xff0c;需要安装mingw工具&#xff0c;mingw工具是可以编译windows程序的一些工具链&#xff0c;使用方式和linux一致 2.下载脚本 使用脚本方式编译&#xff0c;github的脚本位置&#xff1a;https://github.com/Zeranoe/ming…...

【Java笔记】LinkedList 底层结构

一、LinkedList 的全面说明 LinkedList底层实现了双向链表和双端队列特点可以添加任意元素(元素可以重复)&#xff0c;包括null线程不安全&#xff0c;没有实现同步 二、LinkedList 的底层操作机制 三、LinkedList的增删改查案例 public class LinkedListCRUD { public stati…...

【深入理解java中的设计模式】

深入理解java中的设计模式 设计模式是软件工程中的最佳实践&#xff0c;它们提供了解决特定问题的模板或蓝图。在Java中&#xff0c;设计模式通常被分为三大类&#xff1a;创建型模式、结构型模式和行为型模式。 创建型模式 单例模式 (Singleton Pattern) 描述: 保证一个类…...

详解下c语言下的多维数组和指针数组

在实际c语言编程中&#xff0c;三维及以上数组我们使用的很少&#xff0c;二维数组我们使用得较多。说到数组&#xff0c;又不得关联到指针&#xff0c;因为他们两者的联系太紧密了。今天我们就详细介绍下c语言下的多维数组(主要是介绍二维数组)和指针。 一、二维数组 1.1&am…...

如何使用 Python 发送 HTTP 请求?

在Python中发送HTTP请求最常用的库是requests&#xff0c;它提供了简单易用的API来发送各种类型的HTTP请求。 除此之外&#xff0c;还有标准库中的http.client&#xff08;以前叫做httplib&#xff09;和urllib&#xff0c;但它们相对更底层&#xff0c;代码量较大&#xff0c…...