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

BUUCTF-[羊城杯 2020]Bytecode

题目下载:下载

这道题是一个关于python字节码的。

补充一下相关知识:https://shliang.blog.csdn.net/article/details/119676978dis --- Python 字节码反汇编器 — Python 3.7.13 文档

手工还原参考:[原创]死磕python字节码-手工还原python源码-软件逆向-看雪论坛-安全社区|安全招聘|bbs.pediy.com

刚开始看别人的wp,我以为有什么工具可以还原python源码,原来他们可能都是自己看出来的。

根据上面的手工还原链接,连看再猜应该比较容易一些。

Python 代码先被编译为字节码后,再由Python虚拟机来执行字节码, Python的字节码是一种类似汇编指令的中间语言, 一个Python语句会对应若干字节码指令,虚拟机一条一条执行字节码指令, 从而完成程序执行。
Python dis 模块支持对Python代码进行反汇编, 生成字节码指令。

看一下题目字节码:

  4           0 LOAD_CONST               0 (3)3 LOAD_CONST               1 (37)6 LOAD_CONST               2 (72)9 LOAD_CONST               3 (9)12 LOAD_CONST               4 (6)15 LOAD_CONST               5 (132)18 BUILD_LIST               6                   # 列表21 STORE_NAME               0 (en)5          24 LOAD_CONST               6 (101)27 LOAD_CONST               7 (96)30 LOAD_CONST               8 (23)33 LOAD_CONST               9 (68)36 LOAD_CONST              10 (112)39 LOAD_CONST              11 (42)42 LOAD_CONST              12 (107)45 LOAD_CONST              13 (62)48 LOAD_CONST               7 (96)51 LOAD_CONST              14 (53)54 LOAD_CONST              15 (176)57 LOAD_CONST              16 (179)60 LOAD_CONST              17 (98)63 LOAD_CONST              14 (53)66 LOAD_CONST              18 (67)69 LOAD_CONST              19 (29)72 LOAD_CONST              20 (41)75 LOAD_CONST              21 (120)78 LOAD_CONST              22 (60)81 LOAD_CONST              23 (106)84 LOAD_CONST              24 (51)87 LOAD_CONST               6 (101)90 LOAD_CONST              25 (178)93 LOAD_CONST              26 (189)96 LOAD_CONST               6 (101)99 LOAD_CONST              27 (48)102 BUILD_LIST              26                      #列表105 STORE_NAME               1 (output)7         108 LOAD_CONST              28 ('welcome to GWHT2020')111 PRINT_ITEM          112 PRINT_NEWLINE       9         113 LOAD_NAME                2 (raw_input)116 LOAD_CONST              29 ('please input your flag:')119 CALL_FUNCTION            1122 STORE_NAME               3 (flag)10         125 LOAD_NAME                3 (flag)128 STORE_NAME               4 (str)12         131 LOAD_NAME                5 (len)134 LOAD_NAME                4 (str)137 CALL_FUNCTION            1140 STORE_NAME               6 (a)13         143 LOAD_NAME                6 (a)146 LOAD_CONST              30 (38)149 COMPARE_OP               0 (<)               #if判断152 POP_JUMP_IF_FALSE      173                #失败跳转到偏移173处14         155 LOAD_CONST              31 ('lenth wrong!')158 PRINT_ITEM          159 PRINT_NEWLINE       15         160 LOAD_NAME                7 (exit)163 LOAD_CONST              32 (0)	166 CALL_FUNCTION            1169 POP_TOP             170 JUMP_FORWARD             0 (to 173)17     >>  173 LOAD_NAME                8 (ord)176 LOAD_NAME                4 (str)179 LOAD_CONST              32 (0)182 BINARY_SUBSCR                               #访问元素183 CALL_FUNCTION            1186 LOAD_CONST              33 (2020)189 BINARY_MULTIPLY     190 LOAD_NAME                8 (ord)193 LOAD_NAME                4 (str)196 LOAD_CONST              34 (1)199 BINARY_SUBSCR       200 CALL_FUNCTION            1203 BINARY_ADD          204 LOAD_CONST              33 (2020)207 BINARY_MULTIPLY                            #乘运算208 LOAD_NAME                8 (ord)211 LOAD_NAME                4 (str)214 LOAD_CONST              35 (2)217 BINARY_SUBSCR       218 CALL_FUNCTION            1221 BINARY_ADD                                      #加运算222 LOAD_CONST              33 (2020)225 BINARY_MULTIPLY     226 LOAD_NAME                8 (ord)229 LOAD_NAME                4 (str)232 LOAD_CONST               0 (3)235 BINARY_SUBSCR       236 CALL_FUNCTION            1239 BINARY_ADD          240 LOAD_CONST              33 (2020)243 BINARY_MULTIPLY     244 LOAD_NAME                8 (ord)247 LOAD_NAME                4 (str)250 LOAD_CONST              36 (4)253 BINARY_SUBSCR       254 CALL_FUNCTION            1257 BINARY_ADD          258 LOAD_CONST              37 (1182843538814603)261 COMPARE_OP               2 (==)              #if判断264 POP_JUMP_IF_FALSE      27518         267 LOAD_CONST              38 ('good!continue\xe2\x80\xa6\xe2\x80\xa6')270 PRINT_ITEM          271 PRINT_NEWLINE       272 JUMP_FORWARD            15 (to 290)20     >>  275 LOAD_CONST              39 ('bye~')278 PRINT_ITEM          279 PRINT_NEWLINE       21         280 LOAD_NAME                7 (exit)283 LOAD_CONST              32 (0)286 CALL_FUNCTION            1289 POP_TOP             23     >>  290 BUILD_LIST               0293 STORE_NAME               9 (x)24         296 LOAD_CONST              40 (5)299 STORE_NAME              10 (k)25         302 SETUP_LOOP             128 (to 433)              #循环305 LOAD_NAME               11 (range)308 LOAD_CONST              41 (13)311 CALL_FUNCTION            1314 GET_ITER            >>  315 FOR_ITER               114 (to 432)318 STORE_NAME              12 (i)26         321 LOAD_NAME                8 (ord)324 LOAD_NAME                4 (str)327 LOAD_NAME               10 (k)330 BINARY_SUBSCR       331 CALL_FUNCTION            1334 STORE_NAME              13 (b)27         337 LOAD_NAME                8 (ord)340 LOAD_NAME                4 (str)343 LOAD_NAME               10 (k)346 LOAD_CONST              34 (1)349 BINARY_ADD          350 BINARY_SUBSCR       351 CALL_FUNCTION            1354 STORE_NAME              14 (c)28         357 LOAD_NAME               14 (c)360 LOAD_NAME                0 (en)363 LOAD_NAME               12 (i)366 LOAD_CONST               4 (6)369 BINARY_MODULO       370 BINARY_SUBSCR       371 BINARY_XOR          372 STORE_NAME              15 (a11)29         375 LOAD_NAME               13 (b)378 LOAD_NAME                0 (en)381 LOAD_NAME               12 (i)384 LOAD_CONST               4 (6)387 BINARY_MODULO       388 BINARY_SUBSCR       389 BINARY_XOR          390 STORE_NAME              16 (a22)30         393 LOAD_NAME                9 (x)396 LOAD_ATTR               17 (append)399 LOAD_NAME               15 (a11)402 CALL_FUNCTION            1405 POP_TOP             31         406 LOAD_NAME                9 (x)409 LOAD_ATTR               17 (append)412 LOAD_NAME               16 (a22)415 CALL_FUNCTION            1418 POP_TOP             32         419 LOAD_NAME               10 (k)422 LOAD_CONST              35 (2)425 INPLACE_ADD         426 STORE_NAME              10 (k)429 JUMP_ABSOLUTE          315>>  432 POP_BLOCK           33     >>  433 LOAD_NAME                9 (x)436 LOAD_NAME                1 (output)439 COMPARE_OP               2 (==)442 POP_JUMP_IF_FALSE      45334         445 LOAD_CONST              38 ('good!continue\xe2\x80\xa6\xe2\x80\xa6')448 PRINT_ITEM          449 PRINT_NEWLINE       450 JUMP_FORWARD            15 (to 468)36     >>  453 LOAD_CONST              42 ('oh,you are wrong!')456 PRINT_ITEM          457 PRINT_NEWLINE       37         458 LOAD_NAME                7 (exit)461 LOAD_CONST              32 (0)464 CALL_FUNCTION            1467 POP_TOP             39     >>  468 LOAD_NAME                5 (len)471 LOAD_NAME                4 (str)474 CALL_FUNCTION            1477 STORE_NAME              18 (l)40         480 LOAD_NAME                8 (ord)483 LOAD_NAME                4 (str)486 LOAD_NAME               18 (l)489 LOAD_CONST              43 (7)492 BINARY_SUBTRACT     493 BINARY_SUBSCR       494 CALL_FUNCTION            1497 STORE_NAME              19 (a1)41         500 LOAD_NAME                8 (ord)503 LOAD_NAME                4 (str)506 LOAD_NAME               18 (l)509 LOAD_CONST               4 (6)512 BINARY_SUBTRACT     513 BINARY_SUBSCR       514 CALL_FUNCTION            1517 STORE_NAME              20 (a2)42         520 LOAD_NAME                8 (ord)523 LOAD_NAME                4 (str)526 LOAD_NAME               18 (l)529 LOAD_CONST              40 (5)532 BINARY_SUBTRACT     533 BINARY_SUBSCR       534 CALL_FUNCTION            1537 STORE_NAME              21 (a3)43         540 LOAD_NAME                8 (ord)543 LOAD_NAME                4 (str)546 LOAD_NAME               18 (l)549 LOAD_CONST              36 (4)552 BINARY_SUBTRACT     553 BINARY_SUBSCR       554 CALL_FUNCTION            1557 STORE_NAME              22 (a4)44         560 LOAD_NAME                8 (ord)563 LOAD_NAME                4 (str)566 LOAD_NAME               18 (l)569 LOAD_CONST               0 (3)572 BINARY_SUBTRACT     573 BINARY_SUBSCR       574 CALL_FUNCTION            1577 STORE_NAME              23 (a5)45         580 LOAD_NAME                8 (ord)583 LOAD_NAME                4 (str)586 LOAD_NAME               18 (l)589 LOAD_CONST              35 (2)592 BINARY_SUBTRACT     593 BINARY_SUBSCR       594 CALL_FUNCTION            1597 STORE_NAME              24 (a6)46         600 LOAD_NAME               19 (a1)603 LOAD_CONST               0 (3)606 BINARY_MULTIPLY     607 LOAD_NAME               20 (a2)610 LOAD_CONST              35 (2)613 BINARY_MULTIPLY     614 BINARY_ADD          615 LOAD_NAME               21 (a3)618 LOAD_CONST              40 (5)621 BINARY_MULTIPLY     622 BINARY_ADD          623 LOAD_CONST              44 (1003)626 COMPARE_OP               2 (==)629 POP_JUMP_IF_FALSE      80747         632 LOAD_NAME               19 (a1)635 LOAD_CONST              36 (4)638 BINARY_MULTIPLY     639 LOAD_NAME               20 (a2)642 LOAD_CONST              43 (7)645 BINARY_MULTIPLY     646 BINARY_ADD          647 LOAD_NAME               21 (a3)650 LOAD_CONST               3 (9)653 BINARY_MULTIPLY     654 BINARY_ADD          655 LOAD_CONST              45 (2013)658 COMPARE_OP               2 (==)661 POP_JUMP_IF_FALSE      80748         664 LOAD_NAME               19 (a1)667 LOAD_NAME               20 (a2)670 LOAD_CONST              46 (8)673 BINARY_MULTIPLY     674 BINARY_ADD          675 LOAD_NAME               21 (a3)678 LOAD_CONST              35 (2)681 BINARY_MULTIPLY     682 BINARY_ADD          683 LOAD_CONST              47 (1109)686 COMPARE_OP               2 (==)689 POP_JUMP_IF_FALSE      80449         692 LOAD_NAME               22 (a4)695 LOAD_CONST               0 (3)698 BINARY_MULTIPLY     699 LOAD_NAME               23 (a5)702 LOAD_CONST              35 (2)705 BINARY_MULTIPLY     706 BINARY_ADD          707 LOAD_NAME               24 (a6)710 LOAD_CONST              40 (5)713 BINARY_MULTIPLY     714 BINARY_ADD          715 LOAD_CONST              48 (671)718 COMPARE_OP               2 (==)721 POP_JUMP_IF_FALSE      80150         724 LOAD_NAME               22 (a4)727 LOAD_CONST              36 (4)730 BINARY_MULTIPLY     731 LOAD_NAME               23 (a5)734 LOAD_CONST              43 (7)737 BINARY_MULTIPLY     738 BINARY_ADD          739 LOAD_NAME               24 (a6)742 LOAD_CONST               3 (9)745 BINARY_MULTIPLY     746 BINARY_ADD          747 LOAD_CONST              49 (1252)750 COMPARE_OP               2 (==)753 POP_JUMP_IF_FALSE      79851         756 LOAD_NAME               22 (a4)759 LOAD_NAME               23 (a5)762 LOAD_CONST              46 (8)765 BINARY_MULTIPLY     766 BINARY_ADD          767 LOAD_NAME               24 (a6)770 LOAD_CONST              35 (2)773 BINARY_MULTIPLY                             774 BINARY_ADD                                      #加运算775 LOAD_CONST              50 (644)778 COMPARE_OP               2 (==)          #if判断781 POP_JUMP_IF_FALSE      79552         784 LOAD_CONST              51 ('congraduation!you get the right flag!')787 PRINT_ITEM          788 PRINT_NEWLINE       789 JUMP_ABSOLUTE          795792 JUMP_ABSOLUTE          798>>  795 JUMP_ABSOLUTE          801>>  798 JUMP_ABSOLUTE          804>>  801 JUMP_ABSOLUTE          807>>  804 JUMP_FORWARD             0 (to 807)>>  807 LOAD_CONST              52 (None)810 RETURN_VALUE 

