swoole 初识--简易聊天室

目的:学习swoole,众所周知php是单线程语言,所以多进程是瓶颈,但是swoole的出现解决了这个问题,为了以后解决并发和大数据问题,特学习。workman也同swoole一样可以解决这个问题,workman是基于swoole开发的。

坏境:自行配置PHP环境和swoole扩展(swoole不支持Windows,可以用Linux的模拟工具,swoole官网有详细介绍  进入swoole官网)

聊天室效果:

1.新用户进入显示欢迎语,默认为用户设置默认昵称

2.可以自行设置昵称

3.发送消息,在聊天室里进行对话

4.用户离开聊天室时显示用户离开信息

代码部分:

swoole server端代码(server端需要在cli模型下运行)

/**

* Created by PhpStorm.

* User: zhengjiayu

* Date: 2019/3/5

* Time: 下午1:22

*/

error_reporting(E_ALL); ini_set("display_errors", 1);

class Swooleserver

{

    private static $instance; //单例对象

    private static $server; //服务器对象

    public function __construct()

{

        self::$server = new swoole_websocket_server("127.0.0.1", 9502);

        //绑定事件

        self::$server->on('open',[$this,'onOpen']);

        self::$server->on('message',[$this,'onMessage']);

        self::$server->on('close',[$this,'onClose']);

    }

    /**

* 创建单例对象

    * @return Swoole_server

*/

    public static function getInstance()

{

        if(!self::$instance instanceof self){

            self::$instance = new self();

        }

        return self::$instance;

    }

    /**

* 开启服务

*/

    public function start(){

        self::$server->start();

    }

    /**

*当客户端连接服务器时执行

    * @param $server 服务器

    * @param $req 客户端

*/

    public function onOpen($server, $req)

{

        $name = '用户'.rand(1,99999);

        $_SESSION['user'] = $name;

        $data = [

            'action' => 'open',

            'data' => $name."欢迎进入聊天室",

            'user' => $name

        ];

        foreach($server->connections as $fd)

{

            self::$server->push($fd, json_encode($data));

        }

}

    /**

* 当客户端给服务器发送消息时执行

    * @param $server 服务器

    * @param $frame 接受的数据

*/

    public function onMessage($server, $frame)

{

        $data = json_decode($frame->data,true);

        switch ($data['action']){

            case 'setname':

                $_SESSION['user'] = $data['data'];

                break;

            case 'send':

                $data['data'] = $_SESSION['user'].":".$data['data'];

                break;

        }

        $data['user'] = $_SESSION['user'];

        foreach($server->connections as $fd)

{

            self::$server->push($fd, json_encode($data));

        }

}

    /**

* 当客户端与服务器断开连接时执行

    * @param $server 服务器

    * @param $fd 客户端ID

*/

    public function onClose($server, $fd)

{

        $data['action'] = 'close';

        $data['data'] = $_SESSION['user'].'离开聊天室';

        foreach($server->connections as $fd)

{

            self::$server->push($fd, json_encode($data));

        }

}

}

Swooleserver::getInstance()->start();

