自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

callmeL的博客

欢迎来到我的blog

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

原创 Java内存管理与垃圾回收

1.Java内存管理1.1内存分配与对象初始化当我们使用new关键字创建一个Java对象时,JVM首先会检查这个new指令的参数是否能在常量池中定位到一个类的符号引用,然后检查与这个符号引用相对应的类是否已经成功经历过加载,解析和初始化等步骤(涉及类加载机制),当类完成装载步骤之后,就可以完全确定创建对象实例所需要的内存空间大小,接下来JVM将会对其进行内存分配,以存储所生成的对象实例。如...

2018-10-15 18:24:05 213

原创 Java内存模型

JAVA内存模型1.Java堆区java堆区是一块用于存储对象实例的存储区,同时也是GC(垃圾收集器)执行垃圾回收的重点区域。堆区又可以分为新生代(YoungGen)和老年代(OldGen),新生代又可以划分为Eden空间,From Survivor空间和To Survivor空间。堆大小在JVM启动时就已经设定好了,可以通过选项“-Xmx”和“-Xms”来进行设置。“-Xmx”用于表示堆...

2018-10-15 15:03:20 294

原创 深入探索Activity生命周期以及启动过程

1.各个生命周期的作用1.onCreate()可以进行初始化操作,初始化组件以及布局资源。此时Activity处于不可见状态。2.onStart()表示Activity在启动,前台还没有显示。3.onResume()表示Activity已经在屏幕上显示UI。4.onPause()此方法回调时,Activity正在停止(Paused形态),通常接下来 onStop() 会被回调 ...

2018-10-13 21:15:32 573

原创 abstract class 抽象类与interface 接口的区别,以及应用

抽象类特点拥有抽象方法的类必须是抽象类抽象类可以没有抽象方法继承了抽象类的子类必须实现抽象方法,如果不实现抽象方法那么子类必须是抽象类抽象类中可以对方法进行声明也可以对方法进行实现抽象方法不能声明为static抽象方法不能声明为private抽象类不能声明为static抽象类可以implements接口,抽象类可以不用实现接口的方法,抽象类的子类需要实现抽象类implemen...

2018-11-02 19:53:13 328

转载 Android vector 标签 pathData

原文链接:https://www.jianshu.com/p/a3cb1e23c2c4 Android Support Library 23.2 出来以后,在Android 5.0(API级别21)以前的系统中,也可以定义矢量drawables,即VectorDrawable。它可以在不失清晰度的情况下进行缩放。你仅仅需要需要一个矢量图片的资源文件,而不再需要为每个屏幕密度设置一个资源文件...

2018-10-22 21:16:24 357

原创 Android设计模式之Builder模式

Builder设计模式定义:将一个复杂对象与它的表示分离,使得同样的构建过程可以创建不同的表示。参与者:Product:被构建的复杂对象,ConcreteBuilder用来创建该对象的内部表示,并定义它的装配过程。Builder:抽象接口,用来定义创建Product对象的各个组成部件操作ConcreteBuilder:Builder接口的具体实现。可以定义多个,是实际构建Produ...

2018-10-20 14:56:03 362

转载 Android的冷启动与热启动以及优化方案

热启动定义:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。特点:热启动因为会从已有的进程中来启动,所以热启动就不会走Application这步了,而是直接走MainActivity(包括一系列的测量、布局、绘制),所以...

2018-10-19 23:55:36 2054

转载 Android进程保活

