Java
文章平均质量分 68
Java相关文档
刘越洋子
好记性不如烂笔头
展开
-
JVM学习笔记- 4 类文件结构
1.Java跨平台2.class文件结构原创 2017-09-25 10:55:35 · 318 阅读 · 0 评论 -
JVM学习笔记-2 对象的创建
JVM学习笔记-2 对象的创建1 new指令虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Java...原创 2019-02-20 14:05:58 · 234 阅读 · 0 评论 -
JVM学习笔记-1 运行时内存区域
JVM运行时,首先需要类加载器(ClassLoader) 加载所需类的字节码,加载完毕交由执行引擎执行,执行过程中需要一段空间来存储数据(类比CPU与主存)。这段内存空间的分配和释放过程正是我们所关心的,称为运行时数据区。JVM运行时内存区域主要分为 程序计数器,虚拟机栈,本地方法栈,虚拟机堆,方法区五个主要区域。(Java内存模型和JVM内存区域是两个概念不要混淆)原创 2017-09-22 22:42:35 · 344 阅读 · 0 评论 -
JVM学习笔记- 6 Java内存模型与线程
JVM学习笔记- 6 Java内存模型与线程1 Java内存模型Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量(Variables)与Java编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有的 ,不会被共享,自然就不会存在竞争问题。Ja...原创 2019-02-21 11:17:12 · 312 阅读 · 0 评论 -
JVM学习笔记- 5 类加载机制
JVM学习笔记-类加载机制1.类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中验证、准备、解析3个部分统称为连接(Linking)。 加载、验证、原创 2017-09-25 21:23:24 · 277 阅读 · 0 评论 -
JVM学习笔记- 3 垃圾收集器与内存分配策略
1.JVM学习笔记-对象的内存分配Java创建对象会存储到JVM堆中。对象的内存分配也可以说是JVM堆的内存分配策略。JVM堆中分为新生代和老年代 JVM堆的大小=新生代+老年代新生代中,每次垃圾收集时都发现有大批对象死去,只有少量存活,选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。老年代中因为对象存活率高、没有额外空间对它进行分配担保,必须使用“标记—清理”或者“标记—整理”原创 2017-11-02 11:40:37 · 306 阅读 · 0 评论 -
Spring源码分析IOC实现一BeanFactory
Spring源码分析IOC实现一BeanFactory1. BeanFactorySpring Ioc中最核心的接口BeanFactory和ApplicationContext 一般BeanFactory是Spring内部使用的而ApplicationContext是对开发者使用的。通常BeanFactory称为Ioc容器,ApplicationContext 称为Spring容器。 通常我们学习原创 2017-09-29 14:37:40 · 316 阅读 · 0 评论 -
Java并发编程五 Future模式
Java并发编程五 Future模式Future是并发编程中的一种设计模式,对于多线程来说,线程A需要等待线程B的结果,它没必要一直等待B,可以先拿到一个未来的Future,等B有了结果后再取真实的结果。 它的核心思想就是异步调用。当我们需要调用一个函数,但是这个函数执行很慢,如果我们不需要马上知道结果,我们可以立即返回,让它在后台慢慢处理这个请求,对于调用者来说,可以先处理一些其他任务,这...原创 2018-05-14 18:09:23 · 362 阅读 · 0 评论 -
Java 网络IO(BIO,NIO,AIO)
Java 网络IO(BIO,NIO,AIO)1.BIOBIO 全称Block-IO 是一种同步阻塞的通信模式。我们常说的Stock IO 一般指的是BIO。是一个比较传统的通信方式,模式简单,使用方便。但并发处理能力低,通信耗时,依赖网速。 BIO 设计原理: 服务器通过一个Acceptor线程负责监听客户端请求和为每个客户端创建一个新的线程进行链路处理。典型的一请求一应答模式。若客户...原创 2018-05-25 11:29:21 · 765 阅读 · 0 评论 -
Java并发编程六 Master-Worker模式
Java并发编程六 Master-Worker模式Master-Worker是常用的并行计算模式。它的核心思想是系统由两类进程协作工作:Master进程和Worker进程。Master负责接收和分配任务,Worker负责处理子任务。当各个Worker子进程处理完成后,会将结果返回给Master,由Master作归纳总结。其好处就是能将一个大任务分解成若干个小任务,并行执行,从而提高系统的吞吐量...原创 2018-05-15 14:33:29 · 404 阅读 · 0 评论 -
Java并发编程七 生产者消费者模式
Java并发编程七 生产者消费者模式生产者-消费者模式是一个经典的多线程设计模式,它为多线程的协作提供了良好的解决方案。在生产者-消费者模式中,通常有两类线程,即若干个生产者线程和若干个消费者线程。生产者线程负责提交用户请求,消费者线程负责处理用户请求。生产者和消费者之间通过共享内存缓冲区进行通信。 生产者-消费者模式中的内存缓冲区的主要功能是数据在多线程间的共享。此外,通过该缓冲区,可以缓...原创 2018-05-15 16:05:44 · 343 阅读 · 1 评论 -
Java并发编程十一 Disruptor框架HelloWorld
Java并发编程十一 Disruptor框架HelloWorld1.简介Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。 Disruptor能够在无锁的情况下实现网络的Queue并发操作。2. Disruptor 关键类RingBuffer: 被看作Disruptor最...原创 2018-05-22 13:26:10 · 634 阅读 · 0 评论 -
Java并发编程十二 Disruptor框架RingBuffer
Java并发编程十二 Disruptor框架RingBuffer1. RingBuffer原理Disruptor整个框架的核心就是RingBuffer,也是为什么Disruptor为什么高效率的关键。 RingBuffer是一个首尾相连的环形数据结构,没有尾指针,只维护了一个指向下一个可用位置的序号。 详细原理查看 http://ifeve.com/dissecting-disrupt...原创 2018-05-22 17:30:49 · 1362 阅读 · 0 评论 -
Java并发编程八 线程池
Java并发编程八 线程池1.线程池作用1.降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 2.提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。 3.提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。2. 线程池ThreadPoolExecutor...原创 2018-05-16 17:20:38 · 307 阅读 · 0 评论 -
Netty学习 HelloWorld
Netty学习 HelloWorld1.Netty简介Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游...原创 2018-05-28 11:34:06 · 304 阅读 · 0 评论 -
Java基础、进阶、高级到架构的知识集合
Java基础、进阶、高级到架构的知识集合一、基础篇1.1 JVM相关JVM内存结构堆、栈、方法区、直接内存、堆和栈区别Java内存模型内存可见性、重排序、顺序一致性、volatile、锁、final垃圾回收内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定JVM参数及调优Java对象模型oop-klass、对象头HotSpot即时编译器、编译优化类加载...原创 2018-12-26 11:58:25 · 492 阅读 · 0 评论 -
Java中CAS详解
Java中CAS详解在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错的...转载 2018-05-18 17:10:10 · 219 阅读 · 0 评论 -
Java并发编程四 并发容器
Java并发编程四 并发容器java.util.concurrent包提供了Java多线程情况下保证线程安全的一系列容器,包括Map,List,Set,Queue接口下的并发类实现。1.ConcurrentHashMapConcurrentMap接口下有两个实现,一个是ConcurrentHashMap和ConcurrentSkipListMap(支持并发排序)。 Concurren原创 2018-05-11 15:00:01 · 317 阅读 · 0 评论 -
Java并发编程十 重入锁ReentrantLock 读写锁ReentrantReadWriteLock
Java并发编程十 重入锁ReentrantLock 读写锁ReentrantReadWriteLockJava的concurrent并发包提供了一套与Synchronized关键字相同功能Lock,还有与wait()/notify()相同功能的Condition。Lock的功能比传统的Synchronized更加灵活。它具有嗅探锁定和多路分支等功能(一个lock对象可以创建多个Condi...原创 2018-05-17 18:19:54 · 257 阅读 · 0 评论 -
Java集合 List接口详解
Java List接口详解ArrayList,Vector,LinkedList原创 2017-09-04 13:10:29 · 1150 阅读 · 0 评论 -
Session和Cookie详解
Session与Cookie1,session 在服务器端,cookie 在客户端(浏览器)2,session 默认被存在在服务器的一个文件里(不是内存)3,session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递原创 2017-08-22 13:23:12 · 308 阅读 · 0 评论 -
方法之间参数传递问题
Java方法之间对象传递, 值传递原创 2017-10-18 14:37:07 · 560 阅读 · 0 评论 -
SpringBoot配置devtools实现热部署
spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。devtools的原理深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoad原创 2017-10-12 16:35:03 · 597 阅读 · 0 评论 -
Java与Python连接mysql比较
Java连接Mysql 栗子Python连接Mysql 栗子原创 2017-11-02 15:52:25 · 1236 阅读 · 0 评论 -
Java IO
Java拾遗系列- io知识最近看tomcat源码,发现socket的输入输出流处理起来坑挺多的。莫名其妙的就阻塞了。最后决定回来先看看io知识。简介io分类及相关应用Nio应用io与Nio的区别1.简介Java的io流在 Web工作中,直接用到的情况很少,最典型的就是读写文件,上传下载。都是通过File**类实现的。但是在Web开发中很多功能都用到了 io流 如原创 2017-11-28 21:15:38 · 257 阅读 · 0 评论 -
Tomcat源码学习一 Tomcat实现基石Socket
Tomcat源码学习一 Tomcat实现基石SocketTomcat是什么?相信做Java Web的都应该用过Tomcat,它是Web轻量级的应用服务器,或者说是一个Servlet容器。原创 2017-11-16 17:21:57 · 1464 阅读 · 0 评论 -
Java HashMap 实现原理
Java HashMap 实现原理首先唠叨一句看Java源码虽然累,但是还能看懂。看Python源码是真看不懂啊。那是太糟心了。HashMap是Java实现Hash算法的存储结构。学习HashMap之前要先了解Hash算法。知道原理查看源码就会明白Java为什么采用数组+链表的方式实现HashMap来解决Hash冲突。Java是采用 **链地址法** 实现的Hash算法。那什么是链原创 2017-12-01 12:20:08 · 270 阅读 · 0 评论 -
Idea默认设置,如Maven等
每次用Idea新建项目时,maven配置总回到系统默认的配置。导致每次创建新项目或者从Git检查项目时。得注意maven配置,总是手动改回来。很麻烦。在网上查一下,查到了解决办法,不用每次新建项目手动改maven配置。修改配置时,要修改默认配置也就是全局配置 修改时选择Default Settings…修改默认配置以后就可以解决了。原创 2018-01-23 18:02:14 · 246 阅读 · 0 评论 -
Window10运行Docker踩过的坑
Window10运行Docker踩过的坑摘要1.Docker for Windows 仅支持专业版 2.docker-machine启动docker时,docker里的文件没了 3.docker安装Redis时配置文件出错最近新装系统从Ubuntu装回到Windows 原因是买了京东Plus会员开电子书方便。 京东阅读客户端不支持Linux。只好转回Windows。想在Wind原创 2018-01-29 18:08:07 · 46768 阅读 · 3 评论 -
linux mint18 字体设置(微软雅黑)
linux mint18 字体设置(微软雅黑)最近这次重新装linux mint18.3系统,发现早先的系统字体怎么设置的忘记了。然后试试文泉译字体,发现很别扭,因为公司电脑用的windows。在公司看一天电脑回家在看文泉译字体 感觉差距特别大。所以尝试将linux mint 的字体设置成微软雅黑。这一切的前提是你得有微软雅黑字体,你可以通过自己的windows电脑上的C:\Windows...原创 2018-04-11 21:59:53 · 7263 阅读 · 0 评论 -
Java并发编程二 线程安全
Java并发编程二 线程安全线程安全概念: 当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。原创 2018-05-09 15:09:56 · 429 阅读 · 0 评论 -
Java并发编程三 线程间通信
Java并发编程三 线程间通信线程间通信:多个线程在处理同一个资源,并且任务不同时,需要线程通信来帮助解决线程之间对同一个变量的使用或操作。就是多个线程在操作同一份数据时, 避免对同一共享变量的争夺。1.wait/notify使用wait/notify方法实现线程间通信(wait/notify为Object方法)wait和notify必须配合synchronized关键字使用w原创 2018-05-10 11:11:24 · 265 阅读 · 0 评论 -
Java并发编程一 多线程
Java并发编程一 多线程Java并发编程是一个很热点的话题,无论在面试时候还是在高并发的场景中。都会涉及到Java的并发编程相关的知识。Java的并发编程有两个主要的基础知识,一个是线程安全另一个是线程间通信。摘要 1,线程概念 2,Java线程的实现方式 3,Java线程状态流转介绍 4,Thread类中的常用方法分析原创 2018-05-04 16:36:30 · 2478 阅读 · 1 评论 -
Java并发编程九 CountDownLatch、CyclicBarrier、Semaphore
Java并发编程九 CountDownLatch、CyclicBarrier、Semaphore1.CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。2.CyclicBarrierCyclicBarrier,让一组线程到达一个同步点后再一起继续运行,在其中任意一个线程未达到同步点,其他到达的线程均会被阻塞。3.Semaphore...原创 2018-05-17 17:37:36 · 238 阅读 · 0 评论 -
Servlet回顾总结
Servlet知识,Servlet详细,ServletConfig和ServletContext应用。监听,拦截器Servlet3.0新特性原创 2017-08-20 21:35:07 · 344 阅读 · 0 评论