From 65cb8115d60be8b1f745d1562e48f506a10621af Mon Sep 17 00:00:00 2001 From: wangjiashuo <1443062665@qq.com> Date: Sun, 31 May 2026 13:38:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20w9=20Article=20=E7=B1=BB?= =?UTF-8?q?=E4=B8=8E=20HistoryCommand=20=E7=BB=83=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- w9/Article.class | Bin 0 -> 2278 bytes w9/Article.java | 47 ++++++++++++++++++++++++++++++++++++++++ w9/HistoryCommand.class | Bin 0 -> 1610 bytes w9/HistoryCommand.java | 36 ++++++++++++++++++++++++++++++ w9/思考题.txt | 3 +++ 5 files changed, 86 insertions(+) create mode 100644 w9/Article.class create mode 100644 w9/Article.java create mode 100644 w9/HistoryCommand.class create mode 100644 w9/HistoryCommand.java create mode 100644 w9/思考题.txt diff --git a/w9/Article.class b/w9/Article.class new file mode 100644 index 0000000000000000000000000000000000000000..4fc3d0b732323914fbce7a98e1cdedf945bac210 GIT binary patch literal 2278 zcmb_cT~ixX7=8{P*^n-fCgmgj;KR}q0wh*z)l#aI7E4VF3Z>Ro?Gjelvf0gKPZ$}; zOPz7Ncf9n{D@Pr%SUdgze}_!{6^_r@U0@S3ju&3+`FQs^&v`$d^ZxPo)87HyfSEuG zS~axkXh%#S`PkSp3bx^_7Zz3@n_q8`x82P)IMg^Sram40 z$Os&()K+cF+qiB>-q91>A+54mD7q!XR_3V$PT{nMGdcz^SQkm)2ff`g?3%govB3Fk z#LXbksj-MD^gP8J4eNLTX9fDo#-=&zIweEiv*ZR>o-`ck2|SFFg(r`4{TE9U7veZ4 zkhsOFJb(7}^Y6ZjV^pAH?~Bj(zW+6!&&M&woNq{3xm+lipBUweZRSgEIgW8Aa_`x< zf9`&nz$Ee-3OZiI1%b3*p!(zqw75*m$?W|6eCR|yfZ2`XWhIh}0+0T;fPoFTwls1o_wchSBWeHeZF?lfdnpo_=qp#5Rg4M^o$ zT)Kgy%t6_(n4;e7gQN2GqgZll)si`9sl4c6Gsr7}v1->`S9-E)RBoGm&ud;B?+IKA zL7)2lVtQ1JP7DR_Jy=H``m~rBVrx+L&$?rHKY<5$sNnG@Lct^hS!VyIHGD9gQ$zsXMs5T``-$qdD5w(NT(7!?u?! z_A4fA-f_(8tZjIn>1klj&K-%VnX4K~0t5dJrF??8FwB?R!baB4kxiSc7S)UWnf=$F z*?0Y!&6aZ~*w1m1;|zC;#K$-f<(@#~#&@9QCU(%7o7_P%mucHUI+tnRLGO>m2wdYh z0F7e;ZM?68%w1$mbIkDGK_rQq#r2T=3}-=fd+ujwKO9iRd}E5^4a{*=jttNd6-dl? z;_$ivnZhISP2MAhVahv2eQpzB=gG9Y^;Ozw#R+TKHO2#kEuXh(GIVGQB z2xz?OELHF>mcpxMxKm{u{tfZ_sgczAR5q16uKm@P?B2!16TDRX39pR*f~mvcy3oo4 j6BN)S`SaW@bKioySm7Ke@qK>x@DX}FXggpxMUmb3*-2oitQA0%LDY%Mk|)l`tyA1uilx7}=*&8C9S zj*mLN`sg_0t9CSqOnvmh8UG9UCmcsTce4#it&_>!d%yeL^PTVP+56kyKmP*YGPX2? z5LOV;(T9G4;k(9tBWoK@HM_cX*DQMi{dvo=yd{BfD!rya6&UrCnx186mtEJ`Em{pv zgMx4r1JD%=>KMW?fuXD1sJpv`daY(S6$Z-fSrBKr;t`ZY$!QotOu?v*;~49qQ}SHP zsR}4o;}ZGZ^ZDGC`6qOoL_#3KjGDmlRJx7ochNqU8^8okDLAd;3?@mWw=A)Y3i*wt zx=yzH&!t&I!C9%#Ie|ow;WuBX+cqV#>P{}b7R3~%70l>(3aMV^yA97Iv2eXfImg;1 zta|n)8}i7{G-^2&vt+)wxR^Zr^5Gu`-yDAa+2I!tk_>2=!_x}pb!73(Bkg-nQB>TKx-so&cp0xKSkRF}USQVfWo?7XaImqyJUefU@F0w+^l>PQ52CB-gF6k)XH5$w(Pt1I``~mkn zPk19wR8Y2fMaS#X#eHSlG+d2t46ArU;8fW)KDLvaA9>z(V|zJRUN}?x>R?n&C$1s zG#iErPR@B*fc9ASSm~?w8+Vu_sZ0e_bjd;@?IHOc z*gp=?(i~@RF)s$d@S8UCY+y;0Q-1W;A_mu@P)pI2yKKXBAY+q zrP4-3?oaGvF@#bJ%j=&C@$EmqA2E)zTTnX{qd38PZ-LK?i2KZ=2>k_3{D}*!|6Yg1 z3|Eq))-HWn;BgTXY=4~p_whl%{2F;n=932)pz>FXnb=AT*D|pi{&-W4ExdIEG|qCs YY4SQlF(%0@Nyu|tohRfb_d+oK1seZjt^fc4 literal 0 HcmV?d00001 diff --git a/w9/HistoryCommand.java b/w9/HistoryCommand.java new file mode 100644 index 0000000..fb02c47 --- /dev/null +++ b/w9/HistoryCommand.java @@ -0,0 +1,36 @@ +import java.util.ArrayList; +import java.util.List; + +public class HistoryCommand { + private final List commandHistory = new ArrayList<>(); + + public void recordCommand(String command) { + if (command != null && !command.isBlank()) { + commandHistory.add(command.trim()); + } + } + + public List getHistory() { + return new ArrayList<>(commandHistory); + } + + public void printHistory() { + System.out.println("=== 命令历史 ==="); + for (int i = 0; i < commandHistory.size(); i++) { + System.out.printf("%d: %s%n", i + 1, commandHistory.get(i)); + } + } + + public void clearHistory() { + commandHistory.clear(); + } + + public static void main(String[] args) { + HistoryCommand history = new HistoryCommand(); + history.recordCommand("crawl `https://example.com` "); + history.recordCommand("list"); + history.recordCommand("exit"); + + history.printHistory(); + } +} diff --git a/w9/思考题.txt b/w9/思考题.txt new file mode 100644 index 0000000..c677724 --- /dev/null +++ b/w9/思考题.txt @@ -0,0 +1,3 @@ +分析  List
  共享引用的风险(200字小结) + + List
  的共享引用存在多线程安全与数据一致性风险。当多个模块共享同一个列表引用时,若某模块修改了列表(如增删元素),其他模块读取时会出现并发修改异常或脏数据;若修改了列表内  Article  对象的属性,所有持有该对象引用的模块都会看到变化,引发数据不一致。此外,外部代码可能直接修改列表或对象内部状态,破坏封装性,导致调试困难。解决方式是返回列表副本或不可修改视图,避免共享引用。 \ No newline at end of file