Android 中 Activity 和 Fragment 的结合使用经典案例
学习笔记
0. 分析 Activity 与 Fragment 的区别,部分使用的差异
上一篇中我们分析了Activity 与 Fragment 的区别,部分使用的差异。
点我跳转上一篇
1. 单个 Activity
中使用多个 Fragment
这是最常见的用法之一,特别是在单屏幕应用中。通过在一个 Activity
中加载多个 Fragment
,你可以将 UI 划分为不同的模块,每个 Fragment
负责自己的布局和逻辑。
使用场景:
- 多页面布局的单屏应用(如多个选项卡、分步表单等)
- 侧边菜单、导航栏等界面设计
示例:
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 加载第一个 Fragmentif (savedInstanceState == null) {FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();transaction.replace(R.id.fragment_container, new FragmentA());transaction.commit();}}
}
在布局文件 activity_main.xml
中,使用一个容器 FrameLayout
来承载多个 Fragment
:
<FrameLayoutandroid:id="@+id/fragment_container"android:layout_width="match_parent"android:layout_height="match_parent" />
Fragment 示例:
public class FragmentA extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment_a, container, false);}
}
2. Tab 布局中的 Fragment
当你需要在 Activity
中实现多个选项卡(tab)页面时,TabLayout
与 ViewPager
配合使用是常见的方式。每个选项卡对应一个 Fragment
,并通过 ViewPager
进行滑动切换。
使用场景:
- 新闻应用、社交媒体应用的首页。
- 购物应用中的“首页”、“推荐”、“购物车”选项卡。
示例:
public class MainActivity extends AppCompatActivity {private ViewPager viewPager;private TabLayout tabLayout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewPager = findViewById(R.id.viewPager);tabLayout = findViewById(R.id.tabLayout);// 配置 ViewPager 和 TabLayoutViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());adapter.addFragment(new FragmentA(), "Tab 1");adapter.addFragment(new FragmentB(), "Tab 2");viewPager.setAdapter(adapter);tabLayout.setupWithViewPager(viewPager);}public class ViewPagerAdapter extends FragmentPagerAdapter {private List<Fragment> fragmentList = new ArrayList<>();private List<String> titleList = new ArrayList<>();public ViewPagerAdapter(FragmentManager fm) {super(fm);}public void addFragment(Fragment fragment, String title) {fragmentList.add(fragment);titleList.add(title);}@Overridepublic Fragment getItem(int position) {return fragmentList.get(position);}@Overridepublic int getCount() {return fragmentList.size();}@Overridepublic CharSequence getPageTitle(int position) {return titleList.get(position);}}
}
3. 主界面和详情界面的 Fragment 设计
在许多应用中,主界面展示一个列表(如新闻列表、商品列表),当用户点击某个条目时,会跳转到该条目的详情页面。这种场景下,Fragment
的使用可以极大简化界面设计,并且实现灵活的页面切换。
使用场景:
- 商品详情页面
- 新闻详细页面
示例:
在 MainActivity
中展示一个列表,点击列表项后展示详情页:
public class MainActivity extends AppCompatActivity implements OnItemClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 初始化 RecyclerView 等}@Overridepublic void onItemClick(Item item) {// 列表项点击后,切换到详情 FragmentFragmentTransaction transaction = getSupportFragmentManager().beginTransaction();transaction.replace(R.id.fragment_container, ItemDetailFragment.newInstance(item));transaction.addToBackStack(null); // 加入返回栈transaction.commit();}
}
在 ItemDetailFragment
中显示详细内容:
public class ItemDetailFragment extends Fragment {private static final String ARG_ITEM = "item";public static ItemDetailFragment newInstance(Item item) {ItemDetailFragment fragment = new ItemDetailFragment();Bundle args = new Bundle();args.putSerializable(ARG_ITEM, item);fragment.setArguments(args);return fragment;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.fragment_item_detail, container, false);// 获取传递的 Item 对象并显示Item item = (Item) getArguments().getSerializable(ARG_ITEM);// 显示详情return rootView;}
}
4. 侧滑菜单与 Fragment 结合使用
通过 DrawerLayout
可以实现应用中的侧滑菜单,侧滑菜单通常由一个 Fragment
组成,可以在主 Activity
中动态切换显示。
使用场景:
- 应用中的侧边栏菜单
- 设置页面等
示例:
public class MainActivity extends AppCompatActivity {private DrawerLayout drawerLayout;private ActionBarDrawerToggle toggle;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);drawerLayout = findViewById(R.id.drawer_layout);toggle = new ActionBarDrawerToggle(this, drawerLayout,R.string.navigation_drawer_open, R.string.navigation_drawer_close);drawerLayout.addDrawerListener(toggle);toggle.syncState();// 加载侧边栏 FragmentgetSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new SideMenuFragment()).commit();}
}
在侧边栏 SideMenuFragment
中处理点击事件,动态切换主界面内容。
5. 处理屏幕旋转或配置变化时的 Fragment
状态保存
在 Android 中,屏幕旋转或配置变化(如语言更改)时,Activity
会被销毁并重新创建。如果你在 Activity
中加载了 Fragment
,这些 Fragment
可能会被销毁。为避免重新加载或丢失数据,你可以通过 onSaveInstanceState()
和 onViewStateRestored()
来保存和恢复 Fragment
的状态。
使用场景:
- 保持列表滚动位置
- 防止屏幕旋转导致的数据丢失
示例:
在 Fragment
中保存和恢复状态:
public class MyFragment extends Fragment {private static final String KEY_POSITION = "position";private int position;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (savedInstanceState != null) {position = savedInstanceState.getInt(KEY_POSITION, 0);}}@Overridepublic void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putInt(KEY_POSITION, position);}// 在 onCreateView 中恢复滚动位置或其他状态
}
6. 支持多种屏幕大小的设计:Tab 变为列表
在平板和手机设备上,Fragment
可以用来支持不同的布局。例如,在平板上显示 Tab
或多个 Fragment
,而在手机上则使用列表和细节页面的单列布局。
使用场景:
- 平板和手机设备上不同的布局(响应式设计)
- 主屏幕在小屏设备上以列表显示,在大屏设备上显示多个
Fragment
示例:
在 MainActivity
中根据设备的大小来决定显示的布局:
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (findViewById(R.id.fragment_container) != null) {if (savedInstanceState != null) {return;}// 在平板设备上加载两个 FragmentFragmentTransaction transaction = getSupportFragmentManager().beginTransaction();transaction.replace(R.id.fragment_container, new FragmentA());transaction.replace(R.id.fragment_container_2, new FragmentB());transaction.commit();} else {// 在手机设备上加载一个 FragmentFragmentTransaction transaction = getSupportFragmentManager().beginTransaction();transaction.replace(R.id.fragment_container, new FragmentA());transaction.commit();}}
}
总结
这些是 Activity
和 Fragment
在 Android 开发中的常见使用案例。Fragment
作为一个灵活的 UI 组件,可以帮助开发者在应用中实现更加模块化、灵活的界面设计,并能够有效地支持不同的屏幕尺寸、设备方向等配置变化。通过合理的组合和管理,可以大大提升应用的用户体验和性能。
相关文章:
Android 中 Activity 和 Fragment 的结合使用经典案例
学习笔记 0. 分析 Activity 与 Fragment 的区别,部分使用的差异 上一篇中我们分析了Activity 与 Fragment 的区别,部分使用的差异。 点我跳转上一篇 1. 单个 Activity 中使用多个 Fragment 这是最常见的用法之一,特别是在单屏幕应用中。通…...
Http协议在网站中的体现
文章目录 1. Http协议简介2. 网站中的体现2.1 访问网站2.2 请求2.3 请求头2.4 请求方式2.5 响应 3. 总结 1. Http协议简介 HTTP(超文本传输协议) 是一种广泛应用于互联网上的应用层协议,用于在Web浏览器和Web服务器之间传输数据。HTTP协议定…...
CTF-WEB: php-Session 文件利用 [第一届国城杯 n0ob_un4er 赛后学习笔记]
step 1 搭建容器 教程 A5rZ 题目 github.com Dockerfile 有点问题,手动修复一下 FROM php:7.2-apacheCOPY ./flag /root COPY ./readflag / COPY ./html/ /var/www/html/ COPY ./php.ini /usr/local/etc/php/php.ini COPY ./readflag /readsecretRUN chmod 755 /var/www…...
《计算机视觉:瓶颈之辩与未来之路》
一、计算机视觉的崛起 计算机视觉是使用计算机模仿人类视觉系统的科学,让计算机拥有类似人类提取、处理、理解和分析图像以及图像序列的能力。它是一个多学科交叉的领域,与机器视觉、图像处理、人工智能、机器学习等领域密切相关。 计算机视觉行业可分为…...
黑皮书-计算机科学导论02
目录 第二部分:计算机硬件 第5章计算机组成 5.1中央处理单元 Ⅰ.算数逻辑单元 Ⅱ.控制单元 Ⅲ.寄存器 5.2主存储器 Ⅰ.随机存取存储器(RAM) Ⅱ.只读存储器(ROM) 高速缓冲存储器(Cache) 5.3输入/输出子系统 Ⅰ.非存储设备 Ⅱ.存储设备(辅助存…...
React--》如何高效管理前端环境变量:开发与生产环境配置详解
在前端开发中,如何让项目在不同环境下表现得更为灵活与高效,是每个开发者必须面对的挑战,从开发阶段的调试到生产环境的优化,环境变量配置无疑是其中的关键。 env配置文件:通常用于管理项目的环境变量,环境…...
初始Python篇(6)—— 字符串
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 字符串的常见操作 格式化字符串 占位符 f-string 字符串的 format 方法 字符串的编码与解码 与数据验证相关的方法 …...
【数字花园】个人知识库网站搭建:⑤本地构建+云服务器部署数字花园plus
目录 写在前面:数字花园的定义[[数字花园]]网站的构建原理包括三个步骤:[[我的数字花园搭建笔记]] 现在的部署流程一、本地操作详细教程-2.前置步骤(前面的文章都提过)-1.创建github中转库0. 本地环境配置基础环境:git…...
力扣题目 - 3264.K 次乘运算后的最终数组I
题目 还需要你前往力扣官网查看详细的题目要求 地址 1.给你一个整数数组 nums ,一个整数 k 和一个整数 multiplier 。2.你需要对 nums 执行 k 次操作,每次操作中:找到 nums 中的 最小 值 x ,如果存在多个最小值,选择最…...
Java常用 Date 时间格式化、Calender日历、正则表达式的用法
目录 1. SimpleDateFormat 日期格式化类 1.1 Date 类型转 String 1.2 String 类型转 Date 2. Calendar 日历类 3. 正则表达式 3.1 正则表达式的组成部分 3.2 手机号正则表达式 3.3 常用密码校验正则表达式 1. SimpleDateFormat 日期格式化类 SimpleDateFormat 是Java中…...
网页爬虫技术全解析:从基础到实战
引言 在当今信息爆炸的时代,互联网上的数据量每天都在以惊人的速度增长。网页爬虫(Web Scraping),作为数据采集的重要手段之一,已经成为数据科学家、研究人员和开发者不可或缺的工具。本文将全面解析网页爬虫技术&…...
细说STM32F407单片机SPI基础知识
目录 一、 SPI接口和通信协议 1、 SPI硬件接口 (1)MOSI(Master Output Slave Input) (2)MISO(Master Input Slave Output) (3)SCK 2、SPI传输协议 (1)CPHA0时的数据传输时序 …...
【OJ题解】面试题三步问题
个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 📘 基础数据结构【C语言】 💻 C语言编程技巧【C】 🚀 进阶C【OJ题解】 📝 题解精讲 目录 **题目链接****解题思路****1. 问题分析****2. 递归思路****3. 优化方案&a…...
Linux vi/vim 编辑器使用教程
Linux vi/vim 编辑器使用教程 引言 Linux 系统中的 vi 和 vim 是非常强大的文本编辑器,它们以其高效性和灵活性而闻名。vim 是 vi 的增强版,提供了更多的功能和改进的用户界面。本文将详细介绍 vi/vim 的基本用法,包括打开文件、编辑文本、…...
长安大学《2024年812自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《长安大学812自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...
服务器一般装什么系统?
在服务器管理中,操作系统的选择是一个关键因素,它直接影响到服务器的稳定性、性能和可维护性。那么为什么有些服务器选择Linux,而不是Windows?选择合适的操作系统对服务器的性能和安全性有多么重要? 在众多操作系统中…...
Gitlab ci/cd 从0-1持续集成持续发布前端
关于gitlab ci/cd,就是实现DevOps的能力,即Development &Operations的缩写,也就是开发&运维。CI/CD 指的是软件开发的持续集成方法,我们可以持续构建、测试和部署软件。通过持续方法的迭代能使得我们减少在错误代码或者错…...
#GC4049. GC.2017---. GC.2016.六年级
这套题包含了历年真题,包含了前面我写的博客中的题目,十分重要!!!!要考试的同学可以参考一下!! 此套题限时3小时。 #GC4049. GC.2017.六年级.01.更多闰年 题目描述 在 smoj 网站上…...
UE5中实现Billboard公告板渲染
公告板(Billboard)通常指永远面向摄像机的面片,游戏中许多技术都基于公告板,例如提示拾取图标、敌人血槽信息等,本文将使用UE5和材质节点制作一个公告板。 Gif效果: 网格效果: 1.思路 通过…...
Android系统(android app和系统架构)
文章目录 AndroidAndroid Apps四大组件 Android系统Platform API之下:一个微笑内核adb(Android Debug Bridge) Android包管理机制Android的Intent机制参考 Android LinuxFrameworkJVM 在Linux/Java上做了个二次开发?并不完全是:Android定义…...
docker设置容器自动启动
说起开机自动启动应该很多人都遇到过,我们公司做的系统很多的中间件都没有设置开机自动启动然后中间修改问题又设置了一些临时生效的文件,开始的时候大家都不以为意,知道公司陆续有人离职入职管理交接一塌糊涂,项目成了历史遗留问…...
在 React 中,创建和嵌套组件、添加标签和样式、显示数据、渲染条件和列表、对事件做出响应并更新界面以及在组件间共享数据是常见的任务
文章目录 1. 创建和嵌套组件创建组件嵌套组件 2. 添加标签和样式添加标签添加样式 3. 显示数据显示静态数据显示动态数据 4. 渲染条件和列表条件渲染列表渲染 5. 对事件做出响应并更新界面处理事件 6. 在组件间共享数据使用 Context API react 如何创建和嵌套组件 如何添加标签…...
Android命令行工具--dumpsys
dumpsys 是一种在 Android 设备上运行的工具,可提供有关系统服务的信息。可以使用 Android 调试桥 (adb) 从命令行调用 dumpsys,获取在连接的设备上运行的所有系统服务的诊断输出。 此输出通常比您想要的更详细,因此请使用此页面上的命令行选…...
设计模式-访问者模式
背景 做一个对歌手的评价系统,观众分为男人和女人,分别对歌手做出自己的评价。 传统思路: 做一个person父类,Man 和 Woman分别继承自这个父类,在这两个类中执行各自操作。 问题: 可拓展性差࿰…...
Vue集成阿里云点播实现视频上传
实现方式有多种,如下是我的实现方式: 一、下载点播插件,在 public 下的 index.html 中引入阿里云点播需要的 js 插件,js 文件最好放在 cdn 上,,这里以放在 public 文件夹下的 static 文件夹中为例: <s…...
ByteByteGo-Forward/Reverse Proxy正/反向代理
原文链接 EP137: Proxy Vs Reverse proxy - ByteByteGo Newsletter 参考链接 Forward proxy vs. reverse proxy: Whats the difference? | TheServerSide 正向代理 (Forward Proxy) 位置:用户设备 和 互联网 之间 用途:保护客…...
[论文阅读] |智能体长期记忆与反思
写在前面:10月份的时候,联发科天玑9400发布,搭载这款旗舰 5G 智能体 AI 芯片的荣耀MagicOS9.0实现了一句话让手机自动操作美团点咖啡。很快商场实体店里便能看到很多品牌手机已经升级为智能体语音助手。下一步,这些智能体或许便能…...
Elasticsearch Kibana (windows版本) 安装和启动
目录 1.安装 2.启动 elasticsearch 3.启动 kibana 1.安装 elasticsearch下载,官网链接: Download Elasticsearch | Elastichttps://www.elastic.co/downloads/elasticsearch kibana下载,官网链接: Download Kibana Free | G…...
CSS系列(9)-- Transform 变换详解
前端技术探索系列:CSS Transform 变换详解 🔄 致读者:探索 CSS 变换的魔力 👋 前端开发者们, 今天我们将深入探讨 CSS Transform,学习如何创建引人注目的 2D 和 3D 变换效果。 2D 变换基础 Ὠ…...
bs4基本运用
1. bs4基本使用 1.1. 简介 bs4的全称为 BeautifulSoup。和lxml一样,是一个html的解析器,主要功能也是解析数据和提取数据 。 本模块作为了解模块,实际开发中很少用这个模块去解析数据,大家可能会想为什么这个模块会逐渐被淘汰&…...
skywalking 搭建 备忘录
基础环境 apache-skywalking-apm-9.6.0.tar.gz apache-skywalking-java-agent-9.1.0.tgz elasticsearch 7.14.1 采用dockers搭建 或者手动部署 kibana 可视化 应用 微服务版 consumer.jar eureka.jar 注册中心 provider.jar skywalking 地址 https://skywalkin…...
C# 和 go 关于can通信得 整理
在C#中开发CAN(Controller Area Network)通信接口时,确实有一些现成的NuGet包可以简化你的开发工作。这些库通常提供了与CAN硬件接口通信所需的基本功能,如发送和接收CAN消息。下面是一些常用的NuGet包: PCANBasic.NET…...
Unity类银河战士恶魔城学习总结(P179 Enemy Archer 弓箭手)
教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了敌人弓箭手的制作 Enemy_Archer.cs 核心功能 状态机管理敌人的行为 定义了多个状态对象(如 idleState、moveState、attackState 等),通过状态机管理敌人的…...
一、LRU缓存
LRU缓存 1.LRU缓存介绍2.LRU缓存实现3.LRU缓存总结3.1 LRU 缓存的应用3.2 LRU 缓存的优缺点 1.LRU缓存介绍 LRU是Least Recently Used 的缩写,意为“最近最少使用”。它是一种常见的缓存淘汰策略,用于在缓存容量有限时,决定哪些数据需要被删…...
基于python绘制数据表(上)
利用python绘制各种数据图表 绘制柱形图-源码 from openpyxl import Workbook from openpyxl.chart import BarChart, Reference# 创建工作薄 wb Workbook(write_onlyTrue) # 创建工作表 ws wb.create_sheet(月收入)# 准备数据 rows [(月份, 销售额),(1, 23),(2, 43),(3, …...
Python Segmentation fault错误定位办法
1. 说明 Python3执行某一个程序时,报Segmentation fault (core dumped)错,但没有告知到底哪里出错,无法查问题,这时就需要一个库faulthandler来帮助分析。 2. 安装faulthandler faulthandler在Python3.3之后成为标准库…...
快速在远程服务器执行命令、批量在多个服务器执行命令(基于sshpass的自定义脚本fastsh)
在日常服务器操作中,很多时候我们需要同时操作多个服务器。特别对于那些每个服务器都需要操作相同命令的场景,不断的切换命令会话窗口会比较麻烦。基于此,编写了本文中的 fastsh 脚本用于轻度解决这种问题,提高一定的便利性。 使…...
Java基于SpringBoot的企业OA管理系统,附源码
博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…...
SSM 垃圾分类系统——环保领域的创新引擎
第1章 概述 1.1 研究背景 随着现代网络技术发展,对于垃圾分类系统现在正处于网络发展的阶段,所以对它的要求也是比较严格的,要从这个系统的功能和用户实际需求来进行对系统制定开发的发展方式,依靠网络技术的的快速发展和现代通讯…...
websocker的java集成过程
第一步:引入依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 第二步设置配置类: // 需要注入Bean的话必须声明为配置类 Co…...
如何对小型固定翼无人机进行最优的路径跟随控制?
控制架构 文章继续采用的是 ULTRA-Extra无人机,相关参数如下: 这里用于guidance law的无人机运动学模型为: { x ˙ p V a cos γ cos χ V w cos γ w cos χ w y ˙ p V a cos γ sin χ V w cos γ w sin χ…...
03、对象的内存布局以及分配方式
在通过前面的文章了解到当一个程序启动的时候,会把一个java文件通过编译成class文件,然后把class字节码加载到JVM内存中,并初始化各种变量和对象实例,同时建立起具体的内存模型进行线程间的数据交换,在这之间对象的实例…...
「Mac玩转仓颉内测版50」小学奥数篇13 - 动态规划入门
本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念,并解决一个经典问题:斐波那契数列。学生将学习如何使用动态规划优化递归计算,并掌握编程中的重要算法思想。 关键词 小学奥数Python Cangjie动态规划斐波那契数列 一、题目描述 …...
ADB在浏览器中:ya-webadb项目安装与配置完全指南
ADB在浏览器中:ya-webadb项目安装与配置完全指南 ya-webadb ADB in your browser [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/ya/ya-webadb 项目基础介绍与编程语言 ya-webadb 是一个由 Yume-chan 开发的开源项目,它实现了ADB&#x…...
通过ros2启动gazebo
ros2_integration3.使用gazebo加载URDF 在老版本中,我们使用 gazebo --verbose -s libgazebo_ros_init.so -s libgazebo_ros_factory.so来启动gazebo和ros2与gazebo的桥。 但在新版本中,libazebo_ros_init.so和libazebo_ros_factory.so不再被支持 你…...
WPF 消息循环(二)
们已经知道,win32/MFC/WinForm/WPF 都依靠消息循环驱动,让程序跑起来。 这里就介绍 WPF 中是如何使用消息循环来驱动程序的。 1. 背景 只听说过 Dispatcher ,哪里来的消息循环? WPF 启动运行堆栈: > WpfApp1.…...
基于stm32的红外测温系统设计(论文+源码)
1总体方案设计 本课题为基于STM32的红外测温系统设计,在此将系统架构设计如图3.1所示, 整个系统包括STM32F103单片机,红外测温模块MLX90614,显示模块OLED12864,蜂鸣器以及按键等构成,在功能上,…...
分布式 Paxos算法 总结
前言 相关系列 《分布式 & 目录》《分布式 & Paxos算法 & 总结》《分布式 & Paxos算法 & 问题》 参考文献 《图解超难理解的 Paxos 算法(含伪代码)》《【超详细】分布式一致性协议 - Paxos》 Basic-Paxos 基础帕克索斯算法…...
ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小
ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小 文章目录 ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小1. 安装 Times New Roman 字体验证字体是否安装成功 2. 在 Matplotlib 中加载 Times New Roman 字体3. 在 Matplotlib 中使…...
[网络] UDP协议16位校验和
16位校验和是udp报头中的一个字段,绝大多数的教材和网课都会忽略这个字段,不去细究,我闲的蛋疼问了问ai,得到了一个答案,故作此文,以证明我爱学习之心惊天地泣鬼神(狗头 ai的回答 仅从作用来说,它会根据整个应用层报文进行运算,生成一个准确的数字,这个数字不能保证唯一性,但根…...