网络编程

Java 网络编程

本小妞迷上赌 提交于 2019-12-02 14:37:59
socket通信机制   建立在两种通信协议上 tcp 和 udp 。     tcp:可靠传输,建立在三次握手基础上,有一次服务端与客户端确认的过程,确认后服务端再与客户端继续通信,面向连接。     udp:一种报文协议,是无连接的不安全的。 Java 网络编程 初识   阻塞的IO: 按照命名理解,server端与client端通信是阻塞的,server会一直监听某个接口直到有client端与它建立连接。   非阻塞的IO:server端与client的通信是非阻塞的,异步建议连接,在异步web中主要学习了解的netty,以及使用netty建议长连接,后续会继续记录。 阻塞IO的例子: int port = genPort(args);ServerSocket server = null;ExecutorService service = Executors.newFixedThreadPool(3);try { server = new ServerSocket(port); System.out.println("server started"); while(true){ Socket socket = server.accept(); service.execute(new Handler(socket)); }} catch (IOException e) { e

网络编程面试题整理(四)

故事扮演 提交于 2019-12-02 10:44:27
1:重传机制 TCP每发送一个报文段,就设置一次定时器。只要定时器设置的重发时间到而还没有收到确认,就要重发这一报文段。 TCP环境报文往返时间不定、有很大差别。 A、B在一个局域网络,往返时延很小 A、C在一个互联网内,往返时延很大 因此,A很难确定一个固定的、与B、C通信都适用的定时器时间。 TCP采用了一种自适应算法。这种算法记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。这两个时间之差就是报文段的往返时延。将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延T。 2:ThreadLocal与其它同步机制的比较 首选了解什么是ThreadLocal:用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。 Threadlocal和其他所有的同步机制都是为了解决多线程中的对同一变量的访问冲突,在普通的同步机制中,是通过对对象 加锁 来实现多个线程对同一变量的安全访问的。这时该变量是多个线程共享的,使用这种同步机制需要很细致的分析在什么时候对变量进行读写,什么时候需要锁定某个对象,什么时候释放该对象的索等等。所有这些都是因为多个线程共享了该资源造成的。Threadlocal就从另一个角度来解决多线程的并发访问

网络编程面试题整理(三)

回眸只為那壹抹淺笑 提交于 2019-12-02 10:44:17
1: 什么是并发和并行? 并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。 2: 进程锁和线程锁的作用? 线程锁: 大家都不陌生,主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时,那么在同一时刻至多仅有一个线程在执行该段代码。当有多个线程访问同一对象的加锁方法 / 代码块时,同一时间只有一个线程在执行,其余线程必须要等待当前线程执行完之后才能执行该代码段。 但是,其余线程是可以访问该对象中的非加锁代码块的。    进程锁: 也是为了控制同一操作系统中多个进程访问一个共享资源,只是因为程序的独立性,各个进程是无法控制其他进程对资源的访问的, 但是可以使用本地系统的信号量控制(操作系统基本知识)。 3: 解释什么是异步非阻塞? 首先需要知道什么是同步和异步: 同步和异步 是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。同步方法表明调用一旦开始,调用者必须等待方法执行完成,才能继续执行后续方法。异步方法表明,方法一旦开始,立即返回,调用者无需等待其中方法执行完成,就可以继续执行后续方法

网络编程面试题整理(二)

梦想与她 提交于 2019-12-02 10:44:11
1: 什么是C/S和B/S架构? C/S架构软件(即客户机/服务器模式)分为客户机和服务器两层:第一层是在客户机系统上结合了表示与业务逻辑,第二层是通过网络结合了数据库服务器。简单的说就是第一层是用户表示层,第二层是数据库层。客户端和服务器直接相连,这两个组成部分都承担着重要的角色。 B/S架构第一层是浏览器(即客户端)只有简单的输入输出功能,处理极少部分的事务逻辑。由于客户不需要安装客户端,只要有浏览器就能上网浏览, 所以它面向的是大范围的用户,所以界面设计得比较简单,通用。第二层是WEB服务器,扮演着信息传送的角色。当用户想要访问数据库时,就会首先向WEB服务器发送请求, WEB服务器统一请求后会向数据库服务器发送访问数据库的请求,这个请求是以SQL语句实现的。第三层是数据库服务器,它存放着大量的数据。当数据库服务器收到了WEB服务器的请求后, 会对SQL语句进行处理,并将返回的结果发送给WEB服务器,接下来,WEB服务器将收到的数据结果转换为HTML文本形式发送给浏览器。 2: 什么是ARP协议? ARP(Address Resolution Protocol) 是 地址解析协议 。最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。 3: 什么是局域网和广域网? 广域网(WAN,公网,外网)

网络编程面试题整理(一)

旧巷老猫 提交于 2019-12-02 10:44:10
1:tcp和udp的区别 首先,了解网络经典的五层协议体系结构: 物理层、数据链路层、网络层、传输层、应用层 。信号的传输总要符合一定的协议(protocol),而计算机之间的通信也要遵循不同层次的协议,来实现计算机的通信。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。 而本问的tcp和udp就是工作在传输层的两个重要协议。其中TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,简单概况就是: 1. 主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话; 2. 主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话; 3. 主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。 三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。 而UDP(User Data Protocol,用户数据报协议

网络编程与并发变编程复习

时光总嘲笑我的痴心妄想 提交于 2019-12-02 09:30:20
目录 软件开发架构 一网络编程 TCP:必须继承BaseRequestHandler类 必须重写父类的handle,当客户端连接时回调用该方法 二 并发编程 软件开发架构 c/s: Client:客户端 ​ Server:服务端 ​ 优点: ​ 占用网路资源少,软件的使用的稳定 ​ 缺点: ​ 服务端更新后,客户端也得跟着更新 ​ 需要使用多个软件,需要下载多个客户端 B/S: ​ Browser:浏览器(客户端) ​ Server:服务器 服务端与客户端作用: ​ 服务端:24小时不间断提够服务 ​ 客户端:需要体验服务端时,再去连接服务端,并享受服务 一网络编程 1 互联网协议OSI七层协议 ​ 1)应用层 ​ 2)表示层 ​ 3)会话层 ​ 4)传输层 ​ 5)网络层 ​ 6)数据链路层 ​ 7)物理连接层 ​ —物理连接层:基于电信号发送二进制数据 ​ —数据链路层:规定好电信号的分组方式,必须有网卡 ​ Mac地址:12位唯一的16进制字符串 ​ 前6位:厂商号 ​ 后6位:流水号 ​ —以太网协议:在同一局域网内通信 ​ 单播:1对1对话 ​ 广播:多对多对话 ​ —广播风暴 ​ —不能跨局域网通信 ​ —网络层 ​ — ip:定位局域网的位置 ​ —port:唯一标识一台计算机上一个应用程序 ​ —ARP协议:将Mac地址获取,并解析程ip和port ​ — 传输层

