1. #include <iostream>
  2. #include <time.h>
  3. #include "map"
  4. #include "stdio.h"
  5. #include "stdlib.h"
  6. #include "string.h"
  7. #include "array"
  8. using namespace std;
  9.  
  10. #define NULL (0)
  11.  
  12. #define OUT_X (0b1111)
  13. #define OUT_POS (0b11111111)
  14. #define OUT_BLK (0b11111111111111111111111111111111)
  15.  
  16. #define get_x_from_pos(pos) (((pos)>>4)&0b1111)
  17. #define get_y_from_pos(pos) ((pos)&0b1111)
  18.  
  19. #define get_pos_from_xy(x,y) (((x)<<4)|(y))
  20.  
  21. #define get_u_pos_from_blk(stBlk) (((stBlk)>>24)&0b11111111)
  22. #define get_d_pos_from_blk(stBlk) (((stBlk)>>16)&0b11111111)
  23. #define get_l_pos_from_blk(stBlk) (((stBlk)>>8)&0b11111111)
  24. #define get_r_pos_from_blk(stBlk) ((stBlk)&0b11111111)
  25.  
  26. #define get_blk_from_pos_u_d_l_r(u,d,l,r) (((u)<<24)|((d)<<16)|((l)<<8)|(r))
  27.  
  28. #define set_u_pos_in_blk(stBlk,pos) ((stBlk)=(((stBlk)&0b00000000111111111111111111111111)|(pos<<24)))
  29. #define set_d_pos_in_blk(stBlk,pos) ((stBlk)=(((stBlk)&0b11111111000000001111111111111111)|(pos<<16)))
  30. #define set_l_pos_in_blk(stBlk,pos) ((stBlk)=(((stBlk)&0b11111111111111110000000011111111)|(pos<<8)))
  31. #define set_r_pos_in_blk(stBlk,pos) ((stBlk)=(((stBlk)&0b11111111111111111111111100000000)|(pos)))
  32.  
  33. typedef unsigned char pos;
  34. typedef unsigned int stBlk;
  35. typedef unsigned int color;
  36.  
  37. // global
  38. array<array<color, 10>, 10> g_initColorMap;
  39. array<array<stBlk, 10>, 10> g_initStateMap;
  40. pos g_initHeadPos;
  41. map<array<array<stBlk, 10>, 10>, int> g_SCORE;
  42. int g_BEST_SCORE;
  43. int g_mapSize, g_mapSize_old;
  44.  
  45. void globalInit()
  46. {
  47. for (int i=1;i<=10;++i) g_initColorMap[i].fill(0);
  48. for (int i=1;i<=10;++i) g_initStateMap[i].fill(0);
  49. g_initHeadPos = 0;
  50. g_SCORE.clear();
  51. g_BEST_SCORE = 1;
  52. g_mapSize = 0;
  53. g_mapSize_old = 0;
  54. }
  55.  
  56. void readInitMap()
  57. {
  58. /*
  59. 2441353511
  60. 2122511244
  61. 3444543422
  62. 2131423443
  63. 4241445212
  64. 1122411534
  65. 1251131145
  66. 2441444415
  67. 4254453131
  68. 3321521455
  69. */
  70. string x = "2441353511212251124434445434222131423443424144521211224115341251131145244144441542544531313321521455";
  71. // read color map
  72. for (int i=0; i<=9; ++i) {
  73. for (int j=0; j<=9; ++j) {
  74. g_initColorMap[i][j] = x[i+10*(9-j)]-'0';
  75. }
  76. }
  77. // init state map
  78. for (int i=0; i<=9; ++i) {
  79. for (int j=0; j<=9; ++j) {
  80. pos up, down, left, right;
  81. if (j==9) up = OUT_POS; else up = get_pos_from_xy(i, j+1);
  82. if (j==0) down = OUT_POS; else down = get_pos_from_xy(i, j-1);
  83. if (i==0) left = OUT_POS; else left = get_pos_from_xy(i-1, j);
  84. if (i==9) right = OUT_POS; else right = get_pos_from_xy(i+1, j);
  85. //printf("g_initStateMap[%d][%d]=(%d,%d),(%d,%d),(%d,%d),(%d,%d)\n", i, j, \
  86. get_x_from_pos(up), get_y_from_pos(up), \
  87. get_x_from_pos(down), get_y_from_pos(down), \
  88. get_x_from_pos(left), get_y_from_pos(left), \
  89. get_x_from_pos(right), get_y_from_pos(right));
  90. g_initStateMap[i][j] = get_blk_from_pos_u_d_l_r(up, down, left, right);
  91. }
  92. }
  93. g_initHeadPos = get_pos_from_xy(0, 0);
  94. }
  95.  
  96. void printMap(array<array<stBlk, 10>, 10> stMp, pos RealHeadPos)
  97. {
  98. if (stMp[get_x_from_pos(RealHeadPos)][get_y_from_pos(RealHeadPos)] == 0) {
  99. printf("printMap ERROR, RealHeadPos is NULL (%d,%d)\n", get_x_from_pos(RealHeadPos), get_y_from_pos(RealHeadPos));
  100. return;
  101. }
  102. array<array<color, 10>, 10> temp;
  103. for (int i=0; i<10; ++i) temp[i].fill(0);
  104. pos temp2[10][10];
  105. for(int i=0; i<10; ++i) for(int j=0; j<10; ++j) {
  106. temp2[i][j] = OUT_POS;
  107. }
  108.  
  109. int xx = 0;
  110. pos p = RealHeadPos;
  111. while (p!=OUT_POS) {
  112. xx++;
  113. pos q = p;
  114. int yy = 0;
  115. while (q!=OUT_POS) {
  116. yy++;
  117. char qx = get_x_from_pos(q);
  118. char qy = get_y_from_pos(q);
  119. temp[xx-1][yy-1] = g_initColorMap[qx][qy];
  120. temp2[xx-1][yy-1] = q;
  121. q = get_u_pos_from_blk(stMp[qx][qy]);
  122. }
  123. p = get_r_pos_from_blk(stMp[get_x_from_pos(p)][get_y_from_pos(p)]);
  124. }
  125.  
  126. cout << "Head Pos: (" << get_x_from_pos(RealHeadPos) << "," << get_y_from_pos(RealHeadPos) << ")" << endl;
  127. for (int j=9; j>=0; --j) {
  128. for (int i=0; i<=9; ++i) {
  129. //if (temp[i][j] == 0) cout<<" "; else cout<<temp[i][j];
  130. if (temp2[i][j] == OUT_POS) printf(" "); else printf("(%d,%d) ",get_x_from_pos(temp2[i][j]),get_y_from_pos(temp2[i][j]));
  131. }
  132. cout<<endl;
  133. }
  134. cout<<endl;
  135. }
  136.  
  137. void tickOneBlk(array<array<stBlk, 10>, 10> &S, pos &Hp, pos tickP)
  138. {
  139. char tickPx = get_x_from_pos(tickP);
  140. char tickPy = get_y_from_pos(tickP);
  141.  
  142. stBlk tickBlk = S[tickPx][tickPy];
  143. if (tickBlk == 0) {
  144. for(int i=0;i<1000;++i) cout <<"fuck"<<endl;
  145. return;
  146. }
  147.  
  148. pos up = get_u_pos_from_blk(tickBlk);
  149. char upx = get_x_from_pos(up);
  150. char upy = get_y_from_pos(up);
  151. pos dp = get_d_pos_from_blk(tickBlk);
  152. char dpx = get_x_from_pos(dp);
  153. char dpy = get_y_from_pos(dp);
  154.  
  155. // at least 1 block below it.
  156. if (dp != OUT_POS) {
  157. if (up == OUT_POS) {
  158. set_u_pos_in_blk(S[dpx][dpy], OUT_POS);
  159. }
  160. else {
  161. set_u_pos_in_blk(S[dpx][dpy], up);
  162. set_d_pos_in_blk(S[upx][upy], dp);
  163. }
  164. }
  165. else if (dp == OUT_POS) { // it's the bottom block
  166. pos lp = get_l_pos_from_blk(tickBlk);
  167. char lpx = get_x_from_pos(lp);
  168. char lpy = get_y_from_pos(lp);
  169. pos rp = get_r_pos_from_blk(tickBlk);
  170. char rpx = get_x_from_pos(rp);
  171. char rpy = get_y_from_pos(rp);
  172. if (up == OUT_POS) {
  173. if (lp != OUT_POS) {
  174. if (rp == OUT_POS) {
  175. set_r_pos_in_blk(S[lpx][lpy], OUT_POS);
  176. }
  177. else if (rp != OUT_POS) {
  178. set_l_pos_in_blk(S[rpx][rpy], lp);
  179. set_r_pos_in_blk(S[lpx][lpy], rp);
  180. }
  181. }
  182. else if (lp == OUT_POS) {
  183. if (rp == OUT_POS) {
  184. Hp = OUT_POS;
  185. }
  186. else if (rp != OUT_POS) {
  187. set_l_pos_in_blk(S[rpx][rpy], OUT_POS);
  188. Hp = rp;
  189. }
  190. }
  191. }
  192. else if (up != OUT_POS){
  193. if (lp != OUT_POS) {
  194. if (rp == OUT_POS) {
  195. set_r_pos_in_blk(S[lpx][lpy], up);
  196. set_d_pos_in_blk(S[upx][upy], dp);
  197. set_l_pos_in_blk(S[upx][upy], lp);
  198. set_r_pos_in_blk(S[upx][upy], rp);
  199. }
  200. else if (rp != OUT_POS) {
  201. set_r_pos_in_blk(S[lpx][lpy], up);
  202. set_d_pos_in_blk(S[upx][upy], dp);
  203. set_l_pos_in_blk(S[upx][upy], lp);
  204. set_r_pos_in_blk(S[upx][upy], rp);
  205. set_l_pos_in_blk(S[rpx][rpy], up);
  206. }
  207. }
  208. else if (lp == OUT_POS) {
  209. if (rp == OUT_POS) {
  210. set_d_pos_in_blk(S[upx][upy], dp);
  211. set_l_pos_in_blk(S[upx][upy], lp);
  212. set_r_pos_in_blk(S[upx][upy], rp);
  213. Hp = up;
  214. }
  215. else if (rp != OUT_POS) {
  216. set_d_pos_in_blk(S[upx][upy], dp);
  217. set_r_pos_in_blk(S[upx][upy], rp);
  218. set_l_pos_in_blk(S[upx][upy], lp);
  219. set_l_pos_in_blk(S[rpx][rpy], up);
  220. Hp = up;
  221. }
  222. }
  223. }
  224. }
  225. // destroy this block
  226. S[tickPx][tickPy] = 0;
  227. //printMap(S, Hp);
  228. }
  229.  
  230. void printInfo(pos p, stBlk pb)
  231. {
  232. printf("p:(%d,%d)\n", get_x_from_pos(p), get_y_from_pos(p));
  233. pos up = get_u_pos_from_blk(pb);
  234. pos dp = get_d_pos_from_blk(pb);
  235. pos lp = get_l_pos_from_blk(pb);
  236. pos rp = get_r_pos_from_blk(pb);
  237. printf("up:(%d,%d)\n", get_x_from_pos(up), get_y_from_pos(up));
  238. printf("dp:(%d,%d)\n", get_x_from_pos(dp), get_y_from_pos(dp));
  239. printf("lp:(%d,%d)\n", get_x_from_pos(lp), get_y_from_pos(lp));
  240. printf("rp:(%d,%d)\n", get_x_from_pos(rp), get_y_from_pos(rp));
  241. }
  242. void updateAllPos(array<array<stBlk, 10>, 10> &state, pos &RealHeadPos)
  243. {
  244. array<array<pos, 10>, 10> temp;
  245. //for (int i=0; i<10; ++i) temp[i].fill(0);
  246. for(int i=0; i<10; ++i) for(int j=0; j<10; ++j) temp[i][j] = OUT_POS;
  247.  
  248. int xx1 = 0;
  249. pos p1 = RealHeadPos;
  250. while (p1 != OUT_POS) {
  251. xx1++;
  252. pos q1 = p1;
  253. int yy1 = 0;
  254. //cout<<"fuck1"<<endl;
  255. while (q1 != OUT_POS) {
  256. //printf("%d\n", RealHeadPos);
  257. yy1++;
  258. //printMap(state, RealHeadPos);
  259. //printf("in p1=(%d,%d) q1=(%d,%d)\n",get_x_from_pos(p1), get_y_from_pos(p1), get_x_from_pos(q1), get_y_from_pos(q1));
  260. //printInfo(p1, state[get_x_from_pos(p1)][get_y_from_pos(p1)]);
  261. //printInfo(q1, state[get_x_from_pos(q1)][get_y_from_pos(q1)]);
  262. temp[xx1-1][yy1-1] = q1;
  263. q1 = get_u_pos_from_blk(state[get_x_from_pos(q1)][get_y_from_pos(q1)]);
  264. }
  265. p1 = get_r_pos_from_blk(state[get_x_from_pos(p1)][get_y_from_pos(p1)]);
  266. //printf("out p1=(%d,%d) q1=(%d,%d)\n",get_x_from_pos(p1), get_y_from_pos(p1), get_x_from_pos(q1), get_y_from_pos(q1));
  267. }
  268. //printf("im out.\n");
  269. for(int x=0; x<10; ++x) {
  270. if (OUT_POS == temp[x][0]) {
  271. break;
  272. }
  273. for(int y=0; y<10; ++y) {
  274. if (OUT_POS == temp[x][y]) {
  275. break;
  276. }
  277. //temp[x][y]--;
  278. if (9 == y) {
  279. set_u_pos_in_blk(state[get_x_from_pos(temp[x][y])][get_y_from_pos(temp[x][y])], OUT_POS);
  280. }
  281. else {
  282. set_u_pos_in_blk(state[get_x_from_pos(temp[x][y])][get_y_from_pos(temp[x][y])], temp[x][y+1]);
  283. }
  284. if (0 == y) {
  285. set_d_pos_in_blk(state[get_x_from_pos(temp[x][y])][get_y_from_pos(temp[x][y])], OUT_POS);
  286. }
  287. else {
  288. set_d_pos_in_blk(state[get_x_from_pos(temp[x][y])][get_y_from_pos(temp[x][y])], temp[x][y-1]);
  289. }
  290. if (0 == x) {
  291. set_l_pos_in_blk(state[get_x_from_pos(temp[x][y])][get_y_from_pos(temp[x][y])], OUT_POS);
  292. }
  293. else {
  294. set_l_pos_in_blk(state[get_x_from_pos(temp[x][y])][get_y_from_pos(temp[x][y])], temp[x-1][y]);
  295. }
  296. if (9 == x) {
  297. set_r_pos_in_blk(state[get_x_from_pos(temp[x][y])][get_y_from_pos(temp[x][y])], OUT_POS);
  298. }
  299. else {
  300. set_r_pos_in_blk(state[get_x_from_pos(temp[x][y])][get_y_from_pos(temp[x][y])], temp[x+1][y]);
  301. }
  302. }
  303. }
  304. return;
  305. }
  306.  
  307. bool checkIsSingle(array<array<stBlk, 10>, 10> &state, pos &ckPos)
  308. {
  309. char ck_x = get_x_from_pos(ckPos);
  310. char ck_y = get_y_from_pos(ckPos);
  311.  
  312. color cx = g_initColorMap[ck_x][ck_y];
  313. stBlk bx = state[ck_x][ck_y];
  314.  
  315. pos up = get_u_pos_from_blk(bx);
  316. if (up!=OUT_POS && g_initColorMap[get_x_from_pos(up)][get_y_from_pos(up)]==cx){
  317. return false;
  318. }
  319. pos dp = get_d_pos_from_blk(bx);
  320. if (dp!=OUT_POS && g_initColorMap[get_x_from_pos(dp)][get_y_from_pos(dp)]==cx){
  321. return false;
  322. }
  323. pos lp = get_l_pos_from_blk(bx);
  324. if (lp!=OUT_POS && g_initColorMap[get_x_from_pos(lp)][get_y_from_pos(lp)]==cx){
  325. return false;
  326. }
  327. pos rp = get_r_pos_from_blk(bx);
  328. if (rp!=OUT_POS && g_initColorMap[get_x_from_pos(rp)][get_y_from_pos(rp)]==cx){
  329. return false;
  330. }
  331.  
  332. return true;
  333. }
  334.  
  335. int destroy(array<array<stBlk, 10>, 10> &state, pos &realHeadPos, pos realTickPos, array<array<stBlk, 10>, 10> &tmpState, pos &tmpRealHeadPos)
  336. {
  337. pos toTick[105];
  338. int head=0, tail=1;
  339. toTick[tail] = realTickPos;
  340.  
  341. bool vis[257];
  342. for(int i=0; i<257; ++i) vis[i] = 0;
  343. vis[realTickPos] = 1;
  344.  
  345. while (head < tail) {
  346. pos pp = toTick[++head];
  347. char ppx = get_x_from_pos(pp);
  348. char ppy = get_y_from_pos(pp);
  349. color pc = g_initColorMap[ppx][ppy];
  350.  
  351. stBlk ppb = state[ppx][ppy];
  352. pos up = get_u_pos_from_blk(ppb);
  353. if (up!=OUT_POS && !vis[up] && g_initColorMap[get_x_from_pos(up)][get_y_from_pos(up)]==pc){
  354. vis[up] = 1;
  355. toTick[++tail] = up;
  356. }
  357. pos dp = get_d_pos_from_blk(ppb);
  358. if (dp!=OUT_POS && !vis[dp] && g_initColorMap[get_x_from_pos(dp)][get_y_from_pos(dp)]==pc){
  359. vis[dp] = 1;
  360. toTick[++tail] = dp;
  361. }
  362. pos lp = get_l_pos_from_blk(ppb);
  363. if (lp!=OUT_POS && !vis[lp] && g_initColorMap[get_x_from_pos(lp)][get_y_from_pos(lp)]==pc){
  364. vis[lp] = 1;
  365. toTick[++tail] = lp;
  366. }
  367. pos rp = get_r_pos_from_blk(ppb);
  368. if (rp!=OUT_POS && !vis[rp] && g_initColorMap[get_x_from_pos(rp)][get_y_from_pos(rp)]==pc){
  369. vis[rp] = 1;
  370. toTick[++tail] = rp;
  371. }
  372. }
  373. for(int i=1; i<=tail; ++i) {
  374. tickOneBlk(state, realHeadPos, toTick[i]);
  375. tickOneBlk(tmpState, tmpRealHeadPos, toTick[i]);
  376. }
  377. return tail;
  378. }
  379.  
  380. int explore(array<array<stBlk, 10>, 10> state, pos RealHeadPos)
  381. {
  382. //cout<<RealHeadPos<<endl;
  383. int sco = g_SCORE[state];
  384. if ( sco != 0 ) {
  385. return sco;
  386. }
  387.  
  388. //printMap(state, RealHeadPos);
  389. updateAllPos(state, RealHeadPos);
  390.  
  391. array<array<stBlk, 10>, 10> tmpState = state;
  392. pos tmpRealHeadPos = RealHeadPos;
  393. int tmpMax = 1;
  394.  
  395. while (tmpRealHeadPos != OUT_POS) {
  396. if (checkIsSingle(state, tmpRealHeadPos) == true) {
  397. tickOneBlk(tmpState, tmpRealHeadPos, tmpRealHeadPos);
  398. }
  399. else {
  400. array<array<stBlk, 10>, 10> state1 = state;
  401. pos RealHeadPos1 = RealHeadPos;
  402. pos RealTickPos = tmpRealHeadPos;
  403. int cnt = destroy(state1, RealHeadPos1, RealTickPos, tmpState, tmpRealHeadPos);
  404. tmpMax = max(tmpMax, explore(state1, RealHeadPos1)+5*cnt*cnt);
  405. }
  406. }
  407. g_SCORE[state] = tmpMax;
  408. #if 0
  409. g_mapSize++;
  410. #endif
  411. if(tmpMax > g_BEST_SCORE) {
  412. g_BEST_SCORE = tmpMax;
  413. cout << "---------------------------" << endl;
  414. cout << "Best Score: " << g_BEST_SCORE << endl;
  415. printMap(state, RealHeadPos);
  416. //g_BEST_SCORE = 999999;
  417. }
  418. //printt(state, g_BEST_SCORE);
  419. return tmpMax;
  420. }
  421.  
  422. void proc()
  423. {
  424. g_BEST_SCORE = explore(g_initStateMap, g_initHeadPos);
  425. cout << "BEST SCORE :" << g_BEST_SCORE << endl;
  426. }
  427.  
  428. void random(pos a[], int n)
  429. {
  430. srand((unsigned)time(NULL));
  431. for(int i=0; i<n; ++i) {
  432. int index = rand()%(n-i)+i;
  433. if (index != i) {
  434. pos tmp = a[i];
  435. a[i] = a[index];
  436. a[index] = tmp;
  437. }
  438. }
  439. }
  440.  
  441. void test(array<array<stBlk, 10>, 10> S, pos H)
  442. {
  443. pos tick[100];
  444. for(int i=0; i<100; ++i) {
  445. tick[i] = get_pos_from_xy(i/10, i%10);
  446. }
  447. random(tick, 100);
  448. for(int i=0; i<100; ++i) {
  449. int x;
  450.  
  451. stBlk tB = S[get_x_from_pos(tick[i])][get_y_from_pos(tick[i])];
  452. pos uu = get_u_pos_from_blk(tB);
  453. pos dd = get_d_pos_from_blk(tB);
  454. pos ll = get_l_pos_from_blk(tB);
  455. pos rr = get_r_pos_from_blk(tB);
  456. printf("-----------------------------\n");
  457. printf("tick on (%d, %d)\n", get_x_from_pos(tick[i]), get_y_from_pos(tick[i]));
  458. printf("u:(%d,%d) d:(%d,%d) l:(%d,%d) r:(%d,%d)\n",\
  459. get_x_from_pos(uu), get_y_from_pos(uu),\
  460. get_x_from_pos(dd), get_y_from_pos(dd),\
  461. get_x_from_pos(ll), get_y_from_pos(ll),\
  462. get_x_from_pos(rr), get_y_from_pos(rr)
  463. );
  464. //cin >> x;
  465. tickOneBlk(S, H, tick[i]);
  466. printf("tick Done.\n");
  467. //printMap(S, H);
  468. printf("printMap Done.\n");
  469. }
  470. cout<<"test done"<<endl;
  471. printf("%d\n", H);
  472. //printMap(S, H);
  473. }
  474. int main()
  475. {
  476. globalInit();
  477. readInitMap();
  478. printMap(g_initStateMap, g_initHeadPos);
  479. //test(g_initStateMap, g_initHeadPos);
  480. //tickOneBlk(g_initStateMap, g_initHeadPos, get_pos_from_xy(4, 7));
  481. //printMap(g_initStateMap, g_initHeadPos);
  482. proc();
  483.  
  484. return 0;
  485. }

