Android 内核开发之—— repo 使用教程 repo 是一个用于管理多个 Git 仓库的工具,特别适用于管理大型项目如 Android 的源码。它是由 Google 开发的,用于解决多个 Git 仓库的同步、管理和代码审查等问题。因此,做 Android 内核开发,首先要了解 repo 是什么,它是如何使用的?
Python 如何调用讯飞星火大模型API 讯飞星火是科大讯飞推出的一款先进的人工智能大模型,它具备强大的语言理解和知识问答能力,能够在多种场景中提供智能化服务。2024年6月27日,科大讯飞发布了讯飞星火大模型V4.0版本,全面对标GPT-4 Turbo。
Android Binder 通信一次拷贝的原理 对于 Android 开发者来说 Binder 应该不会陌生了,Binder 是 Android 提供的 IPC 通信机制,它是通过内存映射实现的,而这也是 Binder 相对于其他传统进程间通信方式的优点之一,即我们说的 Binder 只需要做“一次拷贝”,而其他传统方式需要“两次拷贝”!那么,这所谓的“一次拷贝”的实现原理到底是什么?
为什么 Android 要采用 Binder 作为 IPC 机制? 通过 mmap,Binder 通信时,只需要经历一次数据复制,性能要优于管道、消息队列、socket等方式,在安全性,易用性方面又优于共享内存。鉴于上述原因,Android 选择了这种折中的 IPC 方式,来满足系统对稳定性、传输性能和安全性方面的要求。
Gerrit 使用教程 Gerrit 是建立在 git 版本控制系统之上的,基于 web 的代码审核工具。Gerrit 是免费的,开源的,有一个可视化界面可供用户操作。主要解决的问题是代码审核。他在传统的源码工具管理协作流程中强制性引入代码审核机制,通过人工代码审核和自动化代码验证的方式,不符合要求的代码屏蔽在代码库之外,确保核心代码多人校验、多人互备和自动化构建核验。
GitLab API 的使用教程 GitLab 作为一个开源、强大的分布式版本控制系统,已经成为互联网公司、软件开发公司的主流版本管理工具。使用过 GitLab 的都知道,想要提交一段代码,可以通过 git push 提交到远程仓库,也可以直接在 GitLab 平台上修改提交。然而上述两种提交方式都是人工提交代码,其实,GitLab 提供了一套完整的 API,让第三方平台可以通过 API 自动创建帐号、自动提交代码、自动拉分支,等等。API 涉及到的功能非常全面,基本上人工可以做的所有操作,都可以通过 API 自动实现。
SurfaceView 与 TextureView 详解 播放视频或者渲染其他的动画的时候,有两个 View 组件可供选择,SurfaceView 和 TextureView。在 Android 7.0 上系统 Surfaceview 的性能比 TextureView 更有优势,支持对象的内容位置和包含的应用内容同步更新,平移、缩放不会产生黑边。 在7.0以下系统如果使用场景有动画效果,可以选择性使用TextureView。
Android 基于共享内存实现跨进程大数据的高效传输 Android 基于共享内存实现跨进程大数据的高效传输。目前有很多智能设备采用了Android系统,对Camera,图形渲染都有很多不同于手机App的需求,在没有很好的跨进程传输方案的情况,有些项目只能把很多业务功能杂糅在一个App进程中,使模块承载的业务功能不是很清晰,有了这种方案,可以更加优化项目模型架构的设计。
RubyMine 安装教程 RubyMine 是一个为 Ruby 和 Rails 开发者准备的 IDE,其带有所有开发者必须的功能,并将之紧密集成于便捷的开发环境中,号称最智能的 Ruby 和 Rails 的 IDE,能够大大增加 Ruby 和 Rails 开发者的开发效率。
Linux 系统之 CentOS 和 Ubuntu 的区别 Linux 有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。商业版本以 Redhat 为代表,开源社区版本则以 Debian 为代表。这些版本各有不同的特点,在不同的应用领域发挥着不同的作用,不能一概而论。而绝大多数 VPS(Virtual Private Server 虚拟专用服务器)上只提供开源社区维护的发行版本。下面就这些不同的 Linux 发行版进行简单的分析。...
RAW、RGB、YUV 图像格式区别 RAW 图像就是图像感应器将捕捉到的光源信号转化为数字信号的原始数据,是无损的,包含了物体原始的颜色信息等。RGB 就是一种在数字化领域表示颜色的标准,也称作一种色彩空间,通过用三原色 R、G、B 的不同的亮度值组合来表示某一种具体的颜色。YUV 是一种色彩编码方法,Y 表示明亮度(Luma),就是灰度图。U 和 V 分别对应 Cb(蓝色色度分量) 和 Cr(红色色度分量),代表色度(Choma),作用是描述影像色彩及饱和度,用于指定像素的颜色。......
Java NIO 简介与使用 Java NIO(New IO) 是从 Java 1.4 版本开始引入的一个新的 IO API,可以替代标准的 Java IO API。Java NIO 由以下几个核心部分组成:Channels、Selectors、Buffers。
Camera1 源码解析系列(五)—— Camera1 takePicture() 流程解析 前面几篇文章已经把 Camera 控制流的部分梳理得比较清楚了。在 Camera 流程中,还有一个重要的部分,即数据流。Camera API 1 中,数据流主要是通过函数回调的方式,依照从下往上的方向,逐层 return 到 Applications 中。本篇将数据流与 Camera 的控制流结合起来,从 takePicture() 方法切入,追踪一个比较完整的 Camera 流程。.........
Camera1 源码解析系列(四)—— Camera1 startPreview() 流程解析 上一篇关于分析了 `hw_get_module()` 的调用逻辑,本篇通过追踪 `Camera.startPreview()` 方法,以加深对控制流的理解。
Camera1 源码解析系列(三)—— Camera1 hw_get_module() 解析 这一章,我们将从 `hw_get_module()` 函数入手,去探究 `Libraries` 层是如何调用 `HAL` 层的库中的函数的。`CameraService` 是在开机时就会启动的,而当它第一次启动时,就会调用一个名为 `onFirstRef()` 的成员函数,我们所要探究的内容就是从这里开始的。.........
Camera1 源码解析系列(二)—— Camera1 Open() 流程解析 这一章里,我们将 `Camera.java` 中的 `open()` 方法作为切入点,按照 `Framework -> Android Runtime -> C/C++ Libraries -> HAL` 的顺序去分析整个调用流程。