网络编程 与 并发编程 汇总

余生长醉 提交于 2019-12-02 09:14:18
软件开发架构: C/S: Client: 客户端 Server: 服务端 优点: 占用网络资源少,软件的使用稳定 缺点: 服务端更新后,客户端也得跟着跟新. 需要使用多个软件,需要下载多个客户端 B/S: Browser: 浏览器(客户端) Server: 服务端 服务端与客户端作用: 服务端: 24小时不间断提供服务 客户端: 需要体验服务端时,再去连接服务端,并享受服务 一 网络编程: 1.互联网协议OSI七层协议 1)应用层 2)表示层 3)会话层 4)传输层 5)网络层 6)数据链路层 7)物理连接层 - 物理连接层 基于电信号发送二进制数据. - 数据链路层 1) 规定好电信号的分组方式 2) 必须要有一块网卡: - mac地址: 12位唯一的16进制字符串 - 前6位: 厂商号 - 后6位: 流水号 - 以太网协议: 在同一个局域网内通信. - 单播 1对1吼 - 广播 多对多吼 - 广播风暴: - 不能跨局域网通信 - 网络层 - ip: 定位局域网的位置 - port: 唯一标识一台计算机上一个应用程序. - arp协议: 将mac地址获取,并解析成ip和port. - 传输层 - TCP 特点: TCP协议称之为流式协议. 若想要通信,必须建立连接,并建立双向通道. - 三次握手,四次挥手 - 三次握手建连接 - 客户端往服务端发送请求建立通道 -

网络编程(目录)

孤人 提交于 2019-12-02 07:03:45
一、网络编程 1. 网络编程 2. TCP协议三次握手四次挥手 3. 基于TCP的套接字编程 4. 模拟ssh发送cmd指令 5. 粘包问题 6. UDP协议套接字编程,socketserver实现高并发 二、并发编程 7. 并发编程(理论) 8. Python如何使用多线程 9. 守护进程,互斥锁 10. IPC和队列Queue 11. 生产者消费者模型 12. 多线程 13. 死锁现象,递归所,信号量,GIL 14. 线程池与进程池,同步异步,Event事件 15. 鱼还是熊掌:浅谈多进程多线程的选择 16. 线程队列,协程基础 17. IO模型(多路复用IO) 18. select的问题以及epoll的使用 来源: https://www.cnblogs.com/lucky75/p/11735790.html

网络编程基础

一世执手 提交于 2019-12-02 06:33:36
并发编程—基础知识 目录 操作系统背景知识 什么是进程 进程的概念 操作系统引入进程的概念的原因 进程的特征 进程与程序中的区别 进程的并行和并发 并行和并发的区别 状态介绍 进程的创建 进程的结束 操作系统背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统,点击进入 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。 1.1 必备的理论基础 操作系统的作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口 管理、调度进程,并且将多个进程对硬件的竞争变得有序 多道技术: 产生背景:针对单核,实现并发 ps:现在的主机一般是多核,那么每个核都会利用多道技术。有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再重新调度,会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定。 空间上的复用:如内存中同时有多道程序 时间上的复用:复用一个cpu的时间片 强调:遇到io切换