HTTP basic

HTTP basic get/post 1.HTTP请求格式: 在HTTP请求中,第一行必须是一个请求行 (request line) ,用来说明请求类型、要访问的资源以及使用的HTTP版本。紧接着是一个首部 (header) 小节,用来说明服务器要使用的附加信息。在首部之后是一个空行,再此之后可以添加任意的其他数据[称之为主体 (body) ]。 重定向 Redirect 重定向是指当浏览器请求一个URL时,服务器返回一个重定向指令,告诉浏览器地址已经变了,麻烦使用新的URL再重新发送新请求。 例如,我们已经编写了一个能处理/hello的HelloServlet,如果收到的路径为/hi,希望能重定向到/hello 如果浏览器发送GET /hi请求,RedirectServlet将处理此请求。由于RedirectServlet在内部又发送了重定向响应,因此,浏览器会收到如下响应: HTTP/1.1 302 Found Location: /hello 当浏览器收到302响应后,它会立刻根据Location的指示发送一个新的GET /hello请求,这个过程就是重定向: ┌───────┐ GET /hi ┌───────────────┐ │Browser│ ────────────> │RedirectServlet│ │ │ <──────────── │ │ └───────┘ 302 └───────────────┘ ┌───────┐ GET /hello ┌───────────────┐ │Browser│ ────────────> │ HelloServlet │ │ │ <──────────── │ │ └───────┘ 200 └───────────────┘ 观察Chrome浏览器的网络请求,可以看到两次HTTP请求: 并且浏览器的地址栏路径自动更新为/hello。 重定向有两种: 一种是302响应,称为临时重定向,一种是301响应,称为永久重定向。两者的区别是,如果服务器发送301永久重定向响应,浏览器会缓存/hi到/hello这个重定向的关联,下次请求/hi的时候,浏览器就直接发送/hello请求了。 重定向有什么作用?重定向的目的是当Web应用升级后,如果请求路径发生了变化,可以将原来的路径重定向到新路径,从而避免浏览器请求原路径找不到资源。 HttpServletResponse提供了快捷的redirect()方法实现302重定向。 http2 https://halfrost.com/http2-http-frames/ ...

2011-10-23 · 1 min · 147 words · -

Conditional Get

Conditional Get HTTP条件Get HTTP条件Get是HTTP协议为了减少不必要的带宽浪费,提出的一种方案。详见http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html HTTP条件Get使用的时机: 客户端之前已经访问过某网站,并打算再次访问该网站 HTTP条件Get使用的方法: 客户端向服务器发送一个包询问是否在上一次访问网站的时间后是否更改了页面,如果服务器没有更新,显然不需要把整个网页传给客户端,客户端只要使用本地缓存即可,如果服务器对照客户端给出的时间已经更新了客户端请求的网页,则发送这个更新了的网页给用户。 下面是具体的发送接受报文: 客户端发送查询请求: ```java GET / HTTP/1.1 Host: www.sina.com.cn:80 If-Modified-Since:Thu, 4 Feb 2010 20:39:13 GMT Connection: Close 下面是当没有更新时服务器的相应: ```java HTTP/1.0 304 Not Modified Date: Thu, 04 Feb 2010 12:38:41 GMT Content-Type: text/html Expires: Thu, 04 Feb 2010 12:39:41 GMT Last-Modified: Thu, 04 Feb 2010 12:29:04 GMT Age: 28 X-Cache: HIT from sy32-21.sina.com.cn Connection: close 如果服务器网页已经更新就会发送把客户端的请求当作一个普通的Get请求发送相应报文 HTTP/1.0 200 OK Date: Thu, 04 Feb 2010 12:49:46 GMT Server: Apache Last-Modified: Thu, 04 Feb 2010 12:49:05 GMT Accept-Ranges: bytes X-Powered-By: mod_xlayout_jh/0.0.1vhs.markIII.remix Cache-Control: max-age=60 Expires: Thu, 04 Feb 2010 12:50:46 GMT Vary: Accept-Encoding X-UA-Compatible: IE=EmulateIE7 Content-Length: 452785 Content-Type: text/html Age: 11 X-Cache: HIT from sy32-27.sina.com.cn Connection: close /*.......网页内容....... */

2011-10-23 · 1 min · 112 words · -

Wireshark

