用JAVA作恶的人

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔档案

  • 2009年7月 (3)

文章档案

  • 2009年7月 (1)

搜索

  •  

最新评论

  • 1. re: 让你的程序24小时都在赚钱![未登录]
  • www.onceso.com
  • --dd
  • 2. re: 让你的程序24小时都在赚钱![未登录]
  • www.oudetao.com 性感购物网
  • --dd
  • 3. re: 让你的程序24小时都在赚钱![未登录]
  • www.onceso.com
  • --aaa
  • 4. re: 让你的程序24小时都在赚钱!
  • 写的非常好好 ,http://www.zgsgh.com 手工活支持你
  • --手工活
  • 5. re: 让你的程序24小时都在赚钱![未登录]
  • www.linkou.cc
  • --aa

阅读排行榜

  • 1. 让你的程序24小时都在赚钱!(3267)
  • 2. 专家级程序员的10年发展之路(2119)
  • 3. 源码分享:蜘蛛抓取淘宝网上,买过某类商品的用户名(798)

评论排行榜

  • 1. 让你的程序24小时都在赚钱!(11)
  • 2. 专家级程序员的10年发展之路(9)
  • 3. 源码分享:蜘蛛抓取淘宝网上,买过某类商品的用户名(0)

Powered by: 博客园
模板提供:沪江博客
BlogJava | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2009年7月9日

专家级程序员的10年发展之路
     摘要: 首先,对于一个领域的专家来说,至少需要10年以上经验、知识的积累。
本人在IT这条路上走了10余年了,不敢说自己是专家级程序员,
但近几年所带的开发团队里,还真出了几个专家级别的程序员,如果他们算是千里马,那我顶多算个饲养员吧:)。
下面总结一下这些人的特点,希望能给大家启发。  阅读全文
posted @ 2009-07-09 17:08 yellowzf 阅读(2119) | 评论 (9) | 编辑 收藏
 

2009年7月3日

让你的程序24小时都在赚钱!

程序员是一群聪明又勤奋的人,应该过上富足的生活。
然而在中国,大部份程序员的命运是这样的:
22岁大学毕业,加入了入不敷出的小IT公司,从事低级的编码工作,付出超额劳动,赚取微薄的工资。。。
26岁,为之奋斗了几年的公司发展起来了,但由于程序员不擅人事斗争被利益阶级排挤在外,几年的辛苦劳作却给他人做了嫁衣。。。
29岁,几年动荡的职场生涯,没留下太多的财富积累,又要面对取妻、购房、生子带来的生活压力。。。
32岁,而立之年,回首青春,一声叹息。。
如何能摆脱这道“程序员魔咒”呢?下面还是来讲个小故事,道理就在其中了。


1、留意每一个改变命运的机会,多做尝试。
小张是web工程师,一年前出于兴趣,自己做了个音乐/娱乐类网站,经过了建站、推广之后,网站每日流量5000IP,于是就开始挂上google广告,一个月下来竟有4000多元的收入。
小张复制了这一模式又创建了技术类、游戏类、生活类等5个网站,广告也增加了啊里妈妈、百度联盟等等,这一部份月收入已达3万多。而26岁的小张目前的工资是8000元。

2、从共赢中获得生存
frank是个java程序员,经验丰富,开发中常被同事问到“java类包找不到怎么办”,于是他搜集了常用的java类包,做成网站jar114.com 供大家查找。
由于来这个网的都是java程序员,精明的书类销售商看到了商机,于是提出广告销售分成的合作方式,据frank说目前已经在赢利了。

3、从新技术应用中寻找机会
王亮是个google技术狂热的追随者,google手机推出后,王亮立即购买了一只,用业余时间写了一个小应用程序放到google market上卖,2个月过去后,他的这款售价为0.99美元的软件,售出了2万份。王亮常说他现在连睡觉都在挣钱。


以上故事并非商业奇才的传奇成功史,而是平凡程序员的真实故事,成功谈不上,但已经足够温饱了。

各位程序员朋友看完,应该有所启发,欢迎交流。

posted @ 2009-07-03 17:00 yellowzf 阅读(3267) | 评论 (11) | 编辑 收藏
 
源码分享:蜘蛛抓取淘宝网上,买过某类商品的用户名
思路:通过淘宝搜索页链接,到达每个商品页;用正则表达式匹配出买过商品的用户名,并处理分页

