移动开发

iOS-静态库&动态库-Embed&Sign

1、静态库&动态库 1.1 库介绍 程序的run流程:编译->链接->生成可执行文件->运行(加载可执行文件&动态链接库)。根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。而动态库是在程序执行的时候被链接的。程序执行完,库仍需保留在系统上,以供程序运行时调用。链接静态

iOS获取设备唯一标识和UUID

UIDevice.current.identifierForVendor?.uuidString 以上获取uuidString的方法,每次重启都会改变。 但是项目的要求是不变,并且删除app 只有也有有保留的需求。显然这个无法满足我们的需求。 使用KeyChain解决 keychain(钥匙串)存储在iOS系统中,并且恢复iPhone会使keychain的内容也恢复.但是删除App是不会影响k

iOS DispatchSourceTimer 定时器

1. 概述 说起计时器,很多开发人员第一时间就会想起Timer,但是随着使用的深入,慢慢就发现Timer其实不是很好用,比如说TableView滑动时候不执行,Timer循环引用。 2. DispatchSourceTimer DispatchSourceTimer,也就是大家通常叫的GCD Timer,是依赖于GCD的一种Timer,Runloop的底层代码中也用到这种Timer,可见GCD T

第十五章 源代码文件 REST API 简介

[toc] 第十五章 源代码文件 REST API 简介 源代码文件 REST API 简介 此 REST API 提供对源代码文件的访问。我们开发此 API 是为了允许 Atelier(我们基于 Eclipse 的 IDE)访问 IRIS 服务器上的 IRIS 代码文件。可以使用 API 执行访问 IRIS 代码文件所需的操作。这些行动包括: 获取 IRIS 实例上可用的命名空间 查找命名空间

Android 常见的问题整理 2022

Android 语音TTS 识别全链路过程 本地录音 =》 ASR识别 =》请求后台语义 =》语义落域分发返回 =》 本地仲裁处理落域分发 =》 TTS播报 下面是语音链路的一些基本思路 录音 :Android基本录音为48K的采样率 语音这边需要做降采样处理 降采样为16K。通过Android原生录音将音频给到引擎 唤醒:一般唤醒都是做本地唤醒,所有wakeup唤醒引擎。

Flutter动态化方案

背景 随着业务功能越来越复杂,Flutter应用需要持续更新添加新功能,而且也会遇到线上bug需要及时修复,目前常见的升级方式采用整体更新升级,无论是安卓还是IOS,都需提交对应的应用市场更新,审核周期长也经常有遇到被拒的情况,即使上线了也无法达到全部用户升级,存在兼容问题,费时费力,而且用户对app动辄几十兆几百兆的应用更新是比较抗拒的。 面对这些问题,如果能实现app增量、无感知更新,实现功能

CoordinatorLayout使用AppBarLayout+ViewPager点击按钮回到顶部

如何写一个折叠布局 相信大部分人都会首先想到CoordinatorLayout 没错,使用CoordinatorLayout,然后再使用AppBarLayout很容易就能实现优雅的折叠布局 但是如果产品要你在右下角加一个按钮点击回到顶部呢,并且滑动到一定距离才会显示,默认不显示。 我最先想到的是ScrollView,但是很遗憾会滑动冲突,然后我尝试了重写onTouchEvent和onInterce

iOS开发 动态修改状态栏颜色

关于状态栏UIStatusBarStyle 状态栏有以下几种显示风格: 1.UIStatusBarStyleDefault 2.UIStatusBarStyleLightContent API_AVAILABLE(ios(7.0)) 3.UIStatusBarStyleDarkContent API_AVAILABLE(ios(13.0)) 4.UIStatusBarStyleBlackTrans

UDP 协议

UDP,即用户数据报协议,是一种传输协议,是 TCP 的替代协议。 它与 TCP 的主要区别在于它是无连接的。 这意味着它更快,每个发送的数据包更轻量级,因为它不包含 TCP 所需的所有信息,并且它确实具有更轻的握手过程。 缺点是 UDP 不如 TCP 可靠。 在 TCP 中,如果数据包丢失,协议能够处理它并重新发送数据包。 在 UDP 中,这不是内置在协议中的,必须在更高级别(构建在它之上)进行

C++ Primer Plus习题及答案-第十二章

习题选自:C++ Primer Plus(第六版) 内容仅供参考,如有错误,欢迎指正 ! c++使用new和delete运算符来动态控制内存。 对于静态成员,要在类声明之外使用单独语句进行初始化,因为静态类成员函数是单独存储的,而不是对象的组成部分,而且初始化是在方法文件中,而不是在头文件中,这是因为类声明位于头文件中,程序可能将头文件包括在其他几个文件中,如果在头文件中初始化,将出现多个