TCP-模拟BS架构通信

news/2024/5/19 0:05:22

简介

  • bs是通过浏览器进行访问的
  • 每次访问都会开启一个短期的socket用来访问服务器的资源

在这里插入图片描述

响应报文的格式

在这里插入图片描述

服务端

bs架构中的b是浏览器,不需要我们书写,我们只需要书写服务端即可

服务端

public class Server {public static void main(String[] args) {System.out.println("服务启动成功!");//1. 创建一个ServerSocket对象ServerSocket serverSocket = null;try {serverSocket = new ServerSocket(8888);//2. 服务端一直处于监听状态,等待客户端的连接while (true) {//accept()方法是一个阻塞方法,会一直等待客户端的连接new ServerReaderThread(serverSocket.accept()).start();System.out.println("有新的客户端连接上来了!");}} catch (Exception e) {e.printStackTrace();}}
}

服务端读取线程

public class ServerReaderThread extends Thread {private Socket socket;public ServerReaderThread(Socket socket) {this.socket = socket;}@Overridepublic void run() {try (OutputStream outputStream = socket.getOutputStream();// 打印流更容易打印数据PrintStream printStream = new PrintStream(outputStream);) {while (true) {printStream.println("HTTP/1.1 200 OK");printStream.println("Content-Type: text/html; charset=utf-8");// 必须要有空行printStream.println();printStream.println("<h1>hello world</h1>");socket.close(); // 关闭socket}} catch (Exception e) {e.printStackTrace();}}
}

使用线程池优化一下

