自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chielong's csdn

a studying monkey

  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 写写Mybatis

今天写一下Mybatis直接上代码,框架完成后放解释的图public class MySqlsession { private Excutor excutor = new MyExcutor(); private MyConfiguration myConfiguration = new MyConfiguration(); public <T>...

2018-08-10 17:25:55 253

原创 说说Http原理

注:1.请直接看六。2.一切从Http设计角度考虑。 一.Http请求过程:1.用户浏览器发送域名向DNS服务发送一个域名,请求其ip地址。2.DNS找到ip并返回给用户浏览器。3.用户浏览器向服务端浏览器发送请求。(地址、端口号、请求、参数等等)4.服务端向用户浏览器返回响应。二.Http特点http不面向链接,无状态(但我们可以用session+cookie来实...

2018-08-08 19:52:14 351

原创 谈谈Mysql索引

1.什么是索引和索引的特点索引是一种数据结构,能够提高数据的检索速度。索引也存储在硬盘上。索引特点:排好序,快速查找,数据结构2.Memory存储引擎——Hash索引 Memory存储引擎,内存数据表存储引擎。重启mysql之后丢失。特点:查找高效,理论上只查找一次。缺点:地址冲突。如果地址冲突比较多的话,索引的维护就比较麻烦,代价很高。局限:a.hash索...

2018-08-07 11:32:23 232

原创 手写Tomcat:NIO实现方式

 import java.io.IOException;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector...

2018-08-05 21:47:28 1184

原创 JVM:线程安全与锁优化

本文参考周志明老师的《深入理解Java虚拟机》一.Java语言中的线程安全1将java语言中各种操作各种操作共享的数据分为:a.不可变:一定是线程安全的。final修饰。b.绝对线程安全:调用时不需要额外控制即可完成同步。c.相对线程安全:需要额外控制手段。d.线程兼容:使用同步手段保证对象并发下安全使用。e.线程对立:就算用了同步措施也没ruan用。2.线程安全实...

2018-08-04 12:20:13 432

原创 JVM:JMM与线程

本文参考周志明老师的《深入理解Java虚拟机》一.硬件的效率与一致性二.JMM1.主内存和工作空间JMM主要是定义程序中各个变量访问规则。所有变量都存储在主内存。每条线程还有自己的工作内容。线程工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。不同线程之间也无法直接访问对方工作内存中的变量,线...

2018-08-04 11:41:17 327

原创 JVM::晚期(运行期)优化

本文参考周志明老师的《深入理解Java虚拟机》一.HotSpot即时编译器1.解释器和编译器快启动——解释器快执行——编译器分层编译:第0层:解释执行。第1层:将字节码编译为本地代码。(更快的速度)第2层:基于第一层的优化。(更高的质量)2.编译对象和触发条件3.编译过程二.编译优化技术1.基本套路第一步:方法内联。第二步:冗...

2018-08-04 10:27:18 281

原创 JVM::早期(编译期)优化

本文参考周志明老师的《深入理解Java虚拟机》一.Javac编译器1.解析与填充符号表a.解析:parseFiles();词法分析将源代码的字符流转化为标记(Token)集合。语法分析根据Token序列构造抽象语法树。b.填充符号表:enterTress();符号表是K—V键值对的形式。2.注解处理器如果注解处理器在处理注解的时候对语法树进行了修改,编译器将...

2018-08-04 02:41:17 373 1

原创 JVM:虚拟机类加载机制

本文参考周志明老师的《深入理解Java虚拟机》一.类加载的时机加载不一定发生在什么时候,但是遇到这种情况下必须马上对类进行初始化(当然加载验证等工作要在此之前已经完成):a.new、putstatic、getstatic、invokestatic。如果类还没有初始化就要先初始化。b.反射。c.对一个类初始化时,其父类没有被初始化,先初始化父类。d.虚拟机启动时。需要加载...

2018-08-03 18:16:00 213

原创 JVM:垃圾收集器和内存分配策略

本文参考周志明老师的《深入理解Java虚拟机》一.对象已死?1.引用计数法给对象添加一个引用计数器,每当有一个地方引用他时,计数器值加一,引用失效减一。为0时不可再被使用。2.可达性算法GCRoot选择:①虚拟机栈帧中引用的对象②方法区类静态属性应用对象③方法区常量引用对象④本地方法栈中引用对象。3.生存?还是死亡?可达性分析不可达,JVM会给对象做标记。如果fin...

2018-08-03 16:31:55 168

原创 JVM:自动内存管理机制

本文参考周志明老师的《深入理解Java虚拟机》一.运行时数据区1.虚拟机栈、本地方法栈、程序计数器是线程私有的。堆和方法区是线程公有的。2.PC:可以看作是当前线程所执行的字节码的行号指示器。3.Java虚拟机栈:线程私有。 内部是栈帧(包括:局部变量表,操作数栈,动态连接,方法出口等信息)。每一个方法从执行直至完成的过程,都对应着一个栈帧在虚拟机栈中入栈到出栈的过程。4....

2018-08-03 15:28:43 229

原创 纯Java——简易高并发框架

0.源代码github-简易高并发框架注:本篇博客知识来自于网课。1.问题来源以及w对于一个题库系统。考试组要有批量的离线文档要生成。题库组批量的题目要进行排重,且要根据条件批量修改题目内容。对于痛点:批量任务完成缓慢 所有的问题都围绕着“查询”,即查询进度影响总体性能 我们希望尽量使用友好(如果用多线程来提高性能,我们希望能屏蔽细节)因此我们需要一个可以提供查询进度...

2018-08-03 01:36:55 3382

原创 慕课网项目:Python开发简单爬虫学习笔记

课程链接Python开发简单爬虫 0.必要说明我的java版本1.8,python版本3.6,eclipse版本4.5,BeautfilSoup版本4。视频中用到的python版本2.7。有几个坑需要注意:python3.6不支持urllib2。而是换位:urllib。 百度百科页面模式变了,所以我们爬的话需要改变策略。1.爬虫简介 爬虫:一段自动抓取互联网信息的...

2018-08-02 18:52:37 373

原创 慕课网项目:Java高并发秒杀API的学习笔记(三)Web层分析

课程链接:Java高并发秒杀API之web层CSDN参考:Java高并发秒杀API(三)之Web层 0.说明本篇文章根据我自己的编程理解,结合参考的博客对该项目Web层进行分析与补充。1.Restful接口他兴起于Rails。是一种优雅的URI表述方式。表示资源的状态的状态的转移。2.幂等性多次操作j结果就像一次操作结果一样,这就是幂等的。否则非幂等。3.URL...

2018-08-02 01:42:22 529

原创 慕课网项目:Java高并发秒杀API的学习笔记(二)Service层分析

课程链接:Java高并发秒杀API之Service层CSDN参考:Java高并发秒杀API(二)之Service层 0.说明本篇文章根据我自己的编程理解,结合参考的博客对该项目Service层进行分析与补充。1.新加入的包说明dto:数据传输层,用于Web层和Service层之间传递的数据封装。exception:service层中会出现的异常。service:针对...

2018-08-01 23:10:16 280

原创 慕课网项目:Java高并发秒杀API的学习笔记(一)总述及DAO层分析

课程链接:Java高并发秒杀API之业务分析与DAO层CSDN参考:CSDN参考:Java高并发秒杀API(一)之业务分析与DAO层 笔者这几天忙着做项目,朋友推荐我去看这个慕课网的Java高并发秒杀API视频。看完之后真的是感觉干货满满且自己能力不足。本篇文章根据我自己的编程理解,结合参考的博客对该项目DAO层进行分析与补充。(中间笔记本突然死机,再次登录一看竟然什么都没有了。...

2018-08-01 19:17:11 1009

原创 《自己动手写Java虚拟机》学习笔记(十)异常处理及结束

第十章 异常处理10.1 异常概述java中,异常可分为:Checked异常和Uncheecked异常。Unchecked异常包括java.lang.RuntimeException、java.lang.Error及他们的子类。其他的异常都是Checked异常。所有的异常都要继承自java.lang.Throwable。如果一个方法有可能导致Checked异常抛出,则该方法要么需要...

2018-08-01 13:04:49 297

原创 《自己动手写Java虚拟机》学习笔记(九)本地方法调用

第九章 本地方法调用想要运行Java程序,出了Java虚拟机外,还需要Java类库的配合。Java虚拟机和Java类库一起构成了Java运行环境。Java类库主要用Java语言编写,一些无法用Java语言实现的方法则使用本地语言编写,这些方法叫做本地方法。9.1注册和查找本地方法在开始实现本地方法之前,需要先实现一个本地方法注册表,用来注册和查找本地方法。把本地方法定义成为一个函数...

2018-08-01 11:44:32 617

原创 《自己动手写Java虚拟机》学习笔记(八)数组和字符串

第八章 数组和字符串8.1数组概述如果数组元素是基本类型,就称之为基本类型数组,否则,如果数组元素是引用类型,就称之为引用类型数组。基本类型数组肯定都是一维数组,如果引用类型数组元素也是数组,那么它就是多维数组。在jvm中,数组类和普通的类是不同的。首先,普通的类从class问价加载,但是数组类由jvm在运行时生成。数组类名是左方括号+数组的类型描述符;数组的类型描述符就是类名本身。比...

2018-08-01 10:00:37 232

原创 线程池意义、原理解析及简单实现

〇.前言本文适用于线程或线程池小白。本文知识来自于网课。一.为什么要使用线程池a.用多线程的目的是什么?充分利用CPU,并发做多件事。b.单核cpu适不适合用多线程?适合,如果是单线程,线程中需要等待IO时,此时CPU就空闲出来了。c.线程什么时候会让出cpu?   ...

2018-07-31 23:43:19 1278

原创 《自己动手写Java虚拟机》学习笔记(七)方法调用和返回

第七章 方法调用和返回本章将实现方法调用和返回。还会讨论类和对象的初始化。7.1 方法调用概述从调用的角度来看,方法可以分为两类,静态方法(或类方法)和实例方法。静态方法通过类来调用,实例方法则通过对象引用来调用。静态方法是静态绑定的,也就是说,最终调用的是哪个方法在编译期就已经确定;而实例方法支持动态绑定,最终要调用哪个方法需要到了运行期才知道。从实现角度,可以分为:抽象方法,J...

2018-07-31 19:38:23 393

原创 《自己动手写Java虚拟机》学习笔记(六)类和对象

第六章 类和对象本章实现线程共享的运行时数据区,包括方法区和运行时常量池。并且根据第三章对.class文件的解析,继续优化转换以放入方法区以供后续使用。本章还有讨论类和对象的设计、实现一个简单类加载器、实现类和对象的部分指令(对第五章进行扩充)。6.1 方法区方法区主要从class文件获取类的信息。此外,类变量也存放在方法区里。到jvm第一次使用这个类的时候,它会搜索类路径,找到对...

2018-07-31 16:10:41 401

原创 《自己动手写Java虚拟机》学习笔记(五)指令集和解释器

第五章 指令集和解释器本章基于第三章(解析.class文件)和第四章(运行时数据区),编写一个建议的解释器。5.1 字节码和指令集每一个类或者接口都可以被Java编译器编译成为一个.class文件,类或接口的方法信息就放在.class文件的method_info结构中。如果方法不是抽象的,也不是本地方法,方法的Java代码就会被编译器便已成为字节码(即使是空的,也有回一条return语...

2018-07-31 14:55:38 747

原创 《自己动手写Java虚拟机》学习笔记(四)运行时数据池

第四章 运行时数据池本章来初步实现运行时数据区。4.1 运行时数据区概述运行时数据区可以分为两类:多线程共享,线程私有。多线程共享的运行时数据区需要在java虚拟机启动时创建好,在jvm退出时销毁;线程私有的则随线程生而生,随线程亡而亡。多线程共享的内存区域存放两类数据:类数据和类实例(即:对象)。类数据是放在Method Area中的,对象数据是放在Heap中的。堆由垃圾收集器定...

2018-07-31 01:57:28 444

原创 《自己动手写Java虚拟机》学习笔记(三)解析.class文件

第三章 解析.class文件本章与.class文件结构息息相关。笔者将以书中顺序解释jvm思想。3.1 .class文件.class文件是类(或接口)信息的载体,每一个.class文件都完整定义了一个类。虽然jvm规范对从哪里加载class文件给与足够的自由,但是却对.class文件的结构给了严格定义。可以把.class文件当作字节流,但是很不方便,所以将其取出设置成byte[]数...

2018-07-31 00:32:56 280

原创 Tomcat性能优化

0.前言        本文基于tomcat7,用非安装版本。        请读Tomcat7.0Documentation Configuration1.tomcat的优化目的        不改变硬件条件下,优化tomcat内部的参数模式等手段来提高网站并发能力。2.tomcat管理账户优化        conf\tomcat-user.xml当中            被...

2018-07-30 22:20:47 194

原创 《自己动手写Java虚拟机》学习笔记(二)搜索class文件

第二章 搜索class文件在加载类前,需要加载它的父类。本章主要讲述的是对于一个java类对应的class文件搜索。2.1类路径1.这里涉及到jvm的类路径有三种:①.bootstrap classpath从jre\lib加载②.extension classpath从jre\lib\ext加载③.application classpath从三方类库加载有没有想起jvm...

2018-07-30 18:14:01 408

原创 《自己动手写Java虚拟机》学习笔记(一)命令行工具

作者代码github传送笔者语:在2017年11月份,有幸读到了张秀宏老师的《自己动手写Java虚拟机》。正巧看完了周志明老师的《深入理解java虚拟机》,所以决定自己动手实现一个。随着张老师的代码不断深入,自己写到第六章(类和对象)的时候卡住了(挂在了莫名奇妙的bug上)。这几天才腾出了时间,打算整理一下学习笔记并继续完成这个简单jvm。全书一共十一章。分别为第一章:命令行工具...

2018-07-30 17:26:04 1146

原创 多线程-并发:介绍Phaser

接上一篇。多线程-并发:介绍CyclicBarrier我们继续聊《天龙八部》四大恶人。大家都知道,叶二娘是虚竹的娘,少室山一战玄慈方丈和叶二娘都领了便当。从此四大恶人就剩了三个。大家也都知道,小说接近尾声,段誉身份解开前后,岳老三被段延庆捅了个透心凉领了便当;云中鹤因为中了悲酥清风,被前来救援的大理臣子收了人头。从此四大恶人就剩了一个。当我们纵观整个四大恶人(四个线程),发现他们:...

2018-07-30 16:10:12 331

原创 多线程-并发:介绍CyclicBarrier

承接上一篇。多线程-并发:介绍CountDownLatch 本文依然以《天龙八部》四大恶人举例。纵览整本小说,四大恶人为了准备杀段正淳集结在大理,为了歼灭丐帮集结在杏子林,为了少室山大战集结在少室山....我们发现,四大恶人仅仅一次集合是不够的!也就是说,这“四个线程”仅仅并发协作一次不够的!但是CountDownLatch却是一次性的并发工具。由此,CyclicBarrier有了...

2018-07-30 14:53:13 284

原创 多线程-并发:介绍CountDownLatch

----------------------------------------------------笔者才疏学浅,如有错误,请各位大佬指正------------------------------------------------------------注:本文是笔者在网络公开课学习到,总结而成的。这篇博客主要为大家介绍CountDownLatch、CyclicBarrier...

2018-07-30 13:59:30 195

junit-4.12

csdn最少也得要3分下载。这是链接大家就不要破费了:https://github.com/junit-team/junit4/releases

2018-07-02

空空如也

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

TA关注的人

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