自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(776)
  • 资源 (46)
  • 收藏
  • 关注

原创 Spring基础(1):两个概念

上帝说,要有光。于是特斯拉搞出了交流电。Java说,万物皆对象。但是Spring另外搞了BeanDefinition...什么BeanDefinition呢?其实它是bean定义的一个顶级接口:正如BeanDefinition接口的注释所言:一个BeanDefinition是用来描述一个bean实例的哎呀卧槽,啥玩意啊。描述一个bean实例?我咋想起了Class类呢。其实,两者并没有矛盾。

2023-11-06 14:06:20 262 1

原创 (一)Spring源码解析:容器的基本实现

是整个bean加载的核心部分,是Spring注册及加载bean的默认实现。集成自DefaultListableBeanFactory,不同的地方是在XmlBeanFactory中使用了自定义的XML读取器,实现了个性化的BeanDefinitionReader读取。

2023-11-06 10:14:58 101

原创 再见,curder!

大家好,我是不耍嘴皮子,只讲java底层源码课的码炫课堂创始人码哥,全网唯一讲解及手写各大框架及中间件源码的极客,上班之余做源码课只是我的爱好,拯救水深火热中的curder屌丝们才是我的使命!众所周知,2022年毕业生已达1076万人,不管你是应届的或者非应届,此时此刻这就是与你竞争的庞大人群,请问你的优势在哪里?北大博士去当城管,清大硕士去三,四线城市街道办,人都已经被逼到这个份儿上了。。。有人说你又在贩卖焦虑了,其实我本无意贩卖焦虑,但是焦虑又是客观存在的,难到我不贩卖焦虑你就不焦虑了吗?在这个人均焦虑

2022-06-17 09:42:53 64

原创 说volatile和MESI协议没有关系的水货们请闭嘴吧

一直很想说这个问题,垃圾培训机构已经把韭菜们带偏了,网上千篇一律的说volatile和MESI协议没有关系,那究竟有没有关系呢??坐好认真听!1、缓存一致性问题  由于存储设备与处理器的运算速度差距很大,计算机系统在内存与处理器之间增加了一层高速缓存,将运算需要的数据复制到缓存中,让运算能快速进行。          有了高速缓存的存在以后,每个CPU的处理过程是, 先将计算需要用到的数据缓存在CPU高速缓存中,在CPU 进行计算时,直接从高速缓存中读取数据并且在计算完成 之后写入到缓存

2022-03-19 22:02:47 2256 7

原创 3位1体学习法(smart哥)

3位1体学习法(码农最正确的学习姿势)文章目录3位1体学习法(码农最正确的学习姿势)前言讲师介绍何为3位1体打法?1、第1位2、第2位3、第3位结语前言3位1体这个概念来源于刘慈欣的科幻小说《三体》,smart哥本人非常喜欢这部小说,感叹作者作为一个技术狂,他这种技术狂特有的冷酷具有非凡的吸引力,更关键的是他天马行空的想象。基于这个概念smart哥独创了3位1体的码农学习法,该学习法是码农在浩瀚的技术海洋中的指南针,面对浩瀚的技术和自己有限的职业生涯,那么码农如何自处?35岁后被淘汰还是继续保持优良

2020-07-10 07:56:07 6591 1

原创 springboot-2.3.x最新版源码阅读环境搭建-基于gradle构建(全网首发)

springboot-2.3.x最新版源码阅读环境搭建-基于gradle构建(全网首发)文章目录springboot-2.3.x最新版源码阅读环境搭建-基于gradle构建(全网首发)一、前言二、环境准备三、下载源码四、开始构建五、源码测试六、问题及解决方案结语码炫课堂技术交流q群:963060292一、前言跟很多小伙伴聊天,发现一个严重的问题,很多小伙伴横向发展的貌似很不错,很多技术都能说出一二,但是如果在某个技术上深挖一下就不行了,问啥啥不会。就拿springboot来说,很多同学止步于spri

