目录

style=”font-size: 16px;”>1 问题讲述

style=”font-size: 18pt;”>2 解决方案

2.1  style=”font-family: 宋体;”>预期成效

2.2  style=”font-family: 宋体;”>系统结构示意图

2.3  style=”font-family: 宋体;”>具体编码

显著性

其余统计还生误差,当半个结实差异过小时,去搜寻因果关系毫无意义。

一部分新闻是如此描绘的,但骨子里这么的兵荒马乱不值得任何解释。

↓ 道琼斯指数为利率跌而上扬1.03触及

↓ 美元为日本贸易顺差扩大而降0.12美元

一个总人口测验了片浅四层,一破58,一破62,你可知说他第二赖提高了也?很可能就就是任意的结果。

A摩托车选手在3000公里越野赛中因几秒钟的优势获胜了B选手,丝毫免能够证明A更美妙,但实际中人们有时候见面因此去研究A是匪是因差不多吃了菠菜而获胜。

2.3 具体编码                    

(1)Main.java(Servlet类)通过请派来拍卖login.jsp页面用户提交的登录信息(并运用Cookie实现记住用户登录用户称与密码功能),成功则超越反到welcome.jsp,失败则超过反至loginFail.jsp。具体贯彻如下:

网上聊天系统登陆首页login.jsp页面代码:

style=”color: #ff0000;”>注意:此处代码有点问题,感谢文末园友指正,具体如下:

login.jsp页面代码:Cookie[] cookies
= request.getCookies();
开启服务第一涂鸦登录时凡不曾cookie的,所以实行 for (int i = 0; i <
cookies.length; i++)
时会产出空指针异常。在for循环前加个if判断:if(cookies!=null)才能够不负众望运行

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

String username = "";
String password = "";
//String[] checkBox = request.getParameterValues("save_password");
//获取当前站点的所有Cookie
 Cookie[] cookies = request.getCookies();

 for (int i = 0; i < cookies.length; i++) {
          //对cookies中的数据进行遍历,找到用户名、密码的数据
         if ("username".equals(cookies[i].getName())) {
          //读取时URLDecoder.decode进行解码(PS:Cookie存取时用URLEncoder.encode进行编码)
             username = java.net.URLDecoder.decode(cookies[i].getValue(),"UTF-8");
         } else if ("password".equals(cookies[i].getName())) {
             password =  java.net.URLDecoder.decode(cookies[i].getValue(),"UTF-8");
         }
  }
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>网上聊天室登陆页面</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <style type="text/css">
        *
        {
            margin: 0;
            padding: 0;
        }
        body
        {

            font-size: 0px;
            padding: 200px;


        }

    </style>
  </head>
 <body>
 <form action="Main" method="post">
 <div style="background:#49AFFF;font-size: 80px;text-align:center;">网上聊天室</div>
<div style="background:#75FFE7;font-size: 35px;text-align:center;">
用户名:<input type="text" name="username" value="<%=username%>" style="border:1px solid #ccc; width:400px; height:40px;" ></div>
<div style="background:#75FFE7;font-size: 35px;text-align:center;">
密    码 :<input type="password" name="password" value="<%=password%>" style="border:1px solid #ccc; width:400px; height:40px;" ></div>
<div style="background:#75FFE7;font-size: 25px;text-align:center;">
<input type="checkbox" value="save" name="save_password">记住密码
<input type="submit" value="登陆" name="login" style="width: 100px; height: 40px;font-size: 30px;">
<input type="reset" value="重置" name="reset" style="width: 100px; height: 40px;font-size: 30px;"></div>
</form>
</body>
</html>

Main.java类代码:

package com.liuzhen.chart;

import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@SuppressWarnings("serial")
public class Main extends HttpServlet {

    /**
     * Constructor of the object.
     */
    public Main() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

         doPost(request,response);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //response.setContentType("text/html;charset=utf-8"); 
        //此出注解是因为使用CodeFilter类过滤所有Servlet,转换编码
        //request.setCharacterEncoding("utf-8");
        String userName = request.getParameter("username");
        String passWord = request.getParameter("password");
        String checkBox = request.getParameter("save_password");

