(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/1892446997915430912.htm"
                           title="Python中的 redis keyspace 通知_python 操作redis psubscribe(‘__keyspace@0__ ‘)" target="_blank">Python中的 redis keyspace 通知_python 操作redis psubscribe(‘__keyspace@0__ ‘)</a>
                        <span class="text-muted">2301_82243733</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/1892101788824301568.htm"
                           title="如何发起http的请求,在系统中集成" target="_blank">如何发起http的请求,在系统中集成</a>
                        <span class="text-muted">红豆和绿豆</span>
<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/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>在Java中发起HTTP请求,有多种开源框架可供选择。以下是一些常用的开源框架及其特点:1.ApacheHttpClientApacheHttpClient是一个功能强大的HTTP客户端库,支持同步和异步请求,广泛用于各种Java应用。2.OkHttpOkHttp是一个高效的HTTP客户端,支持HTTP/2和WebSocket,具有自动重试和恢复功能。3.UniRestUniRest是一个简单易用</div>
                    </li>
                    <li><a href="/article/1892065588717613056.htm"
                           title="Python 爬虫功能介绍" target="_blank">Python 爬虫功能介绍</a>
                        <span class="text-muted">chengxuyuan1213_</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/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">网络爬虫</a>
                        <div>在当今互联网信息爆炸的时代,数据的获取与分析成为了各行各业不可或缺的一部分。Python,作为一种简洁、易读且功能强大的编程语言,凭借其丰富的库和框架,在数据抓取(即网络爬虫)领域展现了极大的优势。本文旨在介绍Python爬虫的基础功能,帮助初学者快速入门,理解爬虫的基本工作原理及常用技术。一、什么是网络爬虫网络爬虫(WebCrawler),又称网络蜘蛛(WebSpider)或网络机器人(WebR</div>
                    </li>
                    <li><a href="/article/1891974566327152640.htm"
                           title="Python网络爬虫-WebSocket数据抓取" target="_blank">Python网络爬虫-WebSocket数据抓取</a>
                        <span class="text-muted">程序小勇</span>
<a class="tag" taget="_blank" href="/search/faiss/1.htm">faiss</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><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%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>目录前言1、WebSocket请求的分析通常涉及以下几个方面:2、利用WebSocket爬取数据总结最后,创作不易!非常感谢大家的关注、点赞、评论啦!谢谢三连哦!好人好运连连,学习进步!工作顺利哦!博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,</div>
                    </li>
                    <li><a href="/article/1891930292613083136.htm"
                           title="流行编程语言全解析:优势、应用与短板" target="_blank">流行编程语言全解析:优势、应用与短板</a>
                        <span class="text-muted">a小胡哦</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a><a class="tag" taget="_blank" href="/search/r%E8%AF%AD%E8%A8%80/1.htm">r语言</a>
                        <div>Python:优势Python以其简洁、易读的语法闻名,新手能快速上手。丰富的库和框架,能极大地提高开发效率。适用领域数据科学与分析:处理和分析大规模数据集,进行数据可视化。典型示例:Google用Python进行数据分析,处理海量数据以支持各种业务决策。机器学习与人工智能:构建和训练模型。典型示例:OpenAI在很多人工智能项目中广泛使用Python,如GPT系列模型的研发。网络爬虫:轻松从网页</div>
                    </li>
                    <li><a href="/article/1891836646341537792.htm"
                           title="Dio分析-HttpClientAdapter" target="_blank">Dio分析-HttpClientAdapter</a>
                        <span class="text-muted">anthonyzhu</span>
<a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a>
                        <div>官方描述用于Dio与底层HttpClient间的桥接。Dio向业务层开发者提供标准和友好的API接口HttpClient,Dart底层真实的网络请求处理对象。通过HttpClientAdapter,开发者可以使用各种自定义HttpClient,而非dart:io:HttpClient,只需要通过HttpClientAdapter实现桥接。如果开发者想要定制HttpClientAdapter,可以使</div>
                    </li>
                    <li><a href="/article/1891813418038521856.htm"
                           title="Trae 项目常见问题解决方案" target="_blank">Trae 项目常见问题解决方案</a>
                        <span class="text-muted">强和毓Hadley</span>

                        <div>Trae项目常见问题解决方案trae:postbox:MinimalisticFetchbasedHTTPclient项目地址:https://gitcode.com/gh_mirrors/tr/trae项目基础介绍Trae是一个基于FetchAPI的极简HTTP客户端,旨在提供一个简单、轻量级的HTTP请求工具。该项目的主要编程语言是TypeScript和JavaScript。Trae的设计理念</div>
                    </li>
                    <li><a href="/article/1891582330024292352.htm"
                           title="运用python制作一个完整的股票分析系统" target="_blank">运用python制作一个完整的股票分析系统</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/beautifulsoup/1.htm">beautifulsoup</a>
                        <div>使用python制作一个股票分析系统,可以通过股票价格走势动态界面,实时动态监测不同类型股票的变化情况。以下是一个完整的股票分析系统开发指南,包括股票价格走势动态界面和实时监测功能。这个系统将结合网络爬虫、数据分析、机器学习和可视化技术,帮助你实时监测不同类型股票的变化情况。1.系统功能概述数据采集:使用网络爬虫技术从财经网站采集股票数据。数据处理:计算技术指标(如KDJ、BOLL)并进行数据预处</div>
                    </li>
                    <li><a href="/article/1891472896660926464.htm"
                           title="JAVA调用Deepseek的api,完成基本对话" target="_blank">JAVA调用Deepseek的api,完成基本对话</a>
                        <span class="text-muted">菜菜-plus</span>
<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><a class="tag" taget="_blank" href="/search/Deepseek/1.htm">Deepseek</a>
                        <div>获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Java的HTTP客户端库(如ApacheHttpClient或OkHttp)来发送HTTP请求。如果使用Maven,可以在pom.xml中添加依赖:、org.apache.httpcomponentshttpclient4.5.13com.squareup.okhttp3okhttp4.9.3创建H</div>
                    </li>
                    <li><a href="/article/1891236651636682752.htm"
                           title="Python爬取小说保存为Excel" target="_blank">Python爬取小说保存为Excel</a>
                        <span class="text-muted">不知所云975</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>本代码以实际案例介绍,爬取‘笔趣阁最新小说‘列表保存为表格文件。类封装以及网络爬虫以及openpyxl模块可以参考学习。#更新小说目录importrequestsfromlxmlimportetreeimportopenpyxlfromopenpyxl.stylesimportFont,Alignment,Side,Border,PatternFill#定义下载表格的类classDown_exce</div>
                    </li>
                    <li><a href="/article/1891226558614532096.htm"
                           title="来看看爬虫合不合法" target="_blank">来看看爬虫合不合法</a>
                        <span class="text-muted">度假的小鱼</span>
<a class="tag" taget="_blank" href="/search/Python%E5%9F%BA%E7%A1%80/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/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>活动地址:CSDN21天学习挑战赛文章目录一、爬虫合不合法二、什么是爬虫三、爬虫的分类四、为什么学网络爬虫一、爬虫合不合法随着Python在最近几年的流行,Python中的爬虫也逐渐进入到大家的视野中,但是很多小伙伴,还是在担心爬虫的合法性。今天就来和大家一起讨论一下爬虫的合法性。大家可能在网上看到很多有关程序员写爬虫被抓这样的新闻只因写了一段爬虫,公司200多人被抓!爬虫的本身是合法的,但是如何</div>
                    </li>
                    <li><a href="/article/1891214199518982144.htm"
                           title="JAVA 整合 亚马逊AWS S3(文件上传,文件下载等)" target="_blank">JAVA 整合 亚马逊AWS S3(文件上传,文件下载等)</a>
                        <span class="text-muted">人间味是清欢</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/aws/1.htm">aws</a><a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a>
                        <div>JAVA整合亚马逊AWSS3(文件上传,文件下载)1.添加依赖因为aws需要发送请求上传、下载等api,所以需要加上httpclient相关的依赖software.amazon.awssdks31.12.198software.amazon.awssdks3-transfer-manager2.20.26software.amazon.awssdkkmssoftware.amazon.awssdk</div>
                    </li>
                    <li><a href="/article/1891012211271331840.htm"
                           title="实战二:网络爬虫" target="_blank">实战二:网络爬虫</a>
                        <span class="text-muted">tian-ming</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>1.制造假数据获取姓氏网址:百家姓_诗词_百度汉语获取男生名字:男生有诗意的名字推荐(龙年男孩起名)获取女生名字:2024年清新有诗意女孩名字取名(龙年女孩名字)publicclasstest1{publicstaticvoidmain(String[]args)throwsIOException{//1.定义变量记录网址StringfamilyName="https://hanyu.baidu.</div>
                    </li>
                    <li><a href="/article/1890888883168669696.htm"
                           title="【愚公系列】《Python网络爬虫从入门到精通》012-字符串处理" target="_blank">【愚公系列】《Python网络爬虫从入门到精通》012-字符串处理</a>
                        <span class="text-muted">愚公搬代码</span>
<a class="tag" taget="_blank" href="/search/%E6%84%9A%E5%85%AC%E7%B3%BB%E5%88%97-%E4%B9%A6%E7%B1%8D%E4%B8%93%E6%A0%8F/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>
                        <div>标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等</div>
                    </li>
                    <li><a href="/article/1890830760856842240.htm"
                           title="DeepSeek 部署与集成实战教程" target="_blank">DeepSeek 部署与集成实战教程</a>
                        <span class="text-muted">挖掘机技术我最强</span>
<a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>《零基础部署DeepSeek全栈指南:从API接入到高并发优化(含避坑实录)》一、本地开发环境部署(Windows/Mac)1.前置条件准备Java环境:JDK17+(推荐AzulZulu)#验证安装java-versionjavac-versionIDE配置:IntelliJIDEA安装以下插件.envfilessupport(环境变量管理)HTTPClient(API调试)Docker(容器化</div>
                    </li>
                    <li><a href="/article/1890149185626370048.htm"
                           title="Python网络爬虫" target="_blank">Python网络爬虫</a>
                        <span class="text-muted">凯迪不拉克</span>
<a class="tag" taget="_blank" href="/search/%E8%B5%84%E6%BA%90%E5%88%86%E4%BA%AB/1.htm">资源分享</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>分享一份关于Python网络爬虫技术的视频资料。内容涵盖基本原理、技术要点及实战应用,适合不同水平的Python编程爱好者。百度网盘:点击跳转提取码:4778期待你的进步,共同交流!免责声明:请注意,在使用网络爬虫技术时,请确保你的行为遵守相关法律法规和网站的使用条款。不要用于非法获取数据或侵犯他人隐私。本视频资料仅供学习参考,任何基于该资料进行的实际操作,使用者需自行承担相关责任。</div>
                    </li>
                    <li><a href="/article/1890006040074842112.htm"
                           title=".NET Core中使用HttpClient模拟form-data格式数据提交" target="_blank">.NET Core中使用HttpClient模拟form-data格式数据提交</a>
                        <span class="text-muted">步、步、为营</span>
<a class="tag" taget="_blank" href="/search/.netcore/1.htm">.netcore</a><a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a>
                        <div>一、引言在.NETCore开发的广阔天地里,与外部服务进行交互是极为常见的需求。而数据的传递作为交互的核心环节,其格式和方式的选择显得尤为重要。form-data格式作为一种在Web开发中广泛应用的数据编码类型,主要用于发送表单数据,其中既包含普通的文本字段,也支持文件上传,这一特性使其在众多场景中都扮演着关键角色。想象一下,在一个在线办公系统中,用户需要上传一份重要的项目文档,并附带一些关于文档</div>
                    </li>
                    <li><a href="/article/1889836444378263552.htm"
                           title="Python爬虫框架Scrapy入门指南" target="_blank">Python爬虫框架Scrapy入门指南</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%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/scrapy/1.htm">scrapy</a>
                        <div>Scrapy是一个高效、灵活、开放的Python爬虫框架,它可以帮助开发者快速地开发出高质量的网络爬虫,而不需要太多的编码工作。以下是对Scrapy的入门指南:一、Scrapy简介Scrapy是一个用于抓取网站和提取结构化数据的应用程序框架,可用于各种有用的应用程序,如数据挖掘、信息处理或历史存档。尽管Scrapy最初是为网络抓取而设计的,但它也可用于使用API提取数据或用作通用网络爬虫。Scra</div>
                    </li>
                    <li><a href="/article/1889823452269965312.htm"
                           title="Android 访问网络框架之——OkHttp框架的解析" target="_blank">Android 访问网络框架之——OkHttp框架的解析</a>
                        <span class="text-muted">mr丶yang</span>
<a class="tag" taget="_blank" href="/search/%E5%8E%9F%E5%88%9B/1.htm">原创</a><a class="tag" taget="_blank" href="/search/Okhttp/1.htm">Okhttp</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>越来越发现一些第三方的框架比Android原生大的API好用多了,而且android废弃掉了HttpClient,有必要学习一些访问网络的框架,于是踏上了一条框架学习之路,先前学习了Volley框架。今天来解析一下OkHttp框架。一,OkHttp的简单使用,主要包括:一般的get请求一般的post请求基于Http的文件上传文件下载加载图片支持请求回调,直接返回对象、对象集合支持session的保</div>
                    </li>
                    <li><a href="/article/1889811345646350336.htm"
                           title="Android网络框架——OKHttp" target="_blank">Android网络框架——OKHttp</a>
                        <span class="text-muted">闲暇部落</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/okhttp/1.htm">okhttp</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>目录一、介绍二、优势三、功能四、应用1.HttpGet的使用步骤2.HttpPost携带参数的使用步骤:3.使用post进行表单(键值对)上传一、介绍OKHttp是一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso)用于替代HttpUrlConnection和ApacheHttpClient(androidAPI236.0里已移除H</div>
                    </li>
                    <li><a href="/article/1889629897345789952.htm"
                           title="Python网络爬虫笔记(四)——requests与BeautifulSoup" target="_blank">Python网络爬虫笔记(四)——requests与BeautifulSoup</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%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>一、requestsrequest是请求库,用来获取页面信息。首先记得导入库啊,这个是第三方库,py没有自带,没有安装的小伙伴可以移步我上一篇安装第三方库教程importrequests介绍几个常用的函数1>请求命令importrequestsurl='https://www.163.com'resp=requests.get(url)get用途其实跟构造函数差不多,它的参数不少,我们这里主要用到</div>
                    </li>
                    <li><a href="/article/1889469562026520576.htm"
                           title="持续集成环境问题汇总(基于:java + testng + httpclient + allure + git + gitlab + jenkins + pipeline + maven + harb..." target="_blank">持续集成环境问题汇总(基于:java + testng + httpclient + allure + git + gitlab + jenkins + pipeline + maven + harb...</a>
                        <span class="text-muted">全栈测试笔记</span>
<a class="tag" taget="_blank" href="/search/jenkins/1.htm">jenkins</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ci/1.htm">ci</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/gitlab/1.htm">gitlab</a>
                        <div>说明包含前期调试遇到的问题idea中,命令执行testng.xml,报错PleaserefertoD:\myjava\apiAutoTest\target\surefire-reportsfortheindividualtestresults.参考:https://www.cnblogs.com/uncleyong/p/16705982.html无法连接仓库:Hostkeyverification</div>
                    </li>
                    <li><a href="/article/1889455933730385920.htm"
                           title="基于Jenkins+Maven+Java+HttpClient+TestNG+Git+Allure的持续集成测试框架搭建方案(自己写和Ai对比)" target="_blank">基于Jenkins+Maven+Java+HttpClient+TestNG+Git+Allure的持续集成测试框架搭建方案(自己写和Ai对比)</a>
                        <span class="text-muted">宁宁可可</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                        <div>手动自己写的:JavaWeb接口自动化测试总篇:基于Jenkins+Maven+Java+httpClients+TestNg+Git+Allure的持续集成测试框架AI生成的:以下是基于Jenkins+Maven+Java+HttpClient+TestNG+Git+Allure的持续集成测试框架搭建方案,分为框架设计和实施步骤两大部分:一、框架设计1.技术栈分工组件作用Jenkins持续集成服</div>
                    </li>
                    <li><a href="/article/1889365027903827968.htm"
                           title="自动评估基准 | 技巧与提示" target="_blank">自动评估基准 | 技巧与提示</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>技巧与提示这是自动评估基准系列文章的第四篇,敬请关注系列文章:基础概念设计你的自动评估任务一些评估测试集技巧与提示数据污染管理通常我们会假设在互联网上公开可用的数据集是存在数据污染问题的。缓解措施有:测试集中加入哨兵字符串(canarystring)(如BigBench),这是一种特殊的字符组合,使得模型创建者可以在训练集中查找,来表明该数据中是否包含评估。测试集采用加密或门控形式,以防被网络爬虫</div>
                    </li>
                    <li><a href="/article/1889340436980494336.htm"
                           title="[纸上谈兵] http头部字段Transfer-Encoding" target="_blank">[纸上谈兵] http头部字段Transfer-Encoding</a>
                        <span class="text-muted">江湖一码农</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/JAVA%E5%9F%BA%E7%A1%80/1.htm">JAVA基础</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a>
                        <div>一个月没写,自己定的目标没有实现,不想写太水的内容。但这一篇可能又是水我在排查httpclient问题时,发现了这个请求头,但不知道是做什么用的,于是百度一下一、Transfer-Encoding:chunkedTransfer-Encoding头字段可以用在请求头或响应头中。该头字段有两个值chunked和identity作用:Transfer-Encoding值为chunked时,代表要把请求</div>
                    </li>
                    <li><a href="/article/1889305506091167744.htm"
                           title="✅毕业设计:python商品推荐系统+协同过滤推荐算法+网络爬虫 2种推荐算法 计算机毕业设计 大数据(附源码)✅" target="_blank">✅毕业设计:python商品推荐系统+协同过滤推荐算法+网络爬虫 2种推荐算法 计算机毕业设计 大数据(附源码)✅</a>
                        <span class="text-muted">vx_biyesheji0004</span>
<a class="tag" taget="_blank" href="/search/biyesheji0001/1.htm">biyesheji0001</a><a class="tag" taget="_blank" href="/search/biyesheji0005/1.htm">biyesheji0005</a><a class="tag" taget="_blank" href="/search/biyesheji0004/1.htm">biyesheji0004</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%8E%A8%E8%8D%90%E7%AE%97%E6%B3%95/1.htm">推荐算法</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</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%95%86%E5%93%81%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F/1.htm">商品推荐系统</a>
                        <div>博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌>想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。点击查看作者主页,了解更多项目!感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业。1、毕业设计:2025年</div>
                    </li>
                    <li><a href="/article/1889277768919740416.htm"
                           title="通过node.js实现简单的爬虫" target="_blank">通过node.js实现简单的爬虫</a>
                        <span class="text-muted">^命铭</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>爬虫,来自百度百科的解释:网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动爬取万维网信息的程序或脚本.通俗来讲,假如你需要互联网上的信息,如商品价格,图片视频资源等,但你又不想或者不能自己一个一个去打开网页收集,这时候你便写了一个程序,让程序按照你指定好的规则去互联网上收集信息,这便是爬虫,我们熟知的百度,谷歌等搜索引擎背后其实也是一个</div>
                    </li>
                    <li><a href="/article/1889238934790139904.htm"
                           title="探索智能时代的娱乐边界:91pron_Python" target="_blank">探索智能时代的娱乐边界:91pron_Python</a>
                        <span class="text-muted">秋或依</span>

                        <div>探索智能时代的娱乐边界:91pron_Python去发现同类优质开源项目:https://gitcode.com/在数字化时代,各种编程项目层出不穷,而是一个独特的Python脚本项目,它利用网络爬虫技术和数据分析,为用户提供了一种智能化的方式来探索和理解在线多媒体内容。这篇文章将带你深入了解这个项目的背景、技术实现、应用场景及主要特点。项目简介91pron_Python是一个基于Python编写</div>
                    </li>
                    <li><a href="/article/1889202377169367040.htm"
                           title="Python网络爬虫精要" target="_blank">Python网络爬虫精要</a>
                        <span class="text-muted">小迪和夫人</span>
<a class="tag" taget="_blank" href="/search/IT/1.htm">IT</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python%E5%AD%A6%E4%B9%A0/1.htm">python学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>目的学习如何从互联网上获取数据。数据科学必须掌握的技能之一。本文所用到的第三方库如下:requests,parsel,seleniumrequests负责向网页发送HTTP请求并得到响应,parsel负责解析响应字符串,selenium负责JavaScript的渲染。网络爬虫是什么网络爬虫是一种按照一定的规则,自动地抓取网站信息的程序或者脚本。我们都知道Python容易学,但是就是不知道如何去学,</div>
                    </li>
                    <li><a href="/article/1888966950885847040.htm"
                           title="Python网络爬虫实战:爬取中国散文网青年散文专栏文章" target="_blank">Python网络爬虫实战:爬取中国散文网青年散文专栏文章</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>一、引言在当今数字时代,网络爬虫技术已成为获取和分析大规模在线数据的重要工具。本文将介绍一个实际的爬虫项目:爬取中国散文网青年散文专栏的所有文章。选择中国散文网作为爬取对象,是因为它是国内知名的散文平台,尤其是其青年散文专栏汇集了大量新生代作家的优秀作品,具有重要的文学价值和研究意义。本项目的主要目标是获取青年散文专栏中的所有文章,并将其保存为txt格式的文本文件,便于后续的文本分析和研究。为了实</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>