欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • Linux后端开发工程实践
      • 作者:编者:万木春|责编:张涛
      • 出版社:人民邮电
      • ISBN:9787115625625
      • 出版日期:2024/01/01
      • 页数:391
    • 售价:47.92
  • 内容大纲

        本书全面介绍了Linux后端开发的相关知识和技能,涵盖了Linux系统的各种功能和工具、Linux编程的相关知识和技能,以及开发后端服务和应用程序的内容。本书分为15章,主要内容包括Linux后端开发概述,开发环境搭建,服务器运维,shell编程简介,实现简易shell,使用Git管理代码,编译、链接、运行与调试,后端服务编写,网络通信基础,I/O模型与并发,公共代码提炼,应用层协议设计与实现,MyRPC框架设计与实现以及微服务集群的构建等。
        本书讲解通俗易懂,实例丰富,适合C/C++开发人员、Linux后端开发人员、对Linux后端开发感兴趣或者希望从事Linux后端开发的人员阅读,也适合作为高等院校计算机相关专业师生的学习用书及培训学校的教材。
  • 作者介绍

        万木春(笔名),资深的后端开发工程师,在Linux后端开发领域深耕10多年;曾在字节跳动等互联网公司从事后端开发工作;目前,在从事金融领域相关业务的设计、架构搭建与研发工作;拥有丰富的实践经验,擅长解决复杂的技术难题。
  • 目录

    第1章  概述
      1.1  本书不会涉及的内容
      1.2  本书专注的内容
      1.3  为什么这么安排
      1.4  Linux是什么
      1.5  后端开发是什么
      1.6  您将学到什么
      1.7  代码目录结构说明
        1.7.1  目录MyRPC
        1.7.2  第三方依赖
      1.8  如何学习Linux后端开发
        1.8.1  坚持不懈的心态
        1.8.2  以问题作为切入点
        1.8.3  动手实践和创造
      1.9  本章小结
    第2章  开发环境搭建
      2.1  本地开发环境
        2.1.1  代码编辑器
        2.1.2  终端管理器
        2.1.3  测试工具
      2.2  远端运行环境
      2.3  本章小结
    第3章  服务器运维
      3.1  什么是shell
      3.2  shell下的命令行
        3.2.1  命令行的组成
        3.2.2  大部分命令具备的共性
        3.2.3  使用man命令查询在线手册
        3.2.4  命令和文件补全
        3.2.5  命令行的通配符和特殊符号
        3.2.6  内置命令与外部命令
      3.3  基本的命令操作
        3.3.1  屏幕相关
        3.3.2  目录和文件相关
        3.3.3  进程相关
        3.3.4  网络相关
        3.3.5  系统相关
        3.3.6  用户相关
        3.3.7  命令执行相关
        3.3.8  日期相关
      3.4  man的替代工具
      3.5  命令黏合剂:管道机制
        3.5.1  如何使用管道
        3.5.2  行过滤命令grep
        3.5.3  文本分析处理工具awk
        3.5.4  流编辑命令sed
        3.5.5  参数传递命令xargs
        3.5.6  其他常用的辅助命令
      3.6  命令输入输出的重定向
      3.7  命令的连续执行

      3.8  vi编辑器简介
      3.9  本章小结
    第4章  shell编程简介
      4.1  什么是shell编程
      4.2  “helloworld”程序
      4.3  shell的执行过程
      4.4  调试
      4.5  执行方式的不同
        4.5.1  直接执行
        4.5.2  使用bash来执行
        4.5.3  使用source或英文点号“.”来执行
      4.6  变量
        4.6.1  环境变量
        4.6.2  自定义变量
        4.6.3  特殊变量
        4.6.4  在C语言中操作环境变量
        4.6.5  查看进程运行时的环境变量
      4.7  选择与判断
        4.7.1  test命令与判断符号“[]”
        4.7.2  if语句
        4.7.3  case语句
      4.8  循环
        4.8.1  while循环
        4.8.2  until循环
        4.8.3  for循环
        4.8.4  break语句和continue语句
      4.9  函数
      4.10  命令选项
      4.11  本章小结
    第5章  实现简易shell
      5.1  实现的特性
      5.2  执行逻辑
      5.3  实现原理
        5.3.1  命令行解析
        5.3.2  特性实现
        5.3.3  函数介绍
      5.4  编码实现
      5.5  特性测试
      5.6  本章小结
    第6章  使用Git管理代码
      6.1  初始化
        6.1.1  安装Git工具
        6.1.2  设置用户名和邮箱
        6.1.3  创建仓库
        6.1.4  创建readme.md文件
        6.1.5  创建.gitignore文件
      6.2  核心概念
      6.3  常用操作
        6.3.1  查看当前仓库的状态
        6.3.2  添加文件

        6.3.3  删除文件
        6.3.4  回退变更
        6.3.5  查看提交日志
        6.3.6  查看差异
        6.3.7  分支管理
        6.3.8  其他操作
      6.4  团队协作
        6.4.1  同步代码仓库
        6.4.2  创建自己的分支
        6.4.3  推送分支到远程仓库
        6.4.4  发起合入请求
        6.4.5  发布变更
      6.5  本章小结
    第7章  编译、链接、运行与调试
      7.1  单文件程序的编译与链接
        7.1.1  预处理阶段
        7.1.2  编译阶段
        7.1.3  汇编阶段
        7.1.4  链接阶段
        7.1.5  ELF概述
        7.1.6  符号解析与重定位
      7.2  工程项目的编译与链接
        7.2.1  makefile
        7.2.2  一个实例
        7.2.3  实现简易的make命令
        7.2.4  常用的编译和链接选项
      7.3  动态链接与静态链接
      7.4  Linux动态链接库规范
        7.4.1  动态链接库的命名
        7.4.2  动态链接库的三个不同名称
        7.4.3  动态链接库的管理
      7.5  自定义的动态链接库
        7.5.1  相关源代码
        7.5.2  生成携带“soname”的动态链接库
        7.5.3  生成不携带“soname”的动态链接库
      7.6  进程的内存模型
        7.6.1  进程的虚拟地址空间布局
        7.6.2  栈与堆的区别
        7.6.3  经典问题剖析
      7.7  调试程序
        7.7.1  gdb的启动
        7.7.2  gdb常用命令
      7.8  本章小结
    第8章  后端服务编写
      8.1  守护进程
        8.1.1  什么是守护进程
        8.1.2  守护进程如何编写
        8.1.3  代码实现
      8.2  设置资源限制
      8.3  信号处理

      8.4  加载配置功能
      8.5  命令行参数解析
      8.6  日志输出功能
      8.7  服务启停脚本
        8.7.1  加载系统自带的shell函数
        8.7.2  服务相关变量声明
        8.7.3  服务启动函数
        8.7.4  服务停止函数
        8.7.5  服务重启函数
        8.7.6  服务状态查看函数
        8.7.7  case语句
      8.8  本章小结
    第9章  网络通信基础
      9.1  TCP/IP协议栈概述
      9.2  物理层与数据链路层
        9.2.1  物理层
        9.2.2  数据链路层
      9.3  网络层
        9.3.1  网际协议的特点
        9.3.2  IP数据报格式
        9.3.3  IP地址
        9.3.4  路由选择
        9.3.5  ARP与RARP
        9.3.6  ICMP
      9.4  传输层
        9.4.1  UDP
        9.4.2  TCP
      9.5  网络编程接口
        9.5.1  TCP网络通信的基本流程
        9.5.2  socket网络编程
      9.6  TCP经典异常场景分析
        9.6.1  场景1:Addressalreadyinuse
        9.6.2  场景2:Connectionrefused
        9.6.3  场景3:Brokenpipe
        9.6.4  场景4:Connectiontimeout
        9.6.5  场景5:Connectionresetbypeer
      9.7  本章小结
    第10章  I/O模型与并发
      10.1  I/O模型概述
        10.1.1  阻塞I/O
        10.1.2  非阻塞I/O
        10.1.3  I/O多路复用
        10.1.4  异步I/O
      10.2  并发实例——EchoServer
        10.2.1  Echo协议
        10.2.2  协程
        10.2.3  benchmark工具
        10.2.4  单进程
        10.2.5  多进程
        10.2.6  多线程

        10.2.7  进程池
        10.2.8  进程池
        10.2.9  线程池
        10.2.10  简单的领导者-跟随者模型
        10.2.11  I/O多路复用之select(单进程)-阻塞I/O
        10.2.12  I/O多路复用之poll(单进程)-阻塞I/O
        10.2.13  I/O多路复用之epoll(单进程)-阻塞I/O
        10.2.14  I/O多路复用之epoll(单进程)-Reactor
        10.2.15  I/O多路复用之epoll(单进程)-Reactor-ET模式
        10.2.16  I/O多路复用之epoll(单进程)-Reactor-协程池
        10.2.17  I/O多路复用之epoll(线程池)-Reactor
        10.2.18  I/O多路复用之epoll(线程池)-Reactor-HSHA
        10.2.19  I/O多路复用之epoll(线程池)-Reactor-MS
        10.2.20  I/O多路复用之epoll(进程池)-Reactor-协程池
      10.3  基准性能对比与分析
        10.3.1  非I/O复用模型对比
        10.3.2  I/O复用模型对比
        10.3.3  epoll下LT模式和ET模式对比
        10.3.4  epoll下协程池模式和非协程池模式对比
        10.3.5  HSHA模式下工作线程和I/O线程写应答对比
        10.3.6  MS模式下MainReactor线程是否监听可读事件对比
        10.3.7  epoll下动态和固定超时时间对比
        10.3.8  epoll下进程池和线程池对比
      10.4  本章小结
    第11章  公共代码提炼
      11.1  参数列表
      11.2  命令行参数解析
      11.3  字符串
      11.4  配置文件读取
      11.5  延迟执行
      11.6  单例模板
      11.7  百分位数计算
      11.8  鲁棒的I/O
      11.9  时间处理
      11.10  状态码
      11.11  转换
      11.12  socket选项
      11.13  “龙套”
      11.14  日志文件
      11.15  服务锁
      11.16  本章小结
    第12章  应用层协议设计与实现
      12.1  协议概述
      12.2  协议分类
        12.2.1  按编解码方式对协议进行分类
        12.2.2  按边界划分方式对协议进行分类
      12.3  协议评判
      12.4  自定义协议的优缺点
        12.4.1  优点
        12.4.2  缺点

      12.5  协议设计
        12.5.1  协议消息格式
        12.5.2  协议设计权衡
      12.6  预备知识
        12.6.1  大小端
        12.6.2  字节序
        12.6.3  字节序的互转
        12.6.4  内存对象与布局
        12.6.5  指针类型的本质
        12.6.6  序列化与反序列化
      12.7  其他协议
        12.7.1  HTTP消息格式
        12.7.2  RESP消息格式
      12.8  协议实现
        12.8.1  协议编解码抽象
        12.8.2  MySvr实现
        12.8.3  HTTP实现
        12.8.4  RESP实现
        12.8.5  混合协议实现
        12.8.6  共性总结
      12.9  本章小结
    第13章  MyRPC框架设计与实现
      13.1  框架概述
      13.2  并发模型
      13.3  框架具体实现
        13.3.1  服务启动流程
        13.3.2  事件分发流程
        13.3.3  服务器端请求处理流程
        13.3.4  客户端请求处理流程
        13.3.5  分布式调用栈追踪
        13.3.6  超时管理
        13.3.7  本地协程变量管理
        13.3.8  业务层的并发
      13.4  示例服务Echo
        13.4.1  目录结构划分
        13.4.2  服务描述文件
        13.4.3  服务启动
        13.4.4  业务处理
        13.4.5  配置与辅助文件
        13.4.6  通用的服务启停脚本
        13.4.7  接口测试
      13.5  工具集合
        13.5.1  服务代码生成工具myrpcc
        13.5.2  接口测试工具myrpct
        13.5.3  接口压测工具myrpcb
      13.6  本章小结
    第14章  微服务集群
      14.1  集群架构概述
      14.2  持久化层
        14.2.1  Redis服务

        14.2.2  authstore服务
        14.2.3  userstore服务
      14.3  业务逻辑层
        14.3.1  auth服务
        14.3.2  user服务
      14.4  接入层
        14.4.1  目录结构
        14.4.2  代码与配置
        14.4.3  接口测试
      14.5  本章小结
    第15章  回顾总结
      15.16  种思维模式
        15.1.1  不要被编程语言所限制
        15.1.2  掌握多种编程语言是必然的
        15.1.3  计算机本身就是一个状态机
        15.1.4  动手是最好的实践
        15.1.5  依靠工具提高效率和质量
        15.1.6  像工匠一样为自己创造工具
      15.2  写在最后