自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(130)
  • 收藏
  • 关注

原创 ReactNative 下使用阿里云直播的bug

前言前几天受同事之拖,在ReactNative环境下,引用阿里云直播sdk,本以为是一个很简单的问题,结果确踩了个大坑。 阿里云直播sdk 地址阿里云直播sdk地址 大概就是下图这种情况,大概意思就是说ReactNative里有这个.so文件,阿里云里面也有这个文件,重复了,我不让你过编译,你自己看着办吧。 搜了半天都是让这么改 确实可以解决编译期的报错,但是运行时,会找不...

2018-05-07 23:07:07 2303 1

转载 star法则

Situation: 简短的项目背景。 比如项目规模,开发的软件的功能、目标用户。 Task:自己完成的任务。这个要写详细,要让面试官对自己的工作一目了然。在用词上要注意区分参与和负责;如果只是加入某一个开发团队写了几行代码就用负责,那就很危险了。面试官看到简历上应聘者负责了某个项目,他可能就会问项目的总体框架设计、核心算法、团队合作等问题。这些问题对于只是简单“参与”的人来说,是很难回答的,...

2018-05-02 22:05:07 3327

原创 我眼中的HTTPS

目录前言什么是HTTPShttps的通信过程Charlest等抓包工具的使用无法抓包的原因及解决办法原因解决办法1解决办法2采用双向验证的应用前言笔者由于项目中经常用到抓包工具,在抓包的时候Https的请求总是抓取不到,于是就研究了下https。这种网络基础方面的知识不记下来太容易遗忘了,所以写篇文章,总结下学到的以及用到的,文章如果写得有不对...

2018-04-16 13:56:36 1075 2

转载 java类加载

当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成这三个步骤,所以有时也把这三个步骤称为类加载或类初始化。如果没有意外,JVM将会连续完成这三个步骤,所以有时也把这三个步骤称为类加载和类初始化。1.类加载 类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对

2017-11-23 18:35:05 280

转载 JAVA线程池

java8改进的线程池 从java5开始新增了一个Executors工厂类来产生线程池,该工厂类包含如下静态工厂方法来创建线程池。 newCachedThreadPool(): 创建一个具有缓存功能的线程池,系统根据需要创建线程,这些线程将会被缓存在线程池中。 newFixedThreadPool():创建一个可重用的,具有固定线程数的线程池。 newSingleThreadExecutor

2017-11-22 16:28:01 173

转载 线程和进程

几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程。当一个程序进入内存运行时,即变成一个进程。进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位。 一般而言,进程包含如下三个特征。 独立性:进程是系统中独立存在的实体,它可以拥有独立的资源,每一个进程都拥有自己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其

2017-11-21 12:00:03 161

转载 关于性能优化问题的探究