        System.out.println("userName:"+userName+"\n"+"passWord:"+passWord);
        request.getSession().setAttribute("nameSession", userName);   //将用户名存入session中
        String[] name_one = {"柳真","刘仁杰","吴超","张浩东","陈初相"};
        String[] pwd_one = {"201421092073","201421092068","201421092077","201421092082","201421092119"};
        String name_two = "";
        String pwd_two = "";
        boolean login_test = false;
        for(int i=0;i<5;i++){
            name_two = name_one[i];
            pwd_two = pwd_one[i];
            if(userName.equals(name_two) && passWord.equals(pwd_two))
                login_test = true;                           
        }

        if(login_test) {
            if ("save".equals(checkBox)) {
                //Cookie存取时用URLEncoder.encode进行编码(PS:读取时URLDecoder.decode进行解码)
                String name = URLEncoder.encode(userName,"UTF-8");
                //创建两个Cookie对象
                Cookie nameCookie = new Cookie("username", name);
                //设置Cookie的有效期为3天
                nameCookie.setMaxAge(60 * 60 * 24 * 3);
                String pwd = URLEncoder.encode(passWord,"UTF-8");
                Cookie pwdCookie = new Cookie("password", pwd);
                pwdCookie.setMaxAge(60 * 60 * 24 * 3);
                response.addCookie(nameCookie);
                response.addCookie(pwdCookie);
             }
             request.getRequestDispatcher("welcome.jsp").forward(request, response);           
        }   
        else{
             response.sendRedirect("loginFail.jsp");      
              // request.getRequestDispatcher("loginFail.jsp").forward(request, response);             
        }


    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }

}

登陆失败页面loginFail.jsp页面代码:

统计 1统计 2

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'loginFail.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="content-type" content="text/html; charset=gb2312">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
    <br>
      <br>
           <h1>用户名和密码不匹配,请重新登陆!</h1>
           <a href="login.jsp">重新登陆</a>
  </body>
</html>

View Code

登陆成功页面welcome.jsp页面代码(此处使用frameset标签,分为头部、左部和中路主页三局部,分别对象header.jsp、left.jsp和main.jsp页面):

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>网上聊天室</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="content-type" content="text/html; charset=gb2312">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
   <frameset rows="100,*" cols="*" frameborder="no" border="0" framespacing="0">
         <frame src="header.jsp" name="topFrame" scrolling="auto" noresize="noresize" id="topFrame"/>
      <frameset cols="213,*" frameborder="no" border="0" framespacing="0">
        <frame src="left.jsp" name="leftFrame" scrolling="No" noresize="noresize" id="leftFrame"/>
        <frame src="main.jsp" name="mainFrame" scrolling="auto" id="mainFrame"/>
      </frameset>
   </frameset> 
  <body>

  </body>
</html>

闲聊头部header.jsp页面代码:

统计 3统计 4

<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title></title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <meta http-equiv="Content-Type" content="text/html;charset=gb2312">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body topmargin="0" leftmargin="0" rightmargin="0">
     <form action="">
             <table  width="100%" height="79" border="0" cellpadding="0"
                     cellspacing="0" align=center>
             <tr>
                <td bgcolor="F9A859" valign="top">
                <table width="100%" height="50" border="0" align="center"
                       cellpadding="0" cellspacing="0" bgcolor="FBEAD0">
                 <tr>
                   <td align="center" style="font-size:40px;">
                     网上聊天室
                   </td>
                 </tr> 

                </table>

                </td>
             </tr>
               <tr>
                 <td bgcolor="F9A859" valign="top">
                 <table width="100%" border="0" align="center" cellpadding="0"
                         cellspacing="0">
                  <tr>
                     <td align="center" style="font-size:20px" valign="middle">
                     欢迎<%=(String)request.getSession().getAttribute("nameSession") %>访问!
                     当前在线人数为<%=application.getAttribute("peopleOnline")%>人
                     </td>
                  </tr>       

                 </table>

                 </td>
              </tr>              

             </table>
           </form>
  </body>
</html>

View Code

闲话左部left.jsp页面代码(此处为显示美观,使用了jquery-1.4.2确保):

