- 博客(29)
- 资源 (28)
- 收藏
- 关注
原创 Java多线程面试题
sychronied修饰普通方法和静态方法的区别?什么是可见性?对象锁是用于对象实例方法,或者一个对象实例上的,类锁是用于类的静态方法或者一个类的class对象上的。我们知道,类的对象实例可以有很多个,但是每个类只有一个class对象,所以不同对象实例的对象锁是互不干扰的,但是每个类只有一个类锁。但是有一点必须注意的是,其实类锁只是一个概念上的东西,并不是真实存在的,类锁其实锁的是每个类的对应的class对象。类锁和对象锁之间也是互不干扰的。可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量
2020-06-25 11:24:26 168
原创 Java多线程JMM、volatile原理、synchronized原理
JMM基础-计算机原理Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。Java1.5版本对其进行了重构,现在的Java仍沿用了Java1.5的版本。Jmm遇到的问题与现代计算机中遇到的问题是差不多的。物理计算机中的并发问题,物理机遇到的并发问题与虚拟机中的情况有不少相似之处,物理机对并发的处理方案对于虚拟机的实现也有相当大的参考意义。根据《Jeff Dea
2020-06-25 11:18:07 166
原创 Java多线程AQS
AbstractQueuedSynchronizer学习AQS的必要性队列同步器AbstractQueuedSynchronizer(以下简称同步器或AQS),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。并发包的大师(Doug Lea)期望它能够成为实现大部分同步需求的基础。AQS使用方式和其中的设计模式AQS的主要使用方式是继承,子类通过继承AQS并实现它的抽象方法来管理同步状态,在AQS里由一个int型的st
2020-06-25 11:06:49 273
原创 Java多线程阻塞队列和线程池原理
阻塞队列队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表。什么是阻塞队列1)支持阻塞的插入方法:意思
2020-06-22 16:11:52 348
原创 Java多线程CAS
线程的启动方式启动线程的方式只有两种:1、X extends Thread;,然后X.start()2、X implements Runnable;然后交给Thread运行第三种,实现一个Callable,然后交给一个FutureTask对象,再把这个FutureTask对象作为参数来启动Thread其实就是上面的第二种启动方式。线程的状态Java中线程的状态分为6种:初始(NEW):新创建了一个线程对象,但还没有调用start()方法。运行(RUNNABLE):Java线程中将就绪(r
2020-06-22 09:57:56 336
原创 Java多线程ThreadLocal和ReentrantLock
线程间的共享和协作线程间的共享线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照既定的代码一步一步地执行,直到终止。但是,每个运行中的线程,如果仅仅是孤立地运行,那么没有一点儿价值,或者说价值很少,如果多个线程能够相互配合完成工作,包括数据之间的共享,协同处理事情。这将会带来巨大的价值。Java支持多个线程同时访问一个对象或者对象的成员变量,关键字synchronized可以修饰方法或者以同步块的形式来进行使用,它主要确保多个线程在同一个时刻,只能有一个线程处于方法或者同步块中,它保证了线程对变
2020-06-21 17:00:52 374
原创 Java多线程基础概念
CPU核心数和线程数的关系多核心:也指单芯片多处理器( Chip Multiprocessors,简称CMP),CMP是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。这种依靠多个CPU同时并行地运行程序是实现超高速计算的一个重要方向,称为并行处理多线程: Simultaneous Multithreading.简称SMT.SMT可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源可最大限度地实
2020-06-21 16:03:31 191
原创 Java动态代理与静态代理
参考:静态代理和动态代理的区别和联系java 代理 理解原理及实现Java 动态代理详解JAVA面试50讲之9:动态代理的原理是什么?
2020-06-19 17:27:07 234
原创 Java动态代理
静态代理代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。比如你按照小卡片上的电话打过去寻求服务,一般不是由本人,可能是一个成年雄性接听电话,然而真正做事情的可能是另一个小姐姐。目的:(1)通过引入代理对象的方式来间接访问目标对象,防止直接访问目标对象给系统带来的不必要复杂性;(2)通过代理对象对访问进行控制;通过代理对象对原有的业务增强;代理模式一般会有三个角色:抽象角色:指代理角色和真实角色对外提供的公共方法,一般为一个接口真
2020-06-19 17:18:26 156
原创 Java注解
https://docs.oracle.com/javase/tutorial/java/annotations/index.htmlhttps://pingfangx.github.io/java-tutorials/java/annotations/
2020-06-19 16:41:26 183
原创 Java泛型
https://docs.oracle.com/javase/tutorial/java/generics/index.htmlhttps://pingfangx.github.io/java-tutorials/java/generics/index.html
2020-06-19 16:39:08 235
原创 JVM类加载器
jvm之java类加载机制和类加载器(ClassLoader)的详解虚拟机类加载机制深入理解java虚拟机(八)类加载过程详解深入理解Java类加载器(一):Java类加载原理解析
2020-06-17 19:41:13 109
原创 TraceView以图形的形式展示方法的执行时间、调用栈及调用次数
参考:就这一次看懂TraceViewTraceView 的正确打开方式https://github.com/zjw-swun/AppMethodOrder性能优化工具(三)-TraceView
2020-06-10 16:10:57 234
原创 Android性能优化之如何提高android代码的质量Lint
常见错误类型:一, Correctness:Messeges(1)字符串国际化不完全(2)国际化的字符串,在默认位置(default locale),没有定义二,Correctness(1)Xml中view的id重名(2)代码中使用的某些API高于Manifest中的Min SDK(3)字符串国际化中,同一名字的的String-Array对应的item值不相同 (4)Activity没有注册到Manifest(5)使用已经废弃的api(6)避免使用px,使用dp(7)添加不需要的权限三
2020-06-06 17:47:30 173
原创 Android性能优化之如何提高android代码的质量Findbugs
FindBugs 常见错误类型参考:FindBugs 常见错误类型整理FindBugs 常见错误类型整理
2020-06-06 17:30:09 171
原创 Android性能优化之如何提高android代码的质量Checkstyle
Checkstyle常见错误和警告提示Checkstyle常见错误和警告提示见下表所示:eclipse_checkstyle.xml文件内容Checkstyle配置文件eclipse_checkstyle如下所示:<?xml version="1.0"?><!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycra
2020-06-06 17:06:58 181
原创 HTTP及HTTP缓存框架HttpResponseCache
请求报文格式1)请求行,第一行是请求行:请求方法 URL路径 HTTP版本号 , 如:GET http://news.baidu.com/ HTTP/1.12)请求头,如:Host: news.baidu.comConnection: keep-aliveAccept: text/htmlAccept-Encoding: gzip, deflate, sdchAccept-Language: zh-CN3)请求体,get方法不适用,post方法提交数据时,用于存放请求的参数响应报文
2020-06-06 16:05:30 572
原创 设计模式
设计模式是解决问题的思想,重要的是它背后的思想。写代码时不要刻意追求设计模式。什么是设计模式设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现实中都有相应的原理来与之对应,每一个模式描述了一
2020-06-04 18:47:37 188
原创 Java集合之ArrayList与LinkedList的区别
顺序表和链表的比较顺序表:物理上连续,逻辑上连续,查找和修改快,因为可以根据下标直接定位到元素(即支持随机访问);删除和新增数据慢,因为要大量移动数据。链表:物理上不连续,逻辑上连续,查找和修改慢,因为要轮询才能定位到元素;删除和新增数据快,因为直接操作next指针即可。...
2020-06-03 13:07:11 129
原创 Java集合之LinkedList
参考:【源码解析】面试必问的LinkedList,看这篇文章就够了面试必备:LinkedList源码解析(JDK8)面试官系统精讲Java源码及大厂真题 - 06 LinkedList 源码解析一篇文章搞定ArrayList和LinkedList所有面试问题...
2020-06-02 18:35:43 242
原创 Java集合之ArrayList
参考:阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时掌握这些,ArrayList就不用担心了!
2020-06-02 18:34:42 154
WindowManagerService相关类图.eddx
2020-03-20
WindowManagerService相关类图.eddx
2020-03-20
WindowManagerService相关类图.eddx
2020-03-19
Binder.rar
2020-03-19
A Kafka-based Ordering Service for Fabric
2019-01-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人