Wireshark Wireshark (前称Ethereal) 是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。 网络封包分析软件的功能可想像成 “电工技师使用电表来量测电流、电压、电阻” 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。 在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是目前全世界最广泛的网络封包分析软件之一。 应用 Wireshark使用目的以下是一些使用Wireshark目的的例子: 网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网络协定的相关知识当然,有的人也会"居心叵测"的用它来寻找一些敏感信息…… Wireshark不是入侵侦测软件 (Intrusion DetectionSoftware,IDS) 。对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。然而,仔细分析Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。Wireshark不会对网络封包产生内容的修改,它只会反映出目前流通的封包资讯。 Wireshark本身也不会送出封包至网络上。 发展简史 1997年底,GeraldCombs需要一个能够追踪网络流量的工具软件作为其工作上的辅助。因此他开始撰写Ethereal软件。Ethereal在经过几次中断开发的事件过后,终于在1998年7月释出其第一个版本v0.2.0。自此之后,Combs收到了来自全世界的修补程式、错误回报与鼓励信件。Ethereal的发展就此开始。不久之后,GilbertRamirez看到了这套软件的开发潜力并开始参予低阶程式的开发。1998年10月,来自NetworkAppliance公司的GuyHarris在寻找一套比tcpview (另外一套网络封包撷取程式) 更好的软件。于是他也开始参与Ethereal的开发工作。1998年底,一位在教授TCP/IP课程的讲师RichardSharpe,看到了这套软件的发展潜力,而后开始参与开发与加入新协定的功能。在当时,新的通讯协定的制定并不复杂,因此他开始在Ethereal上新增的封包撷取功能,几乎包含了当时所有通讯协定。 自此之后,数以千计的人开始参与Ethereal的开发,多半是因为希望能让Ethereal撷取特定的,尚未包含在Ethereal默认的网络协定的封包而参予新的开发。2006年6月,因为商标的问题,Ethereal更名为Wireshark。 [TCP ZeroWindow]: 接收者向发送者发送的一种窗口警告,告诉发送者你的接收窗口已满,暂时停止发送。 wireshark 时序图 菜单>统计>TCP流图形>时间序列 窗口尺寸 菜单>统计>TCP流图形>窗口尺寸 https://www.codenong.com/cs106112955/ Wireshark 过滤 port 按端口过滤 # 一个端口 tcp.port == 25 # 多个端口 tcp.port == 25 or tcp.port == 80 按目标端口过滤 tcp.dstport == 25 显示来自10.230网段的封包 ip.src == 10.230.0.0/16 wireshark http ssdp 过滤方法 http&&!(udp.dstport == 1900) ip.addr == 10.1.1.1 ip.src != 10.1.2.3 or ip.dst != 10.4.5.6 ...

2011-10-22 · 1 min · 77 words · -

nuxus

nuxus Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件 (artifact) ,但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。 下载和安装 你可以从 http://nexus.sonatype.org/downloads/ 下载最新版本的Nexus,笔者使用的是1.9.2.3版本。 Nexus提供了两种安装方式,一种是内嵌Jetty的bundle,只要你有JRE就能直接运行。第二种方式是WAR,你只须简单的将其发布到web容器中即可使用。 WAR方式安装 你需要有一个能运行的web容器,这里以Tomcat为例,加入Tomcat的安装目录位于_D:programapache-tomcat-7.0.21_ ,首先我们将下载的_nexus-webapp-1.9.2.3.war_ 重命名为_nexus.war_ ,然后复制到__D:programapache-tomcat-7.0.21_webappsnexus.war_ ,然后运行startup.bat。访问http://127.0.0.1:8080/nexus .

2011-10-19 · 1 min · 18 words · -

ip-guard, [0x7FFFBB83E044] ANOMALY: use of REX.w is meaningless (default operand size is 64)

“ip-guard, [0x7FFFBB83E044] ANOMALY: use of REX.w is meaningless (default operand size is 64)” HKEY_LOCAL_MACHINE\SOFTWARE\TEC\Ocular.3\agent\config 字符串类型, key: hookapi_filterproc_external value: cmd.exe;wsl.exe foo.reg Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\TEC\Ocular.3\agent\config] "hookapi_filterproc_external"="cmd.exe;wsl.exe"

2011-10-19 · 1 min · 27 words · -

JdbcTemplate

JdbcTemplate https://segmentfault.com/a/1190000010907688 https://www.cnblogs.com/gongxr/p/8053010.html jdbcTemplate 获取刚插入的主键 id https://blog.csdn.net/liuao107329/article/details/79126118 jdbctemplate unit test https://blog.csdn.net/kerongao/article/details/110872832 https://www.baeldung.com/spring-jdbctemplate-testing

2011-10-17 · 1 min · 12 words · -

Zipkin

Zipkin Zipkin 是一个基于 Java 开发的、开源的、分布式实时数据跟踪系统 (Distributed Tracking System) https://zipkin.io/

2011-10-16 · 1 min · 9 words · -

