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

BUUCTF Reverse/[羊城杯 2020]login(python程序)

查看信息,python文件

在这里插入图片描述

动调了一下,该程序创建了一个线程来读入数据,而这个线程的代码应该是放在内存中直接执行的,本地看不到代码,很蛋疼

查了下可以用PyInstaller Extractor工具来解包,可以参考这个Python解包及反编译: PyInstaller Extractor+uncompyle6

在这里插入图片描述

解码完成后用16进制编辑器打开,如010,将login.pyc中的第一行替换为struct.pyc的第一行,然后找个在线pyc反编译

#! /usr/bin/env python 3.6 (3379)
#coding=utf-8
# Compiled at: 1995-09-27 11:18:56
#Powered by BugScaner
#http://tools.bugscaner.com/
#如果觉得不错,请分享给你朋友使用吧!
import sys
input1 = input('input something:')
if len(input1) != 14:print('Wrong length!')sys.exit()
code = []
for i in range(13):code.append(ord(input1[i]) ^ ord(input1[i + 1]))code.append(ord(input1[13]))
a1 = code[2]
a2 = code[1]
a3 = code[0]
a4 = code[3]
a5 = code[4]
a6 = code[5]
a7 = code[6]
a8 = code[7]
a9 = code[9]
a10 = code[8]
a11 = code[10]
a12 = code[11]
a13 = code[12]
a14 = code[13]
if (a1 * 88 + a2 * 67 + a3 * 65 - a4 * 5 + a5 * 43 + a6 * 89 + a7 * 25 + a8 * 13 - a9 * 36 + a10 * 15 + a11 * 11 + a12 * 47 - a13 * 60 + a14 * 29 == 22748) & (a1 * 89 + a2 * 7 + a3 * 12 - a4 * 25 + a5 * 41 + a6 * 23 + a7 * 20 - a8 * 66 + a9 * 31 + a10 * 8 + a11 * 2 - a12 * 41 - a13 * 39 + a14 * 17 == 7258) & (a1 * 28 + a2 * 35 + a3 * 16 - a4 * 65 + a5 * 53 + a6 * 39 + a7 * 27 + a8 * 15 - a9 * 33 + a10 * 13 + a11 * 101 + a12 * 90 - a13 * 34 + a14 * 23 == 26190) & (a1 * 23 + a2 * 34 + a3 * 35 - a4 * 59 + a5 * 49 + a6 * 81 + a7 * 25 + (a8 << 7) - a9 * 32 + a10 * 75 + a11 * 81 + a12 * 47 - a13 * 60 + a14 * 29 == 37136) & (a1 * 38 + a2 * 97 + a3 * 35 - a4 * 52 + a5 * 42 + a6 * 79 + a7 * 90 + a8 * 23 - a9 * 36 + a10 * 57 + a11 * 81 + a12 * 42 - a13 * 62 - a14 * 11 == 27915) & (a1 * 22 + a2 * 27 + a3 * 35 - a4 * 45 + a5 * 47 + a6 * 49 + a7 * 29 + a8 * 18 - a9 * 26 + a10 * 35 + a11 * 41 + a12 * 40 - a13 * 61 + a14 * 28 == 17298) & (a1 * 12 + a2 * 45 + a3 * 35 - a4 * 9 - a5 * 42 + a6 * 86 + a7 * 23 + a8 * 85 - a9 * 47 + a10 * 34 + a11 * 76 + a12 * 43 - a13 * 44 + a14 * 65 == 19875) & (a1 * 79 + a2 * 62 + a3 * 35 - a4 * 85 + a5 * 33 + a6 * 79 + a7 * 86 + a8 * 14 - a9 * 30 + a10 * 25 + a11 * 11 + a12 * 57 - a13 * 50 - a14 * 9 == 22784) & (a1 * 8 + a2 * 6 + a3 * 64 - a4 * 85 + a5 * 73 + a6 * 29 + a7 * 2 + a8 * 23 - a9 * 36 + a10 * 5 + a11 * 2 + a12 * 47 - a13 * 64 + a14 * 27 == 9710) & (a1 * 67 - a2 * 68 + a3 * 68 - a4 * 51 - a5 * 43 + a6 * 81 + a7 * 22 - a8 * 12 - a9 * 38 + a10 * 75 + a11 * 41 + a12 * 27 - a13 * 52 + a14 * 31 == 13376) & (a1 * 85 + a2 * 63 + a3 * 5 - a4 * 51 + a5 * 44 + a6 * 36 + a7 * 28 + a8 * 15 - a9 * 6 + a10 * 45 + a11 * 31 + a12 * 7 - a13 * 67 + a14 * 78 == 24065) & (a1 * 47 + a2 * 64 + a3 * 66 - a4 * 5 + a5 * 43 + a6 * 112 + a7 * 25 + a8 * 13 - a9 * 35 + a10 * 95 + a11 * 21 + a12 * 43 - a13 * 61 + a14 * 20 == 27687) & (a1 * 89 + a2 * 67 + a3 * 85 - a4 * 25 + a5 * 49 + a6 * 89 + a7 * 23 + a8 * 56 - a9 * 92 + a10 * 14 + a11 * 89 + a12 * 47 - a13 * 61 - a14 * 29 == 29250) & (a1 * 95 + a2 * 34 + a3 * 62 - a4 * 9 - a5 * 43 + a6 * 83 + a7 * 25 + a8 * 12 - a9 * 36 + a10 * 16 + a11 * 51 + a12 * 47 - a13 * 60 - a14 * 24 == 15317):print('flag is GWHT{md5(your_input)}')print('Congratulations and have fun!')
else:print('Sorry,plz try again...')

