注册
环信即时通讯云

环信即时通讯云

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

环信开发文档

ChatGPT讨论

ChatGPT讨论

畅所欲言
RTE开发者社区

RTE开发者社区

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

技术讨论区

技术交流、答疑
资源下载

资源下载

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

iOS Library

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

Android Library

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

多线程安全-iOS开发注意咯 iOS开发

zuyu 发表了文章 • 701 次浏览 • 2021-05-31 14:43 • 来自相关话题

正式因为多线程能够在时间片里被CPU快速切换,造就了以下优势资源利用率更好程序设计在某些情况下更简单程序响应更快但是并不是非常完美,因为多线程常常伴有资源抢夺的问题,作为一个高级开发人员并发编程那是必须要的,同时解决线程安全也成了我们必须要要掌握的基础原子操作... ...查看全部
1
评论

为了能够摸鱼,我走上了歧路 transform gradle Android

柳天明 发表了文章 • 872 次浏览 • 2021-05-27 14:21 • 来自相关话题

前言 每天都是重复的工作,这样可不行,已经严重影响我的日常摸鱼,为了减少自己日常的开发时间,我决定走一条歧路,铤而走险,将项目中的各种手动埋点统计替换成自动化埋点。以后再也不用担心没时间摸鱼了~ 作为Android届开发的一员,今天我决定将摸鱼方案分享给大家,... ...查看全部
0
评论

[Android]使用函数指针实现native层异步回调 native Android

柳天明 发表了文章 • 715 次浏览 • 2021-05-25 14:32 • 来自相关话题

1. 前言 在上篇关于lambda表达式实现方式的文章中,有提到一个概念叫做MethodHandle,当时的解释是类似于C/C++的函数指针,但是文章发出后咨询友人的意见,发现很多人并不清楚函数指针是怎么用的,其实我本人也是只是知道这个概念,但是并没有实际使用... ...查看全部
0
评论

NestedScrollView嵌套滑动源码解读! 滑动 RecyclerView Android

柳天明 发表了文章 • 783 次浏览 • 2021-05-19 16:31 • 来自相关话题

1、前言滑动对于android来说,是一个必不可少;它不复杂,大家都知道在onTouchEvent中,让它滑动就完事了,说它复杂,其嵌套处理复杂;在本系列文章,最终是为了熟悉嵌套滑动机制;对于滑动,分为下面几篇文章来完成解读:滑动基础ScrollView滑动源... ...查看全部
0
评论

LinkedList源码解析(手把手带你熟悉链表) Android

可口可乐 发表了文章 • 807 次浏览 • 2021-05-14 15:04 • 来自相关话题

前言链表是常见的数据结构之一,但是很多同学只听说过链表,并不知道什么是链表,所以本文将会带领各位同学手写一个LinkedList,源码跟官方会有点不一样,不过思路是大概相同的,最后再带领大家读官方源码为了降低源码难度简化泛型代码,手写的LinkedList只能... ...查看全部
1
评论

Android修炼系列(十二),自定义一个超顺滑的回弹RecyclerView Android

维生素C 发表了文章 • 1636 次浏览 • 2021-05-14 10:50 • 来自相关话题

前面写了一个嵌套滑动框架和分析了ViewDragHelper的事件分发,本节主要自定义一个带有回弹效果的RecyclerView,看看事件和动画的配合,这在各大App中都比较常见了,效果如下: 实现 这是定义的回弹类:OverScrollRecycl... ...查看全部
1
评论

Android修炼系列(十一),强大的可拖拽工具类ViewDragHelper Android

维生素C 发表了文章 • 929 次浏览 • 2021-05-14 10:49 • 来自相关话题

demo实现效果图见下,可自由拖拽的view,还在自己造轮子吗?使用系统androidx包(原v4)下的ViewDragHelper 几行代码即可搞定.. 实现 ViewDragHelper是用于编写自定义ViewGroup的工具类。它提供了许多有用... ...查看全部
0
评论