df command

df command 文件系统类型, 磁盘分区类型 df -T df 是来自于coreutils 软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置; 举例: df -lh Filesystem 容量 已用 可用 已用% 挂载点 /dev/hda8 11G 6.0G 4.4G 58% / /dev/shm 236M 0 236M 0% /dev/shm /dev/sda1 56G 22G 35G 39% /mnt/sda1 我们从中可以看到,系统安装在/dev/hda8 ;还有一个56G的磁盘分区/dev/sda1挂载在 /mnt/sda1中; 其它的参数请参考 man df disk free 的缩写;用于显示目前Linux系统上的文件系统的磁盘使用情况统计, df 是用 superblock 的信息统计磁盘占用的. df -h # 查看 inode 使用情况 df -hi df -t ext4 -h # 查看文件系统类型 df -T -h # inode 使用统计 df -i df命令可以获取硬盘被占用了多少空间, 目前还剩下多少空间等信息, 它也可以显示所有文件系统对i节点和磁盘块的使用情况。 ...

2011-10-16 · 2 min · 302 words · -

CGI

CGI CGI(Common Gateway Interface),通用网关接口 通用网关接口,简称CGI,是一种根据请求信息动态产生回应内容的技术。通过CGI,Web 服务器可以将根据请求不同启动不同的外部程序,并将请求内容转发给该程序,在程序执行结束后,将执行结果作为回应返回给客户端。也就是说,对于每个请求,都要产生一个新的进程进行处理。因为每个进程都会占有很多服务器的资源和时间,这就导致服务器无法同时处理很多的并发请求。另外CGI程序都是与操作系统平台相关的,虽然在互联网爆发的初期,CGI为开发互联网应用做出了很大的贡献,但是随着技术的发展,开始逐渐衰落。 CGI: 通用网关接口 Common Gateway Interface,简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端 HTML页面的接口。这样说大概还不好理解。那么我们看一个实际例子: 现在的个人主页上大部分都有一个留言本。留言本的工作是这样的: 先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下"留言" (到目前为止工作都在客户端) ,浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到"留言结束"的字样。整个过程结束。 功能 绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具有交互功能。 运行环境 CGI程序最初在UNIX操作系统上CERN或NCSA格式的服务器上运行。 在其它操作系统 (如: Windows NT及Windows 95等) 的服务器上也广泛地使用CGI程序,同时它也适用于各种类型机器。 处理步骤 ⑴通过Internet把用户请求送到服务器。 ⑵服务器接收用户请求并交给CGI程序处理。 ⑶CGI程序把处理结果传送给服务器。 ⑷服务器把结果送回到用户。 服务器配置 CGI程序不是放在服务器上就能顺利运行,如果要想使其在服务器上顺利的运行并准确的处理用户的请求,则须对所使用的服务器进行必要的设置。 配置: 根据所使用的服务器类型以及它的设置把CGI程序放在某一特定的目录中或使其带有特定的扩展名。 ⑴CREN格式服务器的配置: 编辑CREN格式服务器的配置文件 (通常为/etc/httpd.conf) 在文件中加入: Exec cgi-bin//home/www/cgi-bin/.exec。命令中出现的第一个参数cgi-bin/*指出了在URL中出现的目录名字,并表示它出现在系统主机后的第一个目录中,如: http://edgar.stern.nyn.***/cgi-bin/。命令中的第二个参数表示CGI程序目录放在系统中的真实路径。 CGI目录除了可以跟网络文件放在同一目录中,也可以放在系统的其它目录中,但必须保证在你的系统中也具有同样的目录。在对服务器完成设置后,须重新启动服务器 (除非HTTP服务器是用inetd启动的) 。 ⑵NCSA格式服务器的配置 在NCSA格式服务器上有两种方法进行设置: ①在srm.conf文件 (通常在conf目录下) 中加入: Script Alias/cgi-bin/cgi-bin/。Script Alias命令指出某一目录下的文件是可执行程序,且这个命令是用来执行这些程序的;此命令的两个参数与CERN格式服务器中的Exec命令的参数的含意一样。 ②在srm.conf文件加入: Add type application/x-httpd-cgi.cgi。此命令表示在服务器上增加了一种新的文件类型,其后第一个参数为CGI程序的MIME类型,第二个参数是文件的扩展名,表示以这一扩展名为扩展名的文件是CGI程序。 在用上述方法之一设置服务器后,都得重新启动服务器 (除非HTTP服务器是用inetd启动的) 。 编写语言 CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。对初学者来说,最好选用易于归档和能有效表示大量数据结构的语言,例如UNIX环境中: · Perl (Practical Extraction and Report Language) · Bourne Shell或者Tcl (Tool Command Language) ...