2020-07-09 09:15:09 14948 5

原创 spring5.3.x源码阅读环境搭建

spring5.3.x源码阅读环境搭建-gradle构建编译文章目录spring5.3.x源码阅读环境搭建-gradle构建编译一、依赖工具二、下载源码三、开始构建四、编译源码五、源码测试六、问题及解决方案附:spring源代码各个模块作用结语码炫课堂技术交流q群:963060292Spring系列生态十分丰富,涉及到各个方面。但是作为Spring生态的核心基础Spring,是最重要的环节,需要理解Spring的设计原理,就需要深度研读Spring源码。本文着重阐述当前最新版spring5.3.x的

2020-07-08 10:31:30 12561 7

原创 CLion调试redis6源码(全网首发)

CLion调试redis6源码(全网首发)文章目录CLion调试redis6源码(全网首发)背景一、安装配置cygwin二、安装clion三、clion中导入redis源码四、修改CMakeLists.txt文件五、编译&调试redis6源码六、注意点背景clion使用cmake来管理编译redis源码,而redis源码本身使用原生的make,因此直接将redis源码导入clion无法直接运行,需要配置cmake。写c程序大体步骤为:1).用编辑器编写源代码,如.c文件。2).用编译器编

2020-06-30 10:20:21 10725 4

原创 【面试题】研究过tomcat的NioEndpoint源码吗?请阐述下Reactor多线程模型在tomcat中的实现。

tomcat的底层网络NIO通信基于主从Reactor多线程模型。它有三大线程组分别用于处理不同的逻辑:Acceptor线程:等待和接收客户端连接。在接收到连接后,创建SocketChannel并将其注册到poller线程。poller线程:将SocketChannel放到selector上注册读事件,轮询selector,获取就绪的SelectionKey,并将就绪的SelectionKey(或SocketChannel)委托给工作线程。工作线程:执行真正的业务逻辑。备注:Accep...

2020-06-07 12:16:01 6288

原创 tomcat堆栈中10大常见线程详解

Tomcat作为一个服务器来讲,必然运行着很多的线程,而每一个线程究竟是干什么的,这个需要非常的清楚,无论是打印断点,还是通过jstack进行线程栈分析,这都是必须要掌握的技能。 本文带你基于Tomcat7,8,9的版本,识别Tomcat堆栈中的线程。1、main线程main线程是tomcat的主要线程,其主要作用是通过启动包来对容器进行点火:main线程一路启动了Catalina,StandardServer[8005],StandardService[Catalina],Standar.

2020-06-06 20:08:21 9972

原创 老大说了,再用lombok就给我收拾东西走人!

我承认,Lombok是一个很不错的Java库,它可以让你在少写代码的同时耍耍酷,简单的几个注解,就可以干掉一大片模板代码。但是,所有的源代码很多时候是用来阅读的,只有很少的时间是用来执行的(你可以细品这句话)。一年以前,我和大多数人都认为Lombok的出现会让Java的编码体验会更好,并极力的在我的团队中推荐使用Lombok。一年以后,我开始对此产生顾虑,尤其是在我准备为开源的博客系统Una-Boot升级Java版本时,我才意识到Lombok自己掉入了一个戏法陷阱。在我进一步分析其源代码并理解相关注解的

2020-06-06 18:11:09 624 1

原创 阿里《Java开发手册》中的 1 个bug!

本来打算写一篇《阿里巴巴为什么不允许日志输出时,使用字符串拼接?》的文章,主要是想从性能方面来说此问题,可在文章写到一半进行性能测试时,却发现了一个异常问题,实际测试的结果和手册上描述的结果是截然相反的!天撸了,怎么会发生这种事情?此时我的内心是拒绝的,因为文章已经写了一半了啊,这让我瞬间陷入了尴尬的境地。阿里巴巴的《Java开发手册》泰山版(最新版)是这样描述的,它在第二章第三小节的第 4 条规范中指出:【强制】在日志输出时,字符串变量之间的拼接使用占位符的方式。说明:因为 String