还原后(这道题盯了快1h...):

en = [3,37,72,9,6,132]
output = [101,96,23,68,112,42,107,62,96,53,176,179,98,53,67,29,41,120,60,106,51,101,178,189,101,48]
print('welcome to GWHT2020')
flag = raw_input('please input your flag:')
str = flag
a = len(str)
if a<38:print('lenth wrong!')exit(0)
if((((ord(str[1])+2020*ord(str[0]))*2020+ord(str[2]))*2020+ord(str[3]))*2020+ord(str[4])!=1182843538814603):print('bye~')exit(0)
x=[]
k=5
for i in range(13):b=ord(str[k])c=ord(str[k+1])a11=c^en[i%6]a22=b^en[i%6]x.append(a11)x.append(a22)k+=2
if x!=output:print('oh,you are wrong!')exit(0)
l=len(str)
a1=ord(str[l-7])
a2=ord(str[l-6])
a3=ord(str[l-5])
a4=ord(str[l-4])
a5=ord(str[l-3])
a6=ord(str[l-2])
if(a1*3+a2*2+a3*5==1003):if(a1*4+a2*7+a3*9==2013):if(a1+a2*8+a3*2==1109):if(a4*3+a5*2+a6*5==671):if(a4*4+a5*7+a6*9==1252):if(a4+a5*8+a6*2==644):print('congraduation!you get the right flag!')