Android修炼系列(十),事件分发从手写一个嵌套滑动框架开始 Android

维生素C 发表了文章 • 796 次浏览 • 2021-05-14 10:48 • 来自相关话题

先放了一张效果图,是一个嵌套滑动的效果。博客的栗子我都上传到了gitHub上,感兴趣的可以下载看下。 在说代码之前,可以先看下最终的NestedViewGroup XML结构,NestedViewGroup内部包含顶部地图 MapView和滑动布局L... ...查看全部
0
评论

CocoaAsyncSocket源码Write(总结篇 二) iOS开发

zuyu 发表了文章 • 943 次浏览 • 2021-05-13 14:58 • 来自相关话题

if (hasNewDataToWrite) { //拿到buffer偏移位置 const uint8_t *buffer = (const uint8_t *)[curr... ...查看全部
0
评论

CocoaAsyncSocket源码Write(总结篇) iOS开发

zuyu 发表了文章 • 780 次浏览 • 2021-05-13 14:57 • 来自相关话题

我们切入口//写数据对外方法 - (void)writeData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag { if ([data length] == 0) re... ...查看全部
0
评论

CocoaAsyncSocket源码Read(七) iOS开发

zuyu 发表了文章 • 715 次浏览 • 2021-05-13 14:50 • 来自相关话题

最后还是提下SSL的回调方法,数据解密的地方。两种模式的回调;Part7.两种SSL数据解密位置:1.CFStream:当我们调用:CFIndex result = CFReadStreamRead(readStream, buffer, defaultByt... ...查看全部
0
评论

CocoaAsyncSocket源码Read(六) iOS开发

zuyu 发表了文章 • 802 次浏览 • 2021-05-13 14:45 • 来自相关话题

讲了半天理论,想必大家看的有点不耐烦了,接下来看看代码实际是如何处理的吧:step1:从prebuffer中读取数据://先从提前缓冲区去读,如果缓冲区可读大小大于0 if ([preBuffer availableBytes] > 0) { ... ...查看全部
0
评论

CocoaAsyncSocket源码Read(五) iOS开发

zuyu 发表了文章 • 777 次浏览 • 2021-05-13 14:42 • 来自相关话题

在我们来看flushSSLBuffers方法之前,我们先来看看这个一直提到的全局缓冲区prebuffer的定义,它其实就是下面这么一个类的实例:Part3.GCDAsyncSocketPreBuffer的定义@interface GCDAsyncSocketP... ...查看全部
0
评论

CocoaAsyncSocket源码Read(四) iOS开发

zuyu 发表了文章 • 751 次浏览 • 2021-05-13 14:38 • 来自相关话题

前文讲完了两次TLS建立连接的流程,接着就是本篇的重头戏了:doReadData方法。在这里我不准备直接把这个整个方法列出来,因为就光这一个方法,加上注释有1200行,整个贴过来也无法展开描述,所以在这里我打算对它分段进行讲解:注:以下代码整个包括在这个方法定... ...查看全部
0
评论

CocoaAsyncSocket源码Read(三) iOS开发

zuyu 发表了文章 • 830 次浏览 • 2021-05-13 14:35 • 来自相关话题

这里我们就讲讲几个重要的关于SSL的函数,其余细节可以看看注释:创建SSL上下文对象:sslContext = SSLCreateContext(kCFAllocatorDefault, kSSLServerSide, kSSLStreamType); ssl... ...查看全部
0
评论

CocoaAsyncSocket源码Read(二) iOS开发

zuyu 发表了文章 • 993 次浏览 • 2021-05-13 14:31 • 来自相关话题

讲讲两种TLS建立连接的过程讲到这里,就不得不提一下,这里个框架开启TLS的过程。它对外提供了这么一个方法来开启TLS:- (void)startTLS:(NSDictionary *)tlsSettings 可以根据一个字典,去开启并且配置TLS,那么这个字... ...查看全部
0
评论

CocoaAsyncSocket源码Read(一) iOS开发

zuyu 发表了文章 • 840 次浏览 • 2021-05-13 14:28 • 来自相关话题

本文为CocoaAsyncSocket源码阅读 将重点涉及该框架是如何利用缓冲区对数据进行读取、以及各种情况下的数据包处理,其中还包括普通的、和基于TLS的不同读取操作等等。注:由于该框架源码篇幅过大,且有大部分相对抽象的数据操作逻辑,尽管楼主竭力想... ...查看全部
1
评论

Gradle 爬坑指南 -- 导论 gradle Android

一盆绿萝 发表了文章 • 1103 次浏览 • 2021-05-13 14:27 • 来自相关话题

Gradle 内容真是超乎寻常的多,在写本文之前我以为有个万把字就差不多了,但随着越看越多,我发现想写的话一本书都是可以写出来的 〒▽〒 因为内容多,我只能拆成多篇文章了,希望能写全吧 我写文章都是喜欢以小白为出发点的,希望对那些一点都不了解 Gralde 的... ...查看全部
1
评论

Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能 Android

可口可乐 发表了文章 • 780 次浏览 • 2021-05-13 14:17 • 来自相关话题

最近项目中需要用到 ListView 下拉刷新的功能,一开始想图省事,在网上直接找一个现成的,可是尝试了网上多个版本的下拉刷新之后发现效果都不怎么理想。有些是因为功能不完整或有 Bug,有些是因为使用起来太复杂,十全十美的还真没找到。因此我也是放弃了在网上找现... ...查看全部
1
评论

Android JPEG 压缩那些事 Android

可口可乐 发表了文章 • 1539 次浏览 • 2021-05-13 14:14 • 来自相关话题

JPEG 基础知识 JPEG(Joint Photographic Experts Group,联合图像专家小组)是一种针对照片影像广泛使用的有损压缩标准方法。 使用 JPEG 格式压缩的图片文件,最普遍使用的扩展名格式为 .jpg,其他常用的扩展名还包括 .... ...查看全部
0
评论

由三个感叹号开启的 debug 篇章 | Java Debug 笔记 Android

柳天明 发表了文章 • 1107 次浏览 • 2021-05-12 15:33 • 来自相关话题

!!! JUnit version 3.8 or later expected: 如下所示,当我在进行单元测试时,控制台居然抛出了这么诡异的bug! 三个感叹号开头 此刻的我 ??? 异常信息如下: java.lang.ClassNotFoundExce... ...查看全部
0
评论

教你如何修改他人网络请求数据!!! Android

柳天明 发表了文章 • 1439 次浏览 • 2021-05-12 15:30 • 来自相关话题

# Http 请求dns 劫持 解决方案: HttpDns 服务器接入 「阿里云 收费 腾讯HttpDns 服务器免费(接入方案 七牛云 sdk)」 OkHttp HttpDns + 证书验证 # OkHttp HttpDns + 证书验证 Ok... ...查看全部
0
评论

想知道手指触摸屏幕的时候发生了什么吗? 滑动 Android

柳天明 发表了文章 • 924 次浏览 • 2021-05-12 15:24 • 来自相关话题

1 前言 滑动对于android来说,是一个必不可少;它不复杂,大家都知道在onTouchEvent中,让它滑动就完事了,说它复杂,其嵌套处理复杂;在本系列文章,最终是为了熟悉嵌套滑动机制;对于滑动,分为下面几篇文章来完成解读: 滑动基础 ScrollVie... ...查看全部
2
评论

还不会搭安卓架构?有这一篇就够了 架构 Android

柳天明 发表了文章 • 891 次浏览 • 2021-05-12 10:38 • 来自相关话题

前言用本篇文章理论知识和架构原则实践了一个 wanAndroid 项目,其中全部采用 kotlin 编写并抛弃了 Rxjava,因为 kotlin 可以完全替代他,github 本项目中汇总了业界知名的架构文章和一些项目帮你彻底理解架构。后续本项目将... ...查看全部
0
评论

Android面试:80%的面试官关于Glide都会问这几个问题!【建议收藏】 Android

王二蛋和他的张大花 发表了文章 • 810 次浏览 • 2021-05-11 11:52 • 来自相关话题

Glide的三级缓存有了解过么? 先来了解一下我们常说的图片三级缓存 一般是强引用,软引用和文件系统,Android系统中提供了LruCache,通过维护一个LinkedHashMap来保存我们需要的各种类型数据,例如我们这里需要的Bitmap。Lr... ...查看全部
1
评论

做了这么多年开发,TypedArray你该知道的东西 Android

王二蛋和他的张大花 发表了文章 • 1000 次浏览 • 2021-05-11 11:50 • 来自相关话题

大家好,我是程序员双木L,后续会发专题类的文章,这是自定义控件的第一篇,之后也会陆续更新相关的文章,欢迎关注。 自定义属性在自定义控件过程中属于比较常见的操作,我们可以回想一下这样的场景:自定义view的过程中,我们需要在不同的情况下设置不同的文字大小,那么... ...查看全部
0
评论

想要进阶高级开发?快看画布的基础使用 Android

王二蛋和他的张大花 发表了文章 • 754 次浏览 • 2021-05-11 11:48 • 来自相关话题

【Android 自定义控件】2.画布的基础使用 1.设置画布的背景颜色 2.画圆形 基本语法 参数说明 3.画直线 单条直线: 基本语法 ... ...查看全部
0
评论

40+场面试,100%通过率,我想分享的14条经验 面试

王二蛋和他的张大花 发表了文章 • 647 次浏览 • 2021-05-11 11:46 • 来自相关话题

作者 | 陈同学       责编 | 欧阳姝黎 这里是陈同学,首先来一个简单的自我介绍,和个人的经历分享吧。 我本科和硕士均就读于哈工大,是今年1月毕业。 我经历过3个专业,大一 船舶工程;大二-大四 车辆... ...查看全部
0
评论

震惊:从头开发一个RPC是种怎样的体验? RPC

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

对于开发人员来说,调用远程服务就像是调用本地服务一样便捷。尤其是在微服务盛行的今天,了解RPC的原理过程是十分有必要的。 作者 | Alex Ellis       译者 | 弯月 出品 | CSDN(ID:CS... ...查看全部
0
评论

Google和腾讯为什么都采用主干开发模式? google

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

作者 | 黄国峰       责编 | 欧阳姝黎 摘要 本文介绍了两种常用的代码分支模式:特性分支开发模式、主干开发模式,分别阐述了其优缺点和适用环境;同时剖析了 Google 和腾讯采用主干开发模式的背景... ...查看全部
0
评论

我不是个黑客,但我就喜欢安全。快看如何开拓你的开发价值!! 逆向 Android

王二蛋和他的张大花 发表了文章 • 840 次浏览 • 2021-05-11 11:40 • 来自相关话题

安卓逆向4-使用AndroidKiller插入广告页文章目录 任务要求 1.安装配置AndroidKiller 2.反编译和拷贝替换 3.反编译 任务要求 利用Androidki... ...查看全部
0
评论

快来为你的照片添加个性标签吧! Android

柳天明 发表了文章 • 966 次浏览 • 2021-05-11 10:38 • 来自相关话题

1. 前言 PS:最近在项目执行过程中有这样一个需求,要求拍完照的图片必须达到以上的效果。需求分析: 使用用预览布局SurfaceView,在不局上方使用控件的方式来进行设计,最后通过截图的方式将画面进行保存。 使用图片添加水印的方式来完成。 ... ...查看全部
0
评论

Fragment问世这么久,你真的会用吗? fragment Android

柳天明 发表了文章 • 711 次浏览 • 2021-05-10 17:23 • 来自相关话题

Fragment的简单用法 在一个Activity中添加两个Fragmet,并让这两个Fragment平分屏幕空间 首先新建一个左侧Fragmet布局left_fragment_xml,这里只放置一个按钮 <?xml version="1.0" enco... ...查看全部
0
评论

iOS-TCP网络框架(二) iOS开发

zuyu 发表了文章 • 694 次浏览 • 2021-05-09 09:47 • 来自相关话题

现在我们已经有了TCP连接, Request, Response和Task, 接下来要做的就是把这一切串起来. 具体来说, 我们需要一个管理方建立并管理TCP连接, 提供接口让调用方通过Request向连接中写入数据, 监听连接中读取到的粘包数据并将数据拆分成... ...查看全部
0
评论

iOS-TCP网络框架(一) iOS开发

zuyu 发表了文章 • 662 次浏览 • 2021-05-09 09:45 • 来自相关话题

TCP概述TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义. 在因特网协议族中,TCP属于传输层, 位于网络层之上,应用层之下.需要注意的是, TCP只是协议声明, 仅对外声明协议提供的功能, 但本身并不进行任何实现. ... ...查看全部
0
评论

drawable用Kotlin应该这样写 kotlin Android

柳天明 发表了文章 • 780 次浏览 • 2021-05-08 14:23 • 来自相关话题

Kotlin应该这样写系列 SharedPreferences用Kotlin应该这样写 Glide用Kotlin应该这样封装(一) Glide用Kotlin应该这样封装(二) 前言 通常我们在res/drawable下面自定义shape和selector来满足... ...查看全部
0
评论

Kotlin 高效解析数学表达式(支持函数) kotlin Android

柳天明 发表了文章 • 904 次浏览 • 2021-05-08 14:22 • 来自相关话题

需求 由于项目需求,需要在低性能设备高频率地解析计算数学表达式,所以重量级的比如词法分析,语法分析,抽象语法树🌲三件套就不太合适了。(当然也不是不行,只是有点大材小用,而个人能力又有限,对于ANTLR调优之类不太擅长) 说起数学公式解析,当然离不开老朋友逆波兰... ...查看全部
0
评论

Compose Preview 的 UX 设计之旅 compose Android

柳天明 发表了文章 • 781 次浏览 • 2021-05-08 14:17 • 来自相关话题

本文由来自 Android Developer UX 团队的 Preethi Srinivas (UX 研究员) 和 Paris Hsu (交互设计师) 所撰写。 Jetpack Compose 刚刚进入 测试阶段 啦!🎉 在此激动人心的时刻,Android ... ...查看全部
0
评论

CocoaAsyncSocket源码分析---Connect (八) iOS开发

zuyu 发表了文章 • 938 次浏览 • 2021-05-08 11:22 • 来自相关话题

Connect流程,用一张图来概括总结一下吧:socketchildSocketFD = accept(parentSocketFD, (struct sockaddr *)&addr, &addrLen); 然后调用了newSocketQue... ...查看全部
0
评论

CocoaAsyncSocket源码分析---Connect (七) iOS开发

zuyu 发表了文章 • 1198 次浏览 • 2021-05-08 11:18 • 来自相关话题

addStreamsToRunLoop这里方法做了两件事:CFStream读写回调的常驻线程,其中调用了好几个函数: + (void)startCFStreamThreadIfNeeded; + (void)cfstreamThread; 在这两个函数中,添... ...查看全部
0
评论

CocoaAsyncSocket源码分析---Connect (六) iOS开发

zuyu 发表了文章 • 889 次浏览 • 2021-05-08 11:13 • 来自相关话题

本文方法十一 -- 连接成功后的初始化原因是为了线程安全和socket相关的操作必须在queue中被回调。这个方法基本上很简单,就是关于两个stream函数的调用:这个函数创建了一对读写stream,并且把stream与这个scoket做了绑定。相信用过的朋友... ...查看全部
0
评论

CocoaAsyncSocket源码分析---Connect (五) iOS开发

zuyu 发表了文章 • 904 次浏览 • 2021-05-08 11:09 • 来自相关话题

上文我们提到了GCDAsyncSocket的初始化,以及最终connect之前的准备工作,包括一些错误检查;本机地址创建以及socket创建;服务端地址的创建;还有一些本机socket可选项的配置,例如禁止网络出错导致进程关闭的信号等我们去用之前创建的本机地址... ...查看全部
0
评论

CocoaAsyncSocket源码分析---Connect (四) iOS开发

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

//根据host、port + (NSMutableArray *)lookupHost:(NSString *)host port:(uint16_t)port error:(NSError **)errPtr { LogTrace(); ... ...查看全部
1
评论

CocoaAsyncSocket源码分析---Connect (三) iOS开发

zuyu 发表了文章 • 772 次浏览 • 2021-05-08 11:04 • 来自相关话题

interface本文方法四--本地地址绑定方法- (void)getInterfaceAddress4:(NSMutableData **)interfaceAddr4Ptr address6:(NSMutableDa... ...查看全部
0
评论

CocoaAsyncSocket源码分析---Connect (二) iOS开发

zuyu 发表了文章 • 916 次浏览 • 2021-05-08 10:57 • 来自相关话题

connect也就是我们在截图中选中的方法,那我们就从这个方法作为起点,开始讲起吧。保证这个连接操作一定是在我们的接着把Block中连接过程产生的错误进行赋值,并且把连接的结果返回出去//如果有错误,赋值错误 if (errPtr) *errPtr =... ...查看全部
0
评论

CocoaAsyncSocket源码分析---Connect (一) iOS开发

zuyu 发表了文章 • 1010 次浏览 • 2021-05-08 10:51 • 来自相关话题

CocoaAsyncSocket是谷歌的开发者,基于BSD-Socket写的一个IM框架,它给Mac和iOS提供了易于使用的、强大的异步套接字库,向上封装出简单易用OC接口。省去了我们面向Socket以及数据流Stream等繁琐复杂的编程。本文为一个系列,旨在... ...查看全部
0
评论

汉字笔顺动画技术剖析 Android

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

背景 汉字笔顺动画是常见的语文教育需求,我们导入网上开源的 Hanzi Writter 并部署编辑器,应用在大力智能作业灯上。在原版前端实现基础上我们扩展了 Android 和 iOS 端实现,提供更优化的笔顺动画性能。增强对笔顺绘制的控制能力,实现了指定笔... ...查看全部
0
评论

从一个10年程序员的角度告诉你:搞懂Java面向对象有多容易? Android Java

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

前言: 1)java 面向对象语言,面向过程围绕过程(解决问题步骤),面向对象围绕实体(名词,特性(属性),行为(动作、方法))。它们设计思想区别在于关心核心不同的。 主流都是面向对象的。 实际开发,先按面向对象思想进行设计,具体实现时面向过程(人... ...查看全部
0
评论

不懂泛型,怎么装逼,一文把泛型说的明明白白,安排!!! Android Java

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

目录 前言 1、泛型的概念 2、泛型的使用 3、泛型原理,泛型擦除 3.1 IDEA 查看字节码 3.2 泛型擦除原理 4、?和 T 的区别 5、super extends 6、注意点 1、静态方法无法访问类的泛型 2、创建之后无法修改类... ...查看全部
1
评论

程序员五一被拉去相亲,结果彻底搞懂了HTTP常用状态码 Java

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

我有一个朋友…… 叫小星,是个北漂程序员。 小星年纪不小了,还是个单身狗。家里很着急,小星也很着急。 可是,小星起身一看,眼前一闪闪闪闪闪闪闪闪闪…… ——全是秃头抠脚大汉…… 前一阵子好不容易来个实习生小姑娘,分给小星带,小星高兴坏了,结果姑娘... ...查看全部