自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 厦门Android开发三年,年薪50W

看张图:挑些图中几个点简单来谈谈自己的一些想法。移动架构移动架构是 2017 移动技术年度TOP5话题之一,从中就体会到架构是有多火,记得刚开始学 Android 时候,哪有现在那么框架,那时候谈架构的更多是在服务端开发,比如多层架构,有展示层、业务逻辑层、数据访问层这就是最简单的三层模式,Android系统则是基于事件驱动响应机制设计的单页面架构,其实跟浏览器中的窗口页面是一样的, 系统中一直有个消息轮询监听机制,哪个事件被触发了,相应的响应代码进行处理,这些处理操作是被提前注册到系统中。最早开

2021-09-08 17:39:08 231

原创 原生应用添加 Flutter 模块依赖,【好文推荐】

Android 集成 Flutter AAR生成 aar在flutter 项目中,通过如下命令,生成 aar flutter build aar 将 aar 添加到原生android 项目将 flutter_im.aar 复制到 android 项目下 app/libs注:flutter_im.aar为生成的 aar,可以根据需要命名。这里命名为 flutter_imapp build.grade配置 defaultConfig { ndk { /

2021-09-08 17:37:38 373

原创 原来学Flutter的人,现在后悔了吗,74道高级Android面试合集

序言–跨平台技术在任何情况下都不能被忽视,尤其是 Flutter 这种跨平台能力,学习一门语言,写一次代码就可以生成 Android、iOS app,而且官方还对 Web、Window、Mac 等平台进行支持。一旦非常稳定,这样的开发效率实在是太恐怖了,一个人就能有双倍的效率。之前我亲身体验过,身边一位个人开发者朋友,做了一个 Android App,颇受欢迎赚了一些钱,苦于不会 iOS,后来果断学了下 Flutter 对 iOS 进行了支持,再赚一波。但是,话说回来,并不是所有人都是个人开发者。

2021-09-08 17:35:57 404

原创 原来FFmpeg这么有意思-(二),Android程序员必看

boolean isFileCopied = FileUtils.copyBinaryFromAssetsToData(App.getInstance(), cpuArchNameFromAssets + File.separator + FileUtils.ffmpegFileName, FileUtils.ffmpegFileName); // make file exec.

2021-09-08 17:34:24 206 1

原创 卧槽,Android篇

2.1 引用计数什么是引用计数呢?打个比方A a = new A(),代码中 A 对象被引用 a 所持有,此时引用计数就会 +1 ,如果 a 将引用置为 null 即a = null此时对象 A 的引用计数就会变为 0 ,GC算法检测到 A 对象引用计数为 0 就会将其回收。很简单,但引用计数存在一定弊端场景如下:A a = new A();B b = new B();a.next = b;b.next = a;a = null;b = null;执行完上述代码后 A

2021-09-08 17:32:41 139

原创 卡顿,附答案+考点

不过呢,高版本的Handler的构造方法可以通过传async=true,来使用异步消息public Handler(@Nullable Callback callback, boolean async) {} 然后在Handler发送消息的时候,都会走到 enqueueMessage 方法,如下代码块所示,每个消息都带了异步属性,有优先处理权 private boolean enqueueMessage(@NonNull MessageQueue queue, @NonNull Message ms

2021-09-08 17:31:12 278

原创 Java并发编程---Java多线程基本概念,实践出真知

public static void main(String[] args) throws ExecutionException, InterruptedException { UseThread useThread=new UseThread(); useThread.start(); UseRun useRun=new UseRun(); new Thread(useRun).start(); UseCall useCall=new UseCall(); .

2021-09-06 20:43:05 94

原创 Java多线程-死锁的出现和解决,非科班面试之旅

e.printStackTrace(); } } } } } //生产者B class ProductThreadB implements Runnable{ //我们生产的顺序真好好生产者A相反,我们首先需要对象锁lockB,然后需要对象锁lockA. @Override public void run() { ...

2021-09-06 20:41:30 86

原创 java基础,作为移动开发程序员