2011-10-16 · 2 min · 253 words · -

HTTP protocol, HTTP response status codes, 状态码/响应代码

HTTP protocol, HTTP response status codes, 状态码/响应代码 http header RFC 2616 规范说明了处理 HTTP Header 应该是大小写不敏感的。 Each header field consists of a name followed by a colon (":") and the field value. Field names are case-insensitive. golang gin 默认会把 header name 转成首字母大写 Envoy 默认会将 Header 转换为小写 Envoy 只支持两种规则: 全小写 (默认使用的规则) 首字母大写 (默认没有启用) User-Agent 标识用户代理 Referer 告诉服务器用户从哪里来 If-Modified-Since 主要用来检查cache是否过期 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的www文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本 (hypertext) ,这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会 (World Wide Web Consortium) 和Internet工作小组 (Internet Engineering Task Force) 共同合作研究,最终发布了一系列的RFC,其中最著名的就是RFC 2616。RFC 2616定义了HTTP协议的我们今天普遍使用的一个版本HTTP 1.1。 ...

2011-10-16 · 3 min · 530 words · -

通讯协议

通讯协议 通讯协议, TCP/IP 开放系统互联协议中最早的协议之一,它为连接不同操作系统和不同硬件体系结构的互联网络提供通信支持,是一种网络通用语言。TCP/IP协议定义了在互联网络中如何传递、管理信息(文件传送、收发电子邮件、远程登录等),并制定了在出错时必须遵循的规则。 简介 通信协议又称通信规程,是指通信双方对数据传送控制的一种约定。约定中包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守,它也叫做链路控制规程。 电脑与电脑之间的沟通必须讲述相同的语言,才能互相传输信息,自然资料在国际互联网上传递,每一份都要符合一定的规格 (即是相同的语言) ,否则中国送出的资料,在美国那边要怎么收下呢? 这些规格 (语言) 的规定都是事先在会议桌上讲好的,一般我们称之为"协议" (protocol) ,而这种在网络上负责定义资料传输规格的协议,我们就统称为通讯协议。 其实每一种网络所使用的通讯协议都不太一样,但就以我们最常用的Internet为例,当资料要送到Internet上时,就必须要使用Internet用的通讯协议。 详细介绍 TCP/IP TCP (Transmission Control Protocol, 传输控制协议) . TCP/IP是网络中使用的基本的通信协议。虽然从名字上看TCP/IP包括两个协议,TCP和IP(网际协议),但TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如: 远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,而不单单是TCP和IP。 TCP/IP是用于计算机通信的一组协议,它是70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准,以它为基础组建的INTERNET是目前国际上规模最大的计算机网络,正因为INTERNET的广泛使用,使得TCP/IP成了事实上的标准。 之所以说TCP/IP是一个协议族,是因为TCP/IP协议包括TCP、IP、UDP、ICMP、RIP、TELNETFTP、SMTP、ARP、TFTP等许多协议,这些协议一起称为TCP/IP协议。 IP (Internet Protocol, 国际互联网通讯协议) 它们组合成互联网的语言,因为Internet是由全世界很多大大小小的网络连接而成,所以大家必须遵守它的语言 (TCP/IP) 才能顺利跟别人沟通。 http://imgsrc.baidu.com/baike/abpic/item/8697397f0a64693228388aa3.jpg 不过如果你来到别的网络,就等于是来到一个陌生的国家,使用的通讯协议,也就换作另一套了!由此可知TCP/IP只是网络上众多通讯协议的其中一种而已。 在Internet上每一台机器都要有一个IP 每一台连接到Internet上的电脑,为了要让资料能够正确且顺利地传输,它会为每一台机器定义一个IP,也就等于是给你的电脑装上门牌号码;因为资料在电脑之间传输,就和车子在都市中跑来跑去有点像,如果有了IP (门牌号码) ,网络的设备马上便能得知,这一份资料是要送到哪一台电脑去。 IPX/SPX IPX/SPX是基于施乐的XEROX'S Network System (XNS) 协议,而SPX是基于施乐的XEROX'S SPP (Sequenced Packet Protocol: 顺序包协议) 协议,它们都是由novell公司开发出来应用于局域网的一种高速协议。它和TCP/IP的一个显著不同就是它不使用ip地址,而是使用网卡的物理地址即 (MAC) 地址。在实际使用中,它基本不需要什么设置,装上就可以使用了。由于其在网络普及初期发挥了巨大的作用,所以得到了很多厂商的支持,包括microsoft等,到现在很多软件和硬件也均支持这种协议。 NetBEUI NetBEUI (NetBios Enhanced User Interface) ,或NetBios增强用户接口。它是NetBIOS协议的增强版本,曾被许多操作系统采用,例如Windows for Workgroup、Win9x系列、Windows NT等。NETBEUI协议在许多情形下很有用,是WINDOWS98之前的操作系统的缺省协议。总之NetBEUI协议是一种短小精悍、通信效率高的广播型协议,安装后不需要进行设置,特别适合于在"网络邻居"传送数据。所以建议除了TCP/IP协议之外,局域网的计算机最好也安上NetBEUI协议。另外还有一点要注意,如果一台只装了TCP/IP协议的WINDOWS98机器要想加入到WINNT域,也必须安装NetBEUI协议。 网络通信协议 RS-232-C RS-232-C是OSI基本参考模型物理层部分的规格,它决定了连接器形状等物理特性、以0和1表示的电气特性及表示信号意义的逻辑特性。 RS-232-C是EIA发表的,是RS-232-B的修改版。本来是为连接模拟通信线路中的调制解调器等DCE及电传打印机等DTE拉接口而标准化的。现在很多个人计算机也用RS-232-C作为输入输出接口,用RS-232-C作为接口的个人计算机也很普及。 RS-232-C的如下特点: 采用直通方式,双向通信,基本频带,电流环方式,串行传输方式,DCE-DTE间使用的信号形态,交接方式,全双工通信。RS-232-C在ITU建议的V.24和V.28规定的25引脚连接器在功能上具有互换性。 RS-232-C所使用的连接器为25引脚插入式连接器,一般称为25引脚D-SUB。DTE端的电缆顶端接公插头,DCE端接母插座。 RS-232-C所用电缆的形状并不固定,但大多使用带屏蔽的24芯电缆。电缆的最大长度为15m。使用RS-232-C在200K位/秒以下的任何速率都能进行数据传输。 RS-449 http://baike.baidu.com/albums/278358/278358.html#0$fab3ac117148de44ca80c4b3 ...

