移动开发
iOS ~ 登录注册页:背景设置为视频样式AVPlayer
视频播放:AVPlayerItem、AVPlayerLayer、AVPlayer
原理:在一个UIViewController上,先将视频的AVPlayer等等图层加载上,在最上层覆盖一些其他的控件(比如:输入框、按钮等等)
退出视频播放页面时,注意一定要进行 AVPlayer①停止并②释放操作:
1.清除KVO;
2.暂停;
3.清空缓存区;
4.从父视图移除播放器;
5.移除播放器的全部视
Apple M2 macOS Flutter环境搭建记录
1.安装 Rosetta 2 环境
sudo softwareupdate --install-rosetta --agree-to-license
2.下载Flutter SDK
flutter_macos_arm64_3.7.7-stable.zip
当然你也可以在这个文档中找到最新的安装包SDK,下载arm64版本即可。
当然,你也可以使用克隆的方式下载SDK。具体,根据个人喜好。
3.添
【里程碑】| 数据应用开发管理集成框架DataSphere Studio 1.1.0 新版本发布
DataSphereStudio1.1.0 是践行数据应用开发管理框架的里程碑,集成了 WeDataSphere 已开源的所有生态组件,并带来了一系列强大的全新特性,以及更加精简、易于对接的数据应用开发集成架构设计和实现。
DataSphere Studio 简介
DataSphere Studio(简称
Android-推荐一个操作状态栏开源库(StatusBar)
图片来源网络,入侵必删
很多时候,我们开发中都是要适配Android状态栏的。这篇博客分享一个操作状态栏的开源库——StatusBar,目前我开发的新项目使用这个库实现沉浸式状态栏的,希望能提高小伙伴们的开发效率。
StatusBar
StatusBar主要用来操作状态栏的,主要特性如下:
透明状态栏,我个人认为可以叫做沉浸式状态栏;
状态栏背景颜色;
状态栏文字颜色(亮|暗色模式)
这10张图拿去,别再说学不会RecyclerView的缓存复用机制了!
ViewPager2是在RecyclerView的基础上构建而成的,意味着其可以复用RecyclerView对象的绝大部分特性,比如缓存复用机制等。
作为ViewPager2系列的第一篇,本篇的主要目的是快速普及必要的前置知识,而内容的核心,正是前面所提到的RecyclerView的缓存复用机制。
RecyclerView,顾名思义,它会回收其列表项视图以供重用。
具体而言,当一个列表项被移出屏
聊聊libffi的调用流程
背景
花了点时间分析了下libffi的调用流程,做个总结。
什么是libffi
libffi是ffi的主流实现方式,其主要是用C和汇编来实现的。
原理和用法市面上已经很多,下面这两篇是我觉得讲得较为通俗易懂的,这里就不做过多的解释了。
外部函数接口 FFI —— 虚拟机中重要但不起眼的组件
使用 libffi 实现 AOP
libffi的调用流程
PS:最近换了M1,所以以下的代码都是ARM64架
JS高级—call(),apply(),bind()
call()
介绍
通过提供一个新的this值给当前调用的函数/方法,从而改变this指向。
语法
fn.call(this.Arg, arg1, arg2,...)
thisArg:当前调用函数this指向的对象
arg1, arg2:传递的其他参数(直接传给形参可不写)
特点
可以直接调用函数—fn.call()
可以改变被调用函数的this指向为指定的— fn.call(this.
如何定位Linux应用程序崩溃?
背景
最近项目中用到了一个库,在程序崩溃时可以生成exception文件,记录程序崩溃时的调用信息,对于定位问题比较有价值,因此整理下这个库涉及到的知识点。相关测试代码已经放到github可以下载调试。
基础知识
maps
maps用来描述进程的虚拟地址空间是如何使用的。总共包括六列,每列及其含义如下:
名字
含义
address
本段在虚拟内存中的地址范围。
perms
本段的
DDD碎片记录 03. 贫血模型与充血模型
将业务领域模型转换为程序设计
一般有2种设计思路:贫血模型,充血模型
所谓贫血模型,就是在软件设计中有很多POJO对象,他们除了get/set方法,基本没有任何业务逻辑。
vip会员的贫血模型的设计图
如vip会员的贫血模型的设计图所示,在领域模型中,有vip会员的领域对象,该对象除了有一堆属性之外,还有会员打折,会员福利,会员特权等方法。
如果将该领域模型按照贫血模型设计,就会设计