大家看个意思吧,程序能运行,但taobao的购买者列表已经改成js调用了,没法直接采了。。
  1. package org.jason.web.spider.tabao;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.InputStreamReader;   
  5. import java.net.HttpURLConnection;   
  6. import java.net.URL;   
  7. import java.net.URLConnection;   
  8. import java.util.ArrayList;   
  9. import java.util.HashMap;   
  10. import java.util.List;   
  11. import java.util.Map;   
  12. import java.util.regex.Matcher;   
  13. import java.util.regex.Pattern;   
  14.   
  15.   
  16. public class UserSpider {   
  17.        
  18.     //下一页,区域正则表达式   
  19.     private static final String NEXT_PAGE="         <a href=\"(.*?)\" class=\"page-next\"><span>下一页</span></a>";   
  20.     private static final String LINK = "                                    <h3 class=\"summary\"><a href=\"(.*?)\"  target=_blank  onclick=\"(.*?)\"  class=\"EventCanSelect\">(.*?)</a></h3>";   
  21.     private static final String USER = "                                                <a href=\"http://space.taobao.com/(.*?)/portal/personal_portal.htm\" target=\"_blank\">(.*?)</a>";   
  22.        
  23.     private  static final String PAR= "?bid_page=1&page_size=100&is_start=true" ;   
  24.        
  25.     private static final int I_BREAK = 2;   
  26.        
  27.     /**  
  28.      * @param args  
  29.      */  
  30.     public static void main(String[] args) {   
  31.            
  32.         Map<String,String> map = new HashMap<String,String>();   
  33.            
  34.         String s="http://search1.taobao.com/browse/0/n-g,nfyg6za----------------40--commend-0-all-0.htm?at_topsearch=1&ssid=e-s5";   
  35.         List<String> l = getLinks(s);   
  36.         System.out.println("总链接数:"+l.size());   
  37.         for(String m : l)   
  38.         {   
  39.             List<String> o = getPages(m);   
  40.             System.out.println("页面数:"+o.size());   
  41.             for(String page : o)   
  42.             {   
  43.                 List<String> u = getUsers(page);   
  44.                    
  45.                 System.out.println("用户数:"+u.size());   
  46.                 for(String user : u){   
  47.                     if(map.get(user)==null){   
  48.                         map.put(user, user);   
  49.                     }   
  50.                 }   
  51.             }   
  52.         }   
  53.            
  54.         for(Map.Entry<String, String> entryTemp : map.entrySet()){   
  55.             System.out.println(entryTemp.getKey());   
  56.             //保存用户...   
  57.         }   
  58.            
  59.     }   
  60.   
  61.     private static List<String> getPages(String sUrl)   
  62.     {   
  63.         List<String> m = new ArrayList<String>();   
  64.         String sText = readURL(sUrl,false,System.getProperty("line.separator"));   
  65.         m = replaceAll(sText,LINK,1);   
  66.         return m;   
  67.     }   
  68.        
  69.        
  70.     /**  
  71.      * 取得页面内用户名  
  72.      * @param sUrl  
  73.      * @return  
  74.      */  
  75.     private static List<String> getUsers(String sUrl)   
  76.     {   
  77.         List<String> m = new ArrayList<String>();   
  78.         sUrl= sUrl+PAR;   
  79.         //System.out.println("页面:"+sUrl);   
  80.         String sText = readURL(sUrl,false,System.getProperty("line.separator"));   
  81.         m = replaceAll(sText,USER,2);   
  82.         return m;   
  83.     }   
  84.   
  85.     /**  
  86.      * 取得所有分页链接  
  87.      * @param baseUrl  
  88.      * @return  
  89.      */  
  90.     private static List<String> getLinks(String baseUrl)   
  91.     {   
  92.         List<String> s =new ArrayList<String>();   
  93.            
  94.         if ("".equals(baseUrl) || baseUrl==null){   
  95.             return s;   
  96.         }   
  97.            
  98.         String cur_url = baseUrl;   
  99.         s.add(cur_url);   
  100.         int i=0;   
  101.         String sText= "";   
  102.         while(true)   
  103.         {   
  104.                
  105.             sText = readURL(cur_url,false,System.getProperty("line.separator"));   
  106.                
  107.             if("".equals(sText))   
  108.             {   
  109.                 break;   
  110.             }   
  111.                
  112.             cur_url="";   
  113.                
  114.             cur_url = replace(sText,NEXT_PAGE,1);   
  115.                
  116.             if("".equals(cur_url))   
  117.             {   
  118.                 break;   
  119.             }   
  120.                
  121.             s.add(cur_url);   
  122.                
  123.                
  124.             //防止死循环   
  125.             i++;   
  126.             if(i>I_BREAK)   
  127.             {   
  128.                 break;   
  129.             }   
  130.         }   
  131.            
  132.         return s;   
  133.     }   
  134.   
  135.     // 得到正则表达式,所匹配的内容   
  136.     public static String replace(String str, String pattern, int place)   
  137.     {   
  138.         String result = "";   
  139.         if (str==null || "".equals(str))   
  140.             return result;   
  141.         else  
  142.         {   
  143.             try  
  144.             {   
  145.                 Pattern p = compile(pattern, 2);   
  146.                 Matcher m = p.matcher(str);   
  147.                 if (m.find())   
  148.                     result = m.group(place);   
  149.             }   
  150.             catch (Exception ex)   
  151.             {   
  152.                 ex.printStackTrace();   
  153.             }   
  154.   
  155.             return result;   
  156.         }   
  157.     }   
  158.   
  159.        
  160.     public static List<String> replaceAll(String str, String pattern,int i)   
  161.     {   
  162.         List<String> result = new ArrayList <String>();   
  163.            
  164.         if (str==null || "".equals(str))   
  165.             return result;   
  166.         else  
  167.         {   
  168.             try  
  169.             {   
  170.                 Pattern p = Pattern.compile(pattern);   
  171.                 Matcher m = p.matcher(str);   
  172.                 while (m.find()){   
  173.                     result.add(m.group(i));   
  174.                 }   
  175.             }   
  176.             catch (Exception ex)   
  177.             {   
  178.                 ex.printStackTrace();   
  179.             }   
  180.   
  181.             return result;   
  182.         }   
  183.     }      
  184.        
  185.        
  186.     public static Pattern compile(String pattern, int mode)   
  187.     {   
  188.         return Pattern.compile(pattern, mode);   
  189.     }      
  190.        
  191.     public static String readURL(String url, boolean isPost, String line)   
  192.     {   
  193.         BufferedReader bufferedReader;   
  194.         StringBuffer sBuffer = new StringBuffer();   
  195.         try  
  196.         {   
  197.             URL urlPath = new URL(url);   
  198.             URLConnection urlConnection = urlPath.openConnection();   
  199.             HttpURLConnection httpURL = (HttpURLConnection) urlConnection;   
  200.                
  201.             if (isPost) httpURL.setRequestMethod("POST");   
  202.   
  203.             try  
  204.             {   
  205.                 httpURL.connect();   
  206. //                System.out.println("内容类型: "+httpURL.getContentType());    
  207. //                System.out.println("内容编码: "+httpURL.getContentEncoding());    
  208. //                System.out.println("内容长度: "+httpURL.getContentLength());    
  209. //                System.out.println("创建日期: "+new Date(httpURL.getDate()));    
  210. //                System.out.println("最后修改日期: "+new Date(httpURL.getLastModified()));    
  211. //                System.out.println("终止日期: "+new Date(httpURL.getExpiration()));                    
  212.             }   
  213.             catch (Exception e)   
  214.             {   
  215.                 e.printStackTrace();   
  216.             }   
  217.                
  218.             int httpResult = httpURL.getResponseCode();   
  219.             if (httpResult == HttpURLConnection.HTTP_OK)   
  220.             {   
  221.                    
  222.                 bufferedReader = new BufferedReader(new InputStreamReader(httpURL.getInputStream()));   
  223.                 String sContent;   
  224.                    
  225.                 while ((sContent = bufferedReader.readLine()) != null)   
  226.                 {   
  227.                     sBuffer.append(sContent).append(line);   
  228.                 }   
  229.   
  230.                 bufferedReader.close();   
  231.             }   
  232.                
  233.             httpURL.disconnect();   
  234.         }   
  235.         catch (Exception ex)   
  236.         {   
  237.             ex.printStackTrace();   
  238.         }   
  239. //   
  240.         return sBuffer.toString();   
  241.     }      
  242.        
  243.        
  244. }  
posted @ 2009-07-03 11:28 yellowzf 阅读(798) | 评论 (0) | 编辑 收藏
 
仅列出标题