From 8f3f24828cd1f1f4270ffe123f5a96aced036921 Mon Sep 17 00:00:00 2001 From: unknown <1056102095@qq.com> Date: Wed, 29 Apr 2015 15:24:21 +0800 Subject: [PATCH] first commit --- .classpath | 7 + .project | 17 ++ bin/CalculateNDCG.class | Bin 0 -> 1595 bytes bin/ControlFormat.class | Bin 0 -> 1697 bytes bin/Fields.class | Bin 0 -> 1019 bytes bin/InsertStrings.class | Bin 0 -> 2669 bytes bin/Sort/FirstSort.class | Bin 0 -> 2974 bytes bin/Sort/OperateData.class | Bin 0 -> 2253 bytes bin/Sort/PostsHot.class | Bin 0 -> 532 bytes bin/Sort/SortWithNewpost.class | Bin 0 -> 6872 bytes bin/Sort/SortWithPostsAndView.class | Bin 0 -> 295 bytes bin/Sort/SortWithTimeModel.class | Bin 0 -> 7638 bytes bin/SplitHugeFile.class | Bin 0 -> 1962 bytes bin/SplitTags.class | Bin 0 -> 4911 bytes bin/StrToDate.class | Bin 0 -> 826 bytes bin/Test.class | Bin 0 -> 651 bytes bin/specification | 16 ++ bin/support/ConnectionSql.class | Bin 0 -> 1405 bytes bin/support/DataHandle.class | Bin 0 -> 1421 bytes bin/support/DateHandle.class | Bin 0 -> 2690 bytes bin/support/ReadBigFile.class | Bin 0 -> 2933 bytes bin/support/Similarity.class | Bin 0 -> 4595 bytes bin/update/StatisticsPostsCount.class | Bin 0 -> 4470 bytes bin/update/UpdateMatch_result.class | Bin 0 -> 2738 bytes bin/update/UpdateRank.class | Bin 0 -> 3118 bytes bin/update/UpdateStar.class | Bin 0 -> 3079 bytes bin/update/UpdateTableColumn.class | Bin 0 -> 2047 bytes bin/update/UpdateTagPostsNum.class | Bin 0 -> 2413 bytes .../Update_match_result_proj_star.class | Bin 0 -> 4072 bytes bin/update/Update_match_result_rank.class | Bin 0 -> 3787 bytes bin/update/V$1.class | Bin 0 -> 684 bytes bin/update/V.class | Bin 0 -> 1100 bytes src/CalculateNDCG.java | 48 ++++ src/ControlFormat.java | 76 +++++ src/InsertStrings.java | 84 ++++++ src/Sort/FirstSort.java | 105 +++++++ src/Sort/PostsHot.java | 17 ++ src/Sort/SortWithNewpost.java | 215 ++++++++++++++ src/Sort/SortWithPostsAndView.java | 12 + src/Sort/SortWithTimeModel.java | 263 ++++++++++++++++++ src/SplitHugeFile.java | 35 +++ src/SplitTags.java | 159 +++++++++++ src/StrToDate.java | 14 + src/Test.java | 26 ++ src/specification | 16 ++ src/support/ConnectionSql.java | 27 ++ src/support/DataHandle.java | 29 ++ src/support/DateHandle.java | 126 +++++++++ src/support/ReadBigFile.class | Bin 0 -> 838 bytes src/support/ReadBigFile.java | 71 +++++ src/support/Similarity.java | 91 ++++++ src/support/StringHandle.java | 5 + src/update/StatisticsPostsCount.java | 101 +++++++ src/update/UpdateRank.java | 214 ++++++++++++++ src/update/UpdateStar.java | 78 ++++++ src/update/UpdateTableColumn.java | 53 ++++ src/update/UpdateTagPostsNum.java | 53 ++++ src/update/Update_match_result_proj_star.java | 179 ++++++++++++ 58 files changed, 2137 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 bin/CalculateNDCG.class create mode 100644 bin/ControlFormat.class create mode 100644 bin/Fields.class create mode 100644 bin/InsertStrings.class create mode 100644 bin/Sort/FirstSort.class create mode 100644 bin/Sort/OperateData.class create mode 100644 bin/Sort/PostsHot.class create mode 100644 bin/Sort/SortWithNewpost.class create mode 100644 bin/Sort/SortWithPostsAndView.class create mode 100644 bin/Sort/SortWithTimeModel.class create mode 100644 bin/SplitHugeFile.class create mode 100644 bin/SplitTags.class create mode 100644 bin/StrToDate.class create mode 100644 bin/Test.class create mode 100644 bin/specification create mode 100644 bin/support/ConnectionSql.class create mode 100644 bin/support/DataHandle.class create mode 100644 bin/support/DateHandle.class create mode 100644 bin/support/ReadBigFile.class create mode 100644 bin/support/Similarity.class create mode 100644 bin/update/StatisticsPostsCount.class create mode 100644 bin/update/UpdateMatch_result.class create mode 100644 bin/update/UpdateRank.class create mode 100644 bin/update/UpdateStar.class create mode 100644 bin/update/UpdateTableColumn.class create mode 100644 bin/update/UpdateTagPostsNum.class create mode 100644 bin/update/Update_match_result_proj_star.class create mode 100644 bin/update/Update_match_result_rank.class create mode 100644 bin/update/V$1.class create mode 100644 bin/update/V.class create mode 100644 src/CalculateNDCG.java create mode 100644 src/ControlFormat.java create mode 100644 src/InsertStrings.java create mode 100644 src/Sort/FirstSort.java create mode 100644 src/Sort/PostsHot.java create mode 100644 src/Sort/SortWithNewpost.java create mode 100644 src/Sort/SortWithPostsAndView.java create mode 100644 src/Sort/SortWithTimeModel.java create mode 100644 src/SplitHugeFile.java create mode 100644 src/SplitTags.java create mode 100644 src/StrToDate.java create mode 100644 src/Test.java create mode 100644 src/specification create mode 100644 src/support/ConnectionSql.java create mode 100644 src/support/DataHandle.java create mode 100644 src/support/DateHandle.java create mode 100644 src/support/ReadBigFile.class create mode 100644 src/support/ReadBigFile.java create mode 100644 src/support/Similarity.java create mode 100644 src/support/StringHandle.java create mode 100644 src/update/StatisticsPostsCount.java create mode 100644 src/update/UpdateRank.java create mode 100644 src/update/UpdateStar.java create mode 100644 src/update/UpdateTableColumn.java create mode 100644 src/update/UpdateTagPostsNum.java create mode 100644 src/update/Update_match_result_proj_star.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..33044e9 --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..3c6aebd --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + Ossean + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/bin/CalculateNDCG.class b/bin/CalculateNDCG.class new file mode 100644 index 0000000000000000000000000000000000000000..3352795c3fd0009e8255a905052372476f5ec766 GIT binary patch literal 1595 zcma)6O>Y}j6g|)LX?r|LlT2f`b=w3AjvW$`lmRDA1tcOeN*jq(jYL4{#F?hkPCb$1 zlohbC6bT8`9TF?DA)89jO+g4{4-0+*|A8&4YR-E$36;92W%=Fr=H7SiIp>c5c=qcN zfEmnNND1T?g1EjH2d(h>;=+;zU7-JN@F19sgU0sc%I4j$-V!jcM2)C*RX{6^-4xIl zlC3ZU4QU4kOo6`Ts1aV@yT2JWZv>lhC@`>`)PwkD(2V51cc{1SM7uKkInX%)o4FgZ z0fBO9efgw;)mAfVY|p*ms5Z8kfxsyT0~lmW+d=83!zftD3%Do9 z*Mim^2WN1Wq~m0p2&F{{IgFx%^SHp{o#ZnCqqN9#QfP)jyqYwr*5C`;WkR$S2HgbF z6c9CD*-(@P%QY40kyEp8a)_>G zR+GJEJ^Ub2_CM$Fge=AgJJXclIwQ^ve=Y7OxeBgE`DfUV8Kme4)MFWE89Utst~u`L z6Z-heV(~5W`gr!xt?F*obgOo`GG2Uw{@IM?XAd!wHwzgrJF!26p{(D`fp$j^G&V(dFb{g$88eD@Gjp6fX~-@$C>I(eJrUXF$5`nHd6a{s%@ zZo7in*@MoXc{6V(pH%f9*^{PtypMjyI(L$?i8T8jfQ>w(8LsnW_#T-pk=rtveMCMV z;}kx{AU@}QAD+^nt++qzX+Xxfs3euqD5I2A0k7ayB5C*3=%5SdY?@xAPsG)c6(Jw5&e(|+1Zr@n_% zFg;saIYdDQl)UJrJuBXl7JQ>`t+Z|7*`9vT`MqHN#H+hnPqS;FK;CD_^DNanhanWX zJ5N0>ki$hxQLD>T>_eX4;HjLi+uin#wOu>bcI{Z(wVt**R^d|>od{jc4C2(3q9)N6 zlzJBbDCU)BHZd;YZC0d}dZW-gZ0LXL3CcJnsNPc)#6R$)lYD=>;^9kj(LL0# z+|xh6C_ZXyqBzdk{X6xD54-eFbHu<#44Uf@++{pW3nj&J_mX3Z1zK7qgp_MmjZcc> WAcsLyZQ9VD!Vq?fIdjZP;mW@)76^F& literal 0 HcmV?d00001 diff --git a/bin/ControlFormat.class b/bin/ControlFormat.class new file mode 100644 index 0000000000000000000000000000000000000000..a35e6594f3062d3c778ca952b2dbb769c178485d GIT binary patch literal 1697 zcmZ`(QBxaL7(F-H>~7*BA+Rl}En-`N5GWEAZPHL03MD0gk`~K!Mkgc-EG`MN*`W2! zvCjDBvon3^OL?t6q>fJe>ezqa-|*1~@!Z|C7QrFhyZ8IPJ>R+K+`G^J{^c2fcX3BU zNT6%BQTN=2Gv9D`E1m{LAih)CuS__V`qsqC#*S6>1k@{b-S(yh!Xv3Q0cEyPvtkG% zY9Intpu1$(t>xD4hUMO>Y&e!cqSUBXoVAK;%XKHHc-wYURv&4a6ELdVY-a@|1cpaS z|8gjMu3g{CrS2Y&#n6LZ4T&S1gL(sfFiG68>RaBnPrNA0PaEh*QXtxFZ8Uvkfm0*J zV(KJxfj11CMYlkV{A!L>Xw>fM7!VMH5^T`GTQVDI?m4!n;{p@;DBi}fh9Neew=JjE zG%$h`SDXGyp!bBG=txu6ddqQG=vvi=Tay|dQ-Mr^tYjjf1&c}Uj~iw8;>%dZFReHM z2c~xTZ`1IySE+u!RN3=A(U8({nLChpdAX;Yfh))p#;(__FIP4N%#++G>bOeZR=%iP z?(L@K7HfG8*91=gmvW(HJ2lId(6a`vV~)`K6{lrM=%H7kgTt0P(TN${kVkFdf7qk{8#>$PBTeaqG|B@WJ2bZLDJWw=~7Ze=X1}aC5 zs|n76b7b@h^dI>ULX4wK1849WM*(glm&J1^h%)vd{Tm|UaXPN0+lZ^R zHcpjB`FLh&ESyQ4Yvax3@n=&?+N z;%nsa9rE~|^AEV{>$B;jKj`Q~H84gzLHuuUiI^dF`HGk+@)*KC-oYewo5p+Wk)jpj zM3=o)W{QkXQriNf@AFB=w`3i}rpW#dqUs^>bqzv8kA@HUlV)(hAumJpNTQQxu0Q%0 z_-5$jH%;jxzes_v_?`UZ;aE&3K5QeKPba21O{dSEQ>3?9C7o1!=YGY^y0qgl(TAJLvXYPeCX>O=XjLn`Q5yMK`h`hH@|?JzN8C5`A%mqL^@ZuycfFn-&YRA7x83E`7}0QVA5(EtDd literal 0 HcmV?d00001 diff --git a/bin/Fields.class b/bin/Fields.class new file mode 100644 index 0000000000000000000000000000000000000000..8c24a972cf764a96bc0baa82e5afcbc5edc86cdb GIT binary patch literal 1019 zcmY+CTTc@~7>3{JaocWbnYMsuJRzV`6%QzQfR-kj21vFx*>JVABP`kOlHDn!CMI5a zEq7DDGPO zR@JfG?dtm0uINY#zX-z&rOoDX)R4aIZZ9%qqi}1mCm3RzD-7CF$FW^oK4OSZ&$Jm5 zHLoku$p2>_8E7cbt*2cLqhz(=1yUKQeThylcRFHEite%-90*^j6$ZWL3rpIbTeqap zFwT%PI-XC<6AYQQEe>j4-<29pQRWq|JJ4{3A-8_u3jcW!*_UoCB zv0Ar-J;xfXSv|78NO_M!QQpf#i{*~A_iZ_d)GJg?%a#sZnW6M8Ydg?zmC{Eo3@f{? zy6}2E;mV;>Wym+Ieb2Y07)m!8xH{CQQ4Un~-6+L8O?bod>8={c9U5EB@q(l1Jt`|~ z^`G)HV7RX%iIiF`>PSOlC^T(Xto3_a!f#ny4*fme^g5Q)wtQRdhhl0e{Fhn8@kGZX zWT`E=V+T}4GkQ4c5g1`-BNq7_ag^U6a(;_g;xd?_f9y=JpOBC>m;;&J}8#?o!?@_@AjN>CF@QGrF^nDn*64dOYDWOVVMoMz_D;^)GO@(4QyrM@3u#6Qt$WSB3 GQ2zrH2h{=q literal 0 HcmV?d00001 diff --git a/bin/InsertStrings.class b/bin/InsertStrings.class new file mode 100644 index 0000000000000000000000000000000000000000..60abf6d538b15f75ee964c18e59bc80dcfd19c67 GIT binary patch literal 2669 zcmZ`*TW}Lq82(O^bd$|ippZhbNCAZeTEaz&He3r7gXLN*RzO{nQwVH#!)Ak^paMlf zMZDr|#u3qB#y5OusU4W{$r*X}!5Lp1eel^CXMEB6olRO2S|`)9=lr+xpYOl*$A7=O z17IaS)=(o*m$nPi^}0PbXCE$T2ntL+YMwBYmT4bO?mTox`0tK-JG*Mr&-5T#FWns0LCMj(JT=5oYFG{X2cT{R8u02iv=QyW?#J!52J<7ttWY@`X)3i z6KL=O%sI)9Vqc$hWpVcfixrCbyyJSwO^$6d|8kDqecTFT14H5z3evQ7 ztX21|#U=xru|+`7jEgcK#t<$Xw<>I;qS%VGh9?B3`_5Oh4Q#`c#6R!Kyy?nr&-7%! zw3+?ODgiHNV;OK|VpmBaJFdZKCb8YX4nOiPu~g-uVHXpfPx4&H>U7+G)6=mN5w&z1 z*o&tKYUT*bPL{X=izd5xk~)ZBA9^)BO?*0Y(#jSLJcIp2rO!X@J(Xug*6i;H;~G`HY@ifD%RF4_3(9hf?YpgaJ;^~RCQ4)6y1B>68}zjRI%vp~GE?-V z&)^f|iT%ENCk(uxl=O@xO?O=Flz|r&Ih3)Sf>dd7O2-+zqT%JS-0%U}axx?HD*X(+ z>bJQ(yCj`8GspJ2W`>}K`-LZ{w;+$!}$B`*8( zV_*bmnH8K?emX@J2ceKu`6Ov=)_D0;S1sFVP*nrNR+6YrbFyplY{E_Vm=l6VnW(zP zDrFNd=KIRls)3X+xhghbAnLEa08e#12|R!)T&Wzm$kia}+6boh*4GbVMoVDDAZFG- z$Yl_7cC_4S3kBM0gKgRk%u_J3}Mv}+Ug%4LVLS5g0;Q%>xZy$5FPE|#&GK} zI&07#Y19VMwXd|^z~vF_>>a}H#^50KwClmP=nZs#i=J3?<)>KDsK=r!>JNO4nT?TH z)IZ(Av%|;+a0BzlX~Q_G2-B(wjget6c?O~)7LD=6*G9jI)eh8(X@Nh!LQHXw3+z+h zB7@jg>$}w39{gd{zK^MnCj}bA!+1&XBE4Nx!l!RCVAsV}@d;}#z?lGijzwG>FpIw? z4&S+$&8gRf4g7ZDA>>GLm^J75y@Ca}PVQ|i#9iwBggAah0>7gLf1(wCbFvAn5>c!c zO`Jt@(Jop!aF%hjtiwjJ1+8K?Hi-k+EV7&($IvNkB*ZDC#aV0<7dZv4pi5lE4)Ga# z_7~{(6Yooob0$|g@zm}t&Z)%Y?mPyV$+N^ITp%q#U*5oL+y%u6dh74_Pr(Jej*HCp zx#AoyaaYTsznGFLaV^S~cDL~}-o#s^-R18x-bR>j{GRWA2NAyTG~VTHI{v}|Un5E{ zLwFDGQ{w}ocoub|geR;)Xqd0zL#_~n1ap=&jN%~lN)DNVa!CzaH8xcIgXvTe3#Zma dl$9!3TB(p6rSDp$DYDg-XH>Obr6V=?=s$SEdS3tl literal 0 HcmV?d00001 diff --git a/bin/Sort/FirstSort.class b/bin/Sort/FirstSort.class new file mode 100644 index 0000000000000000000000000000000000000000..1f5024e7ef1fe407f8c5aa2a4f03dffdbbdb45a1 GIT binary patch literal 2974 zcma)8Yf}?f7=AWv*d#27L9o$kv04QSrd4Y#P>Z4{Z2%#P#Y1%`wD#K`48ZhRXzr@~rI=)~0puplOcSjx{xs)iOHG zwlyV|DoJ{dkxjQZ=S4ZsFyjfs_2?Q-8tJU&9ATcL&9Q{ zip{u3LL^lRC1HJ2p*i=0xhzL}6}Dijf_sbgm8(^3!+kt}l%s2&p7gk6^em68VR^Wc zoQ>{as@rirlrzk6-3g(Yj;?O9y~ff}G)_2HrZIx;*dUe`6|LAsPH48RXU8S9uGZ%Y zkP9i=MTiGfJc!*ALY|dBR|)Hi<@&rUoOTuVVxNMCNGHEy(R!&B6%S*-1XZ8WQ#nr` z$mz}{2~Bq{MtBeEZqD?Qx<^>s(4l|?T8drLs(2J+dzh>&7FgfZQ#haU3OjK~!9h;a z5_tq~RCM7m=S3SQLS;V~!fLhD`4f(o;xL3gF?wQ{#5mr513#@pfxQV23}@S!j~2jt13h;?}xgE^2_6rUA#cH<+GK> zf7Mx*Q0>FetJ(g&qhPG;QY)UQs+ne&l_O}JYNAm>)KxIS;+7~kkSOUwm?Y;inwOd! zagB^^@^mCjsi?u4Ds;kBkpV#q8J_NFp5-i?M8E8wf}8}j;V8IJBw(3V&_ZBWHWdZt zD9EuN{|fE5MH2n6=4lal*bwG2qv8@SOQ_Pa?nT}4J0#paLidb{XN4|eTdwE&Dj|Me z#S20lbW@h23&~3=UKWz-32oYP*h|UwRTZxZO?cYSFZ$9DuCm`En4*q1RJ@6|m?meB z7s?YbtmI&ipu3HCRJ<#uK$+CsJ`RF{_xMT3JI7D@F$T5l`3SDz197>2C}GDc(N@N9 z=5>1wAFKF8j7Y@F!<7`=EYPwHby6=}nhD-;mMxGK({nr8v@A3y3gciVR#Z!qLXBlP z?m$^NqZy=4L(`enyI^I4Xy2D#XS;c5owcS@*EN^zp;#Z zoWm$@P}whdH_HPKA;kN+9!IbV-R$isui|68^LvosbBLGkIqt^LhcpKK<_77(!VArb z-2es|Jp>I&oM4OfTu;)sf-yUB3Qsa)9J??~yCCCl#c7-&U}Jnc%lI;$VnhL2KE?=R zj8d`>@-3F4D3BCr3OW^RQLxwFw*fV`PzQOrQrPv1gCH{)W1KO>+37yyt=v~qVpeqQ zjHc&c^tLR3gzcL}Cjqx4{0&WD?hVJ}c}x@R;P1F7mZwL>`kcSM=&!GgcEp0wD;wwV z`YAfUEl~e+5!Z&J>FAYtyq|~tBSDYlXrE+NLkJU-TB1@%L^czPW}pwcm)CT0Qc0H$yim)TR8J?7D_rDq18679{{jn9a&%!oU19iJ253HJO2zNAcG z+`#;KPl0jX^DBCeQdf<@P5$@uVYWMH_BFm?BEiy08VC5STZBZmemjTnW)Vt|l0V#_ z3CO2vqFmwgD#~17brIrU!~9XYi%vvthQN>biO(8Zoh3mfKR5q@_bSlEVf{>H0KfbP DDJRi! literal 0 HcmV?d00001 diff --git a/bin/Sort/OperateData.class b/bin/Sort/OperateData.class new file mode 100644 index 0000000000000000000000000000000000000000..be6cab8ba0ce8949a6b0d797d95ca689d0acb1d8 GIT binary patch literal 2253 zcmZ`)O;;306umXm(9KLMii#Rh$M2bO6eC8Xh(TU)UT};)hs@JdHyZ6?cfBt*%H-H}eq$4A+t?CC+ z_h?-PRwM_k$kL&4cg~u(x?Rhg=^mY$lXfJa*}mrq>>7@b!Y6KbKR0;f_+GC-TVzeS z(z9w(pd;~#Kd(lC?08OeMIc)&jWN4^e_G~{#ZD93u-!nXfLXI5dv-E(YIRq(L12#w z9fm;ru;a;FjoOq9?y9U+#=dR2V^-j(b-JlVvreeaUWbU)>?&@qu{5URAdkXEy{pIaYPMgOuUP;0?y4V)0a((y43^PURKZ6dnbBtzh7~!1ltztPEtKsmi`Q1~91O1{rVW+PvGu zhxmw+l8e%AMDlh+244yk-wvV5{EiG8Zd8>~Zyq->tmEU2v74tRMsSM~_T(aKr=BO2 z`zI!D;|}?nkMJo=Kh7`1SP2`YQ)|d%1vBphoNvsJITNCRu6Ya>WvOYI4iS2x5 zw(Ey{CKhZRQ){He)ZJLLWnH~x6VuAIz0P+Vv3~pU-N3T>MlvCj*tssrCN^X@%W~-v z@VRX8XjVuM!3b&Zc=bM>ZHccLvFh=|)4?{gp#iN)E!U_|r#(t3WRp^Rhe{I$0s%d7 zB+pE^r4Y)9<~)-u^c9qh7u8E3dtC%{Qy+AD=Wws3sN9d_eI`w&R&x$1|CZ zXYw4+WSO&y!q&%l9klw8p#|j2&#|N2v1n(QZxc z`?U4cen8tu?N2K!cqs4(j1eaD#WR-DgFhL_V(AKkK_UfO2?YBHK^Hv^5VwPPNLC)< z5b8Kg0UW{4IEr6!48OBWKShyoN?1k(FK{}B?n=zt%M>~SrCJ|v>_Y>Rkur>U4>R1$ zay5)uIJ|e6zd1bSsmn}C$gVPYiw>cqreh!;Zvw0QER*c2BTHjopQ$A@|I3hyoADUl zCmY}miEB(ogGSdf7G4LuNsWS>;D43DeT6+?)1In5;+B2Nd(N^yjW&Th9ETo1l#2yBHMaitj1d48K2~g3?FHDxfq*&|^@v7?e(k VRR-3Q@)a;K1kC9N-jKnM{{wbq_5A<< literal 0 HcmV?d00001 diff --git a/bin/Sort/PostsHot.class b/bin/Sort/PostsHot.class new file mode 100644 index 0000000000000000000000000000000000000000..f6e655829633583b842b82f974ea914135799120 GIT binary patch literal 532 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 Rr5gE`|5ez^J5-au{9j+nxx@ef literal 0 HcmV?d00001 diff --git a/bin/Sort/SortWithPostsAndView.class b/bin/Sort/SortWithPostsAndView.class new file mode 100644 index 0000000000000000000000000000000000000000..bc8199feff9f85382b664841dca6c6914b2eadec GIT binary patch literal 295 zcmZ{f!D_-l5QhJWiLt5G;7xk!&GujpJyrw}dJ0ug((@)Rx)QUHtoFG)2_AfaK9qDe z^dxxsX8)OG_~!R|z5sYf=))oO7rHc&#kVq>xvoq#DOQP+KR#SSxD^Kx<)TV!Z literal 0 HcmV?d00001 diff --git a/bin/Sort/SortWithTimeModel.class b/bin/Sort/SortWithTimeModel.class new file mode 100644 index 0000000000000000000000000000000000000000..08c47b7e58a9f05be602f79f01436543761e1cb0 GIT binary patch literal 7638 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 literal 0 HcmV?d00001 diff --git a/bin/SplitHugeFile.class b/bin/SplitHugeFile.class new file mode 100644 index 0000000000000000000000000000000000000000..79be6106acd7cee496e422aeafd05954094754c7 GIT binary patch literal 1962 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 On?{`wLe>YG(EkhjFO;hQ literal 0 HcmV?d00001 diff --git a/bin/StrToDate.class b/bin/StrToDate.class new file mode 100644 index 0000000000000000000000000000000000000000..4b1347a687261183827006f2484b7df53ad39b9e GIT binary patch literal 826 zcmZuv!EzEo6zqY8fei^rf(XGFH7X<_9P|X17d4dw!~+yn9*1R(8-b;k!HQqx!HZs! zDy{MZ{3x|&7eTG;VP@XEe*L=V?T?>dzXN!TBZ-(mx~qep|3Yb3!V<`xtM{rgQj@dB ztHHVJXo2KYZ{q1^0`Y3CFJL|Qhpvq{(itR>6v(!{iF-O958R-q1|wG>-}W6f>Z`yr z@#50bZ@rnoT6@{B#qP5|-39il?NxJvyvbRs7G2G?H)j^-iZg9PXZ+G{@uSY-S^ef>C@^pm1HMzCql|poFYIVyc1}U2fyH zM1_niWiKxrcd9*qlEF@Be@dmgtCjPv7bu7J<1}R+VO6tmV^YI60+lFrtpPrYHKZMm z;(zY~g4cz=c$ZpOwH`|7sA>4#619JZ87YuB5ZDNHEuU1t?)vkI}b4Y}9( z{1vu3;`H#~62;Sxu$xxNx5R7%wKC8a;p{#sgWP!6nd=w)nriNTP{9z#nCt zEkq7_HJi-Ne6#b-%(tIkZyx|IP*ad#NVVKBQjlWE5BW2%kGMCe-*ty>FJj1C3Qt5= z3`xsw)7xvm@9IcGGmu7xA?FCsy`7G`ZqVZ0k;`B@evgmZJPL(e7!>p5UwMSJvsS4gKzzA{eOtvmc0)Q97@%+cv86=ZNUS175-3yRt@P7 zR-7LxNIJdgPlKL&Bc#}x)bm_Qh$?7D`c@!89(@j3g`zs$jP7)82K6OQ>ttn`K&+58 z7QTU1iZo=ABSaS8LnS((@{at2X_`f|WR}fMb9;te=j;{LC1E!1uAoRIWjd0$G%v;x SjwvcqyAzxeHG@TQ0`@o5(TimO literal 0 HcmV?d00001 diff --git a/bin/specification b/bin/specification new file mode 100644 index 0000000..ce1022b --- /dev/null +++ b/bin/specification @@ -0,0 +1,16 @@ +StatisticsPostsCount.java:统计每个项目对应的帖子信息(对应的帖子数,帖子的总回复数,获赞数,收藏数,浏览数:(psotsCount,answerCount,score,favoriteCount,viewCount)), + 到并更新原表的对应项中。 + 主要方法:cal_count():从match_simple读出项目和匹配的标签,根据标签在split_posts_tags表找出posts_id,统计每个posts的count。 + +Update_match_result_proj_star.java: 更新match_result中的proj_stars,用于计算项目在托管社区的热度平均值。 + 主要类:Update_match_result_proj_star: + 主要方法: setProj_star() :操作update语句更新结果 + getAVGStar(String[] onlySource, String name):返回onlySource表中,name项目的stars的平均值 + 类:V:定义一些用到的常量 + 类:UpdateMatch_result:定义一些方法 + 方法:sourceFormat(String source):由source还原项目的来源表名,返回一个该项目来源的String[]还原每个项目来源表,并去掉FreeCode,因为该网站项目数据没有可量化项 + getSourceName(int id):由项目id获得从open_source_projects获得项目名称和项目源 +UpdateRank.java:多线程算法,给定一表名和表名一列,通过这一列对记录排序并更新rank列座位名次,rank列名设置更改构造函数即可 + 类:Update_match_result_rank:更新match_result排名,若相同同时存在在多个社区,取排名最小的最为项目排名 +UpdateTagPosts.java:方法更新tag表中每个tag关联的posts个数postsNum。 + 方法:countPostsNum()实现功能 \ No newline at end of file diff --git a/bin/support/ConnectionSql.class b/bin/support/ConnectionSql.class new file mode 100644 index 0000000000000000000000000000000000000000..8c1e5c52eb6c53ba22af9dec593da35cf265900e GIT binary patch literal 1405 zcmah}>rxX*7(E>#6XGBkE-H&G-dG5j1o28lcZs0xCRnvmto_+c8W?smGj?XYy@-$C z-?eH%YpwDD_Mz52J&8sQRn}B@&wO8>^WEp)|Ni*^UC+fh`w{ zieO3H*MWd3xl# z4ntpwbgX7%Gb}s1QnysJ=2Oh1uEf#y^%-8Q#JUyebrm_g?aK|dEn_cABz5Kayv>}_sXPwX8M8GHeRDaQCCXokzinrZN%kTVn2BkBD4P)mm?OPiFj;oD}u;S>PA9idIi!m6)yv$0;45?NRE+FohF1i&KdQ({1jK2Pw+e kahEJp^!Xm{6Zb1^k0AAtq$vx+!f$3N23XNFOSMjav43q&$j!CdloHcaQa z+{l{*&)8X+UzLuf&XvocyJeLGqM5UiQv!{z9DBnoSRPFV;u${+&$aT&j8$?|iPIN! zSg|$>()Aq1OP_X_D%<-s4BKN8sp&Hy=Ng64jt&jc6O|}K=(vbW0@|+3d*<>hfsVLQ zNvt+d6JqGr&?V4(l7)^QTo!1sT+@-R?Fd|q*AiQ(+^3q*i+&A#EaWjl^;O3JuCfaS z^BsE=ts>NPETuSH(=mkW0!=xe{;JB^@1UX36FP=5LM~gfwB!S^w`=tee^DX)!boCF z!_6uMAAC`|TRLvxHerhPTY*sAFcOA_I|A*;c|LL+`Cc_GjBzxoV%*blACm%lp0`yR z0$tVAkJ?;)V*z5A((wRFbTXGyrLO5{S(vHB8q1KQeA%nB`Usc2o%PZiPbz`5)p%F* zppaeI z4Vt*u%LZI8@YINAL}=CG+qNnYF+=-$p55ks7IgRkodSy=(R1SfR|I~b{R;-uBm5;2 z+gWA8hq%CpzrWRG6gT!Un*N6ImwT9)4AK8?**_MlMM&6mJwPge7f1fF&?m+X`Z-Vd z`8AVVgt@lx-^#gaL!A3DL@|X9%yCjP=)^L0w8ixex_yq*<^1swGsFwQ#v?o?Z=F^> zm?hsH?hX3a5$7J}{oNeP_k z&a90KR8QC$+qo#<>Frw*(5A9UD*z8_4CwF))Gyc>E4G1r1Etz>+ zK9@H&XWcFcG%p-xMklSkhh5M2E$Ijz;Ovs}gE$7fs19(|YM>460!BeGUd+0|oH_!r z&vmlt*eNB3#eA;vlMpl7( zSUl-w&_EbNOq`ia3V3_xsVJT1tyLE&c=$B|k>NGZJSSC6G`uPqPZKhYhxK9_g)LAU zcg)1SsF_oV*D)qgw{Prvu1RFmIWup$Pd$fZsz8?}<9+i1T);&s+a*cSb~=|*vAeJVL~%oQ)4L>b z6f}#b5pe^HxXJw4g_(5D*-|>(mhav&@V@K-FC{Io&uok;qtNWGoW#VUsQ^59BWYhepo^@CmkbJlw6kgO~Q(&mcM>A+nE90 zz5UM-c*;c;4E_dq2ZGShj9RV?*9di}=aU3zCA!Zba|9Hk`aaxQM{)yf>A~kw=C>>eE57#xYTj`3c{XqMq(A;q3ulUw;R$ zR@{5~7T&6&rx+b9;j*Wwq%=r+lGHlY-3{_2vj7Y*;6a{*c{apwBD5G);q{QB6hGuT z!wjj*ztfoIO3+5bRm>4zQuo1AS39ZGiy!m2R;Ky`-_>~96MSdk7eto_p5uCyMBn=c zUQcn5tEF4psE&DxT9L1`P~+q5s7ivD_;i^hC((o}w3wmIES+Cvam_1&{jLk#A$gg> z5I#`K%a7=X_=p5g@cI~cc_yhg!1E7UD6o#`oQ~xxQsyVAOnIGFl5%q;Wy#cxg@5F} zTcNTxfjDg!$?Ya{yHvrYS>;)BY24%DD{~1FAxVB7dgVvH?DZ+1y+jOEdKEFHP;46k zS;-|>WWY}kyP|DRrQ_@dz~uWYWRl>i#q(9x%sRE)P^`|m*n0{c+hf&SW>v=s+}iA* zt<*|WT6M^ZY=frMl7g`&WpOT7lfIX3+&=z_?q$oK>Hke8mOb`TOHOQ~xu46f(Gu2J zqFu$uVyElL&R;A_sg3M(mwkrbvh1H6b90|XnCE_ug|?~Kx4O{eC-YlN&1A<2#m^6| z`fvC}txVzu?v?pW5T1R5x@SlQ^FfCMN_g<zz|`T9YGT1%ndmS61F~lj A=l}o! literal 0 HcmV?d00001 diff --git a/bin/support/ReadBigFile.class b/bin/support/ReadBigFile.class new file mode 100644 index 0000000000000000000000000000000000000000..9c63338992e2f660f77c6dcd1b8416e1042734db GIT binary patch literal 2933 zcmZuyX>$}+6g_XILr;bdOIQO@77;R8K{ibgNCLs=WIzJJfney&bdrXd?xDK}!F|Df z-x2o}cg50)F;$k|tn!n8!YY4-@x1PyNdhS<&GfzR-Fxo2=idJ7zu$fbuoXY5hzKlk zi-m&icx{IbJ=7!Xjp?W_?;6!SHx&;+6liGgYeEYMJec>)WQre&mx`C-F3q7Uc% zM0Q5c4d{+3-$SF~jhQafBySXI`^`~H_lgcP zY`XTuuIs_?<}DQ~nX;U*+qNtt7VOxtx0-5Sac$FTzSvcj1Bb)$wgSSt|E zRIUiDXh;NE+_Sm1=~x}}u^t;#+(h6$!L!{OZpKD|8rSeTi=N$W=kumVS{sfh2IS2K z4GA=o#ta+g8T}p~dBft7`d2;RuwJmfS<0yl7=>HX2(s>aCFahW<>DM^oDju zxCPr(Y^5ZoBb2=wwqpnJS;l!{SX##5i|XL;Y4X>h;?`MO3&b=Z?bxM)y$qsC8Y-wY z+>RKr>Dg?T?q$X#ggqMeqEkQ})7_MxjnX`X!Y=EIQVmkUb99;Bh%5P;c2;VqPcWch?C|bvB=j#&&YGADh4R#F zxCX_XI;Xn)0{ZkqIBYRF{J~l{MH+p;rrjnjaSWkeMTSYs=C0z%h~XGnxlRm61%U=F z46g+CIIX~BWGhOgkgqVvO!Xy>$GLrq8kS(Gym6m~^Pw0F-Koa?cu>Uyvjuv=8Sd%RJDGg8K8S0x+ zvT`3@J2~OLm1hs|o?ObD-=Mi=5~*H!-QeJ^taxVkhEj>Ml0pzp4uD;ht3vd$E~jWo zW?t8DujE6?>n1TSZ#WSI^EnK0BnD!5TVPdp``}ToU3V~N=FGu;hI_`d3xgbhK^5$g%Ba#!O2eDmb=W zEUio|y`O0K6rYg}y-+YL%AjRtkLuQj~t)1y11 z)Y+0b*dccX-J{Io{dUpG7;MEH+m z(Kyb(re9EVm2VL&K>uB{u#>Jo0~YmQD}T?EY&*d&l@nn064d({=JsH>X57J)yovt4PaQzmd*1k%P2 z|K+KFS|-pXaE$-;2zi-m;xj48VJy{BLf=(lsKH5`;!0I~{5$v#BC5ekVynYytl~0!ex17m{xP+D3ZbG|#d?)sR0hD3DSm^a6}$AO6yD;P z@G03m8TQYe#8A5NXVi>CPl~=t45ufNO*f5Wq}CkA={}KCb|{m`r^jJSVq5B}$XX$S zW6P9_idY=|w{RIN8|$h{@Fc(I1b)JWWl9N;G?(yXI`!w&-+`B}&t8F&lGHAMg|iiE zdq@n>NN`Q`w2;JB64=HXHuKjO{@cpRwozW&k;D#Cx094?;d*YzX>>5wF7D7hGpKe$ zsx^$_IXv%YH1GmmB-QH~<0TRtW&B>ej8{l=D?iM#B~=xw1Ir*S6{@#{R1c{bREOYz?PHDm$!5=tVOxi9@GXNyDcSGH Mg2eVc-y`_pe|Ex_cmMzZ literal 0 HcmV?d00001 diff --git a/bin/support/Similarity.class b/bin/support/Similarity.class new file mode 100644 index 0000000000000000000000000000000000000000..6adcc41bf593ada7bc8342e16ac5c0e19b6dc188 GIT binary patch literal 4595 zcmb7HYjjjs75>g-X6`(007DX(K-)l}$s~cu%Qh1l1QK3N0yH!w&>C+hm*m1^?r`T0 zkgD~CtoxQ)k&&eDAdF53A8*oiSNT9A*DimzT?HsbEteoLk?zD!mz@nqZ38OP-~0 zOgg49E)d;phjd+w%_Y|a?%J1DTKwO>IfxmK>T-zvJ@X>USd>a|O>Nd5SbHIX;m zl0$d*%wMwk<`q5F%p|cG4I1hN7F7Dw(TFA7YSDUx_POuf38b)0LsLbBJTy9%<2C{9 zgpn(mdyfb-wDwlPES=qc@C2?*@eu>cFBTmH&g=T8FnVL(HF znc-@|fZ>0XX9_3Qj`y+3a7$Bq8DiN$C6G^K7JQ$OsQQw1`r zZ`3#BOZ?&Lv=l&F&aj*U{!9jy6WUlSttB%L< zQIc@NbiEct61MJ6vq7H5$7LhzltuAL9h-4)98cg$4WF)P;X~6!WpOf^p4jPTb>Ra^?8~1`~LsR{BtyrmWlkPj&nHA&G-qMw;4a>=|ht2-`4RRc?XDOb9Rxp zg6Hvl4c{xrNR?~fsjOL$C8y&D>bjs}q}uZVhx;cpWVhI66wN_yxAI)^oiW2IATk~V z=0_xuWb2XT8RV|A?s)!$icGA3HdT;QolUaogdBA_QPoySK*oi=F)8qu9UqI~*9^^+;btf0!BxnaF}y(> z1-s}Lx7($>8^dq8;DlwKRIk#=?{z$kchQ~UOmIJot9YY{A-m*c%^jA!t1TP~E`V$0 z=COiiYSiHop~M>=pBmpgISP)EwhM^8NFl`21?n@Xkff}83LIH=s3EaEjB9;zPzFi;_mM@vec`QpsX0S39zJ$93UPFp6S@lUybqG9l1L_MEP1aljqY~r|uU?k8U4}=etaPW4lBVY|Xu%371 z5Wj52My{!$jV@l=-a!vd{Bk$vBDjY(8mZ;2?BYsKD?_br&Nd-*gHEFwgoefZOKE7~ z6IeoB_M#vxJu)nzw}^KE!_(u1rROrXj9kFhOt>sW%0ko+me%0~Ep{HOQ(8GvnRqIk zip${1$1z6d61Ii#pwv)-`-@bM%~6k3Ri}ohezUi9Dmv>=dJ3#n_js+XeFi%+@wN^* zB-&D8IVRg=26triwp3J(wW-=N>Qq7+nn)#s3ALArdhEK0Jt;%KK0&B!3j$LS1+#Y6}N(rKT0EZ|giFE*nDd|MqhleQDD*o=0%v0zje?4?vl9vioSAeN2z|<9B$^@7) z#3UKtg6IvJj(d#vNWYka`X%*SfED_R<*Vt64T?`m`+u^$*eOKzGDb(*FTj|=cqWpH zT*4&#LG&{6BXxxfaMsMASa*^Sa;P|i>5S%)@O>dilkmVCUm@k&#Ps;1gfammF`WRfr8QzQ~Z* zii6@Xk7%z~=E;As@70ovjqGge*zYzog?;4NAp6{Yvg9y(-y~&+Ievm)&$4qp&F*=Q zo%ChOSFjCNu^oTlKPP|Z%70^rSd5)wCw7Vb*ewoXk9e5>eT>nf?7L@pATZrQZDjER zBr-Yo5+!z2N-tC52}J3Kl)}V4j2~f!JZu!(Z~+&|!*!wsm-tn~X4cCqxJ(}Q(YLI% zI0jjnvepvZK`ra$$Mk+KkgoE!cZEAm5?chX;wQ9M?&zM4uE0hYZAgCak^J6|q~iB$ z8iHR-!=vi;w8wTH3>zA6F!EmW5A-Nl@-%opO4~of&%F|$$%x!F8ZJYy<^Q6;z3!KF ySLGl^M3)(R6M}| literal 0 HcmV?d00001 diff --git a/bin/update/StatisticsPostsCount.class b/bin/update/StatisticsPostsCount.class new file mode 100644 index 0000000000000000000000000000000000000000..0f89fe4e8dd322d5b3d7ff9236bb477110e9dd31 GIT binary patch literal 4470 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 GaOz)lokFw# literal 0 HcmV?d00001 diff --git a/bin/update/UpdateMatch_result.class b/bin/update/UpdateMatch_result.class new file mode 100644 index 0000000000000000000000000000000000000000..17e3660891f38441de74773893530552bad019d3 GIT binary patch literal 2738 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 B$)NxM literal 0 HcmV?d00001 diff --git a/bin/update/UpdateStar.class b/bin/update/UpdateStar.class new file mode 100644 index 0000000000000000000000000000000000000000..6027f8497b01a1dd13ba16d01a2f21bbd3f59f0f GIT binary patch literal 3079 zcmaJ@Yj+!072Q`FX~yyx+lp;)(zHsG){^YRX=74qH%@EQ5Vdxa)`?3JARUixEG5#6 zGMaH5-q1n|w7j38rL>ejc?B8=HC=q{2Yv=?@wq>M1!3PAS(0nR($dVmbKd9dbMF27 zf8PBYfCIR$BPP%v)QXlb$4`Z?1>f>?Xaao~tQBj#VmZs>Crh5RiUM7}wN#OgRh0ti zxi)>l_sY)llt9XMD?!zXIJAmfsSAjLK=OgIQ}(9?2D6*Ra*G1mtXq^R#PJamDf9}& zv$;hB{iJx7bFm8o+f3+4s@0$g16^wMQ4Np39u~+-gSYn=~q&6|f9Q%A!rNfAZ)Lt_WoR zcQ{J-B#ioEwtb%w*GQ(l564^o_x2QzF zVB(8v4jERlIAi&CNqzjXiLc*E)9G~0ix($b{ORI_@0jMt_KUhHw=<>voD_X zESvLAvpIWOh1obEINUUTVYer2H&B?2)%h4`51TduNb@)%J7_JuQ%zS0Ol#p1YZ7F&m>HM^6~Uyj5$C=(ra+DNgoROzc#VYE`SuxQ4Q4BTJp* zLY)w=(THy?E0Ns>-ehXrx?L(e*14MJDpV=T+a`XEUIV{ZWKOhFu(VF51i&LGAgFqFT6o_xCRI@0;RN3Ub(8YwY+OwlO^^gyFzijsZk#UP)< zAuZH^?byLx#G9mkW#_i0ohtPxpLT3%CqG8JZDZR*hxZKJUP8W;=>W+GKBgFC`d zg;E~|8>3McH8LH0m3kPsaBkxE)9K6&+_{E5bEEMFvN7DmzSHUbH*jzM9i-QAAblSn zTo3WJhWqE^)1wU>5}4G6wXp^sieWM_oM_-v0>422a6)TfJ_ZU5RHj2+k9Fu;XzNO! ziq^`8(%aS+N<9%tDXZzzZO-)BhQUluK75rZu>)V`kl@ zgT}C~4H`Qu4ft^k>xn_5xoY6^Y!jn@q_1`r>0!NrF9|%M-d_`F#&-4AyB{Jj4NnX3 z`HaA37rx!$f-yg~hUcy^`#o&P630wDgwP6W0{(k&2WzJU0|I!b)a z=nN76#?##D2&Qjg7O{vyaXqim7fy}{vAi&==3%Sm*YI+?EmAZ9UP3eqtG+WMre;uG z_zhldDtL-vXyh2V32{38+Z%X&E?m9Am8#BL;qG_b9ox%Y+eFlPN0_antWkk=dxTYb sl$DteP39xD_yhh(^(j{KPwY94acsjiu43d)5Fb0}fWTkK6T>_I1$ErH&j0`b literal 0 HcmV?d00001 diff --git a/bin/update/UpdateTableColumn.class b/bin/update/UpdateTableColumn.class new file mode 100644 index 0000000000000000000000000000000000000000..8a98b4edc7e4ad0cfbd7350728148d9d97df1af8 GIT binary patch literal 2047 zcmcIkO;a035Pc&F?IPC35f~%Dw#bJgtpo()d}2F^iJdQj6N5#-PRJsy#bTjdc2|xM zIdI4+M_0v%RLa*}d`VRV<&eq`$d5|$W>#Qf;22cQyy=wz^_iTS}m5?6_oQ}K)oArqq8W`Gf8#2IUr{RQG z1%AjKj{kpKUdSe27D&vvRXc?^(gseVPavMlm%Bj%2D*@x=!^j^LKy>kgoX`tN9e49 zRD{kO=!wv%0RtxldP`2jo@;Kb+P@^|IwVvI=cuB3yF+>1rL)^zGs+t*PL&?1M~6ml4o{Km=a2;K8#dEyNNlVEw1mgm_G1{pi* z=%E_515WF>Bp`}9-V*4_26mX$@eVEHI^JW#*(+RMW=`4f)@8+LhyhEG|I zeQ*1_20llLS=tZnN;9;N(Q7${Ieekv=3Yjs#jZcB*q*%S2ELS6sn=syg>+rHzu;RH zI*T(Cfmp!g`XibLQ=?omWQPL#K6wXDC|9$Vr|yl0r2`GVr(j~ka@c?axjP+h+6|sB zYxtT0f~M!We%R5P^P6=YD+1ka5ZG2@rMjBJU5v?L)j$Qj4k_8$Q6ux-b!ywu;X3Xy zE6)wWU?uSCPPh_UwLr%j$rI^VSC33>#i{C$S~%4ddyJBuM6X1ifeUz@jcNHcHbvhN zEcjK^V?Oh4)34Y!oH{idIP?IH%i>~`F5`SJHU6`oIZ7PO>}9oPC##u#tY&txn%Tpg zFsPJa1h7rCW0=@iZ1(Z7v}^b`l;0g2y?u(H1$ z;Sp(nH^S;n+kQ^krz3mk`N3n(57EAjDq5#uSm@nw=o-kns~}= zx9|u*vEkxMLzDc#x{h*HqEg=zZBe5i$?Xx@Jw_fs!^AHbQ#zVTl_zZ-x2WzdY9e@E z$2=CO<72LGqfE3&&wYsf%WyHOrQs_%%q1!AGVVme!RJZ}m)phNrSvyD_;wpsX%}KC zZKrGM=cMl!cCaByxQoxrpH`_%vJ@AY{1lVDq*BaA{;)~k;O?+0m*ANs0#b`Ha>$(+ Gn*RYOubd z1?n?)(ef4m2}F*}W{iTDvn^M_T7f1XojYSD(|Ywk+bNPI|^v z(Iil7yRM;I6H}8BMA0H)w^AXVT8uUAIXNrapBR-A>ol}sJ-uhDrUY8ziL$)(zUZUB z4ja*~V3R;Y72G0Q!)9z@T(03AEPD2UozLf((qMc%F)B45((o|0F^3t)U{TT@kGx?~ zqibUmuv5W~rB1418Xm*%JvA+&|cv8bt7-Xp}W0vLQ z?2M~8Ca}KT{(kM)74q5Ro8kodibEQPah&lnkAt!kg7Lw`poD!=Mt+JWNVunW7vfVf z!YN(^(<1@3%kCJ}a0X`ulu8#oUxoLjaG(pOw|riN$n9D}io#MM;Bkh7B~ zI6SiEhMs4BpU0#EePJG!vo&PEk|_nLVOr(jMpc{_2pzUBTbrf&1u4}k$75Q$ra=jnHkY4b&tb%u!SIu8*G@jRU46QkS?p|kQDkF>z5as!W4J{(+=X}joTjH5ZZ`kU|htn|oqa1AmVeuco3#Y32< z!dsG0!Dpy*4(ctw1Q6jV*}!Vl@zlx!eAe?u0OSV91A@G*k!AuLXjbaoxsB*pv~dp2 zCB#x)HS^dIK-WCB3JgU%hP$`VBN4#fV41WxRI@951J`1~XmTEpkfGeh?y=~eIrPVr z681&+@F?Lxg?@N}PSS8JR57N;)Oj2g_yWDY_R~^I4bCGKKnW+JY1;6uNkg@ zUyon#8{54c{UlnMgSDhKppm~eG;uzf(Sa5wx|Lfg#vR>;16Yr<*nnwlf`@jzf-U$G zTXB;gqwgs512uj^96uvL`d+z@fx#A|q+bv!^yFXcF`IEFVUrxHm7Z<1C^zY$!;TeSB! z v7@NZfsjd<}Tz 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 PO-CZ|@2@oA!Nvaq=487s literal 0 HcmV?d00001 diff --git a/bin/update/V$1.class b/bin/update/V$1.class new file mode 100644 index 0000000000000000000000000000000000000000..17bdcefdab378f84f0ff1dc0d5add324d8265800 GIT binary patch literal 684 zcmZWn%Wl&^6g`uK#tklQ-BO@D`mT~Jh!7i4t8OAtk|n?k6|a~m5MLG7YrM- zS;92e_L@fV@QPtOr~JrNBhTrEDh#9&*X3j+^mjhW1Vb>$W1bDUmhO87Hf$=1?GF~x zosp0;1*FS6{86bIO}LHINDEVDwrUg^%k_J=I>Txx6UA+*DdF>U(`DVymzEE$mMU3R zXog%+=k+ft&T>P9D`C@o+{7`1Hy@4${ic-A{frwU4EE_P>U04>9`5|eHz`U8bx5cC z2VOU51^#b5yX^+SJlGC)rpU`F@{7nd?2_H3BEVZTu!l8ju!94N4$-E9uj!9JEsQtB b0kPhZtr26t@(09p=n>fydfjDlgV6IIXKkaQ literal 0 HcmV?d00001 diff --git a/bin/update/V.class b/bin/update/V.class new file mode 100644 index 0000000000000000000000000000000000000000..9da2328ddfa8e09014c0388ca666fbfe34a2ed5a GIT binary patch literal 1100 zcmZWn?M@R>5Iq;@*K(n7MdVuqR6wBu0xAU&6h*84KuP@7+?KUnTy~rNF!42f6SF@^ zH1Pp^DC5js2sYiM_uMlxotb-P{`~#<8^9VWIdlo+SU7ST zo{r*x`de@JmOEe6Y1yG1`EuQLJSW-_=$>CVrf&BA6FZMg0Rm$Z8D#UA5E$}XwpUGC zt8!zcW5_X65;=~U=GRk9Gp@DyXC(6MpJRVmZ#tfC^WTvuuz#Lvr0GBVLBno~S(LCi zrk4vYN%S(2Odd!`CVfoSB>I^2Gue>nXHsPHSfa>efJs?m0NEVq$=2nf%&l11#;(LO z4ATh8MiLI*ml%X%^&QWC7oXMa;9?_G#jk7kSO*Soh%s8|#x6-1H60qHRk_SgI$P=P z95}p8Gat=%BsetZYrG+}$hS>M-# 1000) { + ps.executeBatch(); + ps.clearBatch(); + count = 0; + } + } + ps.executeBatch(); + ps.clearBatch(); + ps.close(); + conn.close(); + + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + +} +} diff --git a/src/Sort/FirstSort.java b/src/Sort/FirstSort.java new file mode 100644 index 0000000..763d2ae --- /dev/null +++ b/src/Sort/FirstSort.java @@ -0,0 +1,105 @@ +package Sort; + +import java.sql.*; +import java.util.*; + +import support.ConnectionSql; +import update.UpdateRank; +/** + * 用帖子的各个参数排序(postsCount,viewCount,score,favoriteCount)排序的结果 + * @author LiLy + * + */ +class OperateData{ + Connection conn; + String tablename="match_simple"; + String proj_name; + int postsCount; + int score; + int viewCount; + int answerCount; + int favoriteCount; + OperateData(){ + + } + public OperateData(String proj_name) { + // TODO Auto-generated constructor stub + conn=new ConnectionSql("ossean_db").connection(); + this.proj_name="'"+proj_name+"'"; + try { + Statement st=conn.createStatement(); + String sql="select postsCount,score,viewCount,answerCount,favoriteCount from "+tablename+" where proj_name="+this.proj_name; + ResultSet rs=st.executeQuery(sql); + if(rs.next()){ + postsCount=rs.getInt(1); + score=rs.getInt(2); + viewCount=rs.getInt(3); + answerCount=rs.getInt(4); + favoriteCount=rs.getInt(5); + } + st.close(); + } catch (Exception e) { + // TODO: handle exception + + e.printStackTrace(); + } + } + public boolean updateData(String column_allCount,int allCount) { + String sql="update "+tablename+" set "+column_allCount+" = "+allCount+" where proj_name="+proj_name; + try { + Statement st=conn.createStatement(); + st.execute(sql); + st.close(); + + return true; + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + return false; + } + + } + +} +public class FirstSort { + public List getAll_proj_names(String tablename) { + List proj_names=new ArrayList(); + Connection conn=new ConnectionSql("ossean_db").connection(); + try { + Statement st=conn.createStatement(); + String sql="select proj_name from "+tablename; + ResultSet rs=st.executeQuery(sql); + while(rs.next()){ + proj_names.add(rs.getString(1)); + } + st.close(); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + + return proj_names; + + } + public void allCountSort() throws SQLException { + int allCount=0; + List proj_names=getAll_proj_names("match_simple"); + Iterator iterator=proj_names.iterator(); + while(iterator.hasNext()){ + String proj_name=iterator.next(); + OperateData opData=new OperateData(proj_name); + allCount=opData.answerCount+opData.postsCount+opData.score+opData.favoriteCount+opData.viewCount; + opData.updateData("allCount",allCount); + } + UpdateRank updateRank=new UpdateRank("match_simple", "allCount"); + updateRank.operateSql(); + } + public static void main(String[] args) { + try { + new FirstSort().allCountSort(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } +} diff --git a/src/Sort/PostsHot.java b/src/Sort/PostsHot.java new file mode 100644 index 0000000..827051a --- /dev/null +++ b/src/Sort/PostsHot.java @@ -0,0 +1,17 @@ +package Sort; +/** + * 通过贴子的浏览量和活跃度统计帖子的热度 + * @author LiLy + * + */ +public class PostsHot { + double w1=0d; + double w2=0d; + + public PostsHot(double w1,double w2) { + // TODO Auto-generated constructor stub + } +public double cla_postHot(int viewCount,String lastActivityDate){ + return 0d; +} +} diff --git a/src/Sort/SortWithNewpost.java b/src/Sort/SortWithNewpost.java new file mode 100644 index 0000000..d1e5e04 --- /dev/null +++ b/src/Sort/SortWithNewpost.java @@ -0,0 +1,215 @@ +package Sort; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import com.sun.corba.se.impl.encoding.OSFCodeSetRegistry.Entry; + +import support.ConnectionSql; +import support.DateHandle; +import update.UpdateRank; +/** + * 根据关联的最近一段时间活跃帖子数排序,时间控制用传入类的参数 + * @author LiLy + * + */ +public class SortWithNewpost { + String column="newPostsCount"; + String tablename="simple_test_newPostsCount"; + Connection conn=new ConnectionSql("ossean_db").connection(); + String date; +public SortWithNewpost(String date) { + // TODO Auto-generated constructor stub + this.date=date; +} + +public static void main(String[] args) { + SortWithNewpost sort=new SortWithNewpost("2014-08-31 00:00:00"); + sort.start(); +} + +/** + * 启动程序,更新newPostCount字段和Rank_newPostsCount字段 + */ +public void start() { + Map count=getnewPostsCount(); + updateTable(conn, tablename, "newPostsCount", "DBMS", count); + UpdateRank updateRank=new UpdateRank(tablename, "newPostsCount","rank_newPostsCount"); + updateRank.run(); +} + +/** + * 根据Map中条件更新表 + * @param conn + * @param tablename + * @param updatecolumn + * @param conditionColumn + * @param count + */ +public void updateTable(Connection conn,String tablename,String updatecolumn,String conditionColumn,Map count) { + String sql="update "+tablename+" set "+updatecolumn+"="+"? where "+conditionColumn+" = ?"; + try { + conn.setAutoCommit(false); + PreparedStatement ps=conn.prepareStatement(sql); + int flag=1; + Iterator> iterator=count.entrySet().iterator(); + System.out.println("start!"); + while(iterator.hasNext()){ + Map.Entry entry=iterator.next(); + String key=entry.getKey(); + int value=(int)entry.getValue(); + ps.setInt(1, value); + ps.setString(2, key); + + ps.addBatch(); + if(flag++%1000==0){ + ps.executeBatch(); + ps.clearBatch(); + System.out.println("update: "+flag); + } + } + ps.executeBatch(); + ps.clearBatch(); + ps.close(); + conn.commit(); + conn.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } +} + +/** + * 得到tablename的项目名称对应的最近一段时间的帖子数 + * @return + */ + + +public Map getnewPostsCount() { + Map count=new HashMap(); + try { + conn.setAutoCommit(false); + ResultSet rs1; + ResultSet rs2; + ResultSet rs3; + Statement st1=conn.createStatement(); + Statement st2=conn.createStatement(); + Statement st3=conn.createStatement(); + String projName; + int tag_id; + String sql; + int tempCount=0; + + /** + * 创建临时表保存需要的时间范围内的帖子 + */ + + sql="create temporary table temp select tag_id,lastActivityDate from posts_split_tags where lastActivityDate > '"+date+"'"; + st1.execute(sql); + sql="alter table temp add index index_tag_id (tag_id)"; + st1.execute(sql); + conn.commit(); + System.out.println("temp table create completement!"); + + sql="select DBMS from simple_test_newpostscount"; + rs1=st1.executeQuery(sql); + while(rs1.next()){ + tempCount=0; + projName=rs1.getString(1); + sql="select tag_id from simple_test_newpostscount_match where DBMS= '"+projName+"'"; + rs3=st3.executeQuery(sql); + while(rs3.next()) + { + tag_id=rs3.getInt(1); + sql="select count(*) from temp where tag_id = "+tag_id; + rs2=st2.executeQuery(sql); + + while(rs2.next()){ + tempCount+=rs2.getInt(1); + } + } + count.put(projName, tempCount); + System.out.println(projName); + } + st2.close(); + st1.close(); + + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + return count; + } + + + +/** + * 根据表名和限制条件(没有选择全部)选择对应的列返回结果到ResultSet + * @param conn + * @param tablename + * @param column + * @param conditionColumn + * @param condition + * @return + * @throws SQLException + */ +public ResultSet getData(Connection conn,String tablename,String column,String conditionColumn,String condition){ + String sql; + ResultSet rs=null; + if(!conditionColumn.isEmpty()) + { + sql="select "+column+" from "+tablename+" where "+conditionColumn+"="+"'"+condition+"'"; + } + else { + sql="select "+column+" from "+tablename; + } + try { + Statement st=conn.createStatement(); + rs=st.executeQuery(sql); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + +// st.close(); + return rs; +} +/** + * 根据表名和限制条件(没有选择全部)选择对应的列返回结果到ResultSet + * @param conn + * @param tablename + * @param column + * @param conditionColumn + * @param condition + * @return + * @throws SQLException + */ +public ResultSet getData(Connection conn,String tablename,String column,String conditionColumn,int condition) { + String sql; + ResultSet rs=null; + if(!conditionColumn.isEmpty()) + { + sql="select "+column+" from "+tablename+" where "+conditionColumn+"="+condition; + } + else { + sql="select "+column+" from "+tablename; + } + try { + Statement st=conn.createStatement(); + rs=st.executeQuery(sql); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + return rs; +} +} diff --git a/src/Sort/SortWithPostsAndView.java b/src/Sort/SortWithPostsAndView.java new file mode 100644 index 0000000..45a076e --- /dev/null +++ b/src/Sort/SortWithPostsAndView.java @@ -0,0 +1,12 @@ +package Sort; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class SortWithPostsAndView { +// public List name() { +// +// } + +} diff --git a/src/Sort/SortWithTimeModel.java b/src/Sort/SortWithTimeModel.java new file mode 100644 index 0000000..3901d27 --- /dev/null +++ b/src/Sort/SortWithTimeModel.java @@ -0,0 +1,263 @@ +package Sort; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import support.ConnectionSql; +import support.DateHandle; +import update.UpdateRank; + +public class SortWithTimeModel { + String column = "newPostsCount"; + String tablename = "simple_test_newPostsCount"; + Connection conn = new ConnectionSql("ossean_db").connection(); + String date; + int n; + DateHandle dateHandle; + + public SortWithTimeModel(String date, int n) { + // TODO Auto-generated constructor stub + this.date = date; + this.n = n; + dateHandle = new DateHandle(date, n); + } + + public static void main(String[] args) { + SortWithTimeModel sort = new SortWithTimeModel("2014-09-31 00:00:00", + 12); + sort.start(); + } + + /** + * 启动程序,更新newPostCount字段和Rank_newPostsCount字段 + */ + public void start() { + Map count = getnewPostsCountTime(); + updateTable(conn, tablename, "postsCountTime", "DBMS", count); + UpdateRank updateRank = new UpdateRank(tablename, "postsCountTime", + "rank_PostsCountTime"); + updateRank.run(); + } + + /** + * 根据Map中条件更新表 + * + * @param conn + * @param tablename + * @param updatecolumn + * @param conditionColumn + * @param count + */ + public void updateTable(Connection conn, String tablename, + String updatecolumn, String conditionColumn, + Map count) { + String sql = "update " + tablename + " set " + updatecolumn + "=" + + "? where " + conditionColumn + " = ?"; + try { + conn.setAutoCommit(false); + PreparedStatement ps = conn.prepareStatement(sql); + int flag = 1; + Iterator> iterator = count.entrySet() + .iterator(); + System.out.println("start!"); + while (iterator.hasNext()) { + Map.Entry entry = iterator.next(); + String key = entry.getKey(); + double value = (Double) entry.getValue(); + ps.setDouble(1, value); + ps.setString(2, key); + + ps.addBatch(); + if (flag++ % 1000 == 0) { + ps.executeBatch(); + ps.clearBatch(); + System.out.println("update: " + flag); + } + } + ps.executeBatch(); + ps.clearBatch(); + ps.close(); + conn.commit(); + conn.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** + * 根据参数给的时间段级别,返回影响因子gen的值 + * + * @param lev + * @return + */ + public double getGen(int lev) { + return (double) lev / (lev + 1); + } + + /** + * 得到tablename的项目名称对应的最近一段时间的帖子通过时间模型对于项目的影响值 + * + * @return + */ + public Map getnewPostsCountTime() { + Map count = new HashMap(); + try { + conn.setAutoCommit(false); + ResultSet rs1; + Statement st1; + String projName; + String sql; + DateHandle dateHandle = new DateHandle(); + + /** + * 初始化Map count放入每个项目名 + */ + sql = "select DBMS from simple_test_newpostscount"; + st1 = conn.createStatement(); + rs1 = st1.executeQuery(sql); + while (rs1.next()) { + count.put(rs1.getString(1), 0d); + } + rs1.close(); + st1.close(); + + /** + * 由于JDBC不能在一句查询语句中打开两次临时表,所以改建成物理表。 + */ + + sql = "create table temp " + + "SELECT p.id as id,s.DBMS as DBMS,s.tag_id as tag_id,p.lastActivityDate " + + "from simple_test_newpostscount_match as s " + + "INNER JOIN posts_split_tags as p ON s.tag_id=p.tag_id"; + st1 = conn.createStatement(); + st1.execute(sql); + sql = "alter table temp add index index_id (id)"; + st1.execute(sql); + conn.commit(); + st1.close(); + + System.out.println("temp table create completement!"); + + int page_count; + int page_size; + String lastActivityDate; + int lev = 0; + double gen = 0.0; + boolean isEmpty; + + /** + * 采用分页查询,防止内存溢出 + */ + + page_count = 0; // 设置页大小和页码 + page_size = 1000; + sql = "select DBMS,lastActivityDate from temp where id>(select id from temp order by id limit ?,1) limit ?"; + PreparedStatement ps = conn.prepareStatement(sql); + do { + ps.setInt(1, page_count * page_size); + ps.setInt(2, page_size); + rs1 = ps.executeQuery(); + isEmpty = true; + while (rs1.next()) { + isEmpty = false; + projName = rs1.getString(1); + lastActivityDate = rs1.getString(2); + lev = dateHandle.levDate(lastActivityDate); + gen = getGen(lev); + count.put(projName, count.get(projName) + gen); + } + + if (isEmpty) { + break; + } + ++page_count ; + System.out.print(new Date()); + System.out.println("\t\t" + page_count); + + } while (true); + rs1.close(); + ps.close(); + sql="drop table temp"; + st1=conn.createStatement(); + st1.execute(sql); + st1.close(); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + return count; + } + + /** + * 根据表名和限制条件(没有选择全部)选择对应的列返回结果到ResultSet + * + * @param conn + * @param tablename + * @param column + * @param conditionColumn + * @param condition + * @return + * @throws SQLException + */ + public ResultSet getData(Connection conn, String tablename, String column, + String conditionColumn, String condition) { + String sql; + ResultSet rs = null; + if (!conditionColumn.isEmpty()) { + sql = "select " + column + " from " + tablename + " where " + + conditionColumn + "=" + "'" + condition + "'"; + } else { + sql = "select " + column + " from " + tablename; + } + try { + Statement st = conn.createStatement(); + rs = st.executeQuery(sql); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + + // st.close(); + return rs; + } + + /** + * 根据表名和限制条件(没有选择全部)选择对应的列返回结果到ResultSet + * + * @param conn + * @param tablename + * @param column + * @param conditionColumn + * @param condition + * @return + * @throws SQLException + */ + public ResultSet getData(Connection conn, String tablename, String column, + String conditionColumn, int condition) { + String sql; + ResultSet rs = null; + if (!conditionColumn.isEmpty()) { + sql = "select " + column + " from " + tablename + " where " + + conditionColumn + "=" + condition; + } else { + sql = "select " + column + " from " + tablename; + } + try { + Statement st = conn.createStatement(); + rs = st.executeQuery(sql); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + return rs; + } + +} diff --git a/src/SplitHugeFile.java b/src/SplitHugeFile.java new file mode 100644 index 0000000..c2395ca --- /dev/null +++ b/src/SplitHugeFile.java @@ -0,0 +1,35 @@ +import java.io.*; + +public class SplitHugeFile { + public void splitFile(String filename, int linesCount) { + try { + BufferedReader reader=new BufferedReader(new FileReader(new File(filename))); + int count=0; + int file_count=0; + String tempString=null; + BufferedWriter writer=new BufferedWriter(new FileWriter(new File(writeFilename(filename,file_count++)))); + while((tempString=reader.readLine())!=null){ + writer.write(tempString+'\n'); + count++; + if(count>=linesCount){ + count=0; + writer.flush(); + writer.close(); + writer=new BufferedWriter(new FileWriter(new File(writeFilename(filename,file_count++)))); + continue; + } + } + writer.flush(); + writer.close(); + reader.close(); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + } + String writeFilename(String filename,int count){ + String wfilename=filename.substring(0, filename.length()-4); + wfilename=wfilename+count; + return wfilename+filename.substring(filename.length()-4, filename.length()); + } +} diff --git a/src/SplitTags.java b/src/SplitTags.java new file mode 100644 index 0000000..265f903 --- /dev/null +++ b/src/SplitTags.java @@ -0,0 +1,159 @@ +import java.sql.*; +import java.util.*; +import java.util.Date; + +import support.ConnectionSql; +import update.UpdateTableColumn; + +public class SplitTags { + + String source_table; + String source_column1; + String source_column2; + String des_table; + String des_column1; + String des_column2; + String postTypeId; + + public SplitTags() { + this.source_table = "posts"; + this.source_column1 = "id"; + this.source_column2 = "tags"; + this.des_table = "posts_split_tags"; + this.des_column1 = "posts_id"; + this.des_column2 = "tag"; + this.postTypeId="postTypeId"; + } + public SplitTags(String source_table, String source_column1, + String source_column2, String des_table, String des_column1, + String des_column2) { + this.source_table = source_table; + this.source_column1 = source_column1; + this.source_column2 = source_column2; + this.des_table = des_table; + this.des_column1 = des_column1; + this.des_column2 = des_column2; + } + public static void main(String[] args){ + SplitTags st=new SplitTags("posts","id","tags","posts_split_tags","posts_id","tag");//标签分离 + st.splitTags(); + } + + public int breakTest(Connection conn, String break_sql) { + int lastId = 0; + try { + Statement st = conn.createStatement(); + ResultSet rs = st.executeQuery(break_sql); + if (rs.next()) { + lastId = rs.getInt(des_column1); + String del_sqlString="delete from "+des_table+" where " + des_column1 + "="+ lastId; + st.execute(del_sqlString); + } + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + return lastId; + } + + public void splitTags() { + + try { + Connection conn = new ConnectionSql("ossean_db").connection(); + /* + * 由于报内存溢出,所以采用分页查询处理 + */ + int page_count = 0; // 设置页大小和页码 + int page_size = 100000; + int id = 0; // 获得需要插入的数据 + conn.setAutoCommit(false);//设置手动提交事务 + String tags; + + /* + * 增加断点续传功能 + */ + + String break_sql = "select " + + des_column1 // 断点查询 + + " from " + des_table + " order by " + des_column1 + + " desc limit 0,1"; + int breakPoint = breakTest(conn, break_sql); + /* + * 测试程序速度 + */ + System.out.print(new Date()); + System.out.println("\t\tstart" ); + + /* + * 采用子查询提高分页效率,防止效率的衰减 + + String sql = "select " + source_column1 + "," + source_column2 + + " from " + source_table + " where " + source_column1 + + " >= " + breakPoint + " limit ?,?"; // 查询语句 + */ + String sql; + if(breakPoint>0){ + sql = "select " + source_column1 + "," + source_column2 + + " from " + source_table + " where "+ source_column1+ + " >(select id from "+source_table+" order by "+ source_column1+" limit ?,1) and "+ + source_column1+ " >= " + breakPoint + " limit ?"; // 查询语句 + } + + else{ + sql = "select " + source_column1 + "," + source_column2 + + " from " + source_table + " where "+ source_column1+ + " >(select id from "+source_table+" order by "+ source_column1+" limit ?,1) limit ?";// 查询语句 + } + + String sqlInsert = " insert into " + des_table + " (" + des_column1 + + "," + des_column2 + ") values(?,?)"; // 插入语句 + PreparedStatement p_statement = conn.prepareStatement(sql); + PreparedStatement ps = conn.prepareStatement(sqlInsert); + int count = 0; + do { + p_statement.setInt(1, page_count * page_size); + p_statement.setInt(2, page_size); + ResultSet rs = p_statement.executeQuery(); + boolean isEmpty = true; + while (rs.next()) { + isEmpty = false; + id = rs.getInt(source_column1); + tags = rs.getString(source_column2); + if (tags == null) + continue; + + tags = tags.substring(1, tags.length() - 1); + String tag[] = tags.split("><"); + + for (int i = 0; i < tag.length; i++) { + ps.setInt(1, id); + ps.setString(2, tag[i]); + ps.addBatch(); + } + if (count++ > 10000) { + ps.executeBatch(); + ps.clearBatch(); + conn.commit(); + count = 0; + } + } + if (isEmpty) { + break; + } + page_count++; + /* + * 测试程序速度 + */ + System.out.print(new Date()); + System.out.println("\t\t" + page_count); + } while (true); + ps.executeBatch(); + ps.clearBatch(); + p_statement.close(); + conn.commit(); + conn.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/StrToDate.java b/src/StrToDate.java new file mode 100644 index 0000000..06787c1 --- /dev/null +++ b/src/StrToDate.java @@ -0,0 +1,14 @@ +import java.text.SimpleDateFormat; +import java.util.*; +public class StrToDate { + public Date strToDate(String str){ + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date=null; + try{ + date=sdf.parse(str); + }catch (Exception e) { + e.printStackTrace(); + } + return date; + } +} diff --git a/src/Test.java b/src/Test.java new file mode 100644 index 0000000..c9e1fb6 --- /dev/null +++ b/src/Test.java @@ -0,0 +1,26 @@ +import java.util.*; +import java.text.*; + +import support.ReadBigFile; +public class Test { + public static void main(String[] args){ + SplitTags st=new SplitTags("posts","id","tags","posts_split_tags","posts_id","tag");//标签分离 + st.splitTags(); + +// StrToDate std=new StrToDate();//字符串转日期 +// Date date=std.strToDate("1992-12-2 02:1:2"); +//// System.out.print(date); + +// ReadBigFile readBigFile=new ReadBigFile(); +// readBigFile.readFile("C:\\Users\\lili\\Posts.xml"); +// (new SplitHugeFile()).splitFile("C:\\Users\\lili\\Posts.xml",2000000);//大文件分解,以行数为单位 + + +// String[] realSort={"aaa","ac","bc","g","d","ab","e"}; +// String[] ideaSort={"aaa","ab","ac","bc","d","e"}; +// System.out.println(new CalculateNDCG().cal_NDCG(realSort, ideaSort, 3)); + + + } + +} diff --git a/src/specification b/src/specification new file mode 100644 index 0000000..ce1022b --- /dev/null +++ b/src/specification @@ -0,0 +1,16 @@ +StatisticsPostsCount.java:统计每个项目对应的帖子信息(对应的帖子数,帖子的总回复数,获赞数,收藏数,浏览数:(psotsCount,answerCount,score,favoriteCount,viewCount)), + 到并更新原表的对应项中。 + 主要方法:cal_count():从match_simple读出项目和匹配的标签,根据标签在split_posts_tags表找出posts_id,统计每个posts的count。 + +Update_match_result_proj_star.java: 更新match_result中的proj_stars,用于计算项目在托管社区的热度平均值。 + 主要类:Update_match_result_proj_star: + 主要方法: setProj_star() :操作update语句更新结果 + getAVGStar(String[] onlySource, String name):返回onlySource表中,name项目的stars的平均值 + 类:V:定义一些用到的常量 + 类:UpdateMatch_result:定义一些方法 + 方法:sourceFormat(String source):由source还原项目的来源表名,返回一个该项目来源的String[]还原每个项目来源表,并去掉FreeCode,因为该网站项目数据没有可量化项 + getSourceName(int id):由项目id获得从open_source_projects获得项目名称和项目源 +UpdateRank.java:多线程算法,给定一表名和表名一列,通过这一列对记录排序并更新rank列座位名次,rank列名设置更改构造函数即可 + 类:Update_match_result_rank:更新match_result排名,若相同同时存在在多个社区,取排名最小的最为项目排名 +UpdateTagPosts.java:方法更新tag表中每个tag关联的posts个数postsNum。 + 方法:countPostsNum()实现功能 \ No newline at end of file diff --git a/src/support/ConnectionSql.java b/src/support/ConnectionSql.java new file mode 100644 index 0000000..250084d --- /dev/null +++ b/src/support/ConnectionSql.java @@ -0,0 +1,27 @@ +package support; +import java.sql.Connection; +import java.sql.DriverManager; + + +public class ConnectionSql { + String driver="com.mysql.jdbc.Driver"; + String url; + String user="root"; + String password="mysql"; +public ConnectionSql(String sqlName) { + // TODO Auto-generated constructor stub + url="jdbc:mysql://127.0.0.1:3306/"+sqlName+"?useUnicode=true&charsetEncoding=utf8&useCursorFetch=true&defaultFetchSize=100"; +// url="jdbc:mysql://127.0.0.1:3306/"+sqlName; +} +public Connection connection(){ + Connection conn=null; + try{ + Class.forName(driver); + conn=DriverManager.getConnection(url, user, password); + }catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + return conn; +} +} diff --git a/src/support/DataHandle.java b/src/support/DataHandle.java new file mode 100644 index 0000000..3d10168 --- /dev/null +++ b/src/support/DataHandle.java @@ -0,0 +1,29 @@ +package support; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class DataHandle { + /** + * + * @param 对data列表进行Frobenius范数归一化 + * @return + */ +public static List frobenius(List data) { + Double sum_square=0d; + Iterator iterator=data.iterator(); + while(iterator.hasNext()){ + double datai=iterator.next(); + sum_square+=datai*datai; + } + double frob_num= Math.pow(sum_square, 0.5); + List frob_list=new ArrayList(); + iterator=data.listIterator(); + + while(iterator.hasNext()){ + frob_list.add(iterator.next()/frob_num); + } + return frob_list; +} +} diff --git a/src/support/DateHandle.java b/src/support/DateHandle.java new file mode 100644 index 0000000..16f2563 --- /dev/null +++ b/src/support/DateHandle.java @@ -0,0 +1,126 @@ +package support; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + + +/** + * 对日期的相关处理 + * @author LiLy + * + */ +public class DateHandle { + static String levDate[]; // + + public DateHandle() { + // TODO Auto-generated constructor stub + } + + public DateHandle(String refDate,int n) { + // TODO Auto-generated constructor stub + this.levDate=new String[n+1]; + Date date=stringToDate(refDate); + Calendar c = Calendar.getInstance(); + c.setTime(date); + for(int i=1;i<=n;i++) + { + date=c.getTime(); + this.levDate[i]=DateHandle.FormatDate(date); + c.add(Calendar.MONTH, -1); + } + } + + /** + * 比较两个日期(date1,date2)的大小,date1>date2大于(即date1在date2之后的时间)返回1,等于返回0,小于返回-1 + * @return + */ +public static int compareDate(Date date1,Date date2) { + + try { + if (date1.getTime() > date2.getTime()) { + return 1; + } else if (date1.getTime() < date2.getTime()) { + return -1; + } else { + return 0; + } + } catch (Exception exception) { + exception.printStackTrace(); + } + return 0; + } + +/** + * 判断Strings是否可以转换为yyyy-mm-dd HH:MM:SS形式的Date型 + * + * @param strings + * @return + */ +public static boolean canFormatToDate(String string) { + String dateFormat="yyyy-MM-dd HH:mm:ss"; + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); + if (string.isEmpty()) + return false; + + try { + sdf.parse(string); + } catch (ParseException e) { + return false; + } + return true; +} + +/** + * 将date格式转换为yyyy-mm-dd HH:MM:SS形式的Date型 + * + * @param strings + * @return + */ +public static String FormatDate(Date date) { + String dateFormat="yyyy-MM-dd HH:mm:ss"; + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); + String formatDate=sdf.format(date); + return formatDate; +} + + +/** + * 将string转成Date + * @param string + * @return + */ +public static Date stringToDate(String string){ + + String dateFormat="yyyy-MM-dd HH:mm:ss"; + SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); + Date date=null; + try { + date = sdf.parse(string); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return date; +} + +public static int levDate(String date) { + if(date==null) + return 0; + for(int i=DateHandle.levDate.length-1;i>0;i--){ + if(date.compareTo(DateHandle.levDate[i])>0){ + return i; + } + } + return 0; +} + +public static void main(String[] args) { + +// new DateHandle("2014-02-01 00:00:00", 12); +// if ("2014-02-01 00:00:00".compareTo("2014-02-01 00:00:00.23")==1) + System.out.print("2014-02-01 00:01:00".compareTo("2014-02-01 01:00:00.23")); +} +} diff --git a/src/support/ReadBigFile.class b/src/support/ReadBigFile.class new file mode 100644 index 0000000000000000000000000000000000000000..60292e06edbe376f54f546afa9cdbe441c0d2ba1 GIT binary patch literal 838 zcmZWnU2hUm5Iq-m_rkJm0oi`2Xlwm|QovTN6^KTRCMGQ!F(y1N%PrXoELj$#Z~mJ; z*N2iwV&aPr{uqCPICm*&iTf~f=iE6nXJ+s3zu$iV*u@haOSr*tQ%4Bv92*?Bbg0-2 z8(#q(3T{htCyKkcrz3-`47WIP9NQdu2Cd@s9RDdpIFtRrpuBKff??^v>51B~+Z5h= ztJxtW;t8wu%8^Gib8u{ZvWgw6*Dlt5&*`y3nw&?qg+aq)^?Dt*IFJ98d5WmQM(>xZoKL<_6 zXGomyd<7W-Ejv38(5_0BEJx*3le0L6s5^C^6J(I?34~vk*pSg5waKLI$ZiMh5tBs*F#!wsEBWOuJLZrq@N_bDrpCQ^PDZjAz4f>jLhS{p;zKH4bx7@=vByH0{PNot sqls) + { + Connection con=new ConnectionSql("ossean_db").connection(); + + try{ + con.setAutoCommit(false); + Statement st=con.createStatement(); + for(String s:sqls) + { + st.addBatch(s); + } + st.executeBatch(); + st.close(); + con.commit(); + con.close(); + }catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + + + } + public void readFile() { + File file = new File(filename); + BufferedReader reader = null; + try { + reader = new BufferedReader(new FileReader(file), 20 * 1024 * 1024); + String tempString = null; + int count = 1; + List sqls=new ArrayList(); + while ((tempString = reader.readLine()) != null) { +// tempString=URLEncoder.encode(tempString, "utf-8"); + sqls.add(tempString); + if(count++%1000==0){ + insertSql(sqls); + sqls.clear(); + System.out.println(count); + } + } + insertSql(sqls); + reader.close(); + } catch (Exception e) { + // TODO: handle exception + } + } + public void run() { + readFile(); + } + public static void main(String[] args) { + String path="C:\\Users\\lili\\Desktop\\sql\\"; + new ReadBigFile(path+"oschina_project.sql").run(); + } +} diff --git a/src/support/Similarity.java b/src/support/Similarity.java new file mode 100644 index 0000000..eca7903 --- /dev/null +++ b/src/support/Similarity.java @@ -0,0 +1,91 @@ +package support; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.*; +import java.lang.Math; +public class Similarity extends Thread{ + public Double cla_EX(List data) { + int len = data.size(); + Double ex = 0d; + Iterator iterator = data.iterator(); + Double sum = 0d; + while (iterator.hasNext()) { + sum += iterator.next(); + } + return ex = sum / len; + } + public Double cla_sim(List data1, List data2) { + int len = data1.size(); + List data3 = new ArrayList(); + List data4 = new ArrayList(); + List data5 = new ArrayList(); + Iterator iterator1 = data1.iterator(); + Iterator iterator2 = data2.iterator(); + while (iterator1.hasNext()) { + Double temp = iterator1.next(); + data3.add(temp * temp); + } + while (iterator2.hasNext()) { + Double temp = iterator2.next(); + data4.add(temp * temp); + } + iterator1 = data1.iterator(); + iterator2 = data2.iterator(); + while (iterator1.hasNext()) { + data5.add(iterator1.next() * iterator2.next()); + } + Double E_data1 = cla_EX(data1); + Double E_data2 = cla_EX(data2); + Double E_data3 = cla_EX(data3); + Double E_data4 = cla_EX(data4); + Double E_data5 = cla_EX(data5); + return (E_data5 - E_data1 * E_data2) + / (Math.pow(E_data3 - E_data1 * E_data1, 0.5) * Math.pow( + E_data4 - E_data2 * E_data2, 0.5)); + } + public void operaterSql(String dataBaseName,String tablename,String column1,String column2) { + Connection conn=new ConnectionSql(dataBaseName).connection(); + try { + Statement st=conn.createStatement(); + String sql="select "+column1+" from "+tablename; + ResultSet rs=st.executeQuery(sql); + List data1=new ArrayList(); + List data2=new ArrayList(); + while (rs.next()) { + double temp=rs.getDouble(1); + data1.add(temp); + } + sql="select "+column2+" from "+tablename; + rs=st.executeQuery(sql); + while (rs.next()) { + double temp=rs.getDouble(1); + data2.add(temp); + } + + Double similarity=cla_sim(data1,data2); + System.out.println(similarity); + tablename="'"+tablename+"'"; + column1="'"+column1+"'"; + column2="'"+column2+"'"; + sql="replace into similary_record(table_name,column1,column2,similarity) values ("+tablename+","+column1+","+column2+","+similarity+")"; + st.execute(sql); + conn.close(); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + } + public static void main(String[] args) { + Similarity similarity=new Similarity(); + // similarity.operaterSql("ossean_db","sourceforge_project","stars","downloadCount"); + +// similarity.operaterSql("ossean_db","match_simple","db_score","postsCount"); +// similarity.operaterSql("ossean_db","match_simple","db_score","score"); +// similarity.operaterSql("ossean_db","match_simple","db_score","favoriteCount"); +// similarity.operaterSql("ossean_db","match_simple","db_score","viewCount"); +// similarity.operaterSql("ossean_db","match_simple","db_score","answerCount"); + similarity.operaterSql("ossean_db","match_simple","postsCount","viewCount"); + } + +} \ No newline at end of file diff --git a/src/support/StringHandle.java b/src/support/StringHandle.java new file mode 100644 index 0000000..14ed8d9 --- /dev/null +++ b/src/support/StringHandle.java @@ -0,0 +1,5 @@ +package support; + +import java.util.HashMap; +import java.util.Map; + diff --git a/src/update/StatisticsPostsCount.java b/src/update/StatisticsPostsCount.java new file mode 100644 index 0000000..9cf1a95 --- /dev/null +++ b/src/update/StatisticsPostsCount.java @@ -0,0 +1,101 @@ +package update; +import support.ConnectionSql; + +import java.sql.*; +import java.util.*; +import java.util.Date; + +public class StatisticsPostsCount { +String tablename="match_simple"; +String column1="score"; +String column2="favoriteCount"; +String column3="viewCount"; +String column4="answerCount"; +String column5="postsCount"; +String proj_name="proj_name"; +String tag="tag"; +String posts_split_tags="posts_split_tags"; +String posts_id="posts_id"; +String posts="posts"; +String id="id"; +String postTypeId="postTypeId"; +Connection conn=new ConnectionSql("ossean_db").connection(); +public StatisticsPostsCount() { + // TODO Auto-generated constructor stub +} +public StatisticsPostsCount(String tablename,String coulumn1,String coulumn2,String coulumn3,String coulumn4,String coulumn5) { + // TODO Auto-generated constructor stub +this.tablename=tablename; +this.column1=coulumn1; +this.column2=coulumn2; +this.column3=coulumn3; +this.column4=coulumn4; +this.column5=coulumn5; +} + +/** + * 统计每个项目对应的帖子数,帖子的总回复数,获赞数,收藏数,浏览数:(psotsCount,answerCount,score,favoriteCount,viewCount) + * 从match_simple读出项目和匹配的标签,根据标签在split_posts_tags表找出posts_id,统计每个posts的count + */ +public boolean cal_count() { + try { + conn.setAutoCommit(false); + Statement st1=conn.createStatement(); + Statement st2; + Statement st3; + String sql="select "+proj_name+","+tag+" from "+tablename; + ResultSet rs1=st1.executeQuery(sql); + ResultSet rs2; + ResultSet rs3; + System.out.print("start\t\t\t");System.out.println(new Date()); + + while(rs1.next()){ + String temp_proj_name="'"+rs1.getString(proj_name)+"'"; + String temp_tag="'"+rs1.getString(tag)+"'"; + st2=conn.createStatement(); + sql="select "+posts_id+" from "+posts_split_tags+" where "+tag+" = "+temp_tag; + rs2=st2.executeQuery(sql); //查询post_split_tags得到posts_id + int data1=0,data2=0,data3=0,data4=0,data5=0; + while(rs2.next()){ + int temp_posts_id=rs2.getInt(posts_id); + st3=conn.createStatement(); + sql="select "+column1+","+column2+","+column3+","+column4+" from "+posts+" where "+id+" = "+temp_posts_id; + rs3=st3.executeQuery(sql); + while(rs3.next()){ + data1+=rs3.getInt(column1); + data2+=rs3.getInt(column2); + data3+=rs3.getInt(column3); + data4+=rs3.getInt(column4); + data5++; + + } + rs3.close(); + st3.close(); + } + rs2.close(); + sql="update "+tablename+" set "+column1+"="+data1+","+column2+"="+data2+","+column3+"="+data3+","+column4+"="+data4+","+column5+"="+data5+" where "+proj_name+" = "+temp_proj_name; + st2.execute(sql); + st2.close(); + System.out.print(temp_proj_name+"\t\t"); + System.out.println(new Date()); + + } + rs1.close(); + st1.close(); + conn.commit(); + conn.close(); + System.out.println("down"); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + + return false; + } + return true; +} + +public static void main(String[] args) { + StatisticsPostsCount statisticsPostsCount=new StatisticsPostsCount(); + statisticsPostsCount.cal_count(); +} +} diff --git a/src/update/UpdateRank.java b/src/update/UpdateRank.java new file mode 100644 index 0000000..50a9b9f --- /dev/null +++ b/src/update/UpdateRank.java @@ -0,0 +1,214 @@ +package update; + +import java.sql.Connection; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.Date; +import java.util.List; + +import support.ConnectionSql; +/** + * 给定一列,通过这一列对记录排序并更新rank列座位名次,rank列名设置更改构造函数即可 + */ +public class UpdateRank extends Thread{ + String tablename; + String columnname; + String columnname2; + String id="id"; + String rank="rank"; +// String rank="rank_"; + public UpdateRank(String tablename,String columnname) { + // TODO Auto-generated constructor stub + this.tablename=tablename; + this.columnname=columnname; + this.rank=this.rank+this.columnname; + this.rank=this.columnname; //用本列更新本列排名 + } + public UpdateRank(String tablename,String columnname,String rankString) { + // TODO Auto-generated constructor stub + this.tablename=tablename; + this.columnname=columnname; + this.rank=rankString; + } + public void operateSql() { + Connection conn = new ConnectionSql("ossean_db").connection(); + try { + conn.setAutoCommit(false); + Statement st=conn.createStatement(); + String sql1="select "+id+" from "+tablename+" order by "+columnname+" DESC";//数据越大排名越小 +// String sql1="select "+id+" from "+tablename+" order by "+columnname;//数据越大,排名越大 + ResultSet rs=st.executeQuery(sql1);//查询需要参考的数据排名结果 + String updataSql="update "+tablename+" set "+rank+"=? where "+id+"=?"; +// String updataSql="update "+tablename+" set stars=?"; + PreparedStatement ps=conn.prepareStatement(updataSql); + int rank=1; + System.out.println("start!"); + while (rs.next()) { + int num=rs.getInt(1); + ps.setInt(1, rank); + ps.setInt(2, num); + ps.addBatch();//添加更新rank语句 + if(rank++%10000==0) + { + + System.out.println(rank); + ps.executeBatch(); + ps.clearBatch(); + conn.commit(); + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit(); + /*用两个参考stars + if(columnname2!=null) + { + + sql1="select "+columnname2+" from "+tablename+" order by "+columnname2; + rs=st.executeQuery(sql1); + updataSql="update "+tablename+" set stars=? where "+columnname2+"=?"; + ps=conn.prepareStatement(updataSql); + rank=1; + while (rs.next()) { + int num=rs.getInt(1); + sql1="select stars from "+tablename+" where "+columnname2+"="+num; + Statement st2=conn.createStatement(); + ResultSet rs2=st2.executeQuery(sql1); + int star1=0; + if(rs.next()){star1=rs2.getInt(1);} + ps.setInt(1, (rank++/count+star1)/2); + ps.setInt(2, num); + ps.addBatch(); + if(rank%1000==0) + { + ps.execute(); + conn.commit(); + } + } + ps.execute(); + conn.commit(); + } + */ + conn.close(); + System.out.print(tablename+" down!"); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + } + public void run() { + operateSql(); + } + public static void main(String[] args) { + +// UpdateRank updateRank1=new UpdateRank("tag","postsNum"); +// updateRank1.run(); +// UpdateRank updateRank2=new UpdateRank("oschina_project","usedNum"); +// updateRank2.run(); +// UpdateRank updateRank3=new UpdateRank("openhub_project","useCount"); +// updateRank3.run(); +// UpdateRank updateRank4=new UpdateRank("sourceforge_project","downloadCount"); +// updateRank4.run(); + + /* + UpdateRank updatematch_simpleRank1=new UpdateRank("match_simple","postsCount"); + updatematch_simpleRank1.run(); + UpdateRank updatematch_simpleRank2=new UpdateRank("match_simple","score"); + updatematch_simpleRank2.run(); + UpdateRank updatematch_simpleRank3=new UpdateRank("match_simple","favoriteCount"); + updatematch_simpleRank3.run(); + UpdateRank updatematch_simpleRank4=new UpdateRank("match_simple","viewCount"); + updatematch_simpleRank4.run(); + UpdateRank updatematch_simpleRank5=new UpdateRank("match_simple","answerCount"); + updatematch_simpleRank5.run(); + */ + +// UpdateRank updaterank_opensource_DB_engine=new UpdateRank("rank_open_source_DB_engine","score"); +// updaterank_opensource_DB_engine.run(); + +// Update_match_result_rank umr_rank=new Update_match_result_rank(); +// System.out.println(umr_rank.set_rank()); + + new UpdateRank("rank_open_source_db_engine", "rank_last_month").run();; + } +} +class Update_match_result_rank{ //更新match_result中proj_rank,若相同同时存在在多个社区,取排名最小的最为项目排名 + Connection connection; + public Update_match_result_rank() { + // TODO Auto-generated method stub + connection = new ConnectionSql("ossean_db").connection(); + } + int getMinRank(String[] onlySource,String name){ + int rank=0; + name=name.replace('\'', '\"'); + name="'"+name+"'"; + int len=onlySource.length; + for(int i=0;i Source_name=umr.getSourceName(temp_id); + if(Source_name.isEmpty()){ + rank=-1; + } + else if(Source_name.get(0).equals("FreeCode")) + { + rank=-2; + } + else{ + String name=Source_name.get(1); + String[] onlySource=umr.sourceFormat(Source_name.get(0)); + rank=getMinRank(onlySource, name); + } + ps.setInt(1, rank); + ps.addBatch(); + if(count++%1000==0) + { + ps.executeBatch(); + ps.clearBatch(); + System.out.println(count); + } + } + ps.executeBatch(); + ps.clearBatch(); + connection.commit(); + connection.close(); + return true; + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + return false; + } + } +} \ No newline at end of file diff --git a/src/update/UpdateStar.java b/src/update/UpdateStar.java new file mode 100644 index 0000000..92ce1c5 --- /dev/null +++ b/src/update/UpdateStar.java @@ -0,0 +1,78 @@ +package update; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.Date; + +import support.ConnectionSql; +public class UpdateStar extends Thread{ + String tablename; + String columnname="rank"; + int levs=6; + public UpdateStar(String tablename) { + // TODO Auto-generated constructor stub + this.tablename=tablename; + } + public UpdateStar(String tablename,String columnname) { + // TODO Auto-generated constructor stub + this.tablename=tablename; + this.columnname=columnname; + } +// public double cal_star(int count,int maxCount) { +// double star=0d; +// double step=(double)maxCount/6; +// star=count/step; +// return star; +// } + public void operateSql() { + Connection conn = new ConnectionSql("ossean_db").connection(); + try { + conn.setAutoCommit(false); + + String sql1="select max("+columnname+") from "+tablename; + int count=0; + Statement st=conn.createStatement(); + ResultSet rs= st.executeQuery(sql1); //查询记录的数,确定排名的数据量 + if(rs.next()){count=rs.getInt(1)/levs;} //确定每个级别数据量 + sql1="select "+columnname+" from "+tablename+" order by "+columnname; + rs=st.executeQuery(sql1);//查询需要参考的数据排名结果 + String updataSql="update "+tablename+" set stars=? where "+columnname+"=?"; +// String updataSql="update "+tablename+" set stars=?"; + PreparedStatement ps=conn.prepareStatement(updataSql); + System.out.println(tablename+" start!"); + while (rs.next()) { + int num=rs.getInt(1); + ps.setInt(1, num/count); + ps.setInt(2, num); + ps.addBatch();//添加更新stars语句 + if(num%10000==0) + { + ps.executeBatch(); + ps.clearBatch(); + } + } + ps.executeBatch(); + ps.clearBatch(); + conn.commit(); + conn.close(); + System.out.println(tablename+" down!"); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + } + public void run() { + operateSql(); + } + public static void main(String[] args) { + + UpdateStar updateStar1=new UpdateStar("tag"); +// updateStar1.run(); + UpdateStar updateStar2=new UpdateStar("oschina_project"); + updateStar2.run(); + UpdateStar updateStar3=new UpdateStar("openhub_project"); + updateStar3.run(); + + } +} diff --git a/src/update/UpdateTableColumn.java b/src/update/UpdateTableColumn.java new file mode 100644 index 0000000..fdcf2e5 --- /dev/null +++ b/src/update/UpdateTableColumn.java @@ -0,0 +1,53 @@ +package update; + +import java.sql.Connection; +import java.sql.Statement; + +import support.ConnectionSql; + +/** + * 两个表的连接更新程序 + * @author LiLy + * + */ +public class UpdateTableColumn { +String table1; +String table2; +String connColumn1; +String connColumn2; +String updateColumn; +String referColumn; +Connection conn; +public UpdateTableColumn(String table1,String table2,String connColumn1,String connColumn2,String updateColumn,String referColumn,Connection conn) { + // TODO Auto-generated constructor stub +this.table1=table1; +this.table2=table2; +this.connColumn1=connColumn1; +this.connColumn2=connColumn2; +this.updateColumn=updateColumn; +this.referColumn=referColumn; +this.conn=conn; +} + +public boolean updateMethod () { + String sql="update "+table1+","+table2+" set "+ + table1+"."+updateColumn+" = "+table2+"."+referColumn+ + " where "+table1+"."+connColumn1+" = "+table2+"."+connColumn2; + try { + Statement st=conn.createStatement(); + st.execute(sql); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + return false; + } + + return true; +} + +public static void main(String[] args) { + Connection conn=new ConnectionSql("ossean_db").connection(); + UpdateTableColumn up=new UpdateTableColumn("posts_split_tags", "tag", "tag", "tag", "tag_id", "id", conn); + up.updateMethod(); +} +} diff --git a/src/update/UpdateTagPostsNum.java b/src/update/UpdateTagPostsNum.java new file mode 100644 index 0000000..5ddcbbd --- /dev/null +++ b/src/update/UpdateTagPostsNum.java @@ -0,0 +1,53 @@ +package update; + + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import support.ConnectionSql; +/** + * 统计tag表中tag标签在posts中关联帖子的个数并更新postsNum字段 + * @author LiLy + * + */ +public class UpdateTagPostsNum { + public void countPostsNum() throws SQLException{ + Connection conn = new ConnectionSql("ossean_db").connection(); + try { + conn.setAutoCommit(false); + Statement st=conn.createStatement(); + String sqlSelect="select tag from tag"; + ResultSet rs=st.executeQuery(sqlSelect); + Statement stm=conn.createStatement(); + int flag=0; + while(rs.next()) + { + String tag=rs.getString("tag"); + tag="'"+tag+"'"; + sqlSelect="select count(tag) from posts_split_tags where tag="+tag; + + ResultSet rscount=stm.executeQuery(sqlSelect); + if(rscount.next()) + { + String sql="update tag set tag.postsNum="+rscount.getInt(1)+" where tag.tag= "+tag; + stm.execute(sql); + } + if(flag++%1000==0){System.out.println(flag);} + } + System.out.println("Down!"); + conn.commit(); + conn.close(); + } catch (Exception e) { + // TODO: handle exception + conn.rollback(); + e.printStackTrace(); + } + + } + public static void main(String[] args) throws SQLException{ + UpdateTagPostsNum updateTagPosts=new UpdateTagPostsNum(); + updateTagPosts.countPostsNum(); + } +} diff --git a/src/update/Update_match_result_proj_star.java b/src/update/Update_match_result_proj_star.java new file mode 100644 index 0000000..f84e518 --- /dev/null +++ b/src/update/Update_match_result_proj_star.java @@ -0,0 +1,179 @@ +package update; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import support.ConnectionSql; + + +/** + * 定义用到的表名和列名 + */ +class V { + public static String match_result = "match_result"; + public static String sourceTable = "open_source_projects"; + public static String onlySourceTable1 = "openhub_projects"; + public static String onlySourceTable2 = "oschina_projects"; + public static String onlySourceTable3 = "sourceforge_projects"; + public static String proj_star = "proj_star"; + public static String proj_rank = "proj_rank"; + public static String proj_id = "proj_id"; + public static String rank = "rank"; + public static String stars = "stars"; + public static String source = "source"; + public static Map proj_nameMap = new HashMap() { + { + put("SourceForge_project", "name"); + put("OpenHub_project", "name"); + put("OSChina_project", "projectShortName"); + put("open_source_projects", "name"); + } + }; + +} + + +/** + * 更新match_result,定义计算rank和stars公用的函数 + * sourceFormat(String source):由source还原项目的来源表名,返回一个该项目来源的String[]还原每个项目来源表,并去掉FreeCode,因为该网站项目数据没有可量化项 + * getSourceName(int id):由项目id获得从open_source_projects获得项目名称和项目源 + */ +class UpdateMatch_result { + Connection connection; + + public UpdateMatch_result(Connection connection) { + // TODO Auto-generated constructor stub + this.connection = connection; + } + + String[] sourceFormat(String source) { + String[] sources = source.split("FreeCode")[0].split(","); + List formatSource = new ArrayList(); + ; + for (int i = 0; i < sources.length; i++) { + if (!sources[i].equals("")) { + formatSource.add(sources[i] + "_project"); + } + } + return (String[]) formatSource.toArray(new String[0]); + } + + List getSourceName(int id) { + List source_name = new ArrayList(); + String sql = "select " + V.source + "," + + V.proj_nameMap.get(V.sourceTable) + " from " + V.sourceTable + + " where id=" + id + " and source!='FreeCode'"; + try { + Statement st = connection.createStatement(); + ResultSet rs = st.executeQuery(sql); + if (rs.next()) { + source_name.add(rs.getString(1)); + source_name.add(rs.getString(2)); + } + st.close(); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + System.out.println(id); + } + return source_name; + } +} + +public class Update_match_result_proj_star { + Connection connection; + + public Update_match_result_proj_star(String database) { + // TODO Auto-generated constructor stub + connection = new ConnectionSql(database).connection(); + + } + + // List getSource() + + double getAVGStar(String[] onlySource, String name) { + double star = 0; + name = name.replace('\'', '\"'); + name = "'" + name + "'"; + int len = onlySource.length; + for (int i = 0; i < len; i++) { + String sql = "select " + V.stars + " from " + onlySource[i] + + " where " + V.proj_nameMap.get(onlySource[i]) + "=" + + name; + try { + Statement st = connection.createStatement(); + ResultSet rs = st.executeQuery(sql); + if (rs.next()) { + star += rs.getInt(1); + } + + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + } + return star / len; + } + + public void setProj_star() { + try { + connection.setAutoCommit(false); + Statement st1 = connection.createStatement(); + UpdateMatch_result umr = new UpdateMatch_result(connection); + String sql1 = "select distinct(" + V.proj_id + ") from " + + V.match_result; + ResultSet rs = st1.executeQuery(sql1); + String sql2 = "update " + V.match_result + " set " + V.proj_star + + "=? where " + V.proj_id + "=?"; + PreparedStatement ps = connection.prepareStatement(sql2); + int count = 1; + double star = 0; + while (rs.next()) { + int temp_id = rs.getInt(1); + ps.setInt(2, temp_id); + List Source_name = umr.getSourceName(temp_id); + if (Source_name.isEmpty()) { + star = -1; + } else if (Source_name.get(0).equals("FreeCode")) { + star = -2; + } else { + String name = Source_name.get(1); + String[] onlySource = umr.sourceFormat(Source_name.get(0)); + + star = getAVGStar(onlySource, name); + ps.setDouble(1, star); + + } + + ps.addBatch(); + if (count++ % 1000 == 0) { + ps.executeBatch(); + ps.clearBatch(); + System.out.println(count); + } + } + ps.executeBatch(); + ps.clearBatch(); + connection.commit(); + connection.close(); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + + } + + } + + public static void main(String[] args) { + Update_match_result_proj_star u_proj_star = new Update_match_result_proj_star( + "ossean_db"); + u_proj_star.setProj_star(); + System.out.print("Down!"); + + } +}