自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (31)
  • 收藏
  • 关注

原创 Android - 彻底消灭OOM的实战经验分享(千分之1.5 -> 万分之0.2)

转自我的掘金 邹啊涛涛涛的掘金我的简书 邹啊涛涛涛的简书前言这是我在掘金的第一篇博客分享,最近在掘金上看了许多大佬的文章,学到了非常多的东西,实在是忍不住想要把我们平时工作中用到的一些优化方案分享出来,其实也是一个大家一起讨论学习的过程,希望大家可以多多交流 ~自我介绍第一篇博客,总得介绍下自己~,有校友或者其他间接挨得着边的联系的可以私聊交流,前1/4 -> 1/3人生实在没啥交...

2019-08-28 20:21:46 441 2

原创 Android - 一种新奇的冷启动速度优化思路(Fragment极度懒加载 + Layout子线程预加载)

这里写自定义目录标题一、背景二、特意声明三、最常见的优化方案四、项目结构五、极致的懒加载5.1 极致的懒加载5.2 懒加载方案5.3 FragmentPagerAdapter与FragmentStatePagerAdapter5.4 FragmentPagerAdapter的刷新问题5.5 FragmentPagerAdapter刷新的正确姿势六、神奇的的预加载(预加载View,而不是data)6...

2019-08-28 20:15:11 2993

原创 Android Studio禁用 install run

最近在尝试在项目中接入腾讯的热修复方案-Tinker在github上面把给出的官方sample clone下来之后想运行在虚拟机上,报错了,如下:Tinker does not support instant run mode, please trigger build by assembleDebug or disable instant run in 'File->Settings....

2018-10-10 11:58:18 2418

原创 Android完全退出App,关闭所有的Activity