约60%应用冷启动时间超过2s SDK的不合理使用(基础类型和装箱类型、HashMap和SparseArray) 在系统回调或频繁调用的代码块中创建新的实例 几乎所有的App都存在过度绘制的问题,Activity和Window都设置了背景。 json库的不合理利用,导致Launcher严重卡顿。 进10个应用监听开机广播,导致开机后一段时间Launcher严重卡顿 应用内存占用不合理(适

2017-11-21 11:33:13 183

转载 对象与垃圾回收

Java的垃圾回收是Java语言的重要功能之一。当程序创建对象、数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区。对象就保存在这块内存区中,当这块内存不在被任何内存引用的时,这块内存就变成垃圾,等待垃圾回收机制进行回收。垃圾回收机制具有如下特征。 垃圾回收机制只负责回收堆内存中的对象,不会回收任何物理资源。 程序无法精确控制垃圾回收机制运行,垃圾回收会在合适的时候进行。当对

2017-11-16 13:53:11 222

转载 接口和抽象类

接口和抽象类很像,它们都具有如下特征。 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。 但接口和抽象类之间的差别非常大,这种差别主要体现在二者的设计目的上。 接口作为系统与外界交互的窗口,接口体现的是一种规范。对于接口的实现者而言,接口规定了实现者必须向外提供哪些服务

2017-11-13 17:53:57 219

原创 数值中引入下划线进行分隔

11111111这是几个1 好难数啊 。 如果这样呢 111_111_11一木了然在java7之后引入了一个新功能:程序员可以在数值中使用下划线,不管是整型数值,还是浮点型数值,都可以自由地使用下划线。通过使用下划线分隔,可以直观的分辨数值中包含多少位int a = 111_111_111;

2017-10-18 11:46:31 731

原创 一个数除以0一定报错么

今天看到一个好玩的事,一个数除以0一定报错么 上小学的时候,老师告诉我们,0是不能做除数的,同样在我们写程序的时候,编译器也会报异常:ArithmeticException:/by zero (除以0异常) 但是 一定会异常么?可以试下 如下代码System.out.println(5.5F/0+" ");会输出infinity 在java内 一个正数浮点数除以0是正无穷,一个负数浮点数除以0

2017-10-18 11:14:30 2161

转载 在DNS数据库中插入记录

假如你刚刚创建了令人兴奋的创业公司,你必须要做的第一件事是在注册登记机构注册域名networkutopia.com。注册登记机构是一个商业实体,它验证该域名的唯一性,将该域名输入DNS数据库,对提供的数据库收取少量费用。1999年前,唯一的注册登记机构是Network Solution,它独家经营对于com、net和org域名的注册。但是现在有许多注册登记机构竞争客户,因特网名字和地址分配机构(IC

2017-10-16 14:44:14 1611

转载 DNS

当你请求www.baidu.com时,为了使用户的主机能够将一个HTTP请求报文发送到Web服务器www.someschool.edu,该用户主机必须获得www.someschool.edu 的IP地址。其做法如下。 同一台用户知己运行着DNS应用的客户端。 浏览器从上述URL中抽取主机名www.someschool.edu,并将这台主机名传给DNS应用的客户端。 DNS客户向DNS服务

2017-10-13 16:14:39 496

转载 电子邮件的工作过程

已发送方Alice发电子邮件给接收发Bob为例,对每个组成部分进行描述。 用户代理允许用户阅读、回复、转发、保存和撰写报文。微软的Outlook和Apple Mail是电子邮件用户代理的例子。当Alice完成邮件撰写时,她的邮件代理向其邮件服务器发送邮件,此时邮件放在邮件服务器的外出报文列中。 邮件服务器形成了电子邮件体系结构的核心。每个接收方(如Bob)在其中的某个邮件服务器上有一个邮箱。B

2017-10-12 18:39:46 3272

转载 文件传输协议:FTP

在一个典型的FTP会话中,用户坐在一台主机(本地主机)前面,向一台远程主机传输(或接收来自远程主机的)文件。为使用户能访问它的远程账户,用户必须提供一个用户标识和口令。在提供了这种授权信息后,用户就能从本地文件系统向远程主机文件系统传送文件,反之亦然。 HTTP和FTP都是文件传输协议,并且有很多共同的特点,例如,他们都运行在TCP上。然而,这两个应用层协议也有一些重要的区别,其中最显著的就是F

2017-10-12 16:28:45 768

原创 cookie的工作过程

假设你总是从家中PC使用IE上网,你首次与www.taobao.com联系。我们假定过去她已经访问过京东站点。当请求报文到达淘宝的服务器时,该Web站点将产生一个唯一识别码,并以此作为索引在它的后端数据库中产生一个表项。接下来淘宝的Web服务器用一个包含Set-cookie:首部的HTTP相应报文对你的浏览器进行相应,其中Set-cookie:首部含有该识别码。 例如,该首部行可能时 Set-c

2017-10-12 11:35:30 2178

原创 Android开发中高效的数据结构

android开发中,在java2ee或者android中常用的数据结构有Map,List,Set,但android作为移动平台,有些api(很多都是效率问题)显然不够理想,本着造更好轮子的精神,android团队编写了自己的api用来代替java api一、 SimpleArrayMap

2017-10-09 10:41:03 294

原创 MVP模式初探

概述浅谈MVP in Android之前看到鸿洋大神写的登录的mvp模式,感觉懂了什么是MVP,但是自己写又写不出来,最近又翻出来从新学习了一下,在这边记录一下。 对于MVP (Model View Presenter),大多数人都能说出一二:“MVC的演化版本”,”让Model和View完全解耦” 等等。 我还真是抱着这样一个疑问 为何这个模式出来后,就能被广大的Android的程序员接受

2017-08-16 19:32:35 327

原创 RecyclerView的封装和使用(一)

概述下面是取自偶像鸿洋大神的博客中的一段话,重点是介绍RecyclerView的基本用法和其方法的含义。张鸿洋的博客RecyclerView出现已经有一段时间了,想i性能大家肯定不陌生了,大家可以通过导入support-v7对其进行使用。 据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的空间我们并不陌生,例如:ListView、GirdView。 那么有了ListView、

2017-08-15 20:10:19 992

原创 Activity与Fragment封装初探(持续更新)

俗话说,不想成为架构是的程序员不是好程序员,。 在日常的开发中,Activity与Fragment是用到的最多的控件,里面必定会有些重复的代码,如果不加以复用,会让整个Activity和Fragment的代码显的臃肿不堪,下面总结一下Activity与Fragment的最常用的方法。 封装的过程感觉就是一个发现,并且抽离的过程。需要时间的积累,难以强求。 整个Activity

2017-08-15 10:33:39 557

原创 计算机网络

端系统通过通信链路和分组交换机链接到一起。通信链路由不同类型的物理媒体组成。这些物理媒体包括同轴电缆、铜线、光纤和无线电缆谱。不同的链路能够以不同的速率传输数据,链路的传输速率以比特/秒度量。当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节。由此形成的信息包用计算机网络术语来说成为分组。这些分组通过网络发送到目的端系统,在那被装配成初始数据。

2017-07-17 13:46:54 436

原创 androidStudio简析

AndroidStudio以Model的形式填充工程 一个model就相当于一个Eclispe下的工程,每个Model中会有个Gradle文件,每个工程也会有一个Gradle文件,还会有Setting.gradle文件 setting.gradle中用来标记我们的工程中有多少个Model,工程下的build.gradle主要用来标记我们项目下的代码仓库有哪些。 以及使用的gradle的版本

2017-07-06 16:45:16 212

转载 Java异常处理机制

异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等,异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。。Java通过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常。在java中,所有的异常都有一个共同的祖先Throwable(可抛出)。它有两

2017-07-06 15:33:21 197

原创 判断是否是Double

boolean isDouble(String str) { try { Double.parseDouble(str); return true; } catch(NumberFormatException ex){} return false; }

2017-07-05 17:37:39 2230

原创 运算符优先级

有一次写程序 判断了 (!a&b) 这样如果想先计算a&b是需要加括号的

2017-07-05 17:37:22 193

原创 Android 7.0新签名机制

由于之前的打包机制是采用Python进行打包的,导致打包后的apk在7.0上无法进行安装,特此研究下android7.0的签名机制Android7.0加强了签名的加固,导致在新的签名机制下无法使用修改apk文件的方式进行多渠道打包,首先再说一下打包的流程,整个打包的流程就是将Java代码,资源文件以及第三方库整合成一个Apk文件,并对整合后的文件进行签名和优化对其。 1.资源预编译 为每一个非a

2017-07-03 00:10:26 2474

原创 多渠道打包

最近由于要独立开发,所以需要掌握从开发到上线的所有阶段,以前从没接触过打包的问题,现在突然接触感觉手忙脚乱的,特此总结一下。 国内的Android开发由于众所周知的原因,Google play无法在国内打开,所以android的市场群雄争霸,为了方便统计各个安卓市场的下载量,需要为每个应用市场的Android包设定一个可以区分应用市场的标识,这个为Android包设定应用市场标识的过程就是多

2017-07-02 00:37:11 303

转载 intentService

上面我们分析了Handler消息处理机制以及HandlerThread里面所涉及到的一些知识点,知道HandlerThread其实就是为了我们在子线程中减少自己创建Looper以及运转Looper而出现的,那么这次的IntentService其实封装的更巧妙,使用HandlerThread的时候我们还需要创建Handler对象出来,但是使用IntentService连Handler对象也不用我们创建

2017-06-09 12:30:58 311

转载 插件化

动态加载APK资源加载 动态加载资源。 通过反射调用代码加载类加载机制 java当中的字节码添加到虚拟机, dexclassLoader可以加载apk文件中的,用于动态加载和热更新pathclassloader 通过反射进行调用反射在运行时调用这个方法,

2017-06-08 11:11:51 200

转载 HashMap实现原理

HashMap是数组+链表实现的,既然用到hash散列,那么肯定不可避免的会出现冲突问题,HashMap解决冲突的方法是拉链法,因为这里有用到数组,那么当容量不足的时候就需要进行扩容操作了,在HashMap中有个术语叫冲突,当冲突几率越来越高的时候就需要进行扩容操作了,那什么情况就叫冲突几率高呢?就是当我们的数组元素个数超过了数组原先大小*装填因子,默认情况下的装填因子是0.75,扩容有个坏处就是每

2017-06-08 10:46:32 267

原创 ANR&OOM

应用程序的响应性是由activityManager和WindowManager系统服务监视的,超过指定时间就会弹框造成耗时操作

2017-06-07 23:38:58 211

原创 无语

running/paused/stopped/killed activity 处于活动状态。用户可以点击屏幕,并且做出响应,处于activity栈顶的状态。 paused activity失去焦点的时候,或者activity被非全屏activity占据,或者activity被透明的activity覆盖。 activity失去了和用户交互的能力,并不是activity被销毁,除非内存紧张。 s

2017-06-07 18:38:21 293

原创 记一次坑爹的ReactNative应用集成推送

公司有个需求,实现纯RN应用的接收推送后的界面跳转,推送使用的是阿里云推送 坑的地方至少有两个。 如何知道应用是否已经启动了呢? 如何将信息发送给RN端呢? 首先第一个问题相对来说还是比较好解决的,用下面的代码就可以实现。 亲测可行 private boolean _isApplicationRunning(Context context) { ActivityManag

2017-05-02 18:14:11 1174

原创 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置

public class Solution{ HashMap

2017-03-19 12:28:05 1008

原创 丑数

如题 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。public class Solution { public int GetUglyNumber_Solution(int index) { int sum[] = new int[index]

2017-03-14 01:19:52 804

原创 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数

如题: 剑指offer HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住

2017-03-10 16:36:42 1947 2

原创 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数

如题: 剑指offer HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住

2017-03-10 15:57:29 785

原创 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

如题:剑指offer 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 使用堆排序在大批量的排序更快,复杂度NlogMpublic class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) {

2017-03-10 15:35:34 1615

原创 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在

如题,《剑指offer》 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。public class Solution { public int MoreThanHalfNum_Solution(int [] array) {

2017-03-10 14:58:14 578

原创 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在

如题,《剑指offer》 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。public class Solution { public int MoreThanHalfNum_Solution(int [] array) {

2017-03-10 14:57:03 810

空空如也

空空如也

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

TA关注的人

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