因为这题有很多未知解,所以很容易想到用z3约束器。

代码如下

from z3 import *
en = [3,37,72,9,6,132]
output = [101,96,23,68,112,42,107,62,96,53,176,179,98,53,67,29,41,120,60,106,51,101,178,189,101,48]
flag=''
s=Solver()
a1=Int('a1')
a2=Int('a2')
a3=Int('a3')
a4=Int('a4')
a5=Int('a5')
a6=Int('a6')
s.add(a1*3+a2*2+a3*5==1003)
s.add(a1*4+a2*7+a3*9==2013)
s.add(a1+a2*8+a3*2==1109)
s.add(a4*3+a5*2+a6*5==671)
s.add(a4*4+a5*7+a6*9==1252)
s.add(a4+a5*8+a6*2==644)
if s.check()==sat:print(s.model())
k=0
for i in range(13):flag+=chr(output[k+1]^en[i%6])flag+=chr(output[k]^en[i%6])k=k+2
s = [97,101,102,102,55,51]
for i in range(6):flag+=chr(s[i])
print(flag)#cfa2b87b3f746a8f0ac5c5963faeff73

相关文章:

BUUCTF-[羊城杯 2020]Bytecode

题目下载&#xff1a;下载 这道题是一个关于python字节码的。 补充一下相关知识&#xff1a;https://shliang.blog.csdn.net/article/details/119676978dis --- Python 字节码反汇编器 — Python 3.7.13 文档 手工还原参考:[原创]死磕python字节码-手工还原python源码-软件逆…...

