Linux网络编程
无论是 Web 服务器处理网页请求、即时通讯工具的消息传递,还是在线游戏的数据同步,都离不开 Socket 的支持。Socket 的本质,是将复杂的网络通信抽象成一个简单的接口,让开发者可以通过像操作文件一样的方式实现数据的收发。这也是”Unix中万物皆文件”。本文将以 TCP Socket 编程为例,逐步拆解从服务器端到客户端的交互过程,解析系统调用的作用,建立清晰的理解框架。
什么是 Socket?Socket 提供了一种通信的端点,就像电器与电源的插座。通过 Socket,两个设备之间可以建立通信链接。程序员只需要按照 Socket 提供的接口进行操作,不需要关心底层的复杂网络协议。
Socket 的现代实现被称为 Berkeley Sockets,因为它起源于 Berkeley Unix(BSD Unix)中,是基于 Unix 操作系统设计的。Berkeley Sockets 的出现奠定了今天网络编程的基础。
在Web浏览器与Web服务器通信:浏览器通过 Socket 向服务器发送 HTTP 请求,服务器通过 Socket 返回 HTTP 响应。
在即时通讯工具中传递消息:客 ...
软件项目管理课程
软件项目管理(一)项目管理的定义项目a temporary endeavor undertaken to create a unique product, service, or result.(一个临时性的工作,为了创造一个独特的产品、服务或结果)
项目属性
过程上,临时性的有时限性、不确定性、逐步精化
输入:特定目的 输出:推动变革创造价值
投入上,有发起人、需要资源、有经理人
项目目标成功的项目意味着满足三个目标:Scope goal、Time goal、Cost goal 并让发起者满意
项目约束
六个约束:成本、风险、资源、质量、时间、范围(Cost, Risk, Resource, Quality, Time, Scope)
怎么平衡约束?
项目群管理
项目群:一组相互关联的项目,被协调和管理以获得更好的效益,这些效益单独管理项目无法获得
将项目合并为组,有助于管理、招聘员工、采购以及其他工作快捷化,而且要经济些。
项目组合管理
项目组合:一组项目、子项目、项目群、子项目群、以及运营工作,被协调和管理以实现一些特定的战略目标
项目Projects、项目群 ...
Avalonia 全栈开发课程
读写数据库如何在Avalonia中建立数据库连接,如何在数据库中插入数据
Mvvm设计模式:Model、ViewModel、View 客户端开发的一种设计模式(MVC是服务端开发的设计模式)
从Model开始,添加新类作为模型类12345public class Poetry { public int Id { get; set; } public string Name { get; set; } = string.Empty;}
service层,添加新类作为服务类 接口IPoetryStorage,实现类PoetryStorage123public interface IPoetryStorage { Task InsertAsync(Poetry poetry);}
这是一个异步操作,函数名以Async结尾,返回值是Task,参数是Poetry类型的对象异步操作:不会阻塞当前线程,而是在另一个线程上执行,执行完毕后会通知当前线程
什么时候用异步操作? 当操作比较耗时的时候,比如 ...
springboot注册
注册
请求参数有两个:username和password,分别表示用户名和密码。请求参数是通过URL传递的,如`/login?username=admin&password=123456
响应数据: code(相应码,0表示成功,1表示失败)、message(响应消息)、data(响应数据)。12345{ "code": 0, "message": "登录成功", "data": null}
定义一个有如上三个成员变量的result类,用于封装响应数据,spring自动将其转换为json格式返回给前端。
Result.java12345678910111213141516171819@AllArgsConstructor@NoArgsConstructorpublic class Result<T> { private int code; private String message; priv ...
mybatis
springboot整合mybatismodel类 Liujinhe.java12345678910111213141516171819package org.jetos.neu.demooo.model;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import java.sql.Timestamp;@Data@NoArgsConstructor@AllArgsConstructorpublic class LiuJinHe { private int id; private String name; private int age; private String usage; private Timestamp createTime;}
建表 Liujinhe1234567891011121314151617181920212223242526CREATE DATABASE IF NOT EXISTS mydb ...
springboot的一些项目依赖
创建项目依赖(单体服务器):Docker Compose Support项目会自动创建一个名为compose.yaml的Docker Compose文件。在这个文件中,已经定义了以下服务:
123456789101112131415161718192021services: mysql: image: 'mysql:latest' environment: - 'MYSQL_DATABASE=mydatabase' - 'MYSQL_PASSWORD=secret' - 'MYSQL_ROOT_PASSWORD=verysecret' - 'MYSQL_USER=myuser' ports: - '3306:3306' # x:y x是宿主机端口,y是容器端口 rabbitmq: image: 'rabbitmq:latest' environment: ...
Welcome to Skye's Cottage!
在那片远离尘器的山谷深处,有一间小小的木屋,四周环绕着翠绿的森林和闪烁的星空。这里是“Skye’s Cottage”,一位不太擅长魔法的程序员–Skye–的家。尽管她是个魔法王国里的编程菜鸟,却怀揣着满腔热情。
Skye本是一位喜欢摆弄电脑的小巫师,但无论是施展魔法还是编写代码,总是免不了出错。她的魔法不是让扫帚飞起来,而是让它卡在树枝间摇摇晃晃。她的代码也经常运行一半就报错,满屏的红色提示好像在嘲笑她的“废柴”身份。
但 Skye并不气馁。每个清晨,她都会打开古老的笔记本电脑,试图修复昨天崩溃的程序。窗外的鸟儿唱着歌,风儿轻轻吹过,仿佛在鼓励她继续努力。即使偶尔她会坐在木屋前的台阶上发呆,望着远处发问:“到底哪里错了啊?”,但心中的火焰从未熄灭。
Skye 相信,无论是代码还是魔法,失败只是通往成功的一部分。每当她解决一个小小的 bug,都会欢呼雀跃,仿佛自己已经打败了最强大的魔法生物。虽然她离成为一名伟大的程序员还有很远的路要走,但她明白,这段旅程才是最有趣的部分。
这里是 Skye’s Cottage,一个既有魔法也有代码的世界。无论你是想逃离现实,还是寻求一些编程灵感,欢迎走进 ...