2020-06-06 16:21:07 461

原创 【悟思维】项目架构决定性能?优秀的架构胜过一万次的调优

这个问题很容易理解,一个单节点(一台应用服务器+一台数据库服务器)的系统架构,任凭你使出浑身解数来调优也不可能让系统达到百万级并发,别说百万级了,上万并发都不可能。不说其他的,在一个性能相对不错的物理机上,mysql最多也就能承载3500-4500的QPS,你说你能调优调到上万并发??在目前来看如果不借助于其他组件或者其他技术手段是不太可能的。首先大家要明白一个最底层的逻辑,所有的性能问题归根结底绝大多数都是要解决IO的读写性能问题。我们在线程模型上面孜孜不倦的追求,从BIO到NIO,再到react

2020-06-05 20:03:24 870 1

原创 【学心法】如何从源码角度体会作者的设计思想?

我们在做项目时候一般会遇到下面的问题:问题一是不知道如何去设计,比如刚入职场时,来一个需求需做概要设计,不知如何下手,不得不去看当前系统类似需求是如何设计的,然后仿照去设计。 问题二是设计的时候,考虑问题不周全,相比职场新手,这类人对一个需求依靠自己的经验已经能够拿出一个概要设计,但是设计中经常会遗漏一些异常细节,比如使用多线程有界队列执行任务,遇到机器宕机了,如果队列里面的任务不存盘的话,那么机器下次启动时候这些任务就丢失了。对于这些问题,说到底主要是因为经验不够,而经验主要从项目实践中积累,所以

2020-06-05 12:50:58 1502

原创 老大说了,即使你是女程序员,这性能调优你也得拿下!

【悟思维】项目架构决定性能?优秀的架构胜过一万次的调优这个问题很容易理解,一个单节点(一台应用服务器+一台数据库服务器)的系统架构,任凭你使出浑身解数来调优也不可能让系统达到百万级并发,别说百万级了,上万并发都不可能。不说其他的,在一个性能相对不错的物理机上,mysql最多也就能承载3500-4500的QPS,你说你能调优调到上万并发??在目前来看如果不借助于其他组件或者其他技术手段是不太可能的。首先大家要明白一个最底层的逻辑,所有的性能问题归根结底绝大多数都是要解决IO的读写性能问题。我们在线

2020-06-04 19:38:50 242

原创 【练技术】如何通过精研线程模型,cpu调度,内存模型等性能优化核心?

性能优化无非就是线程,cpu调度,以及内存之间的配合,这三者中任何一个达到极限,都会造成系统整体性能下降,甚至瘫痪。线程必然要由cpu调度才能活动起来,那么线程的活动也必须有自己的地盘,那么这个地盘就是内存区域。线程数越多,需要cpu的调度能力越强,需要的内存也就越大,那么线程不可能无限增大,总有个极限,当到达极限之后,系统性能将呈现抛物线形的状态急转往下。所以我们必须不能让cpu等资源达到这个极限值,一般在85%左右就可以了。intel的工程师曾今说过,我们为什么要让cpu达到100%的性能呢,能

2020-06-04 18:46:20 942

原创 多方面,全访问的剖析Tomcat十大线程和四大通道

tomcat服务器在JavaEE项目中使用率非常高,所以在生产环境对tomcat的优化也变得非常重要了。本专题课在调优压测时我们选择tomcat9,那我们为什么选择9版本呢?因为9的性能更高,更稳定。在源码研究演示过程中我会选择tomcat7,8,9三套源码进行比较演示性能的差异。一、Tomcat配置优化对于tomcat的优化,主要是从2个方面入手,一是,tomcat自身的配置,另一个是tomcat所运行的jvm虚拟机的调优。1、部署安装tomcat91、下载并安装:https:/.

2020-06-03 14:31:19 3434

原创 tcp_tw_reuse 为什么默认是关闭的?

TCP 四次挥手过程,如下图:图片客户端打算关闭连接,此时会发送一个 TCP 首部FIN标志位被置为1的报文,也即FIN报文,之后客户端进入FIN_WAIT_1状态。服务端收到该报文后,就向客户端发送ACK应答报文,接着服务端进入状态。客户端收到服务端的ACK应答报文后,之后进入FIN_WAIT_2状态。等待服务端处理完数据后,也向客户端发送FIN报文,之后服务端进入LAST_ACK状态。客户端收到服务端的FIN报文后,回一个ACK应答报文,之后进入TIME_WAIT状态服务器收到了。

2024-05-23 20:19:16 202

原创 拔掉网线后, 原本的 TCP 连接还存在吗?

客户端拔掉网线后,并不会直接影响 TCP 连接状态。所以,拔掉网线后,TCP 连接是否还会存在,关键要看拔掉网线之后,有没有进行数据传输。在客户端拔掉网线后,如果服务端发送了数据报文,那么在服务端重传次数没有达到最大值之前,客户端就插回了网线,那么双方原本的 TCP 连接还是能正常存在,就好像什么事情都没有发生。在客户端拔掉网线后,如果服务端发送了数据报文,在客户端插回网线之前,服务端重传次数达到了最大值时,服务端就会断开 TCP 连接。

2024-05-23 20:14:21 312

原创 TCP 连接,一端断电和进程崩溃有什么区别?

如果「客户端进程崩溃」,客户端的进程在发生崩溃的时候,内核会发送 FIN 报文,与服务端进行四次挥手。但是,「客户端主机宕机」,那么是不会发生四次挥手的,具体后续会发生什么?还要看服务端会不会发送数据?如果服务端会发送数据,由于客户端已经不存在,收不到数据报文的响应报文,服务端的数据报文会超时重传,当重传总间隔时长达到一定阈值(内核会根据 tcp_retries2 设置的值计算出一个阈值)后,会断开 TCP 连接;如果服务端一直不会发送数据,再看服务端有没有开启 TCP keepalive 机制?

2024-05-23 07:59:46 761

原创 在 TIME_WAIT 状态的 TCP 连接,收到 SYN 后会发生什么?

在 TCP 正常挥手过程中,处于 TIME_WAIT 状态的连接,收到相同四元组的 SYN 后会发生什么?如果客户端的 SYN 的「序列号」比服务端「期望下一个收到的序列号」要大并且SYN 的「时间戳」比服务端「最后收到的报文的时间戳」要大。那么就会重用该四元组连接,跳过 2MSL 而转变为 SYN_RECV 状态,接着就能进行建立连接过程。如果客户端的 SYN 的「序列号」比服务端「期望下一个收到的序列号」要小或者SYN 的「时间戳」比服务端「最后收到的报文的时间戳」要小。那么就会。

2024-05-23 07:53:57 632

原创 四次挥手中收到乱序的 FIN 包会如何处理?

不得不说,鹅厂真的很喜欢问网络问题,而且爱问异常情况下的网络问题不过这道鹅厂的网络题可能是提问的读者表述有问题,。因此,我们要关注到点是看「我也画了一张图,大家可以结合着图来理解。

2024-05-23 07:49:53 630

原创 已建立连接的TCP,收到SYN会发生什么?

要伪造一个能关闭 TCP 连接的 RST 报文,必须同时满足「四元组相同」和「序列号是对方期望的」这两个条件。今天给大家介绍了两种关闭 TCP 连接的工具:tcpkill 和 killcx 工具。这两种工具都是通过伪造 RST 报文来关闭 TCP 连接的,但是它们获取「对方下一次期望收到的序列号的方式是不同的,也正因此,造就了这两个工具的应用场景有区别。

2024-05-22 10:01:24 995

原创 SYN 报文什么时候情况下会被丢弃?

作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!之前有个读者在秋招面试的时候,被问了这么一个问题:SYN 报文什么时候情况下会被丢弃?好家伙,现在面试都问那么细节了吗?