3、安全String广泛的用于java 类中的参数,如:网络连接(Network connetion),打开文件(opening files )等等。如果String不是不可变的,网络连接、文件将会被改变——这将会导致一系列的安全威胁。操作的方法本以为连接上了一台机器,但实际上却不是。由于反射中的参数都是字符串,同样,也会引起一系列的安全问题。20、Object类的equal和hashCode方法重写,为什么?首先equals与hashcode间的关系是这样的:1、如果两个对象相同(即用equals

2021-09-06 20:39:57 155

原创 java基础,一文搞懂JVM架构

2.采用根搜索算法:从一个根出发,搜索所有的可达对象,这样剩下的那些对象就是需要被回收的12、静态代理和动态代理的区别,什么场景使用?静态代理类:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理类:在程序运行时,运用反射机制动态创建而成。14、Java中实现多态的机制是什么?答:方法的重写Overriding和重载Overloading是Java多态性的不同表现重写Overriding是父类与子类之间多态性的一种表现重载Over

2021-09-06 20:38:19 166

原创 Java基础 - 单例(饿汉、懒汉),程序员如何应对中年危机

3.Timer(掌握) * Timer类:计时器 public class Demo5_Timer { /** * @param args * 计时器 * @throws InterruptedException */ public static void main(String[] args) throws InterruptedException { Timer t = new Timer(); t.sch

2021-09-06 20:36:38 136

原创 Java基础 - 代码块,自定义View必备知识

A:Java中类的继承特点a:Java只支持单继承,不支持多继承。(一个儿子只能有一个爹)有些语言是支持多继承,格式:extends 类1,类2,…b:Java支持多层继承(继承体系)B:案例演示Java中类的继承特点如果想用这个体系的所有功能用最底层的类创建对象如果想看这个体系的共性功能,看最顶层的类4.继承的注意事项以及继承的应用场景(1)继承的注意事项* a:子类只能继承父类所有非私有的成员(成员方法和成员变量)* b:子类不能继承父类..

2021-09-06 20:35:00 53

原创 JavaWeb - response对象,快速上手

== addHeader(“bb”,“55”);addHeader(“bb”,“66”);结果:名称 bb ,值 55,66= 针对特殊的类型,设置头的方法= addIntHeader(java.lang.String name, int value) :针对int类型值的方法= addDateHeader(java.lang.String name, long date) :值long类型,是毫秒数第三部分:响应体(1)向页面显示的内容(2)方法= getWriter():使用字符流向页

2021-09-06 20:33:31 106

原创 App 黑白化实现探索,有一行代码实现的方案吗,推荐学习

这么看起来工作量还是很大的。后来我就在思考,既然 web 端可以这么给整个页面加一个灰度的效果,我们 app 应该也可以呀?那我们如何给app页面加一个灰度效果呢?我们的 app 页面正常情况下,其实也是 Canvas 绘制出来的对吧?Canvas 对应的相关 API 肯定也是支持灰度的。那么是不是我们在控件绘制的时候,比如 draw 之前设置个灰度效果就可以呢?好像发现了什么玄机。1. 尝试给 ImageView 上个灰度效果那么我们首先通过 ImageView 来验证一下灰度效果的可行性

2021-09-05 19:25:04 922

原创 AOP与OOP有什么区别,谈谈AOP的原理是什么,天呐

心理分析:一旦问到aop面试官在开发自己的项目中 肯定是用到了aop切面编程的。这个时候求职者需要格外注意,特别是aop 在编译时的性能优势,apk编译的原理讲起。切勿将aop的概念弄混,一定要将oop面向对象与aop面向切面的场景说出来求职者: aop实现的三大方式(反射 (xutil) apt注解(ButterKnife) aspect (本文即将讲到的)) 说出各自的优缺点一、AOP概念百度百科中对AOP的解释如下: 在软件业,AOP为Aspect Oriented Programming的缩写

2021-09-05 19:21:45 1680

原创 AOP 最后一块拼图 _ AST 抽象语法树 ,大厂面经合集

2. 添加注解@SupportedAnnotationTypes 指定此注解处理器支持的注解,可用 * 指定所有注解 @SupportedSourceVersion 指定支持的java的版本[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4FmqItFB-1630840796348)(https://user-gold-cdn.xitu.io/2019/1/21/1687069b6ea67f89?imageView2/0/w/1280/h/960/ignore-error/

2021-09-05 19:20:07 121

原创 Android:清晰讲解JNI-与-NDK,看完99%的人都学会了

具体配置如下a. 在Gradle的 local.properties中添加配置ndk.dir=/Users/Carson_Ho/Library/Android/sdk/ndk-bundle若ndk目录存放在SDK的目录中,并命名为ndk-bundle,则该配置自动添加b. 在Gradle的 gradle.properties中添加配置android.useDeprecatedNdk=true // 对旧版本的NDK支持c. 在Gradle的build.gradle添加ndk节点.

2021-09-05 19:18:21 125

原创 Android:彻底消灭OOM的实战经验分享,小白必看

exception.setStackTrace(result.leakTraceAsFakeException().getStackTrace()); Sentry.capture(exception); } catch (Exception e) { e.printStackTrace(); } }}当内存泄漏上报到sentry上面之后,我们直接...

2021-09-05 19:16:37 151

原创 Glide加载Gif的卡顿优化思路分析,美团架构师深入讲解Android开发

Glide( @NonNull Context context, /*.....*/) { //... List<ImageHeaderParser> imageHeaderParsers = registry.getImageHeaderParsers(); //.. GifDrawableBytesTranscoder gifDrawableBytesTranscoder = new GifDrawableBytesTranscoder(); //... registry //... /*

2021-09-03 19:00:46 473

原创 Gitter---高颜值GitHub小程序客户端诞生记,循序渐进

const currentPeriodStarsString =$repo.find(’.float-sm-right’).text().trim() || /* istanbul ignore next */ ‘’;const builtBy = $repo.find(‘span:contains(“Built by”)’).parent().find(’[data-hovercard-type=“user”]’).map((i, user) => {const altStrin

2021-09-03 18:59:08 157

原创 GitHub标星8,看完这篇彻底明白了

UI跳转。组件的生命周期。组件加载、卸载和降维的生命周期集成调试。在开发阶段如何做到按需的编译组件?一次调试中可能只有一两个组件参与集成,这样编译的时间就会大大降低,提高开发效率。代码隔离。如何杜绝耦合的产生。下面给大家介绍的是全网最全的高级Android组件化强化实战手册,覆盖了整个互联网公司,受篇幅限制不会展示所有内容,只能截图展示部分,完整内容已整理成PDF文档。朋友们如果有需要《高级Android组件化强化实战》手册,点击我 即可领取~第一章 Android.

2021-09-03 18:57:19 100

原创 GitHub标星5-8K+,阿里一线架构师技术图谱

[]()框架流程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AqPKoy8b-1630666527293)(//upload-images.jianshu.io/upload_images/19956127-928ad000fa3c55f7.png?imageMogr2/auto-orient/strip|imageView2/2/w/757/format/webp)]框架特点快速开发只需要写项目的业务逻辑,不用再去关心网络请求、权限申请、View的生命周

2021-09-03 18:55:38 277

原创 GitHub标星3-5K+,android插件化开源

对象的创建、内存布局和访问定位Java内存区域与内存模型Java类加载机制及类加载器详解JVM中垃圾收集算法及垃圾收集器详解JVM怎么判断对象是否已死?第二章 AndroidAndroid基础Activity全方位解析Service全方位解析BroadcastReceiver全方位解析ContentProvider全方位解析Fragment详解Android消息机制Android事件分发机制AsyncTask详解HandlerThread详解IntentService详.

2021-09-03 18:54:02 190

原创 GitHub 年度报告,2017 年最受欢迎的编程语言,已收藏

GitHub 上到今年为止已包含多达 337 种编程语言,对全球的开发者来说,GitHub 现如今已经代表着技术的趋势,它公布的一些数据与报告,对所有程序员来说是一份很有参考意义的技术趋势。GitHub 公布了不少数据,我就不一一解读了,总之,就是说,GitHub 上的开发者越来越多了,repo 增长越来越迅猛了,也覆盖到越来越多的国家了。我着重说一下最重要的数据,就是 2017 年 GitHub 上最流行的 15 种编程语言排行榜:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(

2021-09-03 18:52:27 150

原创 Kotlin中_和!!的区别,IBM大面积辞退40岁+的员工

这是输入"kotlin ?和!!"搜索到的百度第一条答案,确实这位说的没错。不过我觉得对于一个刚接触KT(Kotlin)的新手来说,他恐怕需要有汉语八级才能透彻理解这两句话的意思。先阐述两个概念:"?"加在变量名后,系统在任何情况不会报它的空指针异常。"!!"加在变量名后,如果对象为null,那么系统一定会报异常!在Java上出异常的,转化到KT上,编译器任然会让他保持抛出异常,NullPointerException也是如此。所以结合上下文可以看得出,!!加上去后好像并没有和之前Java代码有.

2021-09-02 18:47:56 189

原创 Kotlin-性能优化利器-——-Sqeuence-原理浅析,app架构图

users.map(User :: sex) .filter {it.sex.equals("male")}序列的用法序列的用法很简单,只需要再集合后添加asSeqence() 函数即可users.asSequence() .map(User :: sex) .filter {it.sex.equals("male")}这里插播一个概念,其中 User :: user 是成员引用,具体介绍如下成员引用(Member References)概念成员引用可以使

2021-09-02 18:46:20 169

原创 Kotlin-基础-程序结构(上),作为Android开发程序员

如果一个函数只是返回一个表达式的值,那可以使用更简洁的写法,直接使用等号后面跟表达式即可。fun count(price: Int, sum: Int): Int = price * sum如果可以推导出表达式的类型,那么返回值也可以忽略不写。fun count(price: Int, sum: Int) = price * sum**2.2 无返回值**Kotlin 中函数如果没有返回值,默认返回的是 Unit,类似于 Java 中的 void。Unit 本身没什么意义,平时开发中并不用显

2021-09-02 18:44:45 124

原创 Kotlin-基础-程序结构(上)(1),书籍+视频+学习笔记+技能提升资源库

1.1 类型推导在 Kotlin 中,只要是编译器认识的类型,就可以自动推导出变量的类型,不需要我们显示的指定。val a = "fancyluo" //推导 Stringval b = 666 //推导 Intval c = a + b //推导 String1.2 常量Kotlin 中使用 value 的缩写 val 来表示一个不可变的值类型,与 Java 中 final 的用法类似。// Javapublic static final String NAME

2021-09-02 18:43:12 112

原创 Kotlin 集合函数锦集,写给正在求职的Android开发

//将列表分解为多个较小大小的子列表fun breakListMultiple(){val numList = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)val chunkedLists = numList.chunked(3)println(chunkedLists) // [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]}#### 复制数组相关函数你可以通过使用各种函数来复制现有的数组,例如:* copyInto

2021-09-02 18:41:30 199

原创 Kotlin 集合函数锦集,OMG,学它

val allLoveFootball = users.all { it.isFootballLover }println(allLoveFootball) // false}#### find & single函数 根据特定条件找到特定元素在Kotlin中使用**find**和**single**,可以从满足特定条件的元素列表中找到特定元素。例如,在学生列表中,可以找到学号为3的学生。注意:find返回第一个匹配给定条件的元素,如果没有找到匹配的元素,则返回null。而si

2021-09-02 18:39:52 214

原创 2021Android App开发工作必知必会之【性能优化,含BATJM大厂

1、启动窗口优化启动窗口,也叫启动页、SplashWindow、StartingWindow 等,指的是应用启动时候的预览窗口。iOS App 强制有一个启动页,用户点击桌面 App 图标之后,系统会立即显示这个启动窗口,等 App 主页加载好之后再显示主页面。Android 也有类似的机制 (启动窗口这个是 Android 系统提供的),但是也提供了一个接口,让应用开发者设置是否显示这个启动窗口(默认是显示),部分开发者会把这个系统提供的启动窗口禁掉,启动自己的窗口。但是启动自己的窗口需要的时间

2021-09-01 11:03:02 336

原创 2020金九银十面试季,疯狂涨知识

1.HR/技术负责人更喜欢看到一份显示「职业上升趋势」的简历;2.牛人讲结果,普通人讲过程。2.面试面试前刷题算法题可以说是现在找工作必刷的了。不过根据我面试的经验,算法题总得来说问的还是比较少,还有一些公司是基本不问算法的。当然如果碰到字节,快手这种每轮都问算法的公司,如果因为算法题拿不到offer就很可惜了。算法题就好像高考语文的古诗词默写一样,分不多,但丢了就很可惜了。根据我的经验,大概刷了,掌握100道题就足以应付面试了。当然完全掌握需要重复练习,不是刷了一遍就可以的。这里推

2021-09-01 11:01:16 158

空空如也

空空如也

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

TA关注的人

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