淘宝IP地址库 - 代码物语-Let code talk - ITeye技术网站



淘宝IP地址库 - 代码物语-Let code talk - ITeye技术网站

于是萌生了一个想法: 处理方式如下: 要声明的是,本人不对数据的正确性作任何保证。 /** * 合并连续的、在同一城市的IP */ public void merge() { IpExample example = new IpExample(); example.createCriteria().andStateEqualTo(IpConst.State.OK); example.setOrderByClause("ipstartdigital asc"); List list = mapper.selectByExample2(example); logger.info("size={}", list.size()); Ip startIp = null; Ip endIp = null; int count = 0; for (Ip ip : list) { if (startIp == null) { startIp = ip; endIp = ip; } else { if (isMatched(endIp, ip) && isContinuous(endIp, ip) ) { endIp = ip; continue; } else { count++; insert(startIp, endIp); startIp = ip; endIp = ip; } } } if (startIp != null && endIp != null) { count++; insert(startIp, endIp); } logger.info("count={}", count); } private boolean isContinuous(Ip endIp, Ip ip) { return endIp.getIpenddigital().equals(ip.getIpstartdigital() - 1); } private void insert(Ip startIp, Ip endIp) { Ip ip = new Ip(); Helper.copyFromNotNull(ip, startIp); ip.setIpend(endIp.getIpend()); ip.setIpenddigital(endIp.

Read full article from 淘宝IP地址库 - 代码物语-Let code talk - ITeye技术网站


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts