python-高级编程-06-长连接&连接池

我们都知道tcp是基于连接的协议,其实这个连接只是一个逻辑上面的概念,在ip层来看,tcp和udp仅仅是内容上稍有差别而已。

tcp 的连接仅仅是连接两端对于四元组和sequence号的一种约定而已

四元组:源IP 目的IP 源端 目的端口

五元组 :源IP 目的IP 源端 目的端口 协议

七元祖:源IP 目的IP 源端 目的端口 协议 服务类型 接口索引

在性能比较敏感的程序中,为了节省TCP网络调用建立连接三次握手的时间,很多程序都会采用复用之前已经建立过的连接方式来优化

在加上往往是  “请求 响应 请求 响应”的模式 单个连接限制了QPS的提升 所以会采取开启多个连接组 组成一个'池子'的方式来优化性能,

我们称之为"连接池“

http的长连接

  及http持久连接,也称作 http keep-alive 是使用同一个TCP连接来发送和接受多个HTTP请求/应答,而不是为每一个新的请求都新建一个连接

如果浏览器支持keep-alive 它会在包头连接

Connection:Keep-Alive

当服务器收到请求,做出回应的时候 它也会在添加这个到响应中 

这样做的话 连接就不会中断,而是保持连接 当客户端发送另一个请求,它会使用同一个连接 这样持续到客户端或服务器端认为回话结束,其中一方断开

在HTTP 1.1 中所有的连接默认都是持续连接,除非特殊声明不支持。http持久连接不使用独立的keepalive信息 而是仅仅允许多个请求使用单个连接、

然而 Apache2.0 httpd的默认连接过期时间是仅仅的15s 对于Apache 2.2 只要5s 短过期时间的优先是能够快速的传输多个web页最贱

而不会绑定多个服务器进程或线程太长时间。

keep-alive

 *较少的cpu和内存

 *允许请求和应答的HTTP管线化

 * 减少了后续请求的延迟(无需再进行握手)

 * 报告错误无需关闭tcp连接

对于现在的广泛普及的带宽连接来说 keep-Alive也许并不像以前一样有用,web服务器会保持若干秒的连接

这与提高的性能相比也许会影响性能,对于单个文件被不断请求的服务(如静态文件网站)keep-alive可能会极大的

影响性能,因为它在文件被请求的之后还保持了不必要的连接很长时间

根据RFC2616 用户客户端与任何服务器和代理服务器之间不应该维持超过2个连接,代理服务器应该最多是用2*N个持久连接打其他服务器,

或者代理服务器。其中N是同事活跃的用户数。

这个旨在提高http响应时间并且避免阻塞

但由于tcp连接减少了 对于静态资源较多的网站 性能反而可能会下降。

动静分离-- 

为了规避上面说的对图片等静态资源的影响,大多数商业网站会启用独立的静态资源域名。

从而保证主站的动态资源请求和静态资源请求不会相互拥挤占用资源、

而且还会有个一个额外的好吃

  对于静态资源的请求,HTTP请求头里的Cookie等信息是没有用处的。反而占用了宝贵的上行网络资源,用独立的域名存放静态资源后,请求

静态资源域名就不会默认带上主站网的cookie。从而解决了这个问题。

                                                                                                                                                                                                                                             

转载于:https://www.cnblogs.com/nerdlerss/p/7435158.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你好!如果你想统计一段文字中每个单词出现的次数并按照出现次数排序,可以按照以下步骤进行操作: 1. 将文本中的标点符号、空格、换行等字符去除,只保留单词。可以使用正则表达式或字符串的方法来实现。 2. 将每个单词作为字典的key,出现次数作为value,建立一个空字典。 3. 遍历文本中的每个单词,如果这个单词已经在字典中出现过,将对应的value值加1;否则将这个单词加入字典中,value值为1。 4. 使用Python中的内置函数sorted()对字典按照value值进行排序。 5. 遍历排序后的字典,输出每个单词及其出现次数。 下面是一个简单的Python代码示例: ``` import re text = "Hello world, hello python, hello java, hello world." word_dict = {} # 去除标点符号和空格,只保留单词 words = re.findall(r'\b\w+\b', text) # 遍历单词列表,统计每个单词出现的次数 for word in words: if word in word_dict: word_dict[word] += 1 else: word_dict[word] = 1 # 对字典按照value值进行排序 sorted_dict = sorted(word_dict.items(), key=lambda x: x[1], reverse=True) # 遍历排序后的字典,输出每个单词及其出现次数 for item in sorted_dict: print(item[0], item[1]) ``` 输出结果如下: ``` hello 4 world 2 python 1 java 1 ``` ### 回答2: JMU-Java是什么 JMU-Java是一种 Java 程序开发框架,是 James Madison University 的计算机科学系开发的,旨在为 Java 程序开发人员提供高效、便捷的开发工具。JMU-Java 集成了多种 Java 技术,如 JSP、Servlet、Struts、Hibernate、Spring 等,为开发人员提供了丰富的功能和易于扩展的平台。 JMU-Java 的特点 1.易用性 JMU-Java 注重易用性,提供了简单、直观的开发接口,让开发人员能够快速上手,高效开发。 2. 高效性 JMU-Java 提供了多种高效的技术组合,如缓存技术、数据库连接池技术等,可以大大提高程序的运行效率。 3.可扩展性 JMU-Java 可以轻松实现插件化扩展,开发人员可以为 JMU-Java 扩展自己的应用模块,增强 JMU-Java 的功能和灵活性。 4.安全性 JMU-Java 提供了严密的安全机制,保障了应用程序的安全性。 JMU-Java 的应用 JMU-Java 可以广泛应用于 Web 应用开发、企业级应用开发、物联网、大数据等领域。例如,在 Web 应用开发领域, JMU-Java 可以实现 Web 应用程序的快速开发和部署,提供了丰富的 Web 开发特性,如表单处理、会话管理、文件上传、邮件发送等。 总之,JMU-Java 作为一种高效、安全、易扩展的 Java 程序开发框架,为 Java 程序开发人员提供了便捷、高效的开发环境。 ### 回答3: JMU-Java,指的是James Madison University (JMU)的Java课程。JMU是一所位于美国弗吉尼亚州的公立研究型大学,该校设有计算机科学系,在教授编程语言方面拥有雄厚的师资和丰富的教学资源。其中Java是计算机科学系开设的一门主要课程之一。教授这门课程的教师们十分专业,深入浅出地教授Java编程的基础和进阶知识,帮助学生掌握Java编程的核心概念和技能。 JMU-Java的教学内容包括Java编程语言的基础知识、变量、数组、方法、面向对象编程、异常处理、输入输出流、网络编程等方面的知识。学生通过学习这门课程能够掌握Java编程的基本原理和方法,能够使用Java编写简单的控制台程序、图形用户界面程序和网络应用程序等。 JMU-Java的教学目的是为了培养学生的编程思维和编程能力,提高学生的计算机编程技能,拓展学生的计算机科学知识。通过系统学习Java编程,学生将能够更好地理解计算机的工作原理和程序设计的基本思想,掌握解决实际问题的编程方法,增强自己的逻辑思维和创新意识。 总之,JMU-Java是一门极具实用价值的Java编程课程,通过学习这门课程,学生将能够掌握Java编程的基础知识和高级技巧,为自己将来的职业发展奠定坚实的基础。同时,学生也将能够更好地理解计算机科学及其应用领域的相关知识,在未来的工作和学习中更加游刃有余。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值