2024-05-22 09:55:27 574

原创 为什么 TCP 每次建立连接时,初始化序列号都要不一样呢?

使用时间戳选项能够有效的防止上述问题,如果丢失的报文会在时刻 F 重新出现,由于它的时间戳为 2,小于最近的有效时间戳(5 或 6),因此防回绕序列号算法(PAWS)会将其丢弃。懂了,客户端和服务端的初始化序列号都是随机生成,能很大程度上避免历史报文被下一个相同四元组的连接接收,然后又引入时间戳的机制,从而完全避免了历史报文被接收的问题。相反,如果每次建立连接客户端和服务端的初始化序列号都「一样」,就有大概率遇到历史报文的序列号刚「好在」对方的接收窗口内,从而导致历史报文被新连接成功接收。

2024-05-21 09:57:52 800

原创 如何理解是 TCP 面向字节流协议?

我们可以自定义一个消息结构,由包头和数据组成,其中包头包是固定大小的,而且包头里有一个字段来说明紧随其后的数据有多大。比如这个消息结构体,首先 4 个字节大小的变量来表示数据长度,真正的数据则在后面。当接收方接收到包头的大小(比如 4 个字节)后,就解析包头的内容,于是就可以知道数据的长度,然后接下来就继续读取数据,直到读满数据的长度,就可以组装成一个完整到用户消息来处理了。

2024-05-21 09:55:54 847

原创 如何优化 TCP?

当进程调用了。

2024-05-21 09:51:58 794

原创 TCP 半连接队列和全连接队列

半连接队列,也称 SYN 队列;全连接队列,也称 accept 队列;服务端收到客户端发起的 SYN 请求后,内核会把该连接存储到半连接队列,并向客户端响应 SYN+ACK,接着客户端会返回 ACK,服务端收到第三次握手的 ACK 后,内核会把连接从半连接队列移除,然后创建新的完全的连接,并将其添加到 accept 队列,等待进程调用 accept 函数时把连接取出来。不管是半连接队列还是全连接队列,都有最大长度限制,超过限制时,内核会直接丢弃,或返回 RST 包。

2024-05-21 09:41:59 775

原创 TCP 实战抓包分析

作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!为了让大家更容易「看得见」 TCP,我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包。接下来丢包、乱序、超时重传、快速重传、选择性确认、流量控制等等 TCP 的特性,都能「一览无余」。没错,我把 TCP 的"衣服扒光"了,就为了给大家看的清楚,嘻嘻。

2024-05-20 19:12:35 863

原创 TCP 重传、滑动窗口、流量控制、拥塞控制

作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!TCP,它为了保证可靠性,用了巨多的机制来保证,真是个「伟大」的协议,写着写着发现这水太深了。。。本文的全部图片都是小林绘画的,非常的辛苦且累,不废话了,直接进入正文,Go!相信大家都知道 TCP 是一个可靠传输的协议,那它是如何保证可靠的呢?

2024-05-20 19:00:44 854

原创 TCP 三次握手与四次挥手面试题

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统「分组」成多个的 TCP 报文,如果接收方的程序如果不知道「消息的边界」,是无法读出一个有效的用户消息的。

2024-05-20 14:25:45 851

原创 既然有 HTTP 协议,为什么还要有 WebSocket?

TCP 协议本身是全双工的,但我们最常用的 HTTP/1.1,虽然是基于 TCP 的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的 WebSocket 协议。在 HTTP/1.1 里,只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用 WebSocket 协议。

2024-05-20 08:47:36 629

原创 既然有 HTTP 协议,为什么还要有 RPC?

纯裸 TCP 是能收发数据,但它是个无边界的数据流,上层需要定义消息格式用于定义消息边界。于是就有了各种协议,HTTP 和各类 RPC 协议就是在 TCP 之上定义的应用层协议。RPC 本质上不算是协议,而是一种调用方式,而像 gRPC 和 Thrift 这样的具体实现,才是协议,它们是实现了 RPC 调用的协议。目的是希望程序员能像调用本地方法那样去调用远端的服务方法。同时 RPC 有很多种实现方式,不一定非得基于 TCP 协议。从发展历史来说,