《Uniapp入门指南:从安装到打包的全流程》

Uniapp是一款基于Vue.js的跨平台开发框架&#xff0c;可以快速构建出同时支持多个移动端平台和Web端的应用程序。本文将介绍Uniapp的基础知识和开发流程&#xff0c;帮助读者快速入门Uniapp开发。一、Uniapp的基础知识1.Uniapp的优势Uniapp的最大优势是可以快速开发同时支持多个…...

机器学习算法集成系统

版权所有:CSDN——川川菜鸟 本系统并不作为本专栏要求,这一篇自愿学习。 文章目录 本系统设计背景设计思路完整代码本系统设计背景 随着人工智能技术的不断发展,机器学习成为了人工智能领域的重要组成部分。机器学习算法能够从大量数据中发现模式、规律,并利用这些规律对新…...

scratch绘制雷达 电子学会图形化编程scratch等级考试三级真题和答案解析2022年9月

目录 scratch绘制雷达 一、题目要求 1、准备工作 2、功能实现 二、案例分析...

VRRP主备备份

1、VRRP专业术语 VRRP备份组框架图如图14-1所示: 图14-1:VRRP备份组框架图 VRRP路由器(VRRP Router):运行VRRP协议的设备,它可能属于一个或多个虚拟路由器,如SwitchA和SwitchB。虚拟路由器(Virtual Router):又称VRR…...

