原理很简单,就是模式匹配。根据中文全拼的特点,即声母和韵母配对,首先列举出所有的声母,再分别列举出所有声母对应的韵母 集,分词的过程就是遍历匹配的过程。

  1. public class SpellTool {
  2. static String result = "";// 最后要显示的结果
  3. private static ArrayList<ArrayList<String>> ym = new ArrayList<ArrayList<String>>();// 单字集合
  4. private static ArrayList<String> sm = new ArrayList<String>();// 声母集合
  5. private static ArrayList<String> yy = new ArrayList<String>();// 单字集合
  6. private static ArrayList<String> ym_b = new ArrayList<String>();// 声母b的韵母集合
  7. private static ArrayList<String> ym_c = new ArrayList<String>();// 声母c的韵母集合
  8. private static ArrayList<String> ym_d = new ArrayList<String>();// 声母d的韵母集合
  9. private static ArrayList<String> ym_f = new ArrayList<String>();// 声母f的韵母集合
  10. private static ArrayList<String> ym_g = new ArrayList<String>();// 声母g的韵母集合
  11. private static ArrayList<String> ym_h = new ArrayList<String>();// 声母h的韵母集合
  12. private static ArrayList<String> ym_j = new ArrayList<String>();// 声母j的韵母集合
  13. private static ArrayList<String> ym_k = new ArrayList<String>();// 声母k的韵母集合
  14. private static ArrayList<String> ym_l = new ArrayList<String>();// 声母l的韵母集合
  15. private static ArrayList<String> ym_m = new ArrayList<String>();// 声母m的韵母集合
  16. private static ArrayList<String> ym_n = new ArrayList<String>();// 声母n的韵母集合
  17. private static ArrayList<String> ym_p = new ArrayList<String>();// 声母p的韵母集合
  18. private static ArrayList<String> ym_q = new ArrayList<String>();// 声母q的韵母集合
  19. private static ArrayList<String> ym_r = new ArrayList<String>();// 声母r的韵母集合
  20. private static ArrayList<String> ym_s = new ArrayList<String>();// 声母s的韵母集合
  21. private static ArrayList<String> ym_t = new ArrayList<String>();// 声母t的韵母集合
  22. private static ArrayList<String> ym_w = new ArrayList<String>();// 声母w的韵母集合
  23. private static ArrayList<String> ym_x = new ArrayList<String>();// 声母x的韵母集合
  24. private static ArrayList<String> ym_y = new ArrayList<String>();// 声母y的韵母集合
  25. private static ArrayList<String> ym_z = new ArrayList<String>();// 声母z的韵母集合
  26. private static ArrayList<String> ym_sh = new ArrayList<String>();// 声母sh的韵母集合
  27. private static ArrayList<String> ym_zh = new ArrayList<String>();// 声母zh的韵母集合
  28. private static ArrayList<String> ym_ch = new ArrayList<String>();// 声母ch的韵母集合
  29. static {
  30. sm.add("b");//
  31. sm.add("c");
  32. sm.add("d");
  33. sm.add("f");
  34. sm.add("g");
  35. sm.add("h");
  36. sm.add("j");
  37. sm.add("k");
  38. sm.add("l");
  39. sm.add("m");
  40. sm.add("n");
  41. sm.add("p");
  42. sm.add("q");
  43. sm.add("r");
  44. sm.add("s");
  45. sm.add("t");
  46. sm.add("w");
  47. sm.add("x");
  48. sm.add("y");
  49. sm.add("z");
  50. sm.add("sh");
  51. sm.add("zh");
  52. sm.add("ch");
  53. yy.add("a");//
  54. yy.add("ai");
  55. yy.add("an");
  56. yy.add("ang");
  57. yy.add("ao");
  58. yy.add("e");
  59. yy.add("en");
  60. yy.add("eng");
  61. yy.add("er");
  62. yy.add("o");
  63. yy.add("ou");
  64. yy.add("ong");
  65. ym_b.add("a");//
  66. ym_b.add("ai");
  67. ym_b.add("an");
  68. ym_b.add("ang");
  69. ym_b.add("ao");
  70. ym_b.add("ei");
  71. ym_b.add("en");
  72. ym_b.add("eng");
  73. ym_b.add("i");
  74. ym_b.add("ian");
  75. ym_b.add("iao");
  76. ym_b.add("ie");
  77. ym_b.add("in");
  78. ym_b.add("ing");
  79. ym_b.add("o");
  80. ym_b.add("u");
  81. ym_c.add("a");// c
  82. ym_c.add("ai");
  83. ym_c.add("an");
  84. ym_c.add("ang");
  85. ym_c.add("ao");
  86. ym_c.add("e");
  87. ym_c.add("en");
  88. ym_c.add("eng");
  89. ym_c.add("i");
  90. ym_c.add("ong");
  91. ym_c.add("ou");
  92. ym_c.add("u");
  93. ym_c.add("uan");
  94. ym_c.add("ui");
  95. ym_c.add("un");
  96. ym_c.add("uo");
  97. ym_d.add("a");// d
  98. ym_d.add("ai");
  99. ym_d.add("an");
  100. ym_d.add("ang");
  101. ym_d.add("ao");
  102. ym_d.add("e");
  103. ym_d.add("ei");
  104. ym_d.add("en");
  105. ym_d.add("eng");
  106. ym_d.add("i");
  107. ym_d.add("ia");
  108. ym_d.add("ian");
  109. ym_d.add("iao");
  110. ym_d.add("ie");
  111. ym_d.add("ing");
  112. ym_d.add("iu");
  113. ym_d.add("ong");
  114. ym_d.add("ou");
  115. ym_d.add("u");
  116. ym_d.add("uan");
  117. ym_d.add("ui");
  118. ym_d.add("un");
  119. ym_d.add("uo");
  120. ym_f.add("a");// f
  121. ym_f.add("an");
  122. ym_f.add("ang");
  123. ym_f.add("ei");
  124. ym_f.add("en");
  125. ym_f.add("eng");
  126. ym_f.add("iao");
  127. ym_f.add("o");
  128. ym_f.add("ou");
  129. ym_f.add("u");
  130. ym_g.add("a");// g
  131. ym_g.add("ai");
  132. ym_g.add("an");
  133. ym_g.add("ang");
  134. ym_g.add("ao");
  135. ym_g.add("e");
  136. ym_g.add("ei");
  137. ym_g.add("en");
  138. ym_g.add("eng");
  139. ym_g.add("ong");
  140. ym_g.add("ou");
  141. ym_g.add("u");
  142. ym_g.add("uai");
  143. ym_g.add("uan");
  144. ym_g.add("uang");
  145. ym_g.add("ui");
  146. ym_g.add("un");
  147. ym_g.add("uo");
  148. ym_h.add("a");// h
  149. ym_h.add("ai");
  150. ym_h.add("an");
  151. ym_h.add("ang");
  152. ym_h.add("ao");
  153. ym_h.add("e");
  154. ym_h.add("ei");
  155. ym_h.add("en");
  156. ym_h.add("eng");
  157. ym_h.add("ong");
  158. ym_h.add("ou");
  159. ym_h.add("u");
  160. ym_h.add("ua");
  161. ym_h.add("uai");
  162. ym_h.add("uan");
  163. ym_h.add("uang");
  164. ym_h.add("ui");
  165. ym_h.add("un");
  166. ym_h.add("uo");
  167. ym_j.add("i");// j
  168. ym_j.add("ia");
  169. ym_j.add("ian");
  170. ym_j.add("iang");
  171. ym_j.add("iao");
  172. ym_j.add("ie");
  173. ym_j.add("in");
  174. ym_j.add("ing");
  175. ym_j.add("iong");
  176. ym_j.add("iu");
  177. ym_j.add("u");
  178. ym_j.add("uan");
  179. ym_j.add("ue");
  180. ym_j.add("un");
  181. ym_k.add("a");//
  182. ym_k.add("ai");
  183. ym_k.add("an");
  184. ym_k.add("ang");
  185. ym_k.add("ao");
  186. ym_k.add("e");
  187. ym_k.add("en");
  188. ym_k.add("eng");
  189. ym_k.add("ong");
  190. ym_k.add("ou");
  191. ym_k.add("u");
  192. ym_k.add("ui");
  193. ym_k.add("un");
  194. ym_k.add("uo");
  195. ym_l.add("a");// l
  196. ym_l.add("ai");
  197. ym_l.add("an");
  198. ym_l.add("ang");
  199. ym_l.add("ao");
  200. ym_l.add("e");
  201. ym_l.add("ei");
  202. ym_l.add("eng");
  203. ym_l.add("i");
  204. ym_l.add("ia");
  205. ym_l.add("ian");
  206. ym_l.add("iao");
  207. ym_l.add("ie");
  208. ym_l.add("in");
  209. ym_l.add("ing");
  210. ym_l.add("iu");
  211. ym_l.add("o");
  212. ym_l.add("ong");
  213. ym_l.add("ou");
  214. ym_l.add("u");
  215. ym_l.add("uan");
  216. ym_l.add("un");
  217. ym_l.add("uo");
  218. ym_l.add("v");
  219. ym_l.add("ve");
  220. ym_m.add("a");// m
  221. ym_m.add("ai");
  222. ym_m.add("an");
  223. ym_m.add("ang");
  224. ym_m.add("ao");
  225. ym_m.add("e");
  226. ym_m.add("ei");
  227. ym_m.add("en");
  228. ym_m.add("eng");
  229. ym_m.add("i");
  230. ym_m.add("ian");
  231. ym_m.add("iao");
  232. ym_m.add("ie");
  233. ym_m.add("in");
  234. ym_m.add("ing");
  235. ym_m.add("iu");
  236. ym_m.add("o");
  237. ym_m.add("ou");
  238. ym_m.add("u");
  239. ym_n.add("a");// n
  240. ym_n.add("ai");
  241. ym_n.add("an");
  242. ym_n.add("ang");
  243. ym_n.add("ao");
  244. ym_n.add("e");
  245. ym_n.add("ei");
  246. ym_n.add("en");
  247. ym_n.add("eng");
  248. ym_n.add("i");
  249. ym_n.add("ian");
  250. ym_n.add("iang");
  251. ym_n.add("iao");
  252. ym_n.add("ie");
  253. ym_n.add("in");
  254. ym_n.add("ing");
  255. ym_n.add("iu");
  256. ym_n.add("ong");
  257. ym_n.add("ou");
  258. ym_n.add("u");
  259. ym_n.add("uan");
  260. ym_n.add("un");
  261. ym_n.add("uo");
  262. ym_n.add("v");
  263. ym_n.add("ve");
  264. ym_p.add("a");// p
  265. ym_p.add("ai");
  266. ym_p.add("an");
  267. ym_p.add("ang");
  268. ym_p.add("ao");
  269. ym_p.add("e");
  270. ym_p.add("ei");
  271. ym_p.add("en");
  272. ym_p.add("eng");
  273. ym_p.add("i");
  274. ym_p.add("ian");
  275. ym_p.add("iao");
  276. ym_p.add("ie");
  277. ym_p.add("in");
  278. ym_p.add("ing");
  279. ym_p.add("o");
  280. ym_p.add("ou");
  281. ym_p.add("u");
  282. ym_q.add("i");// q
  283. ym_q.add("ia");
  284. ym_q.add("ian");
  285. ym_q.add("iang");
  286. ym_q.add("iao");
  287. ym_q.add("ie");
  288. ym_q.add("in");
  289. ym_q.add("ing");
  290. ym_q.add("iong");
  291. ym_q.add("iu");
  292. ym_q.add("u");
  293. ym_q.add("uan");
  294. ym_q.add("ue");
  295. ym_q.add("un");
  296. ym_r.add("an");// r
  297. ym_r.add("ang");
  298. ym_r.add("ao");
  299. ym_r.add("e");
  300. ym_r.add("en");
  301. ym_r.add("eng");
  302. ym_r.add("i");
  303. ym_r.add("ong");
  304. ym_r.add("ou");
  305. ym_r.add("u");
  306. ym_r.add("ua");
  307. ym_r.add("uan");
  308. ym_r.add("ui");
  309. ym_r.add("un");
  310. ym_r.add("uo");
  311. ym_s.add("a");// s
  312. ym_s.add("ai");
  313. ym_s.add("an");
  314. ym_s.add("ang");
  315. ym_s.add("ao");
  316. ym_s.add("e");
  317. ym_s.add("en");
  318. ym_s.add("eng");
  319. ym_s.add("i");
  320. ym_s.add("ong");
  321. ym_s.add("ou");
  322. ym_s.add("u");
  323. ym_s.add("uan");
  324. ym_s.add("ui");
  325. ym_s.add("un");
  326. ym_s.add("uo");
  327. ym_t.add("a");// t
  328. ym_t.add("ai");
  329. ym_t.add("an");
  330. ym_t.add("ang");
  331. ym_t.add("ao");
  332. ym_t.add("e");
  333. ym_t.add("ei");
  334. ym_t.add("eng");
  335. ym_t.add("i");
  336. ym_t.add("ian");
  337. ym_t.add("iao");
  338. ym_t.add("ie");
  339. ym_t.add("ing");
  340. ym_t.add("ong");
  341. ym_t.add("ou");
  342. ym_t.add("u");
  343. ym_t.add("uan");
  344. ym_t.add("ui");
  345. ym_t.add("un");
  346. ym_t.add("uo");
  347. ym_w.add("a");// w
  348. ym_w.add("ai");
  349. ym_w.add("an");
  350. ym_w.add("ang");
  351. ym_w.add("ei");
  352. ym_w.add("en");
  353. ym_w.add("eng");
  354. ym_w.add("o");
  355. ym_w.add("u");
  356. ym_x.add("i");// x
  357. ym_x.add("ia");
  358. ym_x.add("ian");
  359. ym_x.add("iang");
  360. ym_x.add("iao");
  361. ym_x.add("ie");
  362. ym_x.add("in");
  363. ym_x.add("ing");
  364. ym_x.add("iong");
  365. ym_x.add("iu");
  366. ym_x.add("u");
  367. ym_x.add("uan");
  368. ym_x.add("ue");
  369. ym_x.add("un");
  370. ym_y.add("a");// y
  371. ym_y.add("an");
  372. ym_y.add("ang");
  373. ym_y.add("ao");
  374. ym_y.add("e");
  375. ym_y.add("i");
  376. ym_y.add("in");
  377. ym_y.add("ing");
  378. ym_y.add("o");
  379. ym_y.add("ong");
  380. ym_y.add("ou");
  381. ym_y.add("u");
  382. ym_y.add("uan");
  383. ym_y.add("ue");
  384. ym_y.add("un");
  385. ym_z.add("a");//
  386. ym_z.add("ai");
  387. ym_z.add("an");
  388. ym_z.add("ang");
  389. ym_z.add("ao");
  390. ym_z.add("e");
  391. ym_z.add("ei");
  392. ym_z.add("en");
  393. ym_z.add("eng");
  394. ym_z.add("i");
  395. ym_z.add("ong");
  396. ym_z.add("ou");
  397. ym_z.add("u");
  398. ym_z.add("uan");
  399. ym_z.add("ui");
  400. ym_z.add("un");
  401. ym_z.add("uo");
  402. ym_ch.add("a");// ch
  403. ym_ch.add("ai");
  404. ym_ch.add("an");
  405. ym_ch.add("ang");
  406. ym_ch.add("ao");
  407. ym_ch.add("e");
  408. ym_ch.add("en");
  409. ym_ch.add("eng");
  410. ym_ch.add("i");
  411. ym_ch.add("ong");
  412. ym_ch.add("ou");
  413. ym_ch.add("u");
  414. ym_ch.add("ua");
  415. ym_ch.add("uai");
  416. ym_ch.add("uan");
  417. ym_ch.add("uang");
  418. ym_ch.add("ui");
  419. ym_ch.add("un");
  420. ym_ch.add("uo");
  421. ym_sh.add("a");// sh
  422. ym_sh.add("ai");
  423. ym_sh.add("an");
  424. ym_sh.add("ang");
  425. ym_sh.add("ao");
  426. ym_sh.add("e");
  427. ym_sh.add("ei");
  428. ym_sh.add("en");
  429. ym_sh.add("eng");
  430. ym_sh.add("i");
  431. ym_sh.add("ou");
  432. ym_sh.add("u");
  433. ym_sh.add("ua");
  434. ym_sh.add("uai");
  435. ym_sh.add("uan");
  436. ym_sh.add("uang");
  437. ym_sh.add("ui");
  438. ym_sh.add("un");
  439. ym_sh.add("uo");
  440. ym_zh.add("a");// zh
  441. ym_zh.add("ai");
  442. ym_zh.add("an");
  443. ym_zh.add("ang");
  444. ym_zh.add("ao");
  445. ym_zh.add("e");
  446. ym_zh.add("ei");
  447. ym_zh.add("en");
  448. ym_zh.add("eng");
  449. ym_zh.add("i");
  450. ym_zh.add("ong");
  451. ym_zh.add("ou");
  452. ym_zh.add("u");
  453. ym_zh.add("ua");
  454. ym_zh.add("uai");
  455. ym_zh.add("uan");
  456. ym_zh.add("uang");
  457. ym_zh.add("ui");
  458. ym_zh.add("un");
  459. ym_zh.add("uo");
  460. ym.add(yy);
  461. ym.add(ym_b);
  462. ym.add(ym_c);
  463. ym.add(ym_d);
  464. ym.add(ym_f);
  465. ym.add(ym_g);
  466. ym.add(ym_h);
  467. ym.add(ym_j);
  468. ym.add(ym_k);
  469. ym.add(ym_l);
  470. ym.add(ym_m);
  471. ym.add(ym_n);
  472. ym.add(ym_p);
  473. ym.add(ym_q);
  474. ym.add(ym_r);
  475. ym.add(ym_s);
  476. ym.add(ym_t);
  477. ym.add(ym_w);
  478. ym.add(ym_x);
  479. ym.add(ym_y);
  480. ym.add(ym_z);
  481. ym.add(ym_ch);
  482. ym.add(ym_sh);
  483. ym.add(ym_zh);
  484. }
  485. public static String findsm(String py) {
  486. char[] py2 = py.toCharArray();// 将读入字符转为char数组
  487. int temp = 0;
  488. int index = 0;//
  489. // 遍历声母集合,匹对
  490. for (int i = 0; i < sm.size(); i++) {
  491. for (int j = 1; j <= py2.length; j++) {
  492. String py3 = String.copyValueOf(py2, 0, j);// 截取从0开始到j结束的字符串
  493. if (py3.equals(sm.get(i))) {
  494. temp = sm.get(i).length();// 对应的声母的长度
  495. index = i + 1;
  496. break;
  497. }
  498. }
  499. }
  500. if (temp != 0) {
  501. result = result + String.copyValueOf(py2, 0, temp);// 将匹对出来的声母赋给result
  502. py = py.substring(temp);
  503. }
  504. // 匹对完声母后如果字符串还么结束继续匹对韵母
  505. if (py.length() != 0) {
  506. return findym(py, index);
  507. } else {
  508. return py;
  509. }
  510. }
  511. public static String findym(String py, int index) {
  512. int temp = 0;
  513. char[] py2 = py.toCharArray();
  514. for (int i = 0; i < ym.get(index).size(); i++) {
  515. for (int j = 1; j <= py2.length; j++) {
  516. String py3 = String.copyValueOf(py2, 0, j);
  517. if (py3.equals(ym.get(index).get(i))) {
  518. temp = ym.get(index).get(i).length();
  519. break;
  520. }
  521. }
  522. }
  523. if (temp != 0) {
  524. result = result + String.copyValueOf(py2, 0, temp) + " ";
  525. py = py.substring(temp);
  526. }
  527. return py;
  528. }
  529. /**
  530. * 拼音全拼分词工具
  531. *
  532. * @param pell
  533. * @return 以空格区分的分词后的字符串
  534. */
  535. public static String trimSpell(String spell) {
  536. String s = spell;
  537. for (int i = 0; i < spell.length() * 2; i++) {
  538. if (s.length() == 0) {
  539. break;
  540. }
  541. s = findym(s, 0);
  542. s = findsm(s);
  543. }
  544. return result;
  545. }
  546. public static void main(String[] args) {
  547. //long start = System.currentTimeMillis();
  548. String spell = "woaibeijintiananmen";
  549. String result = SpellTool.trimSpell(spell);
  550. //long end = System.currentTimeMillis();
  551. //System.out.println("用时:" + (end - start) + "毫秒");
  552. System.out.println(result);
  553. }
  554. }

