Java EE资料(1)-用Java Socket开发的HTTP服务器

/**
* SimpleHttpServer.java
* 来源: http://www.blogjava.net/beansoft/archive/2007/06/25/126049.html
*/

import java.io.*;
import java.net.*;
import java.util.StringTokenizer;

/**
* 要让例子完整运行, 请在程序目录下放一个 images/test.gif. 

* 一个简单的用 Java Socket 编写的 HTTP 服务器应用, 演示了请求和应答的协议通信内容以及
* 给客户端返回 HTML 文本和二进制数据文件(一个图片), 同时展示了 404, 200 等状态码.
*
* 首先运行这个程序,然后打开Web浏览器,键入http://localhost,则这个程序能够显示出浏览器发送了那些信息
* 并且向浏览器返回一个网页和一副图片, 并测试同浏览器对话.
* 当浏览器看到 HTML 中带有图片地址时, 则会发出第二次连接来请求图片等资源.
* 这个例子可以帮您理解 Java 的 HTTP 服务器软件是基于 J2SE 的 Socket 等软件编写的概念, 并熟悉
* HTTP 协议.
* 相反的用 Telnet 连接到已有的服务器则可以帮忙理解浏览器的运行过程和服务器端的返回内容.
*
* 当用户在Web浏览器地址栏中输入一个带有http://前缀的URL并按下Enter后,或者在Web页面中某个以http://开头的超链接上单击鼠标,
* HTTP事务处理的第一个阶段--建立连接阶段就开始了.HTTP的默认端口是80. 随着连接的建立,HTTP就进入了客户向服务器发送请求的阶段.
* 客户向服务器发送的请求是一个有特定格式的ASCII消息,其语法规则为:
*
* < Method > < URL > < HTTP Version > <\n>
* {

: <\n>}*
* <\n>
* { Entity Body }
*
*     请求消息的顶端是请求行,用于指定方法,URL和HTTP协议的版本,请求行的最后是回车换行.方法有GET,POST,HEAD,PUT,DELETE等.
* 在请求行之后是若干个报头(Header)行.每个报头行都是由一个报头和一个取值构成的二元对,报头和取值之间以":"分隔;
* 报头行的最后是回车换行.常见的报头有Accept(指定MIME媒体类型),Accept_Charset(响应消息的编码方式),Accept_Encoding(响应消息的字符集),User_Agent(用户的浏览器信息)等.
*     在请求消息的报头行之后是一个回车换行,表明请求消息的报头部分结束.在这个\n之后是请求消息的消息实体(Entity Body).
* 具体的例子参看httpRequest.txt.
*
*      Web服务器在收到客户请求并作出处理之后,要向客户发送应答消息.与请求消息一样,应答消息的语法规则为:
*
* < HTTP Version> []<\n>
* {
: <\n> } *
* <\n>
* { Entity Body }
*
*    应答消息的第一行为状态行,其中包括了HTTP版本号,状态码和对状态码进行简短解释的消息;状态行的最后是回车换行.
* 状态码由3位数字组成,有5类: 
* 1XX 保留 
* 2XX 表示成功 
* 3XX 表示URL已经被移走 
* 4XX 表示客户错误 
* 5XX 表示服务器错误 
* 例如:415,表示不支持改媒体类型;503,表示服务器不能访问.最常见的是200,表示成功.
* 常见的报头有:Last_Modified(最后修改时间),Content_Type(消息内容的MIME类型),Content_Length(内容长度)等.
*     在报头行之后也是一个回车换行,用以表示应答消息的报头部分的结束,以及应答消息实体的开始.
*     下面是一个应答消息的例子:
*
* HTTP/1.0 200 OK
* Date: Moday,07-Apr-97 21:13:02 GMT
* Server:NCSA/1.1
* MIME_Version:1.0
* Content_Type:text/html
* Last_Modified:Thu Dec 5 09:28:01 1996
* Coentent_Length:3107

* </HEAD></HTML><br style="line-height:normal;"> * <br style="line-height:normal;"> * 在用Java语言实现HTTP服务器时,首先启动一个java.net.ServerSocket在提供服务的端口上监听连接.<br style="line-height:normal;"> *   向客户返回文本时,可以用PrintWriter,但是如果返回二进制数据,则必须使用OutputStream.write(byte[])方法,<br style="line-height:normal;"> *   返回的应答消息字符串可以使用String.getBytes()方法转换为字节数组返回,或者使用PrintStream的print()方法写入文本,<br style="line-height:normal;"> *   用write(byte[])方法写入二进制数据.<br style="line-height:normal;"> * <br style="line-height:normal;"> * @author 刘长炯<br style="line-height:normal;"> * @version 1.0 2007-07-24 Sunday<br style="line-height:normal;"> */<br style="line-height:normal;"> public class SimpleHttpServer implements Runnable {<br style="line-height:normal;">      ServerSocket serverSocket;//服务器Socket<br style="line-height:normal;">      public static int PORT=80;//服务器监听端口, 默认为 80.<br style="line-height:normal;">     <br style="line-height:normal;">      /**<br style="line-height:normal;">       * 开始服务器 Socket 线程.<br style="line-height:normal;">       */<br style="line-height:normal;">      public SimpleHttpServer() {<br style="line-height:normal;">          try {<br style="line-height:normal;">              serverSocket=new ServerSocket(PORT);<br style="line-height:normal;">          } catch(Exception e) {<br style="line-height:normal;">              System.out.println("无法启动HTTP服务器:"+e.getLocalizedMessage());<br style="line-height:normal;">          }<br style="line-height:normal;">          if(serverSocket==null)<br style="line-height:normal;">              System.exit(1);//无法开始服务器<br style="line-height:normal;">          new Thread(this).start();<br style="line-height:normal;">          System.out.println("HTTP服务器正在运行,端口:"+PORT);<br style="line-height:normal;">      }<br style="line-height:normal;">     <br style="line-height:normal;">      /**<br style="line-height:normal;">       * 运行服务器主线程, 监听客户端请求并返回响应.<br style="line-height:normal;">       */<br style="line-height:normal;">      public void run() {<br style="line-height:normal;">          while(true) {<br style="line-height:normal;">              try {<br style="line-height:normal;">                  Socket client=null;//客户Socket<br style="line-height:normal;">                  client=serverSocket.accept();//客户机(这里是 IE 等浏览器)已经连接到当前服务器<br style="line-height:normal;">                  if(client!=null) {<br style="line-height:normal;">                      System.out.println("连接到服务器的用户:"+client);<br style="line-height:normal;">                      try {<br style="line-height:normal;">                          // 第一阶段: 打开输入流<br style="line-height:normal;">                          BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));                        <br style="line-height:normal;">                          System.out.println("客户端发送的请求信息:\n***************");<br style="line-height:normal;">                          // 读取第一行, 请求地址<br style="line-height:normal;">                          String line=in.readLine();<br style="line-height:normal;">                          System.out.println(line);<br style="line-height:normal;">                          String resource=line.substring(line.indexOf('/'),line.lastIndexOf('/')-5);<br style="line-height:normal;">                          //获得请求的资源的地址<br style="line-height:normal;">                          resource=URLDecoder.decode(resource, "UTF-8");//反编码 URL 地址<br style="line-height:normal;">                          String method = new StringTokenizer(line).nextElement().toString();// 获取请求方法, GET 或者 POST</p> <p style="line-height:normal;">                         // 读取所有浏览器发送过来的请求参数头部信息<br style="line-height:normal;">                          while( (line = in.readLine()) != null) {<br style="line-height:normal;">                              System.out.println(line);                            <br style="line-height:normal;">                              if(line.equals(""))<br style="line-height:normal;">                                  break;<br style="line-height:normal;">                          }<br style="line-height:normal;">                         <br style="line-height:normal;">                          // 显示 POST 表单提交的内容, 这个内容位于请求的主体部分<br style="line-height:normal;">                          if("POST".equalsIgnoreCase(method)) {<br style="line-height:normal;">                              System.out.println(in.readLine());<br style="line-height:normal;">                          }<br style="line-height:normal;">                         <br style="line-height:normal;">                          System.out.println("请求信息结束\n***************");<br style="line-height:normal;">                          System.out.println("用户请求的资源是:"+resource);<br style="line-height:normal;">                          System.out.println("请求的类型是: " + method);</p> <p style="line-height:normal;">                         // GIF 图片就读取一个真实的图片数据并返回给客户端<br style="line-height:normal;">                          if(resource.endsWith(".gif")) {<br style="line-height:normal;">                              fileService("images/test.gif", client);<br style="line-height:normal;">                              closeSocket(client);<br style="line-height:normal;">                              continue;<br style="line-height:normal;">                          }<br style="line-height:normal;">                         <br style="line-height:normal;">                          // 请求 JPG 格式就报错 404<br style="line-height:normal;">                          if(resource.endsWith(".jpg")) {<br style="line-height:normal;">                              PrintWriter out=new PrintWriter(client.getOutputStream(),true);<br style="line-height:normal;">                              out.println("HTTP/1.0 404 Not found");//返回应答消息,并结束应答<br style="line-height:normal;">                              out.println();// 根据 HTTP 协议, 空行将结束头信息<br style="line-height:normal;">                              out.close();<br style="line-height:normal;">                              closeSocket(client);<br style="line-height:normal;">                              continue;<br style="line-height:normal;">                          } else {<br style="line-height:normal;">                              // 用 writer 对客户端 socket 输出一段 HTML 代码<br style="line-height:normal;">                              PrintWriter out=new PrintWriter(client.getOutputStream(),true);<br style="line-height:normal;">                              out.println("HTTP/1.0 200 OK");//返回应答消息,并结束应答<br style="line-height:normal;">                              out.println("Content-Type:text/html;charset=GBK");<br style="line-height:normal;">                              out.println();// 根据 HTTP 协议, 空行将结束头信息</p> <p style="line-height:normal;">                             out.println("<h1> Hello Http Server</h1>");<br style="line-height:normal;">                              out.println("你好, 这是一个 Java HTTP 服务器 demo 应用.<br>");<br style="line-height:normal;">                              out.println("您请求的路径是: " + resource + "<br>");<br style="line-height:normal;">                              out.println("这是一个支持虚拟路径的图片:<img src='abc.gif'><br>" +<br style="line-height:normal;">                                      "<a href='abc.gif'>点击打开abc.gif, 是个服务器虚拟路径的图片文件.</a>");<br style="line-height:normal;">                              out.println("<br>这是个会反馈 404 错误的的图片:<img src='test.jpg'><br><a href='test.jpg'>点击打开test.jpg</a><br>");<br style="line-height:normal;">                              out.println("<form method=post action='/'>POST 表单 <input name=username value='用户'> <input name=submit type=submit value=submit></form>");<br style="line-height:normal;">                              out.close();</p> <p style="line-height:normal;">                             closeSocket(client);<br style="line-height:normal;">                          }<br style="line-height:normal;">                      } catch(Exception e) {<br style="line-height:normal;">                          System.out.println("HTTP服务器错误:"+e.getLocalizedMessage());<br style="line-height:normal;">                      }<br style="line-height:normal;">                  }<br style="line-height:normal;">                  //System.out.println(client+"连接到HTTP服务器");//如果加入这一句,服务器响应速度会很慢<br style="line-height:normal;">              } catch(Exception e) {<br style="line-height:normal;">                  System.out.println("HTTP服务器错误:"+e.getLocalizedMessage());<br style="line-height:normal;">              }<br style="line-height:normal;">          }<br style="line-height:normal;">      }<br style="line-height:normal;">     <br style="line-height:normal;">      /**<br style="line-height:normal;">       * 关闭客户端 socket 并打印一条调试信息.<br style="line-height:normal;">       * @param socket 客户端 socket.<br style="line-height:normal;">       */<br style="line-height:normal;">      void closeSocket(Socket socket) {<br style="line-height:normal;">          try {<br style="line-height:normal;">              socket.close();<br style="line-height:normal;">          } catch (IOException ex) {<br style="line-height:normal;">              ex.printStackTrace();<br style="line-height:normal;">          }<br style="line-height:normal;">          System.out.println(socket + "离开了HTTP服务器");        <br style="line-height:normal;">      }<br style="line-height:normal;">     <br style="line-height:normal;">      /**<br style="line-height:normal;">       * 读取一个文件的内容并返回给浏览器端.<br style="line-height:normal;">       * @param fileName 文件名<br style="line-height:normal;">       * @param socket 客户端 socket.<br style="line-height:normal;">       */<br style="line-height:normal;">      void fileService(String fileName, Socket socket)<br style="line-height:normal;">      {            <br style="line-height:normal;">          try<br style="line-height:normal;">          {<br style="line-height:normal;">              PrintStream out = new PrintStream(socket.getOutputStream(), true);<br style="line-height:normal;">              File fileToSend = new File(fileName);<br style="line-height:normal;">              if(fileToSend.exists() && !fileToSend.isDirectory())<br style="line-height:normal;">              {<br style="line-height:normal;">                  out.println("HTTP/1.0 200 OK");//返回应答消息,并结束应答<br style="line-height:normal;">                  out.println("Content-Type:application/binary");<br style="line-height:normal;">                  out.println("Content-Length:" + fileToSend.length());// 返回内容字节数<br style="line-height:normal;">                  out.println();// 根据 HTTP 协议, 空行将结束头信息<br style="line-height:normal;">                 <br style="line-height:normal;">                  FileInputStream fis = new FileInputStream(fileToSend);<br style="line-height:normal;">                  byte data[] = new byte[fis.available()];<br style="line-height:normal;">                  fis.read(data);<br style="line-height:normal;">                  out.write(data);<br style="line-height:normal;">                  out.close();<br style="line-height:normal;">                  fis.close();<br style="line-height:normal;">              }<br style="line-height:normal;">          }catch(Exception e){<br style="line-height:normal;">              System.out.println("传送文件时出错:" + e.getLocalizedMessage());<br style="line-height:normal;">          }<br style="line-height:normal;">      }<br style="line-height:normal;">     <br style="line-height:normal;">      /**<br style="line-height:normal;">       * 打印用途说明.<br style="line-height:normal;">       */<br style="line-height:normal;">      private static void usage() {<br style="line-height:normal;">          System.out.println("Usage: java HTTPServer <port>\nDefault port is 80.");<br style="line-height:normal;">      }<br style="line-height:normal;">     <br style="line-height:normal;">     <br style="line-height:normal;">      /**<br style="line-height:normal;">       * 启动简易 HTTP 服务器<br style="line-height:normal;">       * @param args <br style="line-height:normal;">       */<br style="line-height:normal;">      public static void main(String[] args) {<br style="line-height:normal;">          try {<br style="line-height:normal;">              if(args.length != 1) {<br style="line-height:normal;">                  usage();<br style="line-height:normal;">              } else if(args.length == 1) {<br style="line-height:normal;">                  PORT = Integer.parseInt(args[0]);<br style="line-height:normal;">              }<br style="line-height:normal;">          } catch (Exception ex) {<br style="line-height:normal;">              System.err.println("Invalid port arguments. It must be a integer that greater than 0");<br style="line-height:normal;">          }<br style="line-height:normal;">         <br style="line-height:normal;">          new SimpleHttpServer();<br style="line-height:normal;">      }<br style="line-height:normal;">     <br style="line-height:normal;"> }</p> </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1291228171433222144"></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">你可能感兴趣的:(Java EE资料(1)-用Java Socket开发的HTTP服务器)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1883357950924353536.htm" title="Flutter APP开发 学习记录: flutter_swiper轮播图" target="_blank">Flutter APP开发 学习记录: flutter_swiper轮播图</a> <span class="text-muted">叮小黑</span> <a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>说点儿闲话大部分app都有轮播图,一般是展示一些新闻公告通知等图片,在flutter最强大的siwiper,多种布局方式,无限轮播,Android和IOS双端适配,github:flutter_swiper使用:加载图片一般是从本地代码中或者使用网络图片,那么,首先将资源添加到项目的pubspec.yaml文件中(更多细节请参阅Assetsandimages):flutter:assets:-im</div> </li> <li><a href="/article/1883357321271242752.htm" title="【Pandas】pandas Series autocorr" target="_blank">【Pandas】pandas Series autocorr</a> <span class="text-muted">liuweidong0802</span> <a class="tag" taget="_blank" href="/search/Pandas/1.htm">Pandas</a><a class="tag" taget="_blank" href="/search/Series/1.htm">Series</a><a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</a> <div>#Pandas2.2Series##Computationsdescriptivestats|方法|描述||-|:-------||Series.abs()|用于计算`Series`中每个元素的绝对值||Series.all()|用于检查`Series`中的所有元素是否都为`True`或非零值(对于数值型数据)||Series.any()|用于检查`Series`中是否至少有一个元素为`True`</div> </li> <li><a href="/article/1883357194880086016.htm" title="JDK 21 中的虚拟线程与 Future" target="_blank">JDK 21 中的虚拟线程与 Future</a> <span class="text-muted">马小跳在飞</span> <a class="tag" taget="_blank" href="/search/jdk21%E8%99%9A%E6%8B%9F%E7%BA%BF%E7%A8%8B/1.htm">jdk21虚拟线程</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/%E8%99%9A%E6%8B%9F%E7%BA%BF%E7%A8%8B/1.htm">虚拟线程</a> <div>在JDK21中,虚拟线程与Future的结合为异步编程提供了更强大和高效的解决方案。Future代表了异步计算的结果,通过它可以获取计算的状态和最终的结果。当与虚拟线程一起使用时,可以更灵活地管理和协调异步任务。例如,在一个数据处理的场景中,需要从多个数据源获取数据并进行合并处理。可以使用虚拟线程来并发地从不同数据源获取数据,并将每个获取任务的结果封装在Future中。以下是一个示例代码:impo</div> </li> <li><a href="/article/1883356942584311808.htm" title="低代码系统-产品架构案例介绍、伙伴云(十)" target="_blank">低代码系统-产品架构案例介绍、伙伴云(十)</a> <span class="text-muted">露临霜</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8E%E4%BB%A3%E7%A0%81/1.htm">低代码</a> <div>下面介绍的是伙伴云的零代码平台,伙伴云有类似于在线Excel的产品,下面介绍的是零代码产品。依旧是从下至上,从左至右的顺序。开发层应用搭建层面,这里包括的系统架构层面以及底层的技术架构层。可以看到没有提到国产化能力的。但是有数据仓库,也就是能对数据进行管理、加工、和对接。主要是为了在用户视图查看时进行不同纬度的数据展示,比如:大屏展示、报表、甘特图展示等此外,流程是对接的标准BPMN的路程,可以做</div> </li> <li><a href="/article/1883356816264458240.htm" title="使用napi node_使用Napi / node-addon-api和Cmake的独立于Node.js版本的C ++ Native Addon" target="_blank">使用napi node_使用Napi / node-addon-api和Cmake的独立于Node.js版本的C ++ Native Addon</a> <span class="text-muted">weixin_26738395</span> <a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/ViewUI/1.htm">ViewUI</a> <div>使用napinodeThisisatutorialforc++Node-addon-api/Napiaddonusingcmake.Napimakesitindependentofnode.jsversion,meansouraddonwillbecompatiblewithallfutureversionofnode.js.Cmakeisacross-platformcodecompilingt</div> </li> <li><a href="/article/1883356564128067584.htm" title="C++11线程安全队列实现" target="_blank">C++11线程安全队列实现</a> <span class="text-muted">小贤2016</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%2B%2B11/1.htm">c++11</a><a class="tag" taget="_blank" href="/search/%E9%98%BB%E5%A1%9E%E9%98%9F%E5%88%97/1.htm">阻塞队列</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8/1.htm">线程安全</a> <div>实现了一个C++11线程安全队列,可以作为模板使用。#include#include#include#include#include#include#includetemplateclassthreadsafe_queue{private:structnode{//存储了数据和下一个节点指针的节点std::shared_ptrdata;std::unique_ptrnext;};std::mute</div> </li> <li><a href="/article/1883356437854351360.htm" title="Langchain本地知识库部署" target="_blank">Langchain本地知识库部署</a> <span class="text-muted">MaxCode-1</span> <a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a> <div>本地部署(Docker+LangChain+FAISS)1.概述本地部署LangChain-Chatchat可以为企业提供高效、安全、可控的AI知识库方案。本方案基于Docker、LangChain和FAISS进行本地化部署,适用于企业内部知识库问答、私有化AI应用等场景。2.技术选型2.1LangChainLangChain是一个开源的LLM(大语言模型)应用开发框架,支持多种模型和数据源,适用</div> </li> <li><a href="/article/1883355556513640448.htm" title="鸿蒙开发黑科技“stack叠层”替代customdialog" target="_blank">鸿蒙开发黑科技“stack叠层”替代customdialog</a> <span class="text-muted">taopi2024</span> <a class="tag" taget="_blank" href="/search/Harmony/1.htm">Harmony</a><a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a> <div>前一篇提到的问题,本篇博文提出了一个解决方案:arkui-xLongPressGesture触发customdialog踩坑记录-CSDN博客前一段时间遇到的这个问题,通过排除法观察,锁定为customdialog组件有bug,极为容易挂死。不论如何调整使用方法,都还是会触发挂死。反馈给arkui团队,说是在最新版本里解决这个问题,但是最新版本什么时候出来不清楚,而项目开发还要继续。后来甲方工程师</div> </li> <li><a href="/article/1883355429451395072.htm" title="iOS swift 后台运行应用尝试失败" target="_blank">iOS swift 后台运行应用尝试失败</a> <span class="text-muted">taopi2024</span> <a class="tag" taget="_blank" href="/search/iOS/1.htm">iOS</a><a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a><a class="tag" taget="_blank" href="/search/xcode/1.htm">xcode</a> <div>最近需要制作一个能够后台长期运行的移动应用。该应用需要调用摄像头周期性捕获数据,然后对数据处理过后,实时反馈结果。支持android和ios平台。主要有下面几点:1、摄像头实时捕获2、能够适配多款不同机型的处理算法3、能在后台以服务形式常驻运行,不影响用户使用其他应用4、根据数据处理结果,给用户提醒,通常用户这时在使用其他应用在安卓平台上,已经通过多款不同型号的手机,验证了方案与算法,包括用户易用</div> </li> <li><a href="/article/1883355430088929280.htm" title="android模拟点击" target="_blank">android模拟点击</a> <span class="text-muted">taopi2024</span> <a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>模拟点击两套方案:1、使用InstrumentationnewThread(()->{Instrumentationinst=newInstrumentation();longcurTime=SystemClock.uptimeMillis();inst.sendPointerSync(MotionEvent.obtain(curTime,curTime,MotionEvent.ACTION_DO</div> </li> <li><a href="/article/1883355051532021760.htm" title="Unexpected WSL error Error code: Wsl/Service/0x8007273的解决" target="_blank">Unexpected WSL error Error code: Wsl/Service/0x8007273的解决</a> <span class="text-muted">szial</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>UnexpectedWSLerrorErrorcode:Wsl/Service/0x8007273的解决问题描述:在使用DockerDesktop时,遇到“UnexpectedWSLerrorErrorcode:Wsl/Service/0x8007273d”错误,导致Docker无法正常启动。错误信息表明WSL子系统在检查和启动过程中失败,可能与网络配置或WSL组件损坏有关。解决方法:重置网络设置</div> </li> <li><a href="/article/1883354925262499840.htm" title="算法基础 -- 快速幂算法详解" target="_blank">算法基础 -- 快速幂算法详解</a> <span class="text-muted">sz66cm</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>快速幂算法详解快速幂(FastPower或ExponentiationbySquaring)是一种能够在O(log⁡n)O(\logn)O(logn)时间复杂度内高效计算幂次(如ana^nan)的算法。相比于朴素的逐次相乘(需要O(n)O(n)O(n)次乘法),快速幂极大地减少了运算次数,尤其当指数nnn较大时更显优势。以下从原理、实现思路及具体示例三个方面详细讲解。一、快速幂的基本原理计算ana</div> </li> <li><a href="/article/1883354798791651328.htm" title="算法基础 -- AVL树初识" target="_blank">算法基础 -- AVL树初识</a> <span class="text-muted">sz66cm</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>AVL树初识一、AVL树简介AVL树是一种自平衡二叉搜索树(BinarySearchTree,BST),于1962年由GeorgyAdelson-Velsky和EvgeniiLandis提出,名字也来自他们两位的姓氏首字母组合。它通过在插入、删除节点后维持平衡性,确保在查找、插入、删除操作上保持O(log⁡n)O(\logn)O(logn)的平均和最坏时间复杂度。二、AVL树的平衡条件在普通的二叉</div> </li> <li><a href="/article/1883354797793406976.htm" title="数学基础 -- 三明治定理(夹逼定理)" target="_blank">数学基础 -- 三明治定理(夹逼定理)</a> <span class="text-muted">sz66cm</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%A6/1.htm">数学</a> <div>三明治定理三明治定理(SandwichTheorem)又称夹逼定理或夹逼准则,是数学分析中的一个重要定理。它描述了当三个函数在某一区间上满足特定关系时,中间函数的极限可以通过两个外侧函数的极限确定。这个定理广泛应用于极限和连续性的证明中。具体来说,设aaa是一个实数或无穷大,假设在aaa的某个去心邻域上,三个函数f(x)f(x)f(x)、g(x)g(x)g(x)和h(x)h(x)h(x)满足以下关</div> </li> <li><a href="/article/1883354671452581888.htm" title="华为OD机试Python - 微服务的集成测试" target="_blank">华为OD机试Python - 微服务的集成测试</a> <span class="text-muted">steven_my</span> <a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAOD%E6%9C%BA%E8%AF%95/1.htm">华为OD机试</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><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/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAOD%E6%9C%BA%E8%AF%95/1.htm">华为OD机试</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>微服务的集成测试前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:nansun0903@163.com;备注:CSDN。题目描述现有n个容器服务,服务的启动可能有一定的依赖性(有些服务启动没有依赖),其次服务自身启动加载会消</div> </li> <li><a href="/article/1883354544155455488.htm" title="使用Bazel编译报错ERROR: Unrecognized option: --experimental_repo_remote_exec解决方法" target="_blank">使用Bazel编译报错ERROR: Unrecognized option: --experimental_repo_remote_exec解决方法</a> <span class="text-muted">青年夏日科技</span> <a class="tag" taget="_blank" href="/search/tensorflow/1.htm">tensorflow</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/python/1.htm">python</a> <div>ERROR:Unrecognizedoption:--experimental_repo_remote_exec一、问题:INFO:Optionsprovidedbytheclient:Inherited'common'options:--isatty=1--terminal_columns=80INFO:Readingrcoptionsfor'version'from/home/emadboct</div> </li> <li><a href="/article/1883354545019482112.htm" title="【矩阵二分】力扣378. 有序矩阵中第 K 小的元素" target="_blank">【矩阵二分】力扣378. 有序矩阵中第 K 小的元素</a> <span class="text-muted">hlc@</span> <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/%E7%B2%BE%E9%80%89/1.htm">精选</a><a class="tag" taget="_blank" href="/search/%E7%9F%A9%E9%98%B5/1.htm">矩阵</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0/1.htm">线性代数</a> <div>给你一个nxn矩阵matrix,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个不同的元素。你必须找到一个内存复杂度优于O(n2)的解决方案。示例1:输入:matrix=[[1,5,9],[10,11,13],[12,13,15]],k=8输出:13解释:矩阵中的元素为[1,5,9,10,11,12,13,13,15],第8小元素是13示例2:输</div> </li> <li><a href="/article/1883354166236082176.htm" title="C++ 包装器与绑定器的应用之如何取代虚函数" target="_blank">C++ 包装器与绑定器的应用之如何取代虚函数</a> <span class="text-muted">__雨夜星辰__</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF/1.htm">学习之路</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</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/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>C++虚函数在执行过程中会跳转两次(先查找对象的函数表,再次通过该函数表中的地址找到真正的执行地址),这样的话,CPU会跳转两次,而普通函数只跳转一次。CPU每跳转一次,预取指令要作废很多,所以效率会很低.为了管理的方便(基类指针可指向派生类对象和自动析构派生类),保留类之间的继承关系。使用基类指针指向派生类对象时,基类的析构函数应是虚函数,否则释放基类指针所指的对象时只会调用基类的析构函数.代码</div> </li> <li><a href="/article/1883353410732879872.htm" title="[SUCTF 2018]MultiSQL-MySQL预处理" target="_blank">[SUCTF 2018]MultiSQL-MySQL预处理</a> <span class="text-muted">I·CE</span> <a class="tag" taget="_blank" href="/search/%E5%88%B7%E9%A2%98/1.htm">刷题</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>MySQL传统处理:客户端准备sql语句发送sql语句到MySQL服务器MySQL服务器执行sql语句服务器执行结果返回客户端预处理基本策略:将sql语句强制一分为二:第一部分为前面相同命令和结构部分第二部分为后面可变数据部分首先将前面的sql语句发送给MySQL服务器,让其先执行溢出预处理(并没有真正的执行)第一次发送sql语句的时候将其中可变的数据部分都用一个数据占位符来表示,比如问号?不带参</div> </li> <li><a href="/article/1883352906749505536.htm" title="Python实现新春烟花(渐变效果)" target="_blank">Python实现新春烟花(渐变效果)</a> <span class="text-muted">南风过闲庭</span> <a class="tag" taget="_blank" href="/search/pygame/1.htm">pygame</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>过年了~,给大伙放个电子烟花庆祝一下,祝大家新春快乐!来年:蛇行千里步步高,财聚八方滚滚来!importpygameimportrandomimportmathimportsysfrompygame.localsimport*#初始化pygame.init()pygame.mixer.init()WIDTH,HEIGHT=800,600screen=pygame.display.set_mode(</div> </li> <li><a href="/article/1883352654717972480.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/%23Java%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B/1.htm">#Java异步编程</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>目录Java异步编程异步和同步的区别NIO原理NIOinJava响应式编程1.什么是响应式编程?他和传统的编程方式有什么区别?Java.Util.Concurrent.FutureListenableFutureCompletableFutureJDK8中搭建CompletableFuture超时控制轮子Java异步编程什么是异步编程?响应式编程+NIO。异步和同步的区别该图是传统模式下IO线程的</div> </li> <li><a href="/article/1883352150327750656.htm" title="filebeat收集各种类型日志写入logstash,再从logstash中读取日志写入kafka中(有filebeat)" target="_blank">filebeat收集各种类型日志写入logstash,再从logstash中读取日志写入kafka中(有filebeat)</a> <span class="text-muted">运维实战课程</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a> <div>filebeat收集各种类型日志写入logstash,再从logstash中读取日志写入kafka中(有filebeat)如果对运维课程感兴趣,可以在b站上、A站或csdn上搜索我的账号:运维实战课程,可以关注我,学习更多免费的运维实战技术视频0.环境机器规划:192.168.43.163kafka1192.168.43.164kafka2192.168.43.165kafka3192.168.4</div> </li> <li><a href="/article/1883352150793318400.htm" title="Python-pptx Placeholders" target="_blank">Python-pptx Placeholders</a> <span class="text-muted">Yohann丶blog</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>imageMasterPlaceholder对象Classpptx.shapes.placeholder.MasterPlaceholder幻灯片母版上的占位符形状。auto_shape_type标识此自动形状类型的枚举值,例如MSO_SHAPE.ROUNDED_RECTANGLE。如果此形状不是自动形状,则引发ValueError。click_action提供访问点击行为的ActionSetti</div> </li> <li><a href="/article/1883351520649474048.htm" title="大数据治理实战指南:数据质量、合规与治理架构" target="_blank">大数据治理实战指南:数据质量、合规与治理架构</a> <span class="text-muted">一ge科研小菜鸡</span> <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/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>个人主页:一ge科研小菜鸡-CSDN博客期待您的关注引言随着企业数字化转型的加速,大数据已成为驱动业务决策的核心资产。然而,数据治理的缺失或不完善,可能导致数据质量问题、合规风险以及业务价值的流失。大数据治理的目标在于确保数据的可用性、完整性、安全性和合规性,支撑企业的智能化发展。本教程将系统讲解大数据治理的关键概念、技术方法,并提供实际应用案例,帮助企业构建高效的数据治理体系。1.大数据治理概述</div> </li> <li><a href="/article/1883351016754180096.htm" title="FLUTTER 开发资料集(持续更新)" target="_blank">FLUTTER 开发资料集(持续更新)</a> <span class="text-muted">ssslar</span> <a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a><a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a> <div>官网https://docs.flutter.dev/PLUGINhttps://docs.flutter.dev/packages-and-plugins/developing-packages渲染iOSPlatformViewhttps://docs.flutter.dev/platform-integration/ios/platform-viewsAndroidSurfaceTexture</div> </li> <li><a href="/article/1883350890333663232.htm" title="Chapter 3-18. Detecting Congestion in Fibre Channel Fabrics" target="_blank">Chapter 3-18. Detecting Congestion in Fibre Channel Fabrics</a> <span class="text-muted">mounter625</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/kernel/1.htm">kernel</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/kernel/1.htm">kernel</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a> <div>MTMUse-casesMTMisalightweightApp.ItisnotdesignedtotakeplaceofafullyfunctionalmonitoringplatformslikeCiscoNDFC/DCNM.Instead,itisdesignedforuserswholikecustomizingthemonitoringplatformsbasedontheproblem</div> </li> <li><a href="/article/1883350133878353920.htm" title="java语言学习(5)" target="_blank">java语言学习(5)</a> <span class="text-muted">memorycx</span> <a class="tag" taget="_blank" href="/search/Javase/1.htm">Javase</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E5%8E%86%E7%A8%8B/1.htm">学习历程</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/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>第九章目录类变量和类方法理解main方法语法代码块单列设计模式final关键字抽象类接口类变量/静态变量该变量最大的特点就是会被本类的所有对象实例共享,类变量可以通过类名来访问分析代码,探讨内存的分配classChild{privateStringname;publicstaticintcount=0;//这个叫类变量或者叫静态变量publicChild(Stringname){this.name</div> </li> <li><a href="/article/1883350134801100800.htm" title="java语言学习(6)" target="_blank">java语言学习(6)</a> <span class="text-muted">memorycx</span> <a class="tag" taget="_blank" href="/search/Javase/1.htm">Javase</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E5%8E%86%E7%A8%8B/1.htm">学习历程</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>十章类部类枚举和注解自定义实现枚举enum关键字实现枚举JDK内置的基本注解类型元注解:对注解进行注解补充:类的五大成员属性方法构造器代码块内部类内部类定义:一个类的内部又完整的嵌套了另一个类结构。被牵头的类称为内部类,嵌套其他类的类称为外部类,内部类最大的特点就是可ui直接访问私有属性,并且可以体现类与类之间的包含关系局部内部类(有类名)基本语法*classOuter{//外部类classInn</div> </li> <li><a href="/article/1883350007529140224.htm" title="java语言学习(3)------初级篇完稿" target="_blank">java语言学习(3)------初级篇完稿</a> <span class="text-muted">memorycx</span> <a class="tag" taget="_blank" href="/search/Javase/1.htm">Javase</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E5%8E%86%E7%A8%8B/1.htm">学习历程</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>第七章续方法重载定义:java中允许一个类中,多个同名方法的存在,但是要求形参列表不一样。重载的好处:减轻了起名的麻烦减轻了记名的麻烦重载的细节:方法名必须相同形参列表必须不同(形参类型或个数或顺序,至少有一样不同,参数名无要求)返回类型无要求可变参数概念:java允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。基本语法访问修饰符返回类型方法名(数据类型…形参名)快速入门cla</div> </li> <li><a href="/article/1883349881259618304.htm" title="Redis 的热 Key(Hot Key)问题及解决方法" target="_blank">Redis 的热 Key(Hot Key)问题及解决方法</a> <span class="text-muted">maply</span> <a class="tag" taget="_blank" href="/search/Redis/1.htm">Redis</a><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>Redis的热Key(HotKey)问题及解决方法1.什么是Redis热Key?Redis热Key(HotKey)指的是访问频率极高的Key,通常会造成以下问题:单Key访问量过大:热点Key可能被高并发请求频繁访问,导致单点压力集中,影响Redis的性能和稳定性。CPU负载过高:Redis需要处理大量对同一Key的请求,导致CPU使用率急剧上升。网络IO瓶颈:请求量过大可能会导致Redis服务器</div> </li> <li><a href="/article/63.htm" title="关于旗正规则引擎规则中的上传和下载问题" target="_blank">关于旗正规则引擎规则中的上传和下载问题</a> <span class="text-muted">何必如此</span> <a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD/1.htm">文件下载</a><a class="tag" taget="_blank" href="/search/%E5%8E%8B%E7%BC%A9/1.htm">压缩</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/1.htm">文件上传</a> <div>文件的上传下载都是数据流的输入输出,大致流程都是一样的。 一、文件打包下载 1.文件写入压缩包 string mainPath="D:\upload\";     下载路径 string tmpfileName=jar.zip;        &n</div> </li> <li><a href="/article/190.htm" title="【Spark九十九】Spark Streaming的batch interval时间内的数据流转源码分析" target="_blank">【Spark九十九】Spark Streaming的batch interval时间内的数据流转源码分析</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Stream/1.htm">Stream</a> <div>  以如下代码为例(SocketInputDStream): Spark Streaming从Socket读取数据的代码是在SocketReceiver的receive方法中,撇开异常情况不谈(Receiver有重连机制,restart方法,默认情况下在Receiver挂了之后,间隔两秒钟重新建立Socket连接),读取到的数据通过调用store(textRead)方法进行存储。数据</div> </li> <li><a href="/article/317.htm" title="spark master web ui 端口8080被占用解决方法" target="_blank">spark master web ui 端口8080被占用解决方法</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/8080/1.htm">8080</a><a class="tag" taget="_blank" href="/search/%E7%AB%AF%E5%8F%A3%E5%8D%A0%E7%94%A8/1.htm">端口占用</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/master+web+ui/1.htm">master web ui</a> <div>spark master web ui 默认端口为8080,当系统有其它程序也在使用该接口时,启动master时也不会报错,spark自己会改用其它端口,自动端口号加1,但为了可以控制到指定的端口,我们可以自行设置,修改方法:   1、cd SPARK_HOME/sbin   2、vi start-master.sh     3、定位到下面部分</div> </li> <li><a href="/article/444.htm" title="oracle_执行计划_谓词信息和数据获取" target="_blank">oracle_执行计划_谓词信息和数据获取</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%89%A7%E8%A1%8C%E8%AE%A1%E5%88%92/1.htm">执行计划</a> <div>  oracle_执行计划_谓词信息和数据获取(上) 一:简要说明 在查看执行计划的信息中,经常会看到两个谓词filter和access,它们的区别是什么,理解了这两个词对我们解读Oracle的执行计划信息会有所帮助。 简单说,执行计划如果显示是access,就表示这个谓词条件的值将会影响数据的访问路径(表还是索引),而filter表示谓词条件的值并不会影响数据访问路径,只起到</div> </li> <li><a href="/article/571.htm" title="spring中datasource配置" target="_blank">spring中datasource配置</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/dataSource/1.htm">dataSource</a> <div>datasource配置有很多种,我介绍的一种是采用c3p0的,它的百科地址是: http://baike.baidu.com/view/920062.htm   <!-- spring加载资源文件 --> <bean name="propertiesConfig" class="org.springframework.b</div> </li> <li><a href="/article/698.htm" title="web报表工具FineReport使用中遇到的常见报错及解决办法(三)" target="_blank">web报表工具FineReport使用中遇到的常见报错及解决办法(三)</a> <span class="text-muted">老A不折腾</span> <a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/FAQ/1.htm">FAQ</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E8%A1%A8%E8%BD%AF%E4%BB%B6/1.htm">报表软件</a> <div>这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。   出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。 1、repeated column width is largerthan paper width: 这个看这段话应该是很好理解的。比如做的模板页面宽度只能放</div> </li> <li><a href="/article/825.htm" title="mysql 用户管理" target="_blank">mysql 用户管理</a> <span class="text-muted">墙头上一根草</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/user/1.htm">user</a> <div>1.新建用户 //登录MYSQL@>mysql -u root -p@>密码//创建用户mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’));//刷新系统权限表mysql>flush privileges;这样就创建了一个名为:</div> </li> <li><a href="/article/952.htm" title="关于使用Spring导致c3p0数据库死锁问题" target="_blank">关于使用Spring导致c3p0数据库死锁问题</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Spring+%E5%85%A5%E9%97%A8/1.htm">Spring 入门</a><a class="tag" taget="_blank" href="/search/Spring+%E5%AE%9E%E4%BE%8B/1.htm">Spring 实例</a><a class="tag" taget="_blank" href="/search/Spring3/1.htm">Spring3</a><a class="tag" taget="_blank" href="/search/Spring+%E6%95%99%E7%A8%8B/1.htm">Spring 教程</a> <div>这个问题我实在是为整个 springsource 的员工蒙羞 如果大家使用 spring 控制事务,使用 Open Session In View 模式, com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.</div> </li> <li><a href="/article/1079.htm" title="百度词库联想" target="_blank">百度词库联想</a> <span class="text-muted">annan211</span> <a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6/1.htm">百度</a> <div> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>RunJS</title&g</div> </li> <li><a href="/article/1206.htm" title="int数据与byte之间的相互转换实现代码" target="_blank">int数据与byte之间的相互转换实现代码</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E4%BD%8D%E7%A7%BB/1.htm">位移</a><a class="tag" taget="_blank" href="/search/int%E8%BD%ACbyte/1.htm">int转byte</a><a class="tag" taget="_blank" href="/search/byte%E8%BD%ACint/1.htm">byte转int</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E7%9A%84%E5%AE%9E%E7%8E%B0/1.htm">基本数据类型的实现</a> <div>在BMP文件和文件压缩时需要用到的int与byte转换,现将理解的贴出来;   主要是要理解;位移等概念 http://baihe747.iteye.com/blog/2078029   int转byte;   byte转int;   /** * 字节转成int,int转成字节 * @author Administrator * </div> </li> <li><a href="/article/1333.htm" title="简单模拟实现数据库连接池" target="_blank">简单模拟实现数据库连接池</a> <span class="text-muted">bijian1013</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><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a><a class="tag" taget="_blank" href="/search/%E7%AE%80%E5%8D%95%E6%A8%A1%E6%8B%9F%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0/1.htm">简单模拟实现数据库连接池</a> <div>简单模拟实现数据库连接池 实例1: package com.bijian.thread; public class DB { //private static final int MAX_COUNT = 10; private static final DB instance = new DB(); private int count = 0; private i</div> </li> <li><a href="/article/1460.htm" title="一种基于Weblogic容器的鉴权设计" target="_blank">一种基于Weblogic容器的鉴权设计</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/weblogic/1.htm">weblogic</a> <div>        服务器对请求的鉴权可以在请求头中加Authorization之类的key,将用户名、密码保存到此key对应的value中,当然对于用户名、密码这种高机密的信息,应该对其进行加砂加密等,最简单的方法如下: String vuser_id = "weblogic"; String vuse</div> </li> <li><a href="/article/1587.htm" title="【RPC框架Hessian二】Hessian 对象序列化和反序列化" target="_blank">【RPC框架Hessian二】Hessian 对象序列化和反序列化</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hessian/1.htm">hessian</a> <div> 任何一个对象从一个JVM传输到另一个JVM,都要经过序列化为二进制数据(或者字符串等其他格式,比如JSON),然后在反序列化为Java对象,这最后都是通过二进制的数据在不同的JVM之间传输(一般是通过Socket和二进制的数据传输),本文定义一个比较符合工作中。   1. 定义三个POJO    Person类 package com.tom.hes</div> </li> <li><a href="/article/1714.htm" title="【Hadoop十四】Hadoop提供的脚本的功能" target="_blank">【Hadoop十四】Hadoop提供的脚本的功能</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>1. hadoop-daemon.sh 1.1 启动HDFS ./hadoop-daemon.sh start namenode ./hadoop-daemon.sh start datanode  通过这种逐步启动的方式,比start-all.sh方式少了一个SecondaryNameNode进程,这不影响Hadoop的使用,其实在 Hadoop2.0中,SecondaryNa</div> </li> <li><a href="/article/1841.htm" title="中国互联网走在“灰度”上" target="_blank">中国互联网走在“灰度”上</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/%E7%AE%A1%E7%90%86+%E7%81%B0%E5%BA%A6/1.htm">管理 灰度</a> <div>中国互联网走在“灰度”上(转) 文/孕峰   第一次听说灰度这个词,是任正非说新型管理者所需要的素质。第二次听说是来自马化腾。似乎其他人包括马云也用不同的语言说过类似的意思。   灰度这个词所包含的意义和视野是广远的。要理解这个词,可能同样要用“灰度”的心态。灰度的反面,是规规矩矩,清清楚楚,泾渭分明,严谨条理,是决不妥协,不转弯,认死理。黑白分明不是灰度,像彩虹那样</div> </li> <li><a href="/article/1968.htm" title="java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。" target="_blank">java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class PrintMatrixClockwisely { /** * Q51.输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 </div> </li> <li><a href="/article/2095.htm" title="mongoDB 用户管理" target="_blank">mongoDB 用户管理</a> <span class="text-muted">开窍的石头</span> <a class="tag" taget="_blank" href="/search/mongoDB%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86/1.htm">mongoDB用户管理</a> <div>  1:添加用户    第一次设置用户需要进入admin数据库下设置超级用户(use admin)      db.addUsr({user:'useName',pwd:'111111',roles:[readWrite,dbAdmin]});    第一个参数用户的名字    第二个参数</div> </li> <li><a href="/article/2222.htm" title="[游戏与生活]玩暗黑破坏神3的一些问题" target="_blank">[游戏与生活]玩暗黑破坏神3的一些问题</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a> <div>    暗黑破坏神3是有史以来最让人激动的游戏。。。。但是有几个问题需要我们注意      玩这个游戏的时间,每天不要超过一个小时,且每次玩游戏最好在白天      结束游戏之后,最好在太阳下面来晒一下身上的暗黑气息,让自己恢复人的生气   &nb</div> </li> <li><a href="/article/2349.htm" title="java 二维数组如何存入数据库" target="_blank">java 二维数组如何存入数据库</a> <span class="text-muted">cuiyadll</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>using System; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.Serialization; using System.IO; namespace WindowsFormsApplication1 { </div> </li> <li><a href="/article/2476.htm" title="本地事务和全局事务Local Transaction and Global Transaction(JTA)" target="_blank">本地事务和全局事务Local Transaction and Global Transaction(JTA)</a> <span class="text-muted">darrenzhu</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/local/1.htm">local</a><a class="tag" taget="_blank" href="/search/global/1.htm">global</a><a class="tag" taget="_blank" href="/search/transaction/1.htm">transaction</a> <div>Configuring Spring and JTA without full Java EE http://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/ Spring doc -Transaction Management http://docs.spring.io/spri</div> </li> <li><a href="/article/2603.htm" title="Linux命令之alias - 设置命令的别名,让 Linux 命令更简练" target="_blank">Linux命令之alias - 设置命令的别名,让 Linux 命令更简练</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/alias/1.htm">alias</a> <div>用途说明 设置命令的别名。在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名。虽然可以为命令建立“链接”解决长文件名的问 题,但对于带命令行参数的命令,链接就无能为力了。而指定别名则可以解决此类所有问题【1】。常用别名来简化ssh登录【见示例三】,使长命令变短,使常 用的长命令行变短,强制执行命令时询问等。   常用参数 格式:alias 格式:ali</div> </li> <li><a href="/article/2730.htm" title="yii2 restful web服务[格式响应]" target="_blank">yii2 restful web服务[格式响应]</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/yii2/1.htm">yii2</a> <div>响应格式 当处理一个 RESTful API 请求时, 一个应用程序通常需要如下步骤 来处理响应格式: 确定可能影响响应格式的各种因素, 例如媒介类型, 语言, 版本, 等等。 这个过程也被称为 content negotiation。 资源对象转换为数组, 如在 Resources 部分中所描述的。 通过 [[yii\rest\Serializer]]</div> </li> <li><a href="/article/2857.htm" title="MongoDB索引调优(2)——[十]" target="_blank">MongoDB索引调优(2)——[十]</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/MongoDB%E7%B4%A2%E5%BC%95%E4%BC%98%E5%8C%96/1.htm">MongoDB索引优化</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2178555 一、概述       上一篇文档中也说明了,MongoDB的索引几乎与关系型数据库的索引一模一样,优化关系型数据库的技巧通用适合MongoDB,所有这里只讲MongoDB需要注意的地方 二、索引内嵌文档     可以在嵌套文档的键上建立索引,方式与正常</div> </li> <li><a href="/article/2984.htm" title="当滑动到顶部和底部时,实现Item的分离效果的ListView" target="_blank">当滑动到顶部和底部时,实现Item的分离效果的ListView</a> <span class="text-muted">gundumw100</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>拉动ListView,Item之间的间距会变大,释放后恢复原样; package cn.tangdada.tangbang.widget; import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import andr</div> </li> <li><a href="/article/3111.htm" title="程序员用HTML5制作的爱心树表白动画" target="_blank">程序员用HTML5制作的爱心树表白动画</a> <span class="text-muted">ini</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><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>体验效果:http://keleyi.com/keleyi/phtml/html5/31.htmHTML代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="UTF-8" > <ti</div> </li> <li><a href="/article/3238.htm" title="预装windows 8 系统GPT模式的ThinkPad T440改装64位 windows 7旗舰版" target="_blank">预装windows 8 系统GPT模式的ThinkPad T440改装64位 windows 7旗舰版</a> <span class="text-muted">kakajw</span> <a class="tag" taget="_blank" href="/search/ThinkPad/1.htm">ThinkPad</a><a class="tag" taget="_blank" href="/search/%E9%A2%84%E8%A3%85/1.htm">预装</a><a class="tag" taget="_blank" href="/search/%E6%94%B9%E8%A3%85/1.htm">改装</a><a class="tag" taget="_blank" href="/search/windows+7/1.htm">windows 7</a><a class="tag" taget="_blank" href="/search/windows+8/1.htm">windows 8</a> <div>  该教程具有普遍参考性,特别适用于联想的机器,其他品牌机器的处理过程也大同小异。 该教程是个人多次尝试和总结的结果,实用性强,推荐给需要的人!   缘由 小弟最近入手笔记本ThinkPad T440,但是特别不能习惯笔记本出厂预装的Windows 8系统,而且厂商自作聪明地预装了一堆没用的应用软件,消耗不少的系统资源(本本的内存为4G,系统启动完成时,物理内存占用比</div> </li> <li><a href="/article/3365.htm" title="Nginx学习笔记" target="_blank">Nginx学习笔记</a> <span class="text-muted">mcj8089</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>一、安装nginx             1、在nginx官方网站下载一个包,下载地址是:  http://nginx.org/download/nginx-1.4.2.tar.gz      2、WinSCP(ftp上传工</div> </li> <li><a href="/article/3492.htm" title="mongodb 聚合查询每天论坛链接点击次数" target="_blank">mongodb 聚合查询每天论坛链接点击次数</a> <span class="text-muted">qiaolevip</span> <a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a> <div>/* 18 */ { "_id" : ObjectId("5596414cbe4d73a327e50274"), "msgType" : "text", "sendTime" : ISODate("2015-07-03T08:01:16.000Z"</div> </li> <li><a href="/article/3619.htm" title="java术语(PO/POJO/VO/BO/DAO/DTO)" target="_blank">java术语(PO/POJO/VO/BO/DAO/DTO)</a> <span class="text-muted">Luob.</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a><a class="tag" taget="_blank" href="/search/DTO/1.htm">DTO</a><a class="tag" taget="_blank" href="/search/po/1.htm">po</a><a class="tag" taget="_blank" href="/search/VO+BO/1.htm">VO BO</a> <div> PO(persistant object) 持久对象 在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数据库的操作. VO(value object) 值对象 通</div> </li> <li><a href="/article/3746.htm" title="算法复杂度" target="_blank">算法复杂度</a> <span class="text-muted">Wuaner</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a> <div>Time Complexity & Big-O: http://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o http://bigocheatsheet.com/ http://www.sitepoint.com/time-complexity-algorithms/ </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>