【软件逆向】软件破解?病毒木马?游戏外挂?

文章目录课前闲聊认识CTF什么是CTFCTF解题模式什么是逆向定义应用领域CTF中的逆向现状推荐书籍学习要点逆向工程学习基础常规逆向流程阶段一:信息收集阶段二:过保护后静态调试阶段三:结合动态调试阶段四:写解题脚本逆向例题概览1-控制台程序解题过程2-Crackme3-游戏4-移动安全C…...

curl请求常用参数和返回码

curl是一个用于传输数据的工具&#xff0c;支持各种协议&#xff0c;如HTTP、FTP、SMTP等。以下是一些常用的curl请求参数及其作用&#xff1a; -X, --request&#xff1a;指定HTTP请求方法&#xff0c;常见的有GET、POST、PUT、DELETE等。 -H, --header&#xff1a;设置HTTP请…...

【STM32】进阶(一):抢占式优先级和响应式优先级(NVIC_PriorityGroupConfig)

1、简介 STM32(Cortex-M3)中每个中断源都有两级优先级&#xff1a;抢占式优先级&#xff08;pre-emption priority&#xff09;和子优先级&#xff08;subpriority&#xff09;&#xff0c;子优先级也叫响应式优先级。 1.1 抢占式优先级 望文知义&#xff0c;就是优先级高的…...