统计 5统计 6

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'test.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="content-type" content="text/html; charset=gb2312">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
 <style type="text/css">
        *
        {
            margin: 0;
            padding: 0;
        }
        body
        {
            font-size: 15px;
            padding: 00px;
        }
        .menu
        {
            width: 500px;
            border-bottom: solid 1px gray;
        }
        .menu h3
        {
            border: solid 1px gray;
            height: 30px;
            line-height: 30px;
            padding-left: 10px;
            padding:0 5px;
            border-bottom: none;
            cursor: pointer;

        }
        .menu p
        {
            border-left: solid 1px gray;
            border-right: solid 1px gray;
            padding: 20px 0;
            padding-left: 5px;
        }
        .changecolor{background-color:red;}
    </style>
    <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
          $(function () {
            $(".menu p:not(:first)").hide();
            $(".menu h3").css("background", "#ccc");       
            $(".menu h3").hover(function () { $(this).css("background-color", "gray").siblings("h3").css
("background-color", "#ccc");});
            $(".menu h3").mouseleave(function () { 
               $(".menu h3").css("background", "#ccc");}); //离开时将其变为原来颜色
            var index = $(".menu h3").index(this);
            $(".menu h3").click(function () { $(this).next("p").slideToggle().siblings("p").slideUp(); });
        });
    </script>
  </head>

  <body>
    <div class="menu">
        <h3>
            我的好友</h3>
        <p>
   <a href="index.jsp">周杰伦</a><br/><br/>
   <a href="index.jsp">周杰伦</a><br/><br/>
   <a href="index.jsp">周杰伦</a><br/><br/>
   <a href="index.jsp">周杰伦</a><br/><br/>
   <a href="index.jsp">周杰伦</a><br/><br/>
   <a href="index.jsp">周杰伦</a><br/><br/>
   <a href="index.jsp">周杰伦</a><br/><br/>
   <a href="index.jsp">周杰伦</a><br/>
            </p>
        <h3>
            我的朋友</h3>
        <p>
   <a href="index.jsp">李连杰</a><br/><br/>
   <a href="index.jsp">李连杰</a><br/><br/>
   <a href="index.jsp">李连杰</a><br/><br/>
   <a href="index.jsp">李连杰</a><br/><br/>
   <a href="index.jsp">李连杰</a><br/><br/>
   <a href="index.jsp">李连杰</a><br/><br/>
   <a href="index.jsp">李连杰</a><br/><br/>
   <a href="index.jsp">李连杰</a><br/>
         </p>
        <h3>
            陌生人</h3>
        <p>
   <a href="index.jsp">比尔盖茨</a><br/><br/>
   <a href="index.jsp">比尔盖茨</a><br/><br/>
   <a href="index.jsp">比尔盖茨</a><br/><br/>
   <a href="index.jsp">比尔盖茨</a><br/><br/>
   <a href="index.jsp">比尔盖茨</a><br/><br/>
   <a href="index.jsp">比尔盖茨</a><br/><br/>
   <a href="index.jsp">比尔盖茨</a><br/>
          </p>
    </div>
  </body>
</html>

View Code

聊天主页main.jsp页面代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'main.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
  <form action="InputInformation" method=post>
  <textarea  cols="105" rows="25" name="show_textarea"><%=request.getAttribute("input_textarea")%></textarea>
  <br>
  <textarea  cols="105" rows="5"  name="input_textarea"></textarea><br>
  <input type="submit" value="发送" name="button_one" 
   style="width: 100px; height: 40px;font-size: 25px;"><br>
  </form>
  </body>
</html>

 

(2)InputInformation.java(Servlet类)通过请派获取main.jsp聊天输入框中输入信息,跳反至main.jsp页面,并于聊天记录显示框中显示聊天信息。具体实现如下:

 InputInformation.java类代码如下:

package com.liuzhen.chart;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class InputInformation extends HttpServlet {
    public String chat_record = "";  //定义聊天记录变量,此处为全局变量

    /**
     * Constructor of the object.
     */
    public InputInformation() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }


    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doPost(request,response);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //response.setContentType("text/html;charset=utf-8"); 
        //此出注解是因为使用CodeFilter类过滤所有Servlet,转换编码
        //request.setCharacterEncoding("utf-8");
        String input_textarea = request.getParameter("input_textarea");
        Date now = new Date();    //创建日期对象,及系统当前时间
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
        String time = dateFormat.format( now ); //按照给定的日期格式获取系统当前时间
        String t = (String)request.getSession().getAttribute("nameSession");  //获取登陆页面用户名
        chat_record += t+"  "+input_textarea+"  "+time+"\n";   //聊天记录存储
        request.setAttribute("input_textarea",chat_record); //将当前聊天输入内容存储
        request.getRequestDispatcher("main.jsp").forward(request,response);  //跳转到当前聊天输入界面,即界面布局不变
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }

}

 