测试:

输入:woaibeijintiananmen

输出:wo ai bei jin tian an men
=============================

输入:sousuozhongdefenciqiyouhenduozhong

输出:sou suo zhong de fen ci qi you hen duo zhong

一种拼音分词器的JAVA实现相关推荐

  1. CentOS安装Elasticsearch_IK分词器拼音分词器_部署kibana_部署es集群

    CentOS安装Elasticsearch_IK分词器_部署kibana_部署es集群 一.部署单点es ①:创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联.这里先 ...

  2. Elasticsearch——分布式搜索引擎01(索引库、文档、RestAPI、RestClient、拼音分词器、IK分词器)

    Elasticsearch--分布式搜索引擎01(索引库.文档.RestAPI.RestClient.拼音分词器.IK分词器) 一.初识 elesticsearch 1.1 简介 1.2 倒排索引(重 ...

  3. Elasticsearch 分布式搜索引擎 -- 自动补全(拼音分词器、自定义分词器、自动补全查询、实现搜索框自动补全)

    文章目录 1. 自动补全 1.1 拼音分词器 1.2.1 自定义分词器 1.2.2 小结 1.2 自动补全 1.3 实现酒店搜索框自动补全 1.3.1 修改酒店映射结构 1.3.2 修改HotelDo ...

  4. ik与拼音分词器,拓展热词/停止词库

    说明:本篇文章讲述elasticsearch分词器插件的安装,热词库停止词库的拓展,文章后面提到elasticsearch ,都是以es简称. 以下分词器的安装以ik分词器和pinyin分词器为例说明 ...

  5. 服务器安装配置elasticsearch,kibana,IK分词器和拼音分词器,集群搭建教程

    docker安装配置elasticsearch,kibana和IK分词器 elasticsearch文章系列 前置安装docker 创建docker网络 安装Elasticsearch 运行elast ...

  6. ElasticSerach6.0.1测试拼音分词器,IK分词器,并且次测试语法

    第一步:安装ElasticSearch 6.0.1 下载ElasticSerach,下载IK分词器 由于IK和ElasticSerach已经是编译好的,不需要编译,直接在安装解压修改配置文件即可 详情 ...

  7. 使用docker安装拼音分词器

    要实现根据字母做补全,就必须对文档按照拼音分词. 在GitHub上恰好有elasticsearch的拼音分词插件. 地址:https://github.com/medcl/elasticsearch- ...

  8. 淘东电商项目(47) -商品搜索服务功能的实现(集成拼音分词器)

    引言 本文代码已提交至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/taodong-shop 在上一篇博客<淘东电商项目(46) -商品搜 ...

  9. ElasticSerach7.6.0拼音分词器安装和使用

    第一步:安装ElasticSearch 7.6.0 由于IK和ElasticSerach已经是编译好的,不需要编译,直接在安装解压修改配置文件即可 详情请见另一篇安装博客:https://www.cn ...

最新文章

  1. c++ socket框架
  2. mysql带LIKE 关键字的查询
  3. git怎样用idea拉代码_一款强大的 IDEA 代码生成器,学会用,真香!
  4. WebRtc音视频实时通信--基本术语
  5. js中的墙头草---this
  6. java防止undo空间撑爆_秒杀系统设计补坑篇(seata回顾)
  7. xcode w情ndows版,xcode Windows版安装使用介绍
  8. Mybatis高级应用 整合Ehcache
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的酒店客房管理系统
  10. 机器视觉:USB 3.0知识答疑
  11. UITableView介绍 之 复杂cell的高度计算
  12. 关于在IE浏览器下按钮或者链接点击时出现outline的解决方法
  13. 在线教育开源 java_新款SpringBoot在线教育平台开源了
  14. 图解项目研发流程与制度实例
  15. 有没有什么好用的pdf编辑软件?3款App轻松编辑所有PDF文件
  16. 二维码制作软件生成二维码时的参数设置
  17. win10计算机方差,标准差计算工具
  18. 53页PPT | 湖仓一体大数据平台解决方案
  19. Vue引入并使用Element-UI组件库的两种方式
  20. SpringBoot+Vue项目实现高校学生健康打卡系统

热门文章

  1. 连接标签 <a herf=“”></a>
  2. 全网最全,华为可信专业级认证介绍
  3. containerd导入本地镜像
  4. 10从零开始学Java之开发Java必备软件Intellij idea的安装配置与使用
  5. 差分曼彻斯特编码到底该怎么看(萌新求教)
  6. iPad应用的设计流程
  7. swift判断手机越狱代码和文件常用路径
  8. C 判断文件是否存在及读写执行权限
  9. Ledger of Harms
  10. linux命令pri,linux基本命令