[UTCTF 2024] crypto 部分

RSA-256

RSA签到太简单了

N = 77483692467084448965814418730866278616923517800664484047176015901835675610073
e = 65537
c = 43711206624343807006656378470987868686365943634542525258065694164173101323321
p,q=1025252665848145091840062845209085931,75575216771551332467177108987001026743883
long_to_bytes(pow(c,invert(e,(p-1)*(q-1)),N))#utflag{just_send_plaintext}

Beginner: Anti-dcode.fr

这题一开始还真虎了一下,给了caeser加密的flag并加了大量字符,只需要把26种情况列出来,然后用正则表达式找出来就行了

import re 
import string def caeser(m,i):t = ''for v in m:if v in string.ascii_lowercase:t += chr(ord('a')+(ord(v)-ord('a')+i)%26)else:t += v return t msg = open('c3_LoooongCaesarCipher.txt').read()for i in range(26):tmsg = caeser(msg,i)it = re.finditer(r"utflag\{[a-zA-Z_]+\}",tmsg)for v in it:print(v.group())#utflag{rip_dcode}

numbers go brrr

现在怎么弄个题就有远端,先是生成一个随机种子,然后生成key进行AES加密,远端提供加密和flag密文,但是由于seed太小只有10**6爆破一下即可。不过这个远端确实没大意思,手工得到密文再爆破即可。

#!/usr/bin/env python3
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Random import randomseed = random.randint(0, 10 ** 6)
def get_random_number():global seed seed = int(str(seed * seed).zfill(12)[3:9])return seeddef encrypt(message):key = b''for i in range(8):key += (get_random_number() % (2 ** 16)).to_bytes(2, 'big')cipher = AES.new(key, AES.MODE_ECB)ciphertext = cipher.encrypt(pad(message, AES.block_size))return ciphertext.hex()print("Thanks for using our encryption service! To get the encrypted flag, type 1. To encrypt a message, type 2.")
while True:print("What would you like to do (1 - get encrypted flag, 2 - encrypt a message)?")user_input = int(input())if(user_input == 1):breakprint("What is your message?")message = input()print("Here is your encrypted message:", encrypt(message.encode()))flag = open('/src/flag.txt', 'r').read();
print("Here is the encrypted flag:", encrypt(flag.encode()))
c = 'bafc0c65ea2e10ae53ae0c36cb2d7f622f8fedbc2aee2ccf18c8f63ec55026538ec4ffcd12d6d1e828ff19481e78a360'
c = bytes.fromhex(c)from Crypto.Cipher import AESdef get_random_number():global seed seed = int(str(seed * seed).zfill(12)[3:9])return seeddef encrypt(message):key = b''for i in range(8):key += (get_random_number() % (2 ** 16)).to_bytes(2, 'big')cipher = AES.new(key, AES.MODE_ECB)ciphertext = cipher.decrypt(message)return ciphertextfor seed in range(10**6):flag = encrypt(c)if b'utflag{' in flag:print(flag)#utflag{deep_seated_and_recurring_self-doubts}

numbers go brrr 2

与上题基本相似,但需要猜对3次,这个可以作到100次,这样如果爆破就会超时。所以这题先生成字典,其它直接查表回复即可。