(3)CodeFilter.java(过滤器类)截取系统所有Servlet类,实现对要与应对象的编码格式的安,均安装为UTF-8。具体实现如下:

 CodeFilter.java类代码如下:

package com.liuzhen.chart;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//采用注解方式配置URL,此处就不必再在web.xml文件中配置。如果两者均配置的话,系统将以web.xml文件中配置信息为准
@WebFilter(filterName="CodeFilter",urlPatterns={"/*"})      

public class CodeFilter implements Filter{


         @Override
         public void destroy() {
             System.out.println("destroy---CodeFilter");                          
         }

         @Override
         public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
                 throws IOException, ServletException {
             System.out.println("start----doFilter--CodeFilter");

             HttpServletRequest request =(HttpServletRequest) arg0;
             HttpServletResponse response =(HttpServletResponse) arg1;
             //以上是强制内型转换,使用request对象和response对象

             request.setCharacterEncoding("utf-8");          //设置过滤页面提取数据的编码
             response.setContentType("text/html;charset=utf-8");  //设置过滤页面显示数据的编码

             arg2.doFilter(arg0, arg1);//在页面跳转之前执行此语句前面的代码,执行完页面的代码之后,在执行后面的语句
             System.out.println("第一个字符过滤器");
             System.out.println("end------doFilter--CodeFilter");    
             }

         @Override
         public void init(FilterConfig filterConfig) throws ServletException {
             System.out.println("init----CodeFilter");
         }

}

 

(4)OnlineListener.java(监听器类)主动监听系统Web容器,返回时闲聊系在线人数,具体贯彻如下:

 OnlineListener.java类代码如下:

package com.liuzhen.chart;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class OnlineListener implements HttpSessionListener{

    public void sessionCreated(HttpSessionEvent arg0) {
           ServletContext context = arg0.getSession().getServletContext();

           Integer count = (Integer) context.getAttribute("peopleOnline");
           if (count == null) {
               count = 1;
           } else {
               count++;
           }
           context.setAttribute("peopleOnline", count);
        }

        public void sessionDestroyed(HttpSessionEvent arg0) {
           ServletContext context = arg0.getSession().getServletContext();
           Integer count = (Integer) context.getAttribute("peopleOnline");

           count--;
           context.setAttribute("peopleOnline", count);
        }

}

这里还要让OnlineListener监听器类在web.xml文件中布置路径,web.xml配置代码具体如下(赤标志代码):

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>

  <listener>
    <listener-class>com.liuzhen.chart.OnlineListener</listener-class>
  </listener>

  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>Main</servlet-name>
    <servlet-class>com.liuzhen.chart.Main</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>InputInformation</servlet-name>
    <servlet-class>com.liuzhen.chart.InputInformation</servlet-class>
  </servlet>



  <servlet-mapping>
    <servlet-name>Main</servlet-name>
    <url-pattern>/Main</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>InputInformation</servlet-name>
    <url-pattern>/InputInformation</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
</web-app>

每当调用监听器类实现监听系统当前在线人数时,本机上同一个浏览器同时登陆多独用户,只能算一次等,本机上差浏览器登陆则分级算作一次于。以下分别是在IE、谷歌和360浏览器登陆在线人数显示:

统计 7

贪图四:IE浏览器登陆,显示在线人数1人口

 统计 8

祈求五:谷歌浏览器登陆,显示在线人数2口

 统计 9

贪图六:360浏览器登陆,显示在线人数3总人口

 附:本文系代码Coding链接:https://coding.net/u/LiuZhen1995/p/MyDemo/git/tree/origin_seven

 参考资料:

1、cookie实现记住密码

2、监听器(实现在线统计人数,踢人)

3、Java
Filter过滤机制详解

4、jsp同servlet之间页面跳转及参数传递实例

 