2011-10-16 · 1 min · 135 words · -

One or more PGP signatures could not be verified

One or more PGP signatures could not be verified gpg -recv-key <KEYID> https://bbs.archlinux.org/viewtopic.php?id=191954 Two PGP Keyrings for Package Management in Arch Linux http://allanmcrae.com/2015/01/two-pgp-keyrings-for-package-management-in-arch-linux/embed/#?secret=zQHTu5bbvd

2011-10-16 · 1 min · 23 words · -

Android OpenVPN-TAP 模式/策略路由

‘Android OpenVPN-TAP 模式/策略路由’ http://blog.csdn.net/dog250/article/details/42046269 在Android的OpenVPN Service的FAQ上,关于TAP模式有三问三答,最后回答的建议是: Support TAP via emulation。这也是我自己前几个月实现过的。要问为何Android自己不能提供对TAPmode的支持,似乎不关VPNService作者本人的事,其建议是: If you really want to see tap-style tunnels supported in OpenVPN Connect, we would encourage you tocontact the Google Android team and ask that the VpnService API be extended to allow this. Without such changes to the VpnService API, it is not possible for non-root apps such as OpenVPN Connect to support tap-style tunnels. 这似乎是个圈,但是我们仔细想一下就会发现这个圈原来是这样: 1.Android平台在一个公共的层下面拥有多个完全不同的底层实现,包括Linux内核; 2.开放Android的root权限意味着用户可以触摸到任意的底层; 3.所有的公共集合,包括API以及功能必须不能基于底层来构建,root权限不能对所有普通用户开放; 4.必须有一个公共的层,用户的需求基于这个公共的层来实现 5.这个层就是Android平台。 ...

2011-10-16 · 2 min · 382 words · -

Java Bean

