- 博客(15)
- 收藏
- 关注
原创 TCP协议是什么? 有哪些特性?
用Nginx,服务端只维持长连接跟与代理的连接。b. 被动方回ACK (确认) // recv()返回0能感知到主动方发close(),然后自己就调用close() 这时主动方会进入fin_wait_2。a. 主动方发FIN (finish, 置1) // 调用close() 先回收Fd后再发送,然后fin_wait_1,被动方进入close_wait。c. accept队列的长度: 提升吞吐量,但较不安全,安全交于防火墙处理了,现今的backlog就是accept队列的长度了。
2025-05-23 21:09:24
672
原创 网络I/O (3) Reactor
Reactor是一种事件驱动的设计模式,主要用于管理I/O事件。它通过事件触发机制来处理I/O操作,而不是直接管理I/O。Reactor模式的核心是将I/O事件与回调函数匹配,每个I/O事件对应一个特定的回调函数。Reactor的工作流程包括注册事件、等待事件、事件通知和调用相应的处理程序。与Epoll相比,Reactor提供了更高层次的抽象,使得I/O和逻辑分离,易于扩展和实现高并发。然而,Reactor模式也带来了复杂性,如状态机管理和回调地狱问题。Epoll是操作系统提供的I/O多路复用机制,而Rea
2025-05-23 21:08:06
293
原创 Lua相关问答(由简到深)
本文涵盖了Lua编程语言的核心概念与高级应用,包括基础语法、数据结构、函数与闭包、面向对象编程、元表与元方法、模块与热更新、协程与异步机制、事件系统与消息分发、性能优化以及实际场景应用。文章通过问答形式详细解释了Lua中table的键类型、pairs与ipairs的区别、闭包的使用、面向对象编程的实现、元表的工作原理、模块加载与热更新、协程的应用、事件系统的构建、性能优化策略以及实际场景中的技能冷却管理和状态机实现。此外,还探讨了LuaJIT的优势与使用建议,为开发者提供了全面的Lua编程指南。
2025-05-21 11:17:13
313
原创 Lua自学,含基础语法与简单练习
Lua是一种轻量级、高效的脚本语言,具有动态类型、自动垃圾回收、支持一等函数和闭包等特点。其核心数据结构是table,既可用作数组,也可用作字典。Lua的基础语法包括变量声明、数据类型(如number、string、boolean、table、function)以及控制结构(如if-else、for、while、repeat-until)。Table在Lua中用途广泛,既可作为数组(下标从1开始),也可作为字典使用。Lua支持高阶函数和闭包,能够实现函数式编程。模块化通过require实现,便于代码组织。L
2025-05-21 10:38:45
354
原创 网络I/O (2) select/poll/epoll
本文介绍了Linux中的文件描述符(fd)及其在网络I/O中的应用。fd是用于标识打开文件的句柄,在Linux中,几乎所有资源(如socket、管道、设备等)都被视为文件。默认情况下,0、1、2分别代表stdin、stdout和stderr,后续的fd从3开始递增。文章还探讨了I/O多路复用机制,包括select、poll和epoll。select允许程序监听多个fd,但其参数复杂且效率较低。poll与select类似,但参数更简洁。epoll是Linux 2.6版本后引入的高效I/O多路复用机制,通过ep
2025-05-19 23:12:25
651
原创 网络I/O (1) socket()
网络IO是网络通信中的核心概念,涉及客户端与服务端之间的数据传输。无论是微信发送消息、抖音播放视频、GitHub克隆代码,还是共享单车解锁、智能家居控制,都依赖于网络IO实现即时数据传输。网络通信通过socket()方法实现,Linux中常用的socket类型包括TCP、UDP等,端口绑定和监听是建立连接的关键步骤。网络编程中,bind()用于绑定端口,listen()用于监听连接请求,accept()用于接收客户端连接。为提高效率,避免“一请求一线程”的开销,可采用线程池、事件驱动或协程等技术优化资源管理
2025-05-19 23:09:11
424
原创 服务计算作业-docker实验报告
如题,此次实验报告为根据课件进行的docker学习目录目录安装docker并测试部署mysqlgolang容器化安装docker首先先尝试使用docker,再由跑出来的推荐命令安装上docker。结果如下尝试跑hello world的时后发现失败了想起是没加到用户组中,以下尝试解决发现失败了,之后只好在每个命令前面加上sudo ,也才刚发现之前的docker version的结果是错的 以下补上docker检查:helloworld:随后是运行bash:本地镜像库:
2020-12-28 20:23:28
750
原创 服务计算-开发 web 服务程序
概述开发简单 web 服务程序 cloudgo,了解 web 服务器工作原理。任务目标熟悉 go 服务器工作原理基于现有 web 库,编写一个简单 web 应用类似 cloudgo。使用 curl 工具访问 web 程序对 web 执行压力测试任务要求编程 web 服务程序 类似 cloudgo 应用。支持静态文件服务支持简单 js 访问提交表单,并输出一个表格(必须使用模板)使用 curl 测试,将测试结果写入 README.md使用 ab 测试,将测试结果写入 RE
2020-11-23 02:30:50
182
原创 服务计算 - 修改、改进 RxGo 包
ReactiveXReactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、JavaScript和C++,Rx近几年越来越流行了,现在已经支持几乎全部的流行编程语言了,Rx的大部分语言库由ReactiveX这个组织负责维护,比较流行的有RxJava/RxJS/Rx.NET尝试使用pmlpml/RxGo
2020-11-09 20:56:34
206
原创 go程序包开发,复杂命令行支持
课程任务了解 Cobra包,使用 cobra 命令行生成一个简单的带子命令的命令行程序模仿 cobra.Command 编写一个 myCobra 库将带子命令的命令行处理程序的 import (“github.com/spf13/cobra”) 改为 import (corbra“gitee.com/yourId/yourRepo”)使得命令行处理程序修改代价最小,即可正常运行了解Cobra包cobra 的主要功能为提供简易的子命令行模式,如 app server, app fetch 等
2020-10-27 02:41:03
180
原创 服务计算-程序包开发,读简单配置文件 v1
目标熟悉程序包的编写习惯(idioms)和风格(convetions)熟悉 io 库操作使用测试驱动的方法简单 Go 程使用事件通知本次实验目标读取该配置文件,并保持监听实验要求要求分析本次任务要求实现读取ini文件,观察实验要求后发现,代码主要需要实现的是一个ini读取包,这里就写一个ini_reader包,决定先写init的测试与函数,后写watch函数初始化根据操作系统选择初始化注释符初始化测试如图,ANNOTATION是全局函数,用来标识注释用的代码结果
2020-10-19 20:39:42
170
原创 CLI 命令行实用程序开发基础
理解CLICLI(Command Line Interface)实用程序是Linux下应用开发的基础。为使用命令行与操作系统交互。环境ubuntu, vscode, go1.13.8GOLANG OS包与FLAG包处理参数测试首先是OS包的测试如下package mainimport ( "fmt" "os")func main() { for i, a := range os.Args[1:] { fmt.Printf("Argument %d is %s\n", i+1
2020-10-12 03:21:21
409
1
原创 服务计算作业2-golang冒泡排序TDD
TDD什么是TDD?TDD是测试驱动开发(Test-Driven Development)的英文简称TDD原则以下几个TDD原则,可以简单的构建TDD在脑海中的架构,这次实验我准备使用TDD并以golang为语言编写一个简单的冒泡排序算法。后续的编写也会根据以下原则出发。独立测试不同代码块之间需相互独立,且有自己的测试测试列表每新添加一个功能,都需将代码测试加入测试列表测试驱动由新增的测试来引导代码的发展,新加功能时,需先编写测试代码及时重构发现代码冗余时,及时对代码进行重构,保持
2020-09-27 23:11:22
171
原创 服务计算 Golang 在 ubuntu 环境下的配置与测试
服务计算 Golang 在 ubuntu 环境下的配置与测试Golang 简介Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。有强烈的格式要求(毕竟是google开发的嘛,方便员工交接),并发这个特性使其在区块链、服务器等场景下经常为开发语言,京东就是使用golang开发的一个例子。系统环境ubuntu 20.04.1...
2020-09-21 22:23:57
301
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人