自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嘿嘿嘿的博客

学习笔记分享

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

原创 一文弄懂关于证书的一切,ssl协议,android包签名机制。

所有的概念都基于一个非常重要的基础:rsa 非对称加密算法 : 1. 在加解密上,两个秘钥是对等的 任何一个可以加密,另一个可以用来解密。 2. 用openssl创建一个秘钥,然后可用该秘钥可以生成另一个秘钥。 但是反过来不可以。所以创建的秘钥叫私钥,而根据私钥生成的秘钥叫公钥。 3. 一个私钥只能对应一个公钥。先感受下几个概念 PKI。 PKI是公钥基础设施(Public...

2018-03-25 16:21:47 2118 2

原创 java软件架构浅析

从rpc 说起:rpc 远程过程调用。 是建立在socket之上的一种多进程间的通信机制。 他要实现的目的是以调用本地代码的方式来调用远程代码。 所以它需要一个 stub透明代理的过程。实现 rpc 的框架:最早是sun rpc 。 透明代理 stub模块 对消息的封装,序列化 反序列化技术。rmi 。使用java的默认序列化机制和动态代理技术。 后来的soap。 消息主题基于xml。由于soap...

2018-03-19 15:58:59 1393

原创 浅析轻量级锁

从轻量级锁 来看锁机制。(目前 上的唯一一张图。= =。 因为有些东西没有图的话 是很难理清楚的 - - )对象是否被某个线程的锁定的依据是, 对象头中记录的信息。 mark word 也叫对象标志词。对象头的信息内容是变化的,变化后是根据不同的锁标志位来描述对应的信息。比如当对象头未锁定时候 存储的是对象哈希码和分代年龄。锁标志位为01 。而锁被占用时候存储的指向锁记录的指针以及锁标志位。syn...

2018-03-19 15:51:30 1828

原创 java线程同步

当谈起多线程的时候 都关注什么多线程同步同步一词的含义就是 协同步调,按预定的先后次序进行运行 ,本来多线程是并发的,但是得按照一定规则 来执行。所谓的线程切换/互斥控制/线程同步 差不多都是一个意思。关于互斥同步一词,同步是按照一定规则来执行,是目的。互斥是实现同步的一种手段。所以同步机制的目的是多线程访问共享数据或执行同一代码块的时候,多个线程只能串行的进入。。以保证程序的正确性。实现互斥同步...

2018-03-19 15:24:51 199

原创 对象序列化机制

高性能rpc 的关键技术之一 就是高效的对象序列化机制。传统java的序列化机制。有两个问题。数据量大,传输效率低。 其他语言无法识别。json 序列化存在占用空间大。性能低下。是因为有很多结构化的东西,各种符号。 但是可读性强。高效的二进制编码协议:开源的二进制序列化框架 messagepack 。 把数据分为定长和变长两个部分。定长就是表明数据类型和对应的值。变长多了一个个长度属性。表明数据的...

2018-03-19 14:42:37 297

原创 netty的简单使用指南(含对nio的对比)

数据结构1:BOSS线程池:EventLoopGroup bossLoopGroup = new NioEventLoopGroup(1);BOSS线程池中有一条线程工作,就是发现新的连接。 所以一个线程就够了。Netty是支持同时监听多个端口的,所以BOSS线程池的大小按照需要监听的服务器端口数量进行设置就行了。 一般是1工作线程池:EventLoopGroup workLoogGroup = ...

2018-03-19 14:26:42 382

原创 java基于nio、aio socket的简单流程(总结性质)

基于nio socket的简单流程:可以把nio api设计认为 都是通过注册事件和channel: 并轮询检测事件来触发后续操作的。先把服务器通道serverChannel的 OP_ACCEPT 事件注册到选择器selector上 。 每个客户端 连接 都会使该事件就绪。就创建一个 socketChannel  来接受(accept)连接。创建socketChannel通道后,在将自身和其读或写...

2018-03-19 14:22:24 521

原创 浅析io模型

两个名词解释:阻塞和非阻塞。同步和异步阻塞和非阻塞用来形容调用者线程当前的状态。同步和异步   描述的是 消息通信模型。 等待返回结果,还是基于事件返回结果。同步或者阻塞 io 会同步调用会导致请求进程的阻塞。非阻塞或 异步io 不导致请求进程的阻塞。 这就是两者的关系。几种io模型。阻塞io 和 io多路复用都是阻塞式的io 但后者基于轮询socket。对于一个套接字上的读操作:分两个阶段:re...

2018-03-19 14:14:53 142

原创 浅析volatile

关于 volatile  我这里要好好总结一下。volatile关键字 对一个变量修饰,起到了两个作用,立即可见和禁止指令重排序。本质上 都是在该变量被赋值后  多了一条指令 lock addl $0x0,(%esp)  这个指令起了两个作用。首先说立刻可见:一个是带lock前缀的addl汇编指令,作用是本cpu的cache 立刻写入主内存(这里是把当前修改变量的虚拟机栈的内存模型认为是cpu寄存...

2018-03-19 14:04:20 156

原创 浅析socket

socket:socket是基于tcpip协议的网络通信模型。socket在各种编程语言中,socket数据结构提供socket操作的通用接口,而socket的执行细节是操作系统内核来做的。socket系统调用: 创建一个socket,经过vfs文件系统执行流程 最终生成file、socket结构体等为实现套接字功能所需的一整套数据结构 。然后把socket结构体“映射”到一个已打开的文件(fil...

2018-03-19 12:42:46 278

原创 jvm字节码执行引擎

字节码执行引擎。    包含三部分:字节码解释器 pc计数器 虚拟机栈 (栈帧结构 包括局部变量表 操作数栈 动态连接 返回地址。)       pc计数器: pc计数器是通过字节码解释器根据代码逻辑 来选取下一条指令,并交给 pc计数器。可以理解就是解释器决定用来执行某个指令的 指令地址 。。 在一个方法内, 程序计...

2018-03-18 23:50:45 214

原创 java类加载器总结

类加载机制的加载阶段,是通过类加载器来加载的。类加载器的模型。 双亲委派, 就是你要加载一个类的,首先会委派给父类的类加载器,看看这个类有没有加载。 不同的类加载器,实现加载不同位置的类。当一个 JVM 启动的时候,Java 缺省开始使用如下三种类型类装入器: 启动(Bootstrap)类加载器: /lib 下面的类库加载到内存中 标准扩展(Extension)类加载器 它负责...

2018-03-18 23:42:00 221

原创 java虚拟机垃圾回收机制

前置知识:之前在对象的内存布局中,提到对象头 mark word有个分代年龄。下面总结一下垃圾收集算法。哪些内存需要回收:垃圾收集主要是针对堆内存区域中的对象的垃圾收集,因为程序计数器 虚拟机栈 本地方法栈3个区域的声明周期是依赖线程的。方法或者线程结束,内存就自然回收了。方法区(永久代)也可能会回收但是条件会很苛刻。但是大量使用反射 动态代理以及相关框架,osgi这种大量定义classloade...

2018-03-18 23:09:25 148

原创 java对象的创建和内存布局

对象的创建:对象的创建的基础就是类的加载过程。1 首先检查 new指令的参数是否能在常量池中定位到一个类的符号引用,以及检查类是否被加载 解析 初始化过,否则必须先执行类的加载过程。2 为对象分配内存,有指针碰撞和空闲列表两种方式,具体也跟垃圾收集算法的实现有关。3 对象的数据区域各字段初始化为0值。4 初始化对象头。5 执行init方法进行初始。对象的内存区域:对象头,实例数据,对齐填充。对象头...

2018-03-18 23:07:13 167

原创 jvm类加载和解析过程(总结性质)

类加载机制的定义:把class文件加载到内存,对数据进行校验解析和初始化最终形成虚拟机直接使用的java类型。具体来说:1 通过一个类的全限定名来获取定义此类的二进制字节流。2 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构(jdk7 中就是基于InstanceKlass类的描述链)3 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入...

2018-03-18 22:47:30 3978 2

原创 jvm内存模型(总结性质)

jvm内存模型。  设计目的: 屏蔽掉硬件和操作系统的内存访问差异。以达到java程序在各种平台下达到一致的访问效果。这个c/c++ 不同,后者是直接使用物理硬件和操作系统的内存模型。设计原则:围绕着并发过程总如何处理原子性 可见性 有效性这三个特征来建立。具体的目标就是定义程序中变量的访问规则,即在虚拟机将变量存储到内存和从内存中取出变量的底层细节。所以内存模型本质上 是对特定内存和高速缓存 进...

2018-03-18 21:30:13 412

空空如也

空空如也

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

TA关注的人

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