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

网页设计与网站建设的区别自己建设小城市网站得多少钱

网页设计与网站建设的区别,自己建设小城市网站得多少钱,网站后台管理界面模板,郑州餐饮网站建设哪家好数据库原理与使用全解析:从理论到实践 文章大纲 数据库基础概念 数据库的定义与核心特性数据库管理系统(DBMS)的作用SQL语言的角色与分类 数据库体系结构 三级模式结构(外模式/模式/内模式)数据独立性原理&#xff08…

数据库原理与使用全解析:从理论到实践


文章大纲

  1. 数据库基础概念

    • 数据库的定义与核心特性
    • 数据库管理系统(DBMS)的作用
    • SQL语言的角色与分类
  2. 数据库体系结构

    • 三级模式结构(外模式/模式/内模式)
    • 数据独立性原理(逻辑/物理)
    • 客户端-服务器架构
  3. 存储引擎与数据存储

    • 常见存储引擎对比(InnoDB vs MyISAM)
    • 数据页结构与B+树索引
    • 事务日志(Redo/Undo Log)
  4. SQL语法与优化

    • DDL/DML/DQL/DCL详解
    • 索引设计与执行计划分析
    • 慢查询优化策略
  5. 事务与并发控制

    • ACID特性与事务隔离级别
    • 锁机制(共享锁/排他锁)
    • MVCC多版本并发控制
  6. 高可用与分布式

    • 主从复制原理
    • 分库分表策略
    • CAP理论与BASE原则

7.总结与模型对比


第一部分:数据库基础概念


1.1 什么是数据库?

定义:数据库(Database)是结构化数据的集合,通过计算机系统实现持久化存储和管理。
核心特性

  • 持久性:数据断电不丢失
  • 共享性:多用户并发访问
  • 独立性:逻辑与物理存储分离
45% 30% 20% 5% 数据库核心组件占比 数据文件 索引结构 日志文件 缓存池

1.2 数据库管理系统(DBMS)

三大核心功能

  1. 数据定义:通过DDL创建表结构
  2. 数据操纵:通过DML增删改查
  3. 数据控制:通过DCL管理权限
应用程序
DBMS
磁盘数据文件
查询缓存
事务管理器

1.3 SQL语言分类

类型全称示例语句
DDLData Definition LangCREATE TABLE students (...)
DMLData Manipulation LangINSERT INTO students VALUES
DQLData Query LangSELECT * FROM students
DCLData Control LangGRANT SELECT ON db TO user

第二部分:数据库体系结构


2.1 三级模式结构

映射
映射
外模式
+用户视图
+局部逻辑结构
模式
+全局逻辑结构
+表关系定义
内模式
+物理存储结构
+文件组织方式

数据独立性

  • 逻辑独立性:修改模式不影响外模式
  • 物理独立性:修改内模式不影响模式

2.2 C/S架构通信流程

Client Server Storage SQL查询请求 读取数据页 返回原始数据 执行查询优化 返回结果集 Client Server Storage

第三部分:存储引擎与数据存储


3.1 InnoDB vs MyISAM

特性InnoDBMyISAM
事务支持支持ACID不支持
锁粒度行级锁表级锁
外键支持不支持
崩溃恢复通过Redo Log恢复需手动修复

3.2 B+树索引结构

根节点
内部节点1
内部节点2
叶子节点1
叶子节点2
叶子节点3
叶子节点4

特点

  • 叶子节点形成有序双向链表
  • 非叶子节点只存储索引键
  • 所有数据存储在叶子节点

3.3 数据存储示例

CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50),age INT
) ENGINE=InnoDB;
内存缓冲池
数据页
行数据:id=1,name='Alice',age=25
行数据:id=2,name='Bob',age=30
Undo Log
Redo Log

4. select实战案例:TCP服务端多客户端管理

4.1 场景需求与设计目标

  • 需求:单线程服务端同时处理多个客户端连接,实现消息转发
  • 核心挑战
    1. 动态管理客户端连接集合
    2. 高效检测可读/可写事件
    3. 正确处理连接断开和异常

4.2 代码框架设计

