- 博客(190)
- 资源 (25)
- 收藏
- 关注

原创 Android学习从入门到放弃(文末有福利)
移动开发早就不是最热门的程序员职业了,而且移动开发也并不是一个能够在短时间内轻松掌握的领域,需要我们有足够的耐心和毅力
2023-10-09 20:15:41
326

原创 技术人如何写简历?(文末有福利)
笔者在滴滴、阿里和字节时候也面试了不少人,看过形形色色的简历没有上百也有大几十份了。校招季也快到了,这里总结自身经验聊一下
2023-05-23 20:39:07
599
1
原创 2023年的年度总结:不设边界、积极探索
24年技术上 会继续在全栈之路上狂奔、客户端的话应用层目前都在往大前端靠拢,鸿蒙出来搅局,会加速这个趋势,对鸿蒙技术栈还是需要继续跟进,争做“π”型打工人增加自身战斗力。产品上以公众号小程序为阵地 继续探索知识变现。工作上还是得把业务支持好团队带好,毕竟这是基本盘。最后 尽人事听天命吧,与君共勉!🔥我是程序员龙湫(全栈),就职过网易、滴滴,阿里&字节 面试官,目前在字节跳动写Android。
2024-01-02 12:43:59
884
原创 kotlin的一些细节与技巧
欢迎关注kotlin在使用过程中有些有着一些小细节需要注意,搞清楚这些能够更加高效的使用Kotlin,下面来介绍一下。
2023-07-01 00:21:36
702
原创 Shell编程从入门到实践——实践篇
结合之前搞一些CI/CD 使用到shell,shell的开箱即用确实比较方便,至少无需在宿主上安装运行环境,本篇文章主要解释shell脚本实践过程中一些经验总结。
2023-06-23 21:36:31
342
原创 Shell编程从入门到实践——入门篇
Shell是一种命令行解释器,它是在Unix和Linux操作系统中广泛使用的一种工具,也是我们日常开发工作中的好帮手,相较于Python,Shell语法简单非常好上手而且开箱即用无需纠结安装Python2还是Python3。下面将从 入门到实践详细介绍下Shell编程
2023-06-22 20:22:41
451
原创 Kotlin中的lambda从入门到进阶
lambda表达式是Kotlin函数式编程的一个重要概念,是函数式编程的基础,在kotlin中函数是一等公民,而lambda则是其灵魂。lambda本质上是可以传递给函数的一小段代码, 是一个函数类型的对象,本文主要从浅入深介绍下kotlin中的lambda以及跟java lambda的区别。
2023-06-21 00:49:29
2572
1
原创 算法技巧-双指针
双指针技巧在算法题中算是常用技巧了,让我们省去for循环,降低复杂度,通常双指针技巧可以分为2大类快慢指针左右指针前者主要解决链表中的问题,比如链表是否有环,删除倒数第N个节点等,后者主要解决数组、字符串中的问题,比如二分查找、翻转数组等,下面将详细介绍下。
2023-06-06 15:08:46
514
原创 Modern Android Development in 2023
这是一篇基于我个人观点和经验的文章,考虑到Android开发者社区的不同意见,我可能没有提到一些非常有趣的工具、模式和架构,但这并不意味着它们不能成为开发Android应用程序的其他有趣选择。
2023-05-31 11:27:48
676
原创 你真的了解Systrace吗?
在日常开发中有时候遇到棘手的性能问题就需要使用这个工具,Systrace 是中新增的性能数据采样和分析工具。它可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger/SystemServer/Kernel/Input/Display 等Framework 部分关键模块、服务,View」系统等 的运行信息,从而帮助开发者更直观的「分析系统瓶颈,改进性能」。
2023-05-29 01:52:46
2478
原创 Android Camera了解一下
首发于公众号Android Camera了解一下Camera 演进简介最近在项目中遇到 Camera相关的场景,之前对这块不是很了解,趁机补了一下盲区。Android Camera 相关也是生态碎片化较为严重的一块,Android FrameWorkt提供Camera API来实现拍照与屏幕录制的能力,目前Android有三类APICamera (为了便于区分 下面简称 Camera1)此类是用于控制设备相机的旧版API,在Android5.0以下使用,现已DeprecatedCam..
2021-09-17 01:16:44
9174
2
原创 Flutter UI渲染分析
1、前言本篇文章主要介绍Flutter 渲染框架及其渲染过程Flutter是谷歌的移动UI框架,在此之前也有类似ReactNative、Weex等跨端方案,Flutter在一定程度上借鉴了ReactNative的思想,采用三棵树 其中element tree diff管理,来触发renderTree的刷新,并且不同于android这种命令式视图开发,采用了声明式,下面将一一介绍。2、编...
2020-02-12 15:27:47
1231
原创 Flutter 中的生命周期分析
本篇主要介绍Flutter中的相关生命周期 分为 widget生命周期、app生命周期Widget生命周期flutter中widget主要分为 StatelessWidget 和 StatefulWidget 两种 二者生命周期不太一样StatelessWidget(无状态)如果一个控件自身状态不会去改变,创建了就直接显示,不会有色值、大小或者其他属性的变化,这种widget一般都...
2020-02-12 15:25:28
499
原创 idleHandler
idleHandler什么是idleHandlerAndroid是基于Looper消息循环的系统,我们通过Handler向Looper包含的MessageQueue投递Message,在MessageQueue中我们可以看到这样的一个接口 /** * Callback interface for discovering when a thread is going t...
2020-02-12 15:22:46
629
原创 Gradle插件从入门到进阶
Gradle插件从入门到进阶1、简介Gradle本身的领域对象主要有Project和Task。Project为Task提供了执行上下文,所有的Plugin要么向Project中添加用于配置的Property,要么向Project中添加不同的Task。一个Task表示一个逻辑上较为独立的执行过程,比如编译Java源代码,拷贝文件,打包Jar文件,甚至可以是执行一个系统命令或者调用Ant。另外,...
2019-05-05 23:35:46
2295
原创 Android中的AOP
Android中的AOP什么是AOPAOP(Aspect Oriented Program的首字母缩写)是一种面向切面编程的思想。这种编程思想是相对于OOP(ObjectOriented Programming即面向对象编程)来说的。先来说一下大家熟悉的面向对象编程:面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让...
2019-05-02 11:54:23
357
原创 深入理解动态代理
千山鸟飞绝,万径人踪灭。孤舟蓑笠翁,独钓寒江雪——唐·柳宗元《江雪》首发于我的公众号深入理解动态代理一、概述最近在阅读retrofit源码时,有个关键的所在就是动态代理,细细回想了一下动态代理,发现之前有些细节还没有理解到位,本篇博文将重新深入理解一下动态代理。二、关于代理中华名族是一个含蓄的名族,讲究微妙和间接的交流方式。对象之间的间接通信也是同样是面向对象设计中一条重要...
2019-02-22 22:45:54
770
原创 设计模式精简图册
设计模式精简图册首发于我的公众号设计模式图册设计模式分类创建型模式:主要用于创建对象,包括工厂方法(Factory Method)抽象工厂(Abstract Factory)单例(Singleton)生成器(Builder)原型(Prototype)结构型模式:用于处理类或者对象的组合,包括适配器(Adapter)装饰者(Decorator)代理(Proxy...
2019-02-19 23:58:38
1170
原创 设计模式入门
0x00 概述本文主要介绍设计模式的六大原则,这是学习设计模式的总纲。设计模式其实是一套被反复使用、总结出来的代码设计经验的总结,使用设计模式是为了重用代码,让代码更加容易的被他人理解,保证代码的可靠性。在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - El
2017-11-09 10:54:28
677
原创 设计模式学习记录
0x00 概述学习设计模式是一个漫长的过程,也是一个程序员登堂入室的必经之路。这篇博文就是记录学习设计模式的过程,会持续更新,每个模式都有对应的学习代码,学习在https://github.com/xsfelvis/DesignPattern.git0x01 大纲 创建型 结构型 行为型 对象 Factory Method Adapter_Class 类 Abstrac
2017-11-09 10:53:38
836
原创 你真的了解过度绘制吗?
本文主要谈谈Android过度绘制相关的知识点,并结合云课堂企业版首页优化过度绘制的实践总结一些与之相关的问题,与君共享,互相进步~本文将按照如下结构展开1、 表面问题产生2、 问题背后的探索 ---- 什么是过度绘制 ---- Android渲染机制3、 优化过度常用工具和套路4、 小结0x00 表面问题的产生在我的小米2s测试机,打开云课堂企业版,顺手打开了过度绘制发现了惊人的
2017-11-04 15:58:14
8079
原创 butterknife及其背后的代码生成技术
本篇博文主要介绍butterknife使用及其背后的技术点,行文结构如下0x00 butterknife项目地址: https://github.com/JakeWharton/butterknife github原文是这样介绍的 Field and method binding for Android views which uses annotation processing to gene
2017-11-02 20:27:18
2788
原创 Service全面总结
service本篇博文主要介绍Service相关知识,具体目录如下0x00 什么是ServiceService是一个应用程序组件,可以在后台长时间运行的操作,不提供用户界面;一个应用程序可以启动一个服务,它将继续在后台运行,即使用户切换到另外一个应用一个组件可以绑定到一个服务与它交互,甚至执行进程间通信(IPC),如处理网络传输、音乐播放、执行文件I/O,与content provider进行
2017-10-31 16:47:03
2255
原创 2个关于Adapter库的源码分析(AdapterDelegate、BaseRecyclerViewHelper)
0x00 概述 核心思想:都是围绕如何解决viewType、视图、数据与视图的绑定来进行一系列的封装,不同的库有着自己不同的手段而已Adapter能在数据变化时候,内部实现逻辑不会改变,仅在外部添加新功能即可,那么要求Adapter对数据层是解耦的,不能显示持有外部数据,核心要点要把握好 RecyclerView的3个核心APIgetItemViewType : 根据position返回的一
2017-10-30 20:08:15
3431
1
原创 密码学技术初探
0X00 概述本篇文章是对密码学基础知识的一些总结,旨在对密码学有一个概要认识。主要分为以下两个大的方面 密码对称密码分组密码模式公钥密码混合密码 认证单向散列函数消息认证码数字签名证书0X01 密码对称密码(共享密钥密码)核心: 用相同的密钥进行加密和解密主要分为 DES、三重DES、AES DES(淘汰)1、简介:DES(Data Encryption Standard
2017-10-20 19:37:12
4314
原创 注解库之ButterKnife
butterknife解决的问题项目地址: https://github.com/JakeWharton/butterknife github原文是这样介绍的 Field and method binding for Android views which uses annotation processing to generate boilerplate code for you.翻译过来就
2017-07-29 17:19:51
2210
4
原创 注解库之Dagger2
Dagger2Step1 使用0x00 Dagger2介绍 Dagger is a fully static, compile-time dependency injection framework for both Java and Android. It is an adaptation of an earlier versioncreated by Square and now maint
2017-07-29 16:20:16
1155
1
原创 Lottie的使用及原理浅析
lottie项目地址: https://github.com/xsfelvis/lottie-androidLottie支持Jellybean (API 16)及以上的系统什么是lottie?Airbnb最近开源了一个名叫Lottie的动画库,它能够同时支持iOS,Android与ReactNative的开发,使用流程如下图所示如图所示,通过安装AE上的bodymovin的插件,能够将AE中的动画工
2017-02-14 23:36:15
16426
2
原创 JNI两种注册过程实战
JNI系列JNI两种注册过程实战深入理解JNI概述Android OS加载JNI Lib的方法有两种 - JNI_OnLoad(动态注册) - 如果JNI Lib实现中没有定义JNI_OnLoad,则dvm调用dvm ResolveNativeMethod进行动态解析(静态注册) 因此,当 java 通过 System.loadLibrary 加载完 JNI 动态库后,紧接着会调用 JNI_O
2017-01-23 15:22:06
7019
4
原创 AS gradle 编译引起的bug
问题描述引起原因由于某些原因导致垃圾回收器,每次花费了大量的时间(by default 98% of all CPU time of the process),仅仅恢复了一点点内存(by default 2% of the heap),这个异常有效的提醒你,你的程序此时正停止了其他事情而仅仅忙于垃圾处理,为了防止你的应用榨干整个CPU而做不了其他事情,此时JVM虚拟机就会抛出这个异常 可能出现的
2017-01-12 19:26:19
1782
原创 ListView嵌套ViewPager+Fragment引起的Bug
发现问题之前发现过一次,情景一样,当时是将ListView替换为LinearLayout然后动态添加view解决,这次又发现这个问题,感觉得从根本上找出原因所在,毕竟listview嵌套多层viewpager+fragment场景还是存在很多的(如资产详情带图表切换),报的crash分析问题定位问题根据报错日志No view found for id 0x7f0f03f8定位源码位置Fragment
2017-01-12 19:23:27
4296
原创 Andfix学习记录
概述篇AndFix,全称是Android hot-fix。是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支持Android 2.3 到 7.0,并且支持arm 与 X86系统架构的设备。完美支持Dalvik与ART的Runtime,补丁文件是以 .apatch 结尾的文件,并且是立即生效的项目地址https://github.com/alibaba/AndFix官方
2017-01-11 10:41:40
2659
原创 注解基础
0x00 概述本文主要是介绍注解的基础知识,为后面的APT和JavaPoet打下基础0x01 什么是注解注解(Annotation)是Java5的一个新特性,是插入在代码中的一种注释或者说是一种元数据(meta data),这些注释信息可以在编译期使用预编译工具进行获取处理,也可以在运行期使用Java反射机制来获取,这取决于你的注解类型。0x02 注解的语法及其定义在Android中注解经常存在我们
2017-01-10 23:14:57
2465
原创 编译期注解之JavaPoet
0x00 概述上一篇限于篇幅只介绍了APT,这篇来继续介绍javapoet,是square公司的开源库。正如其名,java诗人,通过注解来生成java源文件,通常要使用javapoet这个库与Filer配合使用。主要和注解配合用来干掉那些重复的模板代码(如butterknife 和databinding所做的事情),当然你也可以使用这个技术让你的代码更加的炫酷。0x01 简单使用使用之前要先引入这
2017-01-10 23:14:07
4112
原创 编译期注解之APT
0x00 概述前一篇介绍了注解的基本知识以及常见用法,由于运行期(RunTime)利用反射去获取信息还是比较损耗性能的,本篇将介绍一种使用注解更加优雅的方式,编译期(Compile time)注解,以及处理编译期注解的手段APT和Javapoet,限于篇幅,本篇着重介绍APT 首先你的注解需要声明为CLASS @Retention(RetentionPolicy.CLASS) 编译期解析注解基
2017-01-10 23:12:12
3501
原创 支持手机和控制台log的小工具-ZeusLog
0x00 解决问题新人刚到项目组,往往搞不清每个页面对应的Activity名称,导致完成需要一些时间浪费在找页面上网络请求查看比较麻烦,需要代理,转为格式化json系统Log比较挫项目地址 https://github.com/xsfelvis/ZeusLog0x01 ZeusLog主要分为两大块,移动端Log和控制台Log,先上图 移动端主要支持显示当前Actvity的名称显示所
2017-01-08 23:09:34
3422
viewPager搭框架
2015-11-10
json解析,异步下载(listview仅滑动时加载)Demo
2015-10-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人