随便用个word做个替换,将a1-a14替换成code[]这样z3变量命名方便点

替换完成后是这样的

code[2] * 88 + code[1] * 67 + code[0] * 65 - code[3] * 5 + code[4] * 43 + code[5] * 89 + code[6] * 25 + code[7] * 13 - code[9] * 36 + code[8] * 15 + code[10] * 11 + code[11] * 47 - code[12] * 60 + code[13] * 29 == 22748
code[2] * 89 + code[1] * 7 + code[0] * 12 - code[3] * 25 + code[4] * 41 + code[5] * 23 + code[6] * 20 - code[7] * 66 + code[9] * 31 + code[8] * 8 + code[10] * 2 - code[11] * 41 - code[12] * 39 + code[13] * 17 == 7258
code[2] * 28 + code[1] * 35 + code[0] * 16 - code[3] * 65 + code[4] * 53 + code[5] * 39 + code[6] * 27 + code[7] * 15 - code[9] * 33 + code[8] * 13 + code[10] * 101 + code[11] * 90 - code[12] * 34 + code[13] * 23 == 26190
code[2] * 23 + code[1] * 34 + code[0] * 35 - code[3] * 59 + code[4] * 49 + code[5] * 81 + code[6] * 25 + (code[7] << 7) - code[9] * 32 + code[8] * 75 + code[10] * 81 + code[11] * 47 - code[12] * 60 + code[13] * 29 == 37136
code[2] * 38 + code[1] * 97 + code[0] * 35 - code[3] * 52 + code[4] * 42 + code[5] * 79 + code[6] * 90 + code[7] * 23 - code[9] * 36 + code[8] * 57 + code[10] * 81 + code[11] * 42 - code[12] * 62 - code[13] * 11 == 27915
code[2] * 22 + code[1] * 27 + code[0] * 35 - code[3] * 45 + code[4] * 47 + code[5] * 49 + code[6] * 29 + code[7] * 18 - code[9] * 26 + code[8] * 35 + code[10] * 41 + code[11] * 40 - code[12] * 61 + code[13] * 28 == 17298
code[2] * 12 + code[1] * 45 + code[0] * 35 - code[3] * 9 - code[4] * 42 + code[5] * 86 + code[6] * 23 + code[7] * 85 - code[9] * 47 + code[8] * 34 + code[10] * 76 + code[11] * 43 - code[12] * 44 + code[13] * 65 == 19875
code[2] * 79 + code[1] * 62 + code[0] * 35 - code[3] * 85 + code[4] * 33 + code[5] * 79 + code[6] * 86 + code[7] * 14 - code[9] * 30 + code[8] * 25 + code[10] * 11 + code[11] * 57 - code[12] * 50 - code[13] * 9 == 22784
code[2] * 8 + code[1] * 6 + code[0] * 64 - code[3] * 85 + code[4] * 73 + code[5] * 29 + code[6] * 2 + code[7] * 23 - code[9] * 36 + code[8] * 5 + code[10] * 2 + code[11] * 47 - code[12] * 64 + code[13] * 27 == 9710
code[2] * 67 - code[1] * 68 + code[0] * 68 - code[3] * 51 - code[4] * 43 + code[5] * 81 + code[6] * 22 - code[7] * 12 - code[9] * 38 + code[8] * 75 + code[10] * 41 + code[11] * 27 - code[12] * 52 + code[13] * 31 == 13376
code[2] * 85 + code[1] * 63 + code[0] * 5 - code[3] * 51 + code[4] * 44 + code[5] * 36 + code[6] * 28 + code[7] * 15 - code[9] * 6 + code[8] * 45 + code[10] * 31 + code[11] * 7 - code[12] * 67 + code[13] * 78 == 24065
code[2] * 47 + code[1] * 64 + code[0] * 66 - code[3] * 5 + code[4] * 43 + code[5] * 112 + code[6] * 25 + code[7] * 13 - code[9] * 35 + code[8] * 95 + code[10] * 21 + code[11] * 43 - code[12] * 61 + code[13] * 20 == 27687
code[2] * 89 + code[1] * 67 + code[0] * 85 - code[3] * 25 + code[4] * 49 + code[5] * 89 + code[6] * 23 + code[7] * 56 - code[9] * 92 + code[8] * 14 + code[10] * 89 + code[11] * 47 - code[12] * 61 - code[13] * 29 == 29250
code[2] * 95 + code[1] * 34 + code[0] * 62 - code[3] * 9 - code[4] * 43 + code[5] * 83 + code[6] * 25 + code[7] * 12 - code[9] * 36 + code[8] * 16 + code[10] * 51 + code[11] * 47 - code[12] * 60 - code[13] * 24 == 15317

