FPGA實現流水式排序算法

該算法采用雙調排序算法,是一種可流水的遞推算法,且算法的消耗時長可算,具體細節參考視頻:

https://www.bilibili.com/video/BV1S3thzWEnh/?spm_id_from=333.1387.homepage.video_card.click&vd_source=69fb997b62efa60ae1add8b53b6a5923

module bitonic_sort(input						i_clk	,input						i_rst	,input		[16 * 16 - 1:0]	i_buff	,output		[16 * 16 - 1:0]	o_buff);localparam WIN = 16;wire	signed	[15:0]	w_data_buff	[0:15];genvar i;genvar j;generatefor(i = 0; i < 16; i = i + 1) beginassign w_data_buff[i] = i_buff[i * 16 + 15:i * 16];endendgenerate/*雙調排序:Bitonic 首先將相鄰兩個元素作為一個數組:(0,1)(2,3)(4,5)(6,7)(8,9)(10,11)(12,13)(14,15)將其按照順序、逆序交替排序,并兩個相鄰數組組成一個四元素的雙調數組(0,1,2,3)(4,5,6,7)(8,9,10,11)(12,13,14,15)通過對每個四元素數組進行2、1間隔排序,使四元素數組按照順序、逆序交替排序,并兩個相鄰數組組成一個8元素數組(0,1,2,3,4,5,6,7)(8,9,10,11,12,13,14,15)對每個8元素數組進行4、2、1間隔排序,使其按照順序、逆序交替排序,最終組成16元素的回調數組(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)對回調數組按照8、4、2、1間隔排序,完成順序或逆序排列*/reg	signed	[15:0]	r_bitonic_pipe0	[0:WIN - 1];//間隔1generatefor(i = 0; i < WIN / 4; i = i + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe0[i * 4] 	<= 'd0;r_bitonic_pipe0[i * 4 + 1]<= 'd0;endelse beginif(w_data_buff[i * 4] > w_data_buff[i * 4 + 1]) begin//升序r_bitonic_pipe0[i * 4] 		<= w_data_buff[i * 4 + 1];r_bitonic_pipe0[i * 4 + 1]	<= w_data_buff[i * 4];endelse beginr_bitonic_pipe0[i * 4] 		<= w_data_buff[i * 4];r_bitonic_pipe0[i * 4 + 1]	<= w_data_buff[i * 4 + 1];endendendalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe0[i * 4 + 2]<= 'd0;r_bitonic_pipe0[i * 4 + 3]<= 'd0;endelse beginif(w_data_buff[i * 4 + 2] < w_data_buff[i * 4 + 3]) begin//降序r_bitonic_pipe0[i * 4 + 2]<= w_data_buff[i * 4 + 3];r_bitonic_pipe0[i * 4 + 3]<= w_data_buff[i * 4 + 2];endelse beginr_bitonic_pipe0[i * 4 + 2]<= w_data_buff[i * 4 + 2];r_bitonic_pipe0[i * 4 + 3]<= w_data_buff[i * 4 + 3];endendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe1	[0:WIN - 1];//間隔2generatefor(i = 0; i < WIN / 8; i = i + 1) beginfor(j = 0; j < WIN / 8; j = j + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe1[i * 8 + j] 	<= 'd0;r_bitonic_pipe1[i * 8 + j + 2]<= 'd0;endelse beginif(r_bitonic_pipe0[i * 8 + j] > r_bitonic_pipe0[i * 8 + j + 2]) begin//升序r_bitonic_pipe1[i * 8 + j]		<= r_bitonic_pipe0[i * 8 + j  + 2];r_bitonic_pipe1[i * 8 + j + 2]	<= r_bitonic_pipe0[i * 8 + j];endelse beginr_bitonic_pipe1[i * 8 + j]		<= r_bitonic_pipe0[i * 8 + j];r_bitonic_pipe1[i * 8 + j + 2]	<= r_bitonic_pipe0[i * 8 + j + 2];				endendendalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe1[i * 8 + j + 4]<= 'd0;r_bitonic_pipe1[i * 8 + j + 6]<= 'd0;endelse beginif(r_bitonic_pipe0[i * 8 + j + 4] < r_bitonic_pipe0[i * 8 + j + 6]) begin//降序r_bitonic_pipe1[i * 8 + j + 4]<= r_bitonic_pipe0[i * 8 + j + 6];r_bitonic_pipe1[i * 8 + j + 6]<= r_bitonic_pipe0[i * 8 + j + 4];endelse beginr_bitonic_pipe1[i * 8 + j + 4]<= r_bitonic_pipe0[i * 8 + j + 4];r_bitonic_pipe1[i * 8 + j + 6]<= r_bitonic_pipe0[i * 8 + j + 6];				endendendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe2	[0:WIN - 1];generatefor(i = 0; i < WIN / 8; i = i + 1) beginfor(j = 0; j < WIN / 8; j = j + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe2[i * 8 + j * 2] 		<= 'd0;r_bitonic_pipe2[i * 8 + j * 2 + 1] 	<= 'd0;endelse beginif(r_bitonic_pipe1[i * 8 + j * 2] > r_bitonic_pipe1[i * 8 + j * 2 + 1]) begin//升序r_bitonic_pipe2[i * 8 + j * 2]		<= r_bitonic_pipe1[i * 8 + j * 2+ 1];r_bitonic_pipe2[i * 8 + j * 2 + 1]	<= r_bitonic_pipe1[i * 8 + j * 2];endelse beginr_bitonic_pipe2[i * 8 + j * 2]		<= r_bitonic_pipe1[i * 8 + j * 2];r_bitonic_pipe2[i * 8 + j * 2 + 1]	<= r_bitonic_pipe1[i * 8 + j * 2 + 1];endendendalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe2[i * 8 + j * 2 + 4]	<= 'd0;r_bitonic_pipe2[i * 8 + j * 2 + 5]	<= 'd0;endelse beginif(r_bitonic_pipe1[i * 8 + j * 2 + 4] < r_bitonic_pipe1[i * 8 + j * 2 + 5]) begin//降序r_bitonic_pipe2[i * 8 + j * 2 + 4]	<= r_bitonic_pipe1[i * 8 + j * 2 + 5];r_bitonic_pipe2[i * 8 + j * 2 + 5] 	<= r_bitonic_pipe1[i * 8 + j * 2 + 4];endelse beginr_bitonic_pipe2[i * 8 + j * 2 + 4]	<= r_bitonic_pipe1[i * 8 + j * 2 + 4];r_bitonic_pipe2[i * 8 + j * 2 + 5]	<= r_bitonic_pipe1[i * 8 + j * 2 + 5];endendendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe3	[0:WIN - 1];//間隔4generatefor(i = 0; i < WIN / 4; i = i + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe3[i]	<= 'd0;r_bitonic_pipe3[i + 4]<= 'd0;endelse beginif(r_bitonic_pipe2[i] > r_bitonic_pipe2[i + 4]) begin//升序r_bitonic_pipe3[i]		<= r_bitonic_pipe2[i + 4];r_bitonic_pipe3[i + 4]	<= r_bitonic_pipe2[i];endelse beginr_bitonic_pipe3[i]		<= r_bitonic_pipe2[i];r_bitonic_pipe3[i + 4]	<= r_bitonic_pipe2[i + 4];endend	endalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe3[i + 8] <= 'd0;r_bitonic_pipe3[i + 12]<= 'd0;endelse beginif(r_bitonic_pipe2[i + 8] < r_bitonic_pipe2[i + 12]) begin//降序r_bitonic_pipe3[i + 8] <= r_bitonic_pipe2[i + 12];r_bitonic_pipe3[i + 12]<= r_bitonic_pipe2[i + 8];endelse beginr_bitonic_pipe3[i + 8] <= r_bitonic_pipe2[i + 8];r_bitonic_pipe3[i + 12]<= r_bitonic_pipe2[i + 12];endendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe4	[0:WIN - 1];//間隔2generatefor(i = 0; i < WIN / 8; i = i + 1) beginfor(j = 0; j < WIN / 8; j = j + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe4[i * 4 + j] 		<= 'd0;r_bitonic_pipe4[i * 4 + j + 2]	<= 'd0;endelse beginif(r_bitonic_pipe3[i * 4 + j] > r_bitonic_pipe3[i * 4 + j + 2]) beginr_bitonic_pipe4[i * 4 + j] 		<= r_bitonic_pipe3[i * 4 + j + 2];r_bitonic_pipe4[i * 4 + j + 2]	<= r_bitonic_pipe3[i * 4 + j];endelse beginr_bitonic_pipe4[i * 4 + j] 		<= r_bitonic_pipe3[i * 4 + j];r_bitonic_pipe4[i * 4 + j + 2]	<= r_bitonic_pipe3[i * 4 + j + 2];endendendalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe4[i * 4 + j + 8]	<= 'd0;r_bitonic_pipe4[i * 4 + j + 10]	<= 'd0;endelse beginif(r_bitonic_pipe3[i * 4 + j + 8] < r_bitonic_pipe3[i * 4 + j + 10]) beginr_bitonic_pipe4[i * 4 + j + 8]	<= r_bitonic_pipe3[i * 4 + j + 10];r_bitonic_pipe4[i * 4 + j + 10]	<= r_bitonic_pipe3[i * 4 + j + 8];endelse beginr_bitonic_pipe4[i * 4 + j + 8] 	<= r_bitonic_pipe3[i * 4 + j + 8];r_bitonic_pipe4[i * 4 + j + 10]	<= r_bitonic_pipe3[i * 4 + j + 10];endendendend		endendgeneratereg	signed	[15:0]	r_bitonic_pipe5	[0:WIN - 1];//間隔1generatefor(i = 0; i < WIN / 4; i = i + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe5[i * 2]		<= 'd0;r_bitonic_pipe5[i * 2 + 1]	<= 'd0;endelse beginif(r_bitonic_pipe4[i * 2] > r_bitonic_pipe4[i * 2 + 1]) beginr_bitonic_pipe5[i * 2]		<= r_bitonic_pipe4[i * 2 + 1];r_bitonic_pipe5[i * 2 + 1]	<= r_bitonic_pipe4[i * 2];endelse beginr_bitonic_pipe5[i * 2]		<= r_bitonic_pipe4[i * 2];r_bitonic_pipe5[i * 2 + 1]	<= r_bitonic_pipe4[i * 2 + 1];endendendalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe5[i * 2 + 8]	<= 'd0;r_bitonic_pipe5[i * 2 + 9]	<= 'd0;endelse beginif(r_bitonic_pipe4[i * 2 + 8] < r_bitonic_pipe4[i * 2 + 9]) beginr_bitonic_pipe5[i * 2 + 8]	<= r_bitonic_pipe4[i * 2 + 9];r_bitonic_pipe5[i * 2 + 9]	<= r_bitonic_pipe4[i * 2 + 8];endelse beginr_bitonic_pipe5[i * 2 + 8]	<= r_bitonic_pipe4[i * 2 + 8];r_bitonic_pipe5[i * 2 + 9]	<= r_bitonic_pipe4[i * 2 + 9];endendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe6	[0:WIN - 1];//間隔8generatefor(i = 0; i < WIN / 2; i = i + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe6[i]		<= 'd0;r_bitonic_pipe6[i + 8]	<= 'd0;endelse beginif(r_bitonic_pipe5[i] > r_bitonic_pipe5[i + 8]) beginr_bitonic_pipe6[i]		<= r_bitonic_pipe5[i + 8];r_bitonic_pipe6[i + 8]	<= r_bitonic_pipe5[i];endelse beginr_bitonic_pipe6[i]		<= r_bitonic_pipe5[i];r_bitonic_pipe6[i + 8]	<= r_bitonic_pipe5[i + 8];endendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe7	[0:WIN - 1];//間隔4generatefor(i = 0; i < WIN / 8; i = i + 1) beginfor(j = 0; j < WIN / 4; j = j + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe7[i * 8 + j]		<= 'd0;r_bitonic_pipe7[i * 8 + j + 4]	<= 'd0;endelse beginif(r_bitonic_pipe6[i * 8 + j] > r_bitonic_pipe6[i * 8 + j + 4]) beginr_bitonic_pipe7[i * 8 + j]		<= r_bitonic_pipe6[i * 8 + j + 4];r_bitonic_pipe7[i * 8 + j + 4]	<= r_bitonic_pipe6[i * 8 + j];endelse beginr_bitonic_pipe7[i * 8 + j]		<= r_bitonic_pipe6[i * 8 + j]	;r_bitonic_pipe7[i * 8 + j + 4]	<= r_bitonic_pipe6[i * 8 + j + 4];endendendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe8	[0:WIN - 1];//間隔2generatefor(i = 0; i < WIN / 4; i = i + 1) beginfor(j = 0; j < WIN / 8; j = j + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe8[i * 4 + j]		<= 'd0;r_bitonic_pipe8[i * 4 + j + 2]	<= 'd0;endelse beginif(r_bitonic_pipe7[i * 4 + j] > r_bitonic_pipe7[i * 4 + j + 2]) beginr_bitonic_pipe8[i * 4 + j]		<= r_bitonic_pipe7[i * 4 + j + 2];r_bitonic_pipe8[i * 4 + j + 2]	<= r_bitonic_pipe7[i * 4 + j];endelse beginr_bitonic_pipe8[i * 4 + j]		<= r_bitonic_pipe7[i * 4 + j]	;r_bitonic_pipe8[i * 4 + j + 2]	<= r_bitonic_pipe7[i * 4 + j + 2];endendendendendendgeneratereg	signed	[15:0]	r_bitonic_pipe9	[0:WIN - 1];//間隔1generatefor(i = 0; i < WIN / 2; i = i + 1) beginalways@(posedge i_clk or posedge i_rst) beginif(i_rst) beginr_bitonic_pipe9[i * 2]		<= 'd0;r_bitonic_pipe9[i * 2 + 1]	<= 'd0;endelse beginif(r_bitonic_pipe8[i * 2] > r_bitonic_pipe8[i * 2 + 1]) beginr_bitonic_pipe9[i * 2]		<= r_bitonic_pipe8[i * 2 + 1];r_bitonic_pipe9[i * 2 + 1]	<= r_bitonic_pipe8[i * 2];endelse beginr_bitonic_pipe9[i * 2]		<= r_bitonic_pipe8[i * 2]	;r_bitonic_pipe9[i * 2 + 1]	<= r_bitonic_pipe8[i * 2 + 1];endendendendendgenerate	generatefor(i = 0; i < 16; i = i + 1) beginassign	o_buff[i * 16 + 15:i * 16] = r_bitonic_pipe9[i];endendgenerateendmodule

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95846.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95846.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95846.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

