自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(152)
  • 收藏
  • 关注

原创 Java并发编程 Synchronized及其实现原理

Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。Java中每一个对象都可以作为锁,这是synchronized实现同步的基础普通同步方法,锁是当前实例对象public class SynchronizedTe...

2019-12-08 16:36:40 200

原创 在职研究生值不值得考?

有没有人是在职研究生学历的,在我们日常工作或者换工作有没有价值和意义?希望考过的朋友能留言

2019-09-18 23:31:00 736

原创 IO多路复用模型之epoll实现机制

IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用I/O复用。 当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。 如果一个服务器即要处理TCP,又要处理UDP,一...

2019-09-13 23:23:13 380

转载 面试必备之深入理解自旋锁

我对原文做了一点补充与修改,我觉得这篇文章写的非常非常好。深入学习,不光可以深入掌握自旋锁,可能提高自己的编程思想。原文作者对于自旋锁的思考很棒,为他点个赞。在我的上一篇文章:面试难点:你了解乐观锁和悲观锁吗?已经为大家对比了乐观锁与悲观锁。我们知道CAS算法是乐观锁的一种实现方式,CAS算法中又涉及到自旋锁,所以这里给大家讲一下什么是自旋锁。简单回顾一下CAS算法CAS算法即co...

2019-09-06 11:10:53 216

转载 面试难点:你了解乐观锁和悲观锁吗?

前言乐观锁和悲观锁问题,是出现频率比较高的面试题。本文将由浅入深,逐步介绍它们的基本概念、实现方式(含实例)、适用场景,以及可能遇到的面试官追问,希望能够帮助你打动面试官。目录一、基本概念二、实现方式(含实例)三、优缺点和适用场景四、面试官追问:乐观锁加锁吗?五、面试官追问:CAS有哪些缺点?六、总结一、基本概念乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。...

2019-09-05 00:04:10 409

原创 如何创建不可变(Immutable)的Java类或对象

不可变对象(immutable objects),后面文章我将使用immutable objects来代替不可变对象!那么什么是immutable objects?什么又是mutable Objects呢?immutable Objects就是那些一旦被创建,它们的状态就不能被改变的Objects,每次对他们的改变都是产生了新的immutable的对象,而mutable Objects就是...

2019-08-31 23:24:58 366

转载 Activity启动(1)----流程

Activity启动过程中做了哪些事情?下面的时序图展示里启动过程中函数的调用过程, 从图中可以知道大概流程。在介绍细节的时候是从上往下函数调用过程介绍的,如果不知道某个函数是在哪里被谁调用的,可以回过头来看下时序图。下面是对一些细节进行介绍。1.在Android中有两种操作会引发Activity的启动,一种用户点击Launcher的应用程序图标时,Launcher会为启动应用程序...

2019-08-25 11:15:33 202

原创 类的加载机制

Java虚拟机类加载机制--概述当看到“类的加载机制”,肯定很多人都在想我平时也不接触啊,工作中无非就是写代码,不会了可以百度,至于类,jvm是怎么加载的我一点也不需要关心。在我刚开始工作的时候也觉得这些底层的内容距离我还很遥远,根本不用关系,可是随着做开发的时间越来越长,慢慢的已经意识到虚拟机相关要领的重要性。一直想写篇和虚拟机相关的文章,无奈之前由于各种原因一直没写,年初工作还不是很忙,抽...

2019-08-22 07:11:45 99

原创 Java垃圾回收机制

垃圾对象判定标准jvm的GC工作主要针对的对象是堆内存,在做GC工作之前,首先要判定堆内存中的对象实例是否为垃圾,通常使用以下两种算法来定义1.引用计数算法java在运行时,当有一个地方引用该对象实例,会将这个对象实例加1,引用失效时就减1,jvm在扫描内存时,发现引用计数值为0的则是垃圾对象,计数值大于0的则为活跃对象。目前垃圾回收算法,没有采用引用计数算法,原因是在对象...

2019-08-18 07:27:41 191

原创 System property 系统属性变量