Java Bean 一、 javabean 是什么? Bean的中文含义是"豆子",顾名思义,JavaBean是指一段特殊的Java类, 就是有默然构造方法,只有get,set的方法的java类的对象. 最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在IDE下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean (EJB) 。 专业点解释是: JavaBean定义了一组规则 JavaBean就是遵循此规则的平常的Java对象 满足这三个条件: 1.执行java.io.Serializable 接口 2.提供无参数的构造器 3.提供getter 和 setter方法访问它的属性. 简单地说,JavaBean是用Java语言描述的软件组件模型,其实际上是一个类。这些类遵循一个接口格式,以便于使函数命名、底层行为以及继承或实现的行为,可以把类看作标准的JavaBean组件进行构造和应用。 JavaBean一般分为可视化组件和非可视化组件两种。可视化组件可以是简单的GUI元素,如按钮或文本框,也可以是复杂的,如报表组件;非可视化组件没有GUI表现形式,用于封装业务逻辑、数据库操作等。其最大的优点在于可以实现代码的可重用性。JavaBean又同时具有以下特性。 易于维护、使用、编写。 可实现代码的重用性。 可移植性强,但仅限于Java工作平台。 便于传输,不限于本地还是网络。 可以以其他部件的模式进行工作。 对于有过其他语言编程经验的读者,可以将其看作类似微软的ActiveX的编程组件。但是区别在于JavaBean是跨平台的,而ActiveX组件则仅局限于Windows系统。总之,JavaBean比较适合于那些需要跨平台的、并具有可视化操作和定制特性的软件组件。 JavaBean组件与EJB (Enterprise JavaBean,企业级JavaBean) 组件完全不同。EJB 是J2EE的核心,是一个用来创建分布式应用、服务器端以及基于Java应用的功能强大的组件模型。JavaBean组件主要用于存储状态信息,而EJB组件可以存储业务逻辑。 2 使用JavaBean的原因 程序中往往有重复使用的段落,JavaBean就是为了能够重复使用而设计的程序段落,而且这些段落并不只服务于某一个程序,而且每个JavaBean都具有特定功能,当需要这个功能的时候就可以调用相应的JavaBean。从这个意义上来讲,JavaBean大大简化了程序的设计过程,也方便了其他程序的重复使用。 JavaBean传统应用于可视化领域,如AWT (窗口工具集) 下的应用。而现在,JavaBean更多地应用于非可视化领域,同时,JavaBean在服务器端的应用也表现出强大的优势。非可视化的JavaBean可以很好地实现业务逻辑、控制逻辑和显示页面的分离,现在多用于后台处理,使得系统具有更好的健壮性和灵活性。JSP + JavaBean和JSP + JavaBean + Servlet成为当前开发Web应用的主流模式。 3 JavaBean的开发 在程序设计的过程中,JavaBean不是独立的。为了能够更好地封装事务逻辑、数据库操作而便于实现业务逻辑和前台程序的分离,操作的过程往往是先开发需要的JavaBean,再在适当的时候进行调用。但一个完整有效的JavaBean必然会包含一个属性,伴随若干个get/set (只读/只写) 函数的变量来设计和运行的。JavaBean作为一个特殊的类,具有自己独有的特性。应该注意以下3个方面。 JavaBean类必须有一个没有参数的构造函数。 JavaBean类所有的属性最好定义为私有的。 JavaBean类中定义函数setXxx() 和getXxx()来对属性进行操作。其中Xxx是首字母大写的私有变量名称。 二、JavaBean和企业Bean的区别 http://www.hudong.com/wiki/Enterprise%20JavaBean JavaBean 和 Server Bean (通常称为 Enterprise JavaBean (EJB)) 有一些基本相同之处。它们都是用一组特性创建,以执行其特定任务的对??获得其它特性的能力。这使得 bean 的行为根据特定任务和所在环境的不同而有所不同。 ...

2011-10-16 · 1 min · 103 words · -

Java EE

Java EE Java EE,Java2平台企业版 (Java 2 Platform Enterprise Edition) ,是Sun公司为企业级应用推出的标准平台。Java平台共分为三个主要版本Java EE、Java SE和Java ME。 Sun公司在1998年发表JDK1.2版本的时候,使用了新名称Java 2 Platform,即"Java2平台",修改后的JDK称为Java 2 Platform Software Developing Kit,即J2SDK。并分为标准版 (Standard Edition,J2SE) ,企业版 (Enterprise Edition,J2EE) ,微型版 (MicroEdition,J2ME) 。J2EE便由此诞生。 2005年6月,JavaOne大会召开,SUN公司发布Java SE 6。此时,Java的各种版本已经更名并取消其中的数字"2": J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。 随着Java技术的发展,Java EE平台得到了迅速的发展,成为Java语言中最活跃的体系之一。现如今,Java EE不仅仅是指一种标准平台,它更多的表达着一种软件架构和设计思想。 Java EE是一系列技术标准所组成的平台,包括: JDBC - Java数据库联接 (Java Database Connectivity) JSP - Java服务器页面 (Java Server Pages) JSF - Java Server Faces JSTL - Java服务器页面标准标签库 (Java Server Pages Standard Tag Library) WS - Web Services ...

2011-10-16 · 1 min · 186 words · -

Servlet