解题脚本

from z3 import *
import hashlibs = Solver()code = [Int((b'code%d'% i)) for i in range(14) ]s.add(code[2] * 88 + code[1] * 67 + code[0] * 65 - code[3] * 5 + code[4] * 43 + code[5] * 89 + code[6] * 25 + code[7] * 13 - code[9] * 36 + code[8] * 15 + code[10] * 11 + code[11] * 47 - code[12] * 60 + code[13] * 29 == 22748)
s.add(code[2] * 89 + code[1] * 7 + code[0] * 12 - code[3] * 25 + code[4] * 41 + code[5] * 23 + code[6] * 20 - code[7] * 66 + code[9] * 31 + code[8] * 8 + code[10] * 2 - code[11] * 41 - code[12] * 39 + code[13] * 17 == 7258)
s.add(code[2] * 28 + code[1] * 35 + code[0] * 16 - code[3] * 65 + code[4] * 53 + code[5] * 39 + code[6] * 27 + code[7] * 15 - code[9] * 33 + code[8] * 13 + code[10] * 101 + code[11] * 90 - code[12] * 34 + code[13] * 23 == 26190)
s.add(code[2] * 23 + code[1] * 34 + code[0] * 35 - code[3] * 59 + code[4] * 49 + code[5] * 81 + code[6] * 25 + (code[7] * 128) - code[9] * 32 + code[8] * 75 + code[10] * 81 + code[11] * 47 - code[12] * 60 + code[13] * 29 == 37136)
s.add(code[2] * 38 + code[1] * 97 + code[0] * 35 - code[3] * 52 + code[4] * 42 + code[5] * 79 + code[6] * 90 + code[7] * 23 - code[9] * 36 + code[8] * 57 + code[10] * 81 + code[11] * 42 - code[12] * 62 - code[13] * 11 == 27915)
s.add(code[2] * 22 + code[1] * 27 + code[0] * 35 - code[3] * 45 + code[4] * 47 + code[5] * 49 + code[6] * 29 + code[7] * 18 - code[9] * 26 + code[8] * 35 + code[10] * 41 + code[11] * 40 - code[12] * 61 + code[13] * 28 == 17298)
s.add(code[2] * 12 + code[1] * 45 + code[0] * 35 - code[3] * 9 - code[4] * 42 + code[5] * 86 + code[6] * 23 + code[7] * 85 - code[9] * 47 + code[8] * 34 + code[10] * 76 + code[11] * 43 - code[12] * 44 + code[13] * 65 == 19875)
s.add(code[2] * 79 + code[1] * 62 + code[0] * 35 - code[3] * 85 + code[4] * 33 + code[5] * 79 + code[6] * 86 + code[7] * 14 - code[9] * 30 + code[8] * 25 + code[10] * 11 + code[11] * 57 - code[12] * 50 - code[13] * 9 == 22784)
s.add(code[2] * 8 + code[1] * 6 + code[0] * 64 - code[3] * 85 + code[4] * 73 + code[5] * 29 + code[6] * 2 + code[7] * 23 - code[9] * 36 + code[8] * 5 + code[10] * 2 + code[11] * 47 - code[12] * 64 + code[13] * 27 == 9710)
s.add(code[2] * 67 - code[1] * 68 + code[0] * 68 - code[3] * 51 - code[4] * 43 + code[5] * 81 + code[6] * 22 - code[7] * 12 - code[9] * 38 + code[8] * 75 + code[10] * 41 + code[11] * 27 - code[12] * 52 + code[13] * 31 == 13376)
s.add(code[2] * 85 + code[1] * 63 + code[0] * 5 - code[3] * 51 + code[4] * 44 + code[5] * 36 + code[6] * 28 + code[7] * 15 - code[9] * 6 + code[8] * 45 + code[10] * 31 + code[11] * 7 - code[12] * 67 + code[13] * 78 == 24065)
s.add(code[2] * 47 + code[1] * 64 + code[0] * 66 - code[3] * 5 + code[4] * 43 + code[5] * 112 + code[6] * 25 + code[7] * 13 - code[9] * 35 + code[8] * 95 + code[10] * 21 + code[11] * 43 - code[12] * 61 + code[13] * 20 == 27687)
s.add(code[2] * 89 + code[1] * 67 + code[0] * 85 - code[3] * 25 + code[4] * 49 + code[5] * 89 + code[6] * 23 + code[7] * 56 - code[9] * 92 + code[8] * 14 + code[10] * 89 + code[11] * 47 - code[12] * 61 - code[13] * 29 == 29250)
s.add(code[2] * 95 + code[1] * 34 + code[0] * 62 - code[3] * 9 - code[4] * 43 + code[5] * 83 + code[6] * 25 + code[7] * 12 - code[9] * 36 + code[8] * 16 + code[10] * 51 + code[11] * 47 - code[12] * 60 - code[13] * 24 == 15317)s.check()
m = s.model()
flag = [int(str(m[code[i]])) for i in range(14)]print(flag)for i in range(12,-1,-1):flag[i] = flag[i] ^ flag[i+1]for i in range(14):print(chr(flag[i]),end='')print(hashlib.md5(bytes(flag)).hexdigest())

