云原生训练营课程大纲
第一部分:Go 语****言基础
模块一:Go 语言特性
教学目标:
-
理解 Go 语言基本语法
-
理解 Go 语言常用数据类型
-
理解 Go 语言常用小技巧
-
深入理解 Go 语言的多线程编程
针对的用户痛点:
-
云原生从业者因为未熟练掌握 Go 语言,在阅读 Docker、containerd、Kubernetes 代码时有困难
-
未熟练掌握 Go 语言,在需要编写云原生组件时无法高效率高质量交付
通过学习掌握的核心能力:
-
阅读 Go 语言代码的能力
-
用 Go 语言编写应用程序的基本能力
-
用 Go 语言编写一个 Kubernetes 中最常见的生产者消费者小程序
详细内容:
-
Go 语言编译环境设置
-
Go 语言常用数据结构
-
Go 语言函数调用,深入理解 Channel 并基于 Channel 编写一个生产者消费者程序
模块二:使用 Go 语言编写一个****小 Demo
教学目标:
-
理解 Go 语言的调度原理
-
理解 Go 语言的内存管理
-
Go 语言依赖管理
-
Go 语言调试和问题分析 pprof
针对的用户痛点:
-
对 Goroutine 无深入理解,无法利用 Go 语言强大的并发能力
-
面对众多的 Go 语言项目包依赖管理工具无所适从,不知道该用哪一个工具
-
针对 Go 语言编写的程序,不知道如何调试
通过学习掌握的核心能力:
-
了解 Go 语言的高级话题,如线程调度原理,内存管理等,使得学员有能力编写高效程序
-
理解 Go 语言的依赖管理方法,以便能够正确地管理项目依赖
-
学会用 pprof 对应用运行时的调用栈、内存等进行分析
-
学会用 Go 语言编写一个简单的 HTTP 服务器供后续云原生应用使用
详细内容:
-
Goroutine 的调度
-
内存管理
-
学会用 Go 语言编写一个简单的 HTTP 服务器
第二部分:云原生技术栈
模块三:Docker 核心技术
教学目标:
-
理解容器特性以及相比虚拟化技术所具备的优势
-
了解容器技术的实现细节:Namespace、cgroup、文件系统
针对的用户痛点:
-
分不清容器技术和虚拟化技术的差异,在做技术决策时没有理论支撑
-
因为不了解技术原理,排查容器问题时毫无头绪
通过学习掌握的核心能力:
-
了解 Namespace 技术的原理以及基于 Namespace 的问题排查方法
-
理解 cgroup 控制资源限额的方法,查看 cgroup 配置并临时调整 cgroup 配置
-
理解容器文件系统如何高效管理运行时和数据
-
理解容器网络,为进一步理解 Kubernetes 网络插件奠定基础
-
基于 Dockerfile 将应用程序打包成容器镜像
详细内容:
-
容器技术的本质以及技术优势,Namespace、cgroup、文件系统、网络连通
-
容器镜像与镜像仓库
-
将 Go 语言编写的 HTTP 服务器打包成容器镜像
**模块四:**Kubernetes 架构原则和对象设计
教学目标:
-
理解 Kubenretes 架构原则
-
理解 Kubernetes 的对象设计与 API 定义
-
理解 Kubernetes 控制器模式与多组件联动机制
针对的用户痛点:
-
对 Kubernetes 有简单认知,但无法编写出高效的、符合云原生规范和最佳实践的组件
-
对组件和基本对象只有浅层次的理解,对 API 的统一性和差异性无深入理解
-
不了解 Kubernetes 的控制器原理,对 Kubernetes 控制面板组件如何运作无深入理解
通过学习掌握的核心能力:
-
动手搭建 Kubernetes 环境
-
理解 Kubernetes 架构原则
-
理解 Kubernetes API 定义的设计原则,理解 Kubernetes 对象中的重要属性
-
理解 Kubernetes 控制器的联动机制
详细内容:
-
环境搭建
-
Kubernetes 架构优势及架构原则
-
Kubernetes 核心组件
-
Kubernetes 对象设计与 API 定义
-
Kubernetes 控制器模式
**模块五:**Kubernetes 控制平面组件:etcd
教学目标:
-
深入理解 Kubernetes 的唯一数据存储组件 etcd
-
掌握构建生产系统中 etcd 集群的方法
-
熟悉 etcd 的优化管理,了解灾备方案
针对的用户痛点:
-
对 etcd 的实现机制不了解,不知道在生产化应用过程中可能遇到的问题
-
不知道应该如何构建生产系统中的 etcd 集群
-
不知道如何进行数据的备份和灾难恢复
通过学习掌握的核心能力:
-
理解 Raft 协议的工作机制和 etcd 的实现原理,针对 etcd 生产系统的配置优化以及数据灾备
-
深入理解 API Server 的实现机制,包括与企业认证系统整合、鉴权、准入插件的实现等等
-
深入理解 Kubernetes 的对象实现
-
如何构建高可用的 etcd 和 API Server 控制平面
详细内容:
-
深入理解 Kubernetes 的数据存储 etcd
-
了解 Raft 协议
-
生产系统中 etcd 的配置
-
etcd operator
-
etcd 的灾备方案
-
生产系统中常见问题解析
**模块六:**Kubernetes 控制平面组件:API Server
教学目标:
-
深入理解 Kubernetes API Server 的实现机制
-
掌握基于 API Server Webhook 的整合方案
针对的用户痛点:
-
缺乏对 Kubernetes 对象实现方法的理解
-
对 API Server 缺乏理解,不知道如何与企业认证系统整合,不会基于鉴权准入等机制打造多租户 Kubernetes 平台
通过学习掌握的核心能力:
-
理解 Kubernetes 对象设计的实现机制
-
理解 API Server 缓存的工作机制
-
掌握生产系统中 API Server 的常用配置
-
掌握 API Server 与企业生态系统的整合方法
详细内容:
-
深入理解 Kubernetes API Server
-
API Server 代码走读
-
理解 internalVersion、externalVersion 和 storageVersion
-
理解 conversion
-
基于 client-go 生成 Kubernetes 框架代码
-
理解 lister 和 informer 框架
-
理解 API Server 缓存
-
API Server 与企业生态系统的整合:认证接入、鉴权、准入控制
-
API Server 常用配置与常见问题解析
模块七:Kubernetes 控制平面组件:调度器和控制器
教学目标:
-
理解 Kubernetes 调度器原理以及常用调度插件
-
理解 Kubernetes 调度的常用技巧,利用亲和性与反亲和性进行调度
-
理解 Kubernetes 的常见控制器
-
深入理解 Kubelet 对 Pod 声明周期的管理
针对的用户痛点:
-
对 Kubernetes 调度器无深入理解,在 Pod 无法调度时,不知道如何排查问题
-
不会利用 Kubernetes 调度器实现应用的高效、高可用部署
-
对 Kubernetes 控制器缺乏全面认知
-
对 Kubernetes 如何管理 Pod 生命周期缺乏认知
通过学习掌握的核心能力:
-
排查调度故障,利用调度器实现应用的高可用部署
-
扩展对 Kubernetes 控制器的认知,理解更多的 Kubernetes 控制平面行为
-
深入理解 CRI、CNI 和 CSI
详细内容:
-
深入理解 Kubernetes 调度器
-
深入理解 Kubenretes 控制器
-
深入理解 Kubelet
-
如何运行你的 Pod(CRI、CNI、CSI)
-
Kubelet Pod 代码走读
-
containerd 代码走读
-
CNI 代码走读
-
全方位的 CSI 一站式解决方案:Rook
**模块八:**Kubernetes 控制平面组件:生命周期管理和服务发现
教学目标:
-
深入理解 Pod 的完整生命周期和就绪状态控制
-
深入理解 Pod 状态控制对应用可用性的影响
-
深入理解 Kubernetes 中的服务发现机制,包括负载均衡配置和域名服务
针对的用户痛点:
-
解决日常运维的困扰,比如,在 Pod 初始化或故障转移时或者版本发布时,如何不影响业务?
-
我发布的服务经常出现服务中断,是缺了什么配置吗?
通过学习掌握的核心能力:
-
理解 Pod 的完整生命周期,如何初始化、如何控制就绪状态、如何探活、如何优雅终止
-
如何发布服务,如何剔出异常实例
详细内容:
-
深入理解 Kubernetes 的服务实例对象 Pod:Pod 生命周期详解、健康探针、ReadinessGate
-
深入理解 Kube-Proxy:如何发布你的服务、代码走读、负载均衡配置
-
域名管理
-
基于 Ingress 以及 Service API 的入站流量管理
模块九:生产化集群的管理
教学目标:
-
掌握生产化集群的搭建技术
-
掌握生产化集群持续运维过程中最重要的节点管理能力
-
如何在不影响业务的前提下完成 Kubernetes 升级
针对的用户痛点:
-
不知道如何快速构建本地集群供研发测试使用
-
未掌握构建生产化集群的方法,缺少对集群节点的管控,节点出现故障以后需要人为介入
-
如何实现生产化集群的管理,比如计算节点的监控与管理
-
不了解完成了集群搭建以后离生产化还有多远
通过学习掌握的核心能力:
快速构建本地集群的能力
理解 Kubernetes 集群构建的原理,掌握搭建 Kubernetes 集群的能力
基于 Cluster API 完成生产化集群的构建和持续运维
详细内容:
-
利用 kind 构建本地集群
-
利用 kubeadm 构建基于虚拟机的集群
-
利用 Cluster API 完成生产化集群的搭建
-
持续运维的考量:节点健康检查、Kubernetes 升级、主机操作系统升级
**模块十:**Kubernetes 的生产化运维
教学目标:
-
如何实现基于 Kubernetes 的 CI/CD
-
如何实现生产化集群的监控
针对的用户痛点:
-
缺少企业统一的镜像仓库
-
镜像安全应该如何保证
-
企业缺少持续集成持续部署能力
-
缺少对整个集群的监控,希望实现无人值守
通过学习掌握的核心能力:
-
打造持续集成平台
-
基于自动化管理生产化集群
-
实现对集群控制面板以及重要应用的监控和告警
详细内容:
-
镜像仓库和容器镜像缓存
-
镜像扫描和镜像安全保证
-
基于 Kubernetes、Jenkins、Tekton 打造 CI/CD Pipeline
-
集群监控:日志收集和分析,事件、指标和告警(Event、Metrics 和 Alert)
**模块十一:**将应用迁移至 Kubernetes 平台
教学目标:
-
如何将无状态应用发布到 Kubernetes 平台
-
如何基于 Kubernetes 原生能力将有状态应用发布到 Kubernetes 平台
-
基于 Kubernetes 对象扩展,将更复杂的应用发布到 Kubernetes 平台
针对的用户痛点:
-
缺少将应用发布到 Kubernetes 平台上的理论指导
-
对于有状态应用,更不知道如何借助 Kubernetes 平台的优势进行处理
通过学习掌握的核心能力:
-
掌握 Kubernetes 提供的应用管理框架,包括有状态应用和无状态应用
-
掌握 Operator 模式,具备通过 Kubebuilder 构建自己的 CRD,并且基于 CRD 编写控制器的能力
-
利用 Kubebuilder 完成控制器的测试和发布
-
借助 Helm 完成复杂的应用模板管理
详细内容:
-
应用容器化
-
无状态应用移植到 Kubernetes 平台的考量
-
有状态应用移植到 Kubernetes 平台的考量
-
理解 Operator
-
借助 Kubebuilder 开发一个 Operator
-
借助 Helm 管理应用发布
**模块十二:**基于 Istio 的高级流量管理
教学目标:
-
理解基于 TCP/UDP 协议的 Kubernetes Service 的局限性
-
理解 Kubernetes 入站流量管理的场景和原生方案
-
理解原生方案的局限性和社区的方向
-
深入理解 Envoy 的服务发现机制、线程模型以及扩展机制
-
理解如何基于 Istio 实现入站、出站流量管理以及服务网格管理
针对的用户痛点:
-
社区的 Ingress 对象无法毕业,为支持生产化应用,应该用什么方案提供入站流量支撑
-
Envoy 为什么变成了 Kubernetes 中七层代理的首选
-
社区爆火的 Istio 背后的技术驱动力是什么,我应该选 Istio 作为入站流量管理平面组件吗
通过学习掌握的核心能力:
-
深入理解 Envoy 的实现机制
-
深入理解 Istio 的实现机制,了解为什么 Istio 会成为服务网格的标准
详细内容:
-
入站流量管理 Ingress 和 Service API
-
Istio 和 Envoy
-
深入理解 Envoy:发现机制、线程模型、filter 机制、高级特性
-
深入理解 Isito:入站流量、出站流量、Service Mesh(服务网格)、Istio 服务发现代码走读
5. 安全保证
**模块十三:**Kubernetes 集群联邦和 Istio 多集群管理
教学目标:
-
如何通过集群联邦的统一控制平面管理多个集群
-
如何部署跨地域的高可用应用
-
如何通过 Istio 多集群方案管理跨集群的 Service Mesh(服务网格)
针对的用户痛点:
-
针对真正的生产化应用,跨地域部署是确保应用高可用的一个强需求,那么如何管理多个 Kubernetes 集群
-
针对跨集群部署的应用,如何确保其接入流量高可用,如何借助 Istio 实现这一目的
通过学习掌握的核心能力:
-
Kubernetes 集群联邦的实现原理和配置方法
-
Istio 多集群实现原理和配置方法
详细内容:
-
Kubernetes 集群联邦
-
基于集群联邦的跨地域高可用部署
-
基于 Istio 多集群的流量高可用方案
模块十四:基于 Kubernetes 和 Istio 的安全保证
教学目标:
-
理解传统安全架构的挑战
-
掌握零信任架构的意义和机遇
-
掌握 Kubernetes 平台本身的安全保证手段
-
学习如何基于 Kubernetes 和 Istio 实现对应用的隔离和安全保证
针对的用户痛点:
-
如何确保 Kubernetes 平台的安全性
-
如何确保 Kubernetes 中数据保存的安全性
-
如何确保 Kubernetes 上运行应用的安全性
通过学习掌握的核心能力:
-
如何保证 etcd 中保存的数据安全性
-
如何保证 Kubernetes 控制面板的安全性
-
如何确保 API 网关的安全性
-
对应用进行安全隔离
-
如何基于零信任架构完成应用的认证和授权
详细内容:
-
理解 etcd 的加密方法
-
掌握 Kubernetes 控制面板的安全配置
-
掌握应用隔离的常规手段以及在 Kubernetes 中配置的方式
-
掌握 API 网关的安全配置
-
了解基于 Istio 的认证鉴权机制
第三部分:云原生项目实战
模块十五:微服务项目的开发和部署****案例
教学目标:
完成一个复杂的异构的微服务系统在 Kubernetes 平台上的部署,以 Istio 的 Bookinfo 为例
针对的用户痛点:
-
随着业务复杂度的增加,微服务的部署和运维变得越来越有挑战性,如何保证微服务应用部署的高性能是一个复杂问题
-
如何基于熔断、限流等手段保护核心业务
-
如何基于基础架构平台确保应用安全
通过学习掌握的核心能力:
-
基于微服务架构的复杂应用部署
-
熔断、限流、故障注入
-
应用的安全保证
详细内容:
本模块是之前所有模块的综合复习模块,希望借助本模块完成基于 Kubernetes 框架下面微服务治理这一重要命题的回顾和总结。
加餐:Serverless 核心技术概览
教学目标:
-
理解 Kubernetes 的价值和面临的挑战
-
了解 Serverless 能为云原生领域带来的价值
-
知道常见的 Serverless 平台和开源框架
针对的用户痛点:
-
不知道 Serverless 的源起、希望解决的问题
-
想学习 Serverless,不知道从哪里入手
通过学习掌握的核心能力:
-
了解 Serverless 的设计理念
-
掌握 Serverless 平台、开源项目、应用希望达成的目标
-
掌握容器 Serverless 和函数 Serverless 的使用方法
详细内容:
-
Serverless 的设计理念,理解 BaaS 和 FaaS 的相同点和差异点
-
Serverless 给运维、研发工程师等岗位带来的改变
-
常见的 Serverless 框架能够提供的服务
-
容器 Serverless:Knative
-
Knative 控制面和数据面原理
-
利用 Knative 做灰度发布和扩缩容
-
Knative Eventing 核心对象
-
Knative 冷启动面临的挑战
-
函数 Serverless:Fission
-
Fission 如何加速冷启动
-
Fission 的主要功能特性
-
Serverless 落地实践的机遇和挑战
《云原生训练营实战项目》
https://shimo.im/docs/RKAWV8xgZ7tKWXk8/
相关文章:
云原生训练营课程大纲
第一部分:Go 语****言基础 模块一:Go 语言特性 教学目标: 理解 Go 语言基本语法 理解 Go 语言常用数据类型 理解 Go 语言常用小技巧 深入理解 Go 语言的多线程编程 针对的用户痛点: 云原生从业者因为未熟练掌握 Go 语言&#…...
【Ajax】笔记-同源策略
同源策略(Same-Origin Policy),是浏览器的一种安全策略 同源(即url相同):协议、域名、端口号 必须完全相同。(请求是来自同一个服务) 跨域:违背了同源策略,即跨域。 ajax请求是遵循…...
Java使用FFmpeg实现mp4转m3u8
Java使用FFmpeg实现mp4转m3u8 前言FFmpegM3U8 一、需求及思路分析二、安装FFmpeg1.windows下安装FFmpeg2.linux下安装FFmpegUbuntuCentOS 三、代码实现1.引入依赖2.修改配置文件3.工具类4.Controlle调用5.Url转换MultipartFile的工具类 四、播放测试1.html2.nginx配置3.效果展示…...
【JavaEE初阶】Servlet (三)MessageWall
在我们之前博客中写到的留言墙页面,有很严重的问题:(留言墙博客) 如果刷新页面/关闭页面重开,之前输入的消息就不见了.如果一个机器上输入了数据,第二个机器上是看不到的. 针对以上问题,我们的解决思如如下: 让服务器来存储用户提交的数据,由服务器保存. 当有新的浏览器打开页…...
D. Make It Round
在Berlandia发生了通货膨胀,所以商店需要改变商品的价格。 商品n的当前价格已经给出。允许将该商品的价格提高k倍,1≤k≤m,k为整数。输出商品的最圆的可能的新价格。也就是在最后有最大数量的零的那个。 例如,数字481000比数字1…...
Python网站页面开发HTML总结
Python网站页面开发HTML总结 一、HTML基础语法 1.HTML是什么? ●HTML是HyperText Mark-up Language的首字母简写,即超文本标记语言。 ●HTML不是一种编程语言,而是一种标记语言。 ●超文本指的是超链接,标记指的是标签…...
[个人笔记] vCenter设置时区和NTP同步
VMware虚拟化 - 运维篇 第三章 vCenter设置时区和NTP同步 VMware虚拟化 - 运维篇系列文章回顾vCenter设置时区和NTP同步(附加)ESXi设置alias参考链接 系列文章回顾 第一章 vCenter给虚机添加RDM磁盘 第二章 vCenter回收活跃虚拟机的剩余可用空间 vCente…...
(原创)Flutter与Native通信的方式:EventChannel和BasicMessageChannel
前言 上一篇博客主要介绍了MethodChannel的使用方式 Flutter与Native通信的方式:MethodChannel 这篇博客接着讲另外两种通信方式 EventChannel和BasicMessageChannel EventChannel用于从native向flutter发送通知事件,例如flutter通过其监听Android的重…...
【解决】el-tree报Cannot read property ‘getCheckedKeys‘ of undefined
如果你报错 Cannot read property getCheckedKeys of undefined 或者 Cannot read property getCheckedNodes of undefined 只要在你的在<el-tree>上加个这个,就可以了 ref"tree"...
车载软件架构 —— 信息安全与基础软件
车载软件架构 —— 信息安全与基础软件 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕…...
C\C++内存管理
目录 1.C/C内存分布2.C语言中动态内存管理方式3.C中动态内存管理3.1new/delete内置类型3.2new和delete操作自定义类型 4.operator new与operator delete函数4.2重载operator new与operator delete(了解) 5.new和delete的实现原理5.1内置类型5.2 自定义类…...
会议室预约系统-检验是否被预约核心SQL
会议室预约时,判断能否被预约,即查询是否已经有预约记录,存在不能被预约。 s,e;表示已经预约的开始结束时间; ns,ne,表示表单提交的预约时间; 只需要(ns,ne)与(s,e)区间没有交集,可…...
C++11类模板
类模板是用来生成类的蓝图,与函数模板的不同之处是,编译器不能为类模板推断模板参数类型。 所以我们在使用类的时候要带上<>并且指定类型如下 vector<int> v; // 需要带上<int> 哦定义类模板 如下,和函数模板差不多都是…...
SpiderFlow爬虫平台(爬虫学习)
申明 作为自己学习的记录,方面后期查阅 官网 SpiderFlow官网 简介 spider-flow 是一个爬虫平台,以图形化方式定义爬虫流程,无需代码即可实现一个爬虫 是使用springboot开发的项目,后端代码直接运行即可使用...
Rime输入法配置
Rime输入法在我电脑上,删了装,装了删,已经反复好几次了。就像是Vim,用它的时候,感觉各种配置太麻烦,想要的功能不知道怎么实现。转用其它编辑器的时候,却又念着它的快捷键和可定制性,…...
R语言学习笔记--列表list、数据框
列表 1-列表 列表可以包含不同类型的对象,也就是说,列表不是将某些具体的值组织起来,而是组织R对象。列表将数据组织在一个一维集合中。 列表非常好用,因为它可以装任何类型的对象,不要求数据之间是同质的。 创建列…...
电磁波定义、特性以及信道相关知识
文章目录 前言一、电磁波的定义、特性、波谱1、电磁波的特性2、电磁波谱的划分及用途 二、地球大气层的结构三、电磁波的传播方式1、地波(ground-wave)2、天波(sky-wave)3、视线传播(line-of-sight)①、相关…...
TCP KeepAlive与HTTP Keep-Alive
TCP KeepAlive与HTTP Keep-Alive TCP KeepAliveHTTP Keep-AliveTCP服务器怎么检测客户端断开连接 TCP KeepAlive TCP连接建立之后,如果应用程序或者上层协议一直不发送数据,或者隔很长时间才发送一次数据,那么TCP需要判断是应用程序掉线了还…...
SkyWalking链路追踪-Agent (代理人)
基础概念: SkyWalking链路追踪代理(SkyWalking Tracing Agent)是一种用于收集和传输链路追踪数据的工具。它与应用程序一起部署,并通过自动或手动方式来收集关于应用程序中的请求路径和操作的信息。该代理将收集到的数据发送到Sky…...
多线程案例 | 单例模式、阻塞队列、定时器、线程池
多线程案例 1、案例一:线程安全的单例模式 单例模式 单例模式是设计模式的一种 什么是设计模式? 设计模式好比象棋中的 “棋谱”,红方当头炮,黑方马来跳,针对红方的一些走法,黑方应招的时候有一些固定的…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