Servlet servlet的由来 自从计算机软件开发进入网络时代,就开始涉及到通讯问题。在客户/服务器 (C/S) 时期,每个软件都有自己的客户端和服务器端软件。并且客户端和服务器端之间的通讯协议差别也很大。后来随着互联网的发展,基于浏览器/服务器(B/S)的应用逐渐成为主流,通讯协议也统一到HTTP协议。但是,在HTTP协议之上,如何处理来自客户端的请求信息,以及如何对请求进行回应,则经历了很长时间也没有统一下来。目前,对于这个问题的解决方案主要有两种,一个是CGI,另一个是Servlet。 servlet是在服务器上运行的小程序。这个词是在Java applet的环境中创造的,Java applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口 (CGI(Common Gateway Interface)) 应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,servlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。最早支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。 Servlet最初是在1995年由James Gosling 提出的,因为使用该技术需要复杂的Web服务器支持,所以当时并没有得到重视,也就放弃了。后来随着Web应用复杂度的提升,并要求提供更高的并发处理能力,Servlet被重新捡起,并在Java平台上得到实现,现在提起Servlet,指的都是Java Servlet。Java Servlet要求必须运行在Web服务器当中,与Web服务器之间属于分工和互补关系。确切的说,在实际运行的时候Java Servlet与Web服务器会融为一体,如同一个程序一样运行在同一个Java虚拟机 (JVM) 当中。与CGI不同的是,Servlet对每个请求都是单独启动一个线程,而不是进程。这种处理方式大幅度地降低了系统里的进程数量,提高了系统的并发处理能力。另外因为Java Servlet是运行在虚拟机之上的,也就解决了跨平台问题。 在Servlet出现之后,随着使用范围的扩大,人们发现了它的一个很大的一个弊端。那就是为了能够输出HTML格式内容,需要编写大量重复代码,造成不必要的重复劳动。为了解决这个问题,基于Servlet技术产生了Java Server Pages (JSP) 。 Servlet和JSP两者分工协作,Servlet侧重于解决运算和业务逻辑问题,JSP则侧重于解决展示问题。Servlet与JSP一起为Web应用开发带来了巨大的贡献,后来出现的众多Java Web应用开发框架都是基于这两种技术的,更确切的说,都是基于Servlet技术的。 Servlet与Web容器之间的关系 Java是一种动态加载和运行的语言。也就是说当应用程序持有一个类的地址 (CLASSPATH) 和名称 (包名和类名) 的情况下,可以在程序运行期间任何时候加载这个类,并创建和使用该类的对象。Servlet就是基于这个机制与Web容器融合在一起的。目前已知的所有支持Java Servlet的Web容器都是采用Java开发的。当Web容器接收到来自客户端的请求信息之后,会根据URL中的Web元件地址信息到Servlet队列中查找对应的Servlet对象,如果找到则直接使用,如果没有找到则加载对应的类,并创建对象。也就是说,Servlet对象是在第一次被使用的时候才创建的,并且一旦创建就会被反复使用,不再创建新的对象。所有创建出的Servlet对象会在Web服务器停止运行的时候统一进行垃圾回收。 为了解决客户端请求地址与 Servlet之间对应关系问题,Web容器需要一个用来描述这种对应关系的文件,一般是web.xml文件。如果一个Web应用程序中存在很多个Servlet,那么web.xml会变得非常庞大。在Servlet 3.0规范推出之后,允许在Servlet代码中使用声明式语法(annotation)来代替web.xml中的描述信息,这才让web.xml瘦身下来. Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求 (Web浏览器或其他HTTP客户程序) 与服务器响应 (HTTP服务器上的数据库或应用程序) 的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。 Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为: 客户端发送请求至服务器端; 服务器将请求信息发送至Servlet ; Servlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求; 服务器将响应返回给客户端; Servlet看起来像是通常的Java程序。Servlet导入特定的属于Java ServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。 一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过"请求-响应"编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。 目前最新版本为3.0草案命名: Server + Applet =Servlet 意为服务器端的小程序 Servlet生命周期 装载Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。 Server创建一个Servlet的实例 Server调用Servlet的init()方法 一个客户端的请求到达Server Server创建一个请求对象 Server创建一个响应对象 Server激活Servlet的service()方法,传递请求和响应对象作为参数 service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息 service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法。 对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次(只有一个对象),当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。 ...

2011-10-16 · 3 min · 481 words · -

md5, sha256

