(HttpClient技术)(HttpClient入门)HttpClient使用详细介绍

1 前言

        网络自动化操作,已经是网络发展中的一个重要趋势,很多复杂繁琐的操作,手动完成,得花费大量的时间,所以,网络自动化操作,就变得越来越普遍,越来越重要。很多应用,都可以使用网络自动化工具去完成,比如批量登陆签到,批量刷票,批量注册邮箱,批量查询用户余额等,那么网络自动化,在java中,应该用什么工具去开发呢,那么首先想到的应该就是HttpClient了,它是网络自动化操作方面,使用起来,实在是太方便了,应用也及其广泛。其他工具,比如HtmlUnit,虽然也有一定的使用,但是比起HttpClient来,实在差的太远了,那么HttpClient到底是什么,到底应该怎么使用呢,我在这里做一个介绍吧.

2 HttpClient介绍

        HttpClient 是 Apache Jakarta Common 下的子项目,它封装了java中URLConnection工具,并且将URLConnection的方法使用,都做了优化,更好的兼容了Http的访问和使用,更好的管理了缓存和Cookies,并且兼容了所有的Http访问的方法,使得,所有的网站,都可以使用这个工具来访问,现在HttpClient最新版本为 4.4,但是最经典的版本是3.x,当然4.3以上的版本,也是相当好用的。
        HttpClient 中,兼容了网络中常用的两种请求方法,分别是get和post,这两种方法,在3.x和4.x中的方法名,都是不一样的(当然,4.x封装的更为完全),但并不是说4.x就是最好用的版本,其实,3.x也有自己独到的一面,在对ssl处理方面,就比4.x,好用的多了。
        简单介绍就说这么多了,下面就对,HttpClient的使用步骤,作个介绍;

3 HttpClient需要的jar包

        HttpClint版本不一样,所需要的jar包也是不一样的,这里就简单介绍一下3.x和4.x所需要的jar包:

        HttpClient3.x需要的jar包:
        commons-httpclient-3.1.jar,commons-codec.jar,commons-io-1.4.jar,commons-lang-2.4.jar,commons-logging-1.1.jar,log4j-1.2.16.jar
        HttpClient4.x需要的jar包:
        httpclient-4.1.1.jar,httpclient-cache-4.1.1.jar,httpcore-4.1.jar,httpmime-4.1.1.jar,commons-logging-1.0.jar,log4j-1.2.16.jar
        后面,我会提供一个专门的 地址给大家,方面下载;

4 HttpClient开发步骤

        开发步骤,大体如下:
        a 首先创建HttpClient实例
        b 创建请求的方法,get请求创建get方法,post请求创建post方法
        c 对创建的方法设置请求头(Header)setRequestHeader(setHeader)
        d 使用httpClient实例,请求方法httpClient.executeMethod(g1)(httpClient.execute(g1))
        e 查看请求状态,是否成功,(g1.getStatusCode() ),200表示请求成功
        f 得到请求后的数据,如请求后的网页,请求后的cookies
        g 释放链接,做其他处理;

5 与HttpClient配套的抓包工具

        HttpClient是无法查看数据包的,如果我们要模拟网页行为,我们必须知道,网页都做所做了什么操作,传了什么参数,用了什么方法,那么,就只能使用抓包工具了,下面介绍几种与之相配用的工具:
        首先,最好用,最广泛的,当然是HttpWatch了,这个兼容ie,使用起来,也很方便
        然后,就是Fiddler,这个工具,使用人数也很多,他能兼容更多的浏览器
        其他,其他的工具也多种多样,我们可以根据自己的需求,选择适合的工具

6 HttpClient开发实例

        HttpClient有3.x和4.x等版本可以使用,这里上传一些例子,仅供学习和参考;
        HttpClient3.x的163邮箱登陆的例子,仅供大家参考:

    HttpClient httpClient =  new HttpClient();   
    httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(60000);
        httpClient.getHttpConnectionManager().getParams().setSoTimeout(60000);

        httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY); 

        if(ip!=null && !ip.equals("")){
            httpClient.getHostConfiguration().setProxy(ip, port) ;
        }

        GetMethod g1 = null;
        GetMethod g2 = null;
        PostMethod g3 = null;
        GetMethod g4 = null;
        GetMethod g5 = null;
        GetMethod g6 = null;
        GetMethod g67 = null;
        //TBlog 
        try {
            g1 = new GetMethod("http://mail.163.com/") ;

            g1.setRequestHeader("Accept", "text/html, application/xhtml+xml, */*") ;
            g1.setRequestHeader("Accept-Language", "zh-CN") ;
            g1.setRequestHeader("Connection", "Keep-Alive") ;
            g1.setRequestHeader("Host", "mail.163.com") ;
            //g1.setRequestHeader("Referer", "http://chuangshi.qq.com/") ;
            g1.setRequestHeader("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)") ;


            //g1.setRequestHeader("Cookie", cookies) ;

            httpClient.executeMethod(g1) ;
            String sg1 = g1.getResponseBodyAsString() ;
            //System.out.println(sg1);

            if(g1.getStatusCode() == 200 ){





                String cookies = "starttime="+System.currentTimeMillis()+"; logType=; nts_mail_user="+username+":-1:1; df=mail163_letter" ;
                String urls = "https://mail.163.com/entry/cgi/ntesdoor?df=" +
                        "mail163_letter" +
                        "&from=web" +
                        "&funcid=loginone" +
                        "&iframe=1" +
                        "&language=-1" +
                        "&passtype=1" +
                        "&product=mail163" +
                        "&net=c&style=-1" +
                        "&race=45_51_179_bj" +
                        "&uid=" +username;
                g3 = new PostMethod(urls) ;

                g3.setRequestHeader("Accept", "text/html, application/xhtml+xml, */*") ;
                g3.setRequestHeader("Accept-Language", "zh-CN") ;
                g3.setRequestHeader("Connection", "Keep-Alive") ;
                g3.setRequestHeader("Host", "mail.163.com") ;
                g3.setRequestHeader("Referer", "http://mail.163.com/") ;
                g3.setRequestHeader("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)") ;                   
                g3.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8") ;
                g3.setRequestHeader("Cookie", cookies) ;
                NameValuePair[] data = {
                        new NameValuePair("password",secret),
                        new NameValuePair("savelogin","0"),
                        new NameValuePair("url2","http://mail.163.com/errorpage/error163.htm"),
                        new NameValuePair("username",username)
                };
                g3.setRequestBody(data);
                g3.setRequestHeader("Content-Length", g3.getRequestEntity().getContentLength()+"") ;


                httpClient.executeMethod(g3) ;
                String sg3 = g3.getResponseBodyAsString() ;


                System.out.println(g3.getStatusCode()) ;

                if(g3.getStatusCode()==200  && sg3.indexOf("http://mail.163.com/js6/main.jsp")!=-1){

                    String cookiessession = "" ;
                    Cookie[] cookiesssession = httpClient.getState().getCookies();
                    for (Cookie c : cookiesssession) {
                        cookiessession += c.toString() + ";" ;

                    }
                    System.out.println("cookiessession:" + cookiessession);



                    String urlmain = "" ;
                    sg3 = sg3.substring(sg3.indexOf("http://mail.163.com/js6/main.jsp")) ;
                    urlmain = sg3.substring(0, sg3.indexOf("\"")) ;

                    if(urlmain.indexOf("sid=")!=-1){
                        String newurlmain = urlmain.substring(urlmain.indexOf("sid=")+4) ;
                        if(newurlmain.indexOf("&")!=-1){
                            sid = newurlmain.substring(0, newurlmain.indexOf("&")) ;
                        }
                    }

                    g1 = new GetMethod(urlmain) ;

                    g1.setRequestHeader("Accept", "text/html, application/xhtml+xml, */*") ;
                    g1.setRequestHeader("Accept-Language", "zh-CN") ;
                    g1.setRequestHeader("Connection", "Keep-Alive") ;
                    g1.setRequestHeader("Host", "mail.163.com") ;
                    //g1.setRequestHeader("Referer", "http://chuangshi.qq.com/") ;
                    g1.setRequestHeader("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)") ;


                    g1.setRequestHeader("Cookie", cookiessession+cookies) ;

                    httpClient.executeMethod(g1) ;
                    String sg11 = g1.getResponseBodyAsString() ;
                    //System.out.println(sg11) ;
                    if(g1.getStatusCode()==200 && sg11.indexOf("网易邮箱"</span>)!=-<span class="hljs-number">1</span> && sg11<span class="hljs-preprocessor">.indexOf</span>(<span class="hljs-string">"?ssid="</span>)!=-<span class="hljs-number">1</span>){
                        String cookiessession1 = <span class="hljs-string">""</span> <span class="hljs-comment">;</span>
                        Cookie[] cookiesssession1 = httpClient<span class="hljs-preprocessor">.getState</span>()<span class="hljs-preprocessor">.getCookies</span>()<span class="hljs-comment">;</span>
                        for (Cookie c : cookiesssession1) {
                            cookiessession1 += c<span class="hljs-preprocessor">.toString</span>() + <span class="hljs-string">";"</span> <span class="hljs-comment">;</span>
                            if(c<span class="hljs-preprocessor">.toString</span>()<span class="hljs-preprocessor">.indexOf</span>(<span class="hljs-string">"NTES_SESS="</span>)!=-<span class="hljs-number">1</span>){
                                NTES_SESS = c<span class="hljs-preprocessor">.toString</span>()<span class="hljs-preprocessor">.replace</span>(<span class="hljs-string">"NTES_SESS="</span>, <span class="hljs-string">""</span>) <span class="hljs-comment">;</span>
                            }
                            if(c<span class="hljs-preprocessor">.toString</span>()<span class="hljs-preprocessor">.indexOf</span>(<span class="hljs-string">"Coremail="</span>)!=-<span class="hljs-number">1</span>){
                                Coremail = c<span class="hljs-preprocessor">.toString</span>()<span class="hljs-preprocessor">.replace</span>(<span class="hljs-string">"Coremail="</span>, <span class="hljs-string">""</span>) <span class="hljs-comment">;</span>
                            }
                        }
                        System<span class="hljs-preprocessor">.out</span><span class="hljs-preprocessor">.println</span>(<span class="hljs-string">"cookiessession:"</span> + cookiessession1)<span class="hljs-comment">;</span>

                        sg11 = sg11<span class="hljs-preprocessor">.substring</span>(sg11<span class="hljs-preprocessor">.indexOf</span>(<span class="hljs-string">"?ssid="</span>)+<span class="hljs-number">6</span>) <span class="hljs-comment">;</span>
                        ssid = sg11<span class="hljs-preprocessor">.substring</span>(<span class="hljs-number">0</span>, sg11<span class="hljs-preprocessor">.indexOf</span>(<span class="hljs-string">"'"</span>))<span class="hljs-comment">;</span>


                        String cossss = cookiessession1 + cookies <span class="hljs-comment">;</span>
                        re = true <span class="hljs-comment">;</span>
                        cookiess = cossss <span class="hljs-comment">;</span>

                    }else{
                        System<span class="hljs-preprocessor">.out</span><span class="hljs-preprocessor">.println</span>(<span class="hljs-string">"2"</span>)<span class="hljs-comment">;</span>
                        errorinfo = <span class="hljs-string">"登录失败,进入main.jsp失败"</span> <span class="hljs-comment">;</span>
                    }

                }else{
                    System<span class="hljs-preprocessor">.out</span><span class="hljs-preprocessor">.println</span>(<span class="hljs-string">"2"</span>)<span class="hljs-comment">;</span>
                    errorinfo = <span class="hljs-string">"登录失败,密码或者账号有误"</span> <span class="hljs-comment">;</span>
                }
            }else{
                System<span class="hljs-preprocessor">.out</span><span class="hljs-preprocessor">.println</span>(<span class="hljs-string">"1"</span>)<span class="hljs-comment">;</span>
                errorinfo = <span class="hljs-string">"登录失败,无法访问163网站,请换ip"</span> <span class="hljs-comment">;</span>
            }

        }catch(Exception e){
            System<span class="hljs-preprocessor">.out</span><span class="hljs-preprocessor">.println</span>(e<span class="hljs-preprocessor">.toString</span>())<span class="hljs-comment">;</span>
            //e<span class="hljs-preprocessor">.printStackTrace</span>() <span class="hljs-comment">;</span>
        }finally{
            if(g1!=null){
                g1<span class="hljs-preprocessor">.releaseConnection</span>() <span class="hljs-comment">;</span>
            }
            if(g2!=null){
                g2<span class="hljs-preprocessor">.releaseConnection</span>() <span class="hljs-comment">;</span>
            }
            if(g3!=null){
                g3<span class="hljs-preprocessor">.releaseConnection</span>() <span class="hljs-comment">;</span>
            }
            if(g4!=null){
                g4<span class="hljs-preprocessor">.releaseConnection</span>() <span class="hljs-comment">;</span>
            }
            if(g5!=null){
                g5<span class="hljs-preprocessor">.releaseConnection</span>() <span class="hljs-comment">;</span>
            }

            if(g67!=null){
                g67<span class="hljs-preprocessor">.releaseConnection</span>() <span class="hljs-comment">;</span>
            }
        }</code></pre> 
  <p>谢谢,欢迎大家 联系 ,大家相互进步!</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1288355648794337280"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(HttpClient,网络爬虫)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1943162636753498112.htm"
                           title="Python 网络爬虫的基本流程及 robots 协议详解" target="_blank">Python 网络爬虫的基本流程及 robots 协议详解</a>
                        <span class="text-muted">女码农的重启</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">网络爬虫</a><a class="tag" taget="_blank" href="/search/JAVA/1.htm">JAVA</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>数据驱动的时代,网络爬虫作为高效获取互联网信息的工具,其规范化开发离不开对基本流程的掌握和对robots协议的遵守。本文将系统梳理Python网络爬虫的核心流程,并深入解读robots协议的重要性及实践规范。一、Python网络爬虫的基本流程Python网络爬虫的工作过程可分为四个核心阶段,每个阶段环环相扣,共同构成数据采集的完整链路。1.1发起网络请求这是爬虫与目标服务器交互的第一步,通过发送H</div>
                    </li>
                    <li><a href="/article/1943138810887991296.htm"
                           title="Python爬虫实战:使用最新技术爬取头条新闻数据" target="_blank">Python爬虫实战:使用最新技术爬取头条新闻数据</a>
                        <span class="text-muted">Python爬虫项目</span>
<a class="tag" taget="_blank" href="/search/2025%E5%B9%B4%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE/1.htm">2025年爬虫实战项目</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/scrapy/1.htm">scrapy</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a>
                        <div>一、前言:Python爬虫在现代数据获取中的重要性在当今信息爆炸的时代,数据已经成为最宝贵的资源之一。作为数据获取的重要手段,网络爬虫技术在各个领域发挥着越来越重要的作用。Python凭借其简洁的语法、丰富的库生态系统和强大的社区支持,已经成为网络爬虫开发的首选语言。本文将详细介绍如何使用Python及其最新的爬虫技术来爬取头条新闻数据。我们将从基础概念讲起,逐步深入到高级技巧,最后给出完整的爬虫</div>
                    </li>
                    <li><a href="/article/1943132256293941248.htm"
                           title="第二十八:Fiddler抓包-抓取Android7.0以上的Https包(三)-夜神模拟器+Xposed+JustTrustMe" target="_blank">第二十八:Fiddler抓包-抓取Android7.0以上的Https包(三)-夜神模拟器+Xposed+JustTrustMe</a>
                        <span class="text-muted">卢卡平头哥</span>
<a class="tag" taget="_blank" href="/search/Fiddler/1.htm">Fiddler</a><a class="tag" taget="_blank" href="/search/fiddler/1.htm">fiddler</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>一.简介1.二次加密:有的APP,在涉及到关键数据通信时,会将正文二次加密后才通过HTTPS发送1.1.抓包抓到的是一堆二进制base642.自带HTTPClient:像支付宝那样的变态,自己带一个基于so的HTTPClient库2.1.对于关键数据,都不走URLConnection和OkHttp,而是走自己的HTTPClient库2.2.甚至一些</div>
                    </li>
                    <li><a href="/article/1943054469818281984.htm"
                           title="Vlang编写爬虫可行性分析" target="_blank">Vlang编写爬虫可行性分析</a>
                        <span class="text-muted"></span>

                        <div>最近有人问V(Vlang)语言可以用来做数据采集么,那么我在这里明确告诉你,V(Vlang)完全可以用来编写网络爬虫。虽然它主打的是系统编程语言,但其设计目标包括简洁、高效和实用性,这使得它在处理像爬虫这样的网络任务时也表现出色。V的并发模型适合高并发爬虫,但实际效果待测试。最后给出一个简单例子展示基础流程,同时指出生态限制,避免用户期望过高。个人建议如果项目复杂,可能选Python更省力,毕竟p</div>
                    </li>
                    <li><a href="/article/1942867544595558400.htm"
                           title="Python爬企查查网站数据的爬虫代码如何写?" target="_blank">Python爬企查查网站数据的爬虫代码如何写?</a>
                        <span class="text-muted">cda2024</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在大数据时代,数据的获取与分析变得尤为重要。企业信息查询平台“企查查”作为国内领先的企业信用信息查询工具,提供了丰富的企业数据资源。对于数据科学家和工程师而言,能够从这些平台高效地抓取数据,无疑是一项重要的技能。本文将详细介绍如何使用Python编写爬虫代码,从企查查网站抓取企业数据,并探讨其中的技术难点和解决方案。为什么选择Python?Python是一门广泛应用于数据科学和网络爬虫开发的语言,</div>
                    </li>
                    <li><a href="/article/1942858087555723264.htm"
                           title="Python爬虫实战:研究HTTP Agent Parser 库相关技术" target="_blank">Python爬虫实战:研究HTTP Agent Parser 库相关技术</a>
                        <span class="text-muted">ylfhpy</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/1.htm">爬虫项目实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a>
                        <div>1.引言1.1研究背景与意义在当今数字化时代,网络数据作为一种重要的信息资源,在商业决策、学术研究、社会分析等领域发挥着越来越重要的作用。网络爬虫作为一种自动获取网页内容的技术,成为了获取这些数据的重要工具。然而,随着网络爬虫的广泛使用,网站也采取了各种反爬机制来保护自身数据和服务安全。其中,用户代理(User-Agent)检测是一种常见的反爬手段。网站通过分析请求的User-Agent信息,识别</div>
                    </li>
                    <li><a href="/article/1942857960623501312.htm"
                           title="Python爬虫实战:研究pyparsing工具相关技术" target="_blank">Python爬虫实战:研究pyparsing工具相关技术</a>
                        <span class="text-muted">ylfhpy</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/1.htm">爬虫项目实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/pyparsing/1.htm">pyparsing</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E6%9C%AC%E5%A4%84%E7%90%86/1.htm">文本处理</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E6%9C%AC%E5%88%86%E6%9E%90/1.htm">文本分析</a>
                        <div>1.引言在当今信息爆炸的时代,网络上存在着海量的非结构化文本数据。如何从这些数据中提取有价值的信息,成为了数据科学领域的一个重要研究方向。网络爬虫技术可以帮助我们自动获取这些数据,而Pyparsing则提供了强大的语法分析能力,可以将非结构化的文本转换为结构化的信息。本文将介绍一个完整的案例,展示如何使用Python的爬虫技术结合Pyparsing工具,构建一个网络内容分析系统。该系统可以爬取特定</div>
                    </li>
                    <li><a href="/article/1942842584028213248.htm"
                           title="156个Python网络爬虫资源,妈妈再也不用担心你找不到资源!_爬虫 csdn资源" target="_blank">156个Python网络爬虫资源,妈妈再也不用担心你找不到资源!_爬虫 csdn资源</a>
                        <span class="text-muted"></span>

                        <div>本列表包含Python网页抓取和数据处理相关的库。网络相关通用urllib-网络库(标准库)requests-网络库grab-网络库(基于pycurl)pycurl-网络库(与libcurl绑定)urllib3-具有线程安全连接池、文件psot支持、高可用的PythonHTTP库httplib2-网络库RoboBrowser-一个无需独立浏览器即可访问网页的简单、pythonic的库Mechani</div>
                    </li>
                    <li><a href="/article/1942796443651731456.htm"
                           title="Vlang编写轻量化多线程爬虫" target="_blank">Vlang编写轻量化多线程爬虫</a>
                        <span class="text-muted">q56731523</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/typescript/1.htm">typescript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>Vlang作为新兴语言,他简单、快速和安全让爬虫有不一样的体验。在V中,并发模型基于轻量级的协程(称为goroutines,类似于Go语言的goroutine)和通道(channels)来实现。虽然说V语言目前还在快速发展中,但它的并发特性已经可以用于构建多线程(实际上是协程)应用程序,例如网络爬虫。所以说,用V语言(Vlang)完全支持编写多线程爬虫。它提供了强大的并发模型和网络库,非常适合高效</div>
                    </li>
                    <li><a href="/article/1942332511564656640.htm"
                           title="构建未来交互体验:AG-UI 如何赋能智能体与前端通信?" target="_blank">构建未来交互体验:AG-UI 如何赋能智能体与前端通信?</a>
                        <span class="text-muted">ChaITSimpleLove</span>