v3的更多相关文章

  1. DBImport V3.7版本发布及软件稳定性(自动退出问题)解决过程分享

    DBImport V3.7介绍: 1:先上图,再介绍亮点功能: 主要的升级功能为: 1:增加(Truncate Table)清表再插入功能: 清掉再插,可以保证两个库的数据一致,自己很喜欢这个功能. ...

  2. AEAI DP V3.6.0 升级说明,开源综合应用开发平台

    AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...

  3. atitit 商业项目常用模块技术知识点 v3 qc29

    atitit 商业项目常用模块技术知识点 v3 qc29 条码二维码barcodebarcode 条码二维码qrcodeqrcode 条码二维码dm码生成与识别 条码二维码pdf147码 条码二维码z ...

  4. Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx

    Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx 1. 大原则:分解+命名1 1.1. 命名规范1 1.2. 分层.DI和AOP是继OO1 1.3. 运算符可读性一般要比 ...

  5. 高效 Java Web 开发框架 JessMA v3.5.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

  6. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  7. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  8. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  9. 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  10. 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

随机推荐

  1. PHP中使用DOMDocument来处理HTML、XML文档

    其实从PHP5开始,PHP就为我们提供了一个强大的解析和生成XML相关操作的类,也就是我们今天要讲的 DOMDocument 类.不过我估计大部分人在爬取网页时还是会喜欢用正则去解析网页内容,学了今天 ...

  2. ubuntu提示:无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)

    root@uni-virtual-machine:/home/uni# apt install apt-transport-https ca-certificates curl software-pr ...

  3. Java对象构造

    关于对象构造的一些认识. 默认域初始化 如果在构造器中没有显示地给域赋予初值,那么就会被自动地赋予默认值:数值为0,布尔值为false,对象引用为null.然而,这显然是不安全的,在一个null引用上 ...

  4. 记一次某网站生产环境CPU忽高忽低故障解决过程

    感谢 感谢[一级码农] 的帮助,之前也读了大佬的好多文章,一直在学习中,也没有实际操作过. 这次的过程也是在大佬的指点下完成的. 现象描述 从周六上午开始,陆续收到服务器CPU高的报警短信,到下午已经 ...

  5. P5494-[模板]线段树分裂

    正题 题目链接:https://www.luogu.com.cn/problem/P5494 题目大意 给出一个可重集合要求支持 将集合\(p\)中在\([l,r]\)的数放到一个新的集合中 将集合\ ...

  6. Monte-carlo-simulation

    https://towardsdatascience.com/how-to-use-monte-carlo-simulation-to-help-decision-making-a0a164bc861 ...

  7. Bootstrap的模态框无法弹出的问题

    今天在使用Bootstrap官网所提供的模态框插件时候发现其中的 可选尺寸模态框 无法弹出 在模态框前使用过其他 Bootstrap的js插件,可以正常使用,说明所需依赖js文件已经正常引用 注意:j ...

  8. JAVA 150道笔试题知识点整理

    JAVA 笔试题 整理了几天才整理的题目,都是在笔试或者面试碰到的,好好理解消化下,对你会有帮助,祝你找工作顺利,收到满意的 offer . 1.Java 基础知识 1.1 Java SE 语法 &a ...

  9. 4.自定义类加载器实现及在tomcat中的应用

    了解了类加载器的双亲委派机制, 也知道了双亲委派机制的原理,接下来就是检验我们学习是否扎实了,来自定义一个类加载器 一. 回顾类加载器的原理 还是这张图,类加载器的入口是c++调用java代码创建了J ...

  10. Linux从头学15:【页目录和页表】-理论 + 实例 + 图文的最完全、最接地气详解

    作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++.嵌入式.Linux. 关注下方公众号,回复[书籍],获取 Linux.嵌入式领域经典书籍:回复[PDF],获取所有原创文章( PDF 格式). ...