贺文杰的博客

文章

把旧博客迁移到 Astro 和 Vercel

记录一次从旧静态博客到 Astro 的迁移过程:文章抽取、路径保留、GitHub 建仓、Vercel 部署,以及中间踩到的几个小坑。

博客#博客迁移#Astro#Vercel#GitHub

一次 Android 首页性能体验优化复盘

从启动任务、首屏接口、View 预创建、图片直出和防劣化监控几个方向,复盘一次 Android 首页体验优化。

Android#性能优化#启动优化#工程复盘

Android App 安全模式与连续崩溃自恢复设计

围绕连续 crash、启动阶段异常和高风险缓存,整理一套 Android App 安全模式与自恢复机制的设计思路。

Android#稳定性#Crash#安全模式#工程复盘

Flutter PlatformView 点击坐标错位问题排查

一次 Flutter PlatformView 嵌入原生地图后点击坐标错位的排查记录,核心问题来自 Flutter 逻辑坐标和 Android density 的转换边界。

Android#Flutter#PlatformView#事件分发#问题排查

个人简历

求职岗位:Android开发工程师 基本信息 姓名:贺文杰 性别:男 邮箱:emhhbmdmZW5lQGdtYWlsLmNvbQ== ( https://www.base64decode.org/ BASE64解码) 教育情况 本科:长安大学 时间:2012.09 ~ 2016.07 备注:专业第一 硕士:东南

简历#resume

翻页效果的RecyclerView

实现一个自定义LayoutManager,默认只有一个抽象方法,实现的重点在于onLayoutChildren对页面的布局和滑动操作,当然还有缓存。 属性定义 mPosition是当前item的位置信息,mPositionOffset是偏移信息,mMinVy是最低的y方向的速度,这个需要根据不同屏幕尺寸来定。 布局流程

Android#recycleView

小爱技能开发大赛-抽签技能开发分享

“抽签”技能的开发流程基本沿袭官方给出的 Hello World 的开发方式。 首先明确技能的功能,一般而言,抽签包括两个步骤,设置抽签人数,依次开始抽签。此外还需要支持查看已经抽签的结果。再看应用场景,因为技能的对象面向于智能音箱,而音箱的人机交互方式只有通过语音进行,所以对于给用户的交互过程既要保证功能的准确传达,

Android#小爱同学

ConcurrentHashmap拾遗

为什么Hashtable ConcurrentHashmap不支持key或者value为null? 在很多java资料中,都有提到 ConcurrentHashmap HashMap和Hashtable都是key-value存储结构,但他们有一个不同点是 ConcurrentHashmap、Hashtable不支持ke

编程#Java#集合

Volley理解

概述 物理质量 使用Volley 需要Volley.jar(120k),加上自己的封装最多140k。 使用OkHttp需要 okio.jar (80k), okhttp.jar(330k)这2个jar包,总大小差不多400k,加上自己的封装,差不多得410k。 Volley 的优点 非常适合进行数据量不大,但通信频繁的

Android#volley

【Android面试特辑】Android线程与线程池总结回顾

总结一下Android中Thread和ThreadPool的内容,建议保存图片查看,欢迎补充。

Android#Thread#ThreadPool

【Android面试特辑】Handler总结回顾

总结一下Handler的内容,建议保存图片查看,欢迎补充。

Android#handler

【Android面试特辑】事件分发机制总结回顾

总结一下事件分发的内容,建议保存图片查看,欢迎补充。

Android#事件分发

二进制中0的个数

师兄的一道网易面试题 问题:求二进制0的个数,要求从第一位为1往后统计个数? 方法一 主要考虑正负数情况。 对于正数,在不为0的情况下,计算其二进制,容易得0的个数。 对于负数,因为已知第一位是1的,所以不用担心有高位0,直接取1,然后依次左移,看&原值是不是0。停止条件是这个数为0。 方法二 另一种技巧性强的方法。从

编程#剑指Offer

【Android面试特辑】Binder总结回顾

总结一下Binder的内容,建议保存图片查看,欢迎补充。

Android#Binder

【Android面试特辑】BroadcastReceiver总结回顾

总结一下BroadcastReceiver的内容,建议保存图片查看,欢迎补充。

Android#BroadcastReceiver

【Android面试特辑】Fragment总结回顾

总结一下Fragment的内容,建议保存图片查看,欢迎补充。

Android#fragment

【Android面试特辑】Service总结回顾

总结一下Service的内容,建议保存图片查看,欢迎补充。Binder的内容单独提出来。

Android#Service

【Android面试特辑】Activity总结回顾

总结一下Activity的内容,建议保存图片查看,欢迎补充,以后会添加启动过程。

Android#activity

阿里笔试测试题(零售通App中使用消息数的红点引导用户点击)

题目如下 这道题当时没做出来,一个是因为时间短,一个是因为思路太不成熟。 构建这个树比较麻烦,数据结构选好了其实就比较简单。 大致要求就是求得一级节点消息数的最大值。 构建这棵树,采用HashMap 这样可以快速根据字符串找到对应地Node,同时拿一个ArrayList 存储下根节点连接的一级节点,便于后期求一级节点。

编程#笔试题

LeetCode【82. Remove Duplicates from Sorted List II】

本文的题目是一道中等难度题(82题),之前没有注意删除头结点时的技巧。 题目内容 Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the origin

编程#LeetCode#链表

Android7.0完美适配——FileProvider拍照裁剪全解析

在做android7.0的适配时,发现拍照裁剪图片等功能莫名其妙地崩溃了。通过观察控制台的崩溃记录,原因很明显,file:// 不被允许作为一个附加的 Uri 的意图,否则会抛出 FileUriExposedException,接下来就依次适配之。 FileProvider介绍 官方对于 FileProvider 的解

Android#FileProvider

IntelliJ IDEA下使用默认Spring MVC框架运行失败的解决方案

IntelliJ IDEA下导入Spring MVC框架,直接运行失败,下面说明一下具体的解决步骤。 使用IDEA,直接导入Spring MVC框架 目录结构: web.xml dispatcher-servlet.xml 在WEB-INF/jsp目录下创建hello.jsp src目录下创建com.wenjiehe.

编程#Spring MVC#IntelliJ

Relative Ranks问题的两种实现

本文的题目是一道基础题(506题),基于排序问题,借此熟悉一下快排和冒泡及其使用,同时也能很明显地看出快排的优势。 题目内容 Description: Given scores of N athletes, find their relative ranks and the people with the top th

编程#LeetCode#冒泡排序#快速排序

研究生一年级寒假杂记

这篇文章讲讲研一的寒假在家做了哪些事及发生的改变。 今年回家特别早,几乎一考完试就回家了,应该是在外面呆久了,倍感离家近时对家的怀念。 这个假期过得还算充实,每天睡觉的量绝对是为接下来的一年养足了精神,每天睡觉平均十小时,每天都觉得特别困,想睡觉。除了最后来学校的那个晚上没睡好,其他时间基本一沾枕头就睡着了,再睡到自然

随笔#杂记

基于Hexo的博客同步中的一些问题

这篇文章讲讲在我的Octopress博客更换成基于Hexo的博客后,为了在多台电脑能够同步中遇到的问题。 我基于 这个回答 来解决这个问题的。问题主要出在theme上,由于NexT主题引自第三方,所以这就牵扯到git中的submodule问题了。想偷懒把不引入,但是好像不行,于是按以下思路进行解决:clone NexT

博客#Hexo同步

行迹V0.6版本概述总结

这篇文章讲讲目前行迹版本(v0.6)的一些总结。最开始的版本,对于签到信息等信息类的管理展示用的是开源库cardslib,但是我用的比较简单,开始不太清楚ListView和RecyclerView的使用方式,在做cardslib的refresh和reload时,遇到了很多问题,这一块还没有彻底解决,后来选择了一个国人的

项目#行迹

行迹开篇

毕业前开始写一款应用,经过一次大的重构,现在这个应用已经稍微像点样子了,准备开始一边写技术总结,一边做下去。 因为开发应用的时候,android基本玩的差不多了,算是边学边开发,所以很多架构比较散,不最优,只能慢慢地一步一不提升了。我们总是由弱到强的嘛! 说正题,这款应用我很久之前就想做了,但是一直犹豫以后做的方向,是

项目#行迹

Raspberry Pi 3 opencv+python的人脸识别

上次安装了opencv库,这次我们来使用一下。 安装PIL库 接下来只要运行python xx.py 过一会,如果图片内有人的话生成一个文件夹,里面有一张人脸的截图和一张人脸的标识图。 以下为示例: 接下来用一下摄像头: 在 process(“kobe.jpg”) 前面加一句: 看一下效果: 光线不好还是能认出来,说明

树莓派#opencv#python#人脸识别

Raspberry Pi 3 编译opencv

OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的

树莓派#编译opencv

Raspberry Pi 3 使用owncloud云服务

我们将要搭建自己的云系统平台,更精确的说是一个云存储系统,正如上面的产品所提供的功能。我们将使用开源软件ownCloud来搭建自己的私有云。ownCloud 起源于一个叫The KDE 云计算项目,现在已经适用于大多主流平台,它最早是KED的开发者Frank Karlitschek 创建的,现在由一个ownCloud

树莓派#云服务#owncloud

Raspberry Pi 3 ngrok内网穿透

现在很多宽带服务都不分公网ip,那怎么让外网访问树莓派的服务呢? ngrok 就可以实现外网访问树莓派,ngrok的具体介绍和实现就不说了,主要来看看怎么使用。 我用的是国内的ngrok.cc 的服务。 去ngrok.cc 下载arm版本的客户端,解压。 修改 ngrok.cfg 文件 这里的token填写在 Ngro

树莓派#ngrok#内网穿透

Raspberry Pi 3 发微博

本打算做个微博机器人,但是貌似微博把接口的权限改变了,不是很好弄,所以这里先做个半自动的。 首先去open.weibo.com 先建立自己的应用,你会得到一个 App Key App Secret ,除此以外我们需要在 应用信息-高级信息中,把授权回调页 写成 https://api.weibo.com/oauth2/

树莓派#weibo#微博

Raspberry Pi 3 搭建本地DNS服务器

需求:上网时莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢。其次是部分网站域名不能正常被解析,莫名其妙地打不开,或者时好时坏。 管理下局域网的DNS(双十一的时候,把某宝网站直接给解析到本地ip,打不开网页,O(∩_∩)O哈哈~) 这里我用的是dnsmasq 安装比较简单: 下面我们就需要配置dnsmasq了,配置

树莓派#dnsmasq#dns#局域网缓存

Raspberry Pi 3 中文显示及输入+百度云传输

树莓派系统显示中文的话,大部分都是一个的小方块,还好我们有非常无私的开源者: 文泉驿的开源中文字体,树莓派全网唯一的开源中文字体库 能显示中文,输入也是必不可少的: 快捷键也是Ctrl+空格 然后选择第五项Internationalisation Options,change_locale,在Default local

树莓派#中文显示输入#百度云

Raspberry Pi 3 wifi问题

树莓派自带wifi模块,应该说是很实用的功能,用法其实和USB wifi一样使用,但是树莓派3死活连接不上我的wifi,于是我就参照USB wifi的使用。 先用SSH登陆: 由于回宿舍,没有显示器,所以需要直接修改此文件: 按照道理说,直接点图形界面的wifi连接,输入密码就可以了,然而我的死活就是不行 尝试加入一些

树莓派#wifi

Raspberry Pi 3 开箱+扩容+samba

昨儿树莓3到手,今天先用了下电阻屏,帖子在此 ,花了些时间,今晚重点吧树莓基础环境先搭建下。 开箱图: Pi3和微雪的屏 说明书多国语言: 正面照: 背面: 这个3的卡槽由以前的弹出式变成现在直插的,安装时候没有弹簧按压声。 安装很简单,去 http://downloads.raspberrypi.org/raspbi

树莓派#扩容#samba

趁年轻,做点自己不喜欢的事

大家都说你年轻的时候要多做点喜欢的事,等大些时候只能身不由己,为了生活而活。这话说的没错。可是有些时候,可当你说,我讨厌做这件事的时候, 你想过你为什么讨厌它么 ? 你说,我从小就讨厌,这个说的太模糊。其实,有些时候,你只是第一次遇到它的时候,刚好,双方没有在同一频率。于是你就莫名其妙地开始讨厌它了。或者某一天,你听到

随笔#思绪

计划下的牺牲

我个人很喜欢给自己定下具体数量的目标,比如今天晚上我要看多少多少页的书,如果最后因为没看完就不开心,敷衍般也要凑到那个页数,然而第二天其实还要再往前倒退点重新开始看。 我也渐渐知道这种上纲上线的任务指标多半意味着敷衍、草草了事(某些国人最喜欢干这些了),定任务本来是件好事,但如果僵化地制定就没什么意思了,就是个面子工程

随笔#思绪

七月的时光

七月发生了好多事情,最早的时候去了夏令营,也是第一次接触除了江苏,陕西以外的985高校,确实名校毕竟有名校的风采,感觉整个格局,气氛都不一样,偶尔看到了中南的实验室,确实比起我们学校来要强,环境,人员,氛围,看了一眼都感觉不一样。所以,要去个好的学校读研呀。 最遗憾的是,飞了9年的New Horizon,我却不能关注它

随笔#思绪

大学,为什么我一直这么忙?

感觉我的大学一直处于忙碌,忙着上课,学习各种东西。我都一直在做什么呢? 大一的时候都比较认真,不光是学习上,对很多未知的事情都保持敬畏、探索的心。大一上老老实实学习着,没加入什么社团、组织,感觉比别人差了好多(无事恐惧症?),大一下虽然课程比较重,概念比较多,对于我这种上课上课就走神的人来说简直就是噩梦,但居然还是花了

随笔#思绪

大学中的一些学生

正值大三,现在的时候应该是对大学特别有感触的时候。趁此写写我所见的学生、老师,还有其他一些更多的真实的大学。 三年前走进学校,大家之间的区别可能存在,但肯定不会有现在的差别之大。之所以说是差别,而不是差距,应该是因为每个人来上大学之前的想法本来就不同,有人高考意外发挥好了,潜移默化地心底里有些放松自己,又离开父母,进入

随笔#思绪

走在归路上的一点思考

难得再来这种忙碌的单纯生活 晚上在路边一家店吃了份饭,突然觉得现在的生活真是很矛盾,忙碌,似乎整天没有时间休息,吃饭也变得很急,安安稳稳地吃完饭再继续干活似乎都是在浪费时间。但确实也很安逸,安逸的是,每天知道自己要去做什么,有什么没有完成,想怎样的办法去实现它。人活得很呆,很累,也可以说不累,不用想很多难以预料的社会性

随笔#思绪

大三的结束与开始

电脑反复中病毒,前段时间的重装系统暂时帮助度过了病毒危机,前几天突然开始又大量报毒,现在看来可能是移动硬盘和电脑交叉感染,这段时间也就弄了下博客,还是重新弄挺麻烦的,估计又得从头再来了。把电脑上的软件全卸了重装,估计得要几天时间慢慢恢复,慢慢来吧。以前最讨厌这种几天的大工程,做不完的感觉很是压抑,现在任务越来越难,应该

随笔#思绪

人各有志,从来就不是你堕落的理由

人各有志,从来就不是你堕落的理由 有些人就是喜欢用借口来狡辩自己的无能。 我也喜欢这样。事情做不好了就说自己没有全力以赴、没有细心,自己手头事情多来不及认真处理。比如写这篇文章,也是定下要求之后,磨了好几天才开始动手去做。但还好,我开始写了。 我听说过很多同学说不喜欢自己的专业。他们说高考的时候自己也什么都不知道,听家

随笔#思绪

快去做吧

我总是想得很多,做的很少 每天到床上之后,几乎总是会想很多,然后越想越睡不着,等实在想累了,可能就会睡着了。当时每次醒来之后却基本上都忘记了自己当时认为的,很正确、优秀的思考。不知不觉自己也对这种思考失去了信心,所谓该思考时不思考,不该思考时,却在思考。这大概不能称之为思考吧,应该叫乱想。 我总是追求很多,放弃很少 有

随笔#思绪

如果你想去做的话

少年,年轻是用来做你不敢的事,而不是做你会的事的呢。

随笔#思绪