#!/usr/bin/env python3
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Random import randomseed = random.randint(0, 10 ** 6)
def get_random_number():global seed seed = int(str(seed * seed).zfill(12)[3:9])return seeddef encrypt(message):key = b''for i in range(8):key += (get_random_number() % (2 ** 16)).to_bytes(2, 'big')cipher = AES.new(key, AES.MODE_ECB)ciphertext = cipher.encrypt(pad(message, AES.block_size))return key.hex(), ciphertext.hex()print("Thanks for using our encryption service! To get the start guessing, type 1. To encrypt a message, type 2.")
print("You will need to guess the key (you get 250 guesses for one key). You will do this 3 times!")for i in range(3):seed = random.randint(0, 10 ** 6)print("Find the key " + str(i + 1) + " of 3!")key = encrypt(b"random text to initalize key")[0]while True:print("What would you like to do (1 - guess the key, 2 - encrypt a message)?")user_input = int(input())if(user_input == 1):breakprint("What is your message?")message = input()key, ciphertext = encrypt(message.encode())print("Here is your encrypted message:", ciphertext)print("You have 250 guesses to find the key!")found = Falsefor j in range(250):print("What is your guess (in hex)?")guess = str(input()).lower()if guess == key:print("You found the key!")found = Truebreakelse:print("That is not the key!")if not found:print("You did not find the key!")exit(0)flag = open('/src/flag.txt', 'r').read();
print("Here is the flag:", flag)
from pwn import *
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Random import randomdef get_random_number():global seed seed = int(str(seed * seed).zfill(12)[3:9])return seeddef encrypt(message):key = b''for i in range(8):key += (get_random_number() % (2 ** 16)).to_bytes(2, 'big')cipher = AES.new(key, AES.MODE_ECB)ciphertext = cipher.encrypt(pad(message, AES.block_size))return key.hex(), ciphertext.hex()# 字典 cipher:key
dic = {}
msg = b"random text to initalize key"
for seed in range(10**6):key,cipher = encrypt(msg)dic[cipher] = key #attack
p = remote('betta.utctf.live', 2435)
context(arch='amd64', log_level='debug')for _ in range(3):p.sendlineafter(b"What would you like to do (1 - guess the key, 2 - encrypt a message)?\n", b'2')p.sendlineafter(b"What is your message?", msg)p.recvuntil(b"Here is your encrypted message:")c = p.recvline().decode().strip()key = dic[c]p.sendlineafter(b"What would you like to do (1 - guess the key, 2 - encrypt a message)?\n", b'1')p.sendlineafter(b"What is your guess (in hex)?\n", key.encode())p.recvline()p.recvline()
p.interactive()

bits and pieces

回到RSA,给了3组n,e,c第1个n可以在factor.db分解,第2和第3有公因子

n1=16895844090302140592659203092326754397916615877156418083775983326567262857434286784352755691231372524046947817027609871339779052340298851455825343914565349651333283551138205456284824077873043013595313773956794816682958706482754685120090750397747015038669047713101397337825418638859770626618854997324831793483659910322937454178396049671348919161991562332828398316094938835561259917841140366936226953293604869404280861112141284704018480497443189808649594222983536682286615023646284397886256209485789545675225329069539408667982428192470430204799653602931007107335558965120815430420898506688511671241705574335613090682013
e1= 65537
c1=7818321254750334008379589501292325137682074322887683915464861106561934924365660251934320703022566522347141167914364318838415147127470950035180892461318743733126352087505518644388733527228841614726465965063829798897019439281915857574681062185664885100301873341937972872093168047018772766147350521571412432577721606426701002748739547026207569446359265024200993747841661884692928926039185964274224841237045619928248330951699007619244530879692563852129885323775823816451787955743942968401187507702618237082254283484203161006940664144806744142758756632646039371103714891470816121641325719797534020540250766889785919814382n2= 22160567763948492895090996477047180485455524932702696697570991168736807463988465318899280678030104758714228331712868417831523511943197686617200545714707332594532611440360591874484774459472586464202240208125663048882939144024375040954148333792401257005790372881106262295967972148685076689432551379850079201234407868804450612865472429316169948404048708078383285810578598637431494164050174843806035033795105585543061957794162099125273596995686952118842090801867908842775373362066408634559153339824637727686109642585264413233583449179272399592842009933883647300090091041520319428330663770540635256486617825262149407200317
e2= 65537
c2= 19690520754051173647211685164072637555800784045910293368304706863370317909953687036313142136905145035923461684882237012444470624603324950525342723531350867347220681870482876998144413576696234307889695564386378507641438147676387327512816972488162619290220067572175960616418052216207456516160477378246666363877325851823689429475469383672825775159901117234555363911938490115559955086071530659273866145507400856136591391884526718884267990093630051614232280554396776513566245029154917966361698708629039129727327128483243363394841238956869151344974086425362274696045998136718784402364220587942046822063205137520791363319144n3= 30411521910612406343993844830038303042143033746292579505901870953143975096282414718336718528037226099433670922614061664943892535514165683437199134278311973454116349060301041910849566746140890727885805721657086881479617492719586633881232556353366139554061188176830768575643015098049227964483233358203790768451798571704097416317067159175992894745746804122229684121275771877235870287805477152050742436672871552080666302532175003523693101768152753770024596485981429603734379784791055870925138803002395176578318147445903935688821423158926063921552282638439035914577171715576836189246536239295484699682522744627111615899081
e3= 65537
c3= 17407076170882273876432597038388758264230617761068651657734759714156681119134231664293550430901872572856333330745780794113236587515588367725879684954488698153571665447141528395185542787913364717776209909588729447283115651585815847333568874548696816813748100515388820080812467785181990042664564706242879424162602753729028187519433639583471983065246575409341038859576101783940398158000236250734758549527625716150775997198493235465480875148169558815498752869321570202908633179473348243670372581519248414555681834596365572626822309814663046580083035403339576751500705695598043247593357230327746709126221695232509039271637
from Crypto.Util.number import *#第1段factor.db可分解
p = 129984014749130366259742130443330376923069118727641845190136006048911945242427603092160936004682857611235008521722596025476170673607376869837675885556290582081941522328978811710862857253777650447221864279732376499043513950683086803379743964370215090077032772967632331576620201195241241611325672953583711295127
q = n1//p 
m1 = pow(c1,invert(e1,(p-1)*(q-1)),n1)
long_to_bytes(m1)#2,3有公因子
p = gcd(n2,n3)
q = n2//p
m2 = pow(c2,invert(e2,(p-1)*(q-1)),n2)
long_to_bytes(m2)q = n3//p 
m3 = pow(c3,invert(e3,(p-1)*(q-1)),n3)
long_to_bytes(m3)#utflag{oh_no_it_didnt_work_</3_i_guess_i_can_just_use_standard_libraries_in_the_future}