公都十分了 — 条件概率

相同个知名的电视机经济大师发表了如此的谬论:“美国人数平分期望在到73年。因此若您是68年,还足以生5年,应该也之可以计划未来5年之投资。”她随即开有肯定的清单,说这种人应当怎样呢前途5年开投资。但若您是80夏吧?你的预想寿命是–7秋为?

众目睽睽它们将白预期寿命和法预期寿命混为一谈了。你正出生,那么您的平分预期寿命的确是73春,但是当您生到68、80,甚至100夏经常,你的料想寿命就是法预期寿命了。否则,这即顶说,一个手术死亡率是1%。到目前为止,我们吧99号患者动了手术,都不行成功;你是第100各项,所以你非常于手术台上之几率是100%。

2 化解方案                                               

淡雅地以及概率一样打平以

既然如此我们领略此世界上不少业务还是随便的,不必然是生因果关系的
,那么我们就是该力争优雅的冲那些小概率的挫折和痛苦。

塔勒布写到:

行刑日那天把极好的服饰穿上(仔细刮好胡子);挺直腰板站直,显现一股傲气,好当行刑队心留下美好的印象。诊断出罹患癌症常常,不要哭天喊地,一适合无辜受害的典范。只同医生讨论病情,切莫让旁人知道,如此就只是免听到老掉牙的安慰话,也无人会晤相若呢值得同情的事主;此外,那种有尊严的情态,可以吃黄和获胜一样,都叫丁觉着所有英雄气概。赔钱的早晚,务必对你的助理更为客气,不要对客生气(许多交易员经常是样子,令人瞧不起)。不要将你的天数怪罪为任何人,即使他们真是罪魁祸首也是一律。就算你的其他一半以及英俊的滑雪教练要么年轻而野心不聊的模特为上,也毫不要自怜自艾。别怨东怨西。如果您的生意变少,不要立即哈腰屈膝,可以像我小时候底莫逆之交艾波史雷曼那样,发出同样查封充满英雄气概的电子邮件给同行,告诉她们:“生意就不见,态度不转换。”

命女神唯一非克决定的物,是您的表现。

2.2 系统结构示意图                  

 统计 10

贪图二:系统结构示意图

具体讲:

(1)打开浏览器,进入网上聊天系统首页登录界面login.jsp。输入用户称及密码,点击登陆;

(2)Main.java类获取login.jsp用户输入的用户称与密码,进行逻辑验证,验证成功则超越反至聊天界面welcome.jsp,否则跳反至登陆失败提示界面loginFail.jsp;

(3)Welcome.jsp聊天界面,其中头界面显示当前登陆用户昵称和时在线总人数(统计时在线人数通过调用OnlineListener类来促成);左部为拉好友列表界面,此处就作展示页面,未写现实逻辑处理代码;中间主体页面main.jsp页面实现用户在闲聊输入框中输入信息,发送并显示在拉消息显示框中效果。(实现聊天功能通过调用InputInformation.java类来兑现)具体页面如下图所示:

统计 11

图三:聊天页面welcome.jsp

祈求三:welcome.jsp实际运行图

样本,一切都有关于样本

一半上述之票房价值错误,都跟样本有关,要么样本不足够全,要么样本不敷多。

某过去的见优于他人,的确我们得以推断他未来底变现吧会见更好,但是这种想其实很弱,完全在:他从业工作的轻易成分多少,以及发生微微样本数。

一个本金经理过去几乎年的业绩好,这个信息如果非考虑样本的深浅,就是一个不行信息。如果样本总共才来10单人口,那你得放心的将一半底钱交给他,如果样本是1万私,你虽可了视而不见。

5只有猕猴打起同样首莎士比亚之十四行诗,那必然是新奇之,如果起1亿单纯猕猴,就不是了,或者,打不出来那才稀奇呢。

有人用相同种植“罗宾汉”策略选择资金经理,他们非信赖过去几乎年表现好之,认为产生均值回归效应,应该选表现差的,这样于未来扭亏之票房价值又怪。这个选项相同是危在旦夕的,因为表现不好的资产经理,接下去有个别栽情况,有的的确会展现变好,而有的则会离市场,后者不会见产出于统计样本被。要实在开此决定,那若得要找到有了少人脱离了。