md5, sha256 # linux md5sum [OPTION]... [FILE]... md5sum foo.tar sha256sum foo.tar sha1sum foo.tar # windows certutil -hashfile foo.tar MD5 certutil -hashfile foo.tar SHA1 certutil -hashfile foo.tar SHA256 # macos md5 foo.tar MD5: 一种单向Hash函数/单向散列函数 Message Digest Algorithm MD5 (中文名为消息摘要算法第五版) 为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321 (R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992) 。 描述 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法 (Message-Digest Algorithm 5) ,此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位 (十六进制长度就是32位) 的"指纹" (或称"报文摘要") ,不同的文件产生相同的报文摘要的可能性是非常非常之小的。 在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。 选项: -b 或 -binary :把输入文件作为二进制文件看待。 -t 或 -text :把输入的文件作为文本文件看待 (默认) 。 -c 或 -check :用来从文件中读取md5信息检查文件的一致性。(不细说了参见info) -status :这个选项和check一起使用,在check的时候,不输出,而是根据返回值表示检查结果。 -w 或 -warn :在check的时候,检查输入的md5信息又没有非法的行,如果有则输出相应信息。 [举例] ...

2011-10-14 · 2 min · 217 words · -

windows basic, win basic

windows basic, win basic cmd ## 删除 目录 remove-item dir0 -recurse -force copy C:\Users\desktop\foo.txt D:\backup\ /y # force overwrite copy /b/v/y C:\Users\desktop\foo.txt D:\backup\ # cmd-连续执行多条命令 copy C:\Users\desktop\foo.txt D:\backup\ && D:\backup\foo.exe # 查看证书 certmgr.msc # 查看 windows 的版本 winver ISO https://isofiles.bd581e55.workers.dev/ win10 应用开机启动, 启动项 打开运行 win + r, 输入 shell:startup, 将该应用的快捷方式从文件位置复制并粘贴到 “启动” 文件夹中。 msdn i tell u https://www.itellu.com/2021/06/22/win11-v2021-v1/ windows iso 打开页面: https://www.microsoft.com/zh-cn/software-download/windows10 点击 立即下载工具 运行 MediaCreationTool21H1.exe 选择 “为另一台电脑创建安装介质” uupdump https://uupdump.net/ ...

2011-10-14 · 3 min · 639 words · -

java timer

java timer Timer和TimerTask Timer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次。 TimerTask是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行的任务。 一个Timer调度的例子 import java.util.Timer; import java.util.TimerTask; public class TestTimer { public static void main(String args[]){ System.out.println("About to schedule task."); new Reminder(3); System.out.println("Task scheduled."); } public static class Reminder{ Timer timer; public Reminder(int sec){ timer = new Timer(); timer.schedule(new TimerTask(){ public void run(){ System.out.println("Time's up!"); timer.cancel(); } }, sec*1000); } } } 运行之后,在console会首先看到: ...

2011-10-13 · 2 min · 359 words · -

cgroup, namespace

cgroup, namespace cgroup 的主要作用:管理资源的分配、限制; namespace 的主要作用:封装抽象,限制,隔离,使命名空间内的进程看起来拥有他们自己的全局资源; Chroot Chroot 可以将进程及其子进程与操作系统的其余部分隔离开来。但是,对于 root process ,却可以任意退出 chroot。 现代化容器技术带来的优势 轻量级,基于 Linux 内核所提供的 cgroup 和 namespace 能力,创建容器的成本很低; 一定的隔离性; 标准化,通过使用容器镜像的方式进行应用程序的打包和分发,可以屏蔽掉因为环境不一致带来的诸多问题; DevOps 支撑 (可以在不同环境,如开发、测试和生产等环境之间轻松迁移应用,同时还可保留应用的全部功能); cgroup Linux control groups cgroup 是 Linux 内核的一个功能,用来限制、控制与分离一个进程组的资源 (如CPU、内存、磁盘输入输出等)。它是由 Google 的两位工程师进行开发的,自 2018 年 1 月正式发布的 Linux 内核 v2.6.24 开始提供此能力。 cgroup 主要限制的资源是: CPU 内存 网络 磁盘 I/O cgroup 的组成 cgroup 代表“控制组”,并且不会使用大写。cgroup 是一种分层组织进程的机制, 沿层次结构以受控的方式分配系统资源。我们通常使用单数形式用于指定整个特征,也用作限定符如 “cgroup controller” 。 cgroup 主要有两个组成部分: core - 负责分层组织过程; controller - 通常负责沿层次结构分配特定类型的系统资源。每个 cgroup 都有一个 cgroup.controllers 文件,其中列出了所有可供 cgroup 启用的控制器。当在 cgroup.subtree_control 中指定多个控制器时,要么全部成功,要么全部失败。在同一个控制器上指定多项操作,那么只有最后一个生效。每个 cgroup 的控制器销毁是异步的,在引用时同样也有着延迟引用的问题; ...

2011-10-13 · 1 min · 87 words · -