1.进程的优先级1. 前台进程2. 可见进程3. 服务进程4. 后台进程5. 空进程前台进程的重要性最高,依次递减,空进程的重要性最低1.1 前台进程 —— Foreground process用户当前操作所必需的进程。通常在任意给定时间前台进程都为数不多。只有在内存不足以支持它们同时继续运行这一万不得已的情况下,系统才会终止它们。拥有用户正在交互的 Activity(已调用 ...

2018-10-19 21:38:08 304

原创 TCP/IP体系结构之运输层

运输层导读目录:运输层协议的特点以及作用进程之间的通信和端口等重要概念用户数据报协议——UDP协议(User Datagram Protocol)传输控制协议——TCP协议(Transmission Control Protocol)4.1 TCP协议基本知识4.2 可靠传输的工作原理(包括停止等待协议和ARQ协议)4.3 TCP报文段的首部格式4.4 滑动窗口4.5 ...

2018-10-18 22:52:18 1371

转载 Java的反射和注解

JAVA反射与注解 发表于 2017-07-18 |  分类于 JAVA知识点 |   字数统计: 7,519 |  阅读时长 ≈ 31前言现在在我们构建自己或公司的项目中,或多或少都会依赖几个流行比较屌的第三方库,比如:Butter Knife、Retrofit 2、Dagger 2、GreenDao等,如果你没用过,那你需要找时间补一下啦;有时在使用后我们会好奇他们到底是怎么做...

2018-10-14 19:28:12 422

原创 Android设计模式

MVC设计模式1.定义M(Model):业务逻辑处理。暴露方法接口供C层调用。数据库操作,网络操作等耗时操作V(View):处理数据处理。处理数据显示,XML布局可以视为View层C(Controller):Activity处理用户交互。读取数据给View层显示2.特点:耦合性低便于UI界面显示和业务逻辑分离。使项目有很好的扩展性(只需要在M层中添加对应的接口和方法)和维护性。那...

2018-10-14 19:26:03 265

原创 Android布局优化

Android布局优化为什么优化?移动设备的内存和cpu的性能都收到了一定的限制,程序不可能无限地使用内存和cpu资源,过多使用内存会导致程序内存溢出,即OOM。这是因为Android分配给每个应用程序的内存空间大小是有限的。布局优化的思路?其实布局优化就是__减少布局文件的层级。__因为布局中的层级少了,那么Android绘制时的工作量就少了,程序的性能就提高了。如何优化?1....

2018-09-30 09:56:48 209

原创 Java四种引用

Java有四种引用: 强引用 软引用 弱引用 虚引用 强引用:Object a = new Object();普通的引用对象就是强引用,也是Java默认的引用方式。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不...

2018-09-09 21:20:55 237

转载 Java多线程之volatile关键字

Java并发编程:volatile关键字解析   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模...

2018-09-09 16:17:11 267

转载 ImageView的scaleType属性

我们知道,ImageView有一个属性叫做scaleType,它的取值一共有八种,分别是:matrix,fitXY,fitStart,fitCenter,fitEnd,center,centerCrop,centerInside。那我们下面一起来看看这八种取值分别代表什么意思。我用两张图片来做demo,这两张图片的分辨率一大一小,图片分别叫做big和small。原图如下:big:s...

2018-08-24 22:14:06 239

转载 gravity中的start和end

在AndroidStudio中,在布局中写下gravity=“left|bottom”时,会提示将left替换为start。why?它们的不同点是啥?文档上是这么说的:left 0x03 Push object to the left of its container, not changing its size. start 0x00800003 Push objec...

2018-08-24 21:53:33 1134

原创 今日头条笔试编程题——用户喜好

[编程题] 用户喜好时间限制:3秒空间限制:262144K为了不断优化推荐效果,今日头条每天要存储和处理海量数据。假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一段时间内注册的用户(标号相连的一批用户)中,有多少用户对这类文章喜好值为k。因为一些特殊的原因,不会出现一个查询的用户区间完全覆盖另一个查询的用户区间(不存在...

2018-08-22 01:21:17 1853 1

转载 关于解决Hash冲突的线性探测开放地址法和拉链法

在实际应用中,无论如何构造哈希函数,冲突是无法完全避免的。开放地址法这个方法的基本思想是:当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止。这个过程可用下式描述: H i ( key ) = ( H ( key )+ d i ) mod m ( i = 1,2,…… , k ( k ≤ m – 1)) 其中: H ( key ) 为关键字 key...

2018-08-19 23:16:51 4000

原创 Android之IPC机制(二)

Android之IPC机制IPC全称是Intent Process Communication即进程通信。为什么需要进程通信呢?  android是基于linux内核的,linux中两个进程锁分配的虚拟机的地址是不一致的,是两个完全不同 的虚拟机,所以也就意味着两个进程运行不相互影响(进程隔离)。linux中对于进程之间的交流有着 限制,那么在Android中也一样。linux...

2018-08-09 19:23:31 1172

原创 viewPager下的fragment生命周期变化

微信的四个页面使用viewPager + Fragment实现。那么我们滑动的时候fragment的生命周期是如何变化的呢?创建四个fragment。activity布局中使用viewPager,然后在activity代码中添加fragment。布局和微信一样: 我们启动应用的时候,生命周期辩护如下:activity: onCreate activity: onStart a...

2018-08-06 16:44:00 586

原创 一些对HashMap的理解

HashMapHashMap继承于抽象类AbstractMap,而该抽象类实现了Map接口。 Map是Key-Value对映射的抽象接口,映射不包含重复的键。即存储的对象是Entry(同时包含了key和value)HashMap最多允许一条Entry的Key为null(多条覆盖),允许多条Entry的value为null。HashMap不是线程安全的Map1.构造方法...

2018-08-04 17:43:47 392

原创 GreenDao一对一,一对多查询

 实体类中如何进行数据库表中的关联。GreenDao实现的很简单。一对一,使用注解@ToOne(),括号中参数为对应表对应的外键public class Son { @Id(autoincrement = true) private Long id; private String name; private int age; pr...

2018-07-22 22:44:55 3036

原创 GreenDao多线程查询

GreenDao号称最快的ORM数据操作。特别是多线程中,因为他在多线程查询中,在每个线程中定义一个属于当前线程的查询对象,这样子每个线程之间都互相不干扰,比对对象加锁进行同步操作的性能提高了很多,节省了加锁的开销。 先用最普通的方法在线程中访问对象读取数据。private void queryThread() { final Query query = sonDao...

2018-07-22 20:45:07 4732 2

原创 greendao是如何实现查询操作的,多线程是否安全?

 想要了解GreenDao如何进行数据库CRUD操作,那么可以看源码。查询:先看最简单最容记得查询方法queryBuilder().list()。/** Executes the query and returns the result as a list containing all entities loaded into memory. */ public List...

2018-07-22 15:42:41 5231

原创 GreenDao

可以先上官网看下对于GreenDao的介绍,以及为什么使用greendao。IntroductiongreenDAO is an object/relational mapping (ORM) tool for Android. It offers an object oriented interface to the relational database SQLite. ORM to...

2018-07-22 14:27:00 2199

原创 51Nod 1006 最长公共子序列Lcs

动态规划,转移方程为:字符相同dp[i][j]=dp[i-1][j-1]+1;不同dp[i][j]=MAX(dp[i-1][j],dp[i][j-1])最后根据MAX值和dp[i][j](dp[i][j]始终是最大值)来判断哪个字符相同,则存进stringbuilder中。import java.io.BufferedReader;import java.io.IOExceptio...

2018-07-18 17:16:46 348 1

原创 java 中instanceof 和 isInstance() 和equals()和 == 四者之间的比较

 instanceof保持了类型的概念,它指的是“你是这个类吗,或者你是这个类的派生类吗?”isInstance()和instanceof一致。看代码:class Base{}class Derived extends Base{}public class Main { static void test(Object x) { System.ou...

2018-05-30 21:16:46 1378

转载 java垃圾回收机制

Java GC系列(1):Java垃圾回收简介http://www.importnew.com/13504.htmlJava GC系列(2):Java垃圾回收是如何工作的?http://www.importnew.com/13493.htmlJava GC系列(3):垃圾回收器种类http://www.importnew.com/13827.htmlJava GC系列(4):垃圾回收监视和分析ht...

2018-05-30 20:55:05 173

转载 android 子线程更新UI问题

  消息机制,对于Android开发者来说,应该是非常熟悉。对于处理有着大量交互的场景,采用消息机制,是再好不过了。有些特殊的场景,比如我们都知道,在Android开发中,子线程不能更新UI,而主线程又不能进行耗时操作,一种常用的处理方法就是,在子线程中进行耗时操作,完成之后发送消息,通知主线程更新UI。或者使用异步任务,异步任务的实质也是对消息机制的封装。  关于子线程到底能不能更新UI这个问题...

2018-05-21 20:32:26 403

原创 京东2018秋季校招——括号匹配

import java.util.Scanner;import java.util.Stack; /** * 京东2018秋招Android * 括号匹配方案 * 合法的括号匹配序列被定义为: * 1. 空串""是合法的括号序列 * 2. 如果"X"和"Y"是合法的序列,那么"XY"也是一个合法的括号序列 * 3. 如果"X"是一个合法的序列,那么"(X)"也是一个合法的

2018-05-21 16:58:03 385

原创 Android studio 抽取方法来封装公共代码

2018-05-14 21:01:29 2858

转载 Android UI之DatePicker、TimePicker(日期和时间显示)

DatePicker效果TimePicker效果这一篇博客分别讲解Android平台下,关于日期和时间的几个相关控件。包括DatePicker(日期选择控件)、TimePicker(时间选择控件)、DatePickerDialog(日期选择对话框)、TimePickerDialog(时间选择对话框)、AnalogClock(模拟时钟控件)、DigitalClock(数字时钟控件)。对于时间控件,无...

2018-05-14 16:15:15 1240

原创 Android FragmentManager之beginTransaction()

  使用:      private Fragment fragment; private FragmentManager fm;    fm = getSupportFragmentManager(); fragment = fm.findFragmentById(R.id.fragment_container);    fm.beginTransaction() ...

2018-05-04 11:28:31 7569 1

原创 Android Fragment.java中的getActivity()方法解析

废话不多说,看源码:/** * Return the {@link FragmentActivity} this fragment is currently associated with. * May return {@code null} if the fragment is associated with a {@link Context} * instead....

2018-05-04 11:13:38 1945

原创 Android之RecyclerView

RecyclerView是ViewGroup的子类,每一个列表项都是作为一个View子对象展示的,而View子对象是可以自定义的。先来个简易版的列表项显示,每个列表项只显示一个标题,并且View对象是一个简单的TextView,我们通过一个例子来理解和知道如何使用RecyclerView类。RecyclerView意思为可回收视图,所做的就是回收再利用,反复循环。贴图参考自:《Android编程权...

2018-05-04 10:54:22 276

原创 Android 多进程IPC(进程间通信)问题(一)

什么是IPC?在Android中如何进行多进程?简单,在需要开启进程的Activity中声明一下即可,使用android:process声明,引号中的内容是进程的名字,这个可以自己定义。 <activity android:name=".SecondActivity" android:process=":remote"...

2018-04-29 15:40:40 827

原创 Android 深入理解BaseAdapter和实现ListView并处理点击事件

这里主要讲解使用BaseAdapter来实现对ListView的Item内容自定义填充,重写后各个方法的作用,以及Item点击事件。查看源码可以看到BaseAdapter实现了ListAdapter,SpinnerAdapter这两个接口,继续查看,发现这两个接口继承于接口Adapter。废话不多说,上源码。方法int getcount()的源码: /** * How many item...

2018-04-27 09:23:49 3827 2

转载 Android LayoutInflater的inflater方法详解

关于inflate参数问题,我想很多人多多少少都了解一点,网上也有很多关于这方面介绍的文章,但是枯燥的理论或者翻译让很多小伙伴看完之后还是一脸懵逼,so,我今天想通过三个案例来让小伙伴彻底的搞清楚这个东东。本篇博客我们不讲源码,只看使用。源码的解读会在下一篇博文中带来。inflate方法从大范围来看,分两种,三个参数的构造方法和两个参数的构造方法。在这两类中又有细分,OK,那我们就把各种情况都来演...

2018-04-26 11:51:57 360

原创 Android MVC框架理解

MVC优点:    耦合性低视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。模型是自包含的,并且与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。如果把数据库从MySQL移植到Oracle,或者改变基于RDBMS数...

2018-04-25 17:19:23 939

转载 Android ListView和Adapter介绍

ListView是安卓布局中常用的一个控件,用来展示列表的效果,使用ListView并更新其中的item内容需要使用相关的Adapter来实现,在这其中Adapter充当了一个转换功能的类,其实现了绑定数据到UI界面,负责创建每个项目的子View和提供对下层数据的访问。ListView  显示大量相同格式数据  常用属性:    listSelector            listView每项...

2018-04-25 16:25:04 3231

空空如也

空空如也

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

TA关注的人

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