沉默寡言的凭证,死者无称,这些考虑偏差,或者不当,说到底,都是样本数不足够全,或者不够多。

 

遍历性(Ergodicity)

金融市场上时常有人说,坏操作迟早于你吃到痛处。那个被彩票的门房,即使生活上1000年,我们吧无会见预期他重新获奖。但是一个享相同身好本事也穷苦潦倒的丁,最后必将会爬上来。

万幸的傻瓜可能得益于生命遭受之一点好运气,但是老而言,他的地步会渐渐趋近为流年没那好之白痴。每个人还见面于遥远的性靠拢。

所谓出来混,早晚犹使还之。

1 题目讲述

运用Java EE相关技能实现一个简的Web聊天室系统,具体要求如下。

(1)编写一个签到页面,登录信息遭受来用户称与密码,分别用半独按钮来付和重置登录信息。

(2)编写一个Servlet程序Main.java通过请派来拍卖用户提交的报到信息,如果用户称吧本小组成员的讳都密码也对应之学号时,跳反到LoginSuccess显示聊天界面(类似于QQ群聊天界面,可应用HTML中的frameset标签生成稀独窗口,一个据此来促成用户信息输入,另一个显示有用户聊天记录的);否则跳反至LoginFail页面,提示用户更登录(注:此页面要含有前面的记名界面)。

(3)编写两个Servlet程序,分别就此来显示“信息输入”窗口和“聊天记录显示”窗口的情节;用户以“信息输入”窗口被键入聊天内容,点击“发送”按钮后,在“聊天记录显示”窗口被展示发送信息之用户称与聊天内容。提示:利用HTML中的textarea标签来实现。

(4)在报到界面及落实记住用户称和密码的功用,使得当用户选择了此功效并成登录后,在该下次登录时可不要还输入用户称与密码即可登录。提示:此功效可经过个别个Cookie来贯彻。

以下功能选做:

(5)编写一个Listener程序来监听会话的开创和销毁事件,以此统计时在线(登录)人数,并将其形在聊天界面上。

(6)添加一个Filter对比照网有着的Servlet程序进行过滤,该Filter实现对要与响应对象的编码格式的安(实现之意义后,Servlet可以直接从呼吁对象被落参数信息而无论是需兑现对要进行格式的编码)。在【GlassFish Server】视图中输出程序在Filter和另外资源之间的实行顺序。

 

 


概率和愿意值

新春佳节度假,你来一定量单挑选,一个凡去泰国,一个是错过长白山,但是你失去泰国的概率是80%。你的脑海里既然可想像在泰国底沙滩上沐浴阳光之劳累惬意,又足以想像以长白山滑雪的雄姿飒爽。但是若能想象头顶是泰国之太阳时是长白山的雪也?或者换句话说,你能设想80%错过泰国凡呀意思啊?

罗胖以跨年发言里举的坏例子,一个按钮肯定得得到100万,另外一个闹50%底票房价值得到1单亿。为什么许多人物前者,就是她们无法想像,在此处“5000万(1亿x50%)”是个什么概念。

我们自发就是概率盲。

一个娱乐一经发生1000蹩脚里发生999蹩脚获胜,每次可赚1美金,但是生相同次等会赔10,000美金,这事实上就是未值得参与。

重重口视上述图表都见面头脑清晰,但是开车看手机时来没来想念过此题目呢?

同等的理,在股市里,你看本涨跌不紧要,关键是涨跌的涨幅,以及你的仓位。你切莫会见因预测的效率而获利。

 

我们需要哪的观念

俺们涉的实际才是有或出现的任性历史受到之一个,我们可因其出现了使无心将它们看做最可能出现的非常,忘了尚时有发生任何可能性,甚至是再要命的可能。

咱俩非常勿擅考虑“另类历史”,而再度习惯让为成败论英雄。亚历山大帝和凯撒的确是战功卓著,他们聪明、勇敢、高尚,但是同期也有外很多平聪明、勇敢、高尚的丁,但是失败了。我们无否认他们由了胜仗,但是咱对常胜与她们之人头之间的报应关系表示怀疑。