今天开发过程中,发现System.getProperty("line.separator")可以支持换行跨平台,例如各平台对应的换行符如下:\r: Mac ;\n: Unix/Linux ;\r\n: Windows或Http,为了自己的程序更好的支持跨平台,今天对System property大致研究一下,现做笔记如下,方面为了查阅。System property 概念在JAVA...

2019-08-10 23:28:38 3180

原创 并发-------线程池ThreadToolExecutor

线程池五种状态线程池具有以下五种状态,当创建一个线程池时初始化状态为RUNNING RUNNING 允许提交并处理任务 SHUTDOWN 不允许提交新的任务,但是会处理完已提交的任务 STOP 不允许提交新的任务,也不会处理阻塞队列中未执行的任务,并设置正在执行的线程的中断标志位...

2019-08-08 13:22:27 486

原创 观察者模式和发布订阅模式的区别

从下图中可以看出,观察者模式中观察者和目标直接进行交互,而发布订阅模式中统一由调度中心进行处理,订阅者和发布者互不干扰。这样一方面实现了解耦,还有就是可以实现更细粒度的一些控制。比如发布者发布了很多消息,但是不想所有的订阅者都接收到,就可以在调度中心做一些处理,类似于权限控制之类的。还可以做一些节流操作。二 概念上的区别1.观察者模式,目标和观察者是基类,目标提供维护观察...

2019-08-04 10:21:19 3402

原创 java虚拟机----内存管理机制

运行时数据区Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都拥有自己的用途,并随着JVM进程的启动或者用户线程的启动和结束建立和销毁。根据《java虚拟机规范(java se 7版)》的规定:java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图:1程序计数器(Program Counter Register)程序计...

2019-08-01 09:29:52 110