// 初始化监听socket
int listen_fd = socket(AF_INET, SOCK_STREAM, 0);// 绑定并监听
bind(listen_fd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
listen(listen_fd, 5);// 创建fd_set集合
fd_set read_fds;
int max_fd = listen_fd;while(1) {FD_ZERO(&read_fds);FD_SET(listen_fd, &read_fds);// 添加所有客户端socket到集合for(int i=0; i<MAX_CLIENTS; i++) {if(client_fds[i] > 0) {FD_SET(client_fds[i], &read_fds);max_fd = (client_fds[i] > max_fd) ? client_fds[i] : max_fd;}}// select等待事件int ret = select(max_fd+1, &read_fds, NULL, NULL, NULL);// 处理新连接if(FD_ISSET(listen_fd, &read_fds)) {int new_fd = accept(listen_fd, ...);add_client(new_fd);}// 处理客户端消息for(int i=0; i<MAX_CLIENTS; i++) {if(FD_ISSET(client_fds[i], &read_fds)) {handle_client_message(client_fds[i]);}}
}

4.3 关键技术点解析

Client1 Server Client2 内核 connect() add to fd_set connect() add to fd_set select() 返回就绪事件 read() send data write() loop [select循环] Client1 Server Client2 内核

5. select模型深入解析与性能优化

5.1 select的局限性及突破方案

FD_SETSIZE限制(Linux默认1024)
graph TDA[FD_SETSIZE限制] --> B[方案1:重新编译内核]A --> C[方案2:使用动态数组管理]A --> D[方案3:改用epoll/kqueue]C --> C1[自定义fd集合结构]C --> C2[多select线程分区处理]
时间复杂度O(n)问题
  • 线性扫描缺陷:每次调用select需遍历所有fd
  • 优化方案
    1. 维护活跃fd列表
    2. 使用位图快速定位
    3. 分批次处理

5.2 内核实现原理揭秘

内核空间
用户空间
遍历fd集合
检查设备就绪状态
修改就绪位图
唤醒进程
调用select
拷贝fd_set到内核

5.3 性能调优实践

  1. 超时参数动态调整
    struct timeval timeout;
    timeout.tv_sec = (active_clients > 100) ? 0 : 1;
    timeout.tv_usec = 500000;
    
  2. 事件处理优先级队列
    if(FD_ISSET(high_priority_fd, &read_fds)) {process_high_priority();
    }
    
  3. 批量读写操作
    while(bytes_read = read(fd, buf, BUF_SIZE) > 0) {// 持续读取直到EAGAIN
    }
    

6. 跨平台差异与开发注意事项

6.1 不同系统实现差异

特性LinuxWindowsmacOS
fd_set类型位数组结构体位数组
最大fd数1024641024
超时参数精度微秒级毫秒级微秒级
异常检测支持部分支持完全支持

6.2 常见错误处理

  1. EBADF错误
    if(FD_ISSET(fd, &read_fds)) {if(getsockopt(fd, SOL_SOCKET, SO_ERROR, &err, &len) == 0) {// 安全操作}
    }
    
  2. EINTR信号中断
    ret = select(...);
    if(ret == -1 && errno == EINTR) {// 重新调用select
    }
    
  3. 内存覆盖问题
    fd_set tmp_fds;
    memcpy(&tmp_fds, &read_fds, sizeof(fd_set)); // 防止原始集合被修改
    

7. 总结与模型对比

7.1 各I/O模型性能对比

barCharttitle 连接数 vs 吞吐量xAxis 100连接 1000连接 10000连接series "select" 90 85 30series "epoll" 95 93 90series "kqueue" 96 92 88

7.2 select适用场景

  1. 跨平台兼容性要求高
  2. 连接数 < 1000
  3. 简单事件检测需求
  4. 嵌入式系统开发

扩展阅读

  • 《UNIX网络编程 卷1》
  • Linux man-pages select(2)
  • epoll原理深度分析(见下期专题)

希望本文能对你有所帮助!


文章转载自:

http://A8tf3Syz.sLfym.cn
http://4bpcyb2y.sLfym.cn
http://MvRnqBn0.sLfym.cn
http://rkaxy12j.sLfym.cn
http://YhAEcBE2.sLfym.cn
http://NCSmgsAU.sLfym.cn
http://MoWfpRfp.sLfym.cn
http://IaGPhA3q.sLfym.cn
http://QfwruQg6.sLfym.cn
http://ehn9MSAM.sLfym.cn
http://EcsRHgO1.sLfym.cn
http://IMP6peT8.sLfym.cn
http://a44RSP28.sLfym.cn
http://sb23gPgk.sLfym.cn
http://T7e8BpO2.sLfym.cn
http://QGW0n7PL.sLfym.cn
http://NssmkUyD.sLfym.cn
http://VWRdxrtV.sLfym.cn
http://2dqpjwz5.sLfym.cn
http://ITLGD4Wf.sLfym.cn
http://jjWI7fRj.sLfym.cn
http://t0jMeU67.sLfym.cn
http://vGEynbwm.sLfym.cn
http://bMi4iUCP.sLfym.cn
http://KCt8AHDR.sLfym.cn
http://twuq9Rla.sLfym.cn
http://6kgpJc3T.sLfym.cn
http://IxDDU983.sLfym.cn
http://KO6LrkER.sLfym.cn
http://VwGl6tl6.sLfym.cn
http://www.dtcms.com/wzjs/697806.html

相关文章:

  • wordpress 绑定多个域名如何做网站优化seo
  • 网站建设哪里比较好做视频网站的备案要求吗
  • 合肥网站优化网站建设工资
  • 成都最好的汽车网站建设网站的基本布局
  • 众筹网站建设wordpress 0day漏洞
  • 韶关东莞网站建设江苏网站建设联系方式
  • 网站标题关键词用什么隔开wordpress搜索产品伪静态
  • 专家库 网站 建设方案怎样制作灯笼
  • 视频分享网站模板广州谷歌seo公司
  • 网站设计的工作内容网站开发是网站后台开发吗
  • 上海网站建设免费推ps怎样做网站首页图
  • 交通运输行业网站建设一个虚拟机怎么做两个网站
  • 微网站模板 餐饮高校网站建设需求分析报告
  • 深圳网站制作公司新闻韩国平面设计网站
  • 重庆网站整合营销关于网页设计的论文范文
  • 一般电脑网站建设及运营多少钱seo网站优化方案案例
  • 免费做图网站有哪些上海微盟企业发展有限公司
  • 建站一条龙的服务流程是怎么样的网站上线 模板
  • 织梦网站管理系统哪个网站做高中的题好
  • 建设跨境电商网站企业模块
  • 安康网站定制厂家网站被黑客入侵怎么办
  • 沂水网站优化php做网站开源项目
  • 怎样做视频网站的外链搭建自己的邮件服务器
  • 网站主题咋做wordpress图像验证码
  • 可以不使用备案的网站名吗网页开发的公司
  • 江苏城乡建设学校网站旅游网站开发的意义相关资料
  • 网站建设读书笔记东莞专业做外贸网站的公司
  • 现在最好的企业网站管理系统怎样查看一个网站的域名
  • 婚恋网站建设技巧可以建设网站的软件
  • 小米路由器建设网站色彩搭配 网站