深入理解JDK中的I/O

目 录

java内存模型
GC
HTTP协议
事务隔离级
并发多线程
设计模式
清楚redis、memcache并且知道区别
mysql分表分库
有接口幂等性了解
jdk8稍微了解一下特性

jvm内存模型:堆和非堆,http://www.cnblogs.com/RunForLove/p/4775999.html  对这部分的理解,只集中在关乎我们编程的东西部分。

  堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的。堆、非堆:虚拟机栈、本地方法栈、程序计数器、方法区、运行时常量池(存储编译期生成的各种字面量和符号引用)。

GC:是针对堆概念来的。1.堆内存具体点儿,又是这么来划分的?2.垃圾回收的算法大概是怎么样的?针对循环引用,有可达性分析算法。

http://www.importnew.com/14630.html

http://www.cnblogs.com/dolphin0520/p/3783345.html

三次握手:建立TCP需要三次握手才能建立,而断开连接则需要四次握手。

HTTP协议:

http协议基本流程:

1.打开HTTP连接。一定要记住HTTP是一种无状态协议。正因为如此,对于每一个请求你都要建立一个新的连接。
2.初始化方法请求。这里面将包含一些类型的方法指示符用来描述调用什么方法和方法所需要的参数。
3.设置HTTP请求头。这里面包含要传送的数据类型(二进制)和数据的总长。
4.发送请求。将二进制流写到服务器。
5.读取请求。目标servlet程序将被调用并接受HTTP请求数据。servlet程序就调用所有必要的参数选择相应的方法。注意,如果这是这个客户端的第一次请求,一个服务器对象的新的实例就会被创建。
6.调用方法。方法将会被服务器端的对象调用。
7.初始化方法响应。如果调用的方法抛出一个异常,客户将接收到出错信息。否则,返回的类型(如果有)将会被发送。
8.设置HTTP响应头。在响应头中,一定会设置待发送数据的类型和长度。
9.发送响应。二进制数据流将从Web服务器发送并返回给客户端。
10.关闭连接。

事务隔离级别,spring事务的传播机制: http://www.cnblogs.com/RunForLove/p/4641672.html

数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。

http://blog.csdn.net/fg2006/article/details/6937413  注意:我们讨论隔离级别的场景,主要是在多个事务并发的情况下,因此,接下来的讲解都围绕事务并发。

http://blog.csdn.net/ocean1010/article/details/6548771

http://blog.chinaunix.net/uid-24111901-id-2627894.html

读未提交  读提交   重复读  序列化

jdk 8 新特性:

1. 使用default关键字,给接口添加一个方法实现,则子类不需要实现。

只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:http://www.tuicool.com/articles/6ZRJFv

设计模式,

数据库中锁:http://www.2cto.com/database/201210/161159.html 使用for update来控制悲观锁。http://www.codesec.net/view/175881.html 悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。乐观锁机制避免了长事务中的数据库加锁开销(两个用户操作过程中,都没有对数据库数据加锁),大大提升了大并发量下的系统整体性能表现。

分库分表注意的问题,避免跨库事务。避免数据库中的数据依赖另一数据库中的数据。

清楚redis和memcache,并知道区别:

http://blog.163.com/sun_jian_zhang/blog/static/187804041201310795917333/

工厂模式和代理模式。

简单工厂模式和抽象工厂模式。

静态代理模式和动态代理模式。http://layznet.iteye.com/blog/1182924