平衡車 -- MPU6050

&#x1f308;個人主頁&#xff1a;羽晨同學 &#x1f4ab;個人格言:“成為自己未來的主人~” 傳感器原理 此外&#xff0c;用陀螺儀獲取x,y,z軸的加速度。 初始化 我們現在對MPU6050進行初始化&#xff0c;MPU6050通過I2C總線與單片機進行通信&#xff0c;通過的是PB8和PB…

在電路浪涌測試中,TVS(瞬態電壓抑制二極管)的防護效果確實會受到陪測設備中去耦網絡(Decoupling Network,DN)的顯著影響

在電路浪涌測試中&#xff0c;TVS&#xff08;瞬態電壓抑制二極管&#xff09;的防護效果確實會受到陪測設備中去耦網絡&#xff08;Decoupling Network&#xff0c;DN&#xff09;的顯著影響&#xff0c;這一現象與浪涌能量的傳遞路徑、阻抗匹配及信號完整性密切相關。結合 AD…

Redis之分布式鎖與緩存設計

1、分布式鎖 1.1、超賣問題/*** 存在庫存超賣的不安全問題*/private void deductStock() {int stockTotal Integer.parseInt(stringRedisTemplate.opsForValue().get("stock"));if (stockTotal > 0) { // 這里存在多個線程、進程同時判斷通過&#xff0c;然后超買…

靜態住宅IP的特點

穩定性高&#xff1a;與動態IP地址相比&#xff0c;靜態住宅IP不會不定時變更&#xff0c;能確保業務在網絡環境中的一致性和連貫性&#xff0c;適合需要長期維持同一身份的場景&#xff0c;如跨境電商業務等3。安全性強&#xff1a;由于其住宅屬性&#xff0c;看起來更像是正常…

Linux 編譯 Android 版 QGroundControl 軟件并運行到手機上

Linux 編譯 Android 版 QGroundControl 軟件并運行到手機上環境說明操作步驟一、參考上一篇文章在電腦端把環境搭建好二、配置 Qt Creator 的 Android 環境環境說明 電腦系統 Ubuntu 22.04 qgroundcontrol master 分支 Qt 6.8.3 操作步驟 一、參考上一篇文章在電腦端把環境搭…

Python 2025:量化金融與智能交易的新紀元

當Python遇見金融大數據&#xff0c;算法交易正迎來前所未有的技術變革在2025年的技術浪潮中&#xff0c;Python已經從一個"膠水語言"蛻變為金融科技領域的核心驅動力。根據GitHub 2025年度報告&#xff0c;Python在量化金融項目中的使用率增長了217%&#xff0c;在對…

[論文閱讀] 人工智能 + 軟件工程 | TDD痛點破解:LLM自動生成測試骨架靠譜嗎?靜態分析+專家評審給出答案

TDD痛點破解&#xff1a;LLM自動生成測試骨架靠譜嗎&#xff1f;靜態分析專家評審給出答案 論文信息項目詳情論文原標題Evaluation of Large Language Models for Generating RSpec Test Skeletons in Ruby on Rails論文鏈接https://arxiv.org/pdf/2509.04644一段話總結 該研究…

開源PSS解析器1

本章介紹另一個開源PSS解析工具zuspec&#xff1a; zuspec 提供了一組用于處理 actions relationship level 的工具 &#xff08;ARL&#xff09; 模型&#xff0c;主要是使用 Accellera 便攜式測試和刺激 &#xff08;PSS&#xff09; 語言描述的模型。ARL 模型用于為數字設計…

26考研——內存管理_內存管理策略(3)

408答疑 文章目錄一、內存管理策略1、內存管理的基本原理和要求1.1、相關概念1.2、邏輯地址與物理地址1.3、程序的鏈接與裝入1.4、進程的內存映像1.5、內存保護1.6、內存共享1.7、內存分配與回收1.8、在存儲管理中涉及到兩個問題2、連續分配管理方式2.1、相關概念2.2、單一連續…

Python爬蟲實戰:研究Event Handling機制,構建在線教育平臺的課程數據采集和分析系統

1. 引言 1.1 研究背景與意義 在大數據時代,互聯網作為全球最大的信息載體,蘊含著海量有價值的數據。這些數據涵蓋了商業交易、用戶行為、社會趨勢等多個領域,對企業決策、學術研究和社會管理具有重要參考價值。如何高效、準確地獲取這些數據并進行深度分析,成為當前數據科…

docker 安裝 redis 并設置 volumes 并修改 修改密碼(四)

設置新密碼: 127.0.0.1:6379> CONFIG SET requirepass newpassword OK驗證新密碼: 127.0.0.1:6379> AUTH newpassword OK更新配置文件: 編輯主機的配置文件/data/redis/conf/redis.conf,將requirepass的值修改為新密碼: requirepass newpassword重啟容器以使配置…

NBA球星知識大挑戰:基于 PyQt5 的球星認識小游戲

NBA球星知識大挑戰&#xff1a;基于 PyQt5 的球星認識小游戲 代碼詳見&#xff1a;https://github.com/xiaozhou-alt/NBA_Players_Recognition 文章目錄 NBA球星知識大挑戰&#xff1a;基于 PyQt5 的球星認識小游戲一、項目介紹二、文件夾結構三、項目實現1. 自定義動畫按鈕&a…

電磁波成像(X射線、CT成像)原理簡介

電磁波成像&#xff08;X射線、CT成像&#xff09;原理簡介一、圖像形成的一般形式二、可見光成像2.1可見光2.2可見光成像三、其他電磁波成像3.1X射線成像3.2CT成像3.2.1CT成像原理3.2.2CT成像與X射線成像對比3.2.3CT生成三維描述3.3PET成像一、圖像形成的一般形式 大多數圖像…

k8s部署2:前置條件:docker部署

前兩天發布了k8s的前置發布條件,對于防火墻的處理,我看大家反響還不錯,所以作為先行者,我感覺自己多了不少動力,所以今天來說說k8s部署前置條件中docker部分的部署。在此先感謝一下那些點贊和添加收藏的朋友們,你們的支持是我永遠的動力!三克油喂給馬吃! 之前寫過docke…

某開源漫畫系統RCE代碼審計

免責聲明 本文檔所述漏洞詳情及復現方法僅限用于合法授權的安全研究和學術教育用途。任何個人或組織不得利用本文內容從事未經許可的滲透測試、網絡攻擊或其他違法行為。使用者應確保其行為符合相關法律法規&#xff0c;并取得目標系統的明確授權。 對于因不當使用本文信息而造…

Pandas DataFrame 指南

&#x1f4ca; Pandas DataFrame 常用操作代碼示例 下面用表格匯總了 DataFrame 的常用操作&#xff0c;方便你快速查閱和實踐。 操作類別代碼示例說明&#xff08;簡要&#xff09;數據讀取df pd.read_csv(data.csv)讀取 CSV 文件df pd.read_excel(data.xlsx, sheet_nameS…

React學習教程,從入門到精通, React 樣式語法知識點與案例詳解(13)

React 樣式語法知識點與案例詳解 作為React初學者&#xff0c;掌握樣式語法是構建美觀UI的關鍵。本文將詳細介紹React中所有主要的樣式方法&#xff0c;并提供詳細注釋的案例代碼。 一、React樣式語法知識點總覽 1. 行內樣式 (Inline Styles) 使用style屬性&#xff0c;值為Jav…

Proxychains 配置全解析:從入門到高級應用

引言 在數字時代&#xff0c;網絡隱私與安全至關重要。無論是繞過地理限制訪問內容&#xff0c;還是在滲透測試中隱藏蹤跡&#xff0c;代理工具都不可或缺。Proxychains&#xff08;或稱 Proxychains-NG&#xff09;作為一款經典的開源代理鏈工具&#xff0c;以其高效靈活的特性…

二叉樹的前中后序遍歷(迭代法)

目錄 題目鏈接&#xff1a; 題目&#xff1a; 解題思路&#xff1a; 代碼&#xff1a; 前序遍歷&#xff1a; 中序遍歷&#xff1a; 后序遍歷&#xff1a; 總結&#xff1a; 題目鏈接&#xff1a; 144. 二叉樹的前序遍歷 - 力扣&#xff08;LeetCode&#xff09; 94. …

redis的數據類型:string

文章目錄String類型介紹redis采用的字符集json類型介紹String類型的命令set key value [EX seconds] [NX|XX]incr keyincr對操作的key對應的value類型有限制嗎&#xff1f;incr key操作的返回值是什么&#xff1f;incr操作的key可以不存在嗎&#xff1f;多個客戶端同時針對同…