当前位置: 首页 > news >正文

java网络编程基础-传输层协议TCPUDP

文章目录

    • 一.网络编程基础
    • 二.UDP:无连接无状态的通讯协议
    • 三.TCP:有连接,保证可靠的通讯协议

一.网络编程基础

1.网络和网卡

网络是当前信息技术的第一推动力
每个计算机设备上都有若干个网卡
每个网卡上都有全球唯一的单独的硬件地址,MAC地址

2.IP地址:每个网卡/机器都有一个或多个IP地址

IPV4:192.168.0.100,每段0到255
IPV6:128bit长,分为8段,每段4个16进制数
本机保留IP:127.0.0.1
Windows通过ipconfig查询,Linux/Mac通过ifconfig

3.Port端口,0-65535

0-1023,OS以及占用了,80是Web,23是telent
1024-65535,一般程序可使用(谨防冲突)
两台机器通讯是在IP+Port上进行的
Windows/Linux/Mac通过netstat -an查询

4.公网(万维网/互联网)和内网(局域网)

网络是分层的
最外层是公网/互联网
底下的每层都是内网
IP地址可以在每个层次的网使用
tracert可看当前机器和目标机器的访问中继

5.传输层通讯协议

TCP(Transmission Control Protocol)
传输控制协议,面向连接的协议
两台机器的可靠无差错的数据传输
双向字节流传递
UDP(User Datagram Protocol)
用户数据报协议,面向无连接的协议
不保证可靠的数据传输
速度快,也可以在较差网络环境下使用

6.计算机通讯

数据从一个IP的port出发(发送方),运输到另一个IP的port(接收方)

二.UDP:无连接无状态的通讯协议

1.特性

发送方发消息,如果接收方刚好在目的地,则可以接收,如果不在,那这个消息就丢失了
发送方也无法得知是否发送成功
UDP的好处就是简单,节省,经济

2.思路

通过DatagramSocket建立通讯的数据管道ds
通过DatagramPacket建立数据的集装箱dp
向DatagramPacket中传入消息字节码和消息字节码长度
若为发送方,则传入地址标签:目的地IP+Port
通过InetAddress.getByName(“IP”)传入地址
send方法实现发送和receive方法实现接收
接收方必须早于发起方执行