深入理解JDK中的I/O的更多相关文章

  1. 深入理解JDK中的Reference原理和源码实现

    前提 这篇文章主要基于JDK11的源码和最近翻看的<深入理解Java虚拟机-2nd>一书的部分内容,对JDK11中的Reference(引用)做一些总结.值得注意的是,通过笔者对比一下JD ...

  2. 冷饭新炒:理解JDK中UUID的底层实现

    前提 UUID是Universally Unique IDentifier的缩写,翻译为通用唯一标识符或者全局唯一标识符.对于UUID的描述,下面摘录一下规范文件A Universally Uniqu ...

  3. 冷饭新炒:理解Redisson中分布式锁的实现

    前提 在很早很早之前,写过一篇文章介绍过Redis中的red lock的实现,但是在生产环境中,笔者所负责的项目使用的分布式锁组件一直是Redisson.Redisson是具备多种内存数据网格特性的基 ...

  4. JDK学习---深入理解java中的HashMap、HashSet底层实现

    本文参考资料: 1.<大话数据结构> 2.http://www.cnblogs.com/dassmeta/p/5338955.html 3.http://www.cnblogs.com/d ...

  5. JDK学习---深入理解java中的LinkedList

    本文参考资料: 1.<大话数据结构> 2.http://blog.csdn.net/jzhf2012/article/details/8540543 3.http://blog.csdn. ...

  6. JDK学习---深入理解java中的String

    本文参考资料: 1.<深入理解jvm虚拟机> 2.<大话数据结构>.<大话设计模式> 3.http://www.cnblogs.com/ITtangtang/p/3 ...

  7. 【搞定面试官】谈谈你对JDK中Executor的理解?

    ## 前言 随着当今处理器计算能力愈发强大,可用的核心数量越来越多,各个应用对其实现更高吞吐量的需求的不断增长,多线程 API 变得非常流行.在此背景下,Java自JDK1.5 提供了自己的多线程框架 ...

  8. JDK 中的证书生成和管理工具 keytool

    参考资料 该文中的内容来源于 Oracle 的官方文档 Java SE Tools Reference .Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以直接找 ...

  9. 理解Java中的final和static关键字

    回顾这两个关键字前,先考虑一个问题: Static变量存储在JVM中的位置,或者说static变量是如何被加载的? JVM会把类的静态方法和静态变量在类加载的过程中读入方法区(Method Area) ...

随机推荐

  1. .NET core for docker

    本文描述下 .net core 在 docker 里面的玩法 首先按照官方文档先 拉取镜像 docker pull microsoft/dotnet:latest 然后就有了 dotnet 这个运行时 ...

  2. pl/sql里的exists和in的差别

    项目中有个需要需要如下pl/sql(数据库是MariaDB) ) AS small FROM cmp_ent_main a WHERE createTime<'2016-9-21' ,,) ) ...

  3. web应用中使用JavaMail发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...

  4. 我也来说说DDD~大话目录

    回到占占推荐博客索引 DDD之前没有接触过,但一但有了接触就一发不可收拾,他会带去进入一个全新的世界! DDD不是新技术,而是新思想,新模式,是软件开发领域的一次突破,它更接近于业务,对于业务的改动它 ...

  5. iOS------苹果设备处理器指令集(iPhone初代到iPhone5s)

    (via 雅香小筑) Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色. Armv6.armv7.armv7 ...

  6. SQL Server数据库sql语句生成器(SqlDataToScript)的使用(sql server自增列(id)插入固定值)

    SqlDataToScript是根据表数据进行生成 Insert Into语句,此工具还有一个好处是可以对自增列插入固定值,例如:自增的列id值为5,但是5这个行值已经删除,如果想存储Id自增列值为5 ...

  7. myeclipse转到函数定义的方法去

    转到函数的定义CTRl+鼠标左击 myeclipse自动补全的快捷键 alt+/

  8. iOS开发之集成iOS9中的Core Spotlight Framework搜索App的内容

    Spotlight在iOS9上做了一些新的改进, 也就是开放了一些新的API, 通过Core Spotlight Framework你可以在你的app中集成Spotlight.集成Spotlight的 ...

  9. Spring 4 + Reactor Integration Example--转

    原文地址:http://www.concretepage.com/spring-4/spring-4-reactor-integration-example Reactor is a framewor ...

  10. 設置Linux保留物理內存並使用 (1)

    在Linux系統中可以通過memblock來設置系統保留物理內存,防止這些內存被內存管理系統分配出去. 作者: 彭東林 郵箱: pengdonglin137@163.com 平臺 硬件平臺: TQ24 ...