2024-05-20 08:43:30 928

原创 HTTP/3 强势来袭

队头阻塞,HTTP/2 多个请求跑在一个 TCP 连接中,如果序列号较低的 TCP 段在网络传输中丢失了,即使序列号较高的 TCP 段已经被接收了,应用层也无法从内核中读取到这部分数据,从 HTTP 视角看,就是多个请求被阻塞了;TCP 和 TLS 握手时延,TCP 三次握手和 TLS 四次握手,共有 3-RTT 的时延;连接迁移需要重新连接。

2024-05-20 08:39:56 717

原创 HTTP/2 牛逼在哪?

HTTP/2 协议其实还有很多内容,比如流控制、流状态、依赖关系等等。这次主要介绍了关于 HTTP/2 是如何提升性能的几个方向,它相比 HTTP/1 大大提高了传输效率、吞吐能力。第一点,对于常见的 HTTP 头部通过静态表和 Huffman 编码的方式,将体积压缩了近一半,而且针对后续的请求头部,还可以建立动态表,将体积压缩近 90%,大大提高了编码效率,同时节约了带宽资源。

2024-05-19 18:28:26 847

原创 HTTPS 如何优化?

对于硬件优化的方向,因为 HTTPS 是属于计算密集型,应该选择计算力更强的 CPU,而且最好选择支持 AES-NI 特性的 CPU,这个特性可以在硬件级别优化 AES 对称加密算法,加快应用数据的加解密。对于软件优化的方向,如果可以,把软件升级成较新的版本,比如将 Linux 内核 2.X 升级成 4.X,将 openssl 1.0.1 升级到 1.1.1,因为新版本的软件不仅会提供新的特性,而且还会修复老版本的问题。密钥交换算法应该选择ECDHE 算法。

2024-05-19 18:18:45 886

原创 HTTPS ECDHE 握手解析

RSA 密钥协商算法「不支持」前向保密,ECDHE 密钥协商算法「支持」前向保密;使用了 RSA 密钥协商算法,TLS 完成四次握手后,才能进行应用数据传输,而对于 ECDHE 算法,客户端可以不用等服务端的最后一次 TLS 握手,就可以提前发出加密的 HTTP 数据,节省了一个消息的往返时间(这个是 RFC 文档规定的,具体原因文档没有说明,所以这点我也不太明白);

2024-05-19 18:14:27 837

原创 HTTPS RSA 握手解析

, 一般 WITH 单词前面有两个单词,第一个单词是约定密钥交换的算法,第二个单词是约定证书的验证算法。

2024-05-19 11:34:05 864

原创 HTTP/1.1 如何优化?

这次主要从 3 个方面介绍了优化 HTTP/1.1 协议的思路。第一个思路是,通过缓存技术来避免发送 HTTP 请求。客户端收到第一个请求的响应后,可以将其缓存在本地磁盘,下次请求的时候,如果缓存没过期,就直接读取本地缓存的响应数据。如果缓存过期,客户端发送请求的时候带上响应数据的摘要,服务器比对后发现资源没有变化,就发出不带包体的 304 响应,告诉客户端缓存的响应仍然有效。将原本由客户端处理的重定向请求,交给代理服务器处理,这样可以减少重定向请求的次数;

2024-05-19 11:18:06 889

原创 HTTP 常见面试题

强缓存指的是只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边。如下图中,返回的是 200 状态码,但在 size 项中标识的是 from disk cache,就是使用了强制缓存。, 是一个相对时间;Expires,是一个绝对时间;如果 HTTP 响应头部同时有 Cache-Control 和 Expires 字段的话,Cache-Control 的优先级高于 Expires。

2024-05-19 11:10:25 804

使用HttpUnit进行集成测试使用HttpUnit进行集成测试

