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/1950233451282100224.htm" title="python 读excel每行替换_Python脚本操作Excel实现批量替换功能" target="_blank">python 读excel每行替换_Python脚本操作Excel实现批量替换功能</a> <span class="text-muted">weixin_39646695</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%AF%BBexcel%E6%AF%8F%E8%A1%8C%E6%9B%BF%E6%8D%A2/1.htm">读excel每行替换</a> <div>Python脚本操作Excel实现批量替换功能大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换。使用的工具Openpyxl,一个处理excel的python库,处理excel,其实针对的就是WorkBook,Sheet,Cell这三个最根本的元素~明确需求原始excel如下我们的目标是把下面excel工作表的sheet1表页A列的内容“替换我吧”批量替换为B列的“我用来替换的</div> </li> <li><a href="/article/1950233199242178560.htm" title="x86-64汇编语言训练程序与实战" target="_blank">x86-64汇编语言训练程序与实战</a> <span class="text-muted">十除以十等于一</span> <div>本文还有配套的精品资源,点击获取简介:汇编语言是一种低级语言,与机器代码紧密相关,特别适用于编写系统级代码及性能要求高的应用。nasm编译器是针对x86和x86-64架构的汇编语言编译器,支持多种语法风格和指令集。项目Euler提供数学和计算机科学问题,鼓励编程技巧应用,前100个问题的答案可共享。x86-64架构扩展了寄存器数量并引入新指令,提升了数据处理效率。学习汇编语言能够深入理解计算机底层</div> </li> <li><a href="/article/1950233167633903616.htm" title="男士护肤品哪个牌子好?十大男士护肤品排行榜" target="_blank">男士护肤品哪个牌子好?十大男士护肤品排行榜</a> <span class="text-muted">高省APP珊珊</span> <div>很多男生意识到护肤的必要性,开始着手护肤,但不知道该选哪个男士护肤品品牌使用好。目前市面上很多男士护肤品品牌,可谓琳琅满目,让人眼花缭乱。男士挑选护肤品时,根据自己皮肤需求去正规渠道挑选合适的知名护肤品比较放心靠谱。高省APP,是2021年推出的平台,0投资,0风险、高省APP佣金更高,模式更好,终端用户不流失。【高省】是一个自用省钱佣金高,分享推广赚钱多的平台,百度有几百万篇报道,也期待你的加入</div> </li> <li><a href="/article/1950233072825856000.htm" title="三菱PLC全套学习资料及应用手册" target="_blank">三菱PLC全套学习资料及应用手册</a> <span class="text-muted">good2know</span> <div>本文还有配套的精品资源,点击获取简介:三菱PLC作为工业自动化领域的核心设备,其系列产品的学习和应用需要全面深入的知识。本次资料包为学习者提供从基础到进阶的全方位学习资源,包括各种型号PLC的操作手册、编程指南、软件操作教程以及实际案例分析,旨在帮助用户系统掌握PLC的编程语言、指令系统及在各类工业应用中的实施。1.三菱PLC基础知识入门1.1PLC的基本概念可编程逻辑控制器(PLC)是工业自动化</div> </li> <li><a href="/article/1950233040592629760.htm" title="2022-10-20" target="_blank">2022-10-20</a> <span class="text-muted">体力劳动者</span> <div>不因感觉稍纵即逝就不加记录。在女儿睡觉后我记下今天的小故事。接手新班级后,今天是第二次收到家长的感谢信(微信)。是我表扬次数最多的两位学生家长致来的感谢,他们明显感受到孩子自信、阳光了不少,写作业由被动变为了主动,家庭氛围也由鸡飞狗跳变成了其乐融融。在被顽皮的学生气得头晕之后,我感到了久违的价值感,责任感甚至使命感,我回复家长这样一句话:我们也需要家长的反馈好让我们的教育工作更有劲头。我也认识到,</div> </li> <li><a href="/article/1950232912192401408.htm" title="程翔授《评价一篇记叙文》" target="_blank">程翔授《评价一篇记叙文》</a> <span class="text-muted">行吟斯基</span> <div>桂林十一中高一2中学生自读程老师学生文章板书课题师巡看。看完举手。问:它是记叙文。不商量。独立打分。学生评价打分。师:高低都正常,不受干扰。师巡,略评。打完举手。调查:分层次举手——高分先举手。最低分。最高95分。最低45分。女:差距太大!师:同一篇,相差55分。若是你的文章,愿落谁手?男:身临其境感觉。师:你有此经历?没也没关系。女:不优美……,结尾无升华……无感悟……师:辞藻不美?(师追问)男</div> </li> <li><a href="/article/1950232910862807040.htm" title="《玉骨遥》:大司命为什么不杀朱颜?原因没那么简单" target="_blank">《玉骨遥》:大司命为什么不杀朱颜?原因没那么简单</a> <span class="text-muted">windy天意晚晴</span> <div>《玉骨遥》里,朱颜就是时影的命劫之人。重明与时影早就知道,他们一直瞒着大司命,如今大司命也知道了真相。可是大司命却没有杀朱颜,而是给朱颜下了诛心咒,还说时影的命劫已经破了,真的如此吗?1、计划总是赶不上变化的大司命从目前剧情来说,大司命还不如时影,他信心十足的事情总会有纰漏。他不让时影见命劫之女,结果时影还是遇上了。他想让时影走火入魔,一心复仇,结果时影在朱颜的劝说下放下了仇恨。大司命让时影开山收</div> </li> <li><a href="/article/1950232820773351424.htm" title="移动端城市区县二级联动选择功能实现包" target="_blank">移动端城市区县二级联动选择功能实现包</a> <span class="text-muted">good2know</span> <div>本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery</div> </li> <li><a href="/article/1950232782412247040.htm" title="日更006 终极训练营day3" target="_blank">日更006 终极训练营day3</a> <span class="text-muted">懒cici</span> <div>人生创业课(2)今天的主题:学习方法一:遇到有用的书,反复读,然后结合自身实际,列践行清单,不要再写读书笔记思考这本书与我有什么关系,我在哪些地方能用到,之后我该怎么用方法二:读完书没映像怎么办?训练你的大脑,方法:每读完一遍书,立马合上书,做一场分享,几分钟都行对自己的学习要求太低,要逼自己方法三:学习深度不够怎么办?找到细分领域的榜样,把他们的文章、书籍、产品都体验一遍,成为他们的超级用户,向</div> </li> <li><a href="/article/1950232783670538240.htm" title="自律打卡第四天:比昨天进步一点点" target="_blank">自律打卡第四天:比昨天进步一点点</a> <span class="text-muted">花儿的念想</span> <div>今天新闻我们县城又确诊了一例,截止目前已经确诊的三例了,打开,看了一篇简友写的武汉的真实情况,有病住不了院,还没等到床位已经去世的消息,心里更加的难受,武汉尚且这样,如果是我们这没有高速没有火车的十八线的小县城发生这种情况,那情况将是更加的不堪设想,不敢想,唯有祈求灾难早点快去,平安才是最大的福气。突然觉得我的自律打卡,比昨天进步一点点。更希望疫情战争每一天都要比昨天好一点,希望一觉醒来听到的是好</div> </li> <li><a href="/article/1950232781174927360.htm" title="15个小技巧,让我的Windows电脑更好用了!" target="_blank">15个小技巧,让我的Windows电脑更好用了!</a> <span class="text-muted">曹元_</span> <div>01.桌面及文档处理第一部分的技巧,主要是围绕桌面的一些基本操作,包括主题设置、常用文档文件快捷打开的多种方式等等。主题换色默认情况下,我们的Win界面可能就是白色的文档界面,天蓝色的图表背景,说不出哪里不好看,但是就是觉得不够高级。imageimage说到高级感,本能第一反应就会和暗色模式联想起来,如果我们将整个界面换成黑夜模式的话,它会是这样的。imageimage更改主题颜色及暗色模式,我们</div> </li> <li><a href="/article/1950232316974526464.htm" title="(二)SAP Group Reporting (GR) 核心子模块功能及数据流向架构解析" target="_blank">(二)SAP Group Reporting (GR) 核心子模块功能及数据流向架构解析</a> <span class="text-muted"></span> <div>数据如何从子公司流转到合并报表的全过程,即数据采集→合并引擎→报表输出,特别是HANA内存计算如何优化传统ETL瓶颈。SAPGroupReporting(GR)核心模块功能及数据流向的架构解析,涵盖核心组件、数据处理流程和关键集成点,适用于S/4HANA1809+版本:一、核心功能模块概览模块功能关键事务码/FioriApp数据采集(DataCollection)整合子公司财务数据(SAP/非SA</div> </li> <li><a href="/article/1950232316408295424.htm" title="9、汇编语言编程入门:从环境搭建到简单程序实现" target="_blank">9、汇编语言编程入门:从环境搭建到简单程序实现</a> <span class="text-muted">神经网络酱</span> <a class="tag" taget="_blank" href="/search/%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80/1.htm">汇编语言</a><a class="tag" taget="_blank" href="/search/MEPIS/1.htm">MEPIS</a><a class="tag" taget="_blank" href="/search/GNU%E5%B7%A5%E5%85%B7%E9%93%BE/1.htm">GNU工具链</a> <div>汇编语言编程入门:从环境搭建到简单程序实现1.数据存储介质问题解决在处理数据存储时,若要使用MEPIS系统,需确保有其可访问的存储介质。目前,MEPIS无法向采用NTFS格式(常用于Windows2000和XP工作站)的硬盘写入数据。不过,若硬盘采用FAT32格式,MEPIS就能进行写入操作。此外,MEPIS还能将文件写入软盘和大多数USB闪存驱动器。若工作站连接到局域网,还可通过FTP协议或挂载</div> </li> <li><a href="/article/1950232275262173184.htm" title="月光下的罪恶(5)" target="_blank">月光下的罪恶(5)</a> <span class="text-muted">允歌玖沐</span> <div>5.被孤立顾纨是转校过来的,进入学校后,回头率很高“诶诶诶,你看那女生,哪个系的?”“不知道没见过。”“看那样,一看就是个胆小的货。”顾纨当做没听到,更狠的话她都听过,更何况女生们耍心眼?“他爸爸是做黑生意的,估计女儿也不是什么好的,你以后离他一家子远点。”她走向自己要上课的教室,一进门,所有人的目光看向她,顾纨若无其事的走进教室,开始上课。下课,一群人站起来,但是很显然,她周围的一圈人都不愿意和</div> </li> <li><a href="/article/1950232190038110208.htm" title="day15|前端框架学习和算法" target="_blank">day15|前端框架学习和算法</a> <span class="text-muted">universe_01</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a> <div>T22括号生成先把所有情况都画出来,然后(在满足什么情况下)把不符合条件的删除。T78子集要画树状图,把思路清晰。可以用暴力法、回溯法和DFS做这个题DFS深度搜索:每个边都走完,再回溯应用:二叉树搜索,图搜索回溯算法=DFS+剪枝T200岛屿数量(非常经典BFS宽度把树状转化成队列形式,lambda匿名函数“一次性的小函数,没有名字”setup语法糖:让代码更简洁好写的语法ref创建:基本类型的</div> </li> <li><a href="/article/1950231640819167232.htm" title="贝多芬诞辰250周年纪念" target="_blank">贝多芬诞辰250周年纪念</a> <span class="text-muted">万千星河赴远方</span> <div>就算不是古典音乐爱好者,你也一定听说过贝多芬。作为古典音乐史上最伟大的音乐家之一,他不仅是古典主义风格的集大成者,同时也是浪漫主义风格的开创者。贝多芬肖像画(1813年)贝多芬的一生共创作了9部交响曲、36首钢琴奏鸣曲、10部小提琴奏鸣曲、16首弦乐四重奏、1部歌剧及2部弥撒曲等等。数量虽然不及前辈海顿、莫扎特多,但他几乎改造了当时所有的音乐表达形式,赋予了它们全新的价值,对后世音乐的发展产生了极</div> </li> <li><a href="/article/1950231513744338944.htm" title="IK分词" target="_blank">IK分词</a> <span class="text-muted">初心myp</span> <div>实现简单的分词功能,智能化分词添加依赖配置:4.10.4org.apache.lucenelucene-core${lucene.version}org.apache.lucenelucene-analyzers-common${lucene.version}org.apache.lucenelucene-queryparser${lucene.version}org.apache.lucenel</div> </li> <li><a href="/article/1950231508648259584.htm" title="三件事—小白猫·雨天·八段锦" target="_blank">三件事—小白猫·雨天·八段锦</a> <span class="text-muted">咸鱼月亮</span> <div>1.最近楼下出现一只非常漂亮的粘人小白猫,看着不像是流浪猫,非常亲人。眼睛比蓝球的还大,而且是绿色的,很漂亮。第一次遇到它,它就跟我到电梯口,如果我稍微招招手,肯定就跟我进电梯了。后来我喂过它几次,好可惜不能养它,一只蓝球就是我的极限了。2.下雨天就心烦,好奇怪。明明以前我超爱看窗外的雨和听雨声,看来近来的心情不够宁静了。3.最近在练八段锦,从第一次就爱上了这个运动,很轻松缓慢,但是却出汗。感觉可</div> </li> <li><a href="/article/1950231509906550784.htm" title="25-1-2019" target="_blank">25-1-2019</a> <span class="text-muted">树藤与海岛呢</span> <div>hello八月来报道了今天看到了一篇文章就只想记下那两句话:良田千顷不过一日三餐广夏万间只睡卧榻三尺大概的意思就是要珍惜当下不要等来不及的时候才珍惜分享今天的两餐最近没有时间运动呢下个月补回好了说完了哈哈goodnight图片发自App图片发自App</div> </li> <li><a href="/article/1950231381485350912.htm" title="《极简思维》第三部分" target="_blank">《极简思维》第三部分</a> <span class="text-muted">小洋苏兮</span> <div>整理你的人际关系如何改善人际关系?摘录:因为人际关系问题是人们生活中不快乐的主要原因。感想:感觉这个说的挺对,之前我总是埋头学习,不管舍友不管自己的合作伙伴的一些事情,但实际上,这学期关注了之后好多了摘录:“亲密关系与社交会让你健康而快乐。这是基础。太过于关注成就或不太关心人际关系的人都不怎么快乐。基本上来说,人类就是建立在人脉关系上的。”感想:但是如果有时想的太多就不太好,要以一个开放的心态跟别</div> </li> <li><a href="/article/1950231308781285376.htm" title="力扣热题100-------54. 螺旋矩阵" target="_blank">力扣热题100-------54. 螺旋矩阵</a> <span class="text-muted">海航Java之路</span> <a class="tag" taget="_blank" href="/search/%E5%8A%9B%E6%89%A3/1.htm">力扣</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%9F%A9%E9%98%B5/1.htm">矩阵</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>给你一个m行n列的矩阵matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:输入:matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]提示:m==matrix.lengthn</div> </li> <li><a href="/article/1950231254427299840.htm" title="我不懂什么是爱,但我给你全部我拥有的" target="_blank">我不懂什么是爱,但我给你全部我拥有的</a> <span class="text-muted">香尧</span> <div>因为怕黑,所以愿意陪伴在夜中行走的人,给他一点点的安全感。因为渴望温柔与爱,所以愿意为别的孩子付出爱与温柔。因为曾遭受侮辱和伤害,所以不以同样的方式施于其他人。如果你向别人出之以利刃,对方还了你爱与包容,真的不要感激他,真的不要赞美他。每一个被人伤害过的人心里都留下了一颗仇恨的种子,他也会想要有一天以眼还眼,以牙还牙。但他未让那颗种子生根发芽,他用一把心剑又一次刺向他自己,用他血荐仇恨,开出一朵温</div> </li> <li><a href="/article/1950230873060208640.htm" title="你要记住,最重要的是:随时做好准备,为了你可能成为更好的自己,放弃现在的自己。" target="_blank">你要记住,最重要的是:随时做好准备,为了你可能成为更好的自己,放弃现在的自己。</a> <span class="text-muted">霖霖z</span> <div>打卡人:周云日期:2018年11月09日【日精进打卡第180天】【知~学习】《六项精进》0遍共214遍《通篇》1遍共106遍《大学》2遍共347遍《坚强工作,温柔生活》ok《不抱怨的世界》104-108页《经典名句》你要记住,最重要的是:随时做好准备,为了你可能成为更好的自己,放弃现在的自己。【行~实践】一、修身:(对自己个人)1、坚持打卡二、齐家:(对家庭和家人)打扫卫生,接送孩子,洗衣做饭,陪</div> </li> <li><a href="/article/1950230804957294592.htm" title="SpringMVC执行流程(原理),通俗易懂" target="_blank">SpringMVC执行流程(原理),通俗易懂</a> <span class="text-muted">国服冰</span> <a class="tag" taget="_blank" href="/search/SpringMVC/1.htm">SpringMVC</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a> <div>SpringMVC执行流程(原理),通俗易懂一、图解SpringMVC流程二、进一步理解Springmvc的执行流程1、导入依赖2、建立展示的视图3、web.xml4、spring配置文件springmvc-servlet5、Controller6、tomcat配置7、访问的url8、视图页面一、图解SpringMVC流程图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提</div> </li> <li><a href="/article/1950230678696161280.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/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>计数排序:是一种基于哈希的排序算法。他的基本思想是通过统计每个元素的出现次数,然后根据统计结果将元素依次放入排序后的序列中。这种排序算法适用于范围较小的情况,例如整数范围在0到k之间计数排序步骤:1初始化一个长度为最大元素值加1的计数数组,所有元素初始化为02遍历原始数组,将每个元素值作为索引,在计数数组中对应位置加13将数组清空4遍历计数器数组,按照数组中的元素个数放回到元数组中计数排序的优点和</div> </li> <li><a href="/article/1950230114205757440.htm" title="现在发挥你的优势" target="_blank">现在发挥你的优势</a> <span class="text-muted">爱生活的佑嘉</span> <div>来和我做咨询的一些朋友,涉及到定位的,都会说,我不知道我的优势是什么,你能不能帮我看看?还有一些朋友,喜欢做各种测试来了解自己,测试过后,然并卵。今天,我想来聊聊优势,如何能了解自己的优势是什么。首先,我们要知道,如果要成为“不一般”的人,我们所做的事情,就要基于自身的优势。我做管理者十多年,看到每个员工都有不同的特长,有的擅长数字,有的擅长人际,有的擅长写作。这些知道自己优势并且在这方面刻意练习</div> </li> <li><a href="/article/1950229985633562624.htm" title="2023-11-02" target="_blank">2023-11-02</a> <span class="text-muted">一帆f</span> <div>发现浸润心田的感觉:今天一个机缘之下突然想分享我的婆媳关系,我一边分享一边回忆我之前和儿媳妇关系的微妙变化,特别是分享到我能感受到儿媳妇的各种美好,现在也能心平气和的和老公平等对话,看到自己看到老公,以己推人以人推己自然而然的换位思考,心中有一种美好的能量在涌动,一种浸润心田的感觉从心胸向全身扩散,美好极了……我很想记住这种感觉,赶紧把它写下来以留纪念,也就是当我看见他人的美好,美好的美妙的浸润心</div> </li> <li><a href="/article/1950229986984128512.htm" title="贫穷家庭的孩子考上985以后会怎样?" target="_blank">贫穷家庭的孩子考上985以后会怎样?</a> <span class="text-muted">Mellisa蜜思言</span> <div>我出生在一个贫穷的农村家庭,据我妈说,我出生的时候才4斤多,而她生完我以后月子里就瘦到70斤。家里一直很穷,父母都是在菜市场卖菜的,家里还有几亩地种庄稼的。我很小开始就要去帮忙,暑假的生活就是帮忙去卖菜和割稻谷,那时候自己对于割稻谷这种事情有着莫名的恐惧,生怕自己长大以后还是每年都要过着割稻谷这种日子。父母因为忙于生计无暇顾及我的学习,幸好我因为看到他们这样子的生活,内心里有深深的恐惧感,驱使着我</div> </li> <li><a href="/article/1950229922647699456.htm" title="实时数据流计算引擎Flink和Spark剖析" target="_blank">实时数据流计算引擎Flink和Spark剖析</a> <span class="text-muted">程小舰</span> <a class="tag" taget="_blank" href="/search/flink/1.htm">flink</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</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/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>在过去几年,业界的主流流计算引擎大多采用SparkStreaming,随着近两年Flink的快速发展,Flink的使用也越来越广泛。与此同时,Spark针对SparkStreaming的不足,也继而推出了新的流计算组件。本文旨在深入分析不同的流计算引擎的内在机制和功能特点,为流处理场景的选型提供参考。(DLab数据实验室w.x.公众号出品)一.SparkStreamingSparkStreamin</div> </li> <li><a href="/article/1950229418706268160.htm" title="密码正则验证:大小写字母、数字、特殊字符至少8位" target="_blank">密码正则验证:大小写字母、数字、特殊字符至少8位</a> <span class="text-muted">qq_21875331</span> <a class="tag" taget="_blank" href="/search/%E6%B8%90%E8%BF%9B%E5%BC%8F%E7%9A%84%E6%88%90%E9%95%BF/1.htm">渐进式的成长</a> <div>正则表达式:密码必须包含大写字母、数字、特殊字符(四种里至少三种,且至少8位)写法一:/((^(?=.*[a-z])(?=.*[A-Z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[A-Z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^(?=.*\d)(?=.*[a-z])(?=.*\W)[\da-zA-Z\W]{8,16}$)|(^</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>