Cryptordle

这题有点意思,随机生成5个字节串a-z,然后可以猜6次,如果不正确会返回对应位置差的积模31。

假设串里没有yz,然后猜zzzzz这个差的积表示为a*b*c*d*e=k1 (mod 31),然后第2次猜zzzzy那么第2次结果就是a*b*c*d*(e-1)=k2 两式可以得到a*b*c*d=k1-k2,第3次a*b*c*(d-1)*e=k3得到a*b*c*e=k1-k3这样猜5次可能得到5个算式,从而求出与猜测数的差。在原串不包含的yz的情况(概率很大)即可猜对,得到flag

#!/usr/bin/env python3
import randomwordlist = open('/src/wordlist.txt', 'r').read().split('\n')for word in wordlist:assert len(word) == 5for letter in word:assert letter in 'abcdefghijklmnopqrstuvwxyz'for attempt in range(3):answer = random.choice(wordlist)num_guesses = 0while True:num_guesses += 1print("What's your guess?")guess = input().lower()assert len(guess) == 5for letter in guess:assert letter in 'abcdefghijklmnopqrstuvwxyz'if guess == answer:breakresponse = 1for x in range(5):a = ord(guess[x]) - ord('a')b = ord(answer[x]) - ord('a')response = (response * (a-b)) % 31print(response)if num_guesses > 6:print("Sorry, you took more than 6 tries. No flag for you :(")exit()else:print("Good job! Onward...")if num_guesses <= 6:print('Nice! You got it :) Have a flag:')flag = open('/src/flag.txt', 'r').read()print(flag)
else:print("Sorry, you took more than 6 tries. No flag for you :(")
from pwn import *def getv(k):for a in range(1,26):for b in range(1,26):for c in range(1,26):for d in range(1,26):for e in range(1,26):if a*b*c*d*e%31 == k[0] and a*b*c*d%31 == (k[0]-k[1])%31 and a*b*c*e%31 == (k[0]-k[2])%31 and a*b*d*e%31 == (k[0]-k[3])%31 and a*c*d*e%31 == (k[0]-k[4])%31:print(a,b,c,d,e)return [a,b,c,d,e]ss = 'zzzzz zzzzy zzzyz zzyzz zyzzz'.split()p = remote('betta.utctf.live', 7496)
context(arch='amd64', log_level='debug')for _ in range(3):k = [0]*5for i in range(5):p.sendlineafter(b"What's your guess?\n", ss[i].encode())k[i] = int(p.recvline())r = getv(k)ans = bytes([97+(25-i) for i in r])p.sendlineafter(b"What's your guess?\n", ans)p.recvline()
p.recvline()
p.interactive()
#utflag{sometimes_pure_guessing_is_the_strat}

simple signature

这题始终没弄明白是怎么回事,没有附件,名字应该是说rsa签名,连接远端后输入数字会返回签名,相同的值连续输入后签名会不同。一直没弄明白要干嘛,但是连上以后发现如果先输入2,下交再输入1,就会得到与2一样的签名,也就达到预测的目的。