使用HttpUnit进行集成测试使用HttpUnit进行集成测试使用HttpUnit进行集成测试使用HttpUnit进行集成测试

2010-09-19

UML软件工程组织UML软件工程组织

UML软件工程组织UML软件工程组织UML软件工程组织UML软件工程组织

2010-09-19

深入浅出单元测试 深入浅出单元测试

深入浅出单元测试深入浅出单元测试深入浅出单元测试

2010-09-19

相关struts2.jar

相关jar,学习struts2必备,可以结合spring一起学习可以得到良好的效果。

2010-09-13

Eclipse插件开发系列.pdf

Eclipse插件开发系列.pdfEclipse插件开发系列.pdfEclipse插件开发系列.pdfEclipse插件开发系列.pdfEclipse插件开发系列.pdf

2009-12-16

Java路径问题最终解决方案(转) - lily的日志 - 网易博客.mht

Java路径问题最终解决方案(转) - lily的日志 - 网易博客.mhtJava路径问题最终解决方案(转) - lily的日志 - 网易博客.mhtJava路径问题最终解决方案(转) - lily的日志 - 网易博客.mht

2009-12-16

Oracle18个详细实验.pdf

Oracle18个详细实验.pdfOracle18个详细实验.pdfOracle18个详细实验.pdfOracle18个详细实验.pdfOracle18个详细实验.pdf

2009-12-16

oraceldaydba\Oracel 10g XE 2 Day DBA.pdf

技术资料\Oracle 技术资料\oraceldaydba

2009-10-20

weblogicweblogicweblogic

weblogicweblogicweblogic

2009-09-24

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

java编程规范

一本关于 java编程规范

2007-12-20

精通Oracle.10g.Pl.SQL编程.pdf

精通Oracle.10g.Pl.SQL编程.pdf精通Oracle.10g.Pl.SQL编程.pdf精通Oracle.10g.Pl.SQL编程.pdf

2010-09-29

Ant教程Ant教程Ant教程Ant教程

Ant教程Ant教程Ant教程Ant教程Ant教程Ant教程Ant教程

2010-09-25

javacc-5.0.zipjavacc-5.0.zip

javacc-5.0.zipjavacc-5.0.zipjavacc-5.0.zipjavacc-5.0.zip

2010-09-21

ORBStudio777.zipORBStudio777.zip

ORBStudio777.zipORBStudio777.zipORBStudio777.zipORBStudio777.zip

2010-09-21

CORBA.rarCORBA.rarCORBA.rar

CORBA.rarCORBA.rarCORBA.rarCORBA.rarCORBA.rarCORBA.rarCORBA.rarCORBA.rarCORBA.rarCORBA.rar

2010-09-21

java单元测试.rar

java单元测试.rarjava单元测试.rarjava单元测试.rar

2010-09-17

junit.jarjunit.jarjunit.jar

junit.jarjunit.jarjunit.jar

2010-09-17

jude.zipjude.zip

jude.zipjude.zipjude.zipjude.zip

2010-09-17

er模型.rarer模型.rar

er模型.rarer模型.rarer模型.rarer模型.rarer模型.rar

2010-09-17

中国移动通信集团公司华为局数据规范(SGSN分册初稿).doc

中国移动通信集团公司华为局数据规范(SGSN分册初稿).doc

2010-09-17

myeclipse优化.rarmyeclipse优化.rar

myeclipse优化.rarmyeclipse优化.rarmyeclipse优化.rar

2010-09-17

Eclipse快捷键.txt

Eclipse快捷键.txtEclipse快捷键.txtEclipse快捷键.txt

2010-09-17

JUnit&Ant JUnit&Ant

JUnit&AntJUnit&AntJUnit&Ant

2010-09-17

spring精华spring精华

spring精华spring精华spring精华spring精华

2010-09-17

prj一个半成品项目

一个半成品项目一个半成品项目一个半成品项目一个半成品项目

2010-09-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除