自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 查找单链表中的环及入口

题目:如果一个链表中包含环,如何找出环的入口节点?思路:判断是否有环:定义两个快慢指针,p1指向头结点,p2指向头结点的下一个节点,如上图中(a)所示;p1和p2同时往后移动,但速度不一样,p1以每次移动一个节点的速度,p2以每次移动2个的速度往后移动,最后p1和p2会相遇,则存在环,如上图(b)所示。查找环入口:在上面基础上,p1和p2相遇的节点“9”在环内,可以计算出环的节点总数.查找环入口同样定义两个快慢指针,p1指向头结点,p2在头结点上往后移动环节点总数,如上图

2021-08-20 14:42:29 384

原创 查找链表倒数第n个节点

题目:查找单链表中倒数第n个节点数据思路:考虑到时间复杂度,不允许对链表进行两次遍历操作来完成上述需求。该问题可通过定义两个快慢指针,快指针p1和慢指针p2,倒数第n个,p1最开始指向头节点,向后移动n-1个节点,到达如图a所示的地方,p2指针最开始指向头结点p2,如图b所示,p1和p2同时向后移动,当p1到达链表尾部时,停止,此时p2指向的节点即为倒数第n个节点。代码:/***查找倒数第n个节点*@paramlinkedNodeOne*@parami...

2021-08-18 11:02:26 863

原创 数组中出现超过一半的数字

题目:数组中出现超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。思路:一个数组中某个数字超过一半的值,排序后位于数组中间的数字一定就是n出现次数超过数组长度一半的数字。所以可以对该数组进行快速排序,如上图所示,分区数选择最后一个元素2,分区完成后,如图b所示,分区数在5的位置,大于数组中间的索引4,则说明在左边,对左边的数组进行分

2021-08-11 14:37:43 278

翻译 Android之渲染和布局

内容:最小化过渡绘制 简化复杂的布局层级结构 相关实践 学习更多Android开发者基础课程讨论了使用材料设计来如何使你的APP看起来更有趣和可视化,它教你如何使用布局编辑器来创建你的布局。你学习了你可以创建嵌套的布局层次结构。你学习了如何使用资源来为你的视图作为背景。这些元素允许你创建复杂的嵌套布局,背景和视图在整个应用程序中互相重叠。然而,如果你以最有效的方式来花费时间设置它们,你的布局绘制会更快,使用更少的电量和电池。涉及一个搞笑的布局:最小化过渡绘制。 简化复杂视图布局层级

2021-08-11 10:14:21 285

原创 算法-快速排序

题目:对一个数组{11,8,3,9,7,1,2,5}进行快速排序。思路:全局思路:如上示意图所示,选取最后一个函数作为分区元素,经过具体的分区后,把该数组分成两部分,如(b)所示,左边的一部分小于5,右边的一部分大于5。再分别对左边的和右边的数组进行分区,分区后如(c)所示;再对9左边的{7,8}数组进行分区,导致就完成了整个数组的分区...分区...再分区的操作。分区函数实现思路:如上图所示,定义两个索引i和j,i指向已处理的数据区域,j用作向后遍历数组,开

2021-08-10 15:59:49 59

原创 旋转数组中的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。思路:由上图可知,旋转数组是由两个有序的数组来组成的,阴影和非阴影两部分对应两个有序的数组。定义两个索引p1和p2,分别指向数组的第一个和最后一个元素。 此时p1为0,p2为4,计算middle=(p1+p2)/2的值为2,值为5,和p1、p2所对应的值3和2进行对比

2021-08-09 13:42:28 77

原创 字符串替换

替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”,例如,输入“We are happy.”,则输出“We%20are%20happy.”。思路:原始字符串转换成字符数组,构建一个新的字符串数组,长度大小为原始数组的长度+空格数*2,使用System.arraycopy()函数进行数组拷贝,拷贝后的数组如上图中的A所示。在拷贝后的新数组中进行操作,定义两个索引,p1指向原始字符串的末尾,p2指向新字符数组的末尾。P1和p2不相等,向左移动p1,直到遇见第一个空格,此时把字

2021-08-09 09:19:31 120

翻译 Android-性能

性能内容:什么是好的性能? 为什么是一帧16毫秒? 基本的性能测试? 检查你的帧率 获取性能问题 保持你的APP程序的响应性 监控你的运行中程序的性能 学习更多作为一个android开发者,你同时也是一个android用户,你知道当一个APP没有加载,花费长时间加载,每一次动画卡顿,随意奔溃,最重要的是耗尽电池或者使用完你的整个数据计划,面对这些情况,你的感受是怎样的。用户会给那些快速响应用户输入,始终流畅的执行和尊重手机有限电池资源的APP更高的评价。为了使一个可用的、感兴

2021-08-09 08:51:49 286

翻译 Android架构组件-Architecture Components

英文原文链接:https://google-developer-training.github.io/android-developer-advanced-course-concepts/unit-6-working-with-architecture-components/lesson-14-architecture-components/14-1-c-architecture-components/14-1-c-architecture-components.html内容:Android

2021-07-26 19:23:33 326

原创 TCP/IP协议族

当我们在浏览器地址栏输入https://www.baidu.com/按回车键进行发送时,你可知道你所在的电脑和百度服务器发生了怎样的数据交换,有人会说,这很简单,不就是所在客户端浏览器发起了http报文请求,然后百度Web服务器响应http报文请求的过程嘛,单纯的就http请求来说,上面的说法没错。但其实你往深入的想想,就会发现还有很多一些列的问题,例如:http的请求报文数据需要经过哪些步骤才能从我的电脑到达服务器 发送方的请求数据报文丢失了,如何处理 发送的请求数据是如何找到服务器的,中间需要经

2021-07-20 14:24:04 265 1

转载 Java虚拟机

概述我们常说的JDK包含了Java语言、java虚拟机和java api类库这三部分,是java程序开发的最小环境。而JRE包含了java api中的java SE API子集和java虚拟机这两部分,是java程序员运行的保准环境。可以看出java虚拟机是整个平台的基石,是java语言编译代码的运行平台。你可以把java虚拟机看做是一个抽象的计算机,有各种指令集和各种运行时数据区域。虽然叫java虚拟机,但在其上可运行的语言不仅仅是java,还包括Kotlin、Groovy、Scala、Jython等。

2021-07-19 15:48:39 193

转载 移动端IM的几个问题

大家好,今天和大家聊下即时通讯IM中的相关问题,分如下几个部分:一:即时通讯的应用场景。除了现在主流的即时通讯社交应用(例如:微信、企业微信、钉钉等)是IM典型的应用场景,还有近几年已经兴起来的视频直播中粉丝互动信息打赏场景,以及各个购物网站中包含的客服模块,随着网络上与人沟通的场景和需求不断增加,即时通讯这个功能会在越来越多的应用中嵌入。二:IM移动端功能组成。一个即时通讯APP,包含下面主要功能:1)联系人列表;图片来自于“即时通讯网”像微信的通讯录是通过加好友得到的

2021-07-16 10:59:57 474

原创 Java之垃圾收集

下面为翻译文章的一定语从句:原文英文链接:https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html来自维基百科:这篇文章是关于在内存管理中的垃圾收集。有关固态硬盘中的垃圾收集,请参见垃圾收集(SSD)。有关其他用途,请参见垃圾收集(消除歧义)。

2021-07-13 09:38:32 217

翻译 Java线程同步-synchronize

线程同步前言:以下为我翻译过程中的一个长句,为宾语从句:原文链接:https://docs.oracle.com/javase/tutorial/essential/concurrency/sync.html通过阅读英文技术文档,对synchronized中的监视器monitor和volatile以及atomic(原子性)有了更深入的了解,其他能在后面的项目中用到相关知识,解决问题。同步性线程主要是通过访问共享的字段和该字段引用的对象来进行通信。这种交流方式及其有效,但可能会引发

2021-07-09 10:39:04 184

翻译 Android中手势事件如何传递

这是我在Stack Overflow上写的一个回答的回复。让我们来看一下可视化的例子。当一个触摸时间发生时,每个视图都会被通知该事件,从activity开始一直到顶层的view。然后每个视图都有机会处理事件,从顶层的视图开始,一直返回到Activity。因此Activity是第一个感知到它,最后一个有机会处理它。如果viewGroup想要立即处理触摸事件(不给其他人机会去处理它),那么它可以在onInterceptTouchEvent()中返回true。Activity没有onI

2021-07-09 10:34:39 328

翻译 java中的线程同步

线程同步前言:以下为我翻译过程中的一个长句,为宾语从句:原文链接:https://docs.oracle.com/javase/tutorial/essential/concurrency/sync.html。通过阅读英文技术文档,对synchronized中的监视器monitor和volatile以及atomic(原子性)有了更深入的了解,其他能在后面的项目中用到相关知识,解决问题。同步性线程主要是通过访问共享的字段和该字段引用的对象来进行通信。这种交流方式及其有效,但可能会引

2021-07-08 14:46:31 115

翻译 android最佳实践:网络 电池 压缩

翻译此篇文章,总共加起来有6个小时。有些英文长句,里面包含的各种从句,需要借助翻译软件才勉强理解,但是其实文章中还是会有大量不是特别流畅的语言,有两个地方需要提高,一是写作的语言组织表达能力。二是一个英语长句型包含的各种从句(后面的翻译文章会对典型的长句子单独出来做句子成分分析,同时也是进一步提高自己英文读的能力)。原文链接:https://google-developer-training.github.io/android-developer-advanced-course-concepts/u..

2021-07-06 09:43:41 141

翻译 Android内存

大家好,技术学习最好的一手资源就是英文文档,所以给自己定下一个目标:通过参阅英文技术文档来进一步提高自己的技术能力。下面是我翻译的一篇技术文档,欢迎朋友们拍砖、交流、一起进步。原文:https://google-developer-training.github.io/android-developer-advanced-course-concepts/unit-2-make-your-apps-fast-and-small/lesson-4-performance/4-2-c-memory/4-2-c

2021-07-01 18:54:03 131

原创 杂谈之生活和工作

生活在这个日新月异的时代,社会发展如此之快,映射到每个人的生活状态,也是如此之快。早上出门上班,到晚上九点到家,一周五天,嗖的一声就过去了,忙的时候,周末加天班,只剩一天休息,家里有点事或者陪下小朋友......可想而知,会很忙。 处在这个时代,房子随着我们结婚,有点小孩,对它的渴望会愈加强烈,但动辄三四百万(甚至五六百万)的价格,会望而却步。但即使身处在这大环境中,我们仍会尽自己最大的努力,希望有属于自己的房子。更加努力工作,提高自己能力,以期可以拿更多的薪水,去填补房子这个巨...

2020-09-20 22:22:58 119

原创 设计模式中的设计原则

一:单一职责单一职责的英文是single Responsibility Principle,缩写为SRP。这个原则的英文描述是这样的:A class or module should have a single responsibility。把它翻译成中文就是:一个类或者模块只负责完成一个职责(或者功能)。注意,这个原则描述的对象包含两个:一个是类(class),一个是模块(module)...

2020-04-12 16:58:05 131

转载 归并排序和快速排序

一:归并排序要排序一个数组,我们先把数组分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就有序了。归并排序使用的就是分治思想。分治,顾名思义,就是分而治之,将一个大问题分解成小的子问题来解决。小的子问题解决了,大问题也就解决了。分治思想一般是通过递归来实现的。代码实现:/** * 递归切分待排 * * @param nums 待切分...

2020-04-05 17:11:36 714

原创 冒泡 插入 选择排序

一:冒泡排序算法原理:顾名思义,冒泡,最大的元素可理解成通过冒泡的形式筛选出来。对于一个数组来说,a[0]、a[1]、a[2]、a[3]....a[n],从a[0] a[1]、a[1] a[2]、a[2] a[3]....a[n-1] a[n]进行两两比较,如果前面的元素值比后面的大,则进行交换处理,例如a[0]>a[1],则进行int temp = a[0],a[0]=a[1] a[1...

2020-04-04 16:20:40 132

转载 APP启动应用优化加速和卡顿

APP启动应用优化加速和卡顿一:应用启动类型1冷启动应用自启动后,或系统终止应用后的首次启动2暖启动如:应用退出应用,又重新启动,程序可能已经运行,但需要重新创建acitivity。或者进程被系统杀死,但是在activity的oncreate时有savedInstanceState3热启动应用的acitvity还留在内存中,系统只需将activity带到前台在冷启动中,应...

2020-03-21 11:29:06 940

转载 APP应用ANR

一:ANR是什么ANR:应用程序无响应(Application Not Responding)系统ActivityManagerService与WindowManagerService会检测应用程序的响应时间。如果主线程主线程(UI线程)在超时时间内对Input事件(按键、触屏等)或者特定操作(Broadcast、service的各种生命周期方法)没有处理完毕,就会出现ANR。Inpu...

2020-03-18 21:27:41 321

转载 APP应用崩溃

一:崩溃和崩溃率Android崩溃是指Android应用程序出现异常退出,对一个应用来说几乎是致命的问题。崩溃率衡量一个应用质量高低的基本指标。一个产品的崩溃率,跟我们如何捕获、处理这些异常有比较大的关系。很多工具提供了收集崩溃,计算崩溃率的能力,如阿里的友盟、腾讯的Bugly、网易云捕、Google的Firebase。二:崩溃类型Android崩溃分为以下几种:Java Cras...

2020-03-18 10:19:19 429

原创 APP应用内存优化

一:安装内存管理机制内存优化:避免因不正确使用内存,缺乏管理,从而出现内存泄漏、内存溢出、内存空间占用过大等问题,最终导致应用程序奔溃。进程回收策略:Application Framework决定回收的进程类型:android中的进程是托管的;当进程空间紧张时,会按照进程优选级低-->高的顺序自动回收进程分配对象内存策略:堆:JVM管理的内存中最大的一块,所有线程共享;用...

2020-03-17 11:17:53 566

原创 HashMap源码分析之put和get

今天我来和大家梳理下HashMap的核心两个方法:put和get方法,里面会涉及到以下几个问题:1.hashMap使用到的数据结构(数组、链表、红黑树)2.数组的扩容规则、链表转换成红黑树的条件以及红黑树什么情况下又会转成链表3.hashMap存储元素时,hash冲突时如何具体解决带着上述三个问题,我们可以在put和get方法中找到相应的答案一:整体架构HashMap...

2020-02-16 18:00:31 340

原创 端云密钥下发方案

很多移动端app项目会有这样的场景,app请求云测(服务器)下载资源,像音乐 视频类app去下载歌曲文件、教学类app去下载课本资源文件以及很多其他需要向云测下载文件的场景。这些下载下来的文件,有些涉及知识版权(音乐、视频、教学资源),有些设计用户的个人隐私信息等等,app下载下来的文件如果没有加密,即使放在所属应用的文件路径(data/data/包名)下,如果手机是root,也是可轻而易举拿到这...

2020-02-14 11:51:07 1725 5

原创 android:两个进程之间通过AIDL进行通信

当一个app的基础功能需要提供给其他app使用的时候,例如我们平常使用美团点外卖和滴滴进行打车时,最后订单结算的时候进行支付,这个时候弹出支付方式中基本会包含支付宝和微信支付这两种方式,这个过程其实涉及美团、滴滴与支付宝或者微信进行通信的过程,美团需要把商品信息(订单号、金额)传递给支付宝,那是如何传递的呢?本文会对此过程进行一个大概的梳理。如上图所示,一个进程无法和另一个进程直接...

2019-06-24 07:44:54 670

转载 Android之进程间通信

android中进程间通信,简称IPC(Inter-Process-Communication),可以理解为android中两个进程之间进程数据交互的通信过程。那我们首选说下进程和线程的却别,即:线程是CPU调度的最小单元,同时线程是一种有限的系统资源。而进程一般指一个执行单元,在PC和移动设备中指一个程序或者一个应用。一个进程可以保持多个线程,它们是包含和被包含的关系。IPC不是an...

2019-06-24 07:43:03 247

原创 Handler机制梳理

在android中handler机制中再常见不过了,用于异步处理,像项目中经常会在子线程中进行IO(网络 文件读写 数据库读写等)耗时操作,完成之后需要在UI线程进行界面更新,这种情况就需要用到Handler,来起到这种桥梁链接的作用。OK,那我会问你,handler的内部机制是怎样?答:handler会创建消息队列MessageQueue和Looper,当我们在子...

2019-05-06 21:48:57 155

原创 android事件分发流程图

android手机基于用户的手指触摸来和用户进行交互,如你需要点击某个按钮进行跳转到另外一个页面;上下滑动列表看下一页的列表数据;或者横向水平滑动看下一个tab页面,这其中都涉及到事件分发机制,它们之间遵循着哪种规则呢? 如下图所示,是android中常见的视图结构,当我点击view的时候,最先响应的是它的父容器viewGroup,执行事件分发dispatchTouchEvent(Motio...

2019-04-23 07:30:46 1747

原创 Volley源码分析

android中好的开源框架(volleyokhttpretrofitgliderxjavadragger2eventbusleakcanarybutterknife)很多,但我总觉得自己在框架上花费些功夫,没有达到自己预想中的效果,或者是由于自己仅仅只是在项目中参照其他开发同学使用的模版,直接拿过来用;又或者是自己想提升下自己的技能,在各大技术社区看大牛们的源码分享技术...

2019-04-13 18:08:34 148

原创 有关加密的那些事儿

在android开发中,与后台进行网络请求,APP端发送有关用户的数据(像密码)或者接口返回有关的用户的数据(sessionKey、passWord)等,会进行处理;以及从文件服务器下载文件,进行文件使用之前,会进行本地的文件“单向散列函数”校验或者“消息认证码校验”,这其中都涉及到加密,接下来一一展开。 一:对称加密对称加密有很多种,但是AES基本已取代DES和3D...

2019-04-08 07:45:36 369

NPPJSONViewer-X64.dll

在Notepad++的安装目录下E:\Program Files\Notepad++\plugins,新建一个NPPJSONViewer文件夹,并修改文件下的dll文件为NPPJSONViewer.dll(去掉-x64),重启Notepad++,查看“插件”即可看到“Json Viewer”,说明安装成功了。

2020-05-23

android开发取色器

移动开发中经常使用的颜色取色器,使用非常方便。。。。。

2018-06-02

Java Platform SE 8

java sdk,需要的同学下载,有问题可以随时交流哈。。。

2018-04-17

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

TA关注的人

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