┌──(kali㉿kali)-[~/ctf/2403/vctf]
└─$ nc betta.utctf.live 4374
Welcome to the signature generator!
This service generates signatures for nonnegative integer messages.
Today's RSA parameters are: 
n = 24818102468811742954179239941243000716474501576123062067907829905430437901641852824068409901460799845657311850995901841958536939006794455987320373541121185242495836205822506607976283699695770788514568794824731256744835172302608153871422130811421910736529023113284124417589940184203700106133856728315001792637498890342036475547535012939102224134530598151180826137497341472979647552555158629718259982288814053241627971023861718937371958732493006607656878622399979648296189545707685195805665555639904117900173399017646238696499618368773448507979239551946276657409846690226182166731587504995398512320220459430521589080197
e = 65537
Enter a message (enter 0 to stop): 1
Your signature is: 1
Enter a message (enter 0 to stop): 2
Your signature is: 8474196947803533415733926946288621167800325325962982251402337505581143635067918022935805728075817903116613113367989317039654273946476810366296878926097987190319563502071276868913046806449442742795695617672295024620405377123651429702461014503593444401165698658249755611191224870254493173733264700499121082221810383967811506072327295903811645987977053176877105892657538765579204957786823451883476290334010100831492394693738564096256123529393157254612699115968503772851780019438114403267463556541879055058987253847404097624963359390684308026600528231881065712324215649550650437522056177720235585099984088332628262942823
Enter a message (enter 0 to stop): 1
Your signature is: 8474196947803533415733926946288621167800325325962982251402337505581143635067918022935805728075817903116613113367989317039654273946476810366296878926097987190319563502071276868913046806449442742795695617672295024620405377123651429702461014503593444401165698658249755611191224870254493173733264700499121082221810383967811506072327295903811645987977053176877105892657538765579204957786823451883476290334010100831492394693738564096256123529393157254612699115968503772851780019438114403267463556541879055058987253847404097624963359390684308026600528231881065712324215649550650437522056177720235585099984088332628262942823
Enter a message (enter 0 to stop): 1
Your signature is: 23784380698418881947187441817753248953602582666015250006315895732072377551023297973305493503429229749498094850262405747043349452419523326581766478628643656190125043940275563647293283965939161810348720112888366878790117973130057449035086376268023838684367146711197158277795175379096567770182635820734141271885186936126036832490162107468141705519410469739114649621367488428457007357933727880467407081263423609508940612661504660084481093544695472778156750123473407819773407277749365125795727289062143626732871723931274810578532062756986914047787260372788280114883837170889065943861850733848359302117469870387055716205702
Enter a message (enter 0 to stop): 1
Your signature is: 15717917765030286634947085177672319844843662144464689727661189549005403620576417166560380356708124131369945465052199016087065005103192371199023021257752765744435976766220452956843484873701003328346459589837438366788790964925034212015549465531269393591529106522201870325394843957220433532193965795086295816558841647124670693531326819267529677780791798648068377431919322529878963496419268634341455387582378441147529298925195039335123704075857062512131770006073683529470336499500840854010294985809979440503533088389438388739057159792361854523232857038933446006449398830845788233272100898213169401327014565088788290933102
Enter a message (enter 0 to stop): 2
Your signature is: 15895820807604611641884387992674411592007518018579007510467725931909969718394325643052615463292826914612474291095732240705442912465514890650431300497476041921631388756141297981207460794049933856015303848687045557740279795292807002248034205031530423456759122573906183605230468655303159631689938987372719142119176571761056224050225767854035466398259804698786699558549469207404575982678590628995227771764981693037671178454799012693242378522572012507695668347198867734025830059898532306013468571392129006772564190463048243160428421930056829679932114957571809250594776289218937688359196728965059537599786360763909504526901
Enter a message (enter 0 to stop): 1
Your signature is: 15895820807604611641884387992674411592007518018579007510467725931909969718394325643052615463292826914612474291095732240705442912465514890650431300497476041921631388756141297981207460794049933856015303848687045557740279795292807002248034205031530423456759122573906183605230468655303159631689938987372719142119176571761056224050225767854035466398259804698786699558549469207404575982678590628995227771764981693037671178454799012693242378522572012507695668347198867734025830059898532306013468571392129006772564190463048243160428421930056829679932114957571809250594776289218937688359196728965059537599786360763909504526901
Enter a message (enter 0 to stop): 2
Your signature is: 4968829646702234813748834917867089760618485624820241505565033454925753393927663174731892684045264388687039088510331244619265399290666695483431766681288337496105280038241406206073532364202587602052230282413927198357843182527129582634282168656699411884422258935098341022499796481781971061602383259724726609388876616745337301835614289654363068699506922148593185065158291832010623434422119461965497746317027431994099446560574616148467995707356122859069024375423396730830008084403180478529980372159760813949593128845255526274311983622015423196424096262920922832675084332112869555671905730454566892630109479113776916484640
Enter a message (enter 0 to stop): 0
Now, come up with your own pair!
Enter a message: 1
Enter a signature: 4968829646702234813748834917867089760618485624820241505565033454925753393927663174731892684045264388687039088510331244619265399290666695483431766681288337496105280038241406206073532364202587602052230282413927198357843182527129582634282168656699411884422258935098341022499796481781971061602383259724726609388876616745337301835614289654363068699506922148593185065158291832010623434422119461965497746317027431994099446560574616148467995707356122859069024375423396730830008084403180478529980372159760813949593128845255526274311983622015423196424096262920922832675084332112869555671905730454566892630109479113776916484640
Congrats! Here is the flag: utflag{a1m05t_t3xtb00k_3x3rc153}
 