原创 进程与线程之间的关系和区别 及 CPU调度

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。进程和线程的关系:(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。(3)处理机分给线程,即真正在处理机上运行的是线程。(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。...

2019-07-01 17:53:14 1719

原创 CyclicBarrier使用与原理

1 CyclicBarrier简介CyclicBarrier,是JDK1.5的java.util.concurrent并发包中提供的一个并发工具类。所谓Cyclic即 循环 的意思,所谓Barrier即 屏障 的意思。所以综合起来,CyclicBarrier指的就是 循环屏障,虽然这个叫法很奇怪,但是确能很好地表示它的作用。其作用在JDK注释中是这样描述的:A syn...

2019-06-26 22:59:32 4096 2

转载 网关定义及应用

网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,...

2019-06-19 15:39:26 1257

原创 【Android】用Studio完成多设备多分辨率的适配

我们打开工程默认的Layout文件夹,然后选中一个XML布局文件,然后在Studio的右上角,我们能看到列出了很多设备: 我们能看到这里面有各种各样大小和密度的设备。那我们知道在实际过程中,为了适配不同的屏幕,需要设置相应的XML文件夹(layout-normal,layout-large等),这样程序在读取到相应的设备的时候,能自动去不同的文件夹中读取。如果大家没有设置,那我们的...

2019-05-27 13:42:39 1469

原创 Android屏幕适配最优方案

屏幕适配主要从图片和距离(文字)进行下手。从以往的方式适配方式中,开发者可能会考虑各种各样的分辨率,比如480*800、1280*800、1920*1080等,为此在资源文件夹里面创建了一大堆子文件夹,那么有什么更好的方式吗?首先我们看下我的android studio模拟其中一些流行的镜像的屏幕参数信息上面举了两个例子,其实看了好几个发现大部分的屏幕虽然分辨率各种各样,但是dp...

2019-05-25 23:23:38 852

原创 Kotlin在Android端的使用方法

Kotlin相信现在大家都不陌生了,它是谷歌在5月18日,它的安卓团队在GoogleI/O 2017 大会上正式宣布 Kotlin 成为官方头等支持语言。最近一段时间我学习和研究了下Kotlin的特点和基本用法。大概用了一天时间,把Android的一些主要的APP功能,用Kotlin语言和结构重新写了一遍,体会就是:上手和学习很快、语法简洁、代码少写了很多、不用很麻烦的写控件绑定了(自动导包)、兼...

2019-05-20 10:31:37 951

转载 在AndroidStudio中使用单元测试

1. 前言在Android开发中,如果对一个简单的功能,每次修改代码都重新运行到设备中进行测试,会浪费大量时间,降低开发工作效率。如果使用单元测试,编写单元测试类,执行测试单元测试类就可以对某些功能进行测试,大大提升了开发工作效率。2. 添加单元测试支持在AndroidStudio项目中,如果是新版本的AndroidStudio中新建的,会自动添加了单元测试的支持,如果旧项目...

2019-05-14 21:40:41 734

原创 Drawable之getIntrinsicWidth()和getIntrinsicHeight()

在Android的开发中,凡是需要画图的地方大都离不开类Drawable。Android的官方文档中介绍这个类就是被设计用来表示可以被画的东西。A Drawable is a general abstraction for "something that can be drawn."细心的同学可能会发现这个类提供了这样两个方法:getIntrinsicWidth()和getInt...

2019-05-13 23:10:07 744

转载 InsetDrawable详解

InsetDrawable 表示一个drawable根据指定的距离嵌入到另外一个drawable内部。(我们看到的其实还是同一张图片,只是会空出一些边距)当控件需要的背景比实际的边框小的时候比较适合使用InsetDrawable。很像drawable的padding属性,区别在于 padding表示drawable的内容与drawable本身的边距,insetDrawable表示两个drawa...

2019-05-12 15:33:07 419

转载 Android Studio 将Library打包成jar或aar包

在eclipse中导出jar包,对于老司机们来说再熟悉不过了,对于新手来说也很简单(不知道还有没有Android新手在用eclipse开发工具了),鼠标咔咔几下jar包就出来了。不过,AS中打jar包也挺简单,就是多几行代码而已。一、打包成jar首先自己新建一个工程,然后添加module并依赖;如下图:slidingmenuhbh为添加的library...

2019-05-09 17:11:28 3201

原创 linux系统下怎么安装.deb文件?

dpkg 是Debian Package的简写,是为Debian 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自Debian的Linux发行版都使用dpkg,例如Ubuntu、Knoppix 等。那么,linux系统下怎么安装.deb文件?deb 是 ubuntu 、debian 的格式。rpm 是 redhat 、fedora 、suse 的格式。他们不通用(虽然可...

2019-05-06 22:46:06 5200

转载 Java 多线程和高并发高频面试问题,这些你掌握了多少?

volatile对 volatile的理解volatile 是一种轻量级的同步机制。保证数据可见性 不保证原子性 禁止指令重排序JMMJMM(Java 内存模型)是一种抽象的概念,描述了一组规则或规范,定义了程序中各个变量的访问方式。JVM运行程序的实体是线程,每个线程创建时 JVM 都会为其创建一个工作内存,是线程的私有数据区域。JMM中规定所有变量都存储在主内存,主内...

2019-05-06 21:51:52 812

原创 Veiw的getLeft(),getMeasuredWidth(),getPaddingLeft(),getMeasuredWidth()的关系

阅读android源代码,发现几个函数(例如getLeft(),getMeasuredWidth(),getPaddingLeft(),getMeasuredWidth())的关系没有搞明白,今天阅读View文档,重点记录如下,以备将来查阅PositionThe geometry of a view is that of a rectangle. A view has a location...

2019-05-04 23:13:14 1087 1

转载 yum配置与使用(很详细)

yum的配置一般有两种方式,一种是直接配置/etc目录下的yum.conf文件,另外一种是在/etc/yum.repos.d目录下增加.repo文件。一、yum的配置文件$cat/etc/yum.conf[main]cachedir=/var/cache/yum#yum下载的RPM包的缓存目录keepcache=0#...

2019-05-03 17:32:21 452

转载 RecyclerView(四) 缓存机制详解

一 前言RecyclerView据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:ListView、GridView。RecyclerView可以用来代替传统的ListView,GridView,更加强大和灵活。RecyclerView的使用网上有非常多案例,这里就不多说了,我们今天主要来看看RecyclerView 的缓存机制。二 缓存机制Rec...

2019-05-02 10:37:01 711

转载 Android Studio运行时自带签名配置过程详解

摘要Android Studio比Eclipse在配置Project签名文件时方便很多,可以同时指定debug和release两种模式下的签名文件。debug模式即Android Studio运行时指定的签名文件,默认使用Android Studio自带的签名文件,当然在开发中集成第三方功能,比如微信登录(收藏、分享、支付)、百度地图、新浪分享等应用程序时,往往需要使用自定义的签名文件,否则调...

2019-05-01 16:31:29 526

转载 Android开发之深入理解Android Studio构建文件build.gradle配置

通过这篇文章的学习,你会对build.gradle文件有一个全新的认识,可以将TeachCourse文章提到的相关说明作为文档参考,方便在另一个module中引入,代码如下:apply plugin: 'com.android.application'android { compileSdkVersion 24 buildToulsVersion "25.0.2" ...

2019-05-01 16:02:11 452

转载 RecyclerView (三):ItemAnimator 详解

本文继上篇ItemDecoration之后,是深入理解 RecyclerView 系列的第二篇,关注于 ItemAnimator,主要是分析RecyclerView Animators这个库的原理,然后总结如何自己编写自定义的 ItemAnimator。本文涉及到的完整代码可以在Github 获取。先看看类结构DefaultItemAnimatorextendsS...

2019-04-29 22:51:37 3215

原创 RecyclerView (二) ItemDecoration 详解

RecyclerView 已经推出了n年了,日常开发中也已经彻底从 ListView 迁移到了 RecyclerView,但前两天有人在一个安卓群里面问了个关于最顶上的 item view 加蒙层的问题,被人用 ItemDecoration 完美解决。此时我发现自己对 RecyclerView 的使用一直太过基本,更深入更强大的功能完全没有涉及,像 ItemDecoration, ItemAnim...

2019-04-29 20:15:47 1030

原创 RecyclerView(一) 使用完全解析 体验艺术般的控件

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/45059587;本文出自:【张鸿洋的博客】概述RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过导入support-v7对其进行使用。据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生,例如:List...

2019-04-29 15:49:29 218

原创 设计模式的分类与设计原则

一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两...

2019-04-27 23:20:13 114

转载 Java设计模式:状态机模式

public class State { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public void method1() { System.out...

2019-04-27 23:07:56 780

转载 今日头条面试2019

头条2017年4月27号面试一面:hashmap 的实现原理,是不是线程安全的? 如何解决hashmap线程不安全问题? 弱引用和软引用的区别,有没有用到过? 如何用一个数组实现一个队列?如果满了怎么办(扩容),扩容怎么实现? 如果实现循环队列,怎么操作?怎么样实现扩容? java异常介绍 Android的事件分发机制,down 事件和 move up事件的监听,传递状态 h...

2019-04-27 22:35:04 577

转载 Android中显式和隐式intent的特点和区别

Intent简介:Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图),Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行动作和产生事件。使用Intent可以激活Android应用的三个核心组件:活动、服务和广播接收器。还可以通过intent.putExtra()等方法携带数据。对于两种inten...

2019-02-24 22:58:50 1203

转载 你应该知道的Activity状态的保存与恢复

 首先,为了让大家对Activity的状态的保存与恢复有个清楚的认识,我先举个生活中常见的例子来说明一下,比如你去食堂吃饭,饭吃到一半的时候你突然优势出去了一下,然后过了一会你又回来了,可是却发现自己的饭不见了,原来是被食堂阿姨给收走了,这个时候你可能就要抱怨了,为什么我还没吃完就给收了,这就好比你在一个应用的一个界面执行某项操作,突然来了一个电话,当你再次回到之前那个操作界面,你发现你还要重...

2019-02-24 22:46:31 225

原创 泛型编程

面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> ...

2019-02-24 00:04:00 107

转载 策略模式(Strategy)

面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> 设计模式,无论是coder们业余聊天,还是面试时面试官喜欢出的问题中,都会看到它的影子。设计模式,是基于面向对象之上的,应用好设计模式,我们在平时开发,还是架构设计,在系统的架构性,可拓展,可维护性方面的考虑都会有质的提升。当我们会一些基础语法,逻辑控制之后,就需要考虑我现在写的代码,在以后的拓展,维护...

2019-02-23 00:49:00 204

空空如也

空空如也

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

TA关注的人

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