LogCompilation后JIT输出文件格式解析

https://wiki.openjdk.org/display/HotSpot/LogCompilationoverview https://spotcodereviews.com/articles/optimization/2020/12/23/why-does-the-jit-continually-recompile-the-same-method.html task_queued count表示总共执行次数&#xff0c;iicount表示解释器执行次数…...

Linux学习第二十四节-Podman容器

一、容器的概念 容器是由一个或多个与系统其余部分隔离的进程组成的集合。我们可以理解为“集装箱”。 集装箱是打包和装运货物的标准方式。它作为一个箱子进行标记、装载、卸载&#xff0c;以及从一个 位置运输到另一个位置。该容器的内容与其他容器的内容隔离&#xff0c…...

基于quartz实现定时任务管理系统

基于quartz实现定时任务管理系统 背景 说起定时任务框架&#xff0c;首先想到的是Quartz。这是定时任务的老牌框架了&#xff0c;它的优缺点都很明显。借助PowerJob 的readme文档的内容简单带过一下这部分。 除了上面提到&#xff0c;还有elastic-job-lite、quartzui也是相当…...

vue-element-admin:基于element-ui 的一套后台管理系统集成方案

文章目录一、vue-element-admin1、vue-element-admin1.1简介1.2安装2、vue-admin-template2.1简介2.2安装一、vue-element-admin 1、vue-element-admin 1.1简介 vue-element-admin是基于element-ui 的一套后台管理系统集成方案。 GitHub地址&#xff1a;https://github.com…...

KVM-7、KVM 虚拟机创建的几种方式

通过对 qemu-kvm、libvirt 的学习,总结三种创建虚拟机的方式: (1)通过 qemu-kvm 创建 (2)通过 virt-install 创建 (3)通过 virt-manager 创建 在使用这三种创建虚拟机前提是 宿主机必须支持 cpu 的硬件虚拟化技术(Intel 是 vmx,AMD 是svm),通过下面方式进行查看…...

Hadoop三大框架之HDFS

一、概述HDFS产生的背景及定义HDFS产生背景随着数据量越来越大&#xff0c;在一个操作系统存不下所有的数据&#xff0c;那么就分配到更多的操作系统管理的磁盘中&#xff0c;但是不方便管理和维护&#xff0c;需要一种系统来管理多台机器上的文件&#xff0c;这就是分布式文件…...

好好的系统,为什么要分库分表?

不急于上手实战 ShardingSphere 框架&#xff0c;先来复习下分库分表的基础概念&#xff0c;技术名词大多晦涩难懂&#xff0c;不要死记硬背理解最重要&#xff0c;当你捅破那层窗户纸&#xff0c;发现其实它也就那么回事。 什么是分库分表 分库分表是在海量数据下&#xff0…...

多种调度模式下的光储电站经济性最优储能容量配置分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

二分法(适用于任何题型!!!)

今天看二分法看了一天&#xff0c;看吐了&#xff0c;现在讲讲怎么做类题。 只讲两种做法&#xff08;实则是可合并为一种&#xff09;&#xff0c;任何题型都可以转化为这种做法&#xff01;&#xff01;&#xff01;是任何&#xff01; 首先&#xff0c;设置 int left,righ…...

js常见的七种继承及实现

在 JavaScript 中&#xff0c;常见的继承方式有以下七种&#xff1a;大厂面试题分享 面试题库前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库1. 原型链继承原型链继承是 JavaScript 中一种基于原型的继承方式&#…...

案例分析之——理由Mybatis动态SQL实现复用

无复用思想的做法&#xff1a; 在没有复用思想的时候&#xff0c;就只顾着实现功能。比如开发过程中涉及到两个表的更新功能&#xff0c;每需要更新一处&#xff0c;就写一个接口&#xff0c;结果出现了写了11个接口的情况。 这样虽然功能实现了&#xff0c;可是可能自…...