*Forgery

这题提示是rev,crypto,C++写的吧,没看懂,跟pwn似的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网易RAG问答知识库开源了,Star 6K!!

网易RAG问答知识库开源了&#xff0c;Star 6K&#xff01;&#xff01; RAG 问答知识库 QAnything 开源了QAnything 架构设计剖析整个架构的工作流程主要包含三个环节为什么需要两阶段检索&#xff1f;使用的基座大模型相关技术组件 QAnything 本地部署一键部署安装&#xff0c…

算法——验证二叉树的前序序列化

题目&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时&#xff0c;我们可以记录下这个节点的值。如果它是一个空节点&#xff0c;我们可以使用一个标记值记录&#xff0c;例如 #。 例如&#xff0c;上…

对HTML语义化的理解

语义化是指根据内容的结构化&#xff08;内容语义化&#xff09;&#xff0c;选择合适的标签&#xff08;代码语义化&#xff09;。通俗来讲就是用正确的标签做正确的事情。 语义化的优点如下&#xff1a; 对机器友好&#xff0c;带有语义的文字表现力丰富&#xff0c;更适合…

【CSS】基础选择器

目录 标签选择器 id选择器 类选择器 CSS的编写地点&#xff1a; 标签选择器 说明&#xff1a;标签选择器实际上就是HTML标签元素&#xff08;可以是任何HTML元素&#xff09;&#xff0c;用来改变一个指定标签的样式 示例&#xff1a; <style type"text/css"…

用vscode仿制小米官网

html内容: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel&quo…

VC++ Windows 平台通过QOS2库函数设置Socket DSCP(IP_TOS)参数选项

本体提供的函数实现&#xff0c;只能对于TCP生效&#xff0c;UDP没法生效&#xff0c;看文档没搞明白&#xff0c;有了解UDP怎么设置DSCP的童鞋&#xff0c;可以在评论区给予答复。 用法是这样的&#xff0c;每个TCP在建立链接后&#xff0c;立即创建这个QOSS的实例&#xff0c…

深入Tauri开发——从环境搭建到项目构建

深入Tauri开发——从环境搭建到项目构建 开启你的Tauri桌面应用开发之旅&#xff08;续&#xff09; 经过上一篇文章的基础介绍&#xff0c;现在让我们更进一步&#xff0c;详细阐述如何在Windows和macOS平台上顺利搭建Tauri应用所需的开发环境&#xff0c;并指导您从创建项目…

vscode前后台分离Nodejs+vue校园影院售票系统_490gq

柚子校园影院在设计与实施时&#xff0c;采取了模块性的设计理念&#xff0c;把相似的系统的功能整合到一个模组中&#xff0c;以增强内部的功能&#xff0c;减少各组件之间的联系&#xff0c;从而达到减少相互影响的目的。 后台主要包括首页&#xff0c;个人中心&#xff0c;用…

Java内存模型(JMM)-happens-before

