注册
环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

环信FAQ

环信FAQ

集成常见问题及答案
RTE开发者社区

RTE开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有
0
评论

NSMutableString 不要用 copy iOS开发

zuyu 发表了文章 • 835 次浏览 • 2021-08-30 21:26 • 来自相关话题

疑问:我们都知道 copy 一般用来修饰 有对应可变类型的不可变对象上,比如 NSString,NSArray 和 NSDictionary。那么为什么不推荐用 copy 去修饰&... ...查看全部
0
评论

从伪代码理解View事件分发过程 事件分发 Android

柳天明 发表了文章 • 741 次浏览 • 2021-08-30 13:40 • 来自相关话题

事件从起源从手指从屏幕按下的瞬间,触摸事件经过一系列处理会来到Activity的dispatchTouchEvent中。Activity.javapublic boolean dispatchTouchEvent(MotionEvent ev) { i... ...查看全部
0
评论

iOS Reveal iOS开发

zuyu 发表了文章 • 751 次浏览 • 2021-08-30 10:58 • 来自相关话题

iOS Reveal一、概述Reveal是一款UI调试神器,对iOS开发非常有帮助。这里以版本Version 4 (8796)演示二、安装2.1 Mac端安装Reveal官网直接下载安装,可以用试用版。2.2 手机端安装1.cydia直接安装Reveal Lo... ...查看全部
0
评论

objc_msgSend 消息快速查找(cache查找) iOS开发

zuyu 发表了文章 • 849 次浏览 • 2021-08-30 10:53 • 来自相关话题

一、CacheLookup 查找缓存1.1 CacheLookup源码分析传递的参数是NORMAL, _objc_msgSend, __objc_msgSend_uncached://NORMAL, _objc_msgSend, __objc_msgSend_... ...查看全部
0
评论

iOS GCD 实现线程安全的多读单写功能 iOS开发

zuyu 发表了文章 • 1770 次浏览 • 2021-08-30 10:48 • 来自相关话题

本文测试 demo 都是在 playground 里用 Swift5 完成的. 使用 GCD实现线程安全修改数据源, 示例中的读写都是对一个字典而言, 实际开发中可以是文件的读写(FileManager 是线程安全的), 可以是数组, 根据自己情况而定.先来了... ...查看全部
0
评论

高级线程应用之栅栏、信号量、调度组以及source(五) iOS开发

zuyu 发表了文章 • 878 次浏览 • 2021-08-27 14:27 • 来自相关话题

4.3 Dispatch Source 封装 Timer目标是封装一个类似NSTimer的工具。void dispatch_source_set_timer(dispatch_source_t source, dispatch_time_t start... ...查看全部
0
评论

高级线程应用之栅栏、信号量、调度组以及source(四) iOS开发

zuyu 发表了文章 • 867 次浏览 • 2021-08-27 14:27 • 来自相关话题

四、Dispatch Source在任一线程上调用它的的一个函数 dispatch_source_merge_data 后,会执行 dispatch source 事先定义好的句柄(可以把句柄简单理解为一个 b... ...查看全部
0
评论

高级线程应用之栅栏、信号量、调度组以及source(三) iOS开发

zuyu 发表了文章 • 873 次浏览 • 2021-08-27 14:26 • 来自相关话题

二、信号量(dispatch_semaphore_t)相关函数:dispatch_semaphore_create:创建信号量dispatch_semaphore_wait:信号量等待dispatch_semaphore_signal:信号量释放信号量有两个效... ...查看全部
0
评论

高级线程应用之栅栏、信号量、调度组以及source(二) iOS开发

zuyu 发表了文章 • 916 次浏览 • 2021-08-27 14:12 • 来自相关话题

1.2.1.2 _dispatch_lane_non_barrier_completestatic void _dispatch_lane_non_barrier_complete(dispatch_lane_t dq, dispatch_wa... ...查看全部
0
评论

高级线程应用之栅栏、信号量、调度组以及source(一) iOS开发

zuyu 发表了文章 • 945 次浏览 • 2021-08-27 14:11 • 来自相关话题

一、栅栏函数CPU的乱序执行能力让我们对多线程的安全保障的努力变得异常困难。因此要保证线程安全,阻止CPU换序是必需的。遗憾的是,现在并不存在可移植的阻止换序的方法。通常情况下是调用CPU提供的一条指令,这条指令常常被称为barrier。一条barrier指令... ...查看全部
0
评论

高级IOS开发进阶 - 自旋锁、互斥锁以及读写锁!(二) iOS开发

zuyu 发表了文章 • 1403 次浏览 • 2021-08-26 18:55 • 来自相关话题

4.3 源码分析initWithCondition:保存了condition参数以及NSCondition的创建。lockWhenCondition:open func lock(whenCondition condition: Int) { let ... ...查看全部
0
评论

高级IOS开发进阶 - 自旋锁、互斥锁以及读写锁(一) iOS开发

zuyu 发表了文章 • 2034 次浏览 • 2021-08-26 18:42 • 来自相关话题

一、锁的分类在分析其它锁之前,需要先区分清楚锁的区别,基本的锁包括了二类:互斥锁 和 自旋锁。1.1 自旋锁自旋锁:线程反复检查锁变量是否可用。由于线程在这一过程中保持执行, 因此是一种 忙等。一旦获取了自旋锁,线程会一直保持该锁... ...查看全部
0
评论

锁的原理(二):@synchronized iOS开发

zuyu 发表了文章 • 769 次浏览 • 2021-08-26 18:30 • 来自相关话题

3.1 SyncData存储结构#define LOCK_FOR_OBJ(obj) sDataLists[obj].lock #define LIST_FOR_OBJ(obj) sDataLists[obj].data static StripedMap<... ...查看全部
0
评论

锁的原理(一):@synchronized iOS开发

zuyu 发表了文章 • 723 次浏览 • 2021-08-26 18:30 • 来自相关话题

一、性能分析网上很多对比八大锁性能的文章,时间大部分比较早。苹果对某些锁内部进行了优化。这篇文章找中会以10万次数据做对比对主流锁性能进行分析。1.1 调用情况模拟OSSpinLockOSSpinLock在iOS 10以后废弃了,不过还可以调用。需要导入头文件... ...查看全部
0
评论

Android模块化开发实践 模块化

王二蛋和他的张大花 发表了文章 • 720 次浏览 • 2021-08-26 13:23 • 来自相关话题

一、前言 随着业务的快速发展,现在的互联网App越来越大,为了提高团队开发效率,模块化开发已经成为主流的开发模式。正好最近完成了vivo官网App业务模块化改造的工作,所以本文就对模块化开发模式进行一次全面的介绍,并总结模块化改造经验,帮助兄弟项目避坑。 ... ...查看全部
0
评论

真·富文本编辑器的演进之路-Span的整体性控制 富文本

王二蛋和他的张大花 发表了文章 • 781 次浏览 • 2021-08-26 13:21 • 来自相关话题

时隔多日,终于又更新了。 在了解了Span的基本知识后,我们先来处理下「Span的整体性控制」,怎么理解呢?我们在编辑富文本的时候,经常会遇到一些整体内容的输入,例如「@用户」、输入话题「#什么话题#」、跳转链接「URL」,这些Span区别于普通文字,输入时... ...查看全部
0
评论

Flutter 安卓 Platform 与 Dart 端消息通信方式 Channel 源码解析 Flutter Dart Platform

王二蛋和他的张大花 发表了文章 • 719 次浏览 • 2021-08-26 13:20 • 来自相关话题

背景 本系列前面已经分析了 Flutter 的很多知识,这一篇我们来看下 Flutter 平台通信相关原理。Flutter 官方提供三种 Platform 与 Dart 端消息通信方式,他们分别是 MethodChannel、BasicMessageChan... ...查看全部
0
评论

『Android』 AndroidStudio多版本共存指南 AndroidStudio

王二蛋和他的张大花 发表了文章 • 1253 次浏览 • 2021-08-26 13:18 • 来自相关话题

当AndroidStudio最新版本,提供许多新功能的时候。为了提升开发效率,必须跟着谷歌官方走。但是为了防止,将原本的Studio直接升级到新版Studio,然后导入以前项目,出现问题。因此,考虑多种版本共存的问题。 搭建方法 采用多个版本的Stud... ...查看全部
0
评论

开发者实践丨盲水印插件:用户端的实时视频溯源保护 视频溯源保护

王二蛋和他的张大花 发表了文章 • 894 次浏览 • 2021-08-26 13:13 • 来自相关话题

本文作者是 RTE 2021 创新编程挑战赛获奖者董章晔团队。在实时音视频领域,视频内容会需要得到版权保护,而盲水印则是保护的措施之一。这支参赛团队基于声网 SDK 开发了一款应用于用户端的实时视频盲水印插件。其他使用声网 SDK 的开发者,也同样可以在自己的... ...查看全部
0
评论

Jetpact Compose状态管理简单理解 jetpack compose

柳天明 发表了文章 • 924 次浏览 • 2021-08-26 11:17 • 来自相关话题

概览所谓的状态可以简单的理解为应用中的某个值的变化,比如可以是一个布尔值、数组放在业务的场景中,可以是 TextField 中的文字、动画执行的状态、用户收藏的商品都是状态我们知道 compose 是声明式的 ui,每次我们重组页面的时候都会把组件重组,此时就... ...查看全部
0
评论

Android 10 启动分析之servicemanager篇 (二) 源码分析

柳天明 发表了文章 • 1028 次浏览 • 2021-08-25 13:44 • 来自相关话题

上一篇文章:Android 10 启动分析之Init篇 (一)在前文提到,init进程会在在Trigger 为init的Action中,启动servicemanager服务,这篇文章我们就来具体分析一下servicemanager服务,它到底做了哪些事情。se... ...查看全部
0
评论

Android 10 启动分析之Zygote篇 (三) 源码分析 Android

柳天明 发表了文章 • 896 次浏览 • 2021-08-25 13:43 • 来自相关话题

上一篇文章:# Android 10 启动分析之servicemanager篇 (二)app_main在init篇中有提到,init进程会在在Trigger 为late-init的Action中,启动Zygote服务,这篇文章我们就来具体分析一下Zygote服... ...查看全部
0
评论

Why | 为什么需要虚拟内存? 虚拟内存

王二蛋和他的张大花 发表了文章 • 856 次浏览 • 2021-08-25 09:33 • 来自相关话题

冯-诺依曼老爷子告诉过我们,算术逻辑单元和控制器单元组成的 CPU 负责进行运算以及程序流程的控制。运算所需要的指令和数据由 内存 来提供。 那么,如果让你作为操作系统的顶层设计者,你会提供一种什么机制,让 CPU 可以从内存中获取指令和数据呢? 用 ... ...查看全部
0
评论

【开源项目】Compose仿豆瓣榜单客户端,了解一下~ 豆瓣

王二蛋和他的张大花 发表了文章 • 869 次浏览 • 2021-08-25 09:31 • 来自相关话题

前言 Compose正式发布也有一段时间了,感觉要上手还是得实战一波。 所以借着空闲时间,参照豆瓣榜单页面的设计,开发了几个Compose版的豆瓣榜单页面 UI效果还是挺好看的,有兴趣的同学可以点个Star:Compose仿豆瓣榜单客户端 效果图 首先看... ...查看全部
0
评论

如何优雅的在业务中使用设计模式(代码如诗) 设计模式

王二蛋和他的张大花 发表了文章 • 714 次浏览 • 2021-08-25 09:30 • 来自相关话题

前言 有段时间没写文章了,最近沉迷Rust,无法自拔,锈儿有毒;这真是门非常有趣的语言,很多地方的设计,真的是满足了我所有的向往。 当然,这也不是一门简单的语言,提出所有权的概念,引入了极多符号:mut、&mut、ref mut、&... ...查看全部
0
评论

iOS逆向必学-logos语法 iOS开发

zuyu 发表了文章 • 2127 次浏览 • 2021-08-24 17:56 • 来自相关话题

一、概述Logos语法其实是CydiaSubstruct框架提供的一组宏定义。便于开发者使用宏进行HOOK操作。语法简单,功能强大且稳定,它是跨平台的。[logos] (http://iphonedevwiki.net/index.php/Logos)二、lo... ...查看全部
0
评论

lookUpImpOrForward 消息慢速查找(下) iOS开发

zuyu 发表了文章 • 680 次浏览 • 2021-08-24 17:51 • 来自相关话题

3.1.2 search_method_list_inlineALWAYS_INLINE static method_t * search_method_list_inline(const method_list_t *mlist, SEL sel) { ... ...查看全部
0
评论

lookUpImpOrForward 消息慢速查找(上) iOS开发

zuyu 发表了文章 • 808 次浏览 • 2021-08-24 17:46 • 来自相关话题

上篇文章分析到了_obje_msgSend查找cache消息快速查找,最终会从汇编代码进入_lookUpImpOrForward进行慢速查找。这篇文章将详细分析这个流程。一、汇编中找不到缓存在汇编代码中只有_lookUpImpOrForward的调用而没有实现... ...查看全部
0
评论

为数不多的人知道的 Kotlin 技巧以及 原理解析 Android kotlin

柳天明 发表了文章 • 926 次浏览 • 2021-08-24 11:52 • 来自相关话题

Google 引入 Kotlin 的目的就是为了让 Android 开发更加方便,自从官宣 Kotlin 成为了 Android 开发的首选语言之后,已经有越来越多的人开始使用 Kotlin。结合着 Kotlin 的高级函数的特性可以让代码可读性更强,更加简洁... ...查看全部
0
评论

解析android匿名共享内存几个关键函数 内存 Android

柳天明 发表了文章 • 943 次浏览 • 2021-08-24 11:50 • 来自相关话题

基础知识当我们在分析android的键盘记录的时候就不得不和input进行打交道,那么input在系统中是怎么进行实现的? Android手机中默认携带input子系统,并且开在机就会产生默认的mouse和keyboard事件,这样使得用户开机就可以触屏点击和... ...查看全部
0
评论

【插件&热修系列】ClassLoader方案设计 ClassLoader

王二蛋和他的张大花 发表了文章 • 719 次浏览 • 2021-08-24 09:45 • 来自相关话题

引言 上一个阶段我们开始进入插件/热修的领域,了解了热修的前世今生,下面我们来学习下热修中的ClassLoader方案设计; ClassLoader主要是用来加载插件用的,在启动插件前首先要把插件加载进来,下面我们通过不同方案分析,了解加载的不同姿势~ ... ...查看全部
0
评论

Suspension(挂起/暂停) 在Kotlin coroutines里面到底是如何工作的? kotlin Suspension

王二蛋和他的张大花 发表了文章 • 1184 次浏览 • 2021-08-24 09:43 • 来自相关话题

前言 挂起函数是Kotlin协程的标志。挂起功能也是其中最重要的功能,所有其他功能都建立在此基础上。这也是为什么在这篇文章中,我们目标是深入了解它的工作原理。 挂起一个协程(suspending a coroutine)意味着在其(代码块)执行过程中中断(挂起... ...查看全部
0
评论

ConstraintLayout2.0一篇写不完之极坐标布局与动画 ConstraintLayout

王二蛋和他的张大花 发表了文章 • 766 次浏览 • 2021-08-24 09:39 • 来自相关话题

相对于一般布局方式的笛卡尔坐标系,MotionLayout还拓展了ConstraintLayout中的相对中心布局方式,我们暂且称之为「极坐标布局」方式。 极坐标布局方式在某些场景下,比笛卡尔坐标系的建立更加方便,特别是涉及到一些圆周运动和相对中心点运动的场... ...查看全部
0
评论

Android分区存储常见问题解答 存储

王二蛋和他的张大花 发表了文章 • 817 次浏览 • 2021-08-24 09:32 • 来自相关话题

要在 Google Play 上发布,开发者需要将应用的 目标 API 级别 (targetSdkVersion) 更新到 API 级别 30 (Android 11) 或者更高版本。针对新上架的应用,这个政策自 8 月开始生效;现有应用更新新的版本,这个政策... ...查看全部
0
评论

一文读懂 Android 主流屏幕适配方案 屏幕适配

王二蛋和他的张大花 发表了文章 • 1782 次浏览 • 2021-08-24 09:31 • 来自相关话题

公众号:字节数组,希望对你有所帮助 ?? 关于 Android 的屏幕适配现在已经有很多成熟的方案了,已经不是一个热门话题了。印象中 2018 年是讨论适配方案最火热的一段时间,那时候字节跳动技术团队发文介绍了其适配方案,之后就带动起了很多位大佬陆续发表... ...查看全部
0
评论

WMS在Activity启动中的职责 添加窗体(三) wms Android

柳天明 发表了文章 • 1033 次浏览 • 2021-08-23 13:50 • 来自相关话题

Context 获取系统服务在正式聊WMS之前,我们先来看看context.getSystemService其核心原理,才能找到WindowManager的实现类: @Override public Object getSystemService... ...查看全部
0
评论

Android自定义view之3D正方体 自定义View Android

柳天明 发表了文章 • 1016 次浏览 • 2021-08-23 13:48 • 来自相关话题

前言在之前写了一篇关于3D效果的文章,借助传感器展示,有小伙伴问可不可以改成手势滑动操作(事件分发),所以出一篇文章传感器相关文章链接:Android 3D效果的实现一、小提相对于常见的自定义view而言,继承的GLSurfaceView只有两个构造函数。可以... ...查看全部
0
评论

内存管理(MRC、ARC) iOS开发

zuyu 发表了文章 • 694 次浏览 • 2021-08-23 11:46 • 来自相关话题

一、 什么是内存管理程序在运行的过程中通常通过以下行为,来增加程序的的内存占用创建一个OC对象定义一个变量调用一个函数或者方法而一个移动设备的内存是有限的,每个软件所能占用的内存也是有限的当程序所占用的内存较多时,系统就会发出内存警告,这时就得回收一些不需要再... ...查看全部
0
评论

『Blocks』基本使用 iOS开发

zuyu 发表了文章 • 731 次浏览 • 2021-08-23 11:30 • 来自相关话题

本文用来介绍 iOS开发中 『Blocks』的基本使用。通过本文您将了解到:什么是 BlocksBlocks 变量语法Blocks 变量的声明与赋值Blocks 变量截获局部变量值特性使用 __block 说明符Blocks 变量的循环引用以及如何避... ...查看全部
0
评论

2021 提升Android开发效率的实战技巧 效率

王二蛋和他的张大花 发表了文章 • 766 次浏览 • 2021-08-23 09:41 • 来自相关话题

一 泛型 + 反射 我们创建Activity的时候 需要先设置布局setContentView(R.layout..) 如果使用了ViewModel,还得给每个Activity创建ViewModel. 如果项目中Activity过多,无疑是... ...查看全部
0
评论

Flutter 入门与实战:让模拟器和和邮递员(Postman)聊聊天 Flutter

王二蛋和他的张大花 发表了文章 • 1022 次浏览 • 2021-08-23 09:34 • 来自相关话题

前言 上一篇Flutter 入门与实战(五十五):和 Provider 一起玩 WebSocket我们讲了使用 socket_client_io 和 StreamProvider实现 WebSocket 通讯。本篇延续上一篇,来讲一下如何实现与其他用户进行即... ...查看全部
0
评论

Android修炼系列,图解抓包和弱网测试 弱网测试 抓包

王二蛋和他的张大花 发表了文章 • 845 次浏览 • 2021-08-23 09:29 • 来自相关话题

本节主要介绍下,如何使用 Charles 进行抓包和模拟弱网环境测试。Charles 能够帮助我们查看设备和 Internet 之间的所有 HTTP 和 SSL/HTTPS 通信,这包括请求、响应和 HTTP 头。 HTTP代理 我们要保证手机设备和电脑在... ...查看全部
0
评论

字节跳动开源AndroidPLThook方案bhook AndroidPLThook

王二蛋和他的张大花 发表了文章 • 1910 次浏览 • 2021-08-23 09:28 • 来自相关话题

字节 bhook 开源 github.com/bytedance/b… 字节的 Android PLT hook 方案 bhook 开源了。bhook 支持 Android 4.1 - 12 (API level 16 - 31),支持 armeabi-v... ...查看全部
0
评论

RecyclerView 添加分割线,ItemDecoration 的实用技巧 ItemDecoration

王二蛋和他的张大花 发表了文章 • 894 次浏览 • 2021-08-21 13:23 • 来自相关话题

官网解释: An ItemDecoration allows the application to add a special drawing and layout offset to specific item views from the adapter'... ...查看全部
0
评论

Android输入系统之 的创建与启动 InputReader

王二蛋和他的张大花 发表了文章 • 833 次浏览 • 2021-08-21 13:22 • 来自相关话题

今天趁着在公司摸鱼的时间,来更新一篇文章。 上一篇文章 InputManagerService的创建与启动 分析了 IMS 的创建与启动,这其中就伴随着 InputReader 的创建与启动,本文就着重分析这两点内容。 本文所涉及的文件路径如下 fram... ...查看全部
0
评论

Android OpenGL ES 实现抖音传送带特效 OpenGL

王二蛋和他的张大花 发表了文章 • 984 次浏览 • 2021-08-21 13:21 • 来自相关话题

抖音 APP 真是个好东西,不过也容易上瘾,老实说你的抖音是不是反复卸载又反复安装了,后来我也发现我的几个 leader 都不刷抖音,这令我挺吃惊的。 我刷抖音主要是为了看新闻,听一些大 V 讲历史,研究抖音的一些算法特效,最重要的是抖音提供了一个年轻人的视... ...查看全部
0
评论

自动化检测 Android APP 非 SDK 接口使用,防止非预期异常发生! 异常

王二蛋和他的张大花 发表了文章 • 1106 次浏览 • 2021-08-21 13:19 • 来自相关话题

背景 从 Android 9(API 级别 28)开始,Android 平台对应用能使用的非 SDK 接口实施了限制,只要应用引用非 SDK 接口或尝试使用反射或 JNI 来获取其句柄,这些限制就适用,这些限制旨在帮助提升用户体验和开发者体验,为用户降低应用... ...查看全部
0
评论

【Flutter 组件集录】SizedBox SizedBox

王二蛋和他的张大花 发表了文章 • 802 次浏览 • 2021-08-21 13:17 • 来自相关话题

一、认识 SizedBox 组件 源码中对 SizedBox 的介绍为:一个指定尺寸的盒子。那 SizedBox 为什么可以限定尺寸?背后区域限定的原理又是什么? 本文通过 SizedBox 来一窥布局约束奥秘的冰山一角。 1.SizedBox 基... ...查看全部
0
评论

Crash 防护系统 -- KVO 防护 iOS开发

zuyu 发表了文章 • 744 次浏览 • 2021-08-20 18:16 • 来自相关话题

通过本文,您将了解到:KVO Crash 的主要原因KVO 防止 Crash 的常见方案我的 KVO 防护实现测试 KVO 防护效果1. KVO Crash 的常见原因KVO(Key Value Observing) 翻译过来就是键值对观察,是 iO... ...查看全部
0
评论

『Crash 防护系统』 一 Unrecognized Selector iOS开发

zuyu 发表了文章 • 681 次浏览 • 2021-08-20 18:14 • 来自相关话题

这个系列将会介绍如何设计一套 APP Crash 防护系统。这套系统采用 AOP(面向切面编程)的设计思想,利用 Objective-C语言的运行时机制,在不侵入原有项目代码的基础之上,通过在 APP 运行时阶段对崩溃因素的的拦截和处理,使得 APP 能够持续... ...查看全部