3.demo:UdpRecv

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class UdpRecv {public static void main(String[] args) throws Exception{//定义管道为本机3000端口DatagramSocket ds=new DatagramSocket(3000);//定义字节数组存放信息byte [] buf=new byte[1024];//定义集装箱,用来封装信息DatagramPacket dp = new DatagramPacket(buf,1024);System.out.println("UdpRecv: 我在等待信息");//等待信息,如果有信息过来,则会封装在dp中//如果没有信息过来,则会造成阻塞ds.receive(dp);System.out.println("UdpRecv: 我接收到信息");//dp.getAddress().getHostAddress()方法获取IP//dp.getPort()方法获取PortString strRecv=new String(dp.getData()) +" from " + dp.getAddress().getHostAddress()+":"+dp.getPort();//打印信息和信息的来源地址System.out.println(strRecv);//线程暂停1sThread.sleep(1000);//设置将要发送的信息String str="hello yh";//定义集装箱,装入dp内容和长度并且贴了目的地//目的地为127.0.0.1:3000//str.getBytes()方法把str类型转化为byte类型//str.length()//地址标签:目的地IP+PortDatagramPacket dp2=new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("127.0.0.1"),dp.getPort());System.out.println("UdpRecv: 我要发送信息");//发送信息ds.send(dp2);System.out.println("UdpRecv: 我发送信息结束");//关闭管道ds.close();}
}

4.demo:UdpSend

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;public class UdpSend {public static void main(String [] args) throws Exception{//DatagramSocket:通讯的数据管道//定义管道DatagramSocket ds = new DatagramSocket();//定义将要发送的信息String str = "hello henrik";//定义集装箱,装入dp内容和长度并且贴了目的地//目的地为127.0.0.1:3000//str.getBytes()方法把str类型转化为byte类型//str.length()//地址标签:目的地IP+PortDatagramPacket dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("127.0.0.1"),3000);System.out.println("UdpSend: 我要发送信息");//发送信息ds.send(dp);System.out.println("UdpSend: 我发送信息结束");//进程暂停1sThread.sleep(1000);//定义字节数组存放信息byte [] buf=new byte[1024];//定义集装箱用来封装信息DatagramPacket dp2 = new DatagramPacket(buf,1024);System.out.println("UdpSend: 我在等待信息");ds.receive(dp2);System.out.println("UdpSend: 我接收到信息");//dp.getAddress().getHostAddress()方法获取IP//dp.getPort()方法获取PortString str2 = new String(dp2.getData()) +" from " + dp2.getAddress().getHostAddress()+":"+dp2.getPort();//打印信息和信息的来源地址System.out.println(str2);//关闭管道ds.close();}
}

5.效果
在这里插入图片描述
在这里插入图片描述

三.TCP:有连接,保证可靠的通讯协议

1.思路

服务器创建一个ServerSocket,等待连接
客户机创建一个Socket,连接到服务器
服务器的ServerSocket接收到连接,创建一个Socket和客户的Socket建立专线连接,后续服务器和客户机的对话(这一对Socket)会在一个单独的线程(服务端)上运行
服务端的ServerSocket继续等待连接

2.特性

服务端等待响应时,处于阻塞状态
服务端可以同时响应多个客户端
服务端每接受一个客户端,就启动一个独立的线程与之对应
客户端和服务端都可以选择关闭这对Socket的通道
ServerSocket作为服务器的码头,需要绑定port,如果有多块网卡,需要绑定一个ip地址
Socket作为运输通道,客户端往Socket输入流写入数据,送到服务端,从Socket输出流取服务器端过来的数据,服务端反之亦然

3.demo:TcpServer


import java.net.*;
import java.io.*;
import java.nio.charset.StandardCharsets;public class TcpServer
{public static void main(String [] args) {try{//驻守在8001端口ServerSocket ss = new ServerSocket(8001);//等待客户端连接Socket s = ss.accept();//阻塞提示System.out.println("welcome to the java world");//有人连接上打开输入流InputStream ips = s.getInputStream();//打开输出流OutputStream ops = s.getOutputStream();//同一个通道,服务端的输出流输入流就是客户端的输出流输入流//输出一句话给客户端ops.write("hello client".getBytes());//从客户端读取一句话BufferedReader br = new BufferedReader(new InputStreamReader(ips));System.out.println("client said:"+br.readLine());//关闭各对象ips.close();ops.close();s.close();ss.close();} catch (IOException exception) {exception.printStackTrace();}}
}

4.demo:TcpClient

import java.net.*;
import java.io.*;public class TcpClient {public static void main(String[] args) {try {//用地址标签创建通道,这里需要服务端先开启Socket s = new Socket(InetAddress.getByName("127.0.0.1"), 8001);//同一个通道,服务端的输出流就是客户端的输入流;服务端的输入流就是客户端的输出流//开启通道的输入流InputStream ips = s.getInputStream();BufferedReader brNet = new BufferedReader(new InputStreamReader(ips));//开启通道的输出流OutputStream ops = s.getOutputStream();//包装输出流DataOutputStream dos = new DataOutputStream(ops);//键盘录入信息//System.in是一个位流,InputStreamReader转换为字符流,然后再使用BufferedReader为其增加缓冲功能BufferedReader brKey = new BufferedReader(new InputStreamReader(System.in));while (true){String strWord = brKey.readLine();//判断是否为换行,换行则表示结束if (strWord.equalsIgnoreCase("quit")){break;}else{System.out.println("I want to send: " + strWord);//System.getProperty("line.separator")获取操作系统对应的换行符dos.writeBytes(strWord + System.getProperty("line.separator"));System.out.println("Server said: " + brNet.readLine());}}//关闭对象dos.close();brNet.close();brKey.close();s.close();} catch (Exception e) {e.printStackTrace();}}
}

5.效果
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-2850.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

python操作数据库

参考:https://blog.csdn.net/kongsuhongbaby/article/details/84948205 非常非常全面 mysql登陆 基本操作: 登陆:mysql -uroot -h127.0.0.1 -P3306 -p mysql -uroot -p(本机不用写host) 退出mysql:ctrlz回车,或者exi…...

异步处理方式探索

这里写自定义目录标题最佳异步处理方式探索CompletableFutureThreadPoolTaskExecutorJDK8并行流处理最佳异步处理方式探索 JDK提供了多种异步处理方式,其中归结出来分为两大类。 java.lang.Runnable 通过 run()方法新建一个线程处理任务,无返回值java.u…...

三种方法安装CUDA--看出你是【入门】算法工程师还是【高级】算法工程师

三种方法安装CUDA–看出你是【入门】算法工程师还是【高级】算法工程师 文章目录 三种方法安装CUDA--看出你是【入门】算法工程师还是【高级】算法工程师0 微信交流群:1 前言:2 显卡驱动安装3 CUDA9.2卸载2.1 10.0及之前2.2 cuda10.1及之后2.3 pwd2.4 卸载2.5 清除残留2.6 验…...

[HDU2520]我是菜鸟,我怕谁(每日一题5.30)

题目链接&#xff1a;Problem - 2520 (hdu.edu.cn) 乍一看这个题&#xff0c;发现不就是匀加速直线运动么&#xff0c;于是写出了如下的代码&#xff1a; #include <iostream>using namespace std;int d(int t);int main() {int T;cin >> T;while(T--){int t;cin …...

第二讲:基本飞行姿态

四旋翼在其四个轴臂上四个桨的高速转动作用下&#xff0c;会受到四个桨的拉力&#xff0c;拉力方向与机身垂直&#xff0c;当四个桨产生的拉力总和大于机身重力时&#xff0c;飞机处于上升状态&#xff1b;当总拉力小于机身重力时&#xff0c;飞机处于下降状态&#xff1b;当总…...

MySQL索引用法实例分析

建议看原文&#xff1a;https://www.jb51.net/article/88846.htm 这篇文章主要介绍了MySQL索引用法,结合实例形式较为详细的分析了mysql索引的功能、定义、使用方法与相关注意事项,需要的朋友可以参考下 本文实例分析了MySQL索引用法。分享给大家供大家参考&#xff0c;具体如下…...

必看!LuatOS自定义C库全新教程,一文极速上手

今天继续讲LuatOS的开发&#xff0c;上一期简单说了一下如何移植LuatOS&#xff0c;相信很多朋友已经看过了。那么今天&#xff0c;我就开始讲C和Lua调用的部分教程。 LuatOS相关资料及Lua语言的官方定义&#xff0c;详见以下链接&#xff1a; LuatOS仓库&#xff1a; https:/…...

Xshell 连接不上Linux Centos 7的解决方法之设置静态IP

前序 最近在开发项目&#xff0c;需要在服务器部署数据库、ftp文件管理等相关内容时&#xff0c;为了方便操作&#xff0c;使用Xshell会话管理工具进行服务器操作。出现连不上服务器网络的问题&#xff0c;就所遇问题进行学习解决方案及总结记录。 配置虚拟机网络 1.在虚拟机…...

ann2snn的代码分析

首先&#xff0c;主函数是if_cnn_mnist_work.py 1.输出snn测试结果的就是这么一些代码&#xff1a; utils.pytorch_ann2snn(model_namemodel_name,norm_tensornorm_tensor,test_data_loadertest_data_loader,devicedevice,TT,log_dirlog_dir,configconfig)2.ctrl鼠标左键点击py…...

基于域名访问网站1(作业)

搭建一个基于http://www.zuoye.com:22222访问的web网站&#xff0c;网站首页在/www/http/&#xff0c;内容为zuoye 结果 过程&#xff1a; 创建网页的根目录&#xff0c;并编辑网页内容为zuoye 编辑/etc/httpd/conf.d/zuoye.conf 关闭防火墙 关闭selinux 重启httpd 编辑/…...

虚拟内存和地址空间

目录 一、物理内存vs虚拟内存 二、物理内存空间和虚拟内存空间 三、32bit的地址空间 四、cpu位宽和cpu地址总线宽 五、虚拟内存地址空间划分 六、虚拟地址和物理地址的映射 早期的计算机程序都是直接跑在物理内存上的&#xff0c;这就要求程序大小不能超过物理内存的上限…...

STM32CubMx自学笔记(一)-LED灯翻转

STM32CubMX自学笔记&#xff08;一&#xff09;---LED灯翻转工程创建系统具体配置工程代码编写下载验证结语工程创建 首先得安装STM32CubMx软件。具体安装步骤参照 保姆级安装步骤&#xff0c;这里将不再赘述&#xff0c;第一节主要是介绍新工程的创建&#xff0c;首先在桌面打…...

十四、Python第十四课——文件和异常

&#xff08;请先看这篇文章&#xff1a;https://blog.csdn.net/GenuineMonster/article/details/104495419&#xff09; 如果看完这篇博文&#xff0c;你的问题还是没有解决&#xff0c;那么请关注我的公众号&#xff0c;后台发消息给我吧&#xff0c;当天回复&#x…...

Linux下安装sqlite3

文章目录前言安装步骤测试安装成功前言 sqlite3的安装 安装步骤 依次执行以下命令&#xff1a; 1)wget http://www.sqlite.org/sqlite-3.5.6.tar.gz 2)tar -xzvf sqlite-3.5.6.tar.gz 3)cd sqlite-3.5.6 4)./configure 5)make 6)make install测试安装成功 出现红色方框信息…...

拉伯配资6月1日策略

5月回想&#xff1a;在5月份的战略中&#xff0c;我们认为其时胶着的商场可能在5月会有所改动。从实践表现来看&#xff0c;5月下旬商场明显出现了一些活泼做多的信号&#xff0c;商场也选择了向上打破。上证指数上涨超4%&#xff0c;深圳成指上涨近3%。 行情判别&#xff1a;从…...

微信小程序趋势及前景,大厂直通车!

最近看到群里看到一个女生&#xff0c;讲述了她从开始选择Android&#xff0c;经过非常努力的学习和挣扎&#xff0c;然而最后面对当前的环境却不得不放弃。看完以后真的非常替她感觉惋惜&#xff0c;如果早几年入行可能结果会比现在好很多&#xff0c;但可惜&#xff0c;这就是…...

设计模式导读助记

各个设计模式的详细介绍都已经完成&#xff0c;但是不经常用总会忘&#xff0c;所以我想用 一句话 总结设计模式&#xff0c;思考模式的真正意图&#xff0c;再用 一点提示 来思考代码如何实现 写在前面 我整理的设计模式这一个系列&#xff0c;主要是结合了以下几本书 : 《设…...

RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之环境搭建(1/3)

文章目录前言硬件准备百问网STM32F103ESP8266 01SESP8266 介绍ESP8266 01S技术规格参数软件准备下载安装 Keil μVision5Pack Installer安装 ST-Link 驱动获取RT-Thread源码下载安装 RT-Thread env 工具文章列表 RT-Thrad|STM32F103ESP8266 S01RT-Thread联网之环境搭建(1/3)RT…...

webrtc之SVC实现(十)

一、概念 SVC&#xff08;可适性视频编码或可分级视频编码&#xff09;是传统H.264/MPEG-4 AVC编码的延伸&#xff0c;可提升更大的编码弹性&#xff0c;并具有时间可适性&#xff08;Temporal Scalability&#xff09;、空间可适性&#xff08;Spatial Scalability&#xff09…...

LeetCode 数值的整数次方

实现 pow(x, n) &#xff0c;即计算 x 的 n 次幂函数&#xff08;即&#xff0c;xn&#xff09;。不得使用库函数&#xff0c;同时不需要考虑大数问题。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000 示例 2&#xff1a; 输入&#xf…...

redis-第一节作业

#信息添加 功能&#xff1a;设置 key&#xff0c;value 数据 set key value #范例 set name itheima #信息查询 功能&#xff1a;根据 key 查询对应的 value&#xff0c;如果不存在&#xff0c;返回空&#xff08;nil&#xff09; get key #范例 get name #整体例子 set age 1…...

什么是HashMap

Hashmap是有数组链表红黑树组成的数据结构。HashMap采用Entry数组来存储key-value对&#xff0c;每一个键值对组成了一个Entry实体&#xff0c;Entry类实际上是一个单向的链表结构&#xff0c;它具有Next指针&#xff0c;可以连接下一个Entry实体。 只是在JDK1.8中&#xff0c;…...

HTML基础知识

HTLM基础知识 语义化 每一个HTML元素都有具体的含义所有元素与展示效果无关,元素展示的效果应该由CSS决定浏览器带有默认的CSS样式,所以每个元素都有一些默认的样式选择什么元素,取决于内容的含义,而不是显示出的效果为什么需要语义化? 5.1 为了搜索引擎优化(SEO),每隔一段时…...

【学习随记】论文翻译:A Comprehensive Survey on Safe Reinforcement Learning

本篇译文为方便自己再次阅读而记录&#xff0c;源自Google翻译和CNKI翻译助手。习惯用语保持英文&#xff08;例&#xff1a;agent&#xff09;&#xff0c;一些细微之处结合自己理解稍加修改&#xff0c;为方便阅读&#xff0c;译文删除了参考文献相关部分。才疏学浅&#xff…...

SpringJdbc学习笔记-03声明式事务

3.2 声明式事务 典型的SpringAOP的实现&#xff0c;基于AOP&#xff0c;所以一定要把aop的依赖都导入 什么叫声明式&#xff1a; 3.2.1 导入命名空间 <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchem…...

jsp2生命周期

No.1生命周期知识点 1、Java 对象的生命周期 创建Java有3种方式 new 2. class加载 3. classloader加载 销毁&#xff1f; 出作用域该对象就变为了无用对象. 等待System.gc(),销毁无用对象. servlet 对象的生命周期 第一次访问某个servlet的时候&#xff0c;servlet构造方法被…...

Go 环境搭建

各位提供的信息统一汇总了下&#xff1a; 1、设置 go env -w GO111MODULEauto 2、在线体验 https://play.golang.org/ 3、Git 官网 https://git-scm.com/ 4、vs code环境 https://marketplace.visualstudio.com/items?itemNamegolang.go https://code.visualstudio.com/ 5、七…...

仿百度文库网站源码(织梦内核5.7)

分享仿百度文库网站程序源码&#xff0c;是一个用来搭建供网友在线分享文档的开放**台网站。在用仿百度分享文库程序源码搭建的网站上&#xff0c;用户可以在线阅读和下载涉及课件&#xff0c;题&#xff0c;考试题库&#xff0c;论文报告&#xff0c;专业资料&#xff0c;各类…...

Windows 10 安装ros2 foxy

1.ros官方网站&#xff1a;https://www.ros.org/ 2.ros介绍文档&#xff1a;https://docs.ros.org/ 在这个页面可以看到ros的所有版本&#xff08;含ros2&#xff09; 3.Windows ros安装教程&#xff1a;https://wiki.ros.org/Installation/Windows 参考文献&#xff1a; 1…...

Excel单变量求解实例操作演示

单变量求解可以理解为求解方程中X的值。在确定Excel所在单元格的公式及该单元格目标值的情况下&#xff0c;求解公式中的变量值。 例&#xff1a;在如下表格中&#xff0c;已知条件为&#xff1a; 1.新客客单价 2.老客客单价 3.复购率(复购率下单老客数量/下单总人数&#xff0…...

RK3399 Android10 移除应用权限(包含USB)申请弹框

Android板外接了USB设备&#xff0c;每次开机后第一次启动我们的APP&#xff0c;都会弹出申请USB的弹框&#xff0c;客户使用起来很不方便&#xff0c;翻了一些文章和代码后通过修改UsbPermissionActivity.java实现。 我们看到此Activity是一个AlertActivity&#xff0c;也就是…...

标签云TagCloud

1. 使用:引入JQuery->引入.min文件->在相应代码中使用下面配置 /*** 标签云*/tagCloud(){const thatthis$( document ).ready( function() {let settings {entries: that.tagData,width: 956,height: 280,radius: 200,radiusMin: 200,bgDraw: true,bgColor: transparent…...

html5 canvas文字标签云3D旋转动画特效

tagcanvas.min.js下载 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"> <head> <meta http-…...

vue实现标签云效果

闲扯两句 最近想给自己的博客上加上一个3D标签云的效果&#xff0c;用来表示自己博客文章的分组&#xff0c;网上找到了canvas实现的&#xff0c;还有a元素实现的解析3D标签云&#xff0c;我想让标签可以选择和点击&#xff0c;又不想在标签数量较多时操作a标签导致性能问题&am…...

微信小程序,标签云效果:自定义颜色,并随机显示不同颜色

嗯嗯&#xff0c;先来个效果图looklook… wxml代码结构 <view classcontent><block wx:for"{{labArr}}" wx:key"key" wx:for-index"key" wx:for-item"v"><view classlab data-key"{{key}}" style"backg…...

AutoCAD Electrical 2022—导线的绘制

在原理图——插入导线/线号 选择多母线 没有导线的时候&#xff0c;选择空白区域&#xff0c;水平或垂直绘制&#xff1b; 间距设置合适的间距&#xff0c;导线数量根据实际输入&#xff1b; 点击确定&#xff1b; 在绘图区域的空白处&#xff0c;绘制多母线&#xff1b; 绘制…...

数字化门店| 美业/医美门店管理系统 | 医美小程序

近些年来&#xff0c;随着人们消费升级和颜值经济的不断驱动&#xff0c;美业发展非常迅速&#xff0c;而医美行业也顺势规模增长。 当今互联网时代&#xff0c;各行业都在开展门店数字化转型&#xff0c;而这也让不少医美医院愿意构建基于门店会员管理的O2O闭环&#xff0c;并…...

Symmetric crypto AES

In modern cryptography exist the concept of symmetric and asymmetric cryptography. Symmetric cryptography means that you use the same key for encryption and decryption. In asymmetric cryptography you have two keys, one is for encryption, known as the publ...

C++ fork

好有意思的一段代码 共享 #include "stdio.h" #include "sys/types.h" #include "unistd.h"int main() {int i 0;printf("before fork\n");pid_t pid fork();printf("after fork\n");if (pid < 0){printf("error…...

JDK8辅助学习(六):Fork/Join 框架

Fork/Join作为一个并发框架&#xff0c;是在 JDK7 的时候加入到 Java 并发包 java.util.concurrent 中来&#xff0c;并且在 JDK8 并行Stream流(parallel Stream)中充当着底层框架的角色。 并行 Stream 流 使用的就是 Fork/Join 框架。Fork/Join 框架可以将一个大任务拆分为很多…...

ForkJoin 并发

为什么用 Fork/Join &#xff1f; 对于简单的并行任务&#xff0c;你可以通过“线程池Future”的方案来解决&#xff1b;如果任务之间有聚合关系&#xff0c;无论是AND聚合还是OR聚合&#xff0c;都可以通过CompletableFuture来解决&#xff1b;而批量的并行任务&#xff0c;则…...

深入理解ForkJoin及使用示例

一、什么是ForkJoin 大数据里面有map reduce &#xff0c;Java从JDK1.7开始借鉴了这种分而治之的思想&#xff0c;提供ForkJoin框架用于并行执行任务&#xff0c;它的思想就是讲一个大任务分割成若干小任务&#xff0c;最终汇总每个小任务的结果得到这个大任务的结果 Fork&am…...

fork()介绍

fork()函数&#xff1a; 用于创建一个进程&#xff0c;所创建的进程复制父进程的代码段/数据段/BSS段/堆/栈等所有用户空间信息&#xff1b;在内核中操作系统重新为其申请了一个PCB&#xff0c;并使用父进程的PCB进行初始化&#xff1b; 子进程执行的位置是fork()函数执行后的…...

fork使用

fork fork系统调用用于创建一个新进程&#xff0c;称为子进程&#xff0c;它与进程&#xff08;称为系统调用fork的进程&#xff09;同时运行&#xff0c;此进程称为父进程。创建新的子进程后&#xff0c;两个进程将执行fork&#xff08;&#xff09;系统调用之后的下一条指令。…...

fork炸弹

fork炸弹通过进程递归式派生&#xff08;fork&#xff0c;亦即自我复制&#xff09;&#xff0c;以使系统拒绝服务甚至崩溃。 :(){ :|:& };: 原理&#xff1a; fun() { fun | fun& }&#xff1b; fun fun函数调用自己本身&#xff0c;并且在后台开启新进程...

Java8 - 一文搞定Fork/Join 框架

文章目录概述CPU密集型 vs IO密集型计算密集型任务IO密集型简单示例Fork/Join常用的类RecursiveTask 实现 并行计算RecursiveActionFork/Join执行流程最佳实践概述 分支/合并框架的目的是以递归方式将可以并行的任务拆分成更小的任务&#xff0c;然后将每个子任务的结果合并起…...

c++中的fork函数_fork( )函数详解

一、fork入门知识一个进程&#xff0c;包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程&#xff0c;也就是两个进程可以做完全相同的事&#xff0c;但如果初始参数或者传入的变量不同&#xff0c;两个进程也可以做不同的事。一…...

fork原理--Linux实现

fork的一些特征是怎么实现的&#xff1f; 比如&#xff1a; 1. 为什么父进程返回子进程pid&#xff0c; 子进程返回0&#xff1f; 2. 子进程是如何做到与父进程“一模一样的”&#xff1f; 3. 子进程同父进程一样&#xff0c;都是从调用fork处继续向下执行&#xff0c;而不是子…...

Linux fork之后,到底是子进程先运行还是父进程先运行

大约10年前&#xff0c;我写过两篇关于Linux内核CFS调度器的文章&#xff1a; https://blog.csdn.net/dog250/article/details/5302865 https://blog.csdn.net/dog250/article/details/5302864 我觉得这两篇文章是垃圾&#xff0c;但我又不删&#xff0c;留着给自己喷吧&#…...

ForkJoin使用

Fork/Join框架是Java 7提供的一个用于并行执行任务的框架&#xff0c;是一个把大任务分割成若干个小任务&#xff0c;最终汇总每个小任务结果后得到大任务结果的框架。Fork/Join框架要完成两件事情&#xff1a;1.任务分割&#xff1a;首先Fork/Join框架需要把大的任务分割成足够…...