自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 [正确]的使用Kotlin Flow进行搜索优化,kotlin面试题

还不懂的话,那就看下面简化的代码:// 文章错误代码????的简化for (i in 0..100) {// 模拟生成数据 flow<Int> { emit(i) }.debounce(500) // 这里是无效的 限流,因为 flow 的 emit 只执行了一次啊…… .collect { println("----------------->>> $it") }}

2021-09-06 23:55:37 337

原创 [干货]设计模式:六种单例的创建方式,附面试题答案

function Singleton(name) { this.name = name;}Singleton.getInstance = function (name) { if(this.instace){ return this.instace; }else { this.instace = new Singleton(name); return this.instace; }};var a .

2021-09-06 23:54:08 147

原创 [干货]设计模式:六种单例的创建方式,上岸蚂蚁金服

传统的单例模式和new 创建对象的调用不一样调用者要调用xxx.getInstance才能获得该单例function Singleton(name) { this.name = name;}Singleton.getInstance = function (name) { if(this.instace){ return this.instace; }else { this.instace = new Singlet..

2021-09-06 23:52:26 220

原创 zookeeper原理篇-Zookeeper选举过程分析,字节跳动资深面试官亲述

经过前面的zookeeper相关的文章,我们也对zookeeper有一定的了解,知道在zookeeper中存在三种服务器角色,分别是Leader,Follower以及Observer,其中Observer仅仅作为一个监控协调者的作用,并不参与zookeeper对外提供服务以及zookeeper的选举,而zookeeper的选举我们从前面的内容也知道,总共可以分为两种,第一种是当整个zookeeper的集群启动后,进行的选举过程,第二种则是在zookeeper运行期间,当出现Leader崩溃的过程时,zook

2021-09-06 23:50:37 235

原创 zookeeper原理篇-Zookeeper选举过程分析,Android开发者

②如果两个选票的ZXID相同的话,那么就会比较myid,默认为myid较大的服务实例作为Leader根据这个规则,我们来看看当server1收到server2的选票后,比较的流程是怎样的,首先两个选票都是第一轮投票选举,所以zxid都是0,接着就要开始比较myid了,server1的myid是1,而server2的myid是2,大于自身的myid,那么server2就应该是Leader,因此server1会更新自己的选票为(2,0),然后下次发送的时候就是发送新的选票信息出去4.统计每一次选票每一次投

2021-09-06 23:48:57 114

原创 zookeeper原理篇-Zookeeper启动流程分析,Android入门教程

2.紧接着会创建Zookeeper中的数据存储管理器–FileTxnSnaplog类,此类作为最上层的,提供了一系列了操作数据文件的接口,其中包括操作事务日志和操作快照的接口,而创建当前类实例会根据zoo.cfg中的dataDir以及dataLogDir参数进行构建3.同样根据解析出来的zoo.cfg配置文件中的tickTime以及session的会话时间来设置对应参数,并且会根据zookeeper.serverCnxnFactory参数来确定启动Zookeeper的网络连接工厂是基于Netty的还是基于

2021-09-06 23:47:19 140

原创 WorkManager完全解析+重构轮询系统,看完直接怼产品经理

}}}在上面的MyWorker实例中,继承了Worker 并且重写了doWork()方法,需要注意的是doWork()方法是有返回值Worker.Result的,可以在任务执行成功是返回**Worker.Result.SUCCESS**,在任务执行出现异常时返回**Worker.Result.FAILURE** doWork()方法的返回值主要有三种 1、**Worker.Result.SUCCESS** 表示任务执行成功2、**Worker.Result.FAILURE** 表示任务...

2021-09-06 23:45:36 254

原创 Kotlin学习手记,flutter开发实战详解pdf

.flatMap { (0 until it).asSequence()}.joinToString().let(::println)val newList = list.flatMap { ArrayList<String>(it)}* **sequence**的概念 sequence类似java8里面的stream流,或者RxJava里面的流概念val list = listOf(1, 2, 3, 4)list.asSequ.

2021-09-05 22:16:08 266

原创 Kotlin协程,Android开发需要学什么

}}//在onDestroy生命周期方法之中要手动取消override fun onDestroy() {super.onDestroy()mScope.cancel()}#### 步骤1. 获取一个协程作用域用于创建协程2. 通过协程作用域.launch方法启动新的协程任务 1. 启动时可以指定执行线程 2. 内部通过withContext()方法实现切换线程3. 在onDestroy生命周期方法之中要手动取消### 协程作用域* ...

2021-09-05 22:14:31 86

原创 Kotlin协程之flow工作原理,附详细答案

flowOn学习 flow 一个绕不开的操作符就是 flowOn 了,以下面示例代码为例, flow 需要在协程中使用,下面的 emit(1) 会在 Dispatchers.Default 指定的线程中执行,而 println(it) 会在父协程所在线程中执行:flow { emit(1) }.flowOn(Dispatchers.Default).collect { println(it) } flow {} 的源码在上面已经看过了,就是以 block 代码块为参数创建了一个 SafeFlow 对

2021-09-05 22:12:41 642

原创 Kotlin协程(一),已拿到offer

