随笔分类 -  网络编程

摘要:一、简介 与 poll 的事件宏相比,epoll 新增了一个事件宏 EPOLLET,这就是所谓的边缘触发模式(Edge Trigger,ET),而默认的模式我们称为 水平触发模式(Level Trigger,LT)。这两种模式的区别在于: 对于水平触发模式,一个事件只要有,就会一直触发; 对于边缘触 阅读全文
posted @ 2021-09-08 21:05 Mr-xxx 阅读(1208) 评论(0) 推荐(0)
摘要:一、引言 通过这几天的研究,终于明白了Unicode和UTF-8之间编码的区别。Unicode是一个字符集,而UTF-8是Unicode的其中一种,Unicode是定长的都为双字节,而UTF-8是可变的,对于汉字来说Unicode占有的字节比UTF-8占用的字节少1个字节。Unicode为双字节,而 阅读全文
posted @ 2021-09-01 22:44 Mr-xxx 阅读(3018) 评论(0) 推荐(0)
摘要:一、什么是虚拟内存 虚拟内存是操作系统为每个进程提供的一种抽象,每个进程都有属于自己的、私有的、地址连续的虚拟内存,当然我们直到最终进程的数据以及代码必然药放到物理内存上,那么必须有某种机制能记住虚拟地址空间中的某个数据,被放到了那个物理内存地址上,这就是所谓的地址空间映射,也就是虚拟内存地址与物理 阅读全文
posted @ 2021-08-26 16:55 Mr-xxx 阅读(433) 评论(0) 推荐(0)
摘要:一、抛出问题 关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下: 1.1 派系1 第一派:《Java Concurrency in Practice》即《java并发编程实践》,如下图: 如上图,在《Java Concurrency in Practi 阅读全文
posted @ 2021-08-26 10:28 Mr-xxx 阅读(1559) 评论(0) 推荐(0)
摘要:一、什么是死锁 多线程以及多进程改善了系统资源的利用率并提高了系统的处理能力。然而,并发执行也带来了新的问题——死锁。 死锁是指两个或两个以上的进程(线程)在运行过程中因争夺资源而造成的一种僵局(Deadly-Embrace) ) ,若无外力作用,这些进程(线程)都将无法向前推进。 下面我们通过一些 阅读全文
posted @ 2021-08-22 16:14 Mr-xxx 阅读(2679) 评论(0) 推荐(0)
摘要:一、SO_REUSEADDR 目前为止我见到的设置SO_REUSEADDR的使用场景:server端在调用bind函数时 setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR,(const void *)&reuse , sizeof(int)); 目的:当服务 阅读全文
posted @ 2021-08-21 20:51 Mr-xxx 阅读(905) 评论(0) 推荐(0)
摘要:一、前言 最近在部署项目时要求实现负载均衡,有趣的是发现网上一搜全部都是以下类似的配置文件。 1 upstream localhost{ 2 server 127.0.0.1:8080 weight=1; 3 server 127.0.0.1:8081 weight=1; 4 } 5 server 阅读全文
posted @ 2021-08-20 21:03 Mr-xxx 阅读(316) 评论(0) 推荐(0)
摘要:一、锁 互斥锁是用来保护一个临界区,即保护一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待。 二、锁的开销 在谈及锁的性能开销,一般都会说锁的开销很大,那锁的开销有多大,主要耗在哪,怎么提高锁的性能。 现在锁的机制一般使用 f 阅读全文
posted @ 2021-08-15 17:12 Mr-xxx 阅读(1685) 评论(0) 推荐(1)
摘要:一、简介 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(BlockingIO):即传统的IO模型。 (2)同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO 阅读全文
posted @ 2021-08-11 10:11 Mr-xxx 阅读(886) 评论(0) 推荐(0)
摘要:SO_LINGER SO_LINGER选项用于控制close系统调用在关闭TCP连接时的行为。默认情况下,当我们使用close系统调用来关闭一个socket时,close将立即返回,TCP模块负责把该socket对应的TCP发送缓冲区中残留的数据发送给对方。 设置(获取)SO_LINGER选项的值时 阅读全文
posted @ 2021-06-30 17:05 Mr-xxx 阅读(970) 评论(0) 推荐(1)
摘要:其实是我调式了 N 久的一个 BUG, 最后发现这原来是 TCP 的 Feature. 文章为我转我自己, 原文链接在底部. Socket: 假如服务端不调用 Accept? 我相信绝大多数人都会写 TCP 的服务端代码, 就自己而言, 已经几乎机械式地在写如下代码(就如定式一般): ln, err 阅读全文
posted @ 2020-09-11 15:47 Mr-xxx 阅读(714) 评论(0) 推荐(0)