Java内存模型&#xff08;JMM&#xff09;-happens-before Java内存模型&#xff08;JMM&#xff09;是一种规范&#xff0c;用于定义多线程程序中&#xff0c;线程如何与主内存、工作内存以及其他线程之间进行通信和交互。 其中&#xff0c;happens-before是JMM中的一个重…

Qt 实现的万能采集库( 屏幕/相机/扬声器/麦克风采集)

【写在前面】 之前应公司需要&#xff0c;给公司写过一整套直播的库( 推拉流&#xff0c;编解码)&#xff0c;类似于 libobs。 结果后来因为没有相关项目&#xff0c;便停止开发&维护了。 不过里面很多有用的组件&#xff0c;然后也挺好用的&#xff0c;遂开源出来一部分。…

Java 处理Mysql获取树形的数据

Mysql数据&#xff1a; 代码如下&#xff1a; Entity&#xff1a; Data Accessors(chain true) public class Region {private BigInteger id;//名称private String name;//父idprivate BigInteger parentId;private List<Region> children;private Integer createTim…

clickhouse MPPDB数据库--新特性使用示例

clickhouse 新特性&#xff1a; 从clickhouse 22.3至最新的版本24.3.2.23&#xff0c;clickhouse在快速发展中&#xff0c;每个版本都增加了一些新的特性&#xff0c;在数据写入、查询方面都有性能加速。 本文根据clickhouse blog中的clickhouse release blog中&#xff0c;学…

K8S Deployment 简介, 1个简单的Kubernetes Deployment YAML 文件

当谈到 Kubernetes 集群中的应用程序部署和管理时&#xff0c;Deployment、ReplicaSet 和 Pod 是三个重要的概念。它们之间存在一定的关系和层次结构。下面是对 Deployment、ReplicaSet 和 Pod 的详细解释以及它们之间的关系。 Deployment&#xff08;部署&#xff09; Deploy…

js教程(12)——本地储存

一、介绍 前端本地存储是指在浏览器中存储数据的机制&#xff0c;它允许前端开发者将数据保存在用户的浏览器中&#xff0c;以便在用户下次访问网站时可以使用这些数据。 前端本地存储有以下几种方式&#xff1a; Cookie&#xff1a;Cookie 是最早也是最常用的前端本地存储方式…

【Java设计模式】序:设计模式总体概述

目录 什么是设计模式设计模式的分类1 创建型模式1.1. 单例&#xff08;Singleton&#xff09;1.2 原型&#xff08;Prototype&#xff09;1.3 工厂方法&#xff08;FactoryMethod&#xff09;1.4 抽象工厂&#xff08;AbstractFactory&#xff09;1.5 建造者&#xff08;Builde…

31. 下一个排列 —— LeetCode (python) [PS: LeetCode 运行环境疑似出错]

# encoding utf-8 # 开发者&#xff1a;xxx # 开发时间&#xff1a; 20:26 # "Stay hungry&#xff0c;stay foolish."class Solution(object):def nextPermutation(self, nums):import itertoolsl len(nums)a tuple(nums)nums.sort()permutations_lst list(ite…

Android RecycleView 异步缓存 itemView 提升滑动性能

RecyclerView 是 Android 官方推荐的用于展示大量数据列表的控件&#xff0c;具有高度的可定制性和灵活性。我们可以通过自定义 LayoutManager、ItemDecoration、ItemAnimator 等来实现不同的布局和动画效果&#xff0c;满足各种需求。同时&#xff0c;RecyclerView 支持局部刷…

C语言什么是静态变量?如何实现?

一、问题 在编写程序的过程中&#xff0c;对于某些函数的局部变量的值&#xff0c;有时不希望它在函数调⽤结束后消失&#xff0c;也就是不释放该变量所占⽤的存储单元&#xff1b;同样&#xff0c;有时在程序设计中也希望某些外部变量只限于被本⽂件引⽤。这就需要使⽤静态变量…

2024年清明节安装matlab 2024a

下载安装离线支持包SupportSoftwareDownloader_R2024a_win64&#xff0c;地址https://ww2.mathworks.cn/support/install/support-software-downloader.html&#xff0c;运行软件&#xff08;自解压运行&#xff09;&#xff0c;登录账号&#xff08;需要提前在官网注册&#x…

反转链表 - LeetCode 热题 23

大家好&#xff01;我是曾续缘&#x1f497; 今天是《LeetCode 热题 100》系列 发车第 23 天 链表第 2 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#…