  • 如果有一万个请求,那就有一万个线程,服务器绝壁挂机
  • 使用线程池优化一下

在这里插入图片描述

服务器端

public class Server {public static void main(String[] args) {System.out.println("服务启动成功!");//1. 创建一个ServerSocket对象ServerSocket serverSocket = null;// 创建一个线程池ThreadPoolExecutor pool = new ThreadPoolExecutor(8 + 1, 8 * 2, 10, TimeUnit.SECONDS,new ArrayBlockingQueue<>(8), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());try {serverSocket = new ServerSocket(8888);//2. 服务端一直处于监听状态,等待客户端的连接while (true) {//accept()方法是一个阻塞方法,会一直等待客户端的连接pool.execute(new ServerReaderThread(serverSocket.accept()));System.out.println("有新的客户端连接上来了!");}} catch (Exception e) {e.printStackTrace();}}
}

http://www.mrgr.cn/p/62013345

相关文章

pg数据库id是vachar类型,需要按照数字大小排序

pg数据库id是vachar类型,需要按照数字大小排序 select * from table order by id; 直接拿order by id条件排序,会出现1002排在10019后面应该将id转化成int类型再排序,修改结果如下: select * from table order by cast(id,integer);本文来自博客园,作者:lsblk0402,转载请…

Poco框架实操:获取节点属性的高效技巧(一)

上周我们分享了Poco节点的各种关系以及使用场景,那么本周我们来聊一下,如何获取关于节点的更多信息。此文章来源于项目官方公众号:“AirtestProject” 版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途一、前言 上期推文我们介绍了Poco UI树下的节点关系…

高端制造业的经销商文件分发,怎样才能降低管理成本和风险?

对于高端制造业来说,经销商在制造业供应链中扮演着重要的角色,作为制造商与零售商之间的中介,协助制造商将其产品打入市场,扩大产品销售范围。因此制造业生产商与经销商之间存在紧密且频繁的文件传输需求,一个制造业生产商可能要与上百个经销商存在业务往来,经销商文件分…

【炼金术士】BatchSize对网络训练的影响

文章目录 1 BatchSize对于网络训练的影响2 调整学习率可以提高大BatchSize的性能3 实际训练时的建议3.1 设置初始学习率的方法3.2 多卡训练时学习率的设置 参考资料&#xff1a; 【深度学习】Batch Size对神经网络训练的影响【AI不惑境】学习率和batchsize如何影响模型的性能&…

报告!这里发现了一个赛博炼丹的神级平台!

众所周知,“赛博炼丹”是一个AI开发研究领域古老又神秘的活动,它往往对炼丹平台有很高的要求。如果你也是一路从“炼丹小白”成长到“资深AI算法工程师”,那你一定懂我在说什么?说好了,天台见!众所周知,“赛博炼丹”是一个AI开发研究领域古老又神秘的活动,它往往对炼丹…

2024年汽车软件开发状况调查结果出炉:软件研发人员必看

在今年1月底,嵌入式静态分析领域公认的行业领导及先驱Perforce公司联合北汇信息首次诚挚邀请中国汽车软件开发专业人士参加2024年汽车发展行业状况报告的调查。现调查结果报告已新鲜出炉!在全球调查结果中,本次调查来自亚洲的答卷占比39%,其中中国在亚洲内占比46%。如您希望…

大模型必备 - 中文最佳向量模型 acge_text_embedding

近期,上海合合信息科技股份有限公司发布的文本向量化模型 acge_text_embedding 在中文文本向量化领域取得了重大突破,荣获 Massive Text Embedding Benchmark (MTEB) 中文榜单(C-MTEB)第一名的成绩。这一成就标志着该模型将在大模型领域的应用中发挥更加迅速和广泛的影响。…

高端制造企业生产设备文件管理,怎样保证好用不丢失文件?

高端制造业在市场经济中占据重要角色,在高端制造业企业内部,生产设备又是最关键的一环环,它们不仅负责完成生产任务,同时也会产生大量的文件。这些数据反映了设备的运行状态、生产效率、能源消耗以及产品质量等多个方面,因此做好生产设备文件管理至关重要。 设备运行数据…

使用 Meta Llama 3 构建人工智能的未来

使用 Meta Llama 3 构建人工智能的未来 现在提供 8B 和 70B 预训练和指令调整版本,以支持广泛的应用 使用 Meta AI 体验 Llama 3 我们已将 Llama 3 集成到我们的智能助手 Meta AI 中,它扩展了人们完成工作、创造和与 Meta AI 联系的方式。通过使用 Meta AI 进行编码任务和解…

【后端】PyCharm的安装指引与基础配置

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、PyCharm是什么二、PyCharm安装指引安装PyCharm社区版安装PyCharm专业版 三、配置PyCharm&#xff1a;四、总结 前言 随着开发语言及人工智能工具的普及&am…

可视化智慧工厂

在科技迅猛发展的今天&#xff0c;制造业正迎来一场深刻的变革——智慧工厂的崛起。可视化智慧工厂作为其中的重要一环&#xff0c;以其直观、高效、智能的特点&#xff0c;正成为制造业转型升级的关键所在。 一、什么是可视化智慧工厂? 传统的制造业生产方式往往依赖于人工…

机器学习/算法工程师面试题目与答案-数学基础部分

机器学习/算法工程师面试题目--数学基础部分 一、数学基础1、微积分SGD,Momentum,Adagard,Adam原理L1不可导的时候该怎么办sigmoid函数特性 2、统计学&#xff0c;概率论求 Max(a, b) 期望拿更长的玫瑰花的最好策略最大化工作天数的员工数切比雪夫不等式随机截成三段组成三角形…

详细谈电脑ip、域名、内网、外网、localhost、127.0.0.1、网关等通讯基础知识(易懂)

1. ip地址与域名的定义以及其关系 ip地址的定义&#xff1a; IP地址&#xff08;Internet Protocol Address&#xff09;是指互联网协议地址&#xff0c;又译为网际协议地址。 IP地址是IP协议提供的一种统一的地址格式&#xff0c;它为互联网上的每一个网络和每一台主机分配一…

如何查看eclipse版本

进入eclipse文件夹 点击readme 点击readme_eclipse.html 所跳转页面中release后的数字就是eclipse版本了 参考—— https://www.php.cn/faq/420634.html

链式栈————出栈、入栈

链式栈————出栈、入栈以链表作为基础实现栈空间(链式栈) 如果打算实现链式栈,一般是以链表作为基础,一般是把链表头部作为栈顶,方便数据的插入和删除(头插+头删),链式栈相当于是一个单向不循环的链表。链式栈要注意的点:出栈要考虑栈是否为空 入栈要考虑栈中是否有…

半导体晶圆厂内外网数据单向导出,什么样的方案才安全又便捷?

半导体晶圆厂企业为了隔绝外部⽹络有害攻击、保护⽹络和数据安全,通常采⽤物理隔离的⽅式,将企业内⽹与互联⽹隔离。⽹络隔离后,基于业务开展需求,部分重要数据仍需由内⽹导⼊及导出⾄外部⽹络区域。为保障数据的安全合规性,企业需要对⽂件导出导出⾏为进⾏管控。 不少晶圆…

打破国外垄断|暴雨发布纯血国产电脑

要说现在国产手机这边已然进入纯自研模式&#xff0c;但电脑这边却还是仍未打破国外技术垄断。但就在刚刚&#xff0c;暴雨发布自研架构台式机open Station X &#xff0c;这是纯血鸿蒙系统之后国产又一款纯血产品发布&#xff01;标志的我们已经彻底打破西方在硬件及软件方面的…

用斐波那契数列感受算法的神奇(21亿耗时0.2毫秒)

目录 一、回顾斐波那契数列 二、简单递归方法 &#xff08;一&#xff09;解决思路 &#xff08;二&#xff09;代码展示 &#xff08;三&#xff09;性能分析 三、采用递归HashMap缓存 &#xff08;一&#xff09;解决思路 &#xff08;二&#xff09;代码展示 &…

UE5 GAS开发P34 游戏效果理论

GameplayEffects Attributes&#xff08;属性&#xff09;和Gameplay Tags&#xff08;游戏标签&#xff09;分别代表游戏中实体的特性和标识。 Attributes&#xff08;属性&#xff09;&#xff1a;Attributes是用来表示游戏中实体的特性或属性的值&#xff0c;例如生命值、…

docker - [10] 容器数据卷

1、什么是容器数据卷?2、容器数据卷的使用将应用和环境打包成一个镜像,然后发布启动就成为一个容器了。 一、什么是容器数据卷容器数据卷(Container Data Volumes)是Docker管理的一种特殊类型的存储区域,它为容器提供了一种持久化数据、共享数据以及与宿主机或其他容器之…