```coroutineScope 实现结构化并发。async 时CoroutineScope 的扩展函数,因此可以直接用coroutineScope 抽取。fun main() = runBlocking { val time = measureTimeMillis { println("The answer is ${concurrentSum()}") } println("Completed in $time ms")}suspend fun.

2021-09-05 22:11:01 100

原创 Kotlin中的可空类型,2021Android笔试题总结

声明一个非空变量时,如果在定义时未初始化,则必须在后面初始化,且不能被赋值为null2、声明一个可为空变量 // 2、声明一个可为空的变量 by xiaojin on 7/24/21 9:38 PM var tel:String? init { // 可被赋值为null by xiaojin on 7/24/21 9:40 PM tel = null // 因为call方法需要的是String类型,但是tel其实是St

2021-09-05 22:09:24 92

原创 Kotlin-基础-程序结构(上),Android学习教程

我们先来看看函数的语法,如下- fun [函数名]([参数列表]):[返回值类型]{[函数体]}- fun [函数名]([参数列表]) = [表达式]Kotlin 中的函数以 fun 开头,下面以几个例子来说明 Kotlin 函数的使用方法。2.1 有返回值Kotlin 中函数的返回值写在参数列表的后面,以冒号加一个返回值的类型表示。fun count(price: Int, sum: Int): Int { return price * sum}如果一个函数只是返回一个表达式的

2021-09-05 22:07:50 265

原创 【 Flutter 绘制指南 ,总结到位

通过滑动的区域限定、位置的变化计算、位移与角度的计算,你可以让曾经封印已久的数学知识派上用场。控制会带来更多乐趣的体验,可视、可动,也许会让你对编程本身有更深的理解和兴趣。在绘制中,很多细节都需要被考虑,需要很多循环和判断,这些很能锻炼你的思维。比如下面的仪表盘,如何绘制刻度、如何摆正文字、如何绘制指针、如何实现三色等等问题,都可以练习你的编码能力。通过绘制,你可以完成很多普通操作很难完成的效果,也能对颜色、图片的操作有一些本质上的认识,而不仅停留于调用一个 API。通过路径可以绘..

2021-09-03 21:52:36 499 1

原创 『Android 技能篇,进阶学习资料

[]()ChangeScroll当调用 view.scrollTo() 会触发转场效果:ChangeScroll transition = new ChangeScroll();transition.setInterpolator(new AnticipateOvershootInterpolator());TransitionManager.beginDelayedTransition(mRoot, transition);if (view1.getScrollX() == -100.

2021-09-03 21:50:54 159

原创 「Do,Android面试2021

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UWNavQko-1630676934045)(https://user-gold-cdn.xitu.io/2018/10/28/166bb055ab787647?imageView2/0/w/1280/h/960/ignore-error/1)]首发公众号:Android程序员日记 作者:贤榆的榆 如果你觉得有帮助欢迎关注、赞赏、转发 阅读时间:2616字 6分钟写在前面很早就像自己搭一个Android源码阅读环境,折

2021-09-03 21:49:05 97

原创 “创业吃过饼,这些面试题你会吗

上市公司之后我来到了我现在待的这家公司。比起我之前待的创业公司就我一个Android开发,在这里我算是找到了失去很久的团队归宿感。大公司除了人多以外,工作的强度和难度也大大地增加,加班当然也成为了家常便饭,当然与之相对应的福利也是提升了不少。在大公司,技术水平并不是决定这个人发展潜力的决定性因素。要知道大公司最不缺的就是人才,能进大公司的,哪个不是有两把刷子的呢?对于大公司而言,他们需要的是拥有极强责任心以及任劳任怨的员工,能否承担某一模块功能的稳定性就直接决定了你的去留。除此之外,沟通能力也是非常重

2021-09-02 21:39:53 429

原创 “2020,别进大公司了,安卓开发入门教程

因为,无论是BAT三足鼎立的前些年,还是TMD日益壮大的2016年、2017年,或者是寒冬已至的2019年…这些人每年都会说一次这样的话。一部分人跟风焦虑,另一部分人默默牛逼一些人对进大公司持悲观态度:“大专或高中学历进不了大公司!”“普通二本进不了大公司!”“工作不满3年进不了大公司!””非科班毕业的,进不了大公司!“进不了大公司就难拿高薪,拿不了高薪就买不起房养不起崽,大家变得很焦虑。上述这些想法,每天都在一些人的脑海中回荡,其实这也很正常,任何行业都是这样,一部分人跟风焦虑,另一部分

2021-09-02 21:33:06 394

原创 _Kotlin_系列_ 二、Kotlin泛型,字节Android高工面试

2、泛型有什么作用?3、怎么去定义和使用泛型?1、什么是泛型?泛型通俗的理解就是:很多的类型,它通过使用参数化类型的概念,允许我们在不指定具体类型的情况下进行编程2、泛型有什么作用?泛型是 JDK 1.5 引入的安全机制,是一种给编译器使用的技术:1、提高了代码的可重用性2、将运行期的类型转换异常提前到了编译期,保证类型的安全,避免类型转换异常3、怎么去定义和使用泛型?我们可以给一个类,方法,或者接口指定泛型,在具体使用的地方指定具体的类型一、Java 泛型要学习好 Kotlin 泛型

2021-09-02 21:31:33 128

原创 Android-开发经验分享:挺重要的网络基础,下载量瞬秒百万

这里主要简单说一下请求报文和响应报文的格式:请求报文:响应报文:关于Get和Post:我们都熟知的关于Get和Post的区别大致有以下几点:Get会把请求参数都拼接在url后面,最终显示在地址栏,而Post则会把请求参数数据放进请求体中,不会再地址栏显示出来传递参数的长度限制问题:对于第一点,如果是在浏览器里把隐私数据暴露在地址栏上确实不妥,但是如果是在App开发中呢,没有地址栏的概念,那么这一点是不是还会成为选择post还是get的制约条件。对于第二点,长度的限制应该是浏览器的限制,跟

2021-09-01 12:12:48 73

原创 Android-开发你需要了解的那些事:学习路线规划,看完不会的来打我

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new Vi

2021-09-01 12:11:20 68

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除