值得告慰之是,作者在《伊利亚特》中窥见,诗人并没有以成败论英雄,英雄用是勇于,是以他们之表现十分奋不顾身,而未是盖战场上的胜败。这里叫人想到日本人的英雄观,他们极向往之是历史及那些历尽千辛万苦却难倒的食指,这样的总人口深受她们正是英雄。而我们,貌似从项羽以后,就是变成王败寇了。


此地,主要讨论里面关于概率的一对意。

2.1 预期效果                    

 统计 12

贪图一律:网上聊天系统运转示意图

 

一同概率低于任一波的独立概率

倍于塔勒布推崇的丹尼尔.卡尼曼
(《思考,快和徐》的撰稿人)有只案例,琳达,31东,单身,一号直率又聪慧之女人,主修哲学。在学生时,她就是对准歧视问题和社会公正问题比较关注,还与了反核示威游行。那么下两单选项,哪一个可能还甚?

琳达是银行出纳。

琳达是银行出纳,同时它还积极参与女权运动。

使人惊异之是,在几次考察被,85-90%之大学生选择了亚只。这再度同破证明了,我们的大脑先上无合乎处理概率问题。

在人类漫长的演化过程中,生活条件相对简便易行,没什么特别酷的数字要考虑,其实是不待概率思维的。恰恰相反,为了还好的生活,人们还是用夸大或者歪曲某些危险的概率,快速的做决定等,这也就是思考偏差的由来。事实吧是如此,概率是定义核心是交了十七世纪才取出来。

独事件与赌徒谬误

赌徒谬误的来源就是在无法掌握什么是独立事件。独立事件说之是,以前来的别样结果还未影响该事件未来来的票房价值。

一致项事情时有发生的票房价值是1%,不意味必须得尝试100不成才出,有或首先次于就是发出了,也发出或第10坏就生出了,它就象征有之后未来或许是100次才发出同样软。

博大小的玩,下面哪一个并发的票房价值再胜似?

大大大大大

大大大大小

大小大小大

没错的答案是如出一辙高,都是50%x50%x50%x50%x50%=3.13%。而且,下一样管大和小的票房价值为是相同的,都是50%。

《随机漫步的傻瓜》这本书是塔勒布的成名作,核心思想是道金融行业里洋溢在大量底连数年功绩非常好却是盖命运的宠儿,其实她们都是随机性的结局,并非真正发出本事,随着岁月之推移,他们早晚会被裁。这本开则有些青涩,但是呢已经具有了塔勒布关于无明明、黑天鹅等概念的要想。而起写之文学性上的话,我倒认为是三本里最佳。

过剩戏剧性,其实远非那巧

任由找一个丁,你同外刚生日是当天的概率是1/365,因此于班级里,公司里,聚会中,你碰到一个华诞和你同一天的人头,总觉得是想不到的机缘,值得大谈特谈。其实一个室里设有23单人口,那么自由两人口生日同一天之票房价值高臻50%,如果是70口,则强及99%。具体算就是1减去自由两总人口都非可能是当天的概率。

公同其他你以前认识的丁,在另地方偶遇的几率并无低,比你想像着之过人多。

苟有人找到了股市动荡与政府发表的某件事情相关时,你最好好吧不用相信,你一旦交给计算机处理,肯定能找到多仿真相关性,比如股市的起降竟然和女的裙高度有关。所谓的《圣经密码》可以做出预测,也是同的道理。

君对概率的直觉有时错的差

修中尚引用了本内特《你赌对了也?》(Deborah Bennett,
Randomness)书中之一个例子:

查实某种疾病经常来5%的概率产生误诊(false
positives),全部丁有1‰底票房价值患这种病。如果您被检查出呈现阳性,那么您实在患上这种病症的票房价值有些许?

信任你得吓够呛了,因为实测下来,大部分医生还回95%。而科学的答案是近似2%,只有无交1/5底专业人士答对。

可以如此考虑:假设没有误诊存在,那么1000单受检的病患中,预料将出同一各患有这种病。剩下的999个健康之病患中,检测的结果用发生约50位带病,因为误报率是5%。所以的确患的概率是1/51。

生个段子。在太平洋某部有些岛屿上发现了几个原始部落,老大们聚会,互相比并谁识的再三异常,一个首领先说了一个“3”,第二独首领想了大体上上,说:“你战胜了。”