From 1938d7ebb4c9aa1ff52a80b02b5ec3cc2ef45a84 Mon Sep 17 00:00:00 2001 From: wangjiashuo <1443062665@qq.com> Date: Sun, 31 May 2026 13:20:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20w6=20=E7=AD=96=E7=95=A5?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=B8=8E=E7=AE=A1=E9=81=93=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E7=BB=83=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...nverterPipeline$ConditionalConverter.class | Bin 0 -> 1191 bytes w6/DataConverterPipeline$DataConverter.class | Bin 0 -> 289 bytes ...ConverterPipeline$LowerCaseConverter.class | Bin 0 -> 605 bytes ...erterPipeline$SensitiveMaskConverter.class | Bin 0 -> 679 bytes ...erterPipeline$SensitiveWordConverter.class | Bin 0 -> 683 bytes w6/DataConverterPipeline$TrimConverter.class | Bin 0 -> 588 bytes ...ConverterPipeline$UpperCaseConverter.class | Bin 0 -> 605 bytes w6/DataConverterPipeline.class | Bin 0 -> 2664 bytes w6/DataConverterPipeline.java | 106 ++++++++++++++++++ 9 files changed, 106 insertions(+) create mode 100644 w6/DataConverterPipeline$ConditionalConverter.class create mode 100644 w6/DataConverterPipeline$DataConverter.class create mode 100644 w6/DataConverterPipeline$LowerCaseConverter.class create mode 100644 w6/DataConverterPipeline$SensitiveMaskConverter.class create mode 100644 w6/DataConverterPipeline$SensitiveWordConverter.class create mode 100644 w6/DataConverterPipeline$TrimConverter.class create mode 100644 w6/DataConverterPipeline$UpperCaseConverter.class create mode 100644 w6/DataConverterPipeline.class create mode 100644 w6/DataConverterPipeline.java diff --git a/w6/DataConverterPipeline$ConditionalConverter.class b/w6/DataConverterPipeline$ConditionalConverter.class new file mode 100644 index 0000000000000000000000000000000000000000..d8857fbabade4ece0f79a2bc37672d2e5924916e GIT binary patch literal 1191 zcmZuw-A)rh6#izrblb88EKrm`Q4rcKP=8R7Vlh^XBv4IiFyU@!M_8=0xH~1j3Qyn- z7nmppFN}94zJ_mMjCyw4N-MqCIkRWZ_nrUmzdwHgu!@x!G=vQ3Cb|%2=-cB5JX_^* zC;N1JPm~oyc-fY=$}@yg>CGr2h#H8Q=!VH)J>rTN9C;vICEREBzNp$#Op&HyE8CI0 z`tOmU#}m>c^?`WdxD}6_tq0y}%C2VDZBOMQ=wU#NeDs;PfCR%}*^!Fd(kr!MNuR1? zgGfutwdGDOz2zeZObjB)5Un^3-we~8tj`m4<038@7&bA2QHr-cI);c%Npj`549Qfw zCHS?5KG%(LTsAOa;tH-ZB+eL`CJe?d_ln{zRhA065t(SojnNA zIZuczqJ*q7EYK?4Mv`oN{AvR~l=+5mB7SUTPSAUZs4x4EGsk421!M`L0Ty5oxEFV5 zD;DVlX*DCR>;9GmwzOvr>X(G{F|*bO7^fIw*qA-V7{eik=`zXi6*I-m+zHZ$=+ckg z{rM3(3OM}WlawTo#~4;? literal 0 HcmV?d00001 diff --git a/w6/DataConverterPipeline$DataConverter.class b/w6/DataConverterPipeline$DataConverter.class new file mode 100644 index 0000000000000000000000000000000000000000..ddd906aaa4f1fd19b654b78e9e2a735db670fc98 GIT binary patch literal 289 zcmZus%MJlS5Ulo^wH|SCaV5fq4{-Ddi6HR>W7Cn9&8*A}ALrl$e3WQJWW%K^U0vPP zb-Q1#0H&xb)D=M^f1=3gnHx-f?AIML3rBh)go g5mzsW}8Fzc55qFchVHhgvCk00{X_4FCWD literal 0 HcmV?d00001 diff --git a/w6/DataConverterPipeline$LowerCaseConverter.class b/w6/DataConverterPipeline$LowerCaseConverter.class new file mode 100644 index 0000000000000000000000000000000000000000..6c9a97d876b494301128bc42cc0da69dac85eeb2 GIT binary patch literal 605 zcmZuvO-}+b5Pic}S6Bp5`~U?KjR8p{o;6-jqY0u3#(TkrEUvp`x8UExizXhtn)suP zv!ECPX*x4)-Sh?s~XMo9PMP}XeebZa;5p6X~q?8I^`eM$(I zEB6Kr0^&Rp0;Y*1mS;#U?O9HjkkD?!eO6vw`iihtt~CA=PcX*AZa1xVghMG`BWHD^YuUmMh4faCq1R*E=M}bC|?Wj zH%UkzE3M24Ay;fXh=Hi~jq<7u6`G^ctqq$%Wd{x>Ex0bGFin^p;XI+c)s_jA?(!|3 z)LnB=NES==2tMm#4p~kFvL}Th%oppW?*e1QBMW)LLA>6U)FJB~$SV;(jww#n{Ej5d zG`Oi||EVp58`1VSl4+@~7N#GtzyG(Jd@BP68C|0NZ)~ z+h!ZZ)8)!5=!HGP0)L}@0qTsr#3FkMEFpzutZ;su=VYzQ5Sbxno`1P%#sEzuu{vU| WVSQu^tOCf6Di*MnvRPAs71&>{f~Fk+ literal 0 HcmV?d00001 diff --git a/w6/DataConverterPipeline$SensitiveWordConverter.class b/w6/DataConverterPipeline$SensitiveWordConverter.class new file mode 100644 index 0000000000000000000000000000000000000000..0392a6add08115ff2fa446334bbdfd0cbf69577e GIT binary patch literal 683 zcmZuv&r2Io5dJ37ymgH=Zv5Tas0lHNVopM#MJTCa!P-JZ&o7&YtggFZ_a!HfUd59~ z@lViRTIj)R!9PUuR}^PsRf2nXGxKJ?`DW(5x%>C$7QhAyCK5;r45TrL6d`jcJF@CZ z@1Xjxn?@zC~*Jmf))AR22rGYeqDwT?fHy9Pj zq%j7okF%}=$2%aHfoi$ZR-av$@S(K*QuPt>@wKP?+9fbfSotEgtodF?1zH6^oR)GO zPZjFQ3mxrr)V?1ypTh!^gnWEPpO-LD^P7q=y3K4m?c;_Dc4fn5kFXz$5sER5$FxZp zscUH;eUq*K6lUFT2e#UDBEH$a!cPONMo&U8c2uah{7?(b6DDGzg!EU>Q$fv@VW>jF zWc={lM_)eXk>%fKT3&?&AKn1IO|dn{n*SMtmEWMBY!IedMqwb&at5<3Bj_5Ez2waD zU!*K?vuq7n!@n?c!?8p!D_Sw22!SQMWh)61EZ+41b9mp=IV`ZY7@9>6i@ahJtn(@3 E0eQlzq5uE@ literal 0 HcmV?d00001 diff --git a/w6/DataConverterPipeline$TrimConverter.class b/w6/DataConverterPipeline$TrimConverter.class new file mode 100644 index 0000000000000000000000000000000000000000..d0c5614917b26045d0cad7ca1b627425e23fa30f GIT binary patch literal 588 zcmZ`%%TB^T6g`(mr$P}#@c}+aGzKJ*xYoEqjV6dD5cfl!kYZ^`Tlg;AXyU@Hi63RW z1s`d|OnM(P=iGB=Zr?v%UICn=oI(t7frNo1G(xT~$Fgoqr&qt}_LUhBv=hs*f>T1g zQoYlm6OiJS7BCECuoxk=1J81LgarEmVWm=S{#KkF9t-3MyJs?x4c8efFHqjCHB`3c zsJ#x;es%@&{{ka))@!);ijZw`k=AI?RbEGSZQc>)OoOmr`P<5z?g*K7AkBwsIs7V- zYP%!PR2NoQuNV>j?)xyjBtdT}Ke%-LKwy(lm~;XF2F ng#Q4r2*FZo9K}I`&H5Cuf#TGcSP#fEG>a0pp>szi>}dKYIFp9l literal 0 HcmV?d00001 diff --git a/w6/DataConverterPipeline$UpperCaseConverter.class b/w6/DataConverterPipeline$UpperCaseConverter.class new file mode 100644 index 0000000000000000000000000000000000000000..a93913a7d3b47809cb437da1b4ae41db6ccc271c GIT binary patch literal 605 zcmZuvO-}+b5Pic}S6Bq`8~h;A7?4EbS>pvYnjo5>-pksM#dVkL7Je6AH1Xio#2;mx z1;uP6O=sH9do!<{etx~Z12{uDjTqtr2@^@A2>G5I%DN-nZvDE`QzN^ukZo&e zJzmNFPl|Ng8~Bzwx5IqJNa0`c2jNW#MoR_y!V9#(24Q(7lwe-EF29l^gFpp@!vBl2 zh6opB#LJ!%8WV7~xR6&et tFPIzgJ~n2Ap8|{(Smgo4L4wWN7_g4w*q68-P+({dC2YZ9MI~&fjBoRtjf?;Q literal 0 HcmV?d00001 diff --git a/w6/DataConverterPipeline.class b/w6/DataConverterPipeline.class new file mode 100644 index 0000000000000000000000000000000000000000..35c9a364b6f19f0bde51a48aff3cd93544dca695 GIT binary patch literal 2664 zcmai0>vI!T6#v~e$tG#&BfJa<1}L?KmVzQ+f+!7Cz%+mNi5S=*(_Zrt4#DvGE) z)KXx^VWfB#)o97Ur;nb*(Iihq$mlsMN$r)rz*B9Vrt6VjS4-oDu((Z z2UBkMq|<^D;#I+7QmLDG85&EQL_(`0C4W`Jj(A9!&a9F6r`YeO5-m)8#lSx8Wl%-%phZBn#*82UE4~BD> zZjIkLF@EQV+^>U^w=U)`{*)WK`RMN1?AcS<3qR&Ap3j}UGI?ug;_BG={XxIq1wWQ> zSn9zt)D{9ZG8Y|CH6cX_llv&zx#rQL+`LN>B`vBc0-p+cDgAXGJdb*Y`6<3v2QkiT zoubx5D^=qqjjmjmkK1&sk$rdJqE?X`E3lG7qX$h`Rp3YQfec()KRzi@M5VlTRA4pM zaCpIk7qOP1a++i&>Q0e3#cQ&{Ft6T<_V&CySb=p|&tZcHFC)Orp(uKIH6k1( zT!_wlb&HK2yaJ-PO)|uD3cf8xK%QNA&4bN4T3p;DxGoEMumxKgoZW&JO7bc}HoM5) z5E2z$$2JbzJ=lRa7^;K>c&{OiPJvk;s(#IP`53r2xtPoK)( z9G$p)(p2zLC#&acx__U$V;V?yR?E`sL26t5MQ{qCasC!*dGK^I^0~jhIf~vI%dJrlHnPEjq z?OK8@L2XNx_~aCV9Nv9uXAH|np6HB}&lXwMR88U2ZGzS#CsZe>2&%K^u4Jzb7JAKP z=0rcyZz6Mk^1&IF=f;I|kM8O_M;VspzWjEI0;ZLzG?Dot_sv(P-g~5H?O3JtsvLOV zjSp~~!-qPnPcYO@7ltVH%e_Lg2`XKhdQ&SOr|KVIxMU@NUeUbNHeO031+_LT%e{T+ z;LM7!NQw;G2hu_bb!&dj_pqq_bdvPX47ix%9$c~V3@TzHRCzI5 z29>m`j>ha6)X-{n^bY2XU_scssO=X#*Eojdz-=@%MpllZnIT~F*+%ga!!Xw9E6UA7 zxB_;cy=fG$mLWn$KKm$I7+JM8jUjB9UwiyJZFqN*C;L6@j+J|(bhvkqep-Nn=#2Sn zBZvj;-u(fG_h5iC-1r=Z&oR7hI5A~hUd9_T{pw}L)munJ^yF?#X#Vk7or6AsXL zkoFJZ7@iwl=OA)e&0)9kzYh2t>tRE$ zabOZDnyU%fPDrRh8kO|3$_0g_3rOo2VXqovpD`XW#sPdp`z@3W7X|XM!$~$>_=LVI iX+BAF4b7)$?xguN%@WOLY) sensitiveWords; + + public ConditionalConverter(List sensitiveWords) { + this.sensitiveWords = sensitiveWords; + } + + @Override + public final String convert(String data) { + if (data == null) return ""; + if (containsSensitiveWord(data)) { + return doConvert(data); + } + return data; + } + + protected abstract String doConvert(String data); + + private boolean containsSensitiveWord(String data) { + for (String word : sensitiveWords) { + if (data.contains(word)) { + return true; + } + } + return false; + } + } + + static class SensitiveMaskConverter extends ConditionalConverter { + public SensitiveMaskConverter(List sensitiveWords) { + super(sensitiveWords); + } + + @Override + protected String doConvert(String data) { + return "*".repeat(data.length()); + } + } + + public static void main(String[] args) { + List pipeline = new ArrayList<>(Arrays.asList( + new TrimConverter(), + new UpperCaseConverter(), + new SensitiveWordConverter() + )); + + String rawData = " 这是一个测试数据,包含敏感词示例 "; + System.out.println("原始数据:" + rawData); + + String result = rawData; + for (DataConverter converter : pipeline) { + result = converter.convert(result); + System.out.println("经过" + converter.getClass().getSimpleName() + "转换后:" + result); + } + + System.out.println("\n--- 条件转换器测试 ---"); + List sensitiveWords = Arrays.asList("敏感词", "测试"); + DataConverter conditionalConverter = new SensitiveMaskConverter(sensitiveWords); + String test1 = "普通数据"; + String test2 = "包含测试内容的数据"; + System.out.println("无敏感词数据转换结果:" + conditionalConverter.convert(test1)); + System.out.println("含敏感词数据转换结果:" + conditionalConverter.convert(test2)); + } +}