注册
环信即时通讯云

环信即时通讯云

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

环信开发文档

元宇宙讨论

元宇宙讨论

元宇宙到底是什么?来畅所欲言
RTE开发者社区

RTE开发者社区

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

技术讨论区

技术交流、答疑
资源下载

资源下载

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

iOS Library

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

Android Library

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

【面试黑洞】Android 的键值对存储有没有最优解? 键值对存储

王二蛋和他的张大花 发表了文章 • 94 次浏览 • 2022-06-24 17:38 • 来自相关话题

正文 这是我在网上找到的一份 Android 键值对存储方案的性能测试对比(数越小越好): 可以看出,DataStore 的性能比 MMKV 差了一大截。MMKV 是腾讯在 2018 年推出的,而 DataStore 是 Android 官方在 2020 年... ...查看全部
0
评论

面试了十几个高级前端,竟然连(扁平数据结构转Tree)都写不出来 扁平数据结构

王二蛋和他的张大花 发表了文章 • 91 次浏览 • 2022-06-24 17:33 • 来自相关话题

前言 招聘季节一般都在金三银四,或者金九银十。最近在这五六月份,陆陆续续面试了十几个高级前端。有一套考察算法的小题目。后台返回一个扁平的数据结构,转成树。 我们看下题目:打平的数据内容如下: let arr = [ {id: 1, name: '部门1... ...查看全部
0
评论

Kotlin中Channel的使用 Channel

王二蛋和他的张大花 发表了文章 • 91 次浏览 • 2022-06-23 11:16 • 来自相关话题

什么是Channel Channel API是用来在多个协程之间进行通信的,并且它是并发安全的。它的概念有点与BlockQueue相似,都遵循先进先出的规则,差别就在于Channel使用挂起的概念替代了BlockQueque中的阻塞。使用它我们可以很轻易的构建... ...查看全部
0
评论

Flutter布局指南之谁动了我的Key Key

王二蛋和他的张大花 发表了文章 • 105 次浏览 • 2022-06-23 11:12 • 来自相关话题

Key用来干嘛 Flutter中的Key,一直都是作为一个可选参数在很多Widget中出现,那么它到底有什么用,它到底怎么用,本篇文章将带你从头到尾,好好理解下,Flutter中的Key。 我们首先来看下面这个Demo: Column( mainAxisA... ...查看全部
0
评论

FlutterWeb开发进出坑总结 FlutterWeb

王二蛋和他的张大花 发表了文章 • 120 次浏览 • 2022-06-23 11:08 • 来自相关话题

一、启动运行乱码 没错,启动一个demo,遇到坑了,如图所示 点击Android Studio上方运行按钮,程序启动之后汉字文字显示乱码,这是由于flutter web有三种渲染模式,auto 、html 和 canvaskit,点击运行按钮(flutter... ...查看全部
0
评论

Kotlin知识点的深入思考 kotlin

王二蛋和他的张大花 发表了文章 • 104 次浏览 • 2022-06-22 10:47 • 来自相关话题

Kotlin是基于JVM的一个语言,也是很时髦的语言。Java语言这几年的发展,借鉴了Kotlin的很多特性。Google把Kotlin作为Android的优先使用语言之后,更是应者影从。本文整理了在Kotlin学习和使用中总结整理出来的几个有意思的知识点,和... ...查看全部
0
评论

AsyncTask源码分析 AsyncTask

王二蛋和他的张大花 发表了文章 • 111 次浏览 • 2022-06-22 10:45 • 来自相关话题

AsyncTask,Android 实现异步方式之一,即可以在子线程进行数据操作,然后在主线程进行 UI 操作 AsyncTask的简单使用 示例 同样的,我们先看看 AsyncTask 如何进行简单使用: AsyncTask<Boole... ...查看全部
0
评论

Android与JavaScript交互上(获取Html内容) Javascript

王二蛋和他的张大花 发表了文章 • 112 次浏览 • 2022-06-22 10:44 • 来自相关话题

在Android开发中,一般通过WebView实现与JavaScript的交互(还有其他更高级的方法!)。WebView用于加载网页内容,如果需要对该网页进行交互操作,可以通过添加一个 JavascriptInterface 交互对象,在恰当的时候调用Js语句... ...查看全部
0
评论

90%的人都不懂的泛型,泛型的缺陷和应用场景 泛型

王二蛋和他的张大花 发表了文章 • 102 次浏览 • 2022-06-22 10:43 • 来自相关话题

Hi 大家好,我是 DHL。公众号:ByteCode ,专注分享有趣硬核原创内容,Kotlin、Jetpack、性能优化、系统源码、算法及数据结构、动画、大厂面经 全文分为 视频版 和 文字版, 文字版: 文字侧重细节和深度,有些知识点,视频不好表达,文字... ...查看全部
0
评论

Java并发系列:详解Synchronized关键字 Java并发

王二蛋和他的张大花 发表了文章 • 97 次浏览 • 2022-06-21 14:41 • 来自相关话题

一、简介 为了提高效率,出现了多线程并发执行,并发执行处理共享变量就会带来安全性问题。那么,在java关键字synchronized就具有使每个线程依次排队操作共享变量的功能。很显然,这种同步机制效率很低,但synchronized是其他并发容器实现的基础,对... ...查看全部
0
评论

Java异常体系和分类 异常体系

王二蛋和他的张大花 发表了文章 • 72 次浏览 • 2022-06-21 14:40 • 来自相关话题

🥞异常概念 异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 在Java等面向对象的编... ...查看全部
0
评论

线程池7个参数拿捏死死的,完爆面试官 线程池

王二蛋和他的张大花 发表了文章 • 85 次浏览 • 2022-06-21 11:34 • 来自相关话题

线程池 上一章节我们介绍的四种创建线程的方式算是热身运动了。线程池才是我们的重点介绍对象。 这个是JDK对线程池的介绍。 但是你会问为什么上面我们创建线程池的方式是通过Executors.newCachedThreadPool(); 关... ...查看全部
0
评论

奇怪,为什么ArrayList初始化容量大小为10? ArrayList

王二蛋和他的张大花 发表了文章 • 88 次浏览 • 2022-06-21 11:33 • 来自相关话题

背景 看ArrayList源码时,无意中看到ArrayList的初始化容量大小为10,这就奇怪了!我们都知道ArrayList和HashMap底层都是基于数组的,但为什么ArrayList不像用HashMap那样用16作为初始容量大小,而是采用10呢? 于是各... ...查看全部
0
评论

Java中BufferedReader、BufferedWriter用法 BufferedReader BufferedWriter

王二蛋和他的张大花 发表了文章 • 111 次浏览 • 2022-06-20 11:31 • 来自相关话题

FileWriter/FileReader 介绍 FileWriter 类从 OutputStreamWriter 类继承而来。该类按字符向流中写入数据。 构造 参数为 File 对象 FileWriter(File file) 参数是文件的路径及文件名(默认... ...查看全部
0
评论

如何优雅地消除复杂条件表达式 条件表达式

王二蛋和他的张大花 发表了文章 • 99 次浏览 • 2022-06-20 11:28 • 来自相关话题

在复杂的实际业务中,往往会出现各种嵌套的条件判断逻辑。我们需要考虑所有可能的情况。随着需求的增加,条件逻辑会变得越来越复杂,判断函数会变的相当长,而且也不能轻易修改这些代码。每次改需求的时候,都要保证所有分支逻辑判断的情况都改了。 面对这种情况,简化判断逻辑就... ...查看全部
0
评论

由浅入深 Android 混淆实战 混淆

王二蛋和他的张大花 发表了文章 • 105 次浏览 • 2022-06-20 11:27 • 来自相关话题

许久没有做混淆相关的工作, 以前存储的知识遗忘得差不多了。停留在很多人的记忆里面混淆还不简单吗?不就是 -keep。这样说也没错,但是要把混淆做得精细精准还是不简单的,今天就一文带你全而透。 混淆的作用 我们为什么要做这个工作,有什么好处? 代码缩减(摇树... ...查看全部
0
评论

Android动态加载so!这一篇就够了! 动态加载so

王二蛋和他的张大花 发表了文章 • 155 次浏览 • 2022-06-20 11:25 • 来自相关话题

背景 对于一个普通的android应用来说,so库的占比通常都是巨高不下的,因为我们无可避免的在开发中遇到各种各样需要用到native的需求,所以so库的动态化可以减少极大的包体积,自从2020腾讯的bugly团队发部关于动态化so的相关文章后,已经过去两年了... ...查看全部
0
评论

使用正则表达式解析短信内容 正则表达式

王二蛋和他的张大花 发表了文章 • 128 次浏览 • 2022-06-15 18:59 • 来自相关话题

使用正则表达式解析短信内容 通常,Android手机自带的短信软件都可以将解析内容并且提取出里面的关键信息展示成卡片的样式或者提供让用户进一步操作的按钮。例如在坚果手机上验证码短信会展示成这样: 信用卡的消费短信会展示成这样: 这篇文章将讨论如何基于正则表... ...查看全部
0
评论

多线程原理和常用方法以及Thread和Runnable的区别 Runnable Thread

王二蛋和他的张大花 发表了文章 • 141 次浏览 • 2022-06-15 18:58 • 来自相关话题

多线程原理 随机性打印 CPU有了两条执行的路径,CPU就有了选择 ,一会执行main方法 一会执行run方法。 也可以说两个线程,一个main线程 一个run线程 一起请求CPU的执行权(执行时间)谁抢到了就执行对应的代码 多线程内存图解 main... ...查看全部
0
评论

ASM 插桩采集方法入参,出参及耗时信息 ASM

王二蛋和他的张大花 发表了文章 • 134 次浏览 • 2022-06-14 15:02 • 来自相关话题

前言 ASM字节码插桩技术在Android开发中有着广泛的应用,但相信很多人会不知道怎么上手,不知道该拿ASM来做点什么。 学习一门技术最好的方法就是动手实践,本文主要通过ASM插桩采集方法的入参,出参及耗时信息并打印,通过一个不大不小的例子快速上手ASM插桩... ...查看全部
0
评论

Activity 感知 Fragment 中的触摸事件 fragment

王二蛋和他的张大花 发表了文章 • 174 次浏览 • 2022-06-14 11:14 • 来自相关话题

前言 Fragment 在 Activity 上,发现 Fragment 上的触摸事件会被 Activity 所接收。这在一些业务场景上很不适用,很多时候业务逻辑不想让我们Fragment中的触摸事件被Activity所感知,那应该怎么做呢? 举个例子吧 我们... ...查看全部
0
评论

Java多线程案例之线程池 线程池

王二蛋和他的张大花 发表了文章 • 127 次浏览 • 2022-06-13 11:39 • 来自相关话题

⭐️前面的话⭐️本篇文章将介绍多线程案例,线程池,线程在Linux中也叫做轻量级线程,尽管线程比进程较轻,但是如果线程的创建和销毁频率高了,开销也还是有的,为了进一步提高效率,引入了线程池,和字符串常量池类似,把线程提前创建好,放到一个“池子”里面,后面使用的... ...查看全部
1
评论

Flutter 小技巧之玩转字体渲染和问题修复 字体渲染

王二蛋和他的张大花 发表了文章 • 131 次浏览 • 2022-06-13 11:36 • 来自相关话题

这次的 Flutter 小技巧是字体渲染,虽然是小技巧但是内容略长,可能大家在日常开发中不会特别关心字体相关的部分,而这将是一篇你平时可能用不到 ,但是遇到问题就会翻出来的文章。 本篇将快速普及一些字体渲染相关的基础,解决一些因为字体而导致的异常问题,并穿插... ...查看全部
1
回复

调用环信接口返回报错 环信接口报错

yangjian 回复了问题 • 2 人关注 • 150 次浏览 • 2022-06-10 19:06 • 来自相关话题

0
评论

flutter简单优秀的开源dialog使用free_dialog Flutter free_dialog

王二蛋和他的张大花 发表了文章 • 134 次浏览 • 2022-06-10 17:02 • 来自相关话题

前言 今天我来介绍一款简单,易用的dialog,该dialog比较简洁,可以适应很多app(主要没有其他动画及以外的图片等,黑白风格可以适配多种样式的app)。如果你的app急需一款不错的dialog,并且你懒得开发,那么用这款就对了。 开始 集成dialog... ...查看全部
0
评论

一文搞明白协程的挂起和恢复 协程

王二蛋和他的张大花 发表了文章 • 167 次浏览 • 2022-06-10 11:07 • 来自相关话题

协程是使用非阻塞式挂起的方式来实现线程运行的。那协程又是如何挂起和恢复的,这里面的概念又是什么,带着这些问题就让我们重新探究下协程的挂起和恢复。我们先创建个协程:override fun initView() { lifecycleScope.... ...查看全部
0
评论

OkHttp源码分析 okhttp

王二蛋和他的张大花 发表了文章 • 120 次浏览 • 2022-06-10 11:04 • 来自相关话题

 大家好,我是小黑,一个还没秃头的程序员~~~ 路是走出来的,而不是空想出来的。 相信大家找工作的时候都会被问及到Okhttp的原理以及源码分析,好记性不如烂笔头,所以这次我打算把它记录下来方便日后复习查看,也和大家分享一下,如果有什么不对之处还请大... ...查看全部
0
评论

Kotlin浅析之Contract contract

王二蛋和他的张大花 发表了文章 • 168 次浏览 • 2022-06-10 11:02 • 来自相关话题

在进行kotlin的项目开发中,我们依赖kotlin语法糖相比java可以更高效地产出,kotlin的彩蛋众多,这篇文章着重跟大家聊一聊Contract,其实Contract在官方函数中其实也有被多次使用,比如我们常用的let、apply、also、isNul... ...查看全部
0
评论

Flutter【移动端】如何进行多渠道打包发布 多渠道

王二蛋和他的张大花 发表了文章 • 177 次浏览 • 2022-06-08 15:33 • 来自相关话题

随着项目的运营推广,总少不了各种客户定制化的需求,当前大部分软件其实都离不开Saas的玩法;定制化需求虽然利润高(特别是海外客户),但对于开发人员来说却比较难搞,同一套代码需要支持不同的需求。一般我们处理这种需求的时候会引入渠道包的概念,每个客户拥有独立渠道,... ...查看全部
0
评论

内存如何记录方法调用和返回过程 方法栈

王二蛋和他的张大花 发表了文章 • 146 次浏览 • 2022-06-08 15:28 • 来自相关话题

全文分为 视频版 和 文字版, 视频版: 通过语音和动画,能够更加直观的看到,内存记录方法调用和返回过程。 bilibili 地址: b23.tv/d5glsFn 文字版 我们在写代码的时候有没有思考过 方法如何调用 、 方法执行完之后如何返回 、 内存如何记... ...查看全部
0
评论

kotlin - 你真的了解 by lazy吗 kotlin

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

背景 kotlin中的语法糖by lazy相信都有用过,但是这里面的秘密却很少有人深究下去,还有网上充斥着大量的文章,却很少能说到本质的点上,所以本文以字节码的视角,揭开by lazy的秘密。 一个例子 class LazyClassTest { v... ...查看全部
0
评论

Android自定义评分控件 评分控件

王二蛋和他的张大花 发表了文章 • 130 次浏览 • 2022-06-07 10:56 • 来自相关话题

无意中翻到几年前写过的一个RatingBar,可以拖拽,支持自定义星星图片,间距大小等参数。 自定义参数 为了方便扩展,支持更多的样式,这里将大部分参数设置成支持外部可配置的形式。 <declare-styleable name="RatingBarP... ...查看全部
0
评论

Gradle 渠道包配置 gradle

王二蛋和他的张大花 发表了文章 • 127 次浏览 • 2022-06-07 10:55 • 来自相关话题

Gradle 渠道包配置 安卓项目中默认使用gradle作为构建工具,gradle默认提供了很多Task,开发者也可以自己新建Task构建脚本,让打包、开发达到事半功倍的效果。这篇文章主要讲解安卓项目中常见的打包脚本。 基本任务 用gradle创建一个简单... ...查看全部
0
评论

Java泛型详解 泛型

王二蛋和他的张大花 发表了文章 • 142 次浏览 • 2022-06-07 10:54 • 来自相关话题

1 为什么需要泛型? 示例1: /** * @Description: 不使用泛型 * @CreateDate: 2022/3/18 3:08 下午 */ public class NoGeneric { private int addInt... ...查看全部
0
评论

Compose 动画边学边做 - 夏日彩虹 compose

王二蛋和他的张大花 发表了文章 • 139 次浏览 • 2022-06-02 15:23 • 来自相关话题

引言 Compose 在动画方面下足了功夫,提供了种类丰富的 API。但也正由于 API 种类繁多,如果想一气儿学下来,可能会消化不良导致似懂非懂。结合例子学习是一个不错的方法,本文就带大家边学边做,通过高仿微博长按点赞的彩虹动画,学习和实践 Compose ... ...查看全部
0
评论

Flutter——平台通信记录器 : channel_observer channel_observer

王二蛋和他的张大花 发表了文章 • 148 次浏览 • 2022-06-02 11:12 • 来自相关话题

前言 Flutter自身的定位,决定了基于其开发的项目在不断迭代的过程中,会有越来越多的平台通信。这些通信多来自各种平台端的sdk,而这些sdk一般是由不同人、团队甚至公司负责的,所以在sdk变动过程中,可能由于沟通不够及时、或者疏忽大意而未能及时通知到客户端... ...查看全部
0
评论

跟我学企业级flutter项目:如何重新定制cached_network_image的缓存管理与Dio网络请求 cached_network_image

王二蛋和他的张大花 发表了文章 • 182 次浏览 • 2022-06-01 11:32 • 来自相关话题

前言 flutter中需要展示网络图片时候,不建议使用flutter原本Image.network(),建议最好还是采用cached_network_image这个三方库。那么我今天就按照它来展开说明,我再做企业级项目时如何重新定制cached_network... ...查看全部
0
评论

探究EventBus粘性事件实现机制 eventbus

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

粘性事件观察者 @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) fun registerEventBus(o: Any) { } 发送粘性事件 EventBus.getDefault... ...查看全部
0
评论

并发编程-线程的启动、死锁、线程安全、ThreadLocal 并发编程

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

1 线程的启动方式 线程的启动方式只有两种。 方式1:继承Thread,然后调用start()启动。 private static class PrimeThread extends Thread { @Override public void... ...查看全部
0
评论

Flutter入口中的runApp方法解析 runApp

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

前言 开发中,如果在runApp方法执行之前设置Android沉浸式样式报错,需要先设置WidgetsFlutterBinding.ensureInitialized();这一行代码才行,为什么,接下来看下这一行代码具体做了啥。 点进去发现这个方法在runAp... ...查看全部
0
评论

Kotlin - 改良装饰者模式 kotlin

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

一、前言 装饰者模式 作用:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。 本质:该模式通过创建一个包装对象,来包裹真实的对象。 核心操作: 创建一个装饰类,包含一个被装饰类的实例 装饰类重写所有被装饰类的方法 在装饰类中对需要增强的功... ...查看全部
0
评论

<版本>Android统一依赖管理 依赖管理

王二蛋和他的张大花 发表了文章 • 182 次浏览 • 2022-05-27 15:02 • 来自相关话题

总结: 在多module的项目中,对版本的统一管理很重要,可以避免多个版本库的冲突问题,也方便日后的统一升级等等 Android的版本依赖的统一管理,有三种方式: 传统apply from的方式 buildsrc方式 composing builds方式 ... ...查看全部
0
评论

如何解决Flutter的WebView白屏和视频自动播放 Flutter webview

王二蛋和他的张大花 发表了文章 • 229 次浏览 • 2022-05-27 14:58 • 来自相关话题

前言 众所周知,Flutter 的 WebView 不太友好,用起来不顺手。 我们 Flutter 开发常用的 WebView 库有2个,一个是 Flutter 官方自己出的 webview_flutter ,另一个是比较流行的 flutter_inappwe... ...查看全部
0
评论

CAS以及Atomic原子操作详解 Atomic CAS

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

CAS以及Atomic原子操作详解 CAS 什么是CAS 针对一个变量,首先比较它在内存中的值与某个期望的值是否相同,如果相同就给它赋予新值 其原子性是直接在硬件层面得到保障的 CAS是一种无锁算法,在不使用锁的情况下实现多线程之间的变量同步 底层... ...查看全部
0
评论

从单例谈double-check必要性,多种单例各取所需 单例

王二蛋和他的张大花 发表了文章 • 182 次浏览 • 2022-05-25 10:56 • 来自相关话题

前言 前面铺掉了那么多都是在讲原则,讲图例。很多同学可能都觉得和设计模式不是很搭边。虽说设计模式也是理论的东西,但是设计原则可能对我们理解而言更加的抽象。不过好在原则东西不是很多,后面我们就可以开始转讲设计模式了。 我的思路是按照设计模式进行分类整理。期间穿... ...查看全部
0
评论

Kotlin - 改良责任链模式 责任链模式

王二蛋和他的张大花 发表了文章 • 202 次浏览 • 2022-05-25 10:51 • 来自相关话题

一、前言 责任链模式 作用:避免请求的发送者和接收者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 举例:OKHttp 的拦截器、Servlet 中的 FilterChain 二、使用责任链模式 例子:学生... ...查看全部
0
评论

Flutter自绘组件:扇形图 扇形图

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

简介 在开发过程中通常会遇到一些不规则的UI,比如不规则的线条,多边形,统计图表等等,用那些通用组件通过组合的方式无法进行实现,这就需要我们自己进行绘制。可以通过使用CuntomPaint组件并结合画笔CustomPainter去进行手动绘制各种图形。 Cus... ...查看全部
0
评论

跟我学flutter:细细品Widget(五)Element Element

王二蛋和他的张大花 发表了文章 • 204 次浏览 • 2022-05-23 10:47 • 来自相关话题

前言跟我学flutter系列:跟我学flutter:我们来举个例子通俗易懂讲解dart 中的 mixin跟我学flutter:我们来举个例子通俗易懂讲解异步(一)ioslate跟我学flutter:我们来举个例子通俗易懂讲解异步(二)ioslate循环机制跟我... ...查看全部
0
评论

跟我学flutter:细细品Widget(四)Widget 渲染过程 与 RenderObjectWidget RenderObjectWidget

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

前言跟我学flutter系列:跟我学flutter:我们来举个例子通俗易懂讲解dart 中的 mixin跟我学flutter:我们来举个例子通俗易懂讲解异步(一)ioslate跟我学flutter:我们来举个例子通俗易懂讲解异步(二)ioslate循环机制跟我... ...查看全部
0
评论

跟我学flutter:细细品Widget(三)ProxyWidget,InheritedWidget InheritedWidget ProxyWidget

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

前言跟我学flutter系列:跟我学flutter:我们来举个例子通俗易懂讲解dart 中的 mixin跟我学flutter:我们来举个例子通俗易懂讲解异步(一)ioslate跟我学flutter:我们来举个例子通俗易懂讲解异步(二)ioslate循环机制跟我... ...查看全部