- 博客(607)
- 资源 (8)
- 收藏
- 关注
原创 HarmonyOS第一课-对比Kotlin,快速入门TypeScript
在 TypeScript 和 Kotlin 中,函数的定义都包括函数名、参数列表和函数体。TypeScript 函数定义示例kotlin函数定义在 TypeScript 中,类定义包括类名、构造函数和成员变量或方法。构造函数在 TypeScript 中被命名为 constructor。greet() {${this// 输出 "Hello, my name is Alice" // 输出 "I work in Engineering"`);
2023-11-21 11:44:57
2758
原创 2021年度总结&&2022年展望
前言因为疫情关系,第一年在北京过除夕和生日,幸运的是今年的除夕和生日是有媳妇和甜宝一起陪伴的,非常开心。因为有爱我的人想让我变成更优秀的自己,所以今年的总结和规划就不拖欠了,在我生日当天进行一下21年总结和22年规划。2021年度总结21年整体是一个美好的年份,相比于20年的忙碌、19年的攀爬、18年的低谷,今年整体是平稳且幸福的。按照工作和生活分别总结一下21年工作和生活做的好的和不好的地方吧。工作上做的好的:搭建合理的人员梯队,北京和重庆两地同学齐心协力,共同支撑懂车帝的业务发展;A
2022-02-01 18:28:45
7036
2
原创 2021年6月感悟
前言说实话,去年的年终总结一直没写,不是不想写,确实是没时间已经作为Android负责人一周年了,今天还是有些想法,随手记录一下感悟研发负责人一定要对自己的决策负责,千万不能用战术上勤奋去掩盖战略上的懒惰,不然容易得不偿失;研发负责人深入一线需要把控尺度,否则容易陷入细节,难以抽身;大家习惯性抢功劳,推锅,不担当。我始终认为这是错的,Leader一定要敢于担当,承担责任,并且要把成果共享;你必须很努力,才能积攒一定的运气,让工作和生活步入正轨。但是工作和生活永远都不是一帆风顺的,因此你不能做
2021-06-16 18:26:18
3681
3
原创 10分钟带你入门NestedScrolling机制
一、从一个简单的DEMO看什么是嵌套滚动##我们先来看一下DEMO的效果,直观的感受一下什么是嵌套滚动:在解释上图涉及到哪些嵌套滑动操作之前,我先贴一下嵌套布局的xml结构:<com.wzy.nesteddetail.view.NestedWebViewRecyclerViewGroup> <com.wzy.nesteddetail.view.NestedScr...
2020-01-31 14:28:16
2646
原创 2019年度总结
2019年度总结今天春节被肺炎闹得是人心惶惶,而我也不凑巧的着凉感冒了。今天终于想起来19年年终总结还没写,赶紧补上。2019年回顾19年整体是一个从低谷向上攀爬的过程。工作上:经历了小组人员调动,公司发展重心变化等种种事情,最终还是平稳的过渡到2020了。总结一下自己在工作上做的好的和不好的地方,好的继续发扬,坏的引以为戒。好的:找准自己在团队的定位。业务上把控UGC Androi...
2020-01-26 22:40:13
905
3
原创 Android源码解析-ViewModel
前言最近一个月主要实现了IM功能,其中UI框架使用了ViewModel和LiveData的存储和通知机制,实现后代码简洁易于维护。感慨于Android arch components控件强大同时,需要顺带分析一波其中源码实现。今天先来分析一下ViewModel的源码实现。ViewModel简介ViewModel是通过关联生命周期的方式来存储和管理跟UI相关的数据。即使configurati...
2019-09-27 16:30:52
1142
原创 Java面试题目-单链表翻转(递归+非递归实现)
前言个人在最近2年一直担任一面面试官,平时长问的题目就是单链表的翻转。发现很多面试同学只知道非递归实现,提到递归实现都是一脸懵逼。这里普及一下具体实现方案。链表数据结构我们这里就定义一个最简单的单链表:class Node { Node next; int val;}非递归public static Node reverseNode(Node head) { if (head...
2019-07-04 11:32:55
946
2
原创 2018年终总结
前言2018年对我来说真的是跌宕起伏,难以忘怀的一年。先对2018做个总结吧。2018回顾工作:2018是我工作角色转变的一年,由一线研发工程师进化为小组leader。虽然工资没有太大变化,但是担心和顾虑的事情却成倍的增加。每个组员的状态、发展,整个业务线的情况,都需要我去关注、去了解。2018我给自己打85分,2019希望自己更加努力,带好整个团队,并且关注前沿技术,把UGC的播放器和发布...
2019-02-04 17:11:12
1097
1
转载 RecyclerView的缓存机制
原文链接原文出处:基于滑动场景解析RecyclerView的回收复用机制原理前言之前优化Feed流框架的时候,看到过一篇基于滑动场景分析RecyclerView回收复用的文章,感觉十分经典,因此转载复习之。正题RecyclerView 的回收复用机制的内部实现都是由 Recycler 内部类实现,下面就都以这样一种页面的滑动场景来讲解 RecyclerView 的回...
2018-08-10 19:58:23
10328
5
原创 Java泛型类继承实现
项目中经常会碰到泛型继承实现,这里讲解一下Java是如何实现泛型继承的。泛型父类声明泛型父类声明如下:public class Father<T, M> { public void test(T t, M m) { // do something with t and m ...... }}子类继承实现子类继承父类分为两种情况:...
2018-08-07 22:22:24
12433
3
原创 LeakCanary源码分析
基本使用LeakCanary是用来检测Android内存泄漏的工具。在gradlew文件中引入:dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.4' releaseCompile 'com.squareup.leakcanary:leakcanary-androi...
2018-08-05 17:34:36
1067
原创 2017年终总结
距离2017年结束仅剩几个小时的时间了,这一年感慨万千,对照去年的目标说一下今年的进展吧。每年我都会提前给自己许下要完成的事情,2016年的目标如下:事业上,需要有更明确的奋斗目标和更具有挑战性的工作内容,且能让我的薪资足以承担起北京的房价压力。身体上,顺利的完成膝盖前叉韧带重建手术,最好能在一个半月之内恢复,不耽误以后的工作。经济上,计划下半年出手,北京的房子长远还是看涨的,希望能拿下一个合
2017-12-31 18:57:46
1922
原创 Android Intent Flag实现singleTask模式
Android Intent FlagAndroid Intent 常用的Flag有以下几种:FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOPFLAG_ACTIVITY_CLEAR_TASKFlag一般是组合使用。本文的结论需要增加一个前提,所有添加Flag启动的Activity本身的launch m
2017-10-15 14:47:34
10565
2
原创 Android查看应用方法数-65536限制
前言当一个项目快速迭代时,难免引进各种依赖,从而导致单个apk超过65k的限制。如何查询apk的方法数也是每个Android Developer必备技能。我使用的是dex-method-counts,这里跟大家分享一下它的使用。下载&&编译下载dex-method-counts到本地git clone https://github.com/mihaip/dex-method-counts.git编译
2017-07-29 10:43:09
1381
原创 PagerSlidingTabStrip源码解析
PagerSlidingTabStrip源码解析集成使用导包在Android Studio中,直接在build.gradle文件中增加如下依赖:dependencies { compile 'com.astuetz:pagerslidingtabstrip:1.0.1' }XML文件布局在XML文件中使用时,PagerSlidingTabStrip通常声明在ViewPager的上方.<c
2017-06-27 17:44:54
1040
原创 无序数组中求中位数
题目现有一些随机生成的数字要将其依次传入,请设计一个高效算法,对于每次传入一个数字后,算出当前所有传入数字的中位数。(若传入了偶数个数字则令中位数为第n/2小的数字,n为已传入数字个数)。 给定一个int数组A,为传入的数字序列,同时给定序列大小n,请返回一个int数组,代表每次传入后的中位数。保证n小于等于1000。 测试样例:[1,2,3,4,5,6],6返回:[1,1,2,2,3,3]思
2017-06-08 16:34:15
8097
原创 ThreadLocal的实现原理
ThreadLocal的实现原理ThreadLocal是线程内部的数据存储类,通过它可以指定的线程中存储数据,数据存储以后,只有在指定线程中可以获取到存储的数据,对于其他线程来说则无法获取数据. 这里基于JDK7进行ThreadLocal的源码实现分析.自定义ThreadLocal实现如何让大家去实现一个ThreadLocal,我相信很多同学第一时间会写出如下代码:public class Thr
2017-05-22 13:07:24
4648
2
原创 Vue训练营-自定义组件
项目截图GitHub地址由于这次作业比较简单,所以代码集成到上次的TodoList的项目中.主界面通过路由进行界面切换.技术点只要技术点包括:Vue自定义组件Vue组件间通信自定义组件就不多说了,直接看官网即可.Vue组件间通信方式包括:父->子,使用props传值.子->父,使用emit,emit,on发送和监听事件.兄弟组件,使用Bus(即new Vue)进行组件间通信.进阶,使用
2017-04-21 19:38:15
2839
原创 VUE训练营——Todo List
VUE训练营——Todo List 简易的Todo List-github地址.项目截图项目技术点项目比较简单,主要包括:vue-clivue基本指令vue-router关键代码关键代码均在TodoList.vue中,这里只贴出js相关处理:<script> let store = { save (key, value) { localStorage.setIt
2017-04-19 18:46:49
1867
原创 近况
技术最近由于内部工作方向的关系,开始接触JS,同时自己也学习使用了vue框架。生活妈蛋,房价是要上天的节奏。无奈准备放弃北京,准备回青岛买一套房子,也不便宜,均价2万多,无奈啊
2017-03-26 19:45:28
1573
3
原创 2016年终总结
回首过去一年我还是习惯过农历年,总觉得春节假期还没过去,新的一年就不算开始。鸡年了,首先祝自己和看我博客的朋友们新年快乐,鸡年大吉(ps:说鸡不说吧,文明你我他)。事业终于在去年6月底顺利晋升到P6,算是了却了自己的一桩心愿,毕竟一路走来颇不容易,从服务端开发转型客户端开发,也是费心费力,好在结果不差,晋升面试由于准备的比较充分,也没出什么问题。不过晋升加薪确实有点食之无味,弃之可惜啊。房子如果说1
2017-02-03 16:29:09
1279
2
翻译 RxJava入门系列四,Android中的响应式编程
RxJava入门系列四,Android中的响应式编程在入门系列1,2,3中,我基本介绍了RxJava是如何使用的.但是作为一名Android开发人员,你怎么让RxJava能为你所用呢?这篇博客我将针对Android开发来介绍一下RxJava的使用场景.RxAndroidRxAndroid是为Android打造的RxJava扩展.通过RxAndroid可以让你的Android开发变得更轻松.首先,Rx
2016-12-29 12:39:29
2736
翻译 RxJava入门系列三,响应式编程
RxJava入门系列三,响应式编程在RxJava入门系列一,我向你介绍了RxJava的基础架构.RxJava入门系列二,我向你展示了RxJava提供的多种牛逼操作符.但是你可能仍然没能劝服自己使用RxJava,这一篇博客里我将向你展示RxJava提供的其他优势,没准了解了这些优势,你就真的想去使用RxJava了.异常处理直到目前为止,我都没有去介绍onComplete()和onError()方法.这
2016-12-28 13:28:28
2820
翻译 RxJava入门系列二,操作符篇
RxJava入门系列二,操作符篇在RxJava入门系列一基础篇中,我介绍了RxJava的基础框架,同时也介绍了map()操作符的使用.然而我知道你现在对RxJava的了解还不够深入,所以你不能让自己去在实际代码中使用RxJava.但是通过这篇文章,通过更多操作符的介绍,你将见识到RxJava的强大,没准你会开始愿意使用RxJava. 让我们先通过一个例子来介绍一下RxJava的操作符.准备工作假设
2016-12-26 19:05:36
1566
翻译 RxJava入门系列一,基础篇
RxJava入门系列一,基础篇RxJava在Android开发者中变得越来越流行(ps:2016年底才用的我表示自己太out了).使用RxJava唯一的问题就是当你第一次接触RxJava时,你会觉得RxJava特别难上手,特别是当你之前只使用同步式编程语言,没有接触过响应式编程理念.但是一旦你真正了解了RxJava,你就会知道它是多么好用.基础RxJava最基础的模块是Observable(被观察者
2016-12-24 18:29:51
1388
原创 ActiveAndroid源码分析
基本使用ActiveAndroid集成在AndroidStudio中,我们可以通过两种方式集成ActiveAndroid.第一种是使用Gradle配置依赖:repositories { mavenCentral() maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }}compile 'co
2016-12-09 16:09:15
2003
1
原创 Volley超时重试机制详解
Volley超时重试机制基础用法Volley为开发者提供了可配置的超时重试机制,我们在使用时只需要为我们的Request设置自定义的RetryPolicy即可. 参考设置代码如下:int DEFAULT_TIMEOUT_MS = 10000;int DEFAULT_MAX_RETRIES = 3;StringRequest stringRequest = new StringRequest(R
2016-12-03 17:01:49
10319
翻译 Supporting Multiple Screens(支持Android各种屏幕尺寸)
Supporting Multiple ScreensAndroid runs on a variety of devices that offer different screen sizes and densities. For applications, the Android system provides a consistent development environment acros
2016-10-31 16:34:05
6620
4
原创 Mysql获取每组前N条记录
Select基础知识我们在实现select语句的时候,通用的sql格式如下: select *columns* from *tables* where *predicate* group by *columns* having *predicate* order by *columns* limit *start*, *offset*;很多同学想
2016-10-21 17:53:27
38152
11
原创 解决Volley的javax.net.ssl.SSLHandshakeException异常
问题复现步骤在我开发的应用中,获取数据的协议是通过https.因为我们这边的证书都是通过CA认证的,所以不需要对Volley进行额外的网络配置.但是,今天测试同学突然找到我,说网络请求不通连不上网络了.吓得我赶紧出了一个debug版本,发现在自己的机器上是ok的,但是去测试同学那边莫名其妙的就跪了.幸好是debug版本,从log里我发现了下面的异常信息: com.android.volley.NoC
2016-09-27 14:47:42
18000
原创 Android ListView滑动过程中图片异步加载优化(配合Volley使用)
前言今天带大家过一遍ListView常用的优化方案,重点在于解决ListView的item中包含异步加载图片时遇到的图片闪烁和显示错乱等情况.ListView的item回收和重用Android系统为了使得ListView性能优化,会为ListView增加item行缓存.简单来说,假设ListView有1万个item,但是Android只为其创建n个item(n为当前屏幕能显示的item的数量).Li
2016-09-27 14:37:45
1249
原创 Android上拉加载更多ListView——PulmListView
思路今天带大家实现一个上拉加载更多的ListView.GitHub传送门:PulmListView, 欢迎大家fork&&star.先带大家看一下示例效果: 然后带大家理一下实现思路, 如果我们要实现一个上拉加载更多的ListView, 我们需要实现的功能包括: 一个自定义的ListView, 并且该ListView能够判断当前是否已经处于最底部.一个自定义的FooterView, 用于在Li
2016-09-13 21:18:54
5355
转载 使用LeakCanary检测内存泄露
前言刚才在项目里使用LeakCanary检测出了一个使用NotificationBuilder导致的内存泄露,发现LeakCanary真是神器啊.这里转载一篇介绍LeakCanary使用的博客,里面的视频也非常不错,还可以用来学习英语.在项目中集成LeakCanary非常简单,只需要如下两步.添加依赖在Module的build.gradle中增加如下依赖: dependencies { de
2016-09-06 14:26:34
2978
原创 Android Splash界面解决白屏、黑屏等问题
前言我相信很多Android开发同学都遇到过这样的需求:实现一个Splash界面,界面上有应用相关的背景图片和一个开始按钮.点击按钮之后进入主页,以后用户再打开应用就不显示这个Splash界面了.也相信很多同学都遇到了这样的困惑:第二次进入应用,尽管你在Splash界面已经直接跳转到首页了,但是还是有个白屏或者黑屏或者带ActionBar的白屏闪现一下.如果你也遇到这个问题,那就继续阅读这
2016-08-30 17:16:36
4204
翻译 掌握CoordinatorLayout
原文链接Mastering the Coordinator Layout在Google I/0 2015大会上,Google发布了一个与Material Design相关的控件支持库,在这个控件库中我们可以找到很多新的ViewGroup控件,例如 AppBarLayout,CollapsingToolbarLayout和CoordinatorLayout. 考虑到这些新的控件非常有用,因此我决定写
2016-08-22 15:34:59
2708
原创 Android使用tcpdump和wireshark抓取并分析网络数据包
前言由于对技术的好奇心,我想使用tcpdump来抓取浏览微信朋友圈的数据包.这里简要介绍一下实现过程.准备工作一台root的手机.(ps: 推荐使用刷机精灵一键root工具)tcpdump工具.wireshark工具.抓包实践下载android版本的tcpdump适合Android手机版的tcpdump的下载地址:暂缓提供通过adb上传tcpdump到手机上通过adb push将tcpdum
2016-08-17 13:19:39
5173
1
原创 LayoutInflater.inflate源码详解
LayoutInflater.inflate源码详解LayoutInflater的inflate方法相信大家都不陌生,在Fragment的onCreateView中或者在BaseAdapter的getView方法中我们都会经常用这个方法来实例化出我们需要的View. 假设我们有一个需要实例化的布局文件menu_item.xml:<LinearLayout xmlns:android="http:/
2016-08-02 16:22:44
1593
原创 开发机转成win7
不舍自从我研究生入学开始,就一直和Ubuntu系统打交道。从最初的Ubuntu10.04一直到我现在的Ubuntu13.10,Ubuntu系统伴随了我的技术成长。替换原因最主要的原因,加入BAT任何一家公司,基本只支持window和mac,使用Ubuntu显得非常异类。而且公司很多办公软件均没有适配Ubuntu系统。成熟之前一直觉得技术是非常重要的,现在觉得无非也就是混口饭吃。没必要和公司过不去,毕
2016-07-24 10:23:37
980
1
原创 写在天气不错的日子
前言趁着还有感觉总结一下这次的晋升面试。虽然只是5-6的改变,但是于我而言依旧感触良多。两年前2年前的今天,我正式入职A,但是摆在眼前的事实就是我从一名优秀的LNMP后台开发被强制转成了Android开发工程师,而且还是与Android Framework打交道较多的工程师。作为Android零基础,Java基本零基础的菜鸟程序员,我并没有害怕,因为我知道自己已经入门了,自己也是能够在校招脱颖而出的
2016-07-01 17:55:03
1546
1
windows scoket编程
2011-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人