swoole 客户端代码

   

    swoole 聊天室测试</p> <p>    <link href="./tool/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen"></p> <p></p> <p>#container</p> <p>      {</p> <p>text-align:center;</p> <p>          margin-top:68px;</p> <p>      }</p> <p>.content</p> <p>        {</p> <p>width:600px;</p> <p>            height:300px;</p> <p>            border:1px solid #b3b3b3;</p> <p>            margin-left:144px;</p> <p>            border-radius:2%;</p> <p>        }</p> <p><div id="container"></p> <p>    <h1>聊天室</p> <p>    <div class="content"></p> <p><br></p> <p>    <div class="input-append"></p> <p>        <input class="span2" id="setname" type="text"></p> <p>        <button class="btn" type="button" id="setnickname">设置昵称</p> <p>    <div class="input-append"></p> <p>        <input class="span2" id="send" type="text"></p> <p>        <button class="btn" type="button" id="sendmsg">发送</p> <p><script src="https://code.jquery.com/jquery-3.1.1.min.js"></p> <p><script src="./tool/bootstrap/js/bootstrap.min.js"></p> <p></p> <p>    // 初始化一个 WebSocket 对象</p> <p>    var ws =new WebSocket("ws://localhost:9502/");</p> <p>    // 建立 web socket 连接成功触发事件</p> <p>    ws.onopen =function () {</p> <p>// 使用 send() 方法发送数据</p> <p>//  ws.send("发送数据");</p> <p>//  alert("连接成功...");</p> <p>    };</p> <p>    // 接收服务端数据时触发事件</p> <p>    ws.onmessage =function (evt) {</p> <p>var received_msg = JSON.parse(evt.data);</p> <p>        if(received_msg.action =='open'){//展示用户欢迎语,给用户随机昵称</p> <p>            $('.content').append('<p><small>'+received_msg.data+'</small></p>');</p> <p>        }else if(received_msg.action =='setname'){</p> <p>//  $('#setname').val(received_msg.data);</p> <p>        }else if(received_msg.action =='send'){</p> <p>$('.content').append('<ul>'+received_msg.data+'</ul>');</p> <p>        }else if(received_msg.action =='close'){</p> <p>$('.content').append('<p><small>'+received_msg.data+'</small></p>');</p> <p>        }</p> <p>};</p> <p>    // 断开 web socket 连接成功触发事件</p> <p>    ws.onclose =function (evt) {</p> <p>};</p> <p>    //设置昵称</p> <p>    $("#setnickname").click(function(){</p> <p>ws.send('{"action":"setname","data":"'+$('#setname').val()+'"}');</p> <p>    });</p> <p>    //发送消息</p> <p>    $('#sendmsg').click(function () {</p> <p>ws.send('{"action":"send","data":"'+$('#send').val()+'"}');</p> <p>    });</p> <p></html></p> <p>优化:界面显示+踢人</p> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1747978926266793984"></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">你可能感兴趣的:(swoole 初识--简易聊天室)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1940691885270036480.htm" title="Netty案例:WebSocket开发网页版聊天室" target="_blank">Netty案例:WebSocket开发网页版聊天室</a> <span class="text-muted">熙客</span> <a class="tag" taget="_blank" href="/search/12_%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">12_计算机网络</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</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>目录1、开发流程2、具体代码实现2.1添加依赖(pom.xml)2.2配置文件(application.yml)2.3配置类读取设置2.4Netty服务器实现2.5WebSocket初始化器和处理器2.6SpringBoot启动类2.7HTML5客户端(src/main/resources/static/chat.html)2.8启动与测试1、开发流程创建SpringBoot项目添加Netty依赖</div> </li> <li><a href="/article/1940689234084032512.htm" title="原生微信小程序响应式数据" target="_blank">原生微信小程序响应式数据</a> <span class="text-muted"></span> <div>原生微信小程序提供两种响应式数据处理方式1、module:value="{{xxx}}"2、setDatamodule:value第一种方式为简易双向绑定,这种双向绑定只能对应data中的简单数据类型,例如:string、number、boolean、null,例如:data:{keyword:''//data中直接定义},页面用module:value="{{keyword}}"直接绑定,这种就</div> </li> <li><a href="/article/1940650786493100032.htm" title="【Python】edge-tts :便捷语音合成" target="_blank">【Python】edge-tts :便捷语音合成</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> <div>第一章:初识edge-tts——开启语音合成之旅1.1文本转语音(TTS)技术概述文本转语音(Text-to-Speech,TTS),顾名思义,是一种将输入的文本信息转换成可听的语音波形的技术。它是人机语音交互的关键组成部分,使得计算机能够像人一样“说话”。1.1.1TTS的发展简史与重要性TTS技术的研究可以追溯到上世纪中叶,早期的TTS系统通常基于参数合成或拼接合成的方法,声音机械、不自然。参</div> </li> <li><a href="/article/1940607779018436608.htm" title="【精品毕设】基于SSM+JSP的简易版营业厅宽带系统设计与实现" target="_blank">【精品毕设】基于SSM+JSP的简易版营业厅宽带系统设计与实现</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/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</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/java/1.htm">java</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/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</a><a class="tag" taget="_blank" href="/search/SSM/1.htm">SSM</a> <div>关注【墨岚创客】,回复【毕设】,赠送免费毕设资源,具体联系方式见文末摘要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本营业厅宽带系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此营业厅宽带系统利用当下成熟完善的SSM框架,使</div> </li> <li><a href="/article/1940287012800098304.htm" title="【C++】中介者模式" target="_blank">【C++】中介者模式</a> <span class="text-muted">OpenC++</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E4%BB%8B%E8%80%85%E6%A8%A1%E5%BC%8F/1.htm">中介者模式</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>目录一、模式核心概念与结构二、C++实现示例:聊天室系统三、中介者模式的关键特性四、应用场景五、中介者模式与其他设计模式的关系六、C++标准库中的中介者模式应用七、优缺点分析八、实战案例:机场塔台调度系统九、实现注意事项如果这篇文章对你有所帮助,渴望获得你的一个点赞!中介者模式(MediatorPattern)是一种【行为型】设计模式,它通过一个中介对象来封装一系列对象之间的交互,使各对象不需要显</div> </li> <li><a href="/article/1940112755927347200.htm" title="数据库Mysql基础------第一部分 数据的准备与基础命令" target="_blank">数据库Mysql基础------第一部分 数据的准备与基础命令</a> <span class="text-muted">Judy~judy</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>一、初识数据库一、为什么要用数据库?数据库(Database)是按照数据结构来组织、存储和管理数据的仓库数据库随时随地的存在,并且使用,简单的说,数据库就是收集数据的结构。数据涉及很多,例如一个产品属于种类,并且有自己的数据标签,这就是为什么要用关系型数据。在关系数据库,我们建模数据包括产品,品类,标签等等,所有这些都用一个表格,包含行和列,就像Excel中的电子表格。从文件中读取数据的反序列化操</div> </li> <li><a href="/article/1940062571138707456.htm" title="海外社交App开发实战:从0到百万DAU的架构设计" target="_blank">海外社交App开发实战:从0到百万DAU的架构设计</a> <span class="text-muted">VI8664956I26</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>一、海外社交赛道破局点:找到你的“社交原子习惯”新兴市场机会矩阵地区用户痛点成功案例东南亚线下社交成本高Litmatch(匿名语音匹配)中东性别隔离文化下的匿名需求Yalla(语音聊天室)拉美热情文化+高移动渗透率Badoo(附近的人)功能设计黄金公式社交动力=低门槛互动×即时反馈×身份认同反例:要求填写10项资料才能聊天→用户流失率↑80%正例:Soul的“灵魂测试”→3步生成虚拟身份二、核心技</div> </li> <li><a href="/article/1940043410937278464.htm" title="18个Python高效编程技巧!" target="_blank">18个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/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>初识Python语言,觉得python满足了我上学时候对编程语言的所有要求。python语言的高效编程技巧让我们这些大学曾经苦逼学了四年c或者c++的人,兴奋的不行不行的,终于解脱了。高级语言,如果做不到这样,还扯啥高级呢?01交换变量>>>a=3>>>b=6这个情况如果要交换变量在c++中,肯定需要一个空变量。但是python不需要,只需一行,大家看清楚了>>>a,b=b,a>>>print(a</div> </li> <li><a href="/article/1940029419976454144.htm" title="初识 Flask 框架" target="_blank">初识 Flask 框架</a> <span class="text-muted">2301_80329775</span> <a class="tag" taget="_blank" href="/search/pyton%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80/1.htm">pyton编程基础</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>前言Flask是一个轻量级的Web框架,基于Python语言开发,设计理念注重简洁、灵活和易用。作为一个"微框架",它本身非常简洁,提供了构建web应用所需的核心工具,但并不强制开发者遵循复杂的项目结构,因此被广泛应用于web开发领域。Flask非常适合初学者学习Web开发,因为它让开发者能够专注于应用逻辑,而无需过多担心框架本身的复杂性。无论是快速原型开发,还是较小规模的Web应用,Flask都</div> </li> <li><a href="/article/1939999165736087552.htm" title="Cursor黑科技:AI编程实战技术文章" target="_blank">Cursor黑科技:AI编程实战技术文章</a> <span class="text-muted">yuehui001</span> <a class="tag" taget="_blank" href="/search/%E7%A7%91%E6%8A%80/1.htm">科技</a><a class="tag" taget="_blank" href="/search/AI%E7%BC%96%E7%A8%8B/1.htm">AI编程</a> <div>引言概述AI编程工具的发展现状Cursor在AI编程领域的独特定位文章目标:展示Cursor的核心功能与实战应用Cursor的核心功能解析智能代码补全:基于上下文的代码生成能力自然语言转代码:通过对话式交互生成完整功能模块代码重构与优化:自动化识别并改进代码质量错误诊断与修复:实时分析代码逻辑并提供解决方案实战场景一:快速原型开发需求描述转化为可执行代码的流程示例:构建一个简易待办事项应用对比传统</div> </li> <li><a href="/article/1939863019517440000.htm" title="【自然语言处理-NLP】文本预处理技术" target="_blank">【自然语言处理-NLP】文本预处理技术</a> <span class="text-muted">云博士的AI课堂</span> <a class="tag" taget="_blank" href="/search/%E5%93%88%E4%BD%9B%E5%8D%9A%E5%90%8E%E5%B8%A6%E4%BD%A0%E7%8E%A9%E8%BD%AC%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">哈佛博后带你玩转机器学习</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/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><a class="tag" taget="_blank" href="/search/NLP/1.htm">NLP</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E9%A2%84%E5%A4%84%E7%90%86/1.htm">数据预处理</a><a class="tag" taget="_blank" href="/search/NLP%E6%95%B0%E6%8D%AE%E9%A2%84%E5%A4%84%E7%90%86/1.htm">NLP数据预处理</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a> <div>以下内容将从基本概念到实用代码分步骤、分场景地详细介绍NLP常见文本预处理方法及其背后的思想。如果无法从外部导入数据,我们会模拟一份简易文本数据(如字符串列表),并在此基础上演示预处理代码及详细解释,确保在常规Python环境下可以运行。一、文本预处理的常见需求和作用在自然语言处理(NLP)任务(如机器学习、深度学习、大模型开发)中,原始文本数据通常会包含各种噪声,例如:多余的空格、换行符、特殊符</div> </li> <li><a href="/article/1939860627182907392.htm" title="Java基础(六):数组全面解析" target="_blank">Java基础(六):数组全面解析</a> <span class="text-muted">冬天vs不冷</span> <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/java/1.htm">java</a><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> <div>Java基础系列文章Java基础(一):初识Java——发展历程、技术体系与JDK环境搭建Java基础(二):八种基本数据类型详解Java基础(三):逻辑运算符详解Java基础(四):位运算符详解Java基础(五):流程控制全解析——分支(if/switch)和循环(for/while)的深度指南Java基础(六):数组全面解析目录一、数组的概述1、什么是数组?2、数组的特点3、数组分类二、一维数</div> </li> <li><a href="/article/1939826980111314944.htm" title="day45-Django RestFramework(drf)实战案例" target="_blank">day45-Django RestFramework(drf)实战案例</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/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%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> <div>1.6DjangoRestFramework(drf)实战案例1.需求请结合上述学习的drf知识开发简易版《抽屉新热榜》。其中包含的功能如下:注册输入:手机号、用户名、密码、确认密码。登录输入:手机号或用户名+密码注意:登录成功后给用户返回token,后续请求需要在url中携带token(有效期2周)我的话题-我的话题列表-创建话题-修改话题-删除话题(逻辑删除)我的资讯-创建资讯(5分钟创建一个</div> </li> <li><a href="/article/1939812734363299840.htm" title="用html代码制作一个表单页面,HTML网页表单制作详细讲解" target="_blank">用html代码制作一个表单页面,HTML网页表单制作详细讲解</a> <span class="text-muted">weixin_39747975</span> <a class="tag" taget="_blank" href="/search/%E7%94%A8html%E4%BB%A3%E7%A0%81%E5%88%B6%E4%BD%9C%E4%B8%80%E4%B8%AA%E8%A1%A8%E5%8D%95%E9%A1%B5%E9%9D%A2/1.htm">用html代码制作一个表单页面</a> <div>表单是一个网站和访问者开展互动的窗口,我们现在就给大家介绍一下表单的一些基本知识和表单美化方法。初识表单表单可以用来在网页中发送数据,特别是经常被用在联系表单-用户输入信息然后发送到Email中。表单本身是没有什么用的。这需要编一个程序来处理输入表单中的数据。这也超出了本站指南的范围。如果使用网络服务器来放置HTML,你能够自助地找到一些简单的教程,开发一个服务器端的程序使一个发送到Email的表</div> </li> <li><a href="/article/1939728400293883904.htm" title="Vue - 监测数据的原理、Vue.set、vm.$set" target="_blank">Vue - 监测数据的原理、Vue.set、vm.$set</a> <span class="text-muted">企鹅d</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>监测数据的原理目录监测数据的原理一、更新时的问题二、Vue检测对象三、Vue检测数组3.1push添加3.2shift删除3.3splice替换3.4原理四、Vue.set4.1追加属性4.2案例五、总结5.1代码练习5.2总结一、更新时的问题为什么我们要研究一下Vue监测数据的原理?以防我们后续在给data赋值或者修改data中数据时导致修改不成功比如下面这个例子:初识vue人员列表<bu</div> </li> <li><a href="/article/1939551511864471552.htm" title="学习日志02 ETF 基础数据可视化分析与简易管理系统" target="_blank">学习日志02 ETF 基础数据可视化分析与简易管理系统</a> <span class="text-muted">im_AMBER</span> <a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a> <div>从头开始了,现在有数据的变动还有要用jupyter,这个文学编程的确很好,虽然我们老师有点push有点严格,但觉得好好学确实能收获不少知识的!!!是的!已经搭建了miniconda关联的jupyternotebook1我发现jupyter是不可以关闭conda终端运行的对哒,JupyterNotebook是依赖终端(或AnacondaPrompt)启动的本地服务,终端窗口不能直接关闭,否则Jupy</div> </li> <li><a href="/article/1939499707533422592.htm" title="Redis初识第五期---List的命令和使用场景" target="_blank">Redis初识第五期---List的命令和使用场景</a> <span class="text-muted">wuyunhang123456</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a> <div>List,相当于数组或者顺序表,List对元素顺序敏感,允许元素重复,这是和后面的Set类型来对比的,但是得益于Redis对List的优化,使得它支持头/尾插/删,使得List也可以作为一个栈/队列来使用。命令普通版本命令1.LPushLPushkeyelement[element.....]头插,可以同时插入多个元素,最后一个元素在最前面。返回的为list的长度,可以为key为空的插入元素。2.</div> </li> <li><a href="/article/1939361951595425792.htm" title="Scikit-learn:机器学习的「万能工具箱」" target="_blank">Scikit-learn:机器学习的「万能工具箱」</a> <span class="text-muted">科技林总</span> <a class="tag" taget="_blank" href="/search/DeepSeek%E5%AD%A6AI/1.htm">DeepSeek学AI</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>——三行代码构建AI模型的全栈指南**###**一、诞生背景:让机器学习从实验室走向大众****2010年前的AI困境**:-学术界模型难以工程化-算法实现碎片化(MATLAB/C++主导)-企业应用门槛极高>**破局者**:DavidCournapeau发起*Scikit-learn*项目,**统一算法接口**+**Python简易语法**=机器学习民主化革命---###**二、设计哲学:一致性</div> </li> <li><a href="/article/1939326905861861376.htm" title="Java实现简易即时通讯系统" target="_blank">Java实现简易即时通讯系统</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/java/1.htm">java</a> <div>我们想要实现一个类似QQ的即时通讯程序。由于这是一个复杂的项目,我们将分步骤进行,并只实现核心功能。核心功能包括:1.用户注册与登录2.添加好友3.发送消息(点对点)4.接收消息我们将使用Socket编程来实现。为了简化,我们不使用数据库,而是使用文件存储用户信息和好友关系。我们将创建两个主要部分:服务器和客户端。服务器端:-处理用户注册、登录请求-管理用户连接(在线状态)-转发消息客户端:-提供</div> </li> <li><a href="/article/1939259825611403264.htm" title="简易区块链的搭建(3)——交易" target="_blank">简易区块链的搭建(3)——交易</a> <span class="text-muted">Hock2024</span> <a class="tag" taget="_blank" href="/search/golang%E5%8C%BA%E5%9D%97%E9%93%BE%E7%9A%84%E6%9E%84%E5%BB%BA/1.htm">golang区块链的构建</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a> <div>背景知识1.UTXO账户模型产生背景:为了解决第一类双花问题(一笔钱花两次)原理介绍:我们先来介绍传统的金融模式,你有10元存款,想转给我3元,银行会怎么操作?很显然,他会将你的账户减3元,将我的账户加3元。这种交易模式记录的是交易结果而UTXO账户模型记录的是交易过程下面是简单的例子:还拿上述例子,你给我转账10元,那么这个机制会做出如下记录:初始状态:你的账户有10元,由一个未花费交易输出(U</div> </li> <li><a href="/article/1939244311145148416.htm" title="E IO流.java" target="_blank">E IO流.java</a> <span class="text-muted">是紫焅呢</span> <a class="tag" taget="_blank" href="/search/26%E5%AD%97%E6%AF%8D%E5%AD%A6%E4%B9%A0%EF%BC%9Ajava%E5%85%A5%E9%97%A8%E7%AF%87/1.htm">26字母学习:java入门篇</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><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">学习方法</a><a class="tag" taget="_blank" href="/search/visual/1.htm">visual</a><a class="tag" taget="_blank" href="/search/studio/1.htm">studio</a><a class="tag" taget="_blank" href="/search/code/1.htm">code</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>前言:I/O(输入/输出)操作是构建各类应用程序的基石之一。Java提供了功能强大且灵活的I/O流机制,用于处理数据的读取与写入,无论是简单的文本文件操作,还是复杂的网络数据传输,都离不开I/O流的支持。目录一、初识JavaI/O流数据的“传送带”二、字节流操作从读取到写入的实战1.读取文件(字节流)2.写入文件(字节流)三、字符流操作读写文本文件的简便之道1.读取文件(字符流)2.写入文件(字符</div> </li> <li><a href="/article/1939169174886608896.htm" title="c++多线程编写网络聊天室程序(socket)" target="_blank">c++多线程编写网络聊天室程序(socket)</a> <span class="text-muted">g710710</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/socket/1.htm">socket</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/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E8%81%8A%E5%A4%A9/1.htm">聊天</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/winapi/1.htm">winapi</a> <div>先版本信息调用函数AfxSocketInit1BOOLCChatDlg::InitSocket(){m_socket=socket(AF_INET,SOCK_DGRAM,0);if(INVALID_SOCKET==m_socket){MessageBox("套接字创建失败!");returnFALSE;}SOCKADDR_INaddrSock;addrSock.sin_family=AF_INET</div> </li> <li><a href="/article/1939158581513351168.htm" title="Netty案例:群聊天室" target="_blank">Netty案例:群聊天室</a> <span class="text-muted">熙客</span> <a class="tag" taget="_blank" href="/search/12_%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">12_计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a> <div>目录1、系统设计2、代码实现2.1服务端代码2.2客户端代码2.3启动说明3、关键技术解析3.1编解码器使用3.2通道管理3.3消息协议设计3.4用户管理1、系统设计核心功能:用户加入/离开聊天室通知群发聊天消息在线用户列表管理用户昵称设置通信协议设计:使用简单的文本协议,消息格式:[类型]:[内容]消息类型:JOIN(改昵称),MSG(消息),LIST(用户列表),SYS(系统消息)关键技术组件</div> </li> <li><a href="/article/1939048003415371776.htm" title="ASP.NET Core通过Websocket建立简单聊天室" target="_blank">ASP.NET Core通过Websocket建立简单聊天室</a> <span class="text-muted"></span> <div>什么是websocket?传统的HTTP协议是一个请求-响应协议,也即是由浏览器主动向服务器发起请求,随后服务器才能进行响应这个请求,再把数据发送给浏览器。也就是说,浏览器不主动发起请求,服务器是不能主动发送数据给浏览器的,很明显,这并不能满足实时聊天的需求。满足这个需求的解法总体来说有三种:轮询、长连接、Comet轮询:轮询是指浏览器通过JavaScript启动一个定时器,然后以固定的间隔给服务</div> </li> <li><a href="/article/1938930983923412992.htm" title="OKHttp框架" target="_blank">OKHttp框架</a> <span class="text-muted">一个快乐的小测试</span> <a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/1.htm">自动化测试</a><a class="tag" taget="_blank" href="/search/okhttp/1.htm">okhttp</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a> <div>一、OKHttp简介初识OKHttpOkHttp是一个处理网络请求的开源项目,是Android端一个较新的轻量级网络框架,支持HTTP/HTTPS协议、请求头设置、响应解析等功能,并且支持异步调用,因此在接口测试中也是一种非常优秀的选择。OkHttp是一个高效的HTTP客户端,其特性包括:支持HTTP/2,并且允许同一个主机地址的所有请求共享同一个socket连接,这样能减少服务器的请求次数通过连</div> </li> <li><a href="/article/1938930857570004992.htm" title="基于STM32与ZigBee的智能指引车库系统设计" target="_blank">基于STM32与ZigBee的智能指引车库系统设计</a> <span class="text-muted">科创工作室li</span> <a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A11/1.htm">毕业设计1</a><a class="tag" taget="_blank" href="/search/stm32/1.htm">stm32</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a> <div>⭐资料具有原理图流程图PCB器件清单STM32与ZigBee的智能指引车库系统设计摘要:本文设计了一种基于STM32与ZigBee的智能指引车库系统。系统包含1台主机和3台从机,从机实时检测车位状况并发送给主机,主机显示3个车位的停车情况(满、无),并能简易引导车辆驶向空位,同时主机通过WiFi模块将数据上传至阿里云。该系统实现了车库车位的智能监测与引导,提高了车库管理的效率和便捷性。关键词:ST</div> </li> <li><a href="/article/1938884077482471424.htm" title="Java中多态的一些见解" target="_blank">Java中多态的一些见解</a> <span class="text-muted"></span> <div>更多内容请看我的个人网站多态初识调用成员的特点成员变量:编译看左边,运行看左边成员方法:编译看左边,运行看右边多态在调用成员变量时为什么是父类的,但是方法是子类的?一句话解释:在编译时(静态绑定),成员变量是根据引用类型(也就是声明的类型)来决定的;在运行时(动态绑定),方法是根据对象的实际类型(也就是new出来的类型)来决定的。举个经典例子classParent{publicStringname</div> </li> <li><a href="/article/1938815749695008768.htm" title="区块链技术概述:从比特币到Web3.0" target="_blank">区块链技术概述:从比特币到Web3.0</a> <span class="text-muted">闲人编程</span> <a class="tag" taget="_blank" href="/search/Python%E5%8C%BA%E5%9D%97%E9%93%BE50%E8%AE%B2/1.htm">Python区块链50讲</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/web3/1.htm">web3</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%85%83%E5%AE%87%E5%AE%99/1.htm">元宇宙</a><a class="tag" taget="_blank" href="/search/%E6%AF%94%E7%89%B9%E5%B8%81/1.htm">比特币</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>目录区块链技术概述:从比特币到Web3.0引言:数字革命的下一篇章1.区块链技术基础1.1区块链定义与核心特征1.2区块链数据结构可视化2.比特币:区块链的开端2.1比特币的核心创新2.2比特币交易生命周期3.以太坊与智能合约革命3.1以太坊的核心创新3.2智能合约执行流程4.Web3.0:互联网的新范式4.1Web3.0的核心特征4.2Web3技术栈5.Python实现简易区块链系统5.1区块类</div> </li> <li><a href="/article/1938792042582831104.htm" title="推荐使用:Vue-Cron —— 简易CRON表达式生成器" target="_blank">推荐使用:Vue-Cron —— 简易CRON表达式生成器</a> <span class="text-muted">乌昱有Melanie</span> <div>推荐使用:Vue-Cron——简易CRON表达式生成器项目地址:https://gitcode.com/gh_mirrors/vu/vue-cronVue-Cron是一款专为Vue.js和Element-UI设计的高效、易用的CRON表达式生成插件。它能帮助开发者轻松创建和管理定时任务策略,提供直观的界面和完善的国际化支持。项目介绍Vue-Cron提供了一个简洁的交互界面,让用户能够通过可视化的操</div> </li> <li><a href="/article/1938751832004292608.htm" title="Docker基础实战教程一:入门" target="_blank">Docker基础实战教程一:入门</a> <span class="text-muted">Ssaty.</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>第1关:HelloDocker!本关任务是初识Docker,要求学习者参照示例完成拉取镜像、启动容器并在容器内输出HelloDocker的功能。#注意如果想在右侧使用命令行模拟操作,请先输入#servicedockerstart#否则将不能执行docker命令#拉取busybox官方镜像,启动容器并执行输出"HelloDocker"#拉取busybox官方最新镜像dockerpullbusybox</div> </li> <li><a href="/article/17.htm" title="分享100个最新免费的高匿HTTP代理IP" target="_blank">分享100个最新免费的高匿HTTP代理IP</a> <span class="text-muted">mcj8089</span> <a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%90%86IP/1.htm">代理IP</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">代理服务器</a><a class="tag" taget="_blank" href="/search/%E5%8C%BF%E5%90%8D%E4%BB%A3%E7%90%86/1.htm">匿名代理</a><a class="tag" taget="_blank" href="/search/%E5%85%8D%E8%B4%B9%E4%BB%A3%E7%90%86IP/1.htm">免费代理IP</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E6%96%B0%E4%BB%A3%E7%90%86IP/1.htm">最新代理IP</a> <div>  推荐两个代理IP网站:   1. 全网代理IP:http://proxy.goubanjia.com/   2. 敲代码免费IP:http://ip.qiaodm.com/     120.198.243.130:80,中国/广东省 58.251.78.71:8088,中国/广东省 183.207.228.22:83,中国/</div> </li> <li><a href="/article/144.htm" title="mysql高级特性之数据分区" target="_blank">mysql高级特性之数据分区</a> <span class="text-muted">annan211</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><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%8C%BA/1.htm">分区</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div> mysql高级特性 1 以存储引擎的角度分析,分区表和物理表没有区别。是按照一定的规则将数据分别存储的逻辑设计。器底层是由多个物理字表组成。 2 分区的原理 分区表由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们可以直接访问各个分区。存储引擎管理分区的各个底层 表和管理普通表一样(所有底层表都必须使用相同的存储引擎),分区表的索引只是</div> </li> <li><a href="/article/271.htm" title="JS采用正则表达式简单获取URL地址栏参数" target="_blank">JS采用正则表达式简单获取URL地址栏参数</a> <span class="text-muted">chiangfai</span> <a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/%E5%9C%B0%E5%9D%80%E6%A0%8F%E5%8F%82%E6%95%B0%E8%8E%B7%E5%8F%96/1.htm">地址栏参数获取</a> <div>GetUrlParam:function GetUrlParam(param){ var reg = new RegExp("(^|&)"+ param +"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if(r!=null</div> </li> <li><a href="/article/398.htm" title="怎样将数据表拷贝到powerdesigner (本地数据库表)" target="_blank">怎样将数据表拷贝到powerdesigner (本地数据库表)</a> <span class="text-muted">Array_06</span> <a class="tag" taget="_blank" href="/search/powerDesigner/1.htm">powerDesigner</a> <div>================================================== 1、打开PowerDesigner12,在菜单中按照如下方式进行操作 file->Reverse Engineer->DataBase 点击后,弹出 New Physical Data Model 的对话框 2、在General选项卡中 Model name:模板名字,自</div> </li> <li><a href="/article/525.htm" title="logbackのhelloworld" target="_blank">logbackのhelloworld</a> <span class="text-muted">飞翔的马甲</span> <a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%BF%97/1.htm">日志</a><a class="tag" taget="_blank" href="/search/logback/1.htm">logback</a> <div>一、概述 1.日志是啥? 当我是个逗比的时候我是这么理解的:log.debug()代替了system.out.print(); 当我项目工作时,以为是一堆得.log文件。 这两天项目发布新版本,比较轻松,决定好好地研究下日志以及logback。 传送门1:日志的作用与方法: http://www.infoq.com/cn/articles/why-and-how-log 上面的作</div> </li> <li><a href="/article/652.htm" title="新浪微博爬虫模拟登陆" target="_blank">新浪微博爬虫模拟登陆</a> <span class="text-muted">随意而生</span> <a class="tag" taget="_blank" href="/search/%E6%96%B0%E6%B5%AA%E5%BE%AE%E5%8D%9A/1.htm">新浪微博</a> <div>转载自:http://hi.baidu.com/erliang20088/item/251db4b040b8ce58ba0e1235     近来由于毕设需要,重新修改了新浪微博爬虫废了不少劲,希望下边的总结能够帮助后来的同学们。      现行版的模拟登陆与以前相比,最大的改动在于cookie获取时候的模拟url的请求</div> </li> <li><a href="/article/779.htm" title="synchronized" target="_blank">synchronized</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/thread/1.htm">thread</a> <div>    Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍然</div> </li> <li><a href="/article/906.htm" title="maven 简单实用教程" target="_blank">maven 简单实用教程</a> <span class="text-muted">AdyZhang</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>1. Maven介绍  1.1. 简介 java编写的用于构建系统的自动化工具。目前版本是2.0.9,注意maven2和maven1有很大区别,阅读第三方文档时需要区分版本。 1.2. Maven资源 见官方网站;The 5 minute test,官方简易入门文档;Getting Started Tutorial,官方入门文档;Build Coo</div> </li> <li><a href="/article/1033.htm" title="Android 通过 intent传值获得null" target="_blank">Android 通过 intent传值获得null</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>我在通过intent 获得传递兑现过的时候报错,空指针,我是getMap方法进行传值,代码如下 1 2 3 4 5 6 7 8 9 public void getMap(View view){            Intent i =</div> </li> <li><a href="/article/1160.htm" title="apache 做代理 报如下错误:The proxy server received an invalid response from an upstream" target="_blank">apache 做代理 报如下错误:The proxy server received an invalid response from an upstream</a> <span class="text-muted">baalwolf</span> <a class="tag" taget="_blank" href="/search/response/1.htm">response</a> <div>网站配置是apache+tomcat,tomcat没有报错,apache报错是: The proxy server received an invalid response from an upstream server. The proxy server could not handle the request GET /. Reason: Error reading fr</div> </li> <li><a href="/article/1287.htm" title="Tomcat6 内存和线程配置" target="_blank">Tomcat6 内存和线程配置</a> <span class="text-muted">BigBird2012</span> <a class="tag" taget="_blank" href="/search/tomcat6/1.htm">tomcat6</a> <div>1、修改启动时内存参数、并指定JVM时区 (在windows server 2008 下时间少了8个小时) 在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数:  window下, 在catalina.bat最前面 set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms5</div> </li> <li><a href="/article/1414.htm" title="Karam与TDD" target="_blank">Karam与TDD</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/Karam/1.htm">Karam</a><a class="tag" taget="_blank" href="/search/TDD/1.htm">TDD</a> <div>一.TDD         测试驱动开发(Test-Driven Development,TDD)是一种敏捷(AGILE)开发方法论,它把开发流程倒转了过来,在进行代码实现之前,首先保证编写测试用例,从而用测试来驱动开发(而不是把测试作为一项验证工具来使用)。         TDD的原则很简单: a.只有当某个</div> </li> <li><a href="/article/1541.htm" title="[Zookeeper学习笔记之七]Zookeeper源代码分析之Zookeeper.States" target="_blank">[Zookeeper学习笔记之七]Zookeeper源代码分析之Zookeeper.States</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a> <div> public enum States { CONNECTING, //Zookeeper服务器不可用,客户端处于尝试链接状态 ASSOCIATING, //??? CONNECTED, //链接建立,可以与Zookeeper服务器正常通信 CONNECTEDREADONLY, //处于只读状态的链接状态,只读模式可以在</div> </li> <li><a href="/article/1668.htm" title="【Scala十四】Scala核心八:闭包" target="_blank">【Scala十四】Scala核心八:闭包</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a> <div>Free variable A free variable of an expression is a variable that’s used inside the expression but not defined inside the expression. For instance, in the function literal expression (x: Int) => (x</div> </li> <li><a href="/article/1795.htm" title="android发送json并解析返回json" target="_blank">android发送json并解析返回json</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>package com.http.test; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import </div> </li> <li><a href="/article/1922.htm" title="一份IT实习生的总结" target="_blank">一份IT实习生的总结</a> <span class="text-muted">brotherlamp</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/php%E8%B5%84%E6%96%99/1.htm">php资料</a><a class="tag" taget="_blank" href="/search/php%E6%95%99%E7%A8%8B/1.htm">php教程</a><a class="tag" taget="_blank" href="/search/php%E5%9F%B9%E8%AE%AD/1.htm">php培训</a><a class="tag" taget="_blank" href="/search/php%E8%A7%86%E9%A2%91/1.htm">php视频</a> <div>今天突然发现在不知不觉中自己已经实习了 3 个月了,现在可能不算是真正意义上的实习吧,因为现在自己才大三,在这边撸代码的同时还要考虑到学校的功课跟期末考试。让我震惊的是,我完全想不到在这 3 个月里我到底学到了什么,这是一件多么悲催的事情啊。同时我对我应该 get 到什么新技能也很迷茫。所以今晚还是总结下把,让自己在接下来的实习生活有更加明确的方向。最后感谢工作室给我们几个人这个机会让我们提前出来</div> </li> <li><a href="/article/2049.htm" title="据说是2012年10月人人网校招的一道笔试题-给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 将重物放到天平左侧,问在两边如何添加砝码" target="_blank">据说是2012年10月人人网校招的一道笔试题-给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 将重物放到天平左侧,问在两边如何添加砝码</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class ScalesBalance { /** * 题目: * 给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 (假设N无限大,但一种重量的砝码只有一个) * 将重物放到天平左侧,问在两边如何添加砝码使两边平衡 * * 分析: * 三进制 * 我们约定括号表示里面的数是三进制,例如 47=(1202</div> </li> <li><a href="/article/2176.htm" title="dom4j最常用最简单的方法" target="_blank">dom4j最常用最简单的方法</a> <span class="text-muted">chiangfai</span> <a class="tag" taget="_blank" href="/search/dom4j/1.htm">dom4j</a> <div>要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要</div> </li> <li><a href="/article/2303.htm" title="简单HBase笔记" target="_blank">简单HBase笔记</a> <span class="text-muted">chenchao051</span> <a class="tag" taget="_blank" href="/search/hbase/1.htm">hbase</a> <div> 一、Client-side write buffer 客户端缓存请求 描述:可以缓存客户端的请求,以此来减少RPC的次数,但是缓存只是被存在一个ArrayList中,所以多线程访问时不安全的。 可以使用getWriteBuffer()方法来取得客户端缓存中的数据。 默认关闭。 二、Scan的Caching 描述: next( )方法请求一行就要使用一次RPC,即使</div> </li> <li><a href="/article/2430.htm" title="mysqldump导出时出现when doing LOCK TABLES" target="_blank">mysqldump导出时出现when doing LOCK TABLES</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/mysqdump/1.htm">mysqdump</a><a class="tag" taget="_blank" href="/search/%E5%AF%BC%E6%95%B0%E6%8D%AE/1.htm">导数据</a> <div>  执行 mysqldump -uxxx -pxxx -hxxx -Pxxxx database tablename > tablename.sql  导出表时,会报 mysqldump: Got error: 1044: Access denied for user 'xxx'@'xxx' to database 'xxx' when doing LOCK TABLES 解决</div> </li> <li><a href="/article/2557.htm" title="CSS渲染原理" target="_blank">CSS渲染原理</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a> <div>  从事Web前端开发的人都与CSS打交道很多,有的人也许不知道css是怎么去工作的,写出来的css浏览器是怎么样去解析的呢?当这个成为我们提高css水平的一个瓶颈时,是否应该多了解一下呢?          一、浏览器的发展与CSS           </div> </li> <li><a href="/article/2684.htm" title="《阿甘正传》台词" target="_blank">《阿甘正传》台词</a> <span class="text-muted">dcj3sjt126com</span> <div>Part Ⅰ: 《阿甘正传》Forrest Gump经典中英文对白 Forrest: Hello! My names Forrest. Forrest Gump. You wanna Chocolate? I could eat about a million and a half othese. My momma always said life was like a box ochocol</div> </li> <li><a href="/article/2811.htm" title="Java处理JSON" target="_blank">Java处理JSON</a> <span class="text-muted">dyy_gusi</span> <a class="tag" taget="_blank" href="/search/json/1.htm">json</a> <div>Json在数据传输中很好用,原因是JSON 比 XML 更小、更快,更易解析。 在Java程序中,如何使用处理JSON,现在有很多工具可以处理,比较流行常用的是google的gson和alibaba的fastjson,具体使用如下: 1、读取json然后处理 class ReadJSON { public static void main(String[] args) </div> </li> <li><a href="/article/2938.htm" title="win7下nginx和php的配置" target="_blank">win7下nginx和php的配置</a> <span class="text-muted">geeksun</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>1.  安装包准备 nginx :  从nginx.org下载nginx-1.8.0.zip php: 从php.net下载php-5.6.10-Win32-VC11-x64.zip, php是免安装文件。 RunHiddenConsole: 用于隐藏命令行窗口   2. 配置 # java用8080端口做应用服务器,nginx反向代理到这个端口即可 p</div> </li> <li><a href="/article/3065.htm" title="基于2.8版本redis配置文件中文解释" target="_blank">基于2.8版本redis配置文件中文解释</a> <span class="text-muted">hongtoushizi</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a> <div>转载自: http://wangwei007.blog.51cto.com/68019/1548167        在Redis中直接启动redis-server服务时, 采用的是默认的配置文件。采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务。下面是Redis2.8.9的配置文</div> </li> <li><a href="/article/3192.htm" title="第五章 常用Lua开发库3-模板渲染" target="_blank">第五章 常用Lua开发库3-模板渲染</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> <div>动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现。而Lua中也有许多模板引擎,如目前我在使用的lua-resty-template,可以渲染很复杂的页面,借助LuaJIT其性能也是可以接受的。   如果学习过JavaEE中的servlet和JSP的话,应该知道JSP模板最终会被翻译成Servlet来执行;而lua-r</div> </li> <li><a href="/article/3319.htm" title="JZSearch大数据搜索引擎" target="_blank">JZSearch大数据搜索引擎</a> <span class="text-muted">颠覆者</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>系统简介: 大数据的特点有四个层面:第一,数据体量巨大。从TB级别,跃升到PB级别;第二,数据类型繁多。网络日志、视频、图片、地理位置信息等等。第三,价值密度低。以视频为例,连续不间断监控过程中,可能有用的数据仅仅有一两秒。第四,处理速度快。最后这一点也是和传统的数据挖掘技术有着本质的不同。业界将其归纳为4个“V”——Volume,Variety,Value,Velocity。大数据搜索引</div> </li> <li><a href="/article/3446.htm" title="10招让你成为杰出的Java程序员" target="_blank">10招让你成为杰出的Java程序员</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/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a> <div>如果你是一个热衷于技术的  Java 程序员, 那么下面的 10 个要点可以让你在众多 Java 开发人员中脱颖而出。    1. 拥有扎实的基础和深刻理解 OO 原则   对于 Java 程序员,深刻理解 Object Oriented Programming(面向对象编程)这一概念是必须的。没有 OOPS 的坚实基础,就领会不了像 Java 这些面向对象编程语言</div> </li> <li><a href="/article/3573.htm" title="tomcat之oracle连接池配置" target="_blank">tomcat之oracle连接池配置</a> <span class="text-muted">小网客</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>tomcat版本7.0 配置oracle连接池方式: 修改tomcat的server.xml配置文件: <GlobalNamingResources> <Resource name="utermdatasource" auth="Container" type="javax.sql.DataSou</div> </li> <li><a href="/article/3700.htm" title="Oracle 分页算法汇总" target="_blank">Oracle 分页算法汇总</a> <span class="text-muted">vipbooks</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>    这是我找到的一些关于Oracle分页的算法,大家那里还有没有其他好的算法没?我们大家一起分享一下! -- Oracle 分页算法一 select * from ( select page.*,rownum rn from (select * from help) page -- 20 = (currentPag</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>