From cf0d90130eb3164dd97862c424d8777759373378 Mon Sep 17 00:00:00 2001 From: fybug <1006291762@qq.com> Date: Mon, 18 Mar 2024 20:10:09 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=92=8C=E4=BE=9D=E8=B5=96=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 9 +++++---- jar/PDCache.jar | Bin 39734 -> 39734 bytes jar/PDCache_all.jar | Bin 73035 -> 71105 bytes jar/PDCache_bin.jar | Bin 50197 -> 48267 bytes jar/PDCache_sources.jar | Bin 23857 -> 23857 bytes lib/PDConcurrent.jar | Bin 11126 -> 9040 bytes 6 files changed, 5 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index ace3c10..9486a36 100644 --- a/build.gradle +++ b/build.gradle @@ -40,13 +40,14 @@ repositories { dependencies { implementation fileTree(dir: 'lib', includes: ['*.jar']) - compileClasspath "org.jetbrains:annotations:17.0.0" - compileClasspath "org.projectlombok:lombok:1.18.10" + compileOnly "org.jetbrains:annotations:17.0.0" + compileOnly "org.projectlombok:lombok:1.18.10" annotationProcessor "org.projectlombok:lombok:1.18.10" testCompile "junit:junit:4.12" - testCompile "org.jetbrains:annotations:17.0.0" - testCompile "org.projectlombok:lombok:1.18.10" + testCompileOnly "org.jetbrains:annotations:17.0.0" + testCompileOnly "org.projectlombok:lombok:1.18.10" + testAnnotationProcessor "org.projectlombok:lombok:1.18.10" } task PDCache(type: Jar) { diff --git a/jar/PDCache.jar b/jar/PDCache.jar index cbd859023e8165ce953c6b433abdbf069ac57f82..8bf157bbbf071150fc724ca1ac6ce0f6f28179c4 100644 GIT binary patch delta 634 zcmdnCjcMC9CY}IqW)?061`ZAejfE3=)R};!X(N-+!ihUnK;%6wAUT)) za$x1@ayP(yM}=%2kn(jpmLTOXb$Y3CltJ$>J&2AnA}4bFgr4##ykkn4EMl|7d|TnC2?| z2)6ETxgl8Ipjr|v?p?19=2tZNfaznc8^Pk0U2m9xp*K0b*Azs}>vaHG_MjIOa+5{+ zEI^cBA6RfgUl54*q|YBjnf8OJHVAdSKNuvaGr<=`RZs8(QKu)kfGELl{F~$)2GCPcqgXBfhdisNg%3c zY9xqyJ~a?TSxp05G+`Rp5%;Hgf&{gugEe$b2OIrldLl^BeFoU*B{O0{Jm#5TUcyYU WMcZd4fCMFHf%R3+0_(dxD;WS)B;CCL delta 634 zcmdnCjcMC9CY}IqW)?061`ZB}>vJdas51dc(?$@vLj^?M(*lx{xfqRr)Mh)zS|$*^ zmw5*xh%RT{38szMH-qWt9Bj-W@%P+MIYIO_Q7w@A$xISvAg+~!0$5p$QRKAFO@8-E=T*;Zy(? zU*%RI2vV;Skq;K18hsrso|mv3#GfplVhxfGNihct_hy_0D~riV2lI~>ID=`f(vM*4 z{+1hp@_0ixn3gH>*x91Y?LOaZG*pArw^otP2_qBN!^fvBFTks#{% z)IbnrH4SXhglS+$+@IzN64aUw*3dN_Z1j`qi6BAu8DOKA%!mc?m}i1{2{XYKZJ(I{ R5|o?;)>kq06uoKO9VwM=Y1f4nU0>=t@$%- z^w#Y7A`2Y@WsX+4qKPKP2Sszb;}D_){(W0+GHY1~+?pfcy|;}G?X7Qho3r#SaozWB zdv@u`b$g!E2XY%%M6lfISN=-3Y=2*J8}|zRsg1Fba+6eUj*kRYk-#pTUcBk*0S*B0 z1Q1J138ajjfdB~*ZQ4dol+Q@T%!|ZA7Rwz;CJE@5(wL5(f6SQAi-<@i$dPoX(t<^u z`M;_A?RV=gDy4ltLIn4NrLOn6!rDl zXi*dTShFvZTzW;#Co?C;%JX-_acZg$6DOk$-3JRf9p%YGgf0G_l#9fB9Hp1(0S=+2 z>w7MfJK2>^`Y{t?{nW4%qtRk9KTXfWEc|gPU*ZOhsbso@bzb&)Zt(C)B@Jf}{sm4Y zi%rjqm@%VSt7@`uXGu0Wk-o4Kr4F6=H&u3D17S>r=1LF4sGf^Q_(;o@87h_`O5N2%ivOxTB|L)LZ+D(7?IQ9gb-u!=w;bV<>tUrui5#UR@rO~jp2@ma zJZ|Bca(xkM2gkz4dpzm)&{JIGBdJw2H*@iXt+p+x*f_69<;od5=(Uc60|AYmgM|d9 z;4=ycNuSZs+rz@1rx%EYUNPLbS|lx75n>hHfW11_Zx z`Y}n1(4%XB_~)}outDeh>Mz>e_0#EK(}E6YfZdQ*N;`xn<$D}E@t zePSJPPGhm8)r~J?!6?%cO6nORgO>d9h<|Hl{odCI8LJ=}E9oejZayFBR2L);lJ&t> z>z;agvN{%<8V7a+MHG&(F>_JFcaeAWwG892XtBYG(Y2FG(-I$X**;lv&6Pf-?)8qbRb z9t}maSzfvs3nBJhr5TzOM=-axk1Rh$a(6$6EC=0|E#Wc(h6J@wqo$o>&ADuY=U+oA zxoC`ea_a-%2FNX1%z5Z-*O`zET<&KaPMlHxd&EHv2(RB%C=r1G=m37gXqPS8XyFw+ zM6b?{<~?0fF%FEFfM;NEt`@k2;#=`mwlkjyAeNwP({?@R3hz=; z*xWi4xutYDBau6FFvA{C{5Vv_`uyR=Ok>^2leAGmCo z6S+QBQ-=bjqxkk-G40>Og;Vk1X#45`&0~%XerQL-&T31iQj~ZTssKF00+YV^d zc`KSj&PtwbUknT@x*H`mt(;Y)>%Mzg;=P{avVB4A?@0bE%(c($@|z`luTP~@*9)69 zxI)y6ASC*lMd#n&r__F7XJXRJbULv}>9zatBRKAGxFzNZp+_nC*(zO)svA{17~%KH z&^yu{PPY(3VpCS`!R==r_YW_i`@Aw{C%=?8kYnISg7g8rr5jQjr)JSCAD95&k8w z!{)bF`n^WBpQ$<5h=IW(>Qq7+vlM)P-(?j>4{));~|+TAZz)G%VZqtXU^)kb&P^cD+8dF_*~z_p!QH%ud<{;go;z)XJ9=$Qu+ z>Tj-CxlZ5elt90m@me?Uf%7|6vA<|0rU_|>jv@8Qv|T%XL*udir3k4e#ZSJlvE<$> zA|80b5$j`O!WQPmPDkV>6)%Zb>_t9lVTtD8T3G5MwS4>ZU97B3yuq<_UL-;j;q*0p6!*#Z611?_Gf zsJ%^S(Ed&bBCQrz27(N-m|m<%JlLgP(Gy~t)2#r%^~*-HHktn@nQ*fDxC`zrcxC{` zr9X5Q7*VWIWg>!`qT||ek)@-yeg9Ir~HjEvkkJ>Iz z>vDniq*L(};8+NfD77n*h@(mdvxfNtb?MDL}_=8v}X}99F6hhv5O$jgBBhzaq^3UP60%Iw)=(cngkwL-n zw%AF6Pm#{~#?I_DMzOyw6yV3~|{O@8+y2Y8cVdETi~ic@Kly7lE~6feHVP6eC1+J{db_sg0;pffPvI- z@jKTj_xmO6LY7l<0eDwQB*t>DR%aF5cFUvC&Cx5^UjccE5%H+)EGvifU9)p;7;b5G zTZ-PfX^G7ig&~t^g1iqx%s){GV%yZ1OXcNDPZnP%+#=Ied|2wEHnf$igW$2TjN6Q> zDHz8@96z96%^0wfOGqXzGI1?;SLMm3wGYayEZpKYT%W|nFG~bR8d$3r9l7@C=GCBi zMQViyW(XB36Xu=$QE+;Q>+3VnB0nT&Gx?IOL$E(tuPCB&K3cylKQqmRrdzV~cRA&s z#_iwsy~Pu`$G@^;;#IzqNFxMC>s*p-Dm_v}YNvtxZg5J%0cf6}!R2t^2uZCaDTKXV zQ{C4_fT$s$vtIX^3Vnm4Exx80+t1lazq**!Mm$;*qX#xdQ1bT-{hpyk*J`6Msl;%N zpwRElyNf<~ zrrqdK5N6Rt_K72_3xaNK4T9N1Vl?!(K4V8JVZ|+J=v91@;}D_jiQW@$++)1nN7XIK zZMK*{d6{PjU;Ed&tVP$e>ec(Yzo_So6E;gBdqlC)?dcEU)X~i!{lcN&n zT}$QBN@aW=`S&m2up_93SSgxoD4Rn-f?Vh1Q;#n$iO0hZffk)OP_O(!Ukv*gM^G)a zpZ=g4^l&WIH}%5cm%(HJ@A1gd zT+v3EN2P?%=s`cN3tV#yVP8K^nM+vjTPQ&L_-4M$$vOH{!sm-u&-Sxo)2sYLbkBv( z{nj1*R$I3~fjs=Xyh8p2+xuoc=;XbhJZ8M1i{`PZ^YTEjkNH=uNA; zG=QLMfZ$&s)wT~0)FF*t-j!rmD6VSyV*0{&r@_nV^|HhU0)sP@s9CGLbN5Hz988TZ z5P`nerP*ymAEkZxzO~E0kfltYj}Pv7pOr2C3&$Enk>{{g>tXCq+uX0V&xt<<=s+B> zxi-I;B(ky69ZK=XD=)2Z2PQFn$;^d?CAXOKrIV^S=zUF#Icv9@W?E_Gd^g0=&^5q0bw^( zMH=7ZHC;PvE)`j;(dd>3dHo@&+%I=r>^X0Nw~cTXJn#-Ug^R3;g^SQ_&SRW#2jn3J zLfl_F8#IdtDz^=^SaaJVtw)fTg0%A~;UX@5eJwF;UFkbA;6FL$%5@3C=O6Iqd#M|?}m1#JRk4(9b;nTv4g=$mktS;#rxISABYxHs#S28&~)y?;p@0#U_ffghk?$s8hmADD>B~hd^w4CzU=e#UH3@hoF zuI2cflG{QL`<=+JK3BLKEEg zn_M`PmA=ePsVie^(WPdSFv^%Wg6v|r#v@Oqp24n!T&lKqVM=aIG<>vXL|A93EMtF+ zRe}v?pfR_f%aEv_UqJ}U)BCDN5IUbm9*%W3 zmWqoEPP+-@7T5i3VO<~a%$_*<^{4P1GzlxW_n5~`*a(T?)|Phy()m@pWo0j7Jn4BeK&d4{e*d5%3b>gHSqx7OIi$bs8A>+-kl_eZl zb3)|(RH5DVA4~9EKfj1oM8FX2$|EkN=%OiWuKIj5@x0*~QiX1ND*Bn39O>u0 zf{BM47lb;ID*Z5r&{kFV#dtSZgpZuES;Kb;W8+UQV3W*|pY=zf;T$0&dG$xskO#$5 z1*2XYb=*m$1v`5qCzc5v3IfL(9YkIokroN}3aVahI6zdf7d^c;5Mq$Xu#)8ckv@wA zvI3Lc5f01z&=CqJqmM4Kr-(Hxnyz&7+%3oFnQr)F z?N4*(IZtN^&l#Os7}kc4fVR}BPJ8#6MS=oHZ2+-g_>Ug?t4K_$3~RaYZ7D3wUHRN+ z4tB3`qtObY8?TU2h((v&D!*qrf=`>U))@vUjd|gtuR82j_beh`;e>k587!U&H4(R6 zluL?@f3Galhj|~Hg*L7WMOyCfsgLvVzU~mN6^ttGd$Pdt@Z*!yAW&3dWsPEbSUYqf zRMUYnv&*|Z<7WrdqXU}S*rztFDu%-_@ch}gX}AkXM5$RLHG<8t@wlu=c0@ht$SN{_ zm2smjKCU9!j{4!MLU5lkfy}JCR50Y4O2~C9=@G%DmTZ6r4d^)E98cHzd5Xc02c3Il zsdFE;mYB(1$ifA2_b1FxMbG-GL!TS6Jx0b<4nLU6$i==NKhI(fc3}EAzLZB>Rzg+J zv_CUL$jHO`=VeRHOT!iR+X^)zMTe}D}U%;qg^4mPxb3& z_T=Ka=4L_~V^|8$50hrrO>Vq8J2u01dv(r9!X}2Y>>`9*ao>)-vw35^4WTe^1OK2z z@JiEl75w-JzC?;7QdIry;8Er#ICsl5V{b^W{((gFO_ z2tY(*2K7^gfk4szWAKC=Xo9Q6ii1C*B%af3n7rJz@eylNXpy>CjBN6^#??Kx^YMz< zsfnuT2|LFvf~?~wZzLt^b~+qqMO0?vPeWiAHFhT~50*y{FA_UH&!3#48*yA*;r;hV z(9IMCfQBk=e$>&hE7sff=CZIWUEp19^VU;To zNOEVZ3PA&k|5N>m4txs42cnUp|7*V>Rtf~p-^~1+hCIpdd;! zVcx~jRVw1@fj{q4aHbo;Byq`aDjR#3gg}Rk$6BDN^juZ`K9oICMcbT4>U#*od9Tt zqBQ|fAH`+@pgM|Vgm-!E2=Dq;O9+%l#X&@O?JSAz@-z_vO;Pbj#CLfR#6TmIp7}?M zfba5t1Os27;)me7_F5#j?W+n&fQ6X1&n5N+1Sn1T-&+E)B@m!2?SHHa-Yg2<%`)$v zF94A47q@h~X%H>6f*&hR0mQ$x|NBe$|Jpa#@9ZD8Zq~~o|JeWU9QNN=_uIa+?;hOQ z(Kb?IZ|(&Z8uahRpWRt`ss6D>qLmXL-<-1ge^$+lJL`uV>s_)Es+(k=|K5c+set!LL71qk P%iSDZ4*-CLOO*N_GCq<~ delta 8843 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 bn&{eUC=V|W5fD@!J^&H~1c8TA1cd(wYLsFC diff --git a/jar/PDCache_bin.jar b/jar/PDCache_bin.jar index 8ccce784d2b471f99a44f6630019f89a39a64c36..c9848f29dd37192c990074883d4c66d4bee1f00c 100644 GIT binary patch delta 6862 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 IicswT0C$4JBme*a delta 8812 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 diff --git a/jar/PDCache_sources.jar b/jar/PDCache_sources.jar index 9d50cc8e120481dddbc9ef154f0aa3b45cf5a39d..3339741e4062b8127022f32fdcebfd1b6299be7c 100644 GIT binary patch delta 44 xcmdnEi*e&FMxFp~W)?061`ZAejfE3=)R{CEZZw@00;DEi3^4^#n>j)?IRF&443Pi; delta 44 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 Ht`+|SE#wa< delta 8967 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 -- Gitee From a49e788804da2239945c36fc7c7dafe06241dfb8 Mon Sep 17 00:00:00 2001 From: fybug <1006291762@qq.com> Date: Wed, 15 May 2024 17:04:42 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=B8=BA=20gradle=207.6.?= =?UTF-8?q?4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 31 ++++++++++++++--------- gradle/wrapper/gradle-wrapper.properties | 2 +- jar/PDCache.jar | Bin 39734 -> 39734 bytes jar/PDCache_all.jar | Bin 71105 -> 77917 bytes jar/PDCache_bin.jar | Bin 48267 -> 55079 bytes jar/PDCache_sources.jar | Bin 23857 -> 23857 bytes lib/PDConcurrent.jar | Bin 9040 -> 9040 bytes lib/PDConcurrent_sources.jar | Bin 0 -> 7583 bytes 8 files changed, 20 insertions(+), 13 deletions(-) create mode 100644 lib/PDConcurrent_sources.jar diff --git a/build.gradle b/build.gradle index 9486a36..1ae81a9 100644 --- a/build.gradle +++ b/build.gradle @@ -17,37 +17,44 @@ configurations { runtimeClasspath { extendsFrom developmentOnly } - compileOnly { - extendsFrom annotationProcessor - } } repositories { mavenLocal() mavenCentral() + google() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } + maven { url "https://repo.spring.io/milestone" } + maven { url 'https://maven.aliyun.com/repository/releases' } + maven { url "https://maven.aliyun.com/repository/jcenter" } + maven { url "https://maven.aliyun.com/repository/mapr-public" } + maven { url "https://maven.aliyun.com/repository/staging-alpha" } maven { url "https://maven.aliyun.com/repository/central" } - maven { url "https://maven.aliyun.com/repository/public" } + maven { url "https://maven.aliyun.com/repository/public/" } maven { url "https://maven.aliyun.com/repository/google" } maven { url "https://maven.aliyun.com/repository/gradle-plugin" } maven { url "https://maven.aliyun.com/repository/spring" } maven { url "https://maven.aliyun.com/repository/spring-plugin" } maven { url "https://maven.aliyun.com/repository/grails-core" } + maven { url "https://maven.aliyun.com/repository/snapshots" } maven { url "https://maven.aliyun.com/repository/apache-snapshots" } - maven { url "http://repo.spring.io/milestone" } + maven { url "https://maven.aliyun.com/repository/staging-alpha-group" } } dependencies { implementation fileTree(dir: 'lib', includes: ['*.jar']) - compileOnly "org.jetbrains:annotations:17.0.0" - compileOnly "org.projectlombok:lombok:1.18.10" - annotationProcessor "org.projectlombok:lombok:1.18.10" - testCompile "junit:junit:4.12" - testCompileOnly "org.jetbrains:annotations:17.0.0" - testCompileOnly "org.projectlombok:lombok:1.18.10" - testAnnotationProcessor "org.projectlombok:lombok:1.18.10" + compileOnly "org.jetbrains:annotations:+" + annotationProcessor "org.jetbrains:annotations:+" + compileOnly "org.projectlombok:lombok:+" + annotationProcessor "org.projectlombok:lombok:+" + + testImplementation "junit:junit:4.12" + testCompileOnly "org.jetbrains:annotations:+" + testAnnotationProcessor "org.jetbrains:annotations:+" + testCompileOnly "org.projectlombok:lombok:+" + testAnnotationProcessor "org.projectlombok:lombok:+" } task PDCache(type: Jar) { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 622ab64..3994438 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/jar/PDCache.jar b/jar/PDCache.jar index 8bf157bbbf071150fc724ca1ac6ce0f6f28179c4..715d85816740600e8f193c75792e03fb64f31593 100644 GIT binary patch delta 740 zcmdnCjcMC9Cf)#VW)?061`ZB}oR0MqdDWOflvx9q+Nlht?rVam$=r;FAbPVsV+|9S zv5$E>BbZUax&y*6X5R#1yx?GE21|Y5e!>Z6To=^@>zd3gVG0(omXL?2jg@=>VR%T( zLNsN_U1t;oS`{(jrL3|x4+Fz|c?JfR$&T#eliyF|+FYn$%>y!G@_HQ$uu-pcx*;yA z&{t&vi!3mn0}-(|+Y1r-Z#55M_yW6W5Qe2wK16D@Te%=umuf^FL~2^}HHcJx!ZNVP zWQi0ju#(UeGl)!I#uK}4t*1fkoj48Rt_RaRz~b7| yA^N(fL+p7vJpnB4F#}@H(it&eKFdr9KXE3+-W@aJ!QxW0Ao{CjLG)jll>`9O8#2!T delta 740 zcmdnCjcMC9Cf)#VW)?061`ZAejfF)MdDWOflvx9_5Rlrb45sdDf~d*djD{e3vpr)C z6PU4&c{?MRQNg+c!Z2pv1Yx}3U}XkNec*n=31(au)dcIB%q(FF7O<9(hp3H}d;wv2 zNXtSrWyoD;6a-ooG2x}GvNjI`!+d!L29?Q@$HTJ$xDRDQxT zu*hVI6f3Zj&=fO>Okc(sh}zhkG>FKt0w)NAyYvIZ@_*$95H*I?5)dh$dM$`ZWs^6A zalCZ{M5?OmH4`ZCCuj7Ufa&?Y_8==KKkNmE`()8Rb1>h(4R*sGp59W`6s8uf@#gEiD0^SY6O^mF*N{8TTg@7J8>GsT@R*t zfW@_^L-ch|huHIUdIDJ7V+O>Yr88o{e3qFIe&S4sy*p;cgTl}#LbWgKJ{*@OpFGM^pAaEh8qyaxP6lg)O15m&lqy7>IVO3s&C2S0IlxY)p;R*^&ka40|@#vHy zD1`(i{bgBGs-;VyOhbD~vZI>-h>=Yh#w^n^U&8}|GU-7emUvk#iX?t~0JqAO;RfDC z9r3TY#ZYyva3d~V^5$a&qcmAUX_p#l(dJ9d`HhUr+Own*FM+t6^QEa+(TkYiqP;|V z$Sf~92!w|n?-E6w#7_udRzVGKT^3I?8NV#|)B#8X<|KsBakEqZB*wi~!CYkJS- zQq%oF?h@d7Y+gEa=EZ+mM!=Wy(xeXOy43gtsa=Aekn&5@!-zgTbW&ubN^_zYvMOMX z1&jg(3z`@xaI_qEsfk{HhK(vqY0VHHa6&+c4*IWiFSwQmh5(Ave5ig2@Q$@EfyIe5 zfR8L=SY!8O8UR3`sQ8Uxa%3&UN$F$&LDl>zIzaxheF$*c!vT!6b~%HzLX!`-RRZ zJUAC-&5MKfROoq_sYmfXld7kylt1A+=dqux+X0+ogm<4tljHK^Bz&7$>8;z?8t;k! zO1Sl2V`I~CV{qEr`TFNOh&uD#{m(tGq+=tZ_#YFptV%3oOFylPw`vZ0x$c4`m;N#y zZZs|Bl^vp2{_WX9&eq`-=p?pUd5SEAGU4sGQIIdgN5O${iUJqggg$hRD26z#iAq&| zvycXjmxhSLSSA3|AfsH-ZYlbi>!X>7(uVJqV%~QlM~(|`q93G;P@HnQwX2d?M9U?< zkbP-pP)Vm=E5RMosh=C`a6E$DVK}883V%tH%s{dbEf8`?43BOmb0FCDkpl%T+gHo> zEj!A53@p;<9^-KQSQ|^DvC8+{&>Ndpt3J-oCb-t;n?H7(Aj+9zk)0NSxGR9oSboGF z0yJ6`PuOq&Y}fc_x(AiMUVNB-%YzrL*WoTrHEzeQZqSD`^*3h>mE`g>Q}ogJ7vM3D z-Oe9NYtC5mg=^|#p4cF`KD@q);d`oY@KEzUISpq+KksPSfB}pSvSm9k`eedZ5b~A| z;EI#m;J(j!>!71=^RY5!}qhii3vw=f{b-fZ9nB_oKmDsnm@lCf0m=r z)nF~S^ZELQ|4z$wN2}Z?G~g9Sy}H0;#}u|o$IvdkB)1NEsq`G4=`U#9pJn>x;kx4a z1G32iY8J9Q;+Zv_CGOAiE4BoktQK$_a->KFd2*MtD!UwX#lO9?G-Y%h5+ET9azv!z z2r^HEHH@3ua2N`2Ox3DfnfOYTkg+Wn^vYf;JIubONS|beMJ^cHu(jom(>>o)x6zzl zr*vZ8v_~QBwSKF>T6;WrKGw5+8tywe?KeB^KS%4gTbr@JZ+1{S;hz;Ws3IUUdhp19 zX0L9ne5ObR{{iWkV$)Qu9lr54o#0N8&Un2W1;4YH(NZT{3)QzQ!{F7nw>Y}wdNR-N zNx|~)h>{p>1&xxqJ5E!Wm2r*AWNJIf+4>{rQy%wJzPW0koAG_?2e~VkBMksJbja?AO>hZt4mR8 z42?F-(a4X!9cH~V^H#T(XKAhJhF??qJwcl7jrne7XXk^>qn5g#Z1>~|XMM2fbxm}3 zqs59GjM&=oR+6`6{O6$p8Qib=8(Y){Vs~|B!`WWBcXkQ0 z<0g($i)-k@vaxaJ>c+GWCFORzU*24=1iQp))DV;8UNNCb!%h;y2&R^2sg19s#VJJS z=@bopDV)S;KF?X+bKc$F9_4=*GiR>FM#7J8tw*HqX7O;0q4qdf>xXJz+@g*?PZ_@{ zm??Dz+_^e6fgq$Pr=LTx+Buaf&&|zB-*IMtFANPc7#uyt;%e-qK-^40mk z=~Pnwl&-brqhT{v5$P9K0c=N#@4JzYjz7KyJ0HCo{=^u2a-0v%hb z${nHSMmDy&5Hudc<#q?$5#wyj>@Yb5d2sDM)|rrLZowID`lO2JYnK}1@?pl9^otpX z+-y=!u}tvqutQDCygfQ4RXJUY$ZZqZ!7#y0>WWkXI0dBsWiAHOHMHpgg=7KVit2`k z8Q)xuF}Nm%eSkXt?Y!IXK{#4YB6oDZl{l=no!)KQAl~EVkJoWXA=TPRe(`>|lKYeF|T2mfToxUY0V!@4$&>P#~c(J=yb@FdTog#r2`KZEUYv&Ji)KXIErdVEdxn z=;s-FTh6*o7HuQg$uNMI>=Rg#oQ&@_M|y8hS~WTZY%scv7fAv0oJ`1jQqLZnTh4lS zS?h;>g+$5|c~2bi+fs4eNd;{2t5)=d4wevMm@J%jfvALzVu6xyLuSw>d4wg#Lh~u> z+LTI>j>R>Y=8zlggDp1?(;ZgrWEqmBP=N-~D(p|qdIWmnhJ!B@)s1wR$-By?CG??8 zFY*fSm?oH6*gHOPfHYi9bCME#$I5ID^{FdoVQckvfjQ*+vCk5&JLhMf-~`pC)y=r$ z>mbF-Xo9p($}D0rxrhPHb4`9wY_^ z;kSUNucPOLR!EzN0VqDM+!q<>gJv5J)+H6{Y z4a}YdQZQr?e?2=iFytpBVg01)6N?09`_esKS}S=yA}|}>SC&|vyHpWy)t7Z)nGtH0 zXe>UF&jVC-ZF~gU%X2t5OFGmJe^%s4cH;_sz|<@s<<8}5YKtslQnDBTg%;^R2}ICu zYJGJHye=d9LvZvhmtw4Kn68#}E*hSXnTv)RKhe?}01(l^No9M&ICdIS;O2w*$q$I0 zQtH$kr9G<6OV7|VIJkBV?#r{~g^5OYl!aXv zpN3?peL-QLA|Rm;Kd*+W@MZfAkt>Xi4Ze@|dI@bV5Btu|+ybQyup)E1n&q{+G$Bm6 zsGv_|)2qa-B5?$rF>RZ2Xu#_$%X<7w|IT=ycmYqRh*(~+#4dB_vTgCwnkbOu#!(em z=jao>DWX!ST;i5&2ks1Qe=ZXMZhw%mNaMeVtwcu?P-)K&|B0QtJv}wMM@z$WVx&iv zWSzq4ZcW{HB`s)+u zg_;gjXkZB{HBqhT`n|44r=a1T4JwGKITv;%yWw3x0UwuCq;^HaP3vlmWxi>v>P^&E zfJ16^h5zu`W0w&tdAqZ@o$r1hvB09S*o2CBB*y_a*O&O;mc*L()pHM8Jl91qmvR^C zDozwf_SXz@dZ(9pY*k>)YA+97Rln;s`sV&b4KK7=O(B<1ICA!ZnvWKrkl~%&O%d*N zQ-(Esv0k{u8v zx;_C{8k~z(d_Pm_Gx}%CP6>Y-Q`&9kWjx2{+-61I(;rsGCqK43 zSib+_$HRC7IijbE+GugM&&8)DjO4DuJjr8v#FO&aM-bTJ3u7dCWpuUr$;= zR6qKF?FRY>x1IK^!_1sgl19kgAPeTiViIibn>|axvLeJo$*&HtZNN=xRkIJ6 zku_$!c(Q8v{%-aam^7R&=9Skcge+I7?DK5%%COE)vHm;ABnCM^3F`05ID#vr%&-Z9*6bFKikYGtn zv|ga#%+q5_$iF4ur;UgZ+Swt++r`_BWRUB6?$cX{1Mm(V`SiX}P$=|awJ^FBQzFG@ zAZzLBY59<=lc>3ABrWY~bI>#EddueO5lKg?-x33HNDl!8amu$y4_Sct_YW>SBu=_U z3gDt{H@Bb4I-v>RDICPQV)6B3V;I&IL9cOnXc7_$(qZGPEL0RQbk3~4hidU1Cv?T2`CAz#yMI=@FM%`lP@(e0~XQBiM@CWzMkD7qP*5;3_wgEP}|d zz@#?xoxhdcD-jD6PT(6hzA(A{QYkoW&Thz(U`pu>gJQfydL7IEcp&n_QNXzFQd(}6J z|2pL&WYHyo&+W*N$&tAZ9^`$FIez`{%CCUiojUmOLN{W!38dsiFg$HiVu+MK`2@~2 z#_+JjI#LW*dzlw$+eT7u62GzG&i=}u>nhN4+s=e@-3AnsTLS?74$^F4e0kx4d z9++L8+>l>Mls>1iq6}={TZ?h~T@2Pa#ITt!hdItqVevMJ^xGc5ax)bL*)ZfK?)vkR z-L9}IzCU}@wMMAsB{Ie(xVDFr6U_47UDWIniIyb@;wMr#xcxB9hzk+qBod0x z=F}|9i7qUvqkRKg;PVW`I+5@Er}Se{z8S`9wZU{I&!NI>fegH`08+hv_gJ|I$^N_m zJk`O90~m>@AdIqAJJ!PK9(+tL|;A1N&(5p3dlf%-kM&&5b z(Kd?IQ;FzJ<%H?AHgP5qX5FfGSdH_hO2{&sGYz(S7;~r8p;uqtMyvMe|LeJ|!LJMT z$cXS!Jy(9peK|g(n{m(th%irNKEu>*vN)864_+A$@{jbj6=s7uPtbRIU3aBRc1=$A zn`}hfCr~ICG5>9e#x9(%HmqK0$o&~=CgGLj@4OX|KEbUNT@8s+WBRX zfz=})u8V}q-;1Kh(?N|68PbpgmZmo)jw3<5tf3*-Jie1W(+2E~wT&T`%7@ouwE10f zA-IejG&BZ+3gLubKM|DpVVHEwTYhoXXla-gN9$2w4!`x}#~HD=^KfhSdNRQjf2N${ z5PLAgEZVN8BKbbA+(v5Tu`%4(dXE^?ax>%%94ZtV_?77Ni&w^k6{1OV>E*srDZ6%K z8}BjmyN!l9DeV)HdW8psnB!#u-UPUHLHqd?mi&#XT;d{6dHXnp-W2EOaQHFu*cVx^ zG?q}G`W&gpZLkRK5 zXz3rPu#SSNtgl?{rgmfFy!)>SA2bKtrR66uH8Ix~jw;Eo%HihheJD^+$kE+%D29j- z*Nc1KyTutn|05)pD2h~`lh0-W&QA9T9jXSPk)r>b-;dw=DU3>-bDT+|q{A61ryrkj zb{+Np@t2ycGRpLW1TaAXRZ_qR1@iv^Xk@=MW@LaS*MB|yXJQ_itVAvz z|9tWSzx+&cfdI?`7x|Ol$Hiai&3`CJnHRVU0^(!ls8Q+8zo>uZY5t%-0Hdg4zvXRy zZ}+de=pW=MtV{B5chld=e;%wrAl^U72KYeygA=+W0Rn)Q@y`YFHR2slljNa`v+5q=#q)tiT@|_kNxZqra18hlk0!7{@5@6U~xk( qgGBz9^LK-Pt;T;)`A9DNANf;~kYZq7*mRKJr!>f=n-sZrgZ>ZU!AB4P delta 1065 zcmYL{TSydP6vw~g?CPew#@ensdtcMSUF{;;S_*BMsHJ(Sq%E_oEPM#ORH!8-K~R=b zPB{=!_L2|Mg_f`$?Do)-^iTv@NGK(t7PW6(ENkYRZ)@h^{O12Zx0(6gO=unuY7CX7 zf+n6ZosOknYdLRNEU3ZXDI_W3ekz7>uNtHT$Wmh{039(14}>8=Xw%*!$d0>1Fs0K9 zXhjkx=OK)my;vm);tCY`p3baE*dd85KM??M%(kGj`R@Sempp&LWpv zAwJaX$=9nrq+6LQvDZxI8Ct1r*&+=p{n?jE3HXOe`IC2ry7#Z{BUn|?NY-Fct1(fX z*XK?eUn(%B*GbLYw$O&)ddlppc}EgL<<=h9Ps-D#0)m9Y z5!z+0bvfl^9TmwcJMJT;{X{82_~dP}j&zMw3!nO1q~Zy`8bh5EX&Quq$qFsPkLg}g zdcIuHVXj#3kveA+=L_ure^qPudT#UlU zDCAmT6Iy32P=+vOfsF_mBCJDb7GX0&SmX`uR;WhhpcS?tj98%p!C`|Ugnc&Hity0J zs}|T{J1R|fUKO^(PE^tzP>XQN0lN`CJ0OTq?1V~$OHRH<#K~6;xS#~BE*CGKaq*#r zZm2_Rz|DthJg@_my&kSS^6)h*DXib56y8K3Cle}6+E}JsCCdHG!r1%Y>eF9P CJ7Wd_ diff --git a/jar/PDCache_bin.jar b/jar/PDCache_bin.jar index c9848f29dd37192c990074883d4c66d4bee1f00c..845d5eaf3fd2f1e254842951134081e93b06bce2 100644 GIT binary patch delta 7255 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 delta 992 zcmYL{UrbVA7{<@xfMI|PryI=?ZdA*(KW0+F7LyvWpa9FFjI_y^7j2fSsnuq=y2&i@ zYt&{-Y85$VwWyUBwL~}|e}#*@X>rq-*w(!0qPnm+@5_pF@q3=#yP&{%pAE&}GaZVVNj)v0c~#86&w=D;c5vSV zQ3Q4HpLYb|6CfnG6MV9iOJ{B1yJimoUzaEdp+6dGh1?%91Am7O0uO}u0!PD#f%!0= zqhZ^?kFiI91=a%8Mhw7fkz>Fw5$xX{Jpul96#MhhQ{eZ{Ie@;o(?C(o4s^w=!08z7 zmB#U2EtwiJ5Z?^7$vDoICvaC+q7!m9fxA@6li-Jv=yOTjtxk17elLadKT|m0nzq9$ zno92j{z%(^#(67nyu|M%wq%Tu-^{cFmomqJhAi??i7Q!4m7t6&{+f%=c^O5~e$M>` DgMfWy diff --git a/jar/PDCache_sources.jar b/jar/PDCache_sources.jar index 3339741e4062b8127022f32fdcebfd1b6299be7c..53fb5831efa8e919e8001ab0c5b8a3085e9f7603 100644 GIT binary patch delta 48 ycmdnEi*e&FM&1B#W)?061`ZB}oR0MqdDWPK)JC(JAs~A4r4SPky_qvqg989@mJj^^ delta 48 ycmdnEi*e&FM&1B#W)?061`ZAejfF)MdDWPK)JC(JAs~A4r4SPky_qvqg989l0uEgO diff --git a/lib/PDConcurrent.jar b/lib/PDConcurrent.jar index 8ec6fad1d7a5d6088a2f411adaa0c4f4b28a6827..f718edf4548289fdc7abff8086f376972c40135e 100644 GIT binary patch delta 259 zcmccMcEOD|z?+$ci-CcIgF&QY{X||hW)Nl80H$^-gQ@$PAZju I{-zWK0Q^r@)Bpeg delta 259 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 WD`WnsVxkZuKa$9WqeS`R*Z%=4IX_YW literal 0 HcmV?d00001 -- Gitee From 737b685edbb6f1b9b5e9c1e139f1065f59832f58 Mon Sep 17 00:00:00 2001 From: fybug <1006291762@qq.com> Date: Mon, 17 Feb 2025 15:02:14 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 3 + .gitignore | 48 +- build.gradle | 194 +++-- gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes gradle/wrapper/gradle-wrapper.properties | 5 +- gradlew | 252 ++++++ gradlew.bat | 94 +++ jar/PDCache.jar | Bin 39734 -> 40364 bytes jar/PDCache_all.jar | Bin 77917 -> 0 bytes jar/PDCache_bin.jar | Bin 55079 -> 60747 bytes jar/PDCache_sources.jar | Bin 23857 -> 23525 bytes lib/PDConcurrent.jar | Bin 9040 -> 0 bytes lib/PDConcurrent_bin.jar | Bin 0 -> 21042 bytes lib/PDConcurrent_sources.jar | Bin 7583 -> 0 bytes pom.xml | 30 - .../fybug/nulll/pdcache/CacheGcThrea.java | 21 +- .../java/fybug/nulll/pdcache/CacheOb.java | 335 ++++---- .../java/fybug/nulll/pdcache/CanClean.java | 12 +- .../java/fybug/nulll/pdcache/MapCacheOb.java | 450 ++++++----- .../java/fybug/nulll/pdcache/MemoryCache.java | 83 +- .../fybug/nulll/pdcache/MemoryMapCache.java | 124 ++- .../java/fybug/nulll/pdcache/PDCache.java | 137 ++-- .../fybug/nulll/pdcache/err/CacheError.java | 2 +- .../fybug/nulll/pdcache/memory/Cache.java | 125 ++- .../fybug/nulll/pdcache/memory/MapCache.java | 151 ++-- .../nulll/pdcache/memory/TimeMapCache.java | 725 +++++++++--------- .../nulll/pdcache/supplier/LockCache.java | 141 ++-- .../nulll/pdcache/supplier/LockMapCache.java | 151 ++-- .../fybug/nulll/pdcache/supplier/SCache.java | 159 ++-- .../nulll/pdcache/supplier/SMapCache.java | 155 ++-- .../nulll/pdcache/supplier/SyLockSupp.java | 26 +- .../java/fybug/nulll/pdcache/RunTest.java | 46 -- .../fybug/nulll/pdcache/memory/CacheTest.java | 67 -- .../nulll/pdcache/memory/MapCacheTest.java | 72 -- .../pdcache/memory/TimeMapCacheTest.java | 69 -- .../nulll/pdcache/memory/memoryTest.java | 8 - .../nulll/pdcache/supplier/SCacheTest.java | 56 -- .../nulll/pdcache/supplier/SMapCacheTest.java | 57 -- .../nulll/pdcache/supplier/memoryTest.java | 8 - .../nulll/pdcache/supplier/suppilerTest.java | 37 - 40 files changed, 1831 insertions(+), 2012 deletions(-) create mode 100644 .gitattributes create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradlew create mode 100644 gradlew.bat delete mode 100644 jar/PDCache_all.jar delete mode 100644 lib/PDConcurrent.jar create mode 100644 lib/PDConcurrent_bin.jar delete mode 100644 lib/PDConcurrent_sources.jar delete mode 100644 pom.xml delete mode 100644 src/test/java/fybug/nulll/pdcache/RunTest.java delete mode 100644 src/test/java/fybug/nulll/pdcache/memory/CacheTest.java delete mode 100644 src/test/java/fybug/nulll/pdcache/memory/MapCacheTest.java delete mode 100644 src/test/java/fybug/nulll/pdcache/memory/TimeMapCacheTest.java delete mode 100644 src/test/java/fybug/nulll/pdcache/memory/memoryTest.java delete mode 100644 src/test/java/fybug/nulll/pdcache/supplier/SCacheTest.java delete mode 100644 src/test/java/fybug/nulll/pdcache/supplier/SMapCacheTest.java delete mode 100644 src/test/java/fybug/nulll/pdcache/supplier/memoryTest.java delete mode 100644 src/test/java/fybug/nulll/pdcache/supplier/suppilerTest.java diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8af972c --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +/gradlew text eol=lf +*.bat text eol=crlf +*.jar binary diff --git a/.gitignore b/.gitignore index 3ee9f36..c2065bc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,37 @@ -pdfunctionlibrary.properties -pdfunctionlibrary.xml -# Ignore Gradle GUI config -gradle-app.setting +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ -# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) -!gradle-wrapper.jar +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ -# Cache of project -.gradletasknamecache +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ -.gradle/ -.idea/ -build/ -gradlew.bat -gradlew +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ -# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 -# gradle/wrapper/gradle-wrapper.properties +### VS Code ### +.vscode/ diff --git a/build.gradle b/build.gradle index 1ae81a9..9c28d0e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,132 +1,114 @@ plugins { - id 'java' - id 'idea' + id 'java' + id 'idea' } -tasks.withType(JavaCompile) { - options.encoding = "UTF-8" +tasks.withType(JavaCompile).configureEach { + options.encoding = "UTF-8" } group 'fybug.nulll' -version = '0.0.2 expand 2' -sourceCompatibility = '14' -targetCompatibility = '14' +version = '0.0.2 expand 3' -configurations { - developmentOnly - runtimeClasspath { - extendsFrom developmentOnly - } +java { + toolchain { + languageVersion = JavaLanguageVersion.of(23) + } } repositories { - mavenLocal() - mavenCentral() - google() - maven { url 'https://repo.spring.io/milestone' } - maven { url 'https://repo.spring.io/snapshot' } - maven { url "https://repo.spring.io/milestone" } - maven { url 'https://maven.aliyun.com/repository/releases' } - maven { url "https://maven.aliyun.com/repository/jcenter" } - maven { url "https://maven.aliyun.com/repository/mapr-public" } - maven { url "https://maven.aliyun.com/repository/staging-alpha" } - maven { url "https://maven.aliyun.com/repository/central" } - maven { url "https://maven.aliyun.com/repository/public/" } - maven { url "https://maven.aliyun.com/repository/google" } - maven { url "https://maven.aliyun.com/repository/gradle-plugin" } - maven { url "https://maven.aliyun.com/repository/spring" } - maven { url "https://maven.aliyun.com/repository/spring-plugin" } - maven { url "https://maven.aliyun.com/repository/grails-core" } - maven { url "https://maven.aliyun.com/repository/snapshots" } - maven { url "https://maven.aliyun.com/repository/apache-snapshots" } - maven { url "https://maven.aliyun.com/repository/staging-alpha-group" } + mavenLocal() + mavenCentral() + google() + maven { url 'https://maven.aliyun.com/repository/releases' } + maven { url "https://maven.aliyun.com/repository/jcenter" } + maven { url "https://maven.aliyun.com/repository/mapr-public" } + maven { url "https://maven.aliyun.com/repository/staging-alpha" } + maven { url "https://maven.aliyun.com/repository/central" } + maven { url "https://maven.aliyun.com/repository/public/" } + maven { url "https://maven.aliyun.com/repository/google" } + maven { url "https://maven.aliyun.com/repository/gradle-plugin" } + maven { url "https://maven.aliyun.com/repository/spring" } + maven { url "https://maven.aliyun.com/repository/spring-plugin" } + maven { url "https://maven.aliyun.com/repository/grails-core" } + maven { url "https://maven.aliyun.com/repository/snapshots" } + maven { url "https://maven.aliyun.com/repository/apache-snapshots" } + maven { url "https://maven.aliyun.com/repository/staging-alpha-group" } } dependencies { - implementation fileTree(dir: 'lib', includes: ['*.jar']) + // 本地依赖 + implementation fileTree(dir: 'lib', includes: ['*.jar']) - compileOnly "org.jetbrains:annotations:+" - annotationProcessor "org.jetbrains:annotations:+" - compileOnly "org.projectlombok:lombok:+" - annotationProcessor "org.projectlombok:lombok:+" + // 注释包 + compileOnly "jakarta.validation:jakarta.validation-api:+" + compileOnly "jakarta.annotation:jakarta.annotation-api:+" + // lombok + compileOnly 'org.projectlombok:lombok:+' + annotationProcessor 'org.projectlombok:lombok:+' - testImplementation "junit:junit:4.12" - testCompileOnly "org.jetbrains:annotations:+" - testAnnotationProcessor "org.jetbrains:annotations:+" - testCompileOnly "org.projectlombok:lombok:+" - testAnnotationProcessor "org.projectlombok:lombok:+" + // 注释包 + testCompileOnly "jakarta.validation:jakarta.validation-api:+" + testCompileOnly "jakarta.annotation:jakarta.annotation-api:+" + // lombok + testCompileOnly "org.projectlombok:lombok:+" + testAnnotationProcessor "org.projectlombok:lombok:+" + testRuntimeOnly "org.junit.jupiter:junit-jupiter:5.12.0-RC2" } -task PDCache(type: Jar) { - destinationDirectory = file('jar') - manifest { - attributes( - 'Manifest-Version': '1.0', - 'Built-By': 'fybug/风雨bu改', - 'Created-By': 'IntelliJ IDEA' - ) - } - archiveFileName = 'PDCache.jar' - // 打包编译输出 - from sourceSets.main.output +test { + dependencies { + testImplementation "org.junit.jupiter:junit-jupiter:5.12.0-RC2" + } + useJUnitPlatform() } -task PDCache_bin(type: Jar) { - destinationDirectory = file('jar') - manifest { - attributes( - 'Manifest-Version': '1.0', - 'Built-By': 'fybug/风雨bu改', - 'Created-By': 'IntelliJ IDEA' - ) - } - archiveFileName = 'PDCache_bin.jar' - // 打包编译输出 - from sourceSets.main.output - from { - // implementation 相关的引入解压并打包入新的jar中 - configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } - } +/** 清单文件内容 */ +tasks.withType(Jar).configureEach { + destinationDirectory = file('jar') + manifest { + attributes('Manifest-Version': '1.0', + 'Built-By': 'fybug/风雨bu改', + 'Build-Jdk-Spec': 23, + 'Bundle-Description': '描述', + 'Bundle-Name': 'PDCache', + // 'Bundle-DocURL': 'https://apidoc.gitee.com/fybug/PDConcurrent/', + 'Bundle-Vendor': 'IntelliJ IDEA', + 'Bundle-Version': version, + 'Bundle-License': 'https://www.apache.org/licenses/LICENSE-2.0', + 'Created-By': 'Gradle 8.10.2') + } } -task PDCache_all(type: Jar) { - destinationDirectory = file('jar') - manifest { - attributes( - 'Manifest-Version': '1.0', - 'Built-By': 'fybug/风雨bu改', - 'Created-By': 'IntelliJ IDEA' - ) - } - archiveFileName = 'PDCache_all.jar' - // 打包编译输出 - from sourceSets.main.output - // 打包源码 - from sourceSets.main.allSource - from { - // implementation 相关的引入解压并打包入新的jar中 - configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } - } +/** 编译包 */ +tasks.register('PDCache', Jar) { + archiveFileName = 'PDCache.jar' + archiveClassifier = '' + // 打包编译输出 + from sourceSets.main.output } -task PDCache_sources(type: Jar) { - destinationDirectory = file('jar') - manifest { - attributes( - 'Manifest-Version': '1.0', - 'Built-By': 'fybug/风雨bu改', - 'Created-By': 'IntelliJ IDEA' - ) - } - archiveFileName = 'PDCache_sources.jar' - // 打包源码 - from sourceSets.main.allSource +tasks.register('PDCache_bin', Jar) { + archiveFileName = 'PDCache_bin.jar' + archiveClassifier = 'bin' + // 打包编译输出 + from sourceSets.main.output + from { + // implementation 相关的引入解压并打包入新的jar中 + configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } + } } -task release { - dependsOn clean - dependsOn PDCache_all - dependsOn PDCache_bin - dependsOn PDCache - dependsOn PDCache_sources +/** 源码包 */ +tasks.register('PDCache_sources', Jar) { + archiveFileName = 'PDCache_sources.jar' + archiveClassifier = 'sources' + // 打包源码 + from sourceSets.main.allSource +} + +tasks.register('release') { + dependsOn PDCache + dependsOn PDCache_bin + dependsOn PDCache_sources } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..a4b76b9530d66f5e68d973ea569d8e19de379189 GIT binary patch literal 43583 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 GZ~q4|mN%#X literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3994438..e0dfef4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,8 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.4-bin.zip +distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.10.2-bin.zip +#distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..f5feea6 --- /dev/null +++ b/gradlew @@ -0,0 +1,252 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..27bf976 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain DocumentType copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/jar/PDCache.jar b/jar/PDCache.jar index 715d85816740600e8f193c75792e03fb64f31593..fd6e964d816c534c2321828ced52b324a62fc889 100644 GIT binary patch literal 40364 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Ẅ́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

Uxkko};* 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 G5ZM3x4ZM5+ diff --git a/jar/PDCache_all.jar b/jar/PDCache_all.jar deleted file mode 100644 index 1d50ce1cf313c60ac15074711c1c96536ca669e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77917 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

Uxkko};* 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 Lm=PU{=Ofeq?cavo diff --git a/jar/PDCache_bin.jar b/jar/PDCache_bin.jar index 845d5eaf3fd2f1e254842951134081e93b06bce2..32a9b6327b54e5af13603cace10111713aee5b19 100644 GIT binary patch literal 60747 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Ẅ́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

Uxkko};* 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 diff --git a/jar/PDCache_sources.jar b/jar/PDCache_sources.jar index 53fb5831efa8e919e8001ab0c5b8a3085e9f7603..c5d6aae8ef82cb6c073d4ae33bbabb94c9851102 100644 GIT binary patch delta 20511 zcmYhhQ+Q@Ux3wMHwr$(CZQJ$}+jcruC+XO>*|BY#e{cNXyARgEJX=+>t}#d5HR?Nn zk6M8dlw?7{(13uTpn%xDly#C22+{siy|bI!uK@u8p#Ucd;{fCnm>mX~u);@?8$ikN2%}` zWs7&O4`1G!%{Zc2mdAr8l2&M8{%8Fr9?Ci?aKJQ}|5M`qD@&D&dF+6JfEYo5fXGws2r*L-LBUh3f#Cs3 z-3lPWNTVOJ*Z36mz#*iDUs1oBbAL#&~}{@~;pwb-+o%CZr0FGsGqi#Ac%m zGMTQ>pl<}jBxc~H=f2u@w!Yf5&|DHi`)uckB z|duY}I}%q)0eBaTgh8~X?jZO{Fwb*Mc^7<~mioH)KW z7;Ki`l%M<^d^vxn@9~{>$8APM>9_EP%_Va6a?h zK(|AF6D*_} z`kxc~%UxM#%pLj(IuQa0ND~zZi0FU20taZ;(pAKjL<^AI7nD=2)FEw9xVOn5ky2NW zOQxwzK6&zi!%c7Q#6(5Yo)9J41Sts;LKP#1rY9dD&PaBWzPHS5{#xpt%i?alSbM^e z`b!eJ!fV;%n)Q&!9g$pyXbp;mF5$WzXyaXGT~*pudltgAxMmEO5#18wU}G-N&JM5@ zYIYXB;;gqY?%cXp*X!eGd2IQpLx;VN65;&AK?WOU!Ymq-e!ZqPrd}6kKyxn2vYlwr znO&u=G5=Su*s3z)jDg;AU!$>MvC^6pFHvEX^{HSR1+3D-7wsr<#DXbv`)8}&- z|0kf?<2BKak@K3bmfmjJ0Ka05O&zhyqkq(v%cV z_udl_PIssqT4j$3mZ~n)C{>5jo^0}YwVL)acjd7+5a8)}%JWqj`)Eghl}873t_^s7i|=f=5})4g)l{g^dlA+X%!O<6zB_opg~V#Z$_nqDYA%AHet6M)KI5 za!U87_*MMj46O|k2iv)DK1dYA&d~9!3C#&i_`@7XJ?EUzo=bJLiU13N`rZBcscJMK zGzG?}Z|28b5kGNJTU4oNK`yV7FfItrAAgAqPl2g`u*S>LA}0DEFsx`!z)GQ|8C;?m zz&=4|chj^^o9i#uFh~dqlE*)Y{fYgB!aFx{)tWJW>WULbm)ttJ_J27#p0y24={ENsb~G64pe^!VsDDduP4pk3MsF;YkFZ2=$FUyGPE zTHkSUbnK?WA>~Kt(SUSGJ@ZvH_VNUoICE{H%G;G?TwT`W(J?9_@pWiCq2%tV0=zIc zdqm6N3~QWYU)}EowrUH-?c^wY;Q<Ch3G z=$+Fze)pIwRSFO!GTfd{kQWRl+hTwHRa$2CW0Pjf=ZonQ-YshfLn6uOI>?|T`<-JNwfu;yNp3%+@rZb3-$ex+$ ztmawQr&!FcN+f%ePcMfnV>e?VQ^dq<^rF}wBrg- zB{0UK$uxJj1*9$wvtiP1ed2%0kL%LbQ!OJ9gz5{s5?hS~$7F{U7H~f0Ut`#VvnU_M znMb=50d``5Xw9{;s~x&{Mi4pbQzJzdRETT29Mi`}Y_;X7n-5TZdbgjmiEkg68S6xmHi*jD7h=N2#6$ ze6`rv-Y(fZuy@b~pfD`~&wnBYhoX<=?v?-a18TUH@0R}rk3I9{;TwgATW=Eq? zKx>C(LhNQ@X-(dexYt1~7>@m@HZzX6)%Dq<#J-u2;&He+`N9P^_eXz#5(}%EB zSeVH1(Apx#oOmhta+wGiMfzY8>f|rAd#W%&0B^8P3uWaP!5O{Hm_FB?_kHrl90w;A z9^vx->W?Xm&d8Iy1uhM~<`o4^RXCpwHk^J~-~`aco~swX7X5qm@P@Am)GL-c<=%#Y&__J#rivc>@dBK_|kwre5+y0v~3HzhEB_*K3m ztQD&+BYieLVOlZ6Bs|NTZ#>4f$@cX{7Tf82XJ8f-ODOgrbOmD9#K58AfX+AfXK zEoT3TP|SBKJ7*UJkQHRfFFMIPZr)y1F`uuOS$>F5VqR5UZRD%B{ixL7U?8)LjIw_l zL!c67J#~?P;xU>v)p~0TLben-TfYxxvsb!gvVG05$<0=WS)4BM9hk0~Yv}nVR#B!&$cjg&Z^ycKF$H15AzciZsqa?-PeMK#WAy1 zAI6TxDO0)5_>Rf3*#s{_F=DV6ZgSUNuwDye2 zhL62^;YX){ZPr4rM1w8x%B?H#vdweSUqPDhSE#S?GLJ7WXVdciU!Bbk5#xd69fMl^ zwb$2Q4wk^;Zmpa?f}RLHZ_G*ZCzfXmi?3~Np5Syr`@$#zk||=IhLVgLhuS|Z4iUT1 zs=SI6SJvI=sIcm7z=?{jptG%~7xW#k>UG@^l9tJU_D5C=(%gzSEc(|{>kr`9j4sPA z%iIygAkaN2fj6VnVF5$00{T>i{0dH*T2ti40g-+f#r!{dtWZ!xB<0;o*xZ6*3>o8a zbEuJU);0k$k>KyQ94DeuTXkVA==U!#964=E_y~rOAbI&6nDCNUrM=n`H4Nk$v zy0+OHG$!!wOc84XRg1jOG_PlLk_Ow7-)DTONzFD&y9D$%gw#U2K>NUxB`o!a z2a=Les-J2^;HsH^UdE4In_50Eh+oo6F$4y@ZSPR<)A!Eb5cWHxnovp|omB3}N&WfB zMsqVzzo?!WJZnl*uu&Aaf<_F&hrHqctPLvy)>6tY21}lB-HLv)W?3(8l$|4oQU~yX zf67gNr*Mh&ui@Owgyqe&!;#WIkj;UkWJ~*X2u{}NC8&yl8_H4ZAx&DImpLjh_YpIj z01uT~`|;Yn<`bQ^a-MC&h?r;7{jqnMfi1tw;}z3kLw~UTA4{0Ozokt^Co0l(4e&@lS6toSaoivzjoN3(Awum<(oAGYXbv7Tkcp)T0@XttL8Z zO+^(x=j*}oXS8KV6}WcYLr^E5QL0J>;H7E*21yp_HKsfX;p({Cv3laDmPRxX@kS$W zgFpH(pUO?7Mg3>(`-BRlA1yE2tm|GCtSs$mUl+UU&NlI>mfX(Dtqz#c4nuHTfwIt# z>%Vn^1Rr084E=~B@2AR6@_04KvVCPZU(B1$&mVW_o>q?6v>h4Dmyls9ONo{NWm+&0 z*NnUakzJnSDi!OBe+SPHwG2vv8N{=2bGcPM1o=vR@jDuWm(6PsUx+UzOGMV}NxrHn z#LOjpXia;PsW!H*c*iopv zMEduDYY4kyuN|V(sfCL~ekTMOFtG2LJNb5)8Z%C3vqB7WApTCH@yTL~Dg4lS^+U@( z3jE7lNCR0BA52{)kIY0&hkmf23j(w4eZtjN!rI{{=WY8Zk|_K3QDhnkP^lK|R#X~K zc8*b(d)X3P!)ze8glb^trH8v@%jNn=;kl8AayvJUY0%=7owAKaE?wqW=S+SweLV7WJn`DeOE=5u$;U7N8O%tcX;qUg^&X2|w#aDNi!XlTbB*5LfiWJ`8te|_#Ah)3WY~EX!qVu)}V{GK$ z$JS*|j4iUicwJaoUF22b74t1rG;Ejk#uTkQV9y=XvEZue&tymkZhnCO<9MJv|8cEM zbmsr%T9f|}3b6k@rX?5<5Gca`a4mwAZ**)xTc>qGdR25=cQfuF{y@~~kG;+LaSyf-Hg z0b>y!sLRL|?li_*LxmR|Wrod#TS6AF&3p^gbPQbdJEUlvLH1T1NGtNeHpljAqF}}V zTxJk?mV{}T-Z~AK3>1F`Gw20aXnwnh(5RAQofFns2ZNwL7$zw!Jp>2?7$nxZ*@;S4 zBC-51l?TQT7`zCy4B6y1qAQg$BqO}Pz<4qtj_DKbSqB1W3k>yuyp`x2aa2?#gk310%M-ksiD0sttE ziQ15y-EJUd(`FaQHMSM-!3Tq`9Zg6AJMr$GR3%~!>CK^&+t!Eq@5cGrx^TyqGzhS? zLz_?01n4=H(*58_!vHO3d|a?i!4?C1Uj_80OvqSv89cq8ds-lA{xRTnqU|jJke|=2 zgun~>>YU{(xry&qDR|}26AwKQvhQuuCM#{>fkv8l+0_8im^qi8i*|YgD^9LN$mr!! z6(x5%vN01!kIxIa-a}Bt@=D_&ASGI)45--kGKAhoI!|Fad zrZC)h#2Rm(oa|CS7g;`ZR8o$M%*3?0db7o|V+7X2J*3v|RVXY`WH=b;^LGHW+^!J~ z8`eq{l~zwWEfo`)=F5(3=uar?VSD8#N`X1nLb#;aWD2dl7)U-8=M*mB7}AB>39Bv8 zZa2l<)>#;*r;W&o61Aw!0OXWFybUK%4fl8wx2w6{>hOU`pyS8mfikP_H{&obV)1t2 z#7Rg1+bZfM>g+vd|FD!EoJQNw{-{psOc2V0?ey_Cya*w(s2?<;fwsrvmBJDL`HCOs zDPD4i?=`22&RP$M+bR$s#MeN>Kwho$*M&tmGC>^!V_!{KBgH+wB8sANE%YNN)T^cM z&J@R2q^A#|+#hoO0p^tM0qq2ibzfP7U74NM3IA8RB5#2ZOq`yCzCd!R=r|!ZCZ?n`vP$~Ct@!$|Cc z@w)@q(#FMO@H;aBA(JTA7Nd#QmDnY&KZ;lt5*y$L50nQ7_|{U#v8D1-!A$yw{Url1 zfD%rXFvul5xGgm?v+2Lg(p3rX0JEw%a(QK$Uzzc)IDe`2XgeE}(>lpX?>Cbg#|5OU5YY7L-TrbZ?soeJ@G1Lv!rG{2MC&q{ z(OVA4du%nxcXapdy(+NBlgQafZt5-eDjNKxWT1Y-*JZd0g!L07Wi^;LVxuZ^7;^`@??lN&G4DenkcK87veZ&x#0} z(6^h%b=Lt4qV%gApOUfSRWBWE!b1aN?*5!8EirtfMpF|jI?$ZIQ+>Vm$Bn`TOI8#ve31FM(31a zsw`R}7scB)HC#^p-Ja~;UcZ@t*xFvcSjyk8(;ay_|CG9RH>1GxqOnZjIlq49L{QkV z>%((7!Hd;P!rzX{W6$t++#wK#!$MO%X z?P#lXXTtGvAx{H`p|LB6p%sw&8{`2Z8NfT`t2GTrOG?EYny*8B3no4|KAniOgk6d9 z(Rr`kPov77l25;{ich^%E28`N0FL!^q!2L2ZNQ~ohv_Q^AWl!E6@-w6d^*Nx8WHqY=n+v@W+C1sfVj2y1YVN{0F4L z*>ipNbH(U6tqW{4(h*@$h?W>yG)SG%!;*YBW&VcyX-rOj`LuWfbY7MT07&)YUn;bp zXzf#3O))ps9LRtBjcOa>La&E4#>Wy^=om94fqsS0UV-`#7~ltbWyt>x*;1yWi8*b+ zCriS9EJyaP@H_T*vRmc{9=?D_p#5u)~EO_gxv41Wpb9HEB!WGseVl23I&*h1ciTs8kL`G5l* z*W!>cr|C@`=B(h7=Aov2LYGgBh!1eLW7j^%&CHJsrN1Ot27Hh$+A+z3k8l_S5Av+r zZ6wwx!b-KQ%7RtYSA$wo&dxqBmy%NF2YV2QQ}|Z(@9M>fCU4Th1%a_|h=cHYuaYM% zQ0Da<=Y(AOB{$(|sNc$1pX`pGgp zby}0T|G@;uWW2hSou^+)S9Kc{$hV9YStQ1$Ow0`8oyv!Cn9#n_*jez2d3`3Z#mb)m z&ioS4rkj4L;8`HxKXb$Po=bf?k|4E14!4EH)@B#X+9ua7D5w+N{^l`q0?M`GX96qS~ZOocPMEEMhh(HdH z^OmdZg2#Gdb5ffv0iD@l$74RpwBzi-Y;6FbwrtZ7D0e?`9ae$u`IOF(4GXrvlm2ds zezpPvM zsc5&>2;_o=#?%(;a<^9KPj%YKGwsYEz8pt1v9|b+U{iTKRFad1LNOn8opo4z-VOUP zB<&v^o*n-UJ_AB`m9qjjudKw4QhFENCJ&&2VG}vckS*Y!f(c>(yLct(<6%H#6Y&$%#Y~kh@(u`#TI$ zif|Sz-c7f5vNknbPs`0UM{Ey-b9OGT7Tl(%8{;^9d3Y}90<;a=Upzd|cT72XeDgRq zku6tRENnXw&x$FVYw!UbFZ6lY_Mf*4Iqlc<^6VoPPH5B(d9Q4GSb_vOf#refg&|It z>pl)bu2TV5vW+`nn^?zGm6|`d*L<=@u&s|2y@T|&e{Jj?gJ$Rl6?f};RO}f9Y_~T} zr)s)>r8%A!k8Xcntk1aBOuT8`zX&K(wOhJtDgq114^AV!t;_&UAXvn3bbM01WKAEh z_3Ukbw>+`dY#PNn)r0UmUUS!cYHj$7j20B9CQc)r&>(Iv$sC-)NkMW6M?d9#y`ML| zT%aZ*#}}OsB=ab)E zT&ek>^^bVLV_gF-r+s?sd|GK7Jqahi;5U}=GZjP6QA;P?7gh})34W7ebl2RyEAno) z{(2z~g@>D83wwWLY~w)E)OF;D!VJpYil9Oyt|1)lGADLIGW$BF?RXf->6G-OX|B<% zU16Z^aWvQ|KWKD&;M}QXGZa9w>3g$Xd4P=L4T`)teoleV;Ye*d<9yt}2cZ7Lx-3k?8^6%6gug0$w=I;kulz;4xirf5WN< zL6x!Qy+Po(SlmlZ8AdQKPN3$ZKdMY=GUsd>J{-3i-}HSde#Onj!6?ZXm0O+i36V+; zl%UzU+{IHiKI}sn<%VPgl2=l}+W&ZBb#HaGZu-2$lp0&G;)T+{!okAgPDjDGAlHj= zeVPLR{xB}UT>Mm>J*^l5{=Bc11tHVC8=)3&bqw8y2*>zxdbiSRZqbQmi5@ljAG88A zI!Mt_$GM+x)X!a4uk|98D=o1Hqj0*67|@HLp~lxbyo_d2is^bGQD7oHk=i75vzNDj zL(y`(V3S5JNxw7{TA_biz|J0RCe7sArNaR(z+JKfI}sq?XY6RUh^ebzZG|xkWdwSc z{DV%2Xk?8K!J`6+{)TBMh&1H362msi6W~V;HHu_p(PZB4SCJ9Bc3>Iu`BT98&1973 z0*Z9p;~lzy4GDw#_vnCOq=2ddDW55sKi`QlEhD`}_EZ*!1feX#1t9fLigU&GnUerP zI8CP!hV;yzRndDb;abLXClU#f5|reB>E>?v7p)OfapC3GD^ z9XOyB$8p`GHg)%5`Ad5Fzo(dfT$4YG^L`);NE?9efD>v#p8Q`Yzyi%9W9q3PS$6A_ zwa{0kEHbOfV+(_?PX|pL-Mr812O0r~+jbh&e~=1sxg3J$x!1g9U*NLDO@AB$y?Vs@ zp9_#nUn~ElN{mXjO#)wH9!)3nr!au#%fgtDG3jIR{$==w4tFHXmXo}|OrBEIq{y_n znrFf8^kbdMHgBLXs}O9(Ez-z0gC3slLX*F(Rs0%n)<9O5r|&+qS3!EQ0&gN{P&%J zd7!v-s}s0N^<-AW{69gw9NSO>hr5FILgKNri}E>+ z$^2=Oez$*H#nd_u`oq?NO7iaMnIMP!Qs2^03qY-h+1+HSIG{F8sSqp@&Tk`uH?$4#al#&6>>W&I&FzFqox>c&yb+i8($&w0#YY({*tvsTV|~tg=@GowNPe5uF;bg(4xi>9L6qf8YizLJRox!F`-oI6epA zVQ3;I!4}J4=uH?4Ihi#0{Q7;1 z)7CDr=!v*<^{g+4X*3E{Reu_I@L&g}wH06d66u|gK=hbCHx})rb?EtB79|p6KA+tm zQG73(yz*!nRT_|uc(F7Y?V}aQIgkN4p^bO%pX%bTJUj>R)=3Lljq{at2v$%zuQU)} zLbsBKmfcqn)Ho_lb2ob8*Qa8z5Eyosu`uB~oj&P5IziHsjz>U5LlpwcHPIV*(BF5S z9F(|GVCER4GclmTGO_}8?K;e5|9DEqpQc+Eg)40~4rLGg4$M*3lP^4fTT*Q99+r~- z^nV(*9;O8Z1@wkSM2PXfd#_pgBxx4^#NzbMZ3$E4Ecr%16oU?p9~>etG}GYu$USDZ z7@9s)Bwrl-$4*5;3h?Ur^;H&^NXOOg{%tw}4ar~!er zC+J|;2m$H2OhRIeEau_37D~T-(?=i~Q!?rP+t>kMbd!i_dO2q3Trc&2u<}f*KWDn~ za5&kH0}w~T={kW(95~Z366dAJ!1lpOg%?-552-8P<#(QX}A=)>(203bZ?|#K5&QxOd|R9rB3!zb1GpZBnfdaYa7>bk6+~Z^kc(2U-n*! z1uygd*yyfF&E|AVKc7XO+Lx|<2=9pTNHnZ$1P9WYO~kjqy98y6At~~PMpS9AKvvy43p=bn%H`k@Tf`kD=w6{5Q zJUB9h^n8M0IMD0hQU0ubffxb)q=|Bu$@X|y%b5UVb_|1x!i$YK!-A@BF_VwpHSLS& zUi}He;;Pq`hwqil9dXdaI~8ESVYi&2X)wr2rxdN)#9-|UWSl?yt!?b6Q>v0ZOW~x(=NC3?Rdg4)5 zSyV1we~FapU8b^!-N+tvt&!QP)l!pwbmQ?+YE%sX#Dpz@V4lx>i3DaYLa(TWexDh7 z|MYIjKPOcM0C~(0>&(G!qg$(4MyJyqialBpEKeHIZmcUs;L1H1KCI7X@xVNe5si(5 z6*+1Iv@ononwL^@oim$PtX|(l<+0;|;Mti2`~BY2yKvfKFbO4tD4jXN>jS?|xj(Ex zi1{1vjn)hgC_V$|N1Vl4Ymv7p|Kdx^ePidvgcl2?v_w;v%IGIxT$g+KO^QCDw+0MX zZ0x2Qp(i?nLa>dm{^FdE6+Mc_Xo~~pq`@xh#U~+m*>M|~Zm+G_zlcgIM9JOk!VnsC z_Zwz>JgbSWoTk`v1$xm&1jt2V*O4)I=K2)C{OO?nb>3iQcV2U;(PU%n4HU7Ki=yCa zgG!w<_E^SnR$BC!*Av;pEg|F+MrMqoH(N-De67OtfJib_U1jx+)SR&;(cRhd*vs}0 zURO>-JG7CZ8>?OKYLn3D(%&!hP}-j{)M&hmd;gw?TelVNUKh1etYlQ)xWEJO?bI)ugO40}Hn=~D1PG`kXBeYPZ?fx0 zbDWt5&5iQi#b-XQi~!#xnabD9uoMgu`ZB)h%gFrubDrn6AZoROb&=C)(`H9xw@x8^pparKbA#Km%gHs1kx@?$~?J6S+^Qm+d5esVg4t=uY;e zE0z4HL=X2n;FL3tysQj{w5%?VB%ZJTvrwk7Un z2}g%Xyz0giPU!d_w%c3;BxAU^>Q>uWWsOfgx@P!<@eaJNrT2WCr|)z3DJ}_lyDW7) z^^AE2%hjg#7zdRA)nKzb40|;ze1A!)2*hDMfNq!J z!^@6m!4{&1M=&H|a5H?pYwyOJ`nqx@QHXnbalzhrz1F5w@nD4S{`}(ZneeSOc-cg{ z^~&A?*k1d^+Zn*ZLQz{Hs8Pei{OwF744thC;^Nz5Nf*EhG$Iwk5j8M5;O=SSDBJWh zu+kgzT)u7N7W`MAx$)XFA3SCjF#Ks8oTUHRB$Gfiv3ih_Y7NpV zBF_zSJNOrh*cB~20_3t~6AsBd>rG(1cn(_zd(`vStFC^nhz;fk5ale@lp0XxT0 z-6Z00f&^Z=74}SQAoVv8jzM>x#8jGTnR)PU&36uPMM@92Lm*u5Opp~<0Mw-TPc&1F z#V#yRf(TBfCEDg`l4j-?yCkZlj;(0#D2~#hzgRGC7OuCy1Q0^a+MW3Z*)$kRg zygdY06bHW}MvmqWU7sKKr_jY!xtYo?@afRi72&T>`x$A$k;Z+?pN$+txb&a+w^#{c zZExkN8NJ@g9YK_sn?r_lPsU29bWdN~x}kydlQ#IBnUPojM+80Flx+1#%e2q?JR`9LL$G zrf9g!SxGVWf5uc@kx^6B_ohhe=M&+{qSGQ0dw>2XR@Ye1!3y%f57hHjvO47C;$u$# zMq0_ggx&u{{Ht`}0NrUjHaP#4kObc`W>AGT-M1GjIn%eIvfKD@&Ks%uNLbUa3=Kw; z$5~GlqLtQ7$rd3Z8^VE#Gh#wq%-ed!$lKDs!jb>W1_ow1^VY*^8DOdJPIf#G15p=^ zZ3|wNPB*DE8!a`p7iJ}<;ue=#oUGIzEfMYHY;vSpqR0>cV4(J52{AtFpfd&us~j2} zHZ0~Np$G;ilhrnp$%YY^XO{~m`^&c5V8PI+19)mEGi%}-a&(i^YORVgdmTtM8>eHK z7-Pz0!HF6*nTLuDGGj<;(6xX04WHuN@*LuJQNATm(p-E|&A9cHFe4Gsm@fUIwik(<7adjo)Qx)!&?3SdXVS2aPulNrc7)&mB{Dl4t)tzvOeV~*g%t!;9(V9d`Klys zk%WE!U8&DX8B`op_fGQDlt$*h5>Pmpca)r5N(K%Ch1TxJOX#>gwP30dLhr1iTOBI9 z1RaL7RIM{r<%$!UPic3JSzdmLKKn$j4X~(=g*m2EE?7A|=^F9B*78I7b-8>;hs(U-d zvK!Me5Z*ikX|`1}D^#E!pF)a6)AVd+f56f(y|>L%5#0bg?uTe|yIL~iqW2dl5mMBE zq!Ut}z2r`7_~wr{PPb2VPBZlI0DFqO1M!T*GFXx%R(K^ek@bDMca2ribD98$UFLEw z>0He+T~;KU^?-V+L2smT~MShGmAsX#ZUpf(R7(JI-hYB@ zQkV{@6V9K~T{NR@>L>==rP%~RcXa+4mJH{^PfKZiPF*Nm2So}i9uU2^QAl4^f@0X{ zJcQmG7h`G?S#H1rFBg?9Dlmm04pIB&3|<&W_3fAPs92CNR;Ctc zpF$62>nuHTt>|8seKQD$og~+gHh<|$XJe6L=5+U9)EkBde?^Vul8h3MpqLy#;&yFr zP&F}=14?80cdrdJ4sg8B)KEm^=2`;E#x@ktBQ`jkM-{MYr@ufX{&QYl&8MVjcXav@ASLd8#VOzi3g3*Ux^6EkCO=0GFO!t zH<1JwQtv#Zq_fYh(`xIN*SQ7*dkth*D~WkpF4S|8u^vshGIh2W$!b&emtR){!<(?KpL# zf4tW8r)L(3%%Ihvln+D}M6y-Tf|shO)Rn6xcAcOBBb_6PU$FeHYdQ7MX*SyHTWhXg zGoCZr8CdWvqRRgD=d(r|t#q)R>>*fFQXY`n-u*22x**=ufwBe8Vd90s5zranrI(RbB z3rOJyxcXs-SZu{QAn_AeP1ZLD5%Io(DnEryY2|DRn0!3<8P87M>a7}3rHlL?cwO3lM&7(<+&vr1 z=0$@ZJpeAl&-1J{t(Pa-CBb70fBNN$gX_?CksTa7ik1Tm;du<~iMv780ln zM2kN-WY>=MwI|J)urN}|OoYURHc#6@g-kc{V2oB8y>bKqYW`J z?1O5tlExYi`vPKIIA4aY45VYlQVzz7t_bMxi;WF})m9C8dT(jBiGm;%*Nh2f^CQ+N zxr8eW$Bh|)2yT@6F{QA%k3HdvJ;xr$z!@Jhjada`V`ZkD&i33_s~~NYp($S)9m0p8 zsK83( zvrl2C;wo^Q;xJ)~@D-RC8>qx$D5AwfaO3H@l_|44639#% z4KDzA{A}~Ztf0w?k{P`1r0Bz)y^SQ5VxYwn6*S_BDVUKOJ8wMx)luOP-5XS!F1m5{ z5#Hs@|K4ln#%gJ4E>V#i)216)MHZ9+-S-1w_}?Ox(yfc#2oPrj{$JxR_D`?g9NmQt z|8Xed|4McJ(<|Z>13ehPmF9*5t|V5EMo4B9*JcTXj*?FW#qI50=9J$J^9}*{U-$M+ zKP=fBoUGI`L{$EFxb*h0(aY6Y%hgw>DY2EG3~c3>MC z91u%TcLeaO(}IXV3}mK;D z3Lk^F3N;a6tMRkQ{Z+N=l||>hXJxP~44Eu)A4=wIaFD^r3x98*P}!B!rgknPpWHNk zkF7sW5s9waEn`GB0c+PjNhToUSK}nYONDE?pJ$~MvmWvw|r&Co&4ZZRQN+g|0%SpT>0$Gg2&~MXx zDwoO(>cbadvT?K-HJB^#wFSvPU{)&md>Jk^w~+rx5W0~j zmAM$(fzaW^UIZ?2Br=j|h0Ai(G3L7L7C(v=6}_q-wm>lPz=fwzo83+=3;s-UNaXHV z@8vQ*A4jt4*cm)-L+rXhmDDKNxuDs%{+^ypWsBv^Q6{d;*ig=S8d>~|;6z&Of`VR- za`Jn|-do}y?ad;e$}?o0!A_Bgun|ZkBfrtKdm}o>z-b6bQPCRxy!aT;&VZ4r)a`Q_ zQM!48y=WhL{U%QfqZ@g;4Ay$NyU-5;BbU9_w7)+3xTey=di{k8PpkgdPO(kjh8hkq zrsK?1Ey#A__UI{Tw)wCaU@xO1YNhM?^T}0ayHN9(s$`4%)$!mXW^b0+V5+ z{--fgv6%nKO-S!@oHcq3NQKOz>z7M6r?y8(^L-NZ6c>+VFIegYO{}CicK}qPxQhGl zCni^hWDY!VizqN2F2HZQ5q8}DdJ|AvroOr>1-JSHgF?eKHpLiCXU}&067;>Jo zr7-S>p=O(h8r6K>HIo1gDFwTPDT`yph2F--zgGQA;RfUBM_TB|xWSml$K>Q1TK39N+JU?n*dP}s zo>Vzip|x}z_eJV4{DA7hIM+H4_Zc~{8OfO^n?20(PLghEiWm#Bxi@4^!&fZ_+or{p z0>}KS)a>v0zH#&yv~gpu7Or?^pdODH=v9Mq$4m1vbCRNMvSDNBE_XK19u^-q1$#{y zvT>!YEA68-ztAQ0Hz4XMg3j#&WqCaDTpHf#&?I)v@3OXvo2E=Dj)>`$7%9#v64mG` zg~6GwtqdfnwIIy7I4Tz)o%)Wi>fCfTgT7FI*!ZIUg=+E+c|w!7ixA_yCb-m7aR zYa!9iQuvTf@}L=TKc$pONeN^O;WY?ReD{ey~ONOm|Rk2UQ7;IG`$t2-&u&*WUzv5cr@h|2E2|~ zHGxdrXKK=J;l>(1xnk#JY*^xlE-~ljl{2tYiyb25$nz|qz3y!US3=~)+*7dCt2BSQ z!yT=R|C~RGW6^1s1$>1%DNwdl_%<|{dE74|hPc6uIKsTomZcVjE>Na-QJ|{+vGnNH zusV^wTbJ-F&YC#RNbgK<_fo#LjY7TZS{<}V@b26-_UNnZFqu0og;npa(beLsumh+o z*|HN1xGG2@(@WG>0j-E_c;8Cpo}u23*Lx-_S!B<{j)mZBi_PMIdicxNF=-ezruLp1 zNI9Xa$KHU)m7kb6)}sZ8WnS#+BnF=vjnceU;Gd z7NBt{Mkwu&ga=b|nw#165C*T{`TQ(K>YbZXj94vKx>o5ne zl_4KG8&an{SDR5K(T9!zxhOkiQSPLjmrcnRYI(7Vv`DAgYQA$%aNdPF_I2B*C%bh& z+x;?B2-4hV5NArhyAmzWrMrJ;*(oX{`vTW!=-mpfX1Fyp+bQFm31F1EkEm|TgeVoXkB8cDQL~*9n@iu(=u?c z;M`y#lO)OXa8}7Q;^L%uP)3uXY?3`)AcM}0@ zoR#=X%Ws)r;PlI@au_*HC-o40^$_6x=I=GYhh9wQapScVvLFHvH|s5o%W(-DzC4#g z0f@)%;B-p#?LUw^06@e1w6IwKBsy+PiE;|~Lo`|Yv2$K!=e&~>DUvTC5{yw+i~&-> zfB=vsd4C2XdPrPmQ|OoX#YSLgnAG;@cHnfk4>rF)yBbE>DP8<44 z$h@@TTYSK5fMzScvjMH6NvuC#viD^T#HHap$gqO2ZiOC5P@>RNlO4{3(cwkuC=t7N z@9wz&+VTG7us7GeGcPK;ukB9F3mKHUGsFQ7q?(?bwAr`bTlB}(wp&_aEBclfHc}Pd zzn^Viw_XDK?+ylOgHodH6m$bOZcG(*h-A#}fV~AGI2cV#DnZH-eeKID)4SG)6(XWu zFsVsZQarH1G8mIAs!B9^(l{4NkAuiGfdwuya++Xr&Vjc2mFO1N;oo#A3y zQT^j6&nPmMGsPI|v-l%)JHUG_^O{LwU*$dZDIOB0im6Ycq`&f4LnKCTbcI?+ca4w) z=G2y8#{Kvb9z1%=s0Fx`&=zn3VIwN6z^01oBSuFP%dKAD&n99+_JuD}pIyZCo6aVK z$!$EfcpI+eb)WOKV7>}^hSa>PpfClD03rn8gZPzgsq>ommO|W=`aAw$B3KrzFhtQ~nMoNHf1lwI&Ql8VA)(2MF9h_i$r9YVq)ZcneCI3^)z8 z6Y)=#VE!Q-oRZH6go`H#|5Yz_%*jE9vm7YkN~h@X>2dW0+yq4&hdThAG$*2L;D(t0 z7Z>1$nBx$*HV0YFc}TJ_J$v-CPAx4t0bduy!5LBIri@4MlL`8NpXm*eBRDatQIrbh zVoHqb>oZAa+_dKJEeE+Rfl`8jkD{GQ0v_XVZ4OdM`Y>7%jP?kAkc&A$9A5&qKk$P~ zFd};Ze=JYN|M&fTGJk`I$Nz_OAb~rlFiu=ThyF<6)MV@lbgIH{1u9gb*}+wKX~s=( zL-j}%^+b*4gz~A0k`u8osBtq+l!ZCXk@DYf@=t01-A}02u}Y=+abHh8OHRZG>mM^P PPymY60!Zv*Z~*uphPm9h delta 20787 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 diff --git a/lib/PDConcurrent.jar b/lib/PDConcurrent.jar deleted file mode 100644 index f718edf4548289fdc7abff8086f376972c40135e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9040 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 diff --git a/lib/PDConcurrent_bin.jar b/lib/PDConcurrent_bin.jar new file mode 100644 index 0000000000000000000000000000000000000000..7c201907b4d9571e7718389e537db8c357499f93 GIT binary patch literal 21042 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 z zm!vaD4^DTCJhH5asJk1H4^(&DP6BxSnz=y0jewK)P}lhwld(;Mi$wTbVyj~>G)L#^ z9}iF2w4n3XJ%i8=XtxL=^dxpC=GBpWX}7q{FX!BRA={y810n} zVM!3T2NM!~y)Aq%sm({N_61(7fu~3jgSo|oB5O4cvm_SPVm4?1G)kh}RipqOvHfZF2V z6#5OzE_OHDg97D8I@l4;5Qjp0U2a<#OlioN22||OWk~#*!f7{VlS zxoneDs7mQ6aKof#Z!=i~h(j#;!;?FtFR7!rg(&_6pSFgG`4w8*&Ck!v+}vm`rHZH1 zcKZC=1>9?tvLn=w?rAfKt6MJhj~}cj7X^rJ->*oe@<(X$lVgkBwv`?rD@g01QrP@5 ziPa^+r6zm^k~F3RJ-CP~-ZR*TufBy0!pl#b z*G*`Sw6TF3rhP^YIsso^eSj}-f+>()Y_Pn^17CJzpEQ^9D0|w0xW-;AmA^r+OF*|+ z+bLmYECQZy|F47D8i&@mw|`Hy`(XU9Ho5BmA?k&yZ>~zJm>Z;w@!}+``}_hhSE7Dg zeme^qocJ-oAA-RUB>4U){UhU$G^y+2rZzdHDw>w%&n0=Na25+ZJqAi8KTuY~7QzM& zbhl@fKmHutK|Qddx2+$or>Anp2OW)$W;jliAk<5xgs?P%LdhucD=~bSn z=F#q6jET(vGgNO=^F&X`loyq`G6W~`sSqHUOb7bB6Z@7tJi+V_b=vC+Kq|X}*ZVg5 zPL@oD3idFUrU#+k`!`R7!WPh@{7?`Ic@-((U+FY> z1XS7R9R8|uqE~9Fp1~7KQ#*Sa}NrRH?Q$8mb z{mq|X$jV|xOV#&CuMzRcd%(L8sQmXx0+r~~8X)}=Qb|EOU!Qsr@&35Kqo=5SH!YDb zZX;*MhpQ(=t`A`?@(F@+?}8s5w_gx25!gm7$IP!JtiIHv&uv2Alg1XmL1vW_=)q-G zPzfSH7EhMWWF-P8KZ{h@X2TFNo(|Svu?#lo0PkwqIAS8;Ub7aa(bjYRtF|s({Q=9x+7Ecwg;Yd0s!hj4?1$tse<RE{Y69o}HK}n44`EGSl_9Jr>GzQuZKKs^+!N`PW zilAyUH~zMY5QOGDU}{oP_VhJ#hZs_kPXn|0ApDqE8rP7m]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 WD`WnsVxkZuKa$9WqeS`R*Z%=4IX_YW diff --git a/pom.xml b/pom.xml deleted file mode 100644 index f9c2bfb..0000000 --- a/pom.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - 4.0.0 - - fybug.nulll - PDCache - 0.0.2 expand 2 - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.0.0 - - -Xdoclint:none - - - - attach-javadocs - - jar - - - - - - - \ No newline at end of file diff --git a/src/main/java/fybug/nulll/pdcache/CacheGcThrea.java b/src/main/java/fybug/nulll/pdcache/CacheGcThrea.java index c7dfda0..f437899 100644 --- a/src/main/java/fybug/nulll/pdcache/CacheGcThrea.java +++ b/src/main/java/fybug/nulll/pdcache/CacheGcThrea.java @@ -1,8 +1,7 @@ package fybug.nulll.pdcache; -import org.jetbrains.annotations.NotNull; - import java.lang.ref.Cleaner; +import jakarta.validation.constraints.NotNull; import lombok.experimental.UtilityClass; /** @@ -15,13 +14,13 @@ import lombok.experimental.UtilityClass; @UtilityClass public class CacheGcThrea { - /** - * 为指定对象绑定回收接口 - * - * @see Cleaner#register(Object, Runnable) - */ - @NotNull - public - Cleaner.Cleanable binClean(@NotNull Object obj, @NotNull Runnable run) - { return Cleaner.create().register(obj, run); } + /** + * 为指定对象绑定回收接口 + * + * @see Cleaner#register(Object, Runnable) + */ + @NotNull + public + Cleaner.Cleanable binClean(@NotNull Object obj, @NotNull Runnable run) + { return Cleaner.create().register(obj, run); } } \ No newline at end of file diff --git a/src/main/java/fybug/nulll/pdcache/CacheOb.java b/src/main/java/fybug/nulll/pdcache/CacheOb.java index 1d698ac..68bb971 100644 --- a/src/main/java/fybug/nulll/pdcache/CacheOb.java +++ b/src/main/java/fybug/nulll/pdcache/CacheOb.java @@ -1,13 +1,12 @@ package fybug.nulll.pdcache; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - import java.lang.ref.Cleaner; import java.lang.ref.Reference; import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; import fybug.nulll.pdconcurrent.SyLock; +import jakarta.annotation.Nullable; +import jakarta.validation.constraints.NotNull; /** *

数据缓存通用类.

@@ -21,182 +20,174 @@ import fybug.nulll.pdconcurrent.SyLock; */ public abstract class CacheOb { - /** 缓存引用类型 */ - protected final Class> refClass; - /** 缓存引用 */ - protected volatile Reference cache = new WeakReference<>(null); - - /** 数据回收接口 */ - protected volatile Cleaner.Cleanable cleanable = null; - - /** 并发管理 */ - protected final SyLock LOCK; - - //---------------------------------------------------------------------------------------------- - - /** 构造缓存,指定缓存方式 */ - protected - CacheOb(@NotNull Class refc) {this(refc, SyLock.newRWLock()); } - - /** 构造缓存,指定缓存方式和并发管理 */ - protected - CacheOb(@NotNull Class refc, @NotNull SyLock syLock) { - this.refClass = (Class>) refc; - LOCK = syLock; + /** 缓存引用类型 */ + protected final Class> refClass; + /** 缓存引用 */ + protected volatile Reference cache = new WeakReference<>(null); + + /** 数据回收接口 */ + protected volatile Cleaner.Cleanable cleanable = null; + + /** 并发管理 */ + protected final SyLock LOCK; + + /** 构造缓存,指定缓存方式 */ + protected + CacheOb(@NotNull Class refc) { this(refc, SyLock.newRWLock()); } + + /** 构造缓存,指定缓存方式和并发管理 */ + protected + CacheOb(@NotNull Class refc, @NotNull SyLock syLock) { + this.refClass = (Class>) refc; + LOCK = syLock; + } + + /** + * 获取缓存 + * + * @return 当前缓存的数据 + */ + @Nullable + protected + V getdata() throws Exception { + var ref = new Object() { + V item; + }; + + // 赋予强引用,防止进入回收队列 + LOCK.read(() -> ref.item = cache.get()); + + // 校验数据 + if ( ref.item == null ) { + var b = true; + /* 自旋,直到数据完整 */ + while( b ){ + b = LOCK.write(() -> { + /* 是否在释放 */ + if ( (ref.item = cache.get()) == null ) { + /* 是否释放完成 */ + if ( cleanable == null ) { + // 获取空数据处理 + ref.item = emptyData(); + // 完整空数据 + return false; + } + // 未清理完成 + return true; + } + // 数据完整 + return false; + }); + } } - //---------------------------------------------------------------------------------------------- - - /** - * 获取缓存 - * - * @return 当前缓存的数据 - */ - @Nullable - protected - V getdata() throws Exception { - var ref = new Object() { - V item; - }; - - // 赋予强引用,防止进入回收队列 - LOCK.read(() -> ref.item = cache.get()); - - // 校验数据 - if (ref.item == null) { - var b = true; - /* 自旋,直到数据完整 */ - while( b ){ - b = LOCK.trywrite(Exception.class, () -> { - /* 是否在释放 */ - if ((ref.item = cache.get()) == null) { - /* 是否释放完成 */ - if (cleanable == null) { - // 获取空数据处理 - ref.item = emptyData(); - // 完整空数据 - return false; - } - // 未清理完成 - return true; - } - // 数据完整 - return false; - }); - } + return ref.item; + } + + /** + * 无数据时的数据 + * + * @return 在没有缓存时返回的数据 + */ + @Nullable + protected abstract + V emptyData() throws Exception; + + /** + * 放入数据 + * + * @param v 数据 + */ + protected + void putdata(@Nullable V v) throws Exception { + var ref = new Object() { + V item; + }; + + var b = true; + while( b ) + b = LOCK.write(() -> { + /* 正在释放 */ + if ( (ref.item = cache.get()) == null && cleanable != null ) + // 等待释放完成 + return true; + + // 获取对象的回收方法 + if ( v instanceof CanClean ) { + var c = ((CanClean) v).getclean(); + // 注册回收方法 + cleanable = CacheGcThrea.binClean(v, () -> LOCK.write(() -> { + c.run(); + cleanable = null; + }, null, null)); } - return ref.item; - } + // 绑定缓存 + cache = refClass.getConstructor(Object.class).newInstance(v); + // 处理完成 + return false; + }); + } + + /** + * 移除缓存 + *

+ * 强制释放缓存内容
+ * 将缓存内容主动加入回收队列 + */ + public + void clear() { + var ref = new Object() { + V item; + }; + LOCK.write(() -> { + // 正在被回收 + if ( (ref.item = cache.get()) == null ) + return; + // 手动释放 + cache.enqueue(); + }, null, null); + } + + /** + *

{@link CacheOb} 子类通用构造工具.

+ *
    + *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • + *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • + *
  • 使用 {@link #build()} 进行构造
  • + *
+ * + * @version 0.0.1 + * @since CacheOb 0.0.1 + */ + @SuppressWarnings("unchecked") + protected static abstract + class Build> { + /** 缓存引用类型 */ + protected Class refernce = SoftReference.class; + /** 并发管理 */ + protected SyLock lockBy = SyLock.newRWLock(); - /** - * 无数据时的数据 - * - * @return 在没有缓存时返回的数据 - */ - @Nullable - protected abstract - V emptyData() throws Exception; - - //----------------------------------- - - /** - * 放入数据 - * - * @param v 数据 - */ - protected - void putdata(@Nullable V v) throws Exception { - var ref = new Object() { - V item; - }; - - var b = true; - while( b ) - b = LOCK.trywrite(Exception.class, () -> { - /* 正在释放 */ - if ((ref.item = cache.get()) == null && cleanable != null) - // 等待释放完成 - return true; - - // 获取对象的回收方法 - if (v instanceof CanClean) { - var c = ((CanClean) v).getclean(); - // 注册回收方法 - cleanable = CacheGcThrea.binClean(v, () -> LOCK.write(() -> { - c.run(); - cleanable = null; - })); - } - - // 绑定缓存 - cache = refClass.getConstructor(Object.class).newInstance(v); - // 处理完成 - return false; - }); - } + //------------------------------------------------------------------------------------------ - /** - * 移除缓存 - *

- * 强制释放缓存内容
- * 将缓存内容主动加入回收队列 - */ - public - void clear() { - var ref = new Object() { - V item; - }; - LOCK.write(() -> { - // 正在被回收 - if ((ref.item = cache.get()) == null) - return; - // 手动释放 - cache.enqueue(); - }); + /** 设置缓存引用类型 */ + @NotNull + public final + B refernce(Class refernce) { + this.refernce = refernce; + return (B) this; } - /*--------------------------------------------------------------------------------------------*/ - - /** - *

{@link CacheOb} 子类通用构造工具.

- *
    - *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • - *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • - *
  • 使用 {@link #build()} 进行构造
  • - *
- * - * @version 0.0.1 - * @since CacheOb 0.0.1 - */ - @SuppressWarnings( "unchecked" ) - protected static abstract - class Build> { - /** 缓存引用类型 */ - protected Class refernce = SoftReference.class; - /** 并发管理 */ - protected SyLock lockBy = SyLock.newRWLock(); - - //------------------------------------------------------------------------------------------ - - /** 设置缓存引用类型 */ - @NotNull - public final - B refernce(Class refernce) { - this.refernce = refernce; - return (B) this; - } - - /** 设置并发管理 */ - @NotNull - public final - B lockBy(@NotNull SyLock lockBy) { - this.lockBy = lockBy; - return (B) this; - } - - @NotNull - public abstract - CacheOb build(); + /** 设置并发管理 */ + @NotNull + public final + B lockBy(@NotNull SyLock lockBy) { + this.lockBy = lockBy; + return (B) this; } + + @NotNull + public abstract + CacheOb build(); + } } diff --git a/src/main/java/fybug/nulll/pdcache/CanClean.java b/src/main/java/fybug/nulll/pdcache/CanClean.java index 56264cc..fbdf6d2 100644 --- a/src/main/java/fybug/nulll/pdcache/CanClean.java +++ b/src/main/java/fybug/nulll/pdcache/CanClean.java @@ -1,8 +1,8 @@ package fybug.nulll.pdcache; -import org.jetbrains.annotations.NotNull; - import java.lang.ref.Cleaner.Cleanable; +import jakarta.validation.constraints.NotNull; + /** *

拥有清理回调的对象.

* @@ -13,8 +13,8 @@ import java.lang.ref.Cleaner.Cleanable; */ public interface CanClean { - /** 生成一个清理回调,在对象被回收的时候会调用该回调 */ - @NotNull - default - Runnable getclean() {return () -> {};} + /** 生成一个清理回调,在对象被回收的时候会调用该回调 */ + @NotNull + default + Runnable getclean() { return () -> {}; } } diff --git a/src/main/java/fybug/nulll/pdcache/MapCacheOb.java b/src/main/java/fybug/nulll/pdcache/MapCacheOb.java index 4312cf2..8262322 100644 --- a/src/main/java/fybug/nulll/pdcache/MapCacheOb.java +++ b/src/main/java/fybug/nulll/pdcache/MapCacheOb.java @@ -1,7 +1,4 @@ package fybug.nulll.pdcache; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - import java.lang.ref.Cleaner; import java.lang.ref.Reference; import java.lang.ref.SoftReference; @@ -9,6 +6,8 @@ import java.util.HashMap; import java.util.Map; import fybug.nulll.pdconcurrent.SyLock; +import jakarta.annotation.Nullable; +import jakarta.validation.constraints.NotNull; /** *

映射缓存通用类.

@@ -23,240 +22,233 @@ import fybug.nulll.pdconcurrent.SyLock; */ public abstract class MapCacheOb { + /** 缓存引用类型 */ + protected final Class> refClass; + /** 数据缓存区 */ + protected final Map> map = new HashMap<>(); + + /** 回收接口存放区 */ + protected final Map cleanableMap = new HashMap<>(); + + /** 并发管理 */ + protected final SyLock LOCK; + + //---------------------------------------------------------------------------------------------- + + /** 构造缓存,指定缓存方式 */ + public + MapCacheOb(@NotNull Class refc) { this(refc, SyLock.newRWLock()); } + + /** 构造缓存,指定缓存方式和并发管理 */ + public + MapCacheOb(@NotNull Class refc, @NotNull SyLock syLock) { + refClass = (Class>) refc; + LOCK = syLock; + } + + //---------------------------------------------------------------------------------------------- + + /** + * 获取缓存数据 + * + * @param key 缓存的键 + * + * @return 缓存记录对象 + * + * @see Enty + */ + @NotNull + protected + MapCacheOb.Enty getdata(@NotNull K key) throws Exception { + // 缓存记录对象 + final var enty = new Enty(); + + // get ref + LOCK.read(() -> { + enty.ref = map.get(key); + // 获取内容 + if ( enty.ref == null ) + enty.val = null; + else + enty.val = enty.ref.get(); + }); + + /* 检查获取的数据 */ + if ( enty.val == null ) { + var b = true; + /* 自旋,直到数据完整 */ + while( b ){ + b = LOCK.write(() -> { + /* 当前是否正在释放 */ + if ( (enty.ref = map.get(key)) == null || (enty.val = enty.ref.get()) == null ) { + /* 扫尾接口是否运行完成 */ + if ( cleanableMap.get(key) == null ) { + // 空数据处理 + enty.val = emptyData(key); + enty.ref = map.get(key); + + // 被彻底释放,完整的空数据 + return false; + } + // 数据不完整,继续等待 + return true; + } else + // 数据完整 + return false; + }); + } + } + return enty; + } + + /** + * 无数据时的数据 + * + * @return 在没有缓存时返回的数据 + */ + @Nullable + protected abstract + V emptyData(@NotNull K key) throws Exception; + + /** + * 更新缓存内容 + * + * @param key 缓存键 + * @param v 缓存内容 + */ + protected + void putdata(@NotNull K key, @NotNull V v) throws Exception { + final var enty = new Enty(); + + /* 检查获取的数据 */ + var b = true; + /* 自旋,直到数据完整 */ + while( b ){ + b = LOCK.write(() -> { + /* 正在释放 */ + if ( ((enty.ref = map.get(key)) != null && (enty.val = enty.ref.get()) == null) && cleanableMap.get(key) != null ) + // 等待释放完成 + return true; + + /* 获取对象的回收方法 */ + Runnable clean; + if ( v instanceof CanClean ) + clean = ((CanClean) v).getclean(); + else + clean = null; + + /* 注册回收方法 */ + cleanableMap.put(key, CacheGcThrea.binClean(v, () -> LOCK.write(() -> { + if ( clean != null ) + clean.run(); + cleanableMap.remove(key); + map.remove(key); + }, null, null))); + + // 放入缓存 + map.put(key, refClass.getConstructor(Object.class).newInstance(v)); + // 处理完成 + return false; + }); + } + } + + /** + * 移除缓存 + *

+ * 强制释放缓存内容
+ * 将缓存内容主动加入回收队列 + * + * @param key 要释放的键 + * + * @return 释放的内容 + */ + @Nullable + protected + V removeData(@NotNull K key) { + final var cac = new Object() { + Reference ref; + V v; + }; + + return LOCK.write(() -> { + // 已在释放 + if ( (cac.ref = map.get(key)) == null || (cac.v = cac.ref.get()) == null ) + return null; + + // 手动释放 + cac.ref.enqueue(); + return cac.v; + }, null, null); + } + + /** 清空缓存数据 */ + public + void clear() { + // 释放 + LOCK.write(() -> { + map.values().forEach(v -> { + // 对象被释放 + if ( v == null || v.get() == null ) + return; + v.enqueue(); + }); + map.clear(); + }, null, null); + } + + /** + *

{@link MapCacheOb} 子类通用构造工具.

+ *
    + *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • + *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • + *
  • 使用 {@link #build()} 进行构造
  • + *
+ * + * @version 0.0.1 + * @since MapCacheOb 0.0.1 + */ + @SuppressWarnings("unchecked") + public static abstract + class Build> { /** 缓存引用类型 */ - protected final Class> refClass; - /** 数据缓存区 */ - protected final Map> map = new HashMap<>(); - - /** 回收接口存放区 */ - protected final Map cleanableMap = new HashMap<>(); - + protected Class refernce = SoftReference.class; /** 并发管理 */ - protected final SyLock LOCK; - - //---------------------------------------------------------------------------------------------- + protected SyLock lockBy = SyLock.newRWLock(); - /** 构造缓存,指定缓存方式 */ - public - MapCacheOb(@NotNull Class refc) { this(refc, SyLock.newRWLock()); } - - /** 构造缓存,指定缓存方式和并发管理 */ + /** 设置缓存引用类型 */ + @NotNull public - MapCacheOb(@NotNull Class refc, @NotNull SyLock syLock) { - refClass = (Class>) refc; - LOCK = syLock; + B refernce(Class refernce) { + this.refernce = refernce; + return (B) this; } - //---------------------------------------------------------------------------------------------- - - /** - * 获取缓存数据 - * - * @param key 缓存的键 - * - * @return 缓存记录对象 - * - * @see Enty - */ + /** 设置并发管理 */ @NotNull - protected - MapCacheOb.Enty getdata(@NotNull K key) throws Exception { - // 缓存记录对象 - final var enty = new Enty(); - - // get ref - LOCK.read(() -> { - enty.ref = map.get(key); - // 获取内容 - if (enty.ref == null) - enty.val = null; - else - enty.val = enty.ref.get(); - }); - - /* 检查获取的数据 */ - if (enty.val == null) { - var b = true; - /* 自旋,直到数据完整 */ - while( b ){ - b = LOCK.trywrite(Exception.class, () -> { - /* 当前是否正在释放 */ - if ((enty.ref = map.get(key)) == null || (enty.val = enty.ref.get()) == null) { - /* 扫尾接口是否运行完成 */ - if (cleanableMap.get(key) == null) { - // 空数据处理 - enty.val = emptyData(key); - enty.ref = map.get(key); - - // 被彻底释放,完整的空数据 - return false; - } - // 数据不完整,继续等待 - return true; - } else - // 数据完整 - return false; - }); - } - } - return enty; - } - - /** - * 无数据时的数据 - * - * @return 在没有缓存时返回的数据 - */ - @Nullable - protected abstract - V emptyData(@NotNull K key) throws Exception; - - //---------------------------------------------------------------------------------------------- - - /** - * 更新缓存内容 - * - * @param key 缓存键 - * @param v 缓存内容 - */ - protected - void putdata(@NotNull K key, @NotNull V v) throws Exception { - final var enty = new Enty(); - - /* 检查获取的数据 */ - var b = true; - /* 自旋,直到数据完整 */ - while( b ){ - b = LOCK.trywrite(Exception.class, () -> { - /* 正在释放 */ - if (((enty.ref = map.get(key)) != null && (enty.val = enty.ref.get()) == null) && - cleanableMap.get(key) != null) - // 等待释放完成 - return true; - - /* 获取对象的回收方法 */ - Runnable clean; - if (v instanceof CanClean) - clean = ((CanClean) v).getclean(); - else - clean = null; - - /* 注册回收方法 */ - cleanableMap.put(key, CacheGcThrea.binClean(v, () -> LOCK.write(() -> { - if (clean != null) - clean.run(); - cleanableMap.remove(key); - map.remove(key); - }))); - - // 放入缓存 - map.put(key, refClass.getConstructor(Object.class).newInstance(v)); - // 处理完成 - return false; - }); - } - } - - /** - * 移除缓存 - *

- * 强制释放缓存内容
- * 将缓存内容主动加入回收队列 - * - * @param key 要释放的键 - * - * @return 释放的内容 - */ - @Nullable - protected - V removeData(@NotNull K key) { - final var cac = new Object() { - Reference ref; - V v; - }; - - return LOCK.write(() -> { - // 已在释放 - if ((cac.ref = map.get(key)) == null || (cac.v = cac.ref.get()) == null) - return null; - - // 手动释放 - cac.ref.enqueue(); - return cac.v; - }); - } - - /** 清空缓存数据 */ public - void clear() { - // 释放 - LOCK.write(() -> { - map.values().forEach(v -> { - // 对象被释放 - if (v == null || v.get() == null) - return; - v.enqueue(); - }); - map.clear(); - }); - } - - /*--------------------------------------------------------------------------------------------*/ - - /** - *

{@link MapCacheOb} 子类通用构造工具.

- *
    - *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • - *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • - *
  • 使用 {@link #build()} 进行构造
  • - *
- * - * @version 0.0.1 - * @since MapCacheOb 0.0.1 - */ - @SuppressWarnings( "unchecked" ) - public static abstract - class Build> { - /** 缓存引用类型 */ - protected Class refernce = SoftReference.class; - /** 并发管理 */ - protected SyLock lockBy = SyLock.newRWLock(); - - /** 设置缓存引用类型 */ - @NotNull - public - B refernce(Class refernce) { - this.refernce = refernce; - return (B) this; - } - - /** 设置并发管理 */ - @NotNull - public - B lockBy(@NotNull SyLock lockBy) { - this.lockBy = lockBy; - return (B) this; - } - - @NotNull - public abstract - MapCacheOb build(); + B lockBy(@NotNull SyLock lockBy) { + this.lockBy = lockBy; + return (B) this; } - /*--------------------------------------------------------------------------------------------*/ - - /** - *

缓存记录类.

- * 记录缓存的引用对象 {@link #ref}
- * 记录缓存的内容 {@link #val} - * - * @author fybug - * @version 0.0.1 - * @since MapCacheOb 0.0.1 - */ - protected final - class Enty { - public volatile Reference ref; - public volatile V val; - } + @NotNull + public abstract + MapCacheOb build(); + } + + /** + *

缓存记录类.

+ * 记录缓存的引用对象 {@link #ref}
+ * 记录缓存的内容 {@link #val} + * + * @author fybug + * @version 0.0.1 + * @since MapCacheOb 0.0.1 + */ + protected final + class Enty { + public volatile Reference ref; + public volatile V val; + } } diff --git a/src/main/java/fybug/nulll/pdcache/MemoryCache.java b/src/main/java/fybug/nulll/pdcache/MemoryCache.java index 6d12c1c..9a82380 100644 --- a/src/main/java/fybug/nulll/pdcache/MemoryCache.java +++ b/src/main/java/fybug/nulll/pdcache/MemoryCache.java @@ -1,11 +1,10 @@ package fybug.nulll.pdcache; -import org.jetbrains.annotations.NotNull; - import java.io.Closeable; import java.lang.ref.Reference; import fybug.nulll.pdconcurrent.SyLock; import fybug.nulll.pdconcurrent.fun.tryConsumer; +import jakarta.validation.constraints.NotNull; /** *

作用于内存中的数据缓存.

@@ -19,46 +18,42 @@ import fybug.nulll.pdconcurrent.fun.tryConsumer; public abstract class MemoryCache extends CacheOb implements Closeable { - /** 构造缓存,指定缓存方式 */ - protected - MemoryCache(@NotNull Class refc) { super(refc); } - - /** 构造缓存,指定缓存方式和并发管理 */ - protected - MemoryCache(@NotNull Class refc, @NotNull SyLock syLock) - { super(refc, syLock); } - - //---------------------------------------------------------------------------------------------- - - /** - * 使用缓存的内容运行 - *

- * 可以避免没有给予缓存对象强引用而导致缓存丢失的情况 - * - * @param run 使用缓存的回调 - * - * @return V - * - * @see #get() - */ - public - V get(@NotNull tryConsumer run) throws Exception { - var i = get(); - run.accept(i); - return i; - } - - /** - * 获取缓存数据 - * - * @return 缓存数据 - */ - public - V get() throws Exception { return getdata(); } - - //---------------------------------------------------------------------------------------------- - - @Override - public - void close() { clear(); } + /** 构造缓存,指定缓存方式 */ + protected + MemoryCache(@NotNull Class refc) { super(refc); } + + /** 构造缓存,指定缓存方式和并发管理 */ + protected + MemoryCache(@NotNull Class refc, @NotNull SyLock syLock) + { super(refc, syLock); } + + /** + * 使用缓存的内容运行 + *

+ * 可以避免没有给予缓存对象强引用而导致缓存丢失的情况 + * + * @param run 使用缓存的回调 + * + * @return V + * + * @see #get() + */ + public + V get(@NotNull tryConsumer run) throws Exception { + var i = get(); + run.accept(i); + return i; + } + + /** + * 获取缓存数据 + * + * @return 缓存数据 + */ + public + V get() throws Exception { return getdata(); } + + @Override + public + void close() { clear(); } } diff --git a/src/main/java/fybug/nulll/pdcache/MemoryMapCache.java b/src/main/java/fybug/nulll/pdcache/MemoryMapCache.java index 2ab1d2b..644ee9c 100644 --- a/src/main/java/fybug/nulll/pdcache/MemoryMapCache.java +++ b/src/main/java/fybug/nulll/pdcache/MemoryMapCache.java @@ -1,12 +1,11 @@ package fybug.nulll.pdcache; -import org.jetbrains.annotations.NotNull; - import java.io.Closeable; import java.lang.ref.Reference; +import java.util.function.BiConsumer; import fybug.nulll.pdcache.err.CacheError; import fybug.nulll.pdconcurrent.SyLock; -import fybug.nulll.pdconcurrent.fun.tryBiConsumer; +import jakarta.validation.constraints.NotNull; import lombok.Getter; /** @@ -22,73 +21,66 @@ import lombok.Getter; */ public abstract class MemoryMapCache extends MapCacheOb implements Closeable { - public - MemoryMapCache(@NotNull Class refc) { super(refc); } - - public - MemoryMapCache(@NotNull Class refc, @NotNull SyLock syLock) - { super(refc, syLock); } - - //---------------------------------------------------------------------------------------------- - - /** - * 获取缓存数据 - * - * @param key 缓存的键 - * - * @return 缓存数据 - */ - public - V get(@NotNull K key) throws Exception, CacheError { - if (isClose()) - throw new CacheError(); - return getdata(key).val; - } + public + MemoryMapCache(@NotNull Class refc) { super(refc); } - /** - * 使用缓存的内容运行 - *

- * 可以避免没有给予缓存对象强引用而导致缓存丢失的情况 - * - * @param key 缓存的键 - * @param run 使用缓存的回调,传入 param key 和 {@link #get(K)} - * - * @return 缓存数据 - * - * @see #get(K) - */ - public - V get(@NotNull K key, @NotNull tryBiConsumer run) throws Exception, CacheError - { - var cache = get(key); - run.accept(key, cache); - return cache; - } + public + MemoryMapCache(@NotNull Class refc, @NotNull SyLock syLock) + { super(refc, syLock); } - //---------------------------------------------------------------------------------------------- + /** + * 获取缓存数据 + * + * @param key 缓存的键 + * + * @return 缓存数据 + */ + public + V get(@NotNull K key) throws Exception, CacheError { + if ( isClose() ) + throw new CacheError(); + return getdata(key).val; + } - /** - * 移除缓存 - *

- * 强制释放缓存内容
- * 将缓存内容主动加入回收队列 - * - * @param key 要释放的键 - */ - public - void remove(@NotNull K key) { removeData(key); } + /** + * 使用缓存的内容运行 + *

+ * 可以避免没有给予缓存对象强引用而导致缓存丢失的情况 + * + * @param key 缓存的键 + * @param run 使用缓存的回调,传入 param key 和 {@link #get(K)} + * + * @return 缓存数据 + * + * @see #get(K) + */ + public + V get(@NotNull K key, @NotNull BiConsumer run) throws Exception, CacheError { + var cache = get(key); + run.accept(key, cache); + return cache; + } - //---------------------------------------------------------------------------------------------- + /** + * 移除缓存 + *

+ * 强制释放缓存内容
+ * 将缓存内容主动加入回收队列 + * + * @param key 要释放的键 + */ + public + void remove(@NotNull K key) { removeData(key); } - // 是否被关闭 - @Getter private volatile boolean isClose = false; + // 是否被关闭 + @Getter private volatile boolean isClose = false; - @Override - public - void close() { - if (isClose()) - return; - isClose = true; - clear(); - } + @Override + public + void close() { + if ( isClose() ) + return; + isClose = true; + clear(); + } } diff --git a/src/main/java/fybug/nulll/pdcache/PDCache.java b/src/main/java/fybug/nulll/pdcache/PDCache.java index ddcfac5..6e7af5a 100644 --- a/src/main/java/fybug/nulll/pdcache/PDCache.java +++ b/src/main/java/fybug/nulll/pdcache/PDCache.java @@ -1,11 +1,10 @@ package fybug.nulll.pdcache; -import org.jetbrains.annotations.NotNull; - import fybug.nulll.pdcache.memory.Cache; import fybug.nulll.pdcache.memory.MapCache; import fybug.nulll.pdcache.memory.TimeMapCache; import fybug.nulll.pdcache.supplier.SCache; import fybug.nulll.pdcache.supplier.SMapCache; +import jakarta.validation.constraints.NotNull; import lombok.experimental.UtilityClass; /** @@ -20,75 +19,75 @@ import lombok.experimental.UtilityClass; @UtilityClass public class PDCache { - /** - * 缓存在内存中的单个数据缓存 - * - * @param vClass 数据类型 - * - * @return CacheBuild - * - * @see Cache - */ - @NotNull - public - Cache.Build Cache(Class vClass) { return Cache.build(vClass); } + /** + * 缓存在内存中的单个数据缓存 + * + * @param vClass 数据类型 + * + * @return CacheBuild + * + * @see Cache + */ + @NotNull + public + Cache.Build Cache(Class vClass) { return Cache.build(vClass); } - /** - * 缓存在内存中的自填充单个数据缓存 - * - * @param vClass 数据类型 - * - * @return SCacheBuild - * - * @see SCache - */ - @NotNull - public - SCache.Build SCache(Class vClass) { return SCache.build(vClass); } + /** + * 缓存在内存中的自填充单个数据缓存 + * + * @param vClass 数据类型 + * + * @return SCacheBuild + * + * @see SCache + */ + @NotNull + public + SCache.Build SCache(Class vClass) { return SCache.build(vClass); } - /** - * 缓存在内存中的映射数据缓存 - * - * @param kClass 键的类型 - * @param vClass 数据类型 - * - * @return MapCacheBuild - * - * @see MapCache - */ - @NotNull - public - MapCache.Build MapCache(Class kClass, Class vClass) - { return MapCache.build(kClass, vClass); } + /** + * 缓存在内存中的映射数据缓存 + * + * @param kClass 键的类型 + * @param vClass 数据类型 + * + * @return MapCacheBuild + * + * @see MapCache + */ + @NotNull + public + MapCache.Build MapCache(Class kClass, Class vClass) + { return MapCache.build(kClass, vClass); } - /** - * 缓存在内存中的自填充映射数据缓存 - * - * @param kClass 键的类型 - * @param vClass 数据类型 - * - * @return SMapCacheBuild - * - * @see SMapCache - */ - @NotNull - public - SMapCache.Build SMapCache(Class kClass, Class vClass) - { return SMapCache.build(kClass, vClass); } + /** + * 缓存在内存中的自填充映射数据缓存 + * + * @param kClass 键的类型 + * @param vClass 数据类型 + * + * @return SMapCacheBuild + * + * @see SMapCache + */ + @NotNull + public + SMapCache.Build SMapCache(Class kClass, Class vClass) + { return SMapCache.build(kClass, vClass); } - /** - * 缓存在内存中依靠时间管理的映射数据缓存 - * - * @param kClass 键的类型 - * @param vClass 数据类型 - * - * @return TimeMapCache - * - * @see TimeMapCache - * @since PDCache 0.0.2 - */ - @NotNull - public - TimeMapCache.Build TimeMapCache(Class kClass, Class vClass) - { return TimeMapCache.build(kClass, vClass); } + /** + * 缓存在内存中依靠时间管理的映射数据缓存 + * + * @param kClass 键的类型 + * @param vClass 数据类型 + * + * @return TimeMapCache + * + * @see TimeMapCache + * @since PDCache 0.0.2 + */ + @NotNull + public + TimeMapCache.Build TimeMapCache(Class kClass, Class vClass) + { return TimeMapCache.build(kClass, vClass); } } diff --git a/src/main/java/fybug/nulll/pdcache/err/CacheError.java b/src/main/java/fybug/nulll/pdcache/err/CacheError.java index f1131da..ffcb4e2 100644 --- a/src/main/java/fybug/nulll/pdcache/err/CacheError.java +++ b/src/main/java/fybug/nulll/pdcache/err/CacheError.java @@ -7,4 +7,4 @@ package fybug.nulll.pdcache.err; * @version 0.0.1 */ public -class CacheError extends Exception {} +class CacheError extends RuntimeException {} diff --git a/src/main/java/fybug/nulll/pdcache/memory/Cache.java b/src/main/java/fybug/nulll/pdcache/memory/Cache.java index 81ca9c7..e691ce6 100644 --- a/src/main/java/fybug/nulll/pdcache/memory/Cache.java +++ b/src/main/java/fybug/nulll/pdcache/memory/Cache.java @@ -1,13 +1,12 @@ package fybug.nulll.pdcache.memory; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - import java.lang.ref.Reference; import fybug.nulll.pdcache.CacheOb; import fybug.nulll.pdcache.MemoryCache; import fybug.nulll.pdconcurrent.SyLock; import fybug.nulll.pdconcurrent.fun.tryConsumer; +import jakarta.annotation.Nullable; +import jakarta.validation.constraints.NotNull; /** *

数据缓存工具.

@@ -63,76 +62,70 @@ import fybug.nulll.pdconcurrent.fun.tryConsumer; public class Cache extends MemoryCache { - /** 构造缓存,指定缓存方式 */ - public - Cache(@NotNull Class refc) {super(refc); } + /** 构造缓存,指定缓存方式 */ + public + Cache(@NotNull Class refc) { super(refc); } - /** 构造缓存,指定缓存方式和并发管理 */ - public - Cache(@NotNull Class refc, @NotNull SyLock syLock) { super(refc, syLock); } + /** 构造缓存,指定缓存方式和并发管理 */ + public + Cache(@NotNull Class refc, @NotNull SyLock syLock) { super(refc, syLock); } - //---------------------------------------------------------------------------------------------- + @Nullable + @Override + public + V get(@NotNull tryConsumer run) throws Exception + { return super.get(run); } - @Nullable - @Override - public - V get(@NotNull tryConsumer<@Nullable V, Exception> run) throws Exception - { return super.get(run); } + @Nullable + @Override + public + V get() throws Exception { return super.get(); } - @Nullable - @Override - public - V get() throws Exception { return super.get(); } + @Override + protected @Nullable + V emptyData() + { return null; } - @Override - protected @Nullable - V emptyData() - { return null; } + /** + * 放入新的缓存 + * + * @param v 缓存的数据 + * + * @return this + */ + @NotNull + public + Cache set(@NotNull V v) throws Exception { + putdata(v); + return this; + } - //----------------------------------- + /** + * 获取缓存构造工具 + * + * @param 缓存内容的类型 + * + * @return 构造工具 + */ + @NotNull + public static + Build build(Class vc) { return new Build<>(); } - /** - * 放入新的缓存 - * - * @param v 缓存的数据 - * - * @return this - */ + /** + *

{@link Cache} 构造工具.

+ *
    + *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • + *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • + *
  • 使用 {@link #build()} 进行构造
  • + *
+ * + * @version 0.0.1 + * @since Cache 0.0.1 + */ + public final static + class Build extends CacheOb.Build> { @NotNull public - Cache set(@NotNull V v) throws Exception { - putdata(v); - return this; - } - - /*--------------------------------------------------------------------------------------------*/ - - /** - * 获取缓存构造工具 - * - * @param 缓存内容的类型 - * - * @return 构造工具 - */ - @NotNull - public static - Build build(Class vc) {return new Build<>();} - - /** - *

{@link Cache} 构造工具.

- *
    - *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • - *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • - *
  • 使用 {@link #build()} 进行构造
  • - *
- * - * @version 0.0.1 - * @since Cache 0.0.1 - */ - public final static - class Build extends CacheOb.Build> { - @NotNull - public - Cache build() { return new Cache<>(refernce, lockBy); } - } + Cache build() { return new Cache<>(refernce, lockBy); } + } } diff --git a/src/main/java/fybug/nulll/pdcache/memory/MapCache.java b/src/main/java/fybug/nulll/pdcache/memory/MapCache.java index c80cbcb..423d975 100644 --- a/src/main/java/fybug/nulll/pdcache/memory/MapCache.java +++ b/src/main/java/fybug/nulll/pdcache/memory/MapCache.java @@ -1,14 +1,13 @@ package fybug.nulll.pdcache.memory; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - import java.lang.ref.Reference; +import java.util.function.BiConsumer; import fybug.nulll.pdcache.MapCacheOb; import fybug.nulll.pdcache.MemoryMapCache; import fybug.nulll.pdcache.err.CacheError; import fybug.nulll.pdconcurrent.SyLock; -import fybug.nulll.pdconcurrent.fun.tryBiConsumer; +import jakarta.annotation.Nullable; +import jakarta.validation.constraints.NotNull; /** *

映射缓存.

@@ -66,87 +65,81 @@ import fybug.nulll.pdconcurrent.fun.tryBiConsumer; public class MapCache extends MemoryMapCache { - /** 构造缓存,指定缓存方式 */ - public - MapCache(@NotNull Class refc) { super(refc); } + /** 构造缓存,指定缓存方式 */ + public + MapCache(@NotNull Class refc) { super(refc); } - /** 构造缓存,指定缓存方式和并发管理 */ - public - MapCache(@NotNull Class refc, @NotNull SyLock syLock) - { super(refc, syLock); } + /** 构造缓存,指定缓存方式和并发管理 */ + public + MapCache(@NotNull Class refc, @NotNull SyLock syLock) + { super(refc, syLock); } - //---------------------------------------------------------------------------------------------- + /** + * 获取缓存数据 + * + * @param key 缓存的键 + * + * @return 缓存数据 + */ + @Override + @Nullable + public + V get(@NotNull K key) throws Exception, CacheError { return super.get(key); } - /** - * 获取缓存数据 - * - * @param key 缓存的键 - * - * @return 缓存数据 - */ - @Override - @Nullable - public - V get(@NotNull K key) throws Exception, CacheError { return super.get(key); } + @Override + @Nullable + public + V get(@NotNull K key, @NotNull BiConsumer run) throws Exception, CacheError + { return super.get(key, run); } - @Override - @Nullable - public - V get(@NotNull K key, @NotNull tryBiConsumer run) throws Exception, CacheError - { return super.get(key, run); } + /** + * 放入新的缓存 + * + * @param key 缓存的键 + * @param val 缓存的数据 + * + * @return this + */ + @NotNull + public + MapCache put(@NotNull K key, @NotNull V val) throws Exception, CacheError { + if ( isClose() ) + throw new CacheError(); + putdata(key, val); + return this; + } - //-------------------------------- + @Nullable + protected + V emptyData(@NotNull K key) { return null; } - /** - * 放入新的缓存 - * - * @param key 缓存的键 - * @param val 缓存的数据 - * - * @return this - */ - @NotNull - public - MapCache put(@NotNull K key, @NotNull V val) throws Exception, CacheError { - if (isClose()) - throw new CacheError(); - putdata(key, val); - return this; - } - - @Nullable - protected - V emptyData(@NotNull K key) { return null; } - - /*--------------------------------------------------------------------------------------------*/ + /** + * 获取缓存构造工具 + * + * @param 键的类型 + * @param 缓存内容的类型 + * + * @return 构造工具 + */ + @NotNull + public static + Build build(Class kc, Class vc) { return new Build<>(); } - /** - * 获取缓存构造工具 - * - * @param 键的类型 - * @param 缓存内容的类型 - * - * @return 构造工具 - */ + /** + *

{@link MapCache} 构造工具.

+ *
    + *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • + *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • + *
  • 使用 {@link #build()} 进行构造
  • + *
+ * + * @version 0.0.1 + * @since MapCache 0.0.1 + */ + public static final + class Build extends MapCacheOb.Build> { @NotNull - public static - Build build(Class kc, Class vc) {return new Build<>();} - - /** - *

{@link MapCache} 构造工具.

- *
    - *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • - *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • - *
  • 使用 {@link #build()} 进行构造
  • - *
- * - * @version 0.0.1 - * @since MapCache 0.0.1 - */ - public static final - class Build extends MapCacheOb.Build> { - @NotNull - public - MapCache build() { return new MapCache<>(refernce, lockBy); } - } + public + MapCache build() { return new MapCache<>(refernce, lockBy); } + } } diff --git a/src/main/java/fybug/nulll/pdcache/memory/TimeMapCache.java b/src/main/java/fybug/nulll/pdcache/memory/TimeMapCache.java index 5e28974..38e3a9c 100644 --- a/src/main/java/fybug/nulll/pdcache/memory/TimeMapCache.java +++ b/src/main/java/fybug/nulll/pdcache/memory/TimeMapCache.java @@ -1,7 +1,4 @@ package fybug.nulll.pdcache.memory; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; @@ -12,8 +9,11 @@ import java.util.concurrent.Executors; import java.util.function.Consumer; import java.util.function.Supplier; -import fybug.nulll.pdconcurrent.ObjLock; import fybug.nulll.pdconcurrent.SyLock; +import fybug.nulll.pdconcurrent.fun.trySupplier; +import fybug.nulll.pdconcurrent.lock.ObjLock; +import jakarta.annotation.Nullable; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NonNull; @@ -50,378 +50,367 @@ import lombok.val; */ public class TimeMapCache { - /** 数据缓存区 */ - protected final Map> map = new LinkedHashMap<>(); - /** 并发管理 */ - protected final SyLock LOCK; - - /** 数据过期时间(毫秒) */ - @Setter protected volatile long dataTime; - - /** 定时器 */ - @Nullable protected final Timer timerRun; - /** 从尾部扫描的数量 */ - @Setter protected volatile int scarrenNum; - - /** - * 回收事件执行线程池 - * - * @since 0.0.2 - */ - @NonNull - @Setter - @Getter - protected ExecutorService GcThread = Executors.newCachedThreadPool(); - - //---------------------------------------------------------------------------------------------- - - /** 构造缓存,使用默认参数 */ - public - TimeMapCache() { this(SyLock.newObjLock()); } - - /** 构造缓存,指定并发管理 */ - public - TimeMapCache(@NotNull SyLock syLock) { this(syLock, 24 * 60 * 60000); } - - /** 构造缓存,指定并发管理和默认过期时间 */ - public - TimeMapCache(@NotNull SyLock syLock, long datatime) { this(syLock, datatime, 5 * 60000); } - - /** - * 构造缓存,指定参数 - * - * @param syLock 并发管理 - * @param datatime 默认数据过期时间 - * @param scarrentime 检查线程扫描间隔,为 0 则不运行线程检查 - */ + /** 数据缓存区 */ + protected final Map> map = new LinkedHashMap<>(); + /** 并发管理 */ + protected final SyLock LOCK; + + /** 数据过期时间(毫秒) */ + @Setter protected volatile long dataTime; + + /** 定时器 */ + @Nullable protected final Timer timerRun; + /** 从尾部扫描的数量 */ + @Setter protected volatile int scarrenNum; + + /** + * 回收事件执行线程池 + * + * @since 0.0.2 + */ + @NonNull @Setter @Getter protected ExecutorService GcThread = Executors.newCachedThreadPool(); + + /** 构造缓存,使用默认参数 */ + public + TimeMapCache() { this(SyLock.newObjLock()); } + + /** 构造缓存,指定并发管理 */ + public + TimeMapCache(@NotNull SyLock syLock) { this(syLock, 24 * 60 * 60000); } + + /** 构造缓存,指定并发管理和默认过期时间 */ + public + TimeMapCache(@NotNull SyLock syLock, long datatime) { this(syLock, datatime, 5 * 60000); } + + /** + * 构造缓存,指定参数 + * + * @param syLock 并发管理 + * @param datatime 默认数据过期时间 + * @param scarrentime 检查线程扫描间隔,为 0 则不运行线程检查 + */ + public + TimeMapCache(@NotNull SyLock syLock, long datatime, long scarrentime) { + LOCK = syLock; + dataTime = datatime; + scarrenNum = 20; + + // 是否运行线程检查 + if ( scarrentime > 0 ) { + timerRun = new Timer(); + timerRun.schedule(new TimeTask(), 0, scarrentime); + } else + timerRun = null; + } + + /** + * 缓存检查任务 + * + * @author fybug + * @version 0.0.2 + * @since TimeMapCache 0.0.1 + */ + protected final + class TimeTask extends TimerTask { + @Override public - TimeMapCache(@NotNull SyLock syLock, long datatime, long scarrentime) { - LOCK = syLock; - dataTime = datatime; - scarrenNum = 20; - - // 是否运行线程检查 - if (scarrentime > 0) { - timerRun = new Timer(); - timerRun.schedule(new TimeTask(), 0, scarrentime); - } else - timerRun = null; - } - - /** - * 缓存检查任务 - * - * @author fybug - * @version 0.0.2 - * @since TimeMapCache 0.0.1 - */ - protected final - class TimeTask extends TimerTask { - @Override - public - void run() { - LOCK.write(() -> { - var now = System.currentTimeMillis(); - var i = 0; - var iter = map.entrySet().iterator(); - // 检查 - while( iter.hasNext() && i++ < scarrenNum ) - CheckVal(iter, now); - }); - } + void run() { + LOCK.write(() -> { + var now = System.currentTimeMillis(); + var i = 0; + var iter = map.entrySet().iterator(); + // 检查 + while( iter.hasNext() && i++ < scarrenNum ) + CheckVal(iter, now); + }, null, null); } - - /*--------------------------------------------------------------------------------------------*/ - - /** - * 放入数据 - * - * @param k 数据的键 - * @param v 数据内容 - * - * @see #putData(Object, Object, long) - */ - public - void putData(@NotNull K k, V v) { this.putData(k, v, dataTime); } - - /** - * 放入数据 - * - * @param k 数据的键 - * @param v 数据内容 - * @param datatime 数据的过期时间,相对于当前 - */ - public - void putData(@NotNull K k, @Nullable V v, long datatime) - { putData(k, v, datatime, null); } - - /** - * 放入数据 - * - * @param k 数据的键 - * @param v 数据内容 - * @param datatime 数据的过期时间,相对于当前 - * @param endrun 数据被回收事件回调,接口传入当前数据,为空则不触发 - * - * @since 0.0.2 - */ - public - void putData(@NotNull K k, @Nullable V v, long datatime, @Nullable Consumer endrun) - { LOCK.write(() -> map.put(k, new Enty<>(System.currentTimeMillis() + datatime, v, endrun))); } - - //------------------------------------- - - /** - * 移除数据 - * - * @param k 数据的键 - */ - public - void removeData(@NotNull K k) { LOCK.write(() -> GcVal(map.remove(k))); } - - /** - * 清除所有数据 - *

- * 不会触发回收事件 - */ - public - void clear() { LOCK.write(map::clear); } - - //------------------------------------- - - /** - * 使用数据 - *

- * 使用读锁进行 - * - * @param k 数据的键 - * - * @return 返回之前保存的数据,如果数据过期返回 null - * - * @see #getData(Object, long) - */ - @Nullable - public - V getData(@NotNull K k) { return getData(k, 0); } - - /** - * 使用数据 - *

- * 如果刷新时间为 0,则使用 {@link SyLock#read(Supplier)} 读锁进行
- * 如果需要刷新数据存活时间,则使用 {@link SyLock#write(Supplier)} 写锁进行 - * - * @param k 数据的键 - * @param newDatatime 数据的新存活时间,从现在开始记录 - * - * @return 返回之前保存的数据,如果数据过期返回 null - * - * @since TimeMapCache v0.0.3 - */ - @Nullable - public - V getData(@NotNull K k, long newDatatime) { - // 运行函数 - Supplier r = () -> { - if (check(k)) { - var v = map.remove(k); - - // 刷新时间 - if (newDatatime > 0) - v.setMaxtime(System.currentTimeMillis() + newDatatime); - - map.put(k, v); - return v.val; - } - GcVal(map.remove(k)); - return null; - }; - - // 刷新时间用写锁,不刷新用读锁 - if (newDatatime <= 0) - return LOCK.read(r); - else - return LOCK.write(r); + } + + /** + * 放入数据 + * + * @param k 数据的键 + * @param v 数据内容 + * + * @see #putData(Object, Object, long) + */ + public + void putData(@NotNull K k, V v) { this.putData(k, v, dataTime); } + + /** + * 放入数据 + * + * @param k 数据的键 + * @param v 数据内容 + * @param datatime 数据的过期时间,相对于当前 + */ + public + void putData(@NotNull K k, @Nullable V v, long datatime) + { putData(k, v, datatime, null); } + + /** + * 放入数据 + * + * @param k 数据的键 + * @param v 数据内容 + * @param datatime 数据的过期时间,相对于当前 + * @param endrun 数据被回收事件回调,接口传入当前数据,为空则不触发 + * + * @since 0.0.2 + */ + public + void putData(@NotNull K k, @Nullable V v, long datatime, @Nullable Consumer endrun) { + LOCK.write(() -> { + map.put(k, new Enty<>(System.currentTimeMillis() + datatime, v, endrun)); + }, null, null); + } + + /** + * 移除数据 + * + * @param k 数据的键 + */ + public + void removeData(@NotNull K k) { LOCK.write(() -> GcVal(map.remove(k)), null, null); } + + /** + * 清除所有数据 + *

+ * 不会触发回收事件 + */ + public + void clear() { LOCK.write(map::clear, null, null); } + + /** + * 使用数据 + *

+ * 使用读锁进行 + * + * @param k 数据的键 + * + * @return 返回之前保存的数据,如果数据过期返回 null + * + * @see #getData(Object, long) + */ + @Nullable + public + V getData(@NotNull K k) { return getData(k, 0); } + + /** + * 使用数据 + *

+ * 如果刷新时间为 0,则使用 {@link SyLock#read(Supplier)} 读锁进行
+ * 如果需要刷新数据存活时间,则使用 {@link SyLock#write(Supplier)} 写锁进行 + * + * @param k 数据的键 + * @param newDatatime 数据的新存活时间,从现在开始记录 + * + * @return 返回之前保存的数据,如果数据过期返回 null + * + * @since TimeMapCache v0.0.3 + */ + @Nullable + public + V getData(@NotNull K k, long newDatatime) { + // 运行函数 + trySupplier r = () -> { + if ( check(k) ) { + var v = map.remove(k); + + // 刷新时间 + if ( newDatatime > 0 ) + v.setMaxtime(System.currentTimeMillis() + newDatatime); + + map.put(k, v); + return v.val; + } + GcVal(map.remove(k)); + return null; + }; + + // 刷新时间用写锁,不刷新用读锁 + if ( newDatatime <= 0 ) + return LOCK.read(r, null, null); + else + return LOCK.write(r, null, null); + } + + /** + * 检查数据是否可用 + * + * @param k 数据的键 + * + * @return 可用为 true + */ + public + boolean checkData(@NotNull K k) { + return LOCK.read(() -> { + return check(k); + }, null, null); + } + + /** 检查数据是否可用 */ + protected + boolean check(@NotNull K k) + { return map.getOrDefault(k, new Enty<>(0, null, null)).maxtime > System.currentTimeMillis(); } + + /** + * 获取数据剩余的存活时间 + * + * @param k 数据的键 + * + * @return 剩余时间(毫秒),过期为 0 + */ + public + long dataHasTime(@NotNull K k) { + return LOCK.read(() -> { + return Math.max(map.getOrDefault(k, new Enty<>(0, null, null)).maxtime - System.currentTimeMillis(), 0); + }, null, null); + } + + /** + * 统一检查并移除过期数据 + *

+ * 通过占用锁并扫描全部数据来彻底剔除已经过期的数据,时间点以函数开始运行的时间点为准。 + */ + public + void trimData() { + LOCK.write(() -> { + long nowtime = System.currentTimeMillis(); + var iter = map.entrySet().iterator(); + // 检查 + while( iter.hasNext() ) + CheckVal(iter, nowtime); + }, null, null); + } + + /** 关闭检查线程 */ + public + void closeTimeTask() { + if ( timerRun != null ) + timerRun.cancel(); + } + + /** + * 关闭检查线程并清除数据 + * + * @see #closeTimeTask() + * @see #clear() + */ + public + void closeTimeTaskAndClear() { + closeTimeTask(); + clear(); + getGcThread().shutdown(); + } + + /** + * 检查并移除已经过期的数据 + * + * @since 0.0.2 + */ + private + void CheckVal(Iterator>> iter, long nowtime) { + // 当前节点 + var v = iter.next(); + var val = v.getValue(); + // 检查是否最大时间 + if ( val.maxtime <= nowtime ) { + // 移除 + iter.remove(); + // 异步执行回收事件 + GcVal(val); } - - /** - * 检查数据是否可用 - * - * @param k 数据的键 - * - * @return 可用为 true - */ - public - boolean checkData(@NotNull K k) { return LOCK.read(() -> check(k)); } - - /** 检查数据是否可用 */ - protected - boolean check(@NotNull K k) - { return map.getOrDefault(k, new Enty<>(0, null, null)).maxtime > System.currentTimeMillis(); } - - //------------------------------------- - - /** - * 获取数据剩余的存活时间 - * - * @param k 数据的键 - * - * @return 剩余时间(毫秒),过期为 0 - */ + } + + /** + * 申请执行当前数据的回收事件 + * + * @since 0.0.2 + */ + private + void GcVal(Enty v) { + if ( v == null ) + return; + // 当前回收事件 + val endrun = v.getEndrun(); + // 线程池执行 + getGcThread().submit(() -> { + if ( endrun != null ) + endrun.accept(v.getVal()); + }); + } + + /** + * 获取缓存构造工具 + * + * @param 键的类型 + * @param 缓存内容的类型 + * + * @return 构造工具 + */ + @NotNull + public static + Build build(Class kClass, Class vClass) { return new Build<>(); } + + /** + *

{@link TimeMapCache} 构造工具.

+ *
    + *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • + *
  • 使用 {@link #dataTime(long)} 指定数据存活时间
  • + *
  • 使用 {@link #scarrentime(long)} 指定扫描间隔时间
  • + *
  • 使用 {@link #scarrenNum(int)} 指定扫描数量
  • + *
  • 使用 {@link #build()} 进行构造
  • + *
+ * + * @version 0.0.1 + * @since TimeMapCache 0.0.1 + */ + @Accessors(chain = true, fluent = true) + public static final + class Build { + /** 并发工具 */ + @Setter protected SyLock lockBy = new ObjLock(); + /** 默认数据存活时间 */ + @Setter protected long dataTime = 5 * 60000; + /** 扫描时检查的数量 */ + @Setter protected int scarrenNum = 20; + /** 扫描间隔时间 */ + @Setter protected long scarrentime = 24 * 60 * 600000; + + /** 构造 */ + @NotNull public - long dataHasTime(@NotNull K k) { - return LOCK.read(() -> Math.max(map.getOrDefault(k, new Enty<>(0, null, null)).maxtime - - System.currentTimeMillis(), 0)); + TimeMapCache build() { + var c = new TimeMapCache(lockBy, dataTime, scarrentime); + c.setScarrenNum(scarrenNum); + return c; } - + } + + /** + *

数据记录对象.

+ * + * @author fybug + * @version 0.0.2 + * @since TimeMapCache 0.0.1 + */ + @AllArgsConstructor + @Setter + @Getter + public static + class Enty { + /** 过期的时间 */ + public long maxtime; + /** 数据 */ + @Nullable public V val; /** - * 统一检查并移除过期数据 + * 回收时的处理 *

- * 通过占用锁并扫描全部数据来彻底剔除已经过期的数据,时间点以函数开始运行的时间点为准。 - */ - public - void trimData() { - LOCK.write(() -> { - long nowtime = System.currentTimeMillis(); - var iter = map.entrySet().iterator(); - // 检查 - while( iter.hasNext() ) - CheckVal(iter, nowtime); - }); - } - - /** 关闭检查线程 */ - public - void closeTimeTask() { - if (timerRun != null) - timerRun.cancel(); - } - - /** - * 关闭检查线程并清除数据 - * - * @see #closeTimeTask() - * @see #clear() - */ - public - void closeTimeTaskAndClear() { - closeTimeTask(); - clear(); - getGcThread().shutdown(); - } - - /*--------------------------------------------------------------------------------------------*/ - - /** - * 检查并移除已经过期的数据 - * - * @since 0.0.2 - */ - private - void CheckVal(Iterator>> iter, long nowtime) { - // 当前节点 - var v = iter.next(); - var val = v.getValue(); - // 检查是否最大时间 - if (val.maxtime <= nowtime) { - // 移除 - iter.remove(); - // 异步执行回收事件 - GcVal(val); - } - } - - /** - * 申请执行当前数据的回收事件 + * 接口传入当前数据 * * @since 0.0.2 */ - private - void GcVal(Enty v) { - if (v == null) - return; - // 当前回收事件 - val endrun = v.getEndrun(); - // 线程池执行 - getGcThread().submit(() -> { - if (endrun != null) - endrun.accept(v.getVal()); - }); - } - - /*--------------------------------------------------------------------------------------------*/ - - /** - * 获取缓存构造工具 - * - * @param 键的类型 - * @param 缓存内容的类型 - * - * @return 构造工具 - */ - @NotNull - public static - Build build(Class kClass, Class vClass) { return new Build<>(); } - - /** - *

{@link TimeMapCache} 构造工具.

- *
    - *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • - *
  • 使用 {@link #dataTime(long)} 指定数据存活时间
  • - *
  • 使用 {@link #scarrentime(long)} 指定扫描间隔时间
  • - *
  • 使用 {@link #scarrenNum(int)} 指定扫描数量
  • - *
  • 使用 {@link #build()} 进行构造
  • - *
- * - * @version 0.0.1 - * @since TimeMapCache 0.0.1 - */ - @Accessors( chain = true, fluent = true ) - public static final - class Build { - /** 并发工具 */ - @Setter protected SyLock lockBy = new ObjLock(); - /** 默认数据存活时间 */ - @Setter protected long dataTime = 5 * 60000; - /** 扫描时检查的数量 */ - @Setter protected int scarrenNum = 20; - /** 扫描间隔时间 */ - @Setter protected long scarrentime = 24 * 60 * 600000; - - /** 构造 */ - @NotNull - public - TimeMapCache build() { - var c = new TimeMapCache(lockBy, dataTime, scarrentime); - c.setScarrenNum(scarrenNum); - return c; - } - } - - //---------------------------------------------------------------------------------------------- - - /** - *

数据记录对象.

- * - * @author fybug - * @version 0.0.2 - * @since TimeMapCache 0.0.1 - */ - @AllArgsConstructor - @Setter - @Getter - public static - class Enty { - /** 过期的时间 */ - public long maxtime; - /** 数据 */ - @Nullable public V val; - /** - * 回收时的处理 - *

- * 接口传入当前数据 - * - * @since 0.0.2 - */ - @Nullable public Consumer endrun; - } + @Nullable public Consumer endrun; + } } diff --git a/src/main/java/fybug/nulll/pdcache/supplier/LockCache.java b/src/main/java/fybug/nulll/pdcache/supplier/LockCache.java index f4b6801..4f7951d 100644 --- a/src/main/java/fybug/nulll/pdcache/supplier/LockCache.java +++ b/src/main/java/fybug/nulll/pdcache/supplier/LockCache.java @@ -1,12 +1,11 @@ package fybug.nulll.pdcache.supplier; -import org.jetbrains.annotations.NotNull; - import java.lang.ref.Reference; import java.lang.ref.SoftReference; import java.util.function.Supplier; -import fybug.nulll.pdconcurrent.ObjLock; import fybug.nulll.pdconcurrent.SyLock; +import fybug.nulll.pdconcurrent.lock.ObjLock; +import jakarta.validation.constraints.NotNull; import lombok.Setter; import lombok.experimental.Accessors; @@ -24,88 +23,82 @@ import lombok.experimental.Accessors; */ public class LockCache extends SCache { - /** 缓存的锁的生成方法 */ - private final Supplier LOCK_SUPP; + /** 缓存的锁的生成方法 */ + private final Supplier LOCK_SUPP; - /** - * 构造缓存,指定缓存方式和缓存的锁类型 - * - * @see #LockCache(Class, Supplier) - */ - public - LockCache(@NotNull Class refc, @NotNull Class Locktype) { - this(refc, new SyLockSupp(Locktype)); - } + /** + * 构造缓存,指定缓存方式和缓存的锁类型 + * + * @see #LockCache(Class, Supplier) + */ + public + LockCache(@NotNull Class refc, @NotNull Class Locktype) { + this(refc, new SyLockSupp(Locktype)); + } - /** 构造缓存,指定缓存方式和缓存的锁的生成方法 */ - public - LockCache(@NotNull Class refc, @NotNull Supplier lockSupplier) { - super(refc, SyLock.newObjLock()); - LOCK_SUPP = lockSupplier; - } + /** 构造缓存,指定缓存方式和缓存的锁的生成方法 */ + public + LockCache(@NotNull Class refc, @NotNull Supplier lockSupplier) { + super(refc, SyLock.newObjLock()); + LOCK_SUPP = lockSupplier; + } - /*--------------------------------------------------------------------------------------------*/ + @NotNull + @Override + protected + SyLock createData() { return LOCK_SUPP.get(); } - @NotNull - @Override - protected - SyLock createData() { return LOCK_SUPP.get(); } + /** + * 获取构造工具 + * + * @return 构造工具 + */ + public static + Build build() { return new Build(); } - /*--------------------------------------------------------------------------------------------*/ + /** + *

{@link LockCache} 构造工具.

+ *
    + *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • + *
  • 使用 {@link #sylock(Class)} 绑定缓存的锁的类型
  • + *
  • 使用 {@link #sylock(Supplier)} 绑定缓存的锁的生成方法
  • + *
  • 使用 {@link #build()} 进行构造
  • + *
+ * + * @version 0.0.1 + * @since LockCache 0.0.1 + */ + @Accessors(chain = true, fluent = true) + public final static + class Build { + /** 缓存引用类型 */ + @Setter private Class refernce = SoftReference.class; + /** 缓存的锁的生成方法 */ + private Supplier sylock = ObjLock::new; /** - * 获取构造工具 + * 设置缓存的锁类型 * - * @return 构造工具 + * @see #sylock(Supplier) */ - public static - Build build() { return new Build(); } + @NotNull + public + Build sylock(Class sylock) { return sylock(new SyLockSupp(sylock)); } + + /** 设置缓存的锁的生成方法 */ + public + Build sylock(@NotNull Supplier syLockSupplier) { + this.sylock = syLockSupplier; + return this; + } /** - *

{@link LockCache} 构造工具.

- *
    - *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • - *
  • 使用 {@link #sylock(Class)} 绑定缓存的锁的类型
  • - *
  • 使用 {@link #sylock(Supplier)} 绑定缓存的锁的生成方法
  • - *
  • 使用 {@link #build()} 进行构造
  • - *
+ * 构造锁缓存 * - * @version 0.0.1 - * @since LockCache 0.0.1 + * @return 锁缓存工具 */ - @Accessors( chain = true, fluent = true ) - public final static - class Build { - /** 缓存引用类型 */ - @Setter private Class refernce = SoftReference.class; - /** 缓存的锁的生成方法 */ - private Supplier sylock = ObjLock::new; - - //------------------------------------------------------------------------------------------ - - /** - * 设置缓存的锁类型 - * - * @see #sylock(Supplier) - */ - @NotNull - public - Build sylock(Class sylock) { return sylock(new SyLockSupp(sylock)); } - - /** 设置缓存的锁的生成方法 */ - public - Build sylock(@NotNull Supplier syLockSupplier) { - this.sylock = syLockSupplier; - return this; - } - - /** - * 构造锁缓存 - * - * @return 锁缓存工具 - */ - @NotNull - public - LockCache build() { return new LockCache(refernce, sylock); } - } + @NotNull + public + LockCache build() { return new LockCache(refernce, sylock); } + } } diff --git a/src/main/java/fybug/nulll/pdcache/supplier/LockMapCache.java b/src/main/java/fybug/nulll/pdcache/supplier/LockMapCache.java index 3b1c76b..46ba885 100644 --- a/src/main/java/fybug/nulll/pdcache/supplier/LockMapCache.java +++ b/src/main/java/fybug/nulll/pdcache/supplier/LockMapCache.java @@ -1,12 +1,11 @@ package fybug.nulll.pdcache.supplier; -import org.jetbrains.annotations.NotNull; - import java.lang.ref.Reference; import java.lang.ref.SoftReference; import java.util.function.Supplier; -import fybug.nulll.pdconcurrent.ObjLock; import fybug.nulll.pdconcurrent.SyLock; +import fybug.nulll.pdconcurrent.lock.ObjLock; +import jakarta.validation.constraints.NotNull; import lombok.Setter; import lombok.experimental.Accessors; @@ -26,93 +25,87 @@ import lombok.experimental.Accessors; */ public class LockMapCache extends SMapCache { - /** 缓存的锁的生成方法 */ - private final Supplier LOCK_SUPP; + /** 缓存的锁的生成方法 */ + private final Supplier LOCK_SUPP; - /** - * 构造缓存,指定缓存方式和缓存的锁类型 - * - * @see #LockMapCache(Class, Supplier) - */ - public - LockMapCache(@NotNull Class refc, @NotNull Class syLock) - { this(refc, new SyLockSupp(syLock)); } + /** + * 构造缓存,指定缓存方式和缓存的锁类型 + * + * @see #LockMapCache(Class, Supplier) + */ + public + LockMapCache(@NotNull Class refc, @NotNull Class syLock) + { this(refc, new SyLockSupp(syLock)); } - /** 构造缓存,指定缓存方式和缓存的锁的生成方法 */ - public - LockMapCache(@NotNull Class refc, @NotNull Supplier syLockSupplier) - { - super(refc, SyLock.newObjLock()); - LOCK_SUPP = syLockSupplier; - } + /** 构造缓存,指定缓存方式和缓存的锁的生成方法 */ + public + LockMapCache(@NotNull Class refc, @NotNull Supplier syLockSupplier) + { + super(refc, SyLock.newObjLock()); + LOCK_SUPP = syLockSupplier; + } - /*--------------------------------------------------------------------------------------------*/ + @NotNull + @Override + protected + SyLock createData(@NotNull K key) { return LOCK_SUPP.get(); } - @NotNull - @Override - protected - SyLock createData(@NotNull K key) { return LOCK_SUPP.get(); } + /** + * 获取构造工具 + * + * @param 缓存的键类型 + * + * @return 构造工具 + */ + public static + Build build(Class kcla) { return new Build<>(); } - /*--------------------------------------------------------------------------------------------*/ + /** + *

{@link LockMapCache} 构造工具.

+ *
    + *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • + *
  • 使用 {@link #sylock(Class)} 绑定缓存的锁的类型
  • + *
  • 使用 {@link #sylock(Supplier)} 绑定缓存的锁的生成方法
  • + *
  • 使用 {@link #build()} 进行构造
  • + *
+ * + * @param 缓存键类型 + * + * @version 0.0.1 + * @since LockMapCache 0.0.1 + */ + @Accessors(chain = true, fluent = true) + public final static + class Build { + /** 缓存引用类型 */ + @Setter private Class refernce = SoftReference.class; + /** 缓存的锁的生成方法 */ + private Supplier sylock = ObjLock::new; /** - * 获取构造工具 - * - * @param 缓存的键类型 + * 设置缓存的锁类型 * - * @return 构造工具 + * @see #sylock(Supplier) */ - public static - Build build(Class kcla) { return new Build<>(); } + @NotNull + public + Build sylock(Class sylock) + { return sylock(new SyLockSupp(sylock)); } + + /** 设置缓存的锁的生成方法 */ + public + Build sylock(@NotNull Supplier syLockSupplier) { + this.sylock = syLockSupplier; + return this; + } /** - *

{@link LockMapCache} 构造工具.

- *
    - *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • - *
  • 使用 {@link #sylock(Class)} 绑定缓存的锁的类型
  • - *
  • 使用 {@link #sylock(Supplier)} 绑定缓存的锁的生成方法
  • - *
  • 使用 {@link #build()} 进行构造
  • - *
- * - * @param 缓存键类型 + * 构造锁缓存 * - * @version 0.0.1 - * @since LockMapCache 0.0.1 + * @return 锁缓存工具 */ - @Accessors( chain = true, fluent = true ) - public final static - class Build { - /** 缓存引用类型 */ - @Setter private Class refernce = SoftReference.class; - /** 缓存的锁的生成方法 */ - private Supplier sylock = ObjLock::new; - - //------------------------------------------------------------------------------------------ - - /** - * 设置缓存的锁类型 - * - * @see #sylock(Supplier) - */ - @NotNull - public - Build sylock(Class sylock) - { return sylock(new SyLockSupp(sylock)); } - - /** 设置缓存的锁的生成方法 */ - public - Build sylock(@NotNull Supplier syLockSupplier) { - this.sylock = syLockSupplier; - return this; - } - - /** - * 构造锁缓存 - * - * @return 锁缓存工具 - */ - @NotNull - public - LockMapCache build() { return new LockMapCache<>(refernce, sylock); } - } + @NotNull + public + LockMapCache build() { return new LockMapCache<>(refernce, sylock); } + } } diff --git a/src/main/java/fybug/nulll/pdcache/supplier/SCache.java b/src/main/java/fybug/nulll/pdcache/supplier/SCache.java index c533f21..7f5be35 100644 --- a/src/main/java/fybug/nulll/pdcache/supplier/SCache.java +++ b/src/main/java/fybug/nulll/pdcache/supplier/SCache.java @@ -1,6 +1,4 @@ package fybug.nulll.pdcache.supplier; -import org.jetbrains.annotations.NotNull; - import java.lang.ref.Reference; import fybug.nulll.pdcache.CacheOb; @@ -9,6 +7,7 @@ import fybug.nulll.pdcache.memory.Cache; import fybug.nulll.pdconcurrent.SyLock; import fybug.nulll.pdconcurrent.fun.tryConsumer; import fybug.nulll.pdconcurrent.fun.trySupplier; +import jakarta.validation.constraints.NotNull; import lombok.Setter; import lombok.experimental.Accessors; @@ -60,95 +59,91 @@ import lombok.experimental.Accessors; public abstract class SCache extends MemoryCache { - /** - * 构造缓存,指定缓存方式 - * - * @since 0.0.2 - */ - public - SCache(@NotNull Class refc) {super(refc); } + /** + * 构造缓存,指定缓存方式 + * + * @since 0.0.2 + */ + public + SCache(@NotNull Class refc) { super(refc); } - /** - * 构造缓存,指定缓存方式和并发管理 - * - * @since 0.0.3 - */ - public - SCache(@NotNull Class refc, @NotNull SyLock syLock) - { super(refc, syLock); } + /** + * 构造缓存,指定缓存方式和并发管理 + * + * @since 0.0.3 + */ + public + SCache(@NotNull Class refc, @NotNull SyLock syLock) + { super(refc, syLock); } - //---------------------------------------------------------------------------------------------- + //---------------------------------------------------------------------------------------------- - @Override - @NotNull - public - V get(@NotNull tryConsumer run) throws Exception { return super.get(run); } + @Override + @NotNull + public + V get(@NotNull tryConsumer run) throws Exception { return super.get(run); } - @Override - @NotNull - public - V get() throws Exception { return super.get(); } + @Override + @NotNull + public + V get() throws Exception { return super.get(); } - //----------------------------------- + /** 创建新的数据 */ + @NotNull + protected abstract + V createData() throws Exception; - /** 创建新的数据 */ - @NotNull - protected abstract - V createData() throws Exception; + /** + * 生成新的缓存 + *

+ * 使用 {@link #createData()} 创建的数据生成 + */ + @Override + protected @NotNull + V emptyData() throws Exception { + // 生成新的数据 + var v = createData(); + // 绑定缓存 + putdata(v); + return v; + } - /** - * 生成新的缓存 - *

- * 使用 {@link #createData()} 创建的数据生成 - */ - @Override - protected @NotNull - V emptyData() throws Exception { - // 生成新的数据 - var v = createData(); - // 绑定缓存 - putdata(v); - return v; - } + /** + * 获取缓存构造工具 + * + * @param 缓存内容的类型 + * + * @return 构造工具 + */ + @NotNull + public static + Build build(Class vc) { return new Build<>(); } - /*--------------------------------------------------------------------------------------------*/ + /** + *

{@link SCache} 构造工具.

+ *
    + *
  • 使用 {@link #createdata(trySupplier)} 绑定数据生成接口
  • + *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • + *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • + *
  • 使用 {@link #build()} 进行构造
  • + *
+ * + * @version 0.0.1 + * @since SCache 0.0.1 + */ + @Accessors(chain = true, fluent = true) + public final static + class Build extends CacheOb.Build> { + /** 数据生产接口 */ + @Setter private trySupplier<@NotNull V> createdata; - /** - * 获取缓存构造工具 - * - * @param 缓存内容的类型 - * - * @return 构造工具 - */ @NotNull - public static - Build build(Class vc) {return new Build<>();} - - /** - *

{@link SCache} 构造工具.

- *
    - *
  • 使用 {@link #createdata(trySupplier)} 绑定数据生成接口
  • - *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • - *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • - *
  • 使用 {@link #build()} 进行构造
  • - *
- * - * @version 0.0.1 - * @since SCache 0.0.1 - */ - @Accessors( chain = true, fluent = true ) - public final static - class Build extends CacheOb.Build> { - /** 数据生产接口 */ - @Setter private trySupplier<@NotNull V, Exception> createdata; - - @NotNull - public - SCache build() { - return new SCache<>(refernce, lockBy) { - protected @NotNull - V createData() throws Exception { return createdata.get(); } - }; - } + public + SCache build() { + return new SCache<>(refernce, lockBy) { + protected @NotNull + V createData() throws Exception { return createdata.get(); } + }; } + } } diff --git a/src/main/java/fybug/nulll/pdcache/supplier/SMapCache.java b/src/main/java/fybug/nulll/pdcache/supplier/SMapCache.java index cd8d386..a1416f5 100644 --- a/src/main/java/fybug/nulll/pdcache/supplier/SMapCache.java +++ b/src/main/java/fybug/nulll/pdcache/supplier/SMapCache.java @@ -1,14 +1,13 @@ package fybug.nulll.pdcache.supplier; -import org.jetbrains.annotations.NotNull; - import java.lang.ref.Reference; +import java.util.function.BiConsumer; import fybug.nulll.pdcache.MapCacheOb; import fybug.nulll.pdcache.MemoryMapCache; import fybug.nulll.pdcache.err.CacheError; import fybug.nulll.pdconcurrent.SyLock; -import fybug.nulll.pdconcurrent.fun.tryBiConsumer; import fybug.nulll.pdconcurrent.fun.tryFunction; +import jakarta.validation.constraints.NotNull; import lombok.Setter; import lombok.experimental.Accessors; @@ -61,86 +60,80 @@ import lombok.experimental.Accessors; public abstract class SMapCache extends MemoryMapCache { - /** 构造缓存,指定缓存方式 */ - public - SMapCache(@NotNull Class refc) { super(refc); } - - /** 构造缓存,指定缓存方式和并发管理 */ - public - SMapCache(@NotNull Class refc, @NotNull SyLock syLock) - { super(refc, syLock); } - - //---------------------------------------------------------------------------------------------- + /** 构造缓存,指定缓存方式 */ + public + SMapCache(@NotNull Class refc) { super(refc); } + + /** 构造缓存,指定缓存方式和并发管理 */ + public + SMapCache(@NotNull Class refc, @NotNull SyLock syLock) + { super(refc, syLock); } + + @Override + @NotNull + public + V get(@NotNull K key) throws Exception, CacheError { return super.get(key); } + + @Override + @NotNull + public + V get(@NotNull K key, @NotNull BiConsumer run) throws Exception, CacheError + { return super.get(key, run); } + + /** 创建新的数据 */ + @NotNull + protected abstract + V createData(@NotNull K key) throws Exception; + + @NotNull + protected final + V emptyData(@NotNull K key) throws Exception, CacheError { + if ( isClose() ) + throw new CacheError(); + + // 生成新的数据 + var v = createData(key); + putdata(key, v); + return v; + } + + /** + * 获取缓存构造工具 + * + * @param 键的类型 + * @param 缓存内容的类型 + * + * @return 构造工具 + */ + @NotNull + public static + Build build(Class kc, Class vc) { return new Build<>(); } + + /** + *

{@link SMapCache} 构造工具.

+ *
    + *
  • 使用 {@link #createdata(tryFunction)} 方法绑定数据生成接口
  • + *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • + *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • + *
  • 使用 {@link #build()} 进行构造
  • + *
+ * + * @version 0.0.1 + * @since SMapCache 0.0.1 + */ + @Accessors(chain = true, fluent = true) + public static final + class Build extends MapCacheOb.Build> { + /** 数据生成接口 */ + @Setter private tryFunction<@NotNull K, @NotNull V> createdata; - @Override @NotNull public - V get(@NotNull K key) throws Exception, CacheError { return super.get(key); } - - @Override - @NotNull - public - V get(@NotNull K key, @NotNull tryBiConsumer run) throws Exception, CacheError - { return super.get(key, run); } - - //-------------------------------- - - /** 创建新的数据 */ - @NotNull - protected abstract - V createData(@NotNull K key) throws Exception; - - @NotNull - protected final - V emptyData(@NotNull K key) throws Exception, CacheError { - if (isClose()) - throw new CacheError(); - - // 生成新的数据 - var v = createData(key); - putdata(key, v); - return v; - } - - /*--------------------------------------------------------------------------------------------*/ - - /** - * 获取缓存构造工具 - * - * @param 键的类型 - * @param 缓存内容的类型 - * - * @return 构造工具 - */ - @NotNull - public static - Build build(Class kc, Class vc) {return new Build<>();} - - /** - *

{@link SMapCache} 构造工具.

- *
    - *
  • 使用 {@link #createdata(tryFunction)} 方法绑定数据生成接口
  • - *
  • 使用 {@link #refernce(Class)} 绑定缓存方式
  • - *
  • 使用 {@link #lockBy(SyLock)} 绑定并发管理
  • - *
  • 使用 {@link #build()} 进行构造
  • - *
- * - * @version 0.0.1 - * @since SMapCache 0.0.1 - */ - @Accessors( chain = true, fluent = true ) - public static final - class Build extends MapCacheOb.Build> { - /** 数据生成接口 */ - @Setter private tryFunction<@NotNull K, @NotNull V, Exception> createdata; - - @NotNull - public - SMapCache build() { - return new SMapCache<>(refernce, lockBy) { - protected @NotNull - V createData(@NotNull K key) throws Exception { return createdata.apply(key); } - }; - } + SMapCache build() { + return new SMapCache<>(refernce, lockBy) { + protected @NotNull + V createData(@NotNull K key) throws Exception { return createdata.apply(key); } + }; } + } } diff --git a/src/main/java/fybug/nulll/pdcache/supplier/SyLockSupp.java b/src/main/java/fybug/nulll/pdcache/supplier/SyLockSupp.java index e3602cf..985abe6 100644 --- a/src/main/java/fybug/nulll/pdcache/supplier/SyLockSupp.java +++ b/src/main/java/fybug/nulll/pdcache/supplier/SyLockSupp.java @@ -15,20 +15,20 @@ import fybug.nulll.pdconcurrent.SyLock; */ final class SyLockSupp implements Supplier { - // 锁的类型 - private final Class LOCK_CLASS; + // 锁的类型 + private final Class LOCK_CLASS; - /** 指定锁的类 */ - SyLockSupp(Class sylock) { LOCK_CLASS = sylock; } + /** 指定锁的类 */ + SyLockSupp(Class sylock) { LOCK_CLASS = sylock; } - @Override - public - SyLock get() { - try { - return LOCK_CLASS.getConstructor().newInstance(); - } catch ( Exception e ) { - e.printStackTrace(); - } - return SyLock.newObjLock(); + @Override + public + SyLock get() { + try { + return LOCK_CLASS.getConstructor().newInstance(); + } catch ( Exception e ) { + e.printStackTrace(); } + return SyLock.newObjLock(); + } } diff --git a/src/test/java/fybug/nulll/pdcache/RunTest.java b/src/test/java/fybug/nulll/pdcache/RunTest.java deleted file mode 100644 index bad6460..0000000 --- a/src/test/java/fybug/nulll/pdcache/RunTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package fybug.nulll.pdcache; -import org.junit.Assert; -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; - -import fybug.nulll.pdcache.memory.memoryTest; -import fybug.nulll.pdcache.supplier.suppilerTest; - -@RunWith( Suite.class ) -@Suite.SuiteClasses( {memoryTest.class, suppilerTest.class} ) -public -class RunTest { - public static PrintWriter from; - public static PrintWriter to; - - public static StringWriter from_s; - public static StringWriter to_s; - - public static - void init() { - from = new PrintWriter(from_s = new StringWriter()); - to = new PrintWriter(to_s = new StringWriter()); - } - - public static - void destruction() throws IOException { - suppilerTest.destruction(); - - from.close(); - from = null; - from_s.close(); - from_s = null; - - to.close(); - to = null; - to_s.close(); - to_s = null; - } - - public static - void check() { Assert.assertEquals(from_s.toString(), to_s.toString()); } -} diff --git a/src/test/java/fybug/nulll/pdcache/memory/CacheTest.java b/src/test/java/fybug/nulll/pdcache/memory/CacheTest.java deleted file mode 100644 index fa4874b..0000000 --- a/src/test/java/fybug/nulll/pdcache/memory/CacheTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package fybug.nulll.pdcache.memory; -import org.jetbrains.annotations.NotNull; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; -import java.lang.ref.WeakReference; - -import fybug.nulll.pdcache.CanClean; -import fybug.nulll.pdcache.PDCache; - -import static fybug.nulll.pdcache.RunTest.check; -import static fybug.nulll.pdcache.RunTest.destruction; -import static fybug.nulll.pdcache.RunTest.from; -import static fybug.nulll.pdcache.RunTest.init; -import static fybug.nulll.pdcache.RunTest.to; - -public -class CacheTest { - private Cache cache; - - @Before - public - void setUp() { - init(); - cache = PDCache.Cache(Object.class).refernce(WeakReference.class).build(); - } - - @After - public - void tearDown() throws IOException { - cache.clear(); - cache = null; - destruction(); - } - - @Test - public - void cache() throws Exception { - CanClean o = new CanClean() { - public @NotNull - Runnable getclean() { return () -> to.println("des:"); } - }; - - from.println(o); - cache.set(o); - cache.get(to::println); - - o = null; - System.gc(); - from.println("des:"); - from.println("null"); - cache.get(to::println); - - o = new CanClean() { - public @NotNull - Runnable getclean() { return () -> {}; } - }; - - from.println(o); - cache.set(o); - cache.get(to::println); - - check(); - } -} \ No newline at end of file diff --git a/src/test/java/fybug/nulll/pdcache/memory/MapCacheTest.java b/src/test/java/fybug/nulll/pdcache/memory/MapCacheTest.java deleted file mode 100644 index 4f43c07..0000000 --- a/src/test/java/fybug/nulll/pdcache/memory/MapCacheTest.java +++ /dev/null @@ -1,72 +0,0 @@ -package fybug.nulll.pdcache.memory; -import org.jetbrains.annotations.NotNull; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; -import java.lang.ref.WeakReference; - -import fybug.nulll.pdcache.CanClean; -import fybug.nulll.pdcache.PDCache; - -import static fybug.nulll.pdcache.RunTest.check; -import static fybug.nulll.pdcache.RunTest.destruction; -import static fybug.nulll.pdcache.RunTest.from; -import static fybug.nulll.pdcache.RunTest.init; -import static fybug.nulll.pdcache.RunTest.to; - -public -class MapCacheTest { - private MapCache cache; - - @Before - public - void setUp() { - init(); - cache = PDCache.MapCache(String.class, Object.class).refernce(WeakReference.class).build(); - } - - @After - public - void tearDown() throws IOException { - cache.clear(); - cache = null; - destruction(); - } - - @Test - public - void cache() throws Exception { - CanClean o = new CanClean() { - public @NotNull - Runnable getclean() { - return () -> to.println("des:"); - } - }; - - from.println(o); - cache.put("asd", o); - cache.get("asd", (k, v) -> to.println(v)); - - // 模拟回收 - o = null; - System.gc(); - from.println("des:"); - from.println("null"); - cache.get("asd", (k, v) -> to.println(v)); - - o = new CanClean() { - public @NotNull - Runnable getclean() { - return () -> {}; - } - }; - - from.println(o); - cache.put("asd", o); - cache.get("asd", (k, v) -> to.println(v)); - - check(); - } -} \ No newline at end of file diff --git a/src/test/java/fybug/nulll/pdcache/memory/TimeMapCacheTest.java b/src/test/java/fybug/nulll/pdcache/memory/TimeMapCacheTest.java deleted file mode 100644 index e3fa320..0000000 --- a/src/test/java/fybug/nulll/pdcache/memory/TimeMapCacheTest.java +++ /dev/null @@ -1,69 +0,0 @@ -package fybug.nulll.pdcache.memory; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import fybug.nulll.pdcache.PDCache; - -public -class TimeMapCacheTest { - TimeMapCache cache; - - @Before - public - void setUp() { - cache = PDCache.TimeMapCache(String.class, String.class) - .dataTime(1000) - .scarrenNum(2) - .scarrentime(500) - .build(); - } - - @After - public - void tearDown() { cache.closeTimeTaskAndClear(); } - - // 获取过期测试 - @Test - public - void getTest() throws InterruptedException { - cache.putData("a", "1", 2000); - cache.putData("b", "2"); - cache.putData("c", "3"); - cache.putData("d", "4"); - cache.putData("e", "5"); - cache.putData("f", "6"); - - Thread.sleep(1100); - - assert "1".equals(cache.getData("a")); - assert null == cache.getData("b"); - assert null == cache.getData("c"); - assert null == cache.getData("d"); - assert null == cache.getData("e"); - assert null == cache.getData("f"); - } - - // 扫描线程测试 - @Test - public - void timeTest() throws InterruptedException { - cache.putData("a", "1", 2000); - cache.putData("b", "2"); - cache.putData("c", "3"); - cache.putData("d", "4"); - cache.putData("e", "5"); - cache.putData("f", "6"); - - cache.getData("a"); - cache.getData("f"); - Thread.sleep(1500); - - cache.LOCK.read(() -> { - assert null != cache.map.get("a"); - assert null == cache.map.get("b"); - assert null == cache.map.get("c"); - assert null != cache.map.get("f"); - }); - } -} \ No newline at end of file diff --git a/src/test/java/fybug/nulll/pdcache/memory/memoryTest.java b/src/test/java/fybug/nulll/pdcache/memory/memoryTest.java deleted file mode 100644 index a619faf..0000000 --- a/src/test/java/fybug/nulll/pdcache/memory/memoryTest.java +++ /dev/null @@ -1,8 +0,0 @@ -package fybug.nulll.pdcache.memory; -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - -@RunWith( Suite.class ) -@Suite.SuiteClasses( {CacheTest.class, MapCacheTest.class, TimeMapCacheTest.class} ) -public -class memoryTest {} diff --git a/src/test/java/fybug/nulll/pdcache/supplier/SCacheTest.java b/src/test/java/fybug/nulll/pdcache/supplier/SCacheTest.java deleted file mode 100644 index be0c5ea..0000000 --- a/src/test/java/fybug/nulll/pdcache/supplier/SCacheTest.java +++ /dev/null @@ -1,56 +0,0 @@ -package fybug.nulll.pdcache.supplier; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; -import java.lang.ref.WeakReference; - -import fybug.nulll.pdcache.PDCache; -import fybug.nulll.pdcache.supplier.SCache; -import fybug.nulll.pdcache.supplier.suppilerTest; - -import static fybug.nulll.pdcache.RunTest.check; -import static fybug.nulll.pdcache.RunTest.destruction; -import static fybug.nulll.pdcache.RunTest.from; -import static fybug.nulll.pdcache.RunTest.init; -import static fybug.nulll.pdcache.RunTest.to; -import static fybug.nulll.pdcache.supplier.suppilerTest.getNowClean; -import static fybug.nulll.pdcache.supplier.suppilerTest.nextClean; - -public -class SCacheTest { - private SCache cache; - - @Before - public - void setUp() { - init(); - cache = PDCache.SCache(Object.class) - .createdata(suppilerTest::getNowClean) - .refernce(WeakReference.class) - .build(); - } - - @After - public - void tearDown() throws IOException { - cache.clear(); - cache = null; - destruction(); - } - - @Test - public - void cache() throws Exception { - from.println(nextClean()); - cache.get(to::println); - - from.println("des:" + getNowClean().toString()); - from.println(nextClean()); - System.gc(); - cache.get(to::println); - - check(); - } -} \ No newline at end of file diff --git a/src/test/java/fybug/nulll/pdcache/supplier/SMapCacheTest.java b/src/test/java/fybug/nulll/pdcache/supplier/SMapCacheTest.java deleted file mode 100644 index f314c22..0000000 --- a/src/test/java/fybug/nulll/pdcache/supplier/SMapCacheTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package fybug.nulll.pdcache.supplier; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.io.IOException; -import java.lang.ref.WeakReference; - -import fybug.nulll.pdcache.PDCache; -import fybug.nulll.pdcache.supplier.SMapCache; - -import static fybug.nulll.pdcache.RunTest.check; -import static fybug.nulll.pdcache.RunTest.destruction; -import static fybug.nulll.pdcache.RunTest.from; -import static fybug.nulll.pdcache.RunTest.init; -import static fybug.nulll.pdcache.RunTest.to; -import static fybug.nulll.pdcache.supplier.suppilerTest.getNowClean; -import static fybug.nulll.pdcache.supplier.suppilerTest.nextClean; - -public -class SMapCacheTest { - private SMapCache cache; - - @Before - public - void setUp() { - init(); - cache = PDCache.SMapCache(String.class, Object.class) - .createdata((k) -> getNowClean()) - .refernce(WeakReference.class) - .build(); - } - - @After - public - void tearDown() throws IOException { - cache.close(); - cache = null; - destruction(); - } - - @Test - public - void cache() throws Exception { - - from.println(nextClean()); - cache.get("asd", (k, v) -> to.println(v)); - - // 模拟回收 - from.println("des:" + getNowClean()); - from.println(nextClean()); - System.gc(); - cache.get("asd", (k, v) -> to.println(v)); - - check(); - } -} \ No newline at end of file diff --git a/src/test/java/fybug/nulll/pdcache/supplier/memoryTest.java b/src/test/java/fybug/nulll/pdcache/supplier/memoryTest.java deleted file mode 100644 index 599c556..0000000 --- a/src/test/java/fybug/nulll/pdcache/supplier/memoryTest.java +++ /dev/null @@ -1,8 +0,0 @@ -package fybug.nulll.pdcache.supplier; -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - -@RunWith( Suite.class ) -@Suite.SuiteClasses( {SCacheTest.class, SMapCacheTest.class} ) -public -class memoryTest {} diff --git a/src/test/java/fybug/nulll/pdcache/supplier/suppilerTest.java b/src/test/java/fybug/nulll/pdcache/supplier/suppilerTest.java deleted file mode 100644 index ab26225..0000000 --- a/src/test/java/fybug/nulll/pdcache/supplier/suppilerTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package fybug.nulll.pdcache.supplier; -import org.jetbrains.annotations.NotNull; -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - -import fybug.nulll.pdcache.CanClean; - -import static fybug.nulll.pdcache.RunTest.to; - -@RunWith( Suite.class ) -@Suite.SuiteClasses( {memoryTest.class} ) -public -class suppilerTest { - private static CanClean canClean = null; - - public static - CanClean getNowClean() { return canClean; } - - public static - CanClean nextClean() { return canClean = new a(); } - - public static - void destruction() { - canClean = null; - System.gc(); - } - - private static - class a implements CanClean { - - public @NotNull - Runnable getclean() { - var s = this.toString(); - return () -> to.println("des:" + s); - } - } -} -- Gitee