这里我们给出一种使用BroadcastReceiver来实现的方法。首先我们写一个基类CommonActivity继承自Activity,然后在CommonActivity中加入一个BroadcastReceiver,用来接收退出App的广播。简单实现如下:public class CommonActivity extends Activity{ protected BroadCastRe...

2018-10-09 12:19:41 2308

原创 OKHttp3部分源码阅读

当我们想要将OKHttp3集成进我们的项目中时,我们便会需要使用 OkHttpClient.Builder()方法去创建一个OkHttpClient实例,而在OkHttpClient中就包含了如下属性: final Dispatcher dispatcher; final Proxy proxy; final List<Protocol> protocols; fina...

2018-09-27 20:51:56 163

原创 从github上面down React-native项目时,跑不起来,

在开发者上传他们的react-native项目时,为了减小项目文件夹的大小,都会选择将node-modules文件夹删掉。所以在我们clone项目下来之后要使用终端,首先进入项目文件夹,接下来使用如下命令将node-modules文件夹添加入项目中。npm -install当然,因为我是刚拿到mac,所以node跟npm都是没有安装的,需要先安装npm。再之后便是可以直接使用Androi...

2018-09-27 14:28:09 1196

翻译 Android中子线程更新UI的方法

第一类,使用Handler在主线程中实例化一个Handler,子线程中耗时操作完成之后,通过sendMessage方法发送Message,在主线程Handler中进行处理并更新UI使用AsyncTask,AsyncTask也是封装了Handler,所以必须声明在主线程中。第二类,通过实例化一个Runnable,放在主线程中运行调用Activity的runOnUIThread方法...

2018-08-24 21:02:49 255

原创 悲观锁和乐观锁

悲观锁:每次线程取数据时,都会悲观的认为在取数据的过程中,其他线程都会对该数据进行更新操作,因此每次取数据都要加锁。 如synchronized就是一个悲观锁。乐观锁:每次取数据时,都乐观的认为在取数据的过程中,没有其他线程对该数据进行更新操作。但是在更新的时候总会去判断有没有其他线程在这之前对数据进行了更新操作...

2018-08-23 11:15:36 150

原创 get和post的主要区别

1,get常用来获取服务器的数据,post常用来向服务器提交数据。2,get请求会将提交的数据按照 name=value的形式显示的添加在请求的url后面,如果是敏感数据则不安全,而post是将提交的表单数据存在HTTP请求报文的请求头部中,3,get请求提交的数据长度会受url的最大长度所限制,最大为1024字节,而post可以提交大量数据。...

2018-08-23 11:09:59 185

原创 事务以及脏读、幻读、不可重复读

事务:是指数据库中的一连串的连续操作,而且这一系列连续的操作要么全部执行成功,要么全部执行不成功。具有着原子性。事务的特点: 1,原子性:要么都执行成功,要么都不成功 2,一致性 3,隔离性:不同的事务不知道对方的执行过程以及执行到了什么程度 4,持久性:每个事务执行完毕必然会对数据库进行数据的持久化修改脏读:两个事务并发执行,当事务1 对数据库中的...

2018-08-23 10:27:11 164

原创 Java内存泄漏的几种场景

1,静态的容器,如HashMap、ArrayList,静态容器中保有着其他无用对象的引用,会导致无用对象无法被回收,而静态的容器的生命周期是与进程生命周期一致的。2,容器如HashSet中修改了其中的值,因为HashSet内部是封装了HashMap的,所以当对HashSet中的元素进行修改时,会改变该元素的HashCode,也就是说会改变该元素在HashMap中的存放位置,但是由于没有改变在H...

2018-08-22 22:06:24 1208

原创 Java类加载器运行原理

Java是一门动态加载的解释性语言,当运行Java项目的时候,首先会使用JVM的编译器将所有的.java文件编译成 .class文件,然后通过JVM的类加载器ClassLoader将这些编译过后的.class文件加载到内存中。ClassLoader在负责.class的加载时,不仅仅是负责把.class放入内存中,还需要为每一个.class生成其对应的 Class文件。类的加载有两种方式,一...

2018-08-22 21:55:13 539

原创 合并两个排序的链表

方法1:*采用递归思想*public ListNode Merge(ListNode list1,ListNode list2) { if(list1 == null){ return list2; } if(list2 == null){ return list1; } if(list1.val <= list2.val){ ...

2018-08-22 21:33:04 172

原创 Volley框架原理准备

1,在我们使用Volley框架进行网络请求发送时,首先会调用 Volley.newRequestQueue来生成一个请求队列,我们调用的newRequestQueue是一个重载函数。2,newRequestQueue返回的是一个请求队列的对象RequestQueue,而且返回的RequestQueue是已经启动了的,即已经调用了start方法。3,那么这个启动了的请求队列是如何进行请求的获...

2018-08-17 20:22:07 492 1

原创 TCP三次握手四次挥手总结(流程、常见问题、会发生的攻击、防范方法)

三次握手我们先明确两个定义: 1,client为数据发送方 2,server为数据接收方好,下面进行三次握手的总结: 1,client想要向server发送数据,请求连接。这时client想服务器发送一个数据包,其中同步位(SYN)被置为1,表明client申请TCP连接,序号为j。 2,当server接收到了来自client的数据包时,解析发现同步位为1,便知道c...

2018-08-17 10:57:29 9435 3

原创 桶排序

桶排序,是稳定排序, 平均时间复杂度为 O(n),但是需要O(k)的额外空间。

2018-08-14 20:49:50 150

原创 冒泡排序的优化

1,当冒泡到一定程度时,已经有序之后则不需要再次的冒泡了。这通过使用标志位进行实现:for (int i = 0, len = arr.length; i < arr.length; i++) { boolean hasChanged = false; for (int j = 0; j < len - i - 1; j++)...

2018-08-13 23:24:09 213

原创 三台centOS搭建hadoop集群系统,把我遇到的坑都写下来

不分顺序1,按照网上资料博客等配置完各种文件之后,启动namenode报错 ulimit -a for user root这里我们直接重新格式化namenode,然后启动namenode就可以了 hadoop namenode -format 2,当我们将三台虚拟机按照桥接的方式来进行网络连接时,要在windows以及linux中的hosts文件中加入IP与主机名的...

2018-08-10 00:16:34 2607

原创 CentOS 手动设置静态IP之后无法联网的问题解决办法

照着网上各种步骤进行了配置。centOS6.4如: 配置办法照着步骤来但是还是无法联网。这里有几点需要注意: 1:需要 su 获得root权限之后 在 service network restart 才有效果。 2:配置/etc/sysconfig/network-scripts/ifcfg-eth0 这个文件时,BOOTPROTO=static 中的static不能用引号框...

2018-08-08 23:53:22 4264

原创 Android适配不同版本、屏幕

不同版本SDK1,指定minSDKVersion与targetSDKVersion 2,运行时获取版本号 3,使用系统内置的主题,会随着版本的更换而自动适配不同屏幕1,使用wrap_content、match_parent、weight 2,使用相对布局,禁用绝对布局 3,使用自动拉伸位图 .9格式(nine-patch图片) 4,使用dp来设置控件间距,使用sp来设置文字大小 5,提

2017-09-19 12:59:34 467

原创 数据库中的范式

1,第一范式:属性不可再分 2,第二范式:消除部分依赖,(消除非主属性对于主码的部分依赖) 3,第三范式:消除非主属性对主码的传递依赖 4,BC范式:消除主属性对于主码的部分依赖或者传递依赖元祖:数据库关系表中的一行(一条记录)

2017-09-19 00:41:15 345

原创 数据库完整性约束

域完整性主要是保证数据库中字段值的合理性,用户操作的属性值必须是数据库中的值。 包括还有非空等都是域完整性的工作。实体完整性参照完整性用户定义完整性

2017-09-19 00:31:36 396

原创 数据库的数据抽象、实例、模式

数据抽象主要是为了向用户屏蔽复杂性。一共分为三层:1,物理层,物理层的数据抽象主要描述了数据在物理层面是怎么存储的数据,这主要是数据库的供应商来研究的。2,逻辑层,逻辑层的数据抽象主要描述了数据库中存储着什么数据,这些数据之间有什么关系,这主要是开发人员或者是数据库管理员考虑的,逻辑层的用户不需要去知道我的数据具体是怎么样子存储的。3,视图层,在一些数据库系统中,往往数据库是非常庞大的,而我们用户只

2017-09-16 18:57:22 5890

原创 Android 子线程跟新UI的方式

只有主线程(UI)线程才能跟新UI界面,那么如果子线程想要更新UI怎么办呢?只能借助于Handler来实现了。(1):最常见的方式就是通过Handler的sendMessage和handleMessage来进行处理了,这个比较简单,不再举例; (2):通过Handler的post方法,这种执行方式需要在post方法中传入执行耗时任务的线程,接着在执行post方法的时候,会将该执行任务的 线程封装到

2017-09-06 12:10:31 258

原创 Java线程、多线程

先把写的不错的博客链接发在这里, http://blog.csdn.net/ghsau/article/details/7421217

2017-09-06 01:29:02 165

原创 Android的安全机制

1,进程沙箱隔离机制Android应用程序在安装时,被赋予了独特的用户标识 UID,并永久保持; 应用程序及其运行的Dalvik虚拟机运行于独立的Linux进程空间,与UID不同的应用程序隔离。 2,应用程序签名机制应用程序包(.apk)文件必须被开发者数字签名,同一个开发者可以指定不同的应用程序共享UID,进而运行于同一个进程空间,共享资源。 签名的作用: 1,识别代码的作者 2,监

2017-09-05 16:54:06 309

原创 Android四种应用权限级别

normal:指所有的APP不能访问和共享此APPdangerous:所有的APP都可以访问和共享此APP,所以是危险的。signature :是指具有相同签名的App可以访问和共享此App。signatureOrSystem :是指系统image中App和具有相同签名的App可以访问和共享此App。

2017-09-05 16:40:46 3460

原创 异步任务 AsynTask 创建之后可以通过 execute()方法执行多次么?

不能,只能执行一次。为什么?public final AsyncTask<Params, Progress, Result> execute(Params... params) { return executeOnExecutor(sDefaultExecutor, params); } 当我们调用execute()来执行任务时,其实是调用如下方法。public final Asy

2017-09-04 22:30:10 1277

原创 代码 -- 堆排序 解决大数组找前K大。

public class FindMaxK { public static void main(String[] args) { int[] input = new int[]{1,2,4,8,6,4,1,6,8}; /*{1,6,5,2,7,10,86,21,89,10,87,10,81,3,88,10,123,56,21,

2017-09-04 18:41:52 490

原创 XUtils BitmapUtils 源码分析

在我们使用BitmapUtils来进行图片的加载时,是直接调用display方法来进行图片的加载。有好几个display方法,参数个数不一样,但是其实最后调用的都是如下方法public <T extends View> void display(T container, String uri, BitmapDisplayConfig displayConfig, BitmapLoadCallBack

2017-09-03 15:20:45 304

原创 使用WindowManager实现悬浮窗

Window表示一个窗体的概念。所有的界面中的View其实都是依附在Window上。 我们可以通过WindowManager来对Window上的View进行管理。常见的方法有:windowManager.addView(View,WindowManager.LayoutParam);windowManager.removeView();windowManager.getDefaultDispl

2017-08-31 23:48:03 2460

原创 Android IPC之 Messenger

Android中的跨进程通信可以是一个App中的两个进程,也可以是两个App之间进行通信。Messenger是一种轻量的IPC通信机制。Messenger的使用步骤1,在Service中需要实现一个Handler,用来处理从客户端接收到的消息。比如说下面:private class ServiceHandler extends Handler { @Override

2017-08-30 00:43:42 251

原创 ListView + CheckBox(或者是RadioGroup等控件)的混乱选中原理

1,常用的写法,只展示Adapter,问题原因就在Adapter中 class Adapter1 extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Objec

2017-08-23 01:01:36 230

原创 HTTP工作原理

HTTP协议采用的是 请求/响应 模型,客户端向服务器发送一个请求报文,服务器以一个状态码作为响应。HTTP请求/响应的步骤:1. 客户端连接到web服务器(HTTP客户端与web服务器建立一个TCP连接) 2. 客户端向服务器发送HTTP请求(通过已建立的TCP连接,客户端向服务器发送一个请求报文) 3. 服务器接受HTTP请求并返回HTTP响应(服务器解析请求,定位请求资源,然后服务

2017-08-21 21:26:15 223

原创 进程和线程的区别

1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系一个线程可以创建和撤销另一个线程;

2017-08-21 01:32:04 166

原创 Java与C++的不同

1,指针。Java无法使用指针来直接操作内存2,多重继承。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。3,数据类型及类 。Java是完全面向对象的语言,所有函数和变量都必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中

2017-08-20 20:09:52 268

原创 Java中for each与正常for循环效率对比

循环ArrayList时,普通for循环比foreach循环花费的时间要少一点;循环LinkList时,普通for循环比foreach循环花费的时间要多很多。 当我将循环次数提升到一百万次的时候,循环ArrayList,普通for循环还是比foreach要快一点;但是普通for循环在循环LinkList时,程序直接卡死。结论:需要循环数组结构的数据时,建议使用普通for循环,因为for循环采用下标

2017-08-20 18:56:29 3763 3

原创 sleep与wait的区别

这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。 sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。锁最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 sleep不出让系统资源;wait是进入线程等

2017-08-20 17:31:27 165

原创 Volatile与Synchronized的区别?

volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住. volatile仅能使用在变量级别,synchronized则可以使用在变量,方法. volatile仅能实现变量的修改可见性,但不具备原子特性,而synchronized则可以保证变量的修改可见性和原子性. volatile

2017-08-20 17:00:43 270

原创 ArrayList、LinkedList、Vector的区别

Arraylist和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加插入元素,都允许直接序号索引元素,但是插入数据要涉及到数组元素移动等内存操作,所以插入数据慢,查找有下标,所以查询数据快,Vector由于使用了synchronized方法-线程安全,所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入

2017-08-20 16:58:58 257

去水印软件效果很好

去水印软件效果很好

2015-03-13

协同通信拨号器 V3.0 官方版

协同通信拨号器 V3.0 官方版

2015-03-13

java实现软件水印系统 内含源码

java实现软件水印系统 内含源码

2015-03-13

Java面试宝典2014版

Java面试宝典2014版 很有用,刚找好工作,分享给大家

2015-03-13

LSB水印算法 matlab实现 内含源码、算法解析

刚实现的LSB水印算法 matlab实现 内含源码、算法解析

2015-03-13

谭浩强 C程序设计(第四版)及学习辅导、教材课件及源程序

谭浩强 C程序设计(第四版)及学习辅导、教材课件及源程序

2015-03-13

一个安卓端的单词记忆系统

其中包括单词记忆,生词本,复习,单词单选考试,现在正在往里面加入蓝牙联机和联网联机的单词考试PK模块,完成了在发上来,让大家借鉴,感觉其中整体思路、安卓开发的步骤、安卓开发的一些其他问题都是可以借鉴一下的,个人还是挺花了功夫

2014-05-29

自己做的关于迈克尔乔丹的window8.1的app

自己做的关于迈克尔乔丹的window8.1的app,感觉还是能从里面学到很多

2014-05-26

htmlparser_Java网页解析器

Htmlparser,Jar包,Java,页面解析

2013-11-03

JCL语言与实用程序教程

JCL语言与实用程序教程

2013-10-29

数据结构与算法分析(C++版)(第二版)习题参考答案

数据结构与算法分析(C++版)(第二版)习题参考答案

2013-10-29

android实现OpenSudoku九宫格游戏

OpenSudoku是一个简单的九宫格数独游戏。从代码中可以学习到如何在视图中显示表格数据,以及如何和一个网站交互等技术。

2013-10-29

(android)大学生课程表代码

(android)大学生课程表代码

2013-10-29

(android)一个综合了各个类型的对话框的demo

一个综合了各个类型的对话框的demo一个综合了各个类型的对话框的demo一个综合了各个类型的对话框的demo一个综合了各个类型的对话框的demo

2013-10-29

thinking in java原书

thinking in java原书

2013-10-29

系统级编程选择题题库及答案

系统级编程选择题题库级答案

2013-10-29

软件构架实践教案(详细)

软件构架实践教案(详细)

2013-10-29

安卓简单注册登录的基本代码

安卓简单注册登录的基本代码

2013-10-29

交换环境网络侦听实验设计

交换环境网络侦听实验设计

2013-10-29

四川大学软件工程选择题

四川大学软件工程选择题

2013-07-01

软件工程非选择题

软件工程非选择题

2013-07-01

邮件客户机

邮件客户机

2013-07-01

SMTP邮件客户机

SMTP邮件客户机

2013-07-01

计算机网络(自顶向下方法)第四版答案

计算机网络(自顶向下方法)第四版答案

2013-07-01

Source_InSight

Source_InSight

2013-07-01

NachOS实验报告(4个全)

NachOS实验报告(4个全)

2013-07-01

体系结构1到7章答案

体系结构1到7章答案

2013-07-01

网页版人事管理系统

网页版人事管理系统

2013-07-01

PDF快捷编辑器

PDF快捷编辑器

2013-07-01

企业人事管理系统(java源代码)

人事管理系统(java源代码我们一起完成的代码,代码量还不大

2013-07-01

空空如也

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

TA关注的人

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