结果,最终flag: flag{58964088b637e50d3a22b9510c1d1ef8}

[10, 24, 119, 7, 104, 43, 28, 91, 108, 52, 88, 74, 88, 33]
U_G07_th3_k3y!58964088b637e50d3a22b9510c1d1ef8

相关文章:

BUUCTF Reverse/[羊城杯 2020]login(python程序)

查看信息,python文件 动调了一下&#xff0c;该程序创建了一个线程来读入数据&#xff0c;而这个线程的代码应该是放在内存中直接执行的&#xff0c;本地看不到代码&#xff0c;很蛋疼 查了下可以用PyInstaller Extractor工具来解包&#xff0c;可以参考这个Python解包及反编译…...

indexDB localForage

一、前言 前端本地化存储算是一个老生常谈的话题了&#xff0c;我们对于 cookies、Web Storage&#xff08;sessionStorage、localStorage&#xff09;的使用已经非常熟悉&#xff0c;在面试与实际操作之中也会经常遇到相关的问题&#xff0c;但这些本地化存储的方式还存在一些…...

Spring Boot开发时Java对象和Json对象互转

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…...

C++ 多态

引例&#xff1a; #include<iostream> using namespace std; class Animal { public:void speak(){cout<<"动物在说话"<<endl;} }; class Cat:public Animal { public:void speak(){cout<<"小猫在说话"<<endl;} }; void Do…...

LeetCode 之 二分查找

网址&#xff1a; LeetCode 704.二分查找 算法模拟&#xff1a; Algorithm Visualizer 在线工具&#xff1a; C 在线工具 如果习惯性使用Visual Studio Code进行编译运行&#xff0c;需要C11特性的支持&#xff0c;可参考博客&#xff1a; VisualStudio Code 支持C11插件配…...

【性能测试】中间件优化

1、Tomcat 优化连接数、线程池 打开tomcat安装目录\conf\server.xml文件&#xff0c;在server.xml中 有以下配置&#xff1a; tomcat HTTP/1.1 <Connector port"8080" protocol"HTTP/1.1" maxThreads"1000" acceptCount"1500" c…...

【算法】查找类——二分查找算法

二分查找算法算法总结 算法描述 该算法属于查找算法。当需要从有序数组中查找某一元素时&#xff0c;可以使用该算法进行查找。&#xff08;本文章假设数组是升序排列的数组&#xff09; 算法思想 每次进行对半查找&#xff0c;获取中间元素值&#xff0c;然后与目标值进行…...

Ansible FIle模块,使用Ansible File模块进行文件管理

当使用 Ansible 进行自动化配置和管理时&#xff0c;file 模块是一个强大的工具&#xff0c;用于在目标主机上创建、修改和删除文件和目录。它提供了一种简单而灵活的方式来处理文件系统操作。在本文中&#xff0c;我们将详细介绍如何使用 Ansible 的 file 模块。 1. 创建文件 …...

索尼mp4变成rsv修复案例(ILME-FX3)