<a class="tag" taget="_blank" href="/search/AG-UI/1.htm">AG-UI</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E4%BD%93%E4%B8%8E%E7%94%A8%E6%88%B7%E4%BA%A4%E4%BA%92%E5%8D%8F%E8%AE%AE/1.htm">智能体与用户交互协议</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E4%BD%93%E4%B8%8E%E7%94%A8%E6%88%B7%E4%BA%A4%E4%BA%92%E6%A0%87%E5%87%86%E5%8C%96/1.htm">智能体与用户交互标准化</a><a class="tag" taget="_blank" href="/search/CopilotKit/1.htm">CopilotKit</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%94%BE%E7%9A%84/1.htm">开放的</a><a class="tag" taget="_blank" href="/search/%E8%BD%BB%E9%87%8F%E7%9A%84/1.htm">轻量的</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E4%BA%8E%E4%BA%8B%E4%BB%B6%E7%9A%84%E5%8D%8F%E8%AE%AE/1.htm">基于事件的协议</a>
                        <div>目录什么是AG-UI?⚙️AG-UI主要解决什么问题?AG-UI介绍️核心组件1.协议层(ProtocolLayer)2.标准HTTP客户端(StandardHTTPClient)3.消息类型(MessageType)4.运行Agent(RunningAgent)5.状态管理(StateManagement)️6.工具和交接(ToolsandHandoff)事件(Events)MCPvsA2Avs</div>
                    </li>
                    <li><a href="/article/1942267064966246400.htm"
                           title="python笔记-Selenium谷歌浏览器驱动下载" target="_blank">python笔记-Selenium谷歌浏览器驱动下载</a>
                        <span class="text-muted">hero.zhong</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a>
                        <div>Selenium谷歌浏览器驱动下载地址:https://googlechromelabs.github.io/chrome-for-testing/#stable下面是遇到的问题:python网络爬虫技术中使用谷歌浏览器代码,报错:OSError:[WinError193]%1不是有效的Win32应用程序:遇到错误OSError:[WinError193]%1不是有效的Win32应用程序通常意味着</div>
                    </li>
                    <li><a href="/article/1942197210590539776.htm"
                           title="爬虫的笔记整理" target="_blank">爬虫的笔记整理</a>
                        <span class="text-muted">咸鱼时日翻身</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>网络爬虫首先要认识http和https协议在浏览器中发送一个http请求:1.输入一个URL地址之后,向http服务器发送请求,主要分为GET和POST两种方法2.输入URL之后,发送一个request请求,这时候服务器把response文件对象发送回浏览器3.浏览器中解析返回的HTML,其中引用了许多的其他文件,images,css文件,JS文件等,再次法中request去获取这些内容4.所有的</div>
                    </li>
                    <li><a href="/article/1942092839873736704.htm"
                           title="[netty5: HttpServerCodec & HttpClientCodec]-源码分析" target="_blank">[netty5: HttpServerCodec & HttpClientCodec]-源码分析</a>
                        <span class="text-muted">idolyXyz</span>
<a class="tag" taget="_blank" href="/search/netty5-%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB/1.htm">netty5-源码阅读</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a>
                        <div>在阅读该篇文章之前,推荐先阅读以下内容:[netty5:ChannelHandler&ChannelHandlerAdapter]-源码解析[netty5:HttpObjectEncoder&HttpObjectDecoder]-源码解析HttpServerCodecHttpServerCodec是一个Netty编解码器,结合HttpRequestDecoder和HttpResponseEncod</div>
                    </li>
                    <li><a href="/article/1941771684780503040.htm"
                           title="AndroidStudio用华为手机调试出现联网即闪退问题的解决办法" target="_blank">AndroidStudio用华为手机调试出现联网即闪退问题的解决办法</a>
                        <span class="text-muted">鹿小黑</span>
<a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>第一步:调试一开始出现的错误:java.lang.NoClassDefFoundError:Failedresolutionof:Lorg/apache/http/impl/client/DefaultHttpClient解决方法:在manifest.xml文件中的application节点下添加第二步:执行上述步骤后调试出现的错误:java.io.IOException:Cleartexttra</div>
                    </li>
                    <li><a href="/article/1941544110091464704.htm"
                           title="Java简易爬虫:抓取京东图书信息实战指南" target="_blank">Java简易爬虫:抓取京东图书信息实战指南</a>
                        <span class="text-muted">黃昱儒</span>

                        <div>本文还有配套的精品资源,点击获取简介:本项目展示如何使用Java语言创建一个网络爬虫来抓取京东网站的图书信息。介绍使用Maven作为构建工具,HTTP客户端库发送请求,以及Jsoup或类似库解析HTML内容。讲解如何处理JavaScript动态加载内容,绕过反爬机制,并讨论数据存储和用户界面设计的策略。1.Java网络爬虫项目概述网络爬虫是一种自动获取网页内容的程序,它按照一定的规则,自动抓取互联</div>
                    </li>
                    <li><a href="/article/1941404669796478976.htm"
                           title="java中http调用接口 传参为form-data" target="_blank">java中http调用接口 传参为form-data</a>
                        <span class="text-muted">洋:Y</span>
