一次完整的HTTP请求与响应涉及了哪些知识?

一次完整的HTTP请求与响应涉及了哪些知识?

2017-03-19 Ruheng Android订阅 Android订阅
Android订阅

微信号 androiddingyue

功能介绍 定时发布不一样的Android干货,关注Android技术和交流平台,让我们共同进步。

一次完整的HTTP请求与响应涉及了哪些知识?_第1张图片

作者:Ruheng

地址:http://www.jianshu.com/p/c1d6a294d3c0

本文以HTTP请求和响应的过程来讲解涉及到的相关知识点。

第一

HTTP请求和相应步骤

一次完整的HTTP请求与响应涉及了哪些知识?_第2张图片


图片来自:理解Http请求与响应http://android.jobbole.com/85218/

以上完整表示了HTTP请求和响应的7个步骤,下面从TCP/IP协议模型的角度来理解HTTP请求和响应如何传递的。

第二

TCP/IP协议

TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议,通过20多年的发展已日渐成熟,并被广泛应用于局域网和广域网中,目前已成为事实上的国际标准。TCP/IP协议簇是一组不同层次上的多个协议的组合,通常被认为是一个四层协议系统,与OSI的七层模型相对应。

HTTP协议就是基于TCP/IP协议模型来传输信息的。

一次完整的HTTP请求与响应涉及了哪些知识?_第3张图片


(1). 链路层

也称作数据链路层或网络接口层(在第一个图中为网络接口层和硬件层),通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。

(2). 网络层

也称作互联网层(在第一个图中为网际层),处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。

IP是一种网络层协议,提供的是一种不可靠的服务,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。

ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。

IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。

(3). 传输层

主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。

TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。为了提供可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组等机制。

UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。UDP协议任何必需的可靠性必须由应用层来提供。
(4). 应用层

应用层决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。包括 HTTP,FTP(File Transfer Protocol,文件传输协议),DNS(Domain Name System,域名系统)服务。



当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图所示。

一次完整的HTTP请求与响应涉及了哪些知识?_第4张图片


当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)。协议是通过目的端口号、源I P地址和源端口号进行解包的。

通过以上步骤我们从TCP/IP模型的角度来理解了一次HTTP请求与响应的过程。

下面这张图更清楚明白:

一次完整的HTTP请求与响应涉及了哪些知识?_第5张图片

下面具体来看如何进行一步步操作的。

第三

TCP三次握手

TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。

一次完整的HTTP请求与响应涉及了哪些知识?_第6张图片

第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;

第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

为什么要三次握手

为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

具体例子:“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。”

第四

HTTP协议

Http是什么?

通俗来讲,他就是计算机通过网络进行通信的规则,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据。目前任何终端(手机,笔记本电脑。。)之间进行任何一种通信都必须按照Http协议进行,否则无法连接。

四个基于:

请求与响应:客户端发送请求,服务器端响应数据

无状态的:协议对于事务处理没有记忆能力,客户端第一次与服务器建立连接发送请求时需要进行一系列的安全认证匹配等,因此增加页面等待时间,当客户端向服务器端发送请求,服务器端响应完毕后,两者断开连接,也不保存连接状态,一刀两断!恩断义绝!从此路人!下一次客户端向同样的服务器发送请求时,由于他们之前已经遗忘了彼此,所以需要重新建立连接。

应用层:Http是属于应用层的协议,配合TCP/IP使用。

TCP/IP:Http使用TCP作为它的支撑运输协议。HTTP客户机发起一个与服务器的TCP连接,一旦连接建立,浏览器(客户机)和服务器进程就可以通过套接字接口访问TCP。

针对无状态的一些解决策略:

有时需要对用户之前的HTTP通信状态进行保存,比如执行一次登陆操作,在30分钟内所有的请求都不需要再次登陆。于是引入了Cookie技术。

HTTP/1.1想出了持久连接(HTTP keep-alive)方法。其特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态,在请求首部字段中的Connection: keep-alive即为表明使用了持久连接。
等等还有很多。。。。。。

下面开始讲解重头戏:HTTP请求报文,响应报文,对应于上述步骤的2,3,4,5,6。

HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。

第五

HTTP请求报文

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。

一次完整的HTTP请求与响应涉及了哪些知识?_第7张图片

1.请求行

请求行分为三个部分:请求方法、请求地址和协议版本

请求方法

HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。

最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。

请求地址

URL:统一资源定位符,是一种自愿位置的抽象唯一识别方法。

组成:<协议>://<主机>:<端口>/<路径>

端口和路径有时可以省略(HTTP默认端口号是80)

如下例:



有时会带参数,GET请求

协议版本

协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1

2.请求头部

请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。

常见请求头如下:

一次完整的HTTP请求与响应涉及了哪些知识?_第8张图片


请求头部的最后会有一个空行,表示请求头部结束,接下来为请求数据,这一行非常重要,必不可少。

3.请求数据

可选部分,比如GET请求就没有请求数据。

下面是一个POST方法的请求报文:

POST  /index.php HTTP/1.1    请求行
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2  请求头
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost/

Content-Length:25
Content-Type:application/x-www-form-urlencoded
  空行
username=aa&password=1234  请求数据

第六

HTTP响应报文



HTTP响应报文主要由状态行、响应头部、空行以及响应数据组成。

1.状态行

由3部分组成,分别为:协议版本,状态码,状态码描述。

其中协议版本与请求报文一致,状态码描述是对状态码的简单描述,所以这里就只介绍状态码。

状态码

状态代码为3位数字。
1xx:指示信息--表示请求已接收,继续处理。
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操作。
4xx:客户端错误--请求有语法错误或请求无法实现。
5xx:服务器端错误--服务器未能实现合法的请求。

下面列举几个常见的:


2.响应头部

与请求头部类似,为响应报文添加了一些附加信息

常见响应头部如下:

一次完整的HTTP请求与响应涉及了哪些知识?_第9张图片

3.响应数据

用于存放需要返回给客户端的数据信息。

下面是一个响应报文的实例:

HTTP/1.1 200 OK  状态行
Date: Sun, 17 Mar 2013 08:12:54 GMT  响应头部
Server: Apache/2.2.8 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4393
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
  空行

  响应数据

HTTP响应示例<title><br> </head><br> <body><br> Hello HTTP!<br> </body><br> </html></span></p> </blockquote> <p><span style="font-size:12px;">关于请求头部和响应头部的知识点很多,这里只是简单介绍。</span></p> <p><span style="font-size:12px;">通过以上步骤,数据已经传递完毕,HTTP/1.1会维持持久连接,但持续一段时间总会有关闭连接的时候,这时候据需要断开TCP连接。</span></p> 第七 <p style="clear:none;line-height:32px;">TCP四次挥手</p> <p><span style="font-size:12px;">当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次分手”。</span><br></p> <p><a href="http://img.e-com-net.com/image/info8/2b76f516388a4213ac73e4eb53cdc48e.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/2b76f516388a4213ac73e4eb53cdc48e.jpg" style="border:0px none;vertical-align:middle;visibility:visible !important;;border:1px solid black;" alt="一次完整的HTTP请求与响应涉及了哪些知识?_第10张图片" width="140" height="140"></a><br></p> <p><br><span style="font-size:12px;">第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;</span></p> <p><span style="font-size:12px;">第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;</span></p> <p><span style="font-size:12px;">第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;</span></p> <p><span style="font-size:12px;">第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。</span></p> <h5 style="font-family:inherit;font-weight:700;line-height:1.7;font-size:18px;"> <span style="font-size:14px;">为什么要四次分手</span></h5> <p><span style="font-size:12px;">TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此就会愉快的中断这次TCP连接。</span></p> <p><span style="font-size:12px;">通过以上步骤便完成了HTTP的请求和响应,进行了数据传递,这其中涉及到需要知识点,都进行了逐一了解。</span></p> <p><span style="font-weight:700;"></span></p> 参考文章 <p><span style="font-size:12px;">你需要了解的HTTP知识都在这里了!<span style="font-size:12px;color:rgb(0,128,255);">http://www.jianshu.com/p/a6d086a3997d</span><br> HTTP知识点总结<span style="font-size:12px;color:rgb(0,128,255);">http://www.jianshu.com/p/2ecd288d27ad</span><br> 理解Http请求与响应<span style="font-size:12px;color:rgb(0,128,255);">http://android.jobbole.com/85218/</span><br> HTTP-请求、响应、缓存<span style="font-size:12px;color:rgb(0,128,255);">https://cnbin.github.io/blog/2016/02/20/http-qing-qiu-,-xiang-ying-,-huan-cun/</span><br> 你应该知道的HTTP基础知识<span style="font-size:12px;color:rgb(0,128,255);">http://www.jianshu.com/p/e544b7a76dac</span><br> 整理Http知识点<span style="font-size:12px;color:rgb(0,128,255);">http://www.jellythink.com/archives/705</span><br> 简析TCP的三次握手与四次分手<span style="font-size:12px;color:rgb(0,128,255);">http://www.jellythink.com/archives/705</span><br> HTTP请求报文和HTTP响应报文<span style="font-size:12px;color:rgb(0,128,255);">http://www.cnblogs.com/biyeymyhjob/archive/2012/07/28/2612910.html</span><br> TCP/IP协议簇分层详解<span style="font-size:12px;color:rgb(0,128,255);">http://blog.csdn.net/hankscpp/article/details/8611229</span><br> HTTP请求报文和HTTP响应报文<span style="font-size:12px;color:rgb(0,128,255);">http://www.cnblogs.com/biyeymyhjob/archive/2012/07/28/2612910.html</span></span></p> <span style="color:rgb(165,165,165);display:inline-block;">END</span> <p><br></p> <p style="min-height:1em;font-size:16px;text-align:center;color:rgb(47,47,47);line-height:27.2px;"> <span style="line-height:27.2px;color:rgb(0,0,0);font-size:14px;">Android订阅是探讨Android开发的公众号,分享最有价值的Android干货文章<br></span></p> <p style="min-height:1em;font-size:16px;text-align:center;color:rgb(47,47,47);line-height:27.2px;"> <span style="line-height:27.2px;color:rgb(0,0,0);font-size:14px;">欢迎关注我们,一起讨论技术,扫描和长按下方的二维码可快速关注我们</span></p> <a href="http://img.e-com-net.com/image/info8/5f18173c90ba421fa4fabcad42877629.jpg" target="_blank"><img title="1480345206391598.jpg" src="http://img.e-com-net.com/image/info8/5f18173c90ba421fa4fabcad42877629.jpg" width="140" style="visibility:visible !important;;border:1px solid black;" alt="一次完整的HTTP请求与响应涉及了哪些知识?_第11张图片" height="140"></a> </div> <div class="ct_mpda_wrp" id="js_sponsor_ad_area"></div> <div class="rich_media_tool" id="js_toobar3"> 阅读原文 <div id="js_read_area3" class="media_tool_meta tips_global meta_primary"> 阅读 <span id="readNum3"></span> </div> <span class="media_tool_meta meta_primary tips_global meta_praise" id="like3"><em class="icon_praise_gray"></em><span class="praise_num" id="likeNum3"></span></span> 投诉 </div> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1188084739303645184"></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">你可能感兴趣的:(一次完整的HTTP请求与响应涉及了哪些知识?)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1882524394731925504.htm" title="算法随笔_19: 数组中的最长山脉" target="_blank">算法随笔_19: 数组中的最长山脉</a> <span class="text-muted">程序趣谈</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>上一篇:算法随笔_18:划分字母区间-CSDN博客======================题目描述如下:把符合下列属性的数组arr称为山脉数组:arr.length>=3存在下标i(0arr[i+1]>...>arr[arr.length-1]给出一个整数数组arr,返回最长山脉子数组的长度。如果不存在山脉子数组,返回0。示例1:输入:arr=[2,1,4,7,3,2,5]输出:5解释:最长的</div> </li> <li><a href="/article/1882523009986654208.htm" title="Avada 使用教程:从基础到进阶的全面指南" target="_blank">Avada 使用教程:从基础到进阶的全面指南</a> <span class="text-muted">专业WP网站开发-Joyous</span> <a class="tag" taget="_blank" href="/search/Wordpress/1.htm">Wordpress</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a> <div>概述在WordPress世界中,选择一个合适的主题对网站的成功至关重要。Avada是其中最受欢迎的选项之一,不仅因为其销售量,更因其功能强大、定制性强和用户友好性。无论你是初学者还是专业的网页开发者,Avada都提供了你所需的工具来构建你心中的网站。本文将详细介绍如何从基础到进阶地使用Avada,为你提供一个超过5000字的全方位指南。第一步:购买与安装购买Avada选择平台:Avada可以在Th</div> </li> <li><a href="/article/1882522380325154816.htm" title="大数据学习(七)Python3操作livy(使用pylivy模块)" target="_blank">大数据学习(七)Python3操作livy(使用pylivy模块)</a> <span class="text-muted">猪笨是念来过倒</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><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Livy是一个用于与Spark交互的开源REST接口。pylivy是Livy的Python客户端,可以在Spark集群上轻松实现远程代码执行。安装$pipinstall-Ulivy请注意,pylivy需要Python3.6或更高版本。用法所述LivySession类的主界面提供由pylivy:from</div> </li> <li><a href="/article/1882522253732671488.htm" title="F1. Omsk Metro (simple version)" target="_blank">F1. Omsk Metro (simple version)</a> <span class="text-muted">L_M_TY</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>题目链接:Problem-F1-Codeforces题目大意:有一棵树,然后通过“+”,“?”,其中“+”代表将一个权重为xi的新节点添加到vi(xi,vi,见输入介绍);“?”代表查询u,v,里的简单路径是否有一个权重和正好等于ki的路径子段(可以为空)有YES,无NO,并题目保证为ui==1,输入:符号"+"(不带引号),然后是两个数字vi和xi(xi∈{−1,1}),也保证存在数字vi的顶点</div> </li> <li><a href="/article/1882521875708440576.htm" title="2024年wordpress、d-link等相关的多个cve漏洞poc" target="_blank">2024年wordpress、d-link等相关的多个cve漏洞poc</a> <span class="text-muted">棉花糖网络安全圈</span> <a class="tag" taget="_blank" href="/search/%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/1.htm">漏洞复现</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a> <div>⚠️漏洞✅CVE-2024-10914在D-LinkDNS-320、DNS-320LW、DNS-325和DNS-340L中发现的漏洞,版本直到20241028GET/cgi-bin/account_mgr.cgi?cmd=cgi_user_add&name=%27;id;%27HTTP/1.1✅CVE-2024-11305在AltenergyPowerControlSoftware中发现的关键漏洞</div> </li> <li><a href="/article/1882521749371809792.htm" title="《石头做的汤》" target="_blank">《石头做的汤》</a> <span class="text-muted">jerry201108</span> <a class="tag" taget="_blank" href="/search/%E6%95%99%E8%82%B2/1.htm">教育</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>资料来源《程序员修炼之道:通向务实的最高境界(第2版)》我记得幼儿园时的绘本中好像就有《石头汤》,不知道变成大孩子后对石头汤的理解是怎样的,回头可以再让他看看这段故事说说其中的体会。有三个战场归途中的士兵饥肠辘辘。他们看到前方有一座村庄,顿时重整精神——他们觉得村民们会给口饭吃。可是当他们抵达那里时,却发现四处门窗紧闭。多年战乱下,村民们食物短缺,仅有的存粮都藏了起来。士兵们没有气馁,他们烧了一锅</div> </li> <li><a href="/article/1882521119467040768.htm" title="【转载】wordpress工作原理" target="_blank">【转载】wordpress工作原理</a> <span class="text-muted">iteye_20685</span> <a class="tag" taget="_blank" href="/search/WordPress/1.htm">WordPress</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/Blog/1.htm">Blog</a><a class="tag" taget="_blank" href="/search/F%23/1.htm">F#</a> <div>[url]http://blog.ossxp.com/2010/01/166/[/url]WP初始化的过程:当你输入/wordpress对wordpress进行初始化时,wordpress默认会找根目录下的index.php页面,看一下index.php页面。你会发现,它会去调用根目录下的wp-blog-header.php,我们继续看wp-blog-header.php。通过wp-load.ph</div> </li> <li><a href="/article/1882520992832614400.htm" title="Python进阶—高级语法" target="_blank">Python进阶—高级语法</a> <span class="text-muted">Echo.py</span> <a class="tag" taget="_blank" href="/search/Python%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95/1.htm">Python基础语法</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>目录文章目录目录1、在==和is之间选择2、元组的相对不可变性3、字典中的键映射多个值4、Linux5、python中字典的key要求6、编码7、进制之间的转换8、关系运算符(时间处理)9、时间处理模块❶常用时间处理方法❷转化为13位时间戳10、三元运算符11、成员运算符12、For循环机制13、变量的分类14、闭包(函数的嵌套)15、函数(方法)的执行流程16、匿名函数17、Django和Fla</div> </li> <li><a href="/article/1882520488870211584.htm" title="深入剖析Tomcat整体架构" target="_blank">深入剖析Tomcat整体架构</a> <span class="text-muted">一休哥助手</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7/1.htm">工具</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>目录Tomcat简介Tomcat架构概述核心组件详解ServerServiceConnectorEngineHostContextWrapper生命周期与初始化</div> </li> <li><a href="/article/1882519859267432448.htm" title="C#WinFrom读取Excel文件到DataTable" target="_blank">C#WinFrom读取Excel文件到DataTable</a> <span class="text-muted">djk8888</span> <a class="tag" taget="_blank" href="/search/winform/1.htm">winform</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>usingSystem.Data.OleDb;privatevoidbtnUpload_Click(objectsender,EventArgse){DataTabledt=ReadExcelToTable();this.dataGridView1.DataSource=dt;//数据都有了,就可以for循环写到数据库里去了,不再赘述...}//读取EXCEL文件内容publicstaticDat</div> </li> <li><a href="/article/1882519480710524928.htm" title="Agent评估【Langchain】" target="_blank">Agent评估【Langchain】</a> <span class="text-muted">BBluster</span> <a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a> <div>Agent评估【LangChain&LangSmith】简介LangChain提供了三种LLM-Agent的评估方案最终响应:评估代理的最终响应单步:单独评估任何代理步骤(例如,是否选择了适当的工具)轨迹:评估代理是否采用了预期路径(例如,工具调用)来得出最终答案构建智能体接下来将使用LangGraph构建一个Agent环境设置下载依赖项pipinstall--upgrade--quietlang</div> </li> <li><a href="/article/1882519481125761024.htm" title="FluentCMS:基于 ASP.NET Core 和 Blazor 技术构建的开源CMS内容管理系统" target="_blank">FluentCMS:基于 ASP.NET Core 和 Blazor 技术构建的开源CMS内容管理系统</a> <span class="text-muted">编程乐趣</span> <a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>推荐一个基于ASP.NETCore和Blazor技术构建的、功能完善的开源CMS内容管理系统。01项目简介FluentCMS是一个基于强大的ASP.NETCore和创新的Blazor技术构建的现代内容管理系统(CMS)。FluentCMS设计为快速、灵活且用户友好,它不仅是一个传统的基于内容的CMS,还是一个无头(Headless)CMS,使其非常适合各种应用场景。此项目还在开发中,还有部分问题,</div> </li> <li><a href="/article/1882519353300152320.htm" title="对本地部署的ChatGLM模型进行API调用" target="_blank">对本地部署的ChatGLM模型进行API调用</a> <span class="text-muted">BBluster</span> <a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</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><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a> <div>ChatGLM作为一个小参数模型,给予了我们在本地部署LLM的条件,接下来我将展示如何使用python对本地部署的ChatGLM模型进行API调用对于如何部署本地ChatGLM模型我们可以访问本地化部署大语言模型ChatGLM接下来我首先分享api调用的测试代码:importtimeimportrequests#测试GPU运行是否成功deftest_function_1():importtorch</div> </li> <li><a href="/article/1882519353967046656.htm" title="Traceback包【持续更新】" target="_blank">Traceback包【持续更新】</a> <span class="text-muted">BBluster</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Traceback包简介traceback是Python标准库中的一个模块,它提供了一组用于提取、格式化和打印程序执行过程中的堆栈跟踪信息的工具。当程序发生异常且未被捕获时,Python会自动生成一个堆栈跟踪,显示出错的位置和调用栈。这有助于开发者理解和调试程序中出现的问题。主要功能当程序发生异常时,traceback模块可以用来捕获和格式化相关的堆栈信息。这有助于开发者快速定位问题所在。格式化的</div> </li> <li><a href="/article/1882519354445197312.htm" title="Vim命令&快捷键" target="_blank">Vim命令&快捷键</a> <span class="text-muted">BBluster</span> <a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F/1.htm">系统</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>Vim命令&快捷键简介Vim(ViIMproved)是一个功能强大的文本编辑器,广泛用于编程和其他文本编辑任务。它是基于vi编辑器,添加了很多新的功能。Vim使用模式编辑,主要包括普通模式、插入模式和命令行模式。命令基础命令i-进入插入模式,可以开始输入文本。Esc-退出当前模式,回到普通模式。:w-保存文件。:q-退出Vim。:wq或:x-保存并退出。:q!-强制退出而不保存更改移动光标h-左移</div> </li> <li><a href="/article/1882518975196229632.htm" title="Vector的扩容过程是怎样的" target="_blank">Vector的扩容过程是怎样的</a> <span class="text-muted">codedadi</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>Vector的扩容过程在C++中是一个动态调整内存空间以容纳更多元素的过程。这一过程主要发生在向Vector中添加元素时,如果当前Vector的容量不足以容纳新元素,就会触发扩容操作。以下是Vector扩容过程的详细步骤:扩容机制判断是否需要扩容:当向Vector中添加新元素,且当前容量不足以容纳新元素时,Vector会判断是否需要扩容。确定新的容量大小:Vector的扩容策略通常是按照一定的增长</div> </li> <li><a href="/article/1882518967881363456.htm" title="Python timeit的使用" target="_blank">Python timeit的使用</a> <span class="text-muted">egzosn</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>假设您要测量代码段的执行时间。你是做什么?直到现在,我就像大多数人一样会做以下事情:登录后复制#导入时间start_time=time.time()"""某些代码"""end_time=time.time()print(f“执行时间为:{end_time-start_time}”)1.2.3.4.5.现在说我们要比较两个不同函数的执行时间,然后:登录后复制#导入时间deffunction_1(*参</div> </li> <li><a href="/article/1882518946091954176.htm" title="【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error" target="_blank">【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error</a> <span class="text-muted">egzosn</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><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/ecmascript/1.htm">ecmascript</a> <div>在前端开发中,JavaScript异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如Promise、async/await等),开发者常常会遇到Uncaught(inpromise)error错误。这个错误是由于未正确处理Promise的拒绝(rejection)而导致的,常常出现在异步操作失败的情况下。如果不妥善处理,可能会导致应用的不稳定和用户体验的下降。本文将深入分析Uncaugh</div> </li> <li><a href="/article/1882518721902211072.htm" title="【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error" target="_blank">【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error</a> <span class="text-muted">egzosn</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><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/ecmascript/1.htm">ecmascript</a> <div>在前端开发中,JavaScript异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如Promise、async/await等),开发者常常会遇到Uncaught(inpromise)error错误。这个错误是由于未正确处理Promise的拒绝(rejection)而导致的,常常出现在异步操作失败的情况下。如果不妥善处理,可能会导致应用的不稳定和用户体验的下降。本文将深入分析Uncaugh</div> </li> <li><a href="/article/1882518343789899776.htm" title="c#延时程序" target="_blank">c#延时程序</a> <span class="text-muted">手搓人生</span> <a class="tag" taget="_blank" href="/search/C%23%E7%BC%96%E7%A8%8B/1.htm">C#编程</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B/1.htm">线程</a><a class="tag" taget="_blank" href="/search/%E5%BB%B6%E6%97%B6/1.htm">延时</a> <div>有效避免sleep带来的线程休眠问题(如界面假死)publicstaticvoidDelay(inttime){intstart=Environment.TickCount;while(Math.Abs(Environment.TickCount-start)<time){Application.DoEvents();}}TickCount为毫秒级延时,milliSecond为设置的延时时间,用M</div> </li> <li><a href="/article/1882517965774057472.htm" title="Alibaba Spring Cloud 三 Seata 的三大核心组件:TC,TM,RM" target="_blank">Alibaba Spring Cloud 三 Seata 的三大核心组件:TC,TM,RM</a> <span class="text-muted">空灵宫(Ethereal Palace)</span> <a class="tag" taget="_blank" href="/search/Alibaba/1.htm">Alibaba</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/Cloud/1.htm">Cloud</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>Seata的架构由三大核心组件构成:TransactionCoordinator(TC)、TransactionManager(TM)和ResourceManager(RM)。它们协同工作,用于管理分布式事务的生命周期,确保全局数据一致性。以下是对这三个组件的详细解析及其作用:1.Seata的三大核心组件1.1TransactionCoordinator(TC)事务协调者作用:负责管理全局事务的生</div> </li> <li><a href="/article/1882517839563255808.htm" title="基于FPGA的DDS设计" target="_blank">基于FPGA的DDS设计</a> <span class="text-muted">Squirrels43</span> <a class="tag" taget="_blank" href="/search/verilog/1.htm">verilog</a><a class="tag" taget="_blank" href="/search/fpga/1.htm">fpga</a> <div>文章目录目标一、DDS电路核心RTL1.设计一个DDS的核心RTL代码。2.使用Matlab生成DDS的波表ROM3.验证目标二、DDS开发板测试平台1.使用Quartus的SignalTAP观察DDS的输出波形2.导出SignalTAP的捕获数据至电脑(生成List文件)3.用UltraEdit的列操作模式编辑数据格式。(matlab变量定义)4.使用Matlab分析DDS生成的正弦信号的频谱纯</div> </li> <li><a href="/article/1882517713117573120.htm" title="智慧脚下生根,智能井盖监测终端引领城市安全新革命" target="_blank">智慧脚下生根,智能井盖监测终端引领城市安全新革命</a> <span class="text-muted">旭华智能</span> <a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>在繁忙的都市生活中,我们往往只关注地面的繁华与喧嚣,却忽略了隐藏在地面之下的基础设施——井盖。这些看似不起眼的井盖,实则承担着排水、通讯、电力等重要功能,是城市安全运转的重要一环。然而,传统的井盖管理面临着诸多挑战,如被盗、损坏、移位等问题频发,给市民的生活带来诸多不便,甚至引发安全事故。为了破解这一难题,旭华智能井盖在线监测设备应运而生,成为守护城市安全的“地下守护者”。由旭华智能研发生产的智能</div> </li> <li><a href="/article/1882517209390051328.htm" title="Python多进程 multiprocessing" target="_blank">Python多进程 multiprocessing</a> <span class="text-muted">培之</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/1.htm">编程语言</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在大数据时代,Python已经成为最受追捧的语言。在本文中,让我们专注于Python的一个特定方面,它使其成为最强大的编程语言之一——Multi-Processing。在阅读本文之前,我建议您阅读我之前关于Python中的线程的文章,因为它可以为当前文章提供更好的上下文。多进程是什么?假设你是一名小学生,你的作业是让1200对数字相乘,这让你感到麻木。假设您能够在3秒内将一对数字相乘。那么总共需要</div> </li> <li><a href="/article/1882516579783077888.htm" title="Python 并发 multiprocessing-Process" target="_blank">Python 并发 multiprocessing-Process</a> <span class="text-muted">lainegates</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/multiprocess/1.htm">multiprocess</a> <div>*multiprocessing支持子进程、通信和共享数据、执行不同形式的同步。*Process创建进程的类:Process([group[,target[,name[,args[,kwargs]]]]]),target表示调用对象,args表示调用对象的位置参数元组。kwargs表示调用对象的字典。Name为别名。Group实质上不使用。方法有:is_alive()、.join([timeout</div> </li> <li><a href="/article/1882516450879533056.htm" title="如何提升IP地址查询数据服务的安全?" target="_blank">如何提升IP地址查询数据服务的安全?</a> <span class="text-muted">IpdataCloud</span> <a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>随着网络科技深入人们的生活之中,数据相关服务顺时代浪潮应运而生。而在数据查询相关服务之中,数据安全乃是重中之重。而如何部署数据查询服务安全,今天让我们来大致了解一下:数据加密数据加密是数据查询服务安全的核心技术之一,为了提高在数据传输过程中的数据安全性,技术人员可采用SSL或是TLS协议对数据进行更进一步的加密,以此来防止网络数据被篡改。设立访问控制体系IP数据查询服务商应建立完整的访问控制体系,</div> </li> <li><a href="/article/1882515695426662400.htm" title="Flask --(2)Flask 框架的诞生" target="_blank">Flask --(2)Flask 框架的诞生</a> <span class="text-muted">feiyy404</span> <a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a> <div>Flask诞生于2010年,是Arminronacher(人名)用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。比如可以用Flask-extension加入ORM、窗体验证工具,文件上传、身份验证等。Flask没有默认使用</div> </li> <li><a href="/article/1882515317326934016.htm" title="数据结构之栈,队列,树" target="_blank">数据结构之栈,队列,树</a> <span class="text-muted">一只小bit</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/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/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><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>目录一.栈1.栈的概念及结构2.栈的实现3.实现讲解1.初始化栈2.销毁栈3.压栈4.出栈5.返回栈顶元素6.返回栈内元素个数7.判断栈内是否为空二.队列1.队列的概念及结构2.队列的实现3.实现讲解1.初始化队列2.销毁队列3.单个成员入队列4.单个成员出队列5.判断队列是否为空6.返回队列内元素个数7.返回队列首个元素8.返回队列尾部元素三.树1.树的概念概念及结构2.树的相关概念3.树的实现</div> </li> <li><a href="/article/1882514812961878016.htm" title="使用 Tokenizers 分割文本:深入了解与实践" target="_blank">使用 Tokenizers 分割文本:深入了解与实践</a> <span class="text-muted">AWsggdrg</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>在开发应用自然语言处理(NLP)模型时,一个常见的需求是将文本拆分为较小的块,通常称为“tokens”。现代语言模型对tokens的数量有限制,因此在处理长文本时,我们需要仔细计算tokens以避免超过限制。本文将介绍如何使用不同的tokenizer来分割文本,并提供实用代码示例。技术背景介绍自然语言处理中的tokenization是指将文本拆分为更小的、可管理的单元,称为tokens。使用tok</div> </li> <li><a href="/article/1882514813481971712.htm" title="LangServe:快速部署和运行LangChain的实用指南" target="_blank">LangServe:快速部署和运行LangChain的实用指南</a> <span class="text-muted">AWsggdrg</span> <a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>LangServe:快速部署和运行LangChain的实用指南在AI应用开发领域,LangServe为开发者提供了便利的方式,将LangChain的运行单元和链路部署为RESTAPI。本文将通过技术解析和实战示例,带您深入了解LangServe的强大功能和应用场景。1.技术背景介绍LangServe是一个基于Python的库,整合了FastAPI和Pydantic技术,用于将LangChain的运</div> </li> <li><a href="/article/92.htm" title="log4j对象改变日志级别" target="_blank">log4j对象改变日志级别</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a><a class="tag" taget="_blank" href="/search/level/1.htm">level</a><a class="tag" taget="_blank" href="/search/log4j%E5%AF%B9%E8%B1%A1%E5%90%8D%E7%A7%B0/1.htm">log4j对象名称</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%BF%97%E7%BA%A7%E5%88%AB/1.htm">日志级别</a> <div>log4j对象改变日志级别可批量的改变所有级别,或是根据条件改变日志级别。 log4j配置文件: log4j.rootLogger=ERROR,FILE,CONSOLE,EXECPTION #log4j.appender.FILE=org.apache.log4j.RollingFileAppender log4j.appender.FILE=org.apache.l</div> </li> <li><a href="/article/219.htm" title="elk+redis 搭建nginx日志分析平台" target="_blank">elk+redis 搭建nginx日志分析平台</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/kibana/1.htm">kibana</a><a class="tag" taget="_blank" href="/search/logstash/1.htm">logstash</a> <div>             elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录。其次,需要有个队 列,redis的l</div> </li> <li><a href="/article/346.htm" title="Yii2设置时区" target="_blank">Yii2设置时区</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/timezone/1.htm">timezone</a><a class="tag" taget="_blank" href="/search/yii2/1.htm">yii2</a> <div>时区这东西,在开发的时候,你说重要吧,也还好,毕竟没它也能正常运行,你说不重要吧,那就纠结了。特别是linux系统,都TMD差上几小时,你能不痛苦吗?win还好一点。有一些常规方法,是大家目前都在采用的1、php.ini中的设置,这个就不谈了,2、程序中公用文件里设置,date_default_timezone_set一下时区3、或者。。。自己写时间处理函数,在遇到时间的时候,用这个函数处理(比较</div> </li> <li><a href="/article/473.htm" title="js实现前台动态添加文本框,后台获取文本框内容" target="_blank">js实现前台动态添加文本框,后台获取文本框内容</a> <span class="text-muted">171815164</span> <a class="tag" taget="_blank" href="/search/%E6%96%87%E6%9C%AC%E6%A1%86/1.htm">文本框</a> <div> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w</div> </li> <li><a href="/article/600.htm" title="持续集成工具" target="_blank">持续集成工具</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/1.htm">持续集成</a> <div>        持续集成是什么?我们为什么需要持续集成?持续集成带来的好处是什么?什么样的项目需要持续集成?...        持续集成(Continuous integration ,简称CI),所谓集成可以理解为将互相依赖的工程或模块合并成一个能单独运行</div> </li> <li><a href="/article/727.htm" title="数据结构哈希表(hash)总结" target="_blank">数据结构哈希表(hash)总结</a> <span class="text-muted">永夜-极光</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>1.什么是hash 来源于百度百科: Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。   </div> </li> <li><a href="/article/854.htm" title="乱七八糟" target="_blank">乱七八糟</a> <span class="text-muted">程序员是怎么炼成的</span> <div>eclipse中的jvm字节码查看插件地址: http://andrei.gmxhome.de/eclipse/ 安装该地址的outline 插件  后重启,打开window下的view下的bytecode视图 http://andrei.gmxhome.de/eclipse/   jvm博客: http://yunshen0909.iteye.com/blog/2</div> </li> <li><a href="/article/981.htm" title="职场人伤害了“上司” 怎样弥补" target="_blank">职场人伤害了“上司” 怎样弥补</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA/1.htm">职场</a> <div> 由于工作中的失误,或者平时不注意自己的言行“伤害”、“得罪”了自己的上司,怎么办呢?   在职业生涯中这种问题尽量不要发生。下面提供了一些解决问题的建议:   一、利用一些轻松的场合表示对他的尊重   即使是开明的上司也很注重自己的权威,都希望得到下属的尊重,所以当你与上司冲突后,最好让不愉快成为过去,你不妨在一些轻松的场合,比如会餐、联谊活动等,向上司问个好,敬下酒,表示你对对方的尊重,</div> </li> <li><a href="/article/1108.htm" title="深入浅出url编码" target="_blank">深入浅出url编码</a> <span class="text-muted">antonyup_2006</span> <a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/weblogic/1.htm">weblogic</a><a class="tag" taget="_blank" href="/search/IE/1.htm">IE</a> <div>出处:http://blog.csdn.net/yzhz  杨争   http://blog.csdn.net/yzhz/archive/2007/07/03/1676796.aspx 一、问题:         编码问题是JAVA初学者在web开发过程中经常会遇到问题,网上也有大量相关的</div> </li> <li><a href="/article/1235.htm" title="建表后创建表的约束关系和增加表的字段" target="_blank">建表后创建表的约束关系和增加表的字段</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%9A%84%E7%BA%A6%E6%9D%9F%E5%85%B3%E7%B3%BB/1.htm">标的约束关系</a><a class="tag" taget="_blank" href="/search/%E5%A2%9E%E5%8A%A0%E8%A1%A8%E7%9A%84%E5%AD%97%E6%AE%B5/1.htm">增加表的字段</a> <div>  下面所有的操作都是在表建立后操作的,主要目的就是熟悉sql的约束,约束语句的万能公式   1,增加字段(student表中增加 姓名字段)   alter table 增加字段的表名 add 增加的字段名 增加字段的数据类型 alter table student add name varchar2(10);   &nb</div> </li> <li><a href="/article/1362.htm" title="Uploadify 3.2 参数属性、事件、方法函数详解" target="_blank">Uploadify 3.2 参数属性、事件、方法函数详解</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/uploadify/1.htm">uploadify</a> <div>一.属性 属性名称 默认值 说明 auto true 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传。 buttonClass ” 按钮样式 buttonCursor ‘hand’ 鼠标指针悬停在按钮上的样子 buttonImage null 浏览按钮的图片的路</div> </li> <li><a href="/article/1489.htm" title="精通Oracle10编程SQL(16)使用LOB对象" target="_blank">精通Oracle10编程SQL(16)使用LOB对象</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</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/plsql/1.htm">plsql</a> <div>/* *使用LOB对象 */ --LOB(Large Object)是专门用于处理大对象的一种数据类型,其所存放的数据长度可以达到4G字节 --CLOB/NCLOB用于存储大批量字符数据,BLOB用于存储大批量二进制数据,而BFILE则存储着指向OS文件的指针 /* *综合实例 */ --建立表空间 --#指定区尺寸为128k,如不指定,区尺寸默认为64k CR</div> </li> <li><a href="/article/1616.htm" title="【Resin一】Resin服务器部署web应用" target="_blank">【Resin一】Resin服务器部署web应用</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/resin/1.htm">resin</a> <div>工作中,在Resin服务器上部署web应用,通常有如下三种方式:   配置多个web-app 配置多个http id 为每个应用配置一个propeties、xml以及sh脚本文件 配置多个web-app   在resin.xml中,可以为一个host配置多个web-app   <cluster id="app&q</div> </li> <li><a href="/article/1743.htm" title="red5简介及基础知识" target="_blank">red5简介及基础知识</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80/1.htm">基础</a> <div>  简介   Red5的主要功能和Macromedia公司的FMS类似,提供基于Flash的流媒体服务的一款基于Java的开源流媒体服务器。它由Java语言编写,使用RTMP作为流媒体传输协议,这与FMS完全兼容。它具有流化FLV、MP3文件,实时录制客户端流为FLV文件,共享对象,实时视频播放、Remoting等功能。用Red5替换FMS后,客户端不用更改可正</div> </li> <li><a href="/article/1870.htm" title="angular.fromJson" target="_blank">angular.fromJson</a> <span class="text-muted">boyitech</span> <a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/AngularJS+%E5%AE%98%E6%96%B9API/1.htm">AngularJS 官方API</a><a class="tag" taget="_blank" href="/search/AngularJS+API/1.htm">AngularJS API</a> <div>angular.fromJson 描述: 把Json字符串转为对象 使用方法: angular.fromJson(json); 参数详解: Param Type Details json string JSON 字符串 返回值: 对象, 数组, 字符串 或者是一个数字 示例: <!DOCTYPE HTML> <h</div> </li> <li><a href="/article/1997.htm" title="java-颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I" target="_blank">java-颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class ReverseWords { /** * 题目:颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I.词以空格分隔。 * 要求: * 1.实现速度最快,移动最少 * 2.不能使用String的方法如split,indexOf等等。 * 解答:两次翻转。 */ publ</div> </li> <li><a href="/article/2124.htm" title="web实时通讯" target="_blank">web实时通讯</a> <span class="text-muted">Chen.H</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/socket/1.htm">socket</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a> <div>关于web实时通讯,做一些监控软件。 由web服务器组件从消息服务器订阅实时数据,并建立消息服务器到所述web服务器之间的连接,web浏览器利用从所述web服务器下载到web页面的客户端代理与web服务器组件之间的socket连接,建立web浏览器与web服务器之间的持久连接;利用所述客户端代理与web浏览器页面之间的信息交互实现页面本地更新,建立一条从消息服务器到web浏览器页面之间的消息通路</div> </li> <li><a href="/article/2251.htm" title="[基因与生物]远古生物的基因可以嫁接到现代生物基因组中吗?" target="_blank">[基因与生物]远古生物的基因可以嫁接到现代生物基因组中吗?</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E7%89%A9/1.htm">生物</a> <div>       大家仅仅把我说的事情当作一个IT行业的笑话来听吧..没有其它更多的意思     如果我们把大自然看成是一位伟大的程序员,专门为地球上的生态系统编制基因代码,并创造出各种不同的生物来,那么6500万年前的程序员开发的代码,是否兼容现代派的程序员的代码和架构呢?   </div> </li> <li><a href="/article/2378.htm" title="oracle 外部表" target="_blank">oracle 外部表</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%A4%96%E9%83%A8%E8%A1%A8/1.htm">外部表</a><a class="tag" taget="_blank" href="/search/external+tables/1.htm">external tables</a> <div>    oracle外部表是只允许只读访问,不能进行DML操作,不能创建索引,可以对外部表进行的查询,连接,排序,创建视图和创建同义词操作。 you can select, join, or sort external table data. You can also create views and synonyms for external tables. Ho</div> </li> <li><a href="/article/2505.htm" title="aop相关的概念及配置" target="_blank">aop相关的概念及配置</a> <span class="text-muted">daysinsun</span> <a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a> <div>切面(Aspect): 通常在目标方法执行前后需要执行的方法(如事务、日志、权限),这些方法我们封装到一个类里面,这个类就叫切面。 连接点(joinpoint) spring里面的连接点指需要切入的方法,通常这个joinpoint可以作为一个参数传入到切面的方法里面(非常有用的一个东西)。 通知(Advice) 通知就是切面里面方法的具体实现,分为前置、后置、最终、异常环</div> </li> <li><a href="/article/2632.htm" title="初一上学期难记忆单词背诵第二课" target="_blank">初一上学期难记忆单词背诵第二课</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>middle 中间的,中级的 well 喔,那么;好吧 phone 电话,电话机 policeman 警察 ask 问 take 拿到;带到 address 地址 glad 高兴的,乐意的 why 为什么  China 中国 family 家庭 grandmother (外)祖母 grandfather (外)祖父 wife 妻子 husband 丈夫 da</div> </li> <li><a href="/article/2759.htm" title="Linux日志分析常用命令" target="_blank">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/log/1.htm">log</a> <div>1.查看文件内容 cat -n 显示行号 2.分页显示 more Enter 显示下一行 空格 显示下一页 F 显示下一屏 B 显示上一屏 less /get 查询"get"字符串并高亮显示 3.显示文件尾 tail -f 不退出持续显示 -n 显示文件最后n行 4.显示头文件 head -n 显示文件开始n行 5.内容排序 sort -n 按照</div> </li> <li><a href="/article/2886.htm" title="JSONP 原理分析" target="_blank">JSONP 原理分析</a> <span class="text-muted">fantasy2005</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/jsonp+%E8%B7%A8%E5%9F%9F/1.htm">jsonp 跨域</a> <div>转自 http://www.nowamagic.net/librarys/veda/detail/224 JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的</div> </li> <li><a href="/article/3013.htm" title="使用connect by进行级联查询" target="_blank">使用connect by进行级联查询</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2/1.htm">查询</a><a class="tag" taget="_blank" href="/search/%E7%88%B6%E5%AD%90/1.htm">父子</a><a class="tag" taget="_blank" href="/search/Connect+by/1.htm">Connect by</a><a class="tag" taget="_blank" href="/search/%E7%BA%A7%E8%81%94/1.htm">级联</a> <div>使用connect by进行级联查询          connect by可以用于级联查询,常用于对具有树状结构的记录查询某一节点的所有子孙节点或所有祖辈节点。          来看一个示例,现假设我们拥有一个菜单表t_menu,其中只有三个字段:</div> </li> <li><a href="/article/3140.htm" title="一个不错的能将HTML表格导出为excel,pdf等的jquery插件" target="_blank">一个不错的能将HTML表格导出为excel,pdf等的jquery插件</a> <span class="text-muted">jackyrong</span> <a class="tag" taget="_blank" href="/search/jquery%E6%8F%92%E4%BB%B6/1.htm">jquery插件</a> <div>发现一个老外写的不错的jquery插件,可以实现将HTML 表格导出为excel,pdf等格式, 地址在: https://github.com/kayalshri/ 下面看个例子,实现导出表格到excel,pdf <html> <head> <title>Export html table to excel an</div> </li> <li><a href="/article/3267.htm" title="UI设计中我们为什么需要设计动效" target="_blank">UI设计中我们为什么需要设计动效</a> <span class="text-muted">lampcy</span> <a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/UI%E8%AE%BE%E8%AE%A1/1.htm">UI设计</a> <div>关于Unity3D中的Shader的知识 首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex shader和pixel shader还是使用标准的Cg/HLSL 编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,</div> </li> <li><a href="/article/3394.htm" title="如何禁止页面缓存" target="_blank">如何禁止页面缓存</a> <span class="text-muted">nannan408</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a> <div>禁止页面使用缓存~ ------------------------------------------------ jsp:页面no cache: response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cach</div> </li> <li><a href="/article/3521.htm" title="以代码的方式管理quartz定时任务的暂停、重启、删除、添加等" target="_blank">以代码的方式管理quartz定时任务的暂停、重启、删除、添加等</a> <span class="text-muted">Everyday都不同</span> <a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E7%AE%A1%E7%90%86/1.htm">定时任务管理</a><a class="tag" taget="_blank" href="/search/spring-quartz/1.htm">spring-quartz</a> <div>      【前言】在项目的管理功能中,对定时任务的管理有时会很常见。因为我们不能指望只在配置文件中配置好定时任务就行了,因为如果要控制定时任务的 “暂停” 呢?暂停之后又要在某个时间点 “重启” 该定时任务呢?或者说直接 “删除” 该定时任务呢?要改变某定时任务的触发时间呢? “添加” 一个定时任务对于系统的使用者而言,是不太现实的,因为一个定时任务的处理逻辑他是不</div> </li> <li><a href="/article/3648.htm" title="EXT实例" target="_blank">EXT实例</a> <span class="text-muted">tntxia</span> <a class="tag" taget="_blank" href="/search/ext/1.htm">ext</a> <div>  (1) 增加一个按钮   JSP:   <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); Stri</div> </li> <li><a href="/article/3775.htm" title="数学学习在计算机研究领域的作用和重要性" target="_blank">数学学习在计算机研究领域的作用和重要性</a> <span class="text-muted">xjnine</span> <a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a> <div>最近一直有师弟师妹和朋友问我数学和研究的关系,研一要去学什么数学课。毕竟在清华,衡量一个研究生最重要的指标之一就是paper,而没有数学,是肯定上不了世界顶级的期刊和会议的,这在计算机学界尤其重要!你会发现,不论哪个领域有价值的东西,都一定离不开数学!在这样一个信息时代,当google已经让世界没有秘密的时候,一种卓越的数学思维,绝对可以成为你的核心竞争力.  无奈本人实在见地</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>