索尼mp4的修复案例讲过很多&#xff0c;这次是索尼的ILME-FX3也算是一个畅销的机型&#xff0c;一般索尼没有封装的文件是RSV文件&#xff0c;但是极少遇到有多个RSV文件的&#xff0c;下边我们来讲下这个特殊案例。 故障文件:4个RSV文件&#xff0c;大小在1.78G~28G多 故障现…...

抓拍摄像机开关量控制4K高清手机远程看图建筑生长定时缩时相机

作为物联网数据采集解决方案专业提供商,数采物联网小编daq-iot 在这里做以下内容介绍,并诚挚的欢迎大家讨论和交流。 项目案例参考视频&#xff1a; https://www.bilibili.com/video/BV1Kp4y1T7wQ/?spm_id_from333.999.0.0 4K高清太阳能供电定时拍照相机&#xff0c;通过光…...

c++使用http请求-drogon框架

创建drogon框架 drogon_ctl create project test_ctrl添加一个控制器 进入controllers目录下 drogon_ctl create controller -h check_ctrl编写主函数 #include <drogon/drogon.h> int main() {//Set HTTP listener address and port//drogon::app().addListener("…...

幼儿棒球运动宣传介绍·野球6号位

幼儿棒球运动宣传介绍 1. 棒球对幼儿成长的重要性 棒球运动对幼儿协调能力和团队协作的培养 棒球运动对幼儿协调能力和团队协作的培养非常重要。通过棒球运动&#xff0c;孩子们可以学习如何与队友合作&#xff0c;如何在压力下保持冷静&#xff0c;以及如何快速做出决策。这…...

grpc多语言通信之GO和DART

都是一个吗生的,找下例子 上一篇文章说到go实现的grpc方法已经实现了一个grpc的server端, 注意: 这两个项目的.proto文件应当是完全一致的,只是方法用各自的语言实现罢了 报错了: Caught error: gRPC Error (code: 12, codeName: UNIMPLEMENTED, message: grpc: Decompresso…...

基于FPGA的RGB图像转Ycbcr实现,包括tb测试文件以及MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将FPGA的数据导入到matlab进行显示 2.算法运行软件版本 Vivado2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // E…...

centos 编译安装的php多版本 切换

centos 编译安装的php多版本 切换 wheris php php: /usr/bin/php /usr/lib64/php /etc/php.ini /etc/php.d /usr/local/php /usr/local/php7.4 /usr/share/php /usr/share/man/man1/php.1.gz/usr/bin/php: php可执行脚本&#xff0c;任何版本的php 通过软连接到这可以实现全局…...

Unity 性能优化之Shader分析处理函数ShaderUtil.HasProceduralInstancing: 深入解析与实用案例

Unity 性能优化之Shader分析处理函数ShaderUtil.HasProceduralInstancing: 深入解析与实用案例 点击封面跳转到Unity国际版下载页面 简介 在Unity中&#xff0c;性能优化是游戏开发过程中非常重要的一环。其中&#xff0c;Shader的优化对于游戏的性能提升起着至关重要的作用。…...

2023数学建模国赛E题黄河水沙监测数据分析完整代码分析+处理结果+思路文档

已经写出国赛E题黄河水沙监测数据分析完整代码分析处理结果思路分析&#xff08;30页&#xff09;&#xff0c;包括数据预处理、数据可视化&#xff08;分组数据分布图可视化、相关系数热力图可视化、散点图可视化&#xff09;、回归模型&#xff08;决策树回归模型、随机森林回…...

玩转Mysql系列 - 第19篇:游标详解

这是Mysql系列第19篇。 环境&#xff1a;mysql5.7.25&#xff0c;cmd命令中进行演示。 代码中被[]包含的表示可选&#xff0c;|符号分开的表示可选其一。 需求背景 当我们需要对一个select的查询结果进行遍历处理的时候&#xff0c;如何实现呢&#xff1f; 此时我们需要使…...

【量化分析】Python 布林线( Bollinger)概念

一、说明 布林线(BOLL)&#xff0c;Bollinger Bands&#xff0c;利用统计原理&#xff0c;求出股价的标准差及其信赖区间&#xff0c;从而确定股价的波动范围及未来走势&#xff0c;利用波带显示股价的安全高低价位&#xff0c;因而也被称为布林带。 二、布林带基本概念 布林线…...

MySQL的权限管理与远程访问

MySQL的权限管理 1、授予权限 授权命令&#xff1a; grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名用户地址 identified by ‘连接口令’; 该权限如果发现没有该用户&#xff0c;则会直接新建一个用户。 比如 grant select,insert,delete,drop on atguigudb.…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...