<a class="tag" taget="_blank" href="/search/springboot/1.htm">springboot</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a>
                        <div>直接上代码@OverridepublicJSONObjectgetCameraList(intcurrent,intsize,Stringcode,Stringname)throwsIOException{DefaultHttpClientclient=newDefaultHttpClient();MultipartEntityBuilderbuilder=MultipartEntityBuild</div>
                    </li>
                    <li><a href="/article/1941101362452426752.htm"
                           title="Java爬虫技术详解:原理、实现与优势" target="_blank">Java爬虫技术详解:原理、实现与优势</a>
                        <span class="text-muted">cyc&阿灿</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>一、什么是网络爬虫?网络爬虫(WebCrawler),又称网络蜘蛛或网络机器人,是一种自动化程序,能够按照一定的规则自动浏览和抓取互联网上的信息。爬虫技术是大数据时代获取网络数据的重要手段,广泛应用于搜索引擎、数据分析、价格监控等领域。Java作为一种稳定、高效的编程语言,凭借其强大的网络编程能力和丰富的生态库,成为开发网络爬虫的热门选择。二、Java爬虫核心组件一个完整的Java爬虫通常包含以下</div>
                    </li>
                    <li><a href="/article/1941100983048269824.htm"
                           title="Python网络爬虫与数据处理工具大全:从入门到精通" target="_blank">Python网络爬虫与数据处理工具大全:从入门到精通</a>
                        <span class="text-muted">俞凯润</span>

                        <div>Python网络爬虫与数据处理工具大全:从入门到精通awesome-web-scrapingListoflibraries,toolsandAPIsforwebscrapinganddataprocessing.项目地址:https://gitcode.com/gh_mirrors/aw/awesome-web-scraping本文基于知名Python网络爬虫资源库lorien/awesome-w</div>
                    </li>
                    <li><a href="/article/1941097582122037248.htm"
                           title="【Python入门】极速爬取:用Python Autoscraper库简化网络数据抓取" target="_blank">【Python入门】极速爬取:用Python Autoscraper库简化网络数据抓取</a>
                        <span class="text-muted"></span>

                        <div>️极速爬取:用PythonAutoscraper库简化网络数据抓取你是否梦想过能够以闪电般的速度从网上抓取数据,而无需深入了解复杂的爬虫技术?️是否想要一个简单易用的工具,让你快速上手网络爬虫,而不必担心代码的繁琐?如果你的答案是肯定的,那么这篇文章将是你的加速器。让我们一起探索Python的Autoscraper库,学习如何用它来简化网络数据抓取的过程。引言在信息爆炸的时代,能够快速从互联网上抓</div>
                    </li>
                    <li><a href="/article/1941075269603356672.htm"
                           title="Anconda环境下Vscode安装Python" target="_blank">Anconda环境下Vscode安装Python</a>
                        <span class="text-muted">Java后时代</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>最后Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习Python门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的Pytho</div>
                    </li>
                    <li><a href="/article/1940794268130013184.htm"
                           title="在C#中根据URL下载文件并保存到本地,可以使用以下方法(推荐使用现代异步方式)" target="_blank">在C#中根据URL下载文件并保存到本地,可以使用以下方法(推荐使用现代异步方式)</a>
                        <span class="text-muted"></span>

                        <div>方法1:使用HttpClient(异步,推荐)csharpusingSystem;usingSystem.IO;usingSystem.Net.Http;usingSystem.Threading.Tasks;classFileDownloader{publicstaticasyncTaskDownloadFileAsync(stringurl,stringlocalFilePath){using</div>
                    </li>
                    <li><a href="/article/1940758468088623104.htm"
                           title="Python爬虫实战:研究httplib2库相关技术" target="_blank">Python爬虫实战:研究httplib2库相关技术</a>
                        <span class="text-muted">ylfhpy</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/1.htm">爬虫项目实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/httplib2/1.htm">httplib2</a>
                        <div>1.引言1.1研究背景与意义随着互联网的快速发展,网络上的信息量呈爆炸式增长。如何从海量的网页中高效地获取有价值的数据,成为了当前信息技术领域的一个重要研究课题。网络爬虫作为一种自动获取互联网信息的程序,能够按照一定的规则,自动地抓取网页内容并提取和整理信息,为信息检索、数据分析、机器学习等领域提供了丰富的数据来源。在电子商务领域,爬虫可以用于价格监控、竞品分析和市场调研;在学术研究中,爬虫可以帮</div>
                    </li>
                    <li><a href="/article/1940758468847792128.htm"
                           title="Python爬虫实战:研究stdlib库相关技术" target="_blank">Python爬虫实战:研究stdlib库相关技术</a>
                        <span class="text-muted">ylfhpy</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/1.htm">爬虫项目实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/stdlib/1.htm">stdlib</a><a class="tag" taget="_blank" href="/search/%E6%A0%87%E5%87%86%E5%BA%93/1.htm">标准库</a>
                        <div>1.引言1.1研究背景与意义在当今信息爆炸的时代,互联网上的数据量呈指数级增长。网络爬虫作为一种自动获取网页内容的工具,在信息检索、数据挖掘、舆情分析等领域发挥着重要作用。Python由于其简洁的语法和丰富的库支持,成为开发网络爬虫的首选语言。本文旨在探讨如何利用Python标准库构建一个功能完整的网络爬虫系统,避免依赖过多第三方库,提高系统的可移植性和稳定性。1.2研究目标本文的研究目标是设计并</div>
                    </li>
                    <li><a href="/article/1940736398613082112.htm"
                           title="学习记录:DAY35" target="_blank">学习记录:DAY35</a>
                        <span class="text-muted">2301_79760424</span>
<a class="tag" taget="_blank" href="/search/%E6%AF%8F%E6%97%A5%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95/1.htm">每日学习记录</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>前言自从得了精神病,整个人精神多了!日程今天也早起了,美中不足的是昨天没怎么睡。本来很气很暴躁的,学了一会释怀了,反正这种状态也不是不能学,多来几天就习惯了。--------7.2--------偷懒了,这两天几乎就没干什么事情学习内容省流:redis入门HttpClient微信小程序缓存机制1.redis入门基于内存储存的数据库redis.net.cn0)安装window版本:Releases·</div>
                    </li>
                    <li><a href="/article/1940589251901059072.htm"
                           title="springboot+微信小程序接入微信小程序支付(使用证书与JSAPI)" target="_blank">springboot+微信小程序接入微信小程序支付(使用证书与JSAPI)</a>
                        <span class="text-muted">小杨HPDay!</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>1、maven引入依赖com.github.wechatpay-apiv3wechatpay-apache-httpclient0.4.52、配置文件application.yml#微信支付相关参数wx-pay:#商户id(微信支付商户平台获取)mch-id:xxxxxxxxx#公众号appid(和商户id绑定过后,微信支付商户平台或者微信公众平台获取)appid:xxxxxxxxx#商户证书序列</div>
                    </li>
                    <li><a href="/article/1940518272541716480.htm"
                           title="python协程与异步并发,同步与阻塞,异步与非阻塞,Python异步IO、协程与同步原语介绍,协程的优势和劣势" target="_blank">python协程与异步并发,同步与阻塞,异步与非阻塞,Python异步IO、协程与同步原语介绍,协程的优势和劣势</a>
                        <span class="text-muted">网小鱼的学习笔记</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>协程与异步软件系统的并发使用异步IO,无非是我们提的软件系统的并发,这个软件系统,可以是网络爬虫,也可以是web服务等并发的方式有多种,多线程,多进程,异步IO等多线程和多进程更多应用于CPU密集型的场景,比如科学计算的事件都消耗在CPU上面,利用多核CPU来分担计算任务多线程和多进程之间的场景切换和通讯代价很高,不适合IO密集型的场景,而异步IO就是非常适合IO密集型的场景,例如网络爬虫和web</div>
                    </li>
                    <li><a href="/article/1940302391890997248.htm"
                           title="推荐项目:Rust编写的终端HTTP客户端——CuTE" target="_blank">推荐项目:Rust编写的终端HTTP客户端——CuTE</a>
                        <span class="text-muted">邵冠敬Robin</span>

                        <div>推荐项目:Rust编写的终端HTTP客户端——CuTECuTEHTTPclient/libcurlTUIfrontendinRust,withrequest+keystorage项目地址:https://gitcode.com/gh_mirrors/cute1/CuTE在繁忙的开发和系统管理世界里,有时候我们需要的是一个既简单又强大的工具来处理日常的HTTP请求。CuTE(RustTUIHTTPC</div>
                    </li>
                    <li><a href="/article/1940254860834304000.htm"
                           title="如何禁止GPTBot等爬虫爬取网站内容:保护数据安全的实用指南" target="_blank">如何禁止GPTBot等爬虫爬取网站内容:保护数据安全的实用指南</a>
                        <span class="text-muted">淮橘√</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>引言随着人工智能技术的快速发展,网络爬虫(如OpenAI的GPTBot、GoogleBot、Anthropic的ClaudeBot等)被广泛用于抓取网站数据以训练AI模型或索引内容。然而,部分网站管理员可能不希望自己的内容被爬虫抓取,原因包括保护原创内容、降低服务器负载或防止数据被滥用。一、为什么需要禁止爬虫?网络爬虫可能带来以下问题:内容盗用风险:原创内容可能被AI模型或其他服务未经授权使用。服</div>
                    </li>
                    <li><a href="/article/1940195197858148352.htm"
                           title="httpclient4.5 访问 使用自签名证书的https网站 报错问题的解决" target="_blank">httpclient4.5 访问 使用自签名证书的https网站 报错问题的解决</a>
                        <span class="text-muted">cszsc</span>
<a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%AD%BE%E5%90%8D%E8%AF%81%E4%B9%A6/1.htm">自签名证书</a>
                        <div>使用下面的getHttpClient()方法代替HttpClients.createDefault()即可。(可以不是static)privatestaticCloseableHttpClientgetHttpClient(){try{SSLContextsslContext=SSLContexts.custom().loadTrustMaterial(TrustSelfSignedStrateg</div>
                    </li>
                    <li><a href="/article/1939737732980994048.htm"
                           title="爬虫基础-urllib库的使用" target="_blank">爬虫基础-urllib库的使用</a>
                        <span class="text-muted">a little peanut</span>
<a class="tag" taget="_blank" href="/search/Python3%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">Python3网络爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>注:本文章为学习过程中对知识点的记录,供自己复习使用,也给大家做个参考,如有错误,麻烦指出,大家共同探讨,互相进步。借鉴出处:该文章的路线和主要内容:崔庆才(第2版)python3网络爬虫开发实战bytes类型:https://blog.csdn.net/apple_50618492/article/details/114677967python中文官网:https://docs.python.o</div>
                    </li>
                                <li><a href="/article/11.htm"
                                       title="VMware Workstation 11 或者 VMware Player 7安装MAC OS X 10.10 Yosemite" target="_blank">VMware Workstation 11 或者 VMware Player 7安装MAC OS X 10.10 Yosemite</a>
                                    <span class="text-muted">iwindyforest</span>
<a class="tag" taget="_blank" href="/search/vmware/1.htm">vmware</a><a class="tag" taget="_blank" href="/search/mac+os/1.htm">mac os</a><a class="tag" taget="_blank" href="/search/10.10/1.htm">10.10</a><a class="tag" taget="_blank" href="/search/workstation/1.htm">workstation</a><a class="tag" taget="_blank" href="/search/player/1.htm">player</a>
                                    <div>最近尝试了下VMware下安装MacOS 系统, 
安装过程中发现网上可供参考的文章都是VMware Workstation 10以下, MacOS X 10.9以下的文章, 
只能提供大概的思路, 但是实际安装起来由于版本问题, 走了不少弯路, 所以我尝试写以下总结, 希望能给有兴趣安装OSX的人提供一点帮助。 
  
  
写在前面的话: 
其实安装好后发现, 由于我的th</div>
                                </li>
                                <li><a href="/article/138.htm"
                                       title="关于《基于模型驱动的B/S在线开发平台》源代码开源的疑虑?" target="_blank">关于《基于模型驱动的B/S在线开发平台》源代码开源的疑虑?</a>
                                    <span class="text-muted">deathwknight</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a>
                                    <div>本人从学习Java开发到现在已有10年整,从一个要自学 java买成javascript的小菜鸟,成长为只会java和javascript语言的老菜鸟(个人邮箱:deathwknight@163.com) 
 
一路走来,跌跌撞撞。用自己的三年多业余时间,瞎搞一个小东西(基于模型驱动的B/S在线开发平台,非MVC框架、非代码生成)。希望与大家一起分享,同时有许些疑虑,希望有人可以交流下 
 
平台</div>
                                </li>
                                <li><a href="/article/265.htm"
                                       title="如何把maven项目转成web项目" target="_blank">如何把maven项目转成web项目</a>
                                    <span class="text-muted">Kai_Ge</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/MyEclipse/1.htm">MyEclipse</a>
                                    <div>创建Web工程,使用eclipse ee创建maven web工程 1.右键项目,选择Project Facets,点击Convert to faceted from 2.更改Dynamic Web Module的Version为2.5.(3.0为Java7的,Tomcat6不支持). 如果提示错误,可能需要在Java Compiler设置Compiler compl</div>
                                </li>
                                <li><a href="/article/392.htm"
                                       title="主管???" target="_blank">主管???</a>
                                    <span class="text-muted">Array_06</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a>
                                    <div>转载:http://www.blogjava.net/fastzch/archive/2010/11/25/339054.html 
 
 
 
 
很久以前跟同事参加的培训,同事整理得很详细,必须得转! 
 
前段时间,公司有组织中高阶主管及其培养干部进行了为期三天的管理训练培训。三天的课程下来,虽然内容较多,因对老师三天来的课程内容深有感触,故借着整理学习心得的机会,将三天来的培训课程做了一个</div>
                                </li>
                                <li><a href="/article/519.htm"
                                       title="python内置函数大全" target="_blank">python内置函数大全</a>
                                    <span class="text-muted">2002wmj</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                                    <div>最近一直在看python的document,打算在基础方面重点看一下python的keyword、Build-in Function、Build-in Constants、Build-in Types、Build-in Exception这四个方面,其实在看的时候发现整个《The Python Standard Library》章节都是很不错的,其中描述了很多不错的主题。先把Build-in Fu</div>
                                </li>
                                <li><a href="/article/646.htm"
                                       title="JSP页面通过JQUERY合并行" target="_blank">JSP页面通过JQUERY合并行</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a>
                                    <div>在写程序的过程中我们难免会遇到在页面上合并单元行的情况,如图所示 
 
 
如果对于会的同学可能很简单,但是对没有思路的同学来说还是比较麻烦的,提供一下用JQUERY实现的参考代码 
 
function mergeCell(){ 
        var trs = $("#table tr"); 
&nb</div>
                                </li>
                                <li><a href="/article/773.htm"
                                       title="Java基础" target="_blank">Java基础</a>
                                    <span class="text-muted">冰天百华</span>
<a class="tag" taget="_blank" href="/search/java%E5%9F%BA%E7%A1%80/1.htm">java基础</a>
                                    <div>学习函数式编程 
package base;

import java.text.DecimalFormat;

public class Main {

	public static void main(String[] args) {
//		Integer a = 4;  
//		Double aa = (double)a  / 100000;  
//		Decimal</div>
                                </li>
                                <li><a href="/article/900.htm"
                                       title="unix时间戳相互转换" target="_blank">unix时间戳相互转换</a>
                                    <span class="text-muted">adminjun</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AC%E6%8D%A2/1.htm">转换</a><a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a><a class="tag" taget="_blank" href="/search/%E6%97%B6%E9%97%B4%E6%88%B3/1.htm">时间戳</a>
                                    <div>如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?     Java time   JavaScript Math.round(new Date().getTime()/1000)
getTime()返回数值的单位是毫秒   Microsoft .NET / C# epoch = (DateTime.Now.ToUniversalTime().Ticks - 62135</div>
                                </li>
                                <li><a href="/article/1027.htm"
                                       title="作为一个合格程序员该做的事" target="_blank">作为一个合格程序员该做的事</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a>
                                    <div>作为一个合格程序员每天该做的事   1、总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多 
2、考虑自己明天应该做的主要工作 把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作 
3、考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法 出错不要紧,最重</div>
                                </li>
                                <li><a href="/article/1154.htm"
                                       title="由html5视频播放引发的总结" target="_blank">由html5视频播放引发的总结</a>
                                    <span class="text-muted">ayaoxinchao</span>
<a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91/1.htm">视频</a><a class="tag" taget="_blank" href="/search/video/1.htm">video</a>
                                    <div>前言 
  
项目中存在视频播放的功能,前期设计是以flash播放器播放视频的。但是现在由于需要兼容苹果的设备,必须采用html5的方式来播放视频。我就出于兴趣对html5播放视频做了简单的了解,不了解不知道,水真是很深。本文所记录的知识一些浅尝辄止的知识,说起来很惭愧。 
  
视频结构 
  
本该直接介绍html5的<video>的,但鉴于本人对视频</div>
                                </li>
                                <li><a href="/article/1281.htm"
                                       title="解决httpclient访问自签名https报javax.net.ssl.SSLHandshakeException: sun.security.validat" target="_blank">解决httpclient访问自签名https报javax.net.ssl.SSLHandshakeException: sun.security.validat</a>
                                    <span class="text-muted">bewithme</span>
<a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a>
                                    <div>     如果你构建了一个https协议的站点,而此站点的安全证书并不是合法的第三方证书颁发机构所签发,那么你用httpclient去访问此站点会报如下错误 
  
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path bu</div>
                                </li>
                                <li><a href="/article/1408.htm"
                                       title="Jedis连接池的入门级使用" target="_blank">Jedis连接池的入门级使用</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/redis%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">redis数据库</a><a class="tag" taget="_blank" href="/search/jedis/1.htm">jedis</a>
                                    <div>Jedis连接池操作步骤如下: 
        a.获取Jedis实例需要从JedisPool中获取; 
        b.用完Jedis实例需要返还给JedisPool; 
        c.如果Jedis在使用过程中出错,则也需要还给JedisPool; 
packag</div>
                                </li>
                                <li><a href="/article/1535.htm"
                                       title="变与不变" target="_blank">变与不变</a>
                                    <span class="text-muted">bingyingao</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%8D%E5%8F%98/1.htm">不变</a><a class="tag" taget="_blank" href="/search/%E5%8F%98/1.htm">变</a><a class="tag" taget="_blank" href="/search/%E4%BA%B2%E6%83%85%E6%B0%B8%E6%81%92/1.htm">亲情永恒</a>
                                    <div>变与不变 
   周末骑车转到了五年前租住的小区,曾经最爱吃的西北面馆、江西水饺、手工拉面早已不在, 
   各种店铺都换了好几茬,这些是变的。 
   三年前还很流行的一款手机在今天看起来已经落后的不像样子。 
   三年前还运行的好好的一家公司,今天也已经不复存在。 
   一座座高楼拔地而起,</div>
                                </li>
                                <li><a href="/article/1662.htm"
                                       title="【Scala十】Scala核心四:集合框架之List" target="_blank">【Scala十】Scala核心四:集合框架之List</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a>
                                    <div>Spark的RDD作为一个分布式不可变的数据集合,它提供的转换操作,很多是借鉴于Scala的集合框架提供的一些函数,因此,有必要对Scala的集合进行详细的了解 
  
1. 泛型集合都是协变的,对于List而言,如果B是A的子类,那么List[B]也是List[A]的子类,即可以把List[B]的实例赋值给List[A]变量 
  
2. 给变量赋值(注意val关键字,a,b</div>
                                </li>
                                <li><a href="/article/1789.htm"
                                       title="Nested Functions in C" target="_blank">Nested Functions in C</a>
                                    <span class="text-muted">bookjovi</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/closure/1.htm">closure</a>
                                    <div>  
Nested Functions 又称closure,属于functional language中的概念,一直以为C中是不支持closure的,现在看来我错了,不过C标准中是不支持的,而GCC支持。 
  
既然GCC支持了closure,那么 lexical scoping自然也支持了,同时在C中label也是可以在nested functions中自由跳转的</div>
                                </li>
                                <li><a href="/article/1916.htm"
                                       title="Java-Collections Framework学习与总结-WeakHashMap" target="_blank">Java-Collections Framework学习与总结-WeakHashMap</a>
                                    <span class="text-muted">BrokenDreams</span>
<a class="tag" taget="_blank" href="/search/Collections/1.htm">Collections</a>
                                    <div>        总结这个类之前,首先看一下Java引用的相关知识。Java的引用分为四种:强引用、软引用、弱引用和虚引用。 
 
        
强引用:就是常见的代码中的引用,如Object o = new Object();存在强引用的对象不会被垃圾收集</div>
                                </li>
                                <li><a href="/article/2043.htm"
                                       title="读《研磨设计模式》-代码笔记-解释器模式-Interpret" target="_blank">读《研磨设计模式》-代码笔记-解释器模式-Interpret</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 
 

package design.pattern;

/*
 * 解释器(Interpreter)模式的意图是可以按照自己定义的组合规则集合来组合可执行对象
 * 
 * 代码示例实现XML里面1.读取单个元素的值 2.读取单个属性的值
 * 多</div>
                                </li>
                                <li><a href="/article/2170.htm"
                                       title="After Effects操作&快捷键" target="_blank">After Effects操作&快捷键</a>
                                    <span class="text-muted">cherishLC</span>
<a class="tag" taget="_blank" href="/search/After+Effects/1.htm">After Effects</a>
                                    <div>1、快捷键官方文档 
 
 
 中文版:https://helpx.adobe.com/cn/after-effects/using/keyboard-shortcuts-reference.html  
 英文版:https://helpx.adobe.com/after-effects/using/keyboard-shortcuts-reference.html  
 
 
 2、常用快捷键</div>
                                </li>
                                <li><a href="/article/2297.htm"
                                       title="Maven 常用命令" target="_blank">Maven 常用命令</a>
                                    <span class="text-muted">crabdave</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>Maven 常用命令 
  
mvn archetype:generate 
mvn install 
mvn clean 
mvn clean complie 
mvn clean test 
mvn clean install 
mvn clean package 
mvn test 
mvn package 
mvn site 
  
mvn dependency:res</div>
                                </li>
                                <li><a href="/article/2424.htm"
                                       title="shell bad substitution" target="_blank">shell bad substitution</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a>
                                    <div>#!/bin/sh 
 
/data/script/common/run_cmd.exp 192.168.13.168 "impala-shell -islave4 -q 'insert OVERWRITE table imeis.${tableName} select ${selectFields}, ds, fnv_hash(concat(cast(ds as string), im</div>
                                </li>
                                <li><a href="/article/2551.htm"
                                       title="Java SE 第二讲(原生数据类型 Primitive Data Type)" target="_blank">Java SE 第二讲(原生数据类型 Primitive Data Type)</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>Java SE  第二讲: 
 
1.   Windows: notepad, editplus, ultraedit, gvim 
Linux: vi, vim, gedit 
 
2.   Java 中的数据类型分为两大类: 
1)原生数据类型  (Primitive Data Type) 
2)引用类型(对象类型)  (R</div>
                                </li>
                                <li><a href="/article/2678.htm"
                                       title="CGridView中实现批量删除" target="_blank">CGridView中实现批量删除</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a>
                                    <div>1,CGridView中的columns添加 
array(
                        'selectableRows' => 2,
                        'footer' => '<button type="button" onclick="GetCheckbox();" style=&</div>
                                </li>
                                <li><a href="/article/2805.htm"
                                       title="Java中泛型的各种使用" target="_blank">Java中泛型的各种使用</a>
                                    <span class="text-muted">dyy_gusi</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%B3%9B%E5%9E%8B/1.htm">泛型</a>
                                    <div>Java中的泛型的使用:1.普通的泛型使用 
在使用类的时候后面的<>中的类型就是我们确定的类型。 
public class MyClass1<T> {//此处定义的泛型是T
    private T var;

    public T getVar() {
        return var;
    }

    public void setVa</div>
                                </li>
                                <li><a href="/article/2932.htm"
                                       title="Web开发技术十年发展历程" target="_blank">Web开发技术十年发展历程</a>
                                    <span class="text-muted">gcq511120594</span>
<a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a>
                                    <div>回顾web开发技术这十年发展历程: 
Ajax 
03年的时候我上六年级,那时候网吧刚在小县城的角落萌生。传奇,大话西游第一代网游一时风靡。我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩,然后接下来的一个小时我一直在,注,册,账,号。 
彼时网吧用的512k的带宽,注册的时候,填了一堆信息,提交,页面跳转,嘣,”您填写的信息有误,请重填”。然后跳转回注册页面,以此循环。我现在时常想,如果当时a</div>
                                </li>
                                <li><a href="/article/3059.htm"
                                       title="openSession()与getCurrentSession()区别:" target="_blank">openSession()与getCurrentSession()区别:</a>
                                    <span class="text-muted">hetongfei</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a>
                                    <div>来自 http://blog.csdn.net/dy511/article/details/6166134 
1.getCurrentSession创建的session会和绑定到当前线程,而openSession不会。 
2. getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭。 
这里getCurrentSession本地事务(本地</div>
                                </li>
                                <li><a href="/article/3186.htm"
                                       title="第一章 安装Nginx+Lua开发环境" target="_blank">第一章 安装Nginx+Lua开发环境</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/lua/1.htm">lua</a><a class="tag" taget="_blank" href="/search/openresty/1.htm">openresty</a>
                                    <div>首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用。借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序。而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简单。目前在京东如实时价格、秒</div>
                                </li>
                                <li><a href="/article/3313.htm"
                                       title="HSQLDB In-Process方式访问内存数据库" target="_blank">HSQLDB In-Process方式访问内存数据库</a>
                                    <span class="text-muted">liyonghui160com</span>

                                    <div>  
  
HSQLDB一大特色就是能够在内存中建立数据库,当然它也能将这些内存数据库保存到文件中以便实现真正的持久化。 
  
先睹为快! 
  
下面是一个In-Process方式访问内存数据库的代码示例: 
  
  
下面代码需要引入hsqldb.jar包 (hsqldb-2.2.8) 
  
import java.s</div>
                                </li>
                                <li><a href="/article/3440.htm"
                                       title="Java线程的5个使用技巧" target="_blank">Java线程的5个使用技巧</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                                    <div>Java线程有哪些不太为人所知的技巧与用法?     萝卜白菜各有所爱。像我就喜欢Java。学无止境,这也是我喜欢它的一个原因。日常 
工作中你所用到的工具,通常都有些你从来没有了解过的东西,比方说某个方法或者是一些有趣的用法。比如说线程。没错,就是线程。或者确切说是Thread这个类。当我们在构建高可扩展性系统的时候,通常会面临各种各样的并发编程的问题,不过我们现在所要讲的可能会略有不同。   </div>
                                </li>
                                <li><a href="/article/3567.htm"
                                       title="开发资源大整合:编程语言篇——JavaScript(1)" target="_blank">开发资源大整合:编程语言篇——JavaScript(1)</a>
                                    <span class="text-muted">shoothao</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>概述:本系列的资源整合来自于github中各个领域的大牛,来收藏你感兴趣的东西吧。           
  程序包管理器  
  管理javascript库并提供对这些库的快速使用与打包的服务。 
 
  Bower - 用于web的程序包管理。 
  component - 用于客户端的程序包管理,构建更好的web应用程序。 
  spm - 全新的静态的文件包管</div>
                                </li>
                                <li><a href="/article/3694.htm"
                                       title="避免使用终结函数" target="_blank">避免使用终结函数</a>
                                    <span class="text-muted">vahoa.ma</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a>
                                    <div>终结函数(finalizer)通常是不可预测的,常常也是很危险的,一般情况下不是必要的。使用终结函数会导致不稳定的行为、更差的性能,以及带来移植性问题。不要把终结函数当做C++中的析构函数(destructors)的对应物。 
  
    我自己总结了一下这一条的综合性结论是这样的: 
1)在涉及使用资源,使用完毕后要释放资源的情形下,首先要用一个显示的方</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>