多学科视角下探索开源Github、Git初步学习
Think
1.Github 作为现今最主流的代码托管平台、协作平台甚至是“社交平台”,本身是闭源的。一方面,它是和大多数开发者连接最紧密的开源阵地,另一方面,拥有传统“黑客精神”的人认为将用户身份绑定这样一个闭源平台上恰恰与开源背道而驰。请从早期自由软件运动与现代开源模式变迁的视角,谈一谈你对上述两种认知的理解。
2.在拓展阅读《开放式协作》第二章中国根据用户增长和贡献者增长将所有项目分为了四种类型,它们分别具有怎样的特征?请在每一个类型下推荐一两个你了解或接触过的开源项目。
Note
Github是一家为开源项目提供托管服务的公司。
少部分的人承担了大部分的代码工作,不能依靠传统的方法,即“更多的参与”,这会让维护者不知措。
与传统的大型整体软件项目和围绕着它们所兴起的繁荣社区相反,npm软件包的设计是小型且模块化的,这导致每个项目需要更少的维护者,而且维护者与它们编写的代码形成暂时的关系。当今,维护者、贡献者和用户的关系将更轻松,更易处理。
Git
是一个版本控制系统,可用于监控一个项目在不同时期的状态。下面来看看基本的使用。
Git Bash 是一个终端模拟器,允许用户在Windows上像Linux、Mac一样与 Git 进行交互。
打开下载好的 git bash.
查看版本
git --version
创建一个文件夹作为实验环境
cd d:
mkdir gitPractice
cd gitPractice
pwd
初始化,使 git 开始跟踪
git init
检查状态
git status
写入第一个数据
echo "hack my herat" > file.txt
ls
explorer .
打开当前文件夹
查看 file.txt 文件,确实写入了内容
关闭文件,用 Git 将其保存为一个特定版本
git add file.txt
git commit -m "Version1"
git status
现在,追加一些内容
echo "I like u." >> file.txt
git status
注意到文件已经改变了
提交这个版本
git add file.txt
git commit -m "Version2"
git status
git add file.txt
这个命令将文件 file.txt 的更改暂存到下一次提交中。它告诉 Git 你希望将 file.txt 的更改包含到下一个快照(提交)中。
git commit -m “Version2”
这个命令会创建一个新的提交,包含之前暂存的更改。-m 参数允许你直接在命令行中提供提交信息。在这里,提交信息是 “Version2”。
如果你想暂存工作目录中的所有更改,可以使用 git add . 而不是指定单个文件。
在提交之前,如果你想查看工作目录和暂存区的状态,可以运行 git status。
clear
清屏
如果想查看文件版本的变动过程
可以git log
当生成一个 commit 时,Git 会分配唯一的哈希值。
现在,展示生成的低于个 commit.
git show c71b82537a342be63c0c7f303b96b9b641a496bc
恢复到某版本
git log
git reset --hard <commit-hash>
例如:'git reset -git reset --hard a1b2c3d
这会直接将工作目录和暂存区恢复到指定提交的状态。
更多内容有待补充。
Github
这里不多说了,会基本使用就行
github文档
开源项目结构
Github仓库元素
- Code:仓库的代码文件和目录,可以查看、编辑、下载或上传代码。
- Issues:仓库的问题和反馈,可以创建、跟踪或关闭问题。
- Pull requests:仓库的合并请求,可以提交、审查或合并代码。
- Discussion:仓库讨论区,可以创建、运行或管理任务。
- Actions:仓库的自动化工作流程,可以创建或运行任务。
- Projects:仓库项目管理工具,可以组织或监控进度。
- Security:仓库的安全设置和报告,可以检测修复漏洞。
- Insights:仓库数据分析和可视化,可以查看比较性能。
Result
一、
早期自由软件运动与现代开源模式的变迁视角
1. 早期自由软件运动的核心理念
自由软件运动由理查德·斯托曼(Richard Stallman)于1983年发起,其核心理念是保障用户的四大自由:使用自由、研究自由、分发自由和改进自由。斯托曼强调,软件的自由是一种道德权利,而不仅仅是技术选择。自由软件基金会(FSF)通过GNU项目和GPL许可证,推动了这一理念的实践,旨在创建一个完全自由的操作系统。
2. 现代开源模式的兴起
开源软件运动兴起于1998年,其目标是通过公开源代码来提高软件的质量和可靠性,而非仅仅强调道德自由。开源倡议(OSI)定义了开源软件的十条标准,强调协作、透明和技术优势。开源模式的成功在于其与商业模式的结合,例如Linux、Apache等项目的广泛应用。
3. GitHub的闭源属性与开源社区的矛盾
GitHub作为一个闭源平台,却成为了全球最大的开源代码托管和协作平台。这种矛盾可以从以下两个视角理解:
- 开源阵地:GitHub通过提供强大的版本控制、协作工具和社区支持,极大地降低了开源项目的参与门槛,吸引了全球开发者共同贡献。
- 与“黑客精神”的冲突:传统“黑客精神”强调自由、开放和去中心化,而GitHub的闭源属性及其对用户身份的绑定,被认为与这种精神背道而驰。这种集中化的平台可能限制用户的自由,并带来潜在的商业控制风险。
4. 两种认知的辩证分析
- 支持GitHub作为开源阵地的观点:
- GitHub通过技术工具和社区生态,极大地推动了开源软件的普及和创新。
- 它为开发者提供了一个全球化的协作平台,使得开源项目能够更高效地管理和分发。
- 批评GitHub闭源属性的观点:
- GitHub的闭源属性与其托管的开源项目形成了鲜明对比,可能削弱开源运动的道德基础。
- 集中化的平台可能导致权力过度集中,违背了开源运动的去中心化精神。
5. 未来趋势与平衡点
- 混合模式的探索:未来可能会出现更多混合模式,例如部分闭源、部分开源的项目,以平衡商业利益与社区贡献。
- 去中心化平台的兴起:随着区块链等技术的发展,去中心化的代码托管平台可能成为新的选择,更好地契合“黑客精神”。
结论
GitHub作为闭源平台与开源社区的紧密联系,反映了现代开源模式的复杂性和多样性。尽管其闭源属性与传统“黑客精神”存在冲突,但其对开源生态的推动作用不可忽视。未来,如何在商业利益与开源理念之间找到平衡点,将是开源运动持续发展的关键。
二、
在《开放式协作》第二章中,根据用户增长和贡献者增长,开源项目被分为四种类型。每种类型具有不同的特征,以下是详细分析及对应的开源项目推荐:
1. 高用户增长、高贡献者增长
特征:
- 这类项目通常具有广泛的用户基础和活跃的贡献者社区。
- 项目本身具有较高的技术价值或社会影响力,能够吸引大量用户和开发者参与。
- 社区治理结构清晰,贡献流程透明,能够有效管理大规模的协作。
- 项目通常有明确的目标和路线图,能够持续吸引新用户和贡献者。
推荐项目:
- Linux Kernel:作为全球最知名的开源项目之一,Linux Kernel 拥有庞大的用户群体和活跃的开发者社区。其开放的协作模式和透明的治理结构吸引了全球开发者的参与。
- Kubernetes:云原生领域的核心项目,Kubernetes 凭借其强大的功能和广泛的应用场景,吸引了大量企业和开发者参与贡献。
2. 高用户增长、低贡献者增长
特征:
- 这类项目用户数量庞大,但贡献者数量相对较少。
- 项目可能具有较高的技术门槛,或者贡献流程复杂,导致普通用户难以参与开发。
- 项目通常由核心团队主导,贡献者集中在少数核心开发者手中。
- 用户更多是“消费者”而非“生产者”,依赖核心团队提供更新和维护。
推荐项目:
- VS Code:作为一款流行的代码编辑器,VS Code 拥有大量用户,但其核心开发主要由微软团队主导,外部贡献者相对较少。
- React:Facebook 开发的前端框架,React 拥有庞大的用户群体,但核心开发主要由 Facebook 团队控制,外部贡献者的参与度相对有限。
3. 低用户增长、高贡献者增长
特征:
- 这类项目用户数量较少,但贡献者数量较多。
- 项目可能专注于特定领域或技术,用户群体较为小众,但开发者社区活跃。
- 项目通常具有较高的技术深度或创新性,能够吸引技术爱好者参与贡献。
- 贡献者可能是项目的核心用户,他们既是开发者也是使用者。
推荐项目:
- Rust:Rust 是一门系统编程语言,虽然用户群体相对较小,但其开发者社区非常活跃,贡献者数量众多。
- Homebrew:macOS 的包管理工具,Homebrew 的用户群体相对集中,但其贡献者社区非常活跃,持续为项目提供更新和改进。
4. 低用户增长、低贡献者增长
特征:
- 这类项目用户和贡献者数量都较少。
- 项目可能处于早期阶段,或者专注于非常小众的领域。
- 项目可能缺乏明确的治理结构或贡献流程,导致难以吸引用户和开发者。
- 项目的发展依赖于少数核心开发者的持续投入。
推荐项目:
- Trac:一款轻量级的项目管理工具,Trac 的用户和贡献者数量相对较少,但其功能简洁实用,适合小型团队使用。
- DooTask:一款轻量级的任务管理工具,DooTask 的用户群体较小,但其开源特性使其在小团队中具有一定的影响力。
总结
这四种类型反映了开源项目在不同发展阶段和用户-贡献者关系中的多样性。无论是高用户增长还是高贡献者增长,开源项目的成功都离不开社区的活跃和治理的透明性。对于希望参与开源的用户和开发者来说,选择适合自己兴趣和能力的项目类型至关重要。
相关文章:
多学科视角下探索开源Github、Git初步学习
Think 1.Github 作为现今最主流的代码托管平台、协作平台甚至是“社交平台”,本身是闭源的。一方面,它是和大多数开发者连接最紧密的开源阵地,另一方面,拥有传统“黑客精神”的人认为将用户身份绑定这样一个闭源平台上恰恰与…...
新星杯-ESP32智能硬件开发--ESP32的I/O组成-系统中断矩阵
本博文内容导读📕🎉🔥 ESP32开发板的中断矩阵、功能描述与实现、相关API和示例程序进行介绍 ESP32中断矩阵将任一外部中断源单独分配到每个CPU的任一外部中断上,提供了强大的灵活性,能适应不同的应用需求。 ESP32中断主…...
Android 右键后无Java class创建
Android studio 创建java class : 最近几个月用Android studio 开发,因为电脑设置了一个新的用户使用,原来的android studio,打开之前的正常的项目总是报一些奇奇怪怪的错误,就重新安装了最新的版本 问题描述 但是新的android s…...
leetcode-买卖股票问题
309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode) 动态规划解题思路: 1、暴力递归(难点如何定义递归函数) 2、记忆化搜索-傻缓存法(根据暴力递归可变参数确定缓存数组维度) 3、严格表结构依…...
如何通过 Apache Airflow 将数据导入 Elasticsearch
作者:来自 Elastic Andre Luiz 了解如何通过 Apache Airflow 将数据导入 Elasticsearch。 Apache Airflow Apache Airflow 是一个旨在创建、安排(schedule)和监控工作流的平台。它用于编排 ETL(Extract-Transform-Load࿰…...
LDPC (Low-Density Parity-Check) 码min_sum、n_0、block_length 和 rate参数
1. min_sum 1; min_sum 是与 最小和解码算法(Min-Sum Decoding Algorithm)相关的参数。最小和解码算法是 LDPC 码的一种常用解码方法,主要通过传递信号的信息在接收端进行解码。此参数表示最小和算法中的缩放因子。 在 LDPC 解码过程中&am…...
基于javaweb的SpringBoot景区旅游管理系统设计和实现(源码+文档+部署讲解)
个人名片 🔥 源码获取 | 毕设定制| 商务合作:《个人名片》 ⛺️心若有所向往,何惧道阻且长 文章目录 个人名片运行环境技术栈适用功能说明使用说明 运行环境 Java≥8、MySQL≥5.7 1.运行环境:最好是java jdk 1.8,我们在这个平台…...
(二)afsim第三方库编译(qt编译)
注意:源码编译的路径不能有中文否则报错,压缩包必须用官网下载的xz格式解压的才可以,否则sudo ./configure命令找不到 先编译openssl3.1.1软件包,否则编译的qt库将不支持network,相关库的编译(上文(一&…...
重学SpringBoot3-Spring Retry实践
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞??收藏评论 重学SpringBoot3-Spring Retry实践 1. 简介2. 环境准备3. 使用方式 3.1 注解方式 基础使用自定义重试策略失败恢复机制重试和失败恢复效果注意事项 3.2 编程式使用3.3 监听重试过程 监…...
极域电子教室破解(JiyuTrainer)
JiyuTrainer下载 byebye极域电脑安装包也可以使用 如果只玩单机游戏最简单的办法就是拔网线 另一种办法安装360卫士通过360卫安全卫士上网设置来进行禁用JiyuTrainer网络跟拔网线一样...
Oracle数据库传统审计怎么用
Oracle数据库传统审计怎么用 审计功能开启与关闭By Session还是By AccessWhenever Successful数据库语句审计数据库对象审计查看审计策略和记录Oracle数据库审计功能分为传统审计(Traditional Auditing)和统一审计(Unified Auditing)。统一审计是从Oracle 12c版本开始引入的…...
windows 搭建flutter环境,开发windows程序
环境安装配置: 下载flutter sdk https://docs.flutter.dev/get-started/install/windows 下载到本地后,随便找个地方解压,然后配置下系统环境变量 编译windows程序本地需要安装vs2019或更新的开发环境 主要就这2步安装后就可以了࿰…...
基于SpringBoot的健身房管理系统【源码+文档+部署讲解】
系统介绍 基于SpringBootVue实现的健身房管理系统采用前后端分离架构方式,系统设计了管理员、会员、员工三种角色,系统实现了用户登录与注册、个人中心、会员管理、员工管理、会员卡管理、会员卡类型管理、教练信息管理、解聘管理、健身项目管理、指导项…...
2.slf4j入口
文章目录 一、故事引入二、原理探究三、SLF4JServiceProvider四、总结 一、故事引入 故事要从下面这段代码说起 public class App {private static final Logger logger LoggerFactory.getLogger(App.class);public static void main( String[] args ) throws Exception {lo…...
sql_实用查询语句模版
1. 查询某个字段是否为必填项 SQL 查询模板 SELECT COLUMN_NAME,IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME YourTableNameAND COLUMN_NAME YourColumnName;说明: INFORMATION_SCHEMA.COLUMNS 表包含了所有数据库中表的列信息。IS_NULLABL…...
Nginx反向代理架构介绍
Nginx反向代理架构是一种强大的服务器架构模式,它位于用户和原始服务器之间,接收用户的请求并将其转发到一个或多个后端服务器,然后将从后端服务器获取的响应返回给用户,就好像这些内容都是由代理服务器本身直接提供的一样。以下是…...
Mysql MVCC
MVCC 什么是MVCC MVCC(多版本并发控制,Multi-Version Concurrency Control) 是一种用于数据库管理系统(DBMS)中的并发控制机制,它允许多个事务同时执行而不互相阻塞,并通过创建数据的多个版本…...
JavaEE之CAS
上文我们认识了许许多多的锁,此篇我们的CAS就是从上文的锁策略开展的新概念,我们来一探究竟吧 1. 什么是CAS? CAS: 全称Compare and swap,字⾯意思:“比较并交换”,⼀个CAS涉及到以下操作: 我们假设内存中…...
Flink CDC 使用实践以及遇到的问题
背景 最近公司在做一些业务上的架构调整,有一部分是数据从mysql采集到Starrocks,之前的一套方法是走 debezium 到 puslar 到 starrocks,这一套下来比较需要配置很多东西,而且出现问题以后,需要修改很多配置,而且现阶段…...
idea上git log面板的使用
文章目录 各种颜色含义具体的文件的颜色标签颜色🏷️ 节点和路线 各种颜色含义 具体的文件的颜色 红色:表示还没有 git add 提交到暂存区绿色:表示已经 git add 过,但是从来没有 commit 过蓝色:表示文件有过改动 标…...
03.选择排序
一、题目思路 选择排序是一种简单直观的排序算法。它的工作原理是:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大ÿ…...
麒麟V10系统上安装Oracle
以下是在麒麟V10系统上安装Oracle数据库的详细步骤: 安装前准备 检查系统版本:使用uname -a、cat /etc/os-release等命令检查服务器是麒麟V10系统。 配置固定IP和本地yum源: 挂载麒麟V10的iso文件到/mnt目录,如mount -o loop Ky…...
PyTorch 神经协同过滤 (NCF) 推荐系统教程
目录 教程概述1. 神经协同过滤模型概述NCF 模型的主要组成部分: 2. 数据加载与预处理3. 定义神经协同过滤模型4. 训练模型5. 模型评估6. 推荐物品7. 完整示例8. 总结 在本教程中,我们将使用 PyTorch 实现一个神经协同过滤(Neural Collaborat…...
日志收集Day001
1.ElasticSearch 作用:日志存储和检索 2.单点部署Elasticsearch与基础配置 rpm -ivh elasticsearch-7.17.5-x86_64.rpm 查看配置文件yy /etc/elasticsearch/elasticsearch.yml(这里yy做了别名,过滤掉空行和注释行) yy /etc/el…...
【氮化镓】香港科技大学陈Kevin-单片集成GaN比较器
一、引言(Introduction) GaN HEMT的重要性 文章开篇便强调了氮化镓(GaN)高电子迁移率晶体管(HEMT)在下一代功率转换系统中的巨大潜力。GaN HEMT具备高开关频率、低导通电阻、高击穿电压以及宽工作温度范围等优势,使其成为功率电子领域的热门研究对象。这些特性使得GaN…...
LDD3学习9--数据类型和定时器
这部分对应的是第七章和第十一章,因为内容也不是很多,就一起写了。里面的内容基本上就是一个个的点,所以也就一个个点简单总结一下。 1 数据类型 1.1 数据长度 不同操作系统类型长度可能不一样,看图的话最好用u8,u16&…...
性价比1.2V电压基准替代
前言: 小于2V的电压基准比较少,且价格稍贵,对于要求不高的场合,1117可以替代使用,温度系数低于 100ppm/C, 价格便宜。 1117是线性稳压器的一种,一般情况下,输出电压可调。 如下述的1117…...
【青蛙过河——思维】
题目 图解 代码 #include <bits/stdc.h> using namespace std; const int N 1e510; int n, x; int h[N]; bool check(int mid) {for(int i 1; i mid - 1 < n; i)if(h[i mid - 1] - h[i - 1] < 2 * x) return false;return true; } int main() {cin >> …...
【数据库】MySQL数据库SQL语句汇总
目录 1.SQL 通用语法 2.SQL 分类 2.1.DDL 2.2.DML 2.3.DQL 2.4.DCL 3.DDL 3.1.数据库操作 3.1.1.查询 3.1.2.创建 3.1.3.删除 3.1.4.使用 3.2.表操作 3.2.1.查询 3.2.2.创建 3.2.3.数据类型 3.2.3.1.数值类型 3.2.3.2.字符串类型 3.2.3.3.日期时间类型 3.2…...
Vue3 Element-Plus el-tree 右键菜单组件
参考代码:实现Vue3Element-Plus(tree、table)右键菜单组件 这篇文章的代码确实能用,但是存在错误,修正后的代码: <template><div style"text-align: right"><el-icon size"12" color"#…...
学成在线_内容管理模块_创建模块工程
学成在线模块工程 1.各个微服务依赖基础工程2.每个微服务都是一个前后端分离的项目3.xuecheng-plus-content:内容管理模块工程xuecheng-plus-content-modelxuecheng-plus-content-servicexuecheng-plus-content-api 1.各个微服务依赖基础工程 2.每个微服务都是一个前…...
Swift 专题二 语法速查
一 、变量 let, var 变量是可变的,使用 var 修饰,常量是不可变的,使用 let 修饰。类、结构体和枚举里的变量是属性。 var v1:String "hi" // 标注类型 var v2 "类型推导" let l1 "标题" // 常量class a {…...
vue2配置跨域后请求的是本机
这个我来说明一下,因为我们公司的后端设置解决了跨域问题,所以我有很久没有看相关的内容了,然后昨天请求了需要跨域的接口,请求半天一直不对,浏览器显示的是本机地址,我以为是自己配置错了,后面…...
Linux 音视频入门到实战专栏(视频篇)视频编解码 MPP
文章目录 一、MPP 介绍二、获取和编译RKMPP库三、视频解码四、视频编码 沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍如何调用alsa api来进行音频数据的播放和录制。 一、MPP 介绍 瑞芯微提供的媒体处理软件平台…...
IT程序设计文档,软件需求设计文档,详细设计模板(Word原件)
1引言 1.1编写目的 1.2项目背景 1.3参考材料 2系统总体设计 2.1整体架构 2.2整体功能架构 2.3整体技术架构 2.4设计目标 2.5.1总体原则 2.5.2实用性和先进性 2.5.3标准化、开放性、兼容性 2.5.4高可靠性、稳定性 2.5.5易用性 2.5.6灵活性和可扩展性 2.5.7经济性…...
画流程图 代码生成流程图 流程图自动运行
一:在线平台 典藏 drawio:完全免费;可拆入代码生成;使用方法 Kimi drawio生成流程图:Kimi里面生成Mermaid格式——>生成代码并复制——>进入drawio里面点插入"号"——>高级——>Mermaid——…...
庄小焱——2024年博文总结与展望
摘要 大家好,我是庄小焱。岁末回首,2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰,照亮了我前行的道路,也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年,…...
Unity3d 实时天气系统基于UniStorm插件和xx天气API实现(含源码)
前言 实时天气在Unity3d三维数字沙盘中的作用非常重要,它能够增强虚拟环境的真实感和互动性,实时天气数据的应用可以提供更为精准和直观的天气信息支持,如果真实的数据加上特效、声音和模型反馈会提高产品档次,提高真实感。 目前…...
【学习总结|DAY032】后端Web实战:登录认证
在 Web 后端开发中,登录认证是保障系统安全和用户数据隐私的关键环节。本文将结合实际开发案例,深入探讨登录功能与登录校验的实现思路和技术细节,希望能帮助读者更好地掌握这一重要知识点。 一、登录功能实现 1.1 思路分析 登录功能的核心…...
在 C++ 中实现调试日志输出
在 C 编程中,调试日志对于定位问题和优化代码至关重要。有效的调试日志不仅能帮助我们快速定位错误,还能提供有关程序运行状态的有价值的信息。本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳。 1. 使用 #ifdef _DEBUG…...
2-Kbengine+Unity3D多人在线游戏DEMO源码架构分析
2-Kbengine+Unity3D多人在线游戏DEMO源码架构分析 目录 一、服务器端 1、编写并生成我们的服务器端和客户端通用的游戏协议 2、 认识Entity实体 3、 官方DEMO-kbengine_demos_assets分析 二、 客户端...
Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅
引言:音浪太强,我稳如老 HAL! 如果有一天你的耳机里传来的不是《咱们屯里人》,而是金属碰撞般的杂音,那你可能已经感受到了 Android 音频硬件抽象层 (HAL) 出问题的后果!在 Android 音频架构中,…...
使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址
从http切换至https 许多不同ip的图片地址需要统一进行代理 部分图片地址是重定向地址 nginx配置 主站地址:https://192.168.123.100/ 主站nginx配置 server {listen 443 ssl;server_name localhost;#ssl证书ssl_certificate ../ssl/ca.crt; #私钥文件ssl_ce…...
Java-数据结构-二叉树习题(1)
对于二叉树的学习,主要的还是得多多练习~毕竟二叉树属于新的知识,并且也并不是线性结构,再加上经常使用递归的方法解决二叉树的问题,所以代码的具体流程还是无法看到的,只能通过画图想象,所以还是必须多加练…...
ReactiveSwift 简单使用
记录 ReactiveSwift 简单使用 导入 ReactiveSwift 库创建 TestViewModel 文件 enum JKTypeType: Int {case cloudcase devicecase weater }// 通过监听属性变化 class TestViewModel: NSObject {lazy var recordType: Property<JKTypeType> {return Property(recordTy…...
iOS - Objective-C 底层实现中的哈希表
1. 关联对象存储(AssociationsHashMap) // 关联对象的哈希表实现 typedef DenseMap<const void *, ObjcAssociation> ObjectAssociationMap; typedef DenseMap<DisguisedPtr<objc_object>, ObjectAssociationMap> AssociationsHashMa…...
SystemUI 实现音量条同步功能
需求:SystemUI 实现音量条同步功能 具体问题 以前在SystemUI 下拉框添加了音量条控制,目前发现在SystemUI下拉框显示状态的情况下, 按键或者底部虚拟导航点击音量加减时候,SystemUI音量条不更新。 如下图:两个Syste…...
Android SystemUI——车载CarSystemUI加载(八)
Android 系统早期的状态栏和导航栏对于手机设备来说那是相当重要的,但是随着手机版本的不断更新,状态栏和导航栏对于手机的重要性在逐渐降低,特别是在快捷手势出现之后,导航栏几乎变得可有可无。但是对于当前如火如荼的车载系统来说,状态栏和导航栏却几乎是必备的,谷歌自…...
全类别机器人传感器模块推荐
视觉感知 双目视觉模块:常见分辨率1280720,帧率30fps-60fps,水平视场角60-90,垂直视场角40-60,通过USB接口传数据。用于机器人导航、避障等,基于三角测量原理获取三维信息,定位更精准。单目摄像…...
怎么用python写个唤醒睡眠电脑的脚本?
环境: win10 python3.12 问题描述: 怎么用python写个唤醒睡眠电脑的脚本? 解决方案: 1.唤醒处于睡眠状态的电脑通常不是通过编程直接实现的,而是依赖于硬件和操作系统提供的特性。对于Windows系统,可…...