MCM 箱模型建模方法及大气 O3 来源解析实用干货

OBM 箱模型可用于模拟光化学污染的发生、演变过程&#xff0c;研究臭氧的生成机制和进行敏感性分析&#xff0c;探讨前体物的排放对光化学污染的影响。箱模型通常由化学机理、物理过程、初始条件、输入和输出模块构成&#xff0c;化学机理是其核心部分。MCM (Master Chemical M…...

【独家】华为OD机试 - 最长连续交替方波信号(C 语言解题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

代码随想录算法训练营第二十一天打卡 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

打卡第21天&#xff0c;继续二叉树&#xff0c;前几天终于补完了&#xff0c;感觉难度上来了。 今日任务 530.二叉搜索树的最小绝对差501.二叉搜索树中的众数 二叉树的最近公共祖先 530.二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不…...

免费下载丨一看即会,Serverless 技术进阶必读百宝书

过去一年&#xff0c;全球正在加速推进云计算的 Serverless 化进程。Serverless 架构已经逐渐从“被接受”走向了“被学习”和“被应用”。云的产品体系正在 Serverless 化&#xff0c;从计算、存储、数据库到中间件&#xff0c;越来越多的云产品采用了 Serverless 模式。服务器…...

SQL语句的加锁方式 - Mysql 锁机制

SQL语句的加锁方式 - Mysql锁机制 SELECT ... FROM SELECT ... FOR UPDATE / SELECT ... FOR SHARED MODE SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE UPDATE ... WHERE ... DELETE FROM ... WHERE ... INSERT INSERT ... ON DUPLICATE KEY UPDATE REPLACE Mysql锁机…...

C#开发的OpenRA的游戏主界面怎么样创建4

继续游戏主界面创建的主题, 前面已经说到怎么样找到mainmenu.yaml来显示主界面,也说了怎么样找到各个子控件类。 现在就来仔细分析一下,主界面每一部分的功能。 比如下面这个区域的界面是怎么样创建: 要创建这一小部分的界面显示,也是需要做很多的工作。 因为在这里所有UI…...

覆盖5大主流开发平台的报表控件,它值得你一看

为什么大家现在都在使用第三方报表工具呢&#xff1f; 第三方报表工具是数据库存储&#xff0c;数据库程序通常可以存放的数据量是相当大的&#xff0c;可以处理非常复杂的数据结构关系&#xff0c;报表数据交互速度也非常快。不仅能够提高开发效率&#xff0c;还能实现灵活美…...

【冲刺蓝桥杯的最后30天】day4

大家好&#x1f603;&#xff0c;我是想要慢慢变得优秀的向阳&#x1f31e;同学&#x1f468;‍&#x1f4bb;&#xff0c;断更了整整一年&#xff0c;又开始恢复CSDN更新&#xff0c;从今天开始更新备战蓝桥30天系列&#xff0c;一共30天&#xff0c;如果对你有帮助或者正在备…...

spring boot actuator 动态修改日志级别

1 日志级别 Spring Boot Actuator包括在运行时查看和配置应用程序日志级别的功能。您可以查看整个列表&#xff0c;也可以查看单个记录器的配置&#xff0c;该配置由显式配置的日志级别和日志框架给出的有效日志级别组成。这些级别可以是: TRACEDEBUGINFOWARNERRORFATALOFFnu…...

兴达易控Modbus转Profinet网关连接1200Profinet转modbus接三菱A800变频器案例

下面介绍A800 变频器通过兴达易控modbus转profinet网关&#xff0c;使1200plc无需编程实现Profinet转modbus协议转换&#xff0c;把modbus变频器轻松组网 网络拓扑如下图 打开博图组态加载GSD文件&#xff0c;modbus转profinet网关从站接口接入到1200PLC上 配置modbus转profine…...

「SAP ABAP」OPEN SQL(四)【FROM语句】

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…...