自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 问答 (3)
  • 收藏
  • 关注

原创 JVM学习笔记

java内存区域java内存区域划分为:java堆、方法区(以及运行时常量池)、本地方法栈、虚拟机栈、程序计数器线程共享的区域是:java堆、方法区;线程隔离的是:本地方法栈、虚拟机栈、程序计数器。异常:程序计数器既不抛出StackOverFlow也不抛出OutOfMemoryError;java堆抛出OutOfMemory;本地方法栈和虚拟机栈两者都抛出;方法区抛出OutOfMemo

2018-01-02 20:15:36 178

原创 HashMap源码阅读笔记

39-45行 注释:主要介绍了HashMap和HashTable的区别,即HashMap允许null作为键、值,而且HashMap不是线程安全的。并且HashMap中的元素不是有序的,特别的,也不保证随着时间推移,这个map中存储的顺序不发生改变。解析:hashmap是线程不安全的,键、值都允许null的存在,map中的元素不保证有序,随着时间推移可能还会发生变化。47-54行 注

2017-12-23 23:34:07 316

原创 Arrays.sort源码分析

2017.11.30开始对JDK源码的阅读,在算法书上看到提及过这个,而且自己平时偷懒简单排一排的时候,也是使用这个方法进行排序,索性将它看上一看。/*** The minimum array length below which a parallel sorting* algorithm will not further partition the sorting task. U

2017-11-30 18:20:15 1520

原创 Hadoop启蒙demo——单词统计WordCount(Intellij IDEA版)

写在代码之前在网上搜了很多都说要打包jar,或者需要在环境变量中写入,比较繁琐。但是笔者写的这个代码也是能直接跑的,正常输出结果。主要是要有下面这行代码,会在控制台打印出运行结果并在完成后退出,这样看着比较直观一点。System.exit(job.waitForCompletion(true) ? 0 : 1);Mapper类import org.apache.hadoop....

2018-06-04 15:42:59 623

原创 Hadoop初窥学习笔记

Hadoop核心组件Hive功能:用于将SQL语句转化为可执行的Hadoop任务,降低了使用门槛Hbase类型:存储结构化数据的分布式数据库 区别:放弃传统关系型数据库事务的特性,追求更高的扩展。并且提供对数据的随机读写和实时的访问,实现对表数据的读写功能 Zookeeper功能:提供分布式一致性HDFS概念:Hadoop的文件系统,将所有文件以块的形式存储...

2018-05-30 18:25:27 203

原创 网络编程学习

BIO NIO AIOBIO(同步阻塞)Server端代码并启动Client端代码问题总结NIO(New I/O 或者称之为 Non-Block I/O)快捷键BIO NIO AIOBIO(同步阻塞)传统的网络编程模型中采用C/S模型,即客户端/服务端模型。这时候通常采用的是BIO(Blocking Input Output)即同步阻塞的。优...

2018-04-30 22:57:19 250

原创 Java并发编程学习笔记(一)

第一部分:基础知识第三章:对象的共享3.2  发布与溢出 发布的定义:使得对象能够在当前作用域之外的代码中使用。 发布的注意事项:(1)发布对象可能会破坏封装性 (2)难以维持不变性,在构造完成前发布对象则会破坏线程安全性(引用逃逸)  (3)发布是连锁的。即比如我发布了A对象,假设A对象中能够通过对非私有变量的引用到达B对象,那么B对象也会被发布。  (4)不要在构造方法中使

2018-02-07 20:28:41 177

原创 MySQL查询缓存

查询缓存优点:(1)对于某些频繁出现的查询语句,可以减少I/O。缺点:(1)查询缓存需要占用一定的内存。(2)每次查询执行前都要先检查缓存,故不一定是有利的。缓存未命中的原因:(1)查询不在缓存中 (2)缓存失效 (3) 查询中包含不确定的函数,比如current_date。因此如果查询希望使用缓存,就直接使用当时时间的字面量,比如‘2018-1-29’这种即可。缓存失效:(1)在In

2018-01-29 17:20:32 321

原创 常用设计模式学习

单例模式:这个肯定是用的最多的,分为两种:饿汉/懒汉(饱汉)式。这个模式通常用于针对那些创建非常消耗资源的类,在一个容器中就只创建一个作为全局变量,在Spring容器管理中默认就是采用的单例模式。下面简单介绍一下,饿汉式顾名思义,就是饥不择食了,不管有没有需要用这个对象的,先把它给创建好了再说;而懒汉呢,与之相反,只有在外部主动调用时,这个对象不存在的情况下才创建,如果已经有这个这个实例对象,

2018-01-16 20:51:57 186

原创 操作系统查漏补缺

进程的描述与控制进程的描述定义:程序+PCB(进程控制块)+数据集合,是系统资源分配的最小单位。目的:为了使程序并发执行,并能对其加以描述和控制。特征:动态性、并发性、独立性、异步性。三种基本状态:就绪态、运行态、阻塞态        进程的同步同步方式:临界区、互斥区、信号量、事件、管程临界区:在每个进程中访问临界资源的代码称为临界区;在进入临

2018-01-15 16:34:15 218

原创 计算机网络查漏补缺

这篇文章相对来说就是自己复习总结了,可能知识点就不是特别成体系,想到哪补哪吧。协议相关应用层协议HTTP/HTTPS协议:前者占用的80端口,后者是443端口;后者采用SSL(安全套接字层),以及加密算法/证书来保护安全性,相对来说在传输上花费的时间更长。SSL能用于所有基于TCP的应用上,因此二者都采用了TCP作为支撑。 SMTP协议:(1)端口号:25

2018-01-14 20:49:28 298

原创 java线程安全的实现方法总结学习

java语言中的线程安全将安全程度由强到弱排序:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立,共五种情况不可变:典型的就是String类,这个就不多赘言。还有枚举类,以及Number类的部分子类,如Long/Double/BigInteger等大数类型。绝对线程安全:不论运行时环境如何,调用者都不用采取额外的同步措施。相对线程安全:这是大家平常所提到的“线程安全”的级别,如集

2018-01-14 16:21:52 809

原创 ConcurrentHashMap源码阅读笔记(JUC)

76-85行 注释:这里主要讲的是同为线程安全的Hash,HashTable和ConcurrentHashMap的区别。ConcurrentHashMap(下文用本类指代)虽然是线程安全的,但是检索操作(比如get,是不保证加以锁的),并且本类没有任何操作用于锁住整个类实例的表。本类并不是以同步锁(synchronize)来保证线程安全的,而是它本身操作的性质(CAS无锁化同步)。87

2018-01-12 10:31:42 229

原创 JVM学习笔记(四)——类文件结构、字节码指令

Class类文件的结构Class文件格式:由无符号数和表组成。无符号数属于基本数据类型,以u1/u2/u4/u8代表1、2、4、8个字节的无符号数。这个数可以用来描述数字、索引引用,数量之或者UTF-8编码的字符串值表:和广义表的定义有点像,它的元素可以是多个无符号数或者是其他表。前四个字节为魔数(java是CAFEBABE 咖啡宝贝)、副版本号、主版本号。常量池接

2018-01-09 21:00:04 209

原创 MySQL学习笔记

零散知识点ACID:原子性、一致性、隔离性、持久性事务的隔离级别,四种:(1)未提交读(可能出现脏读);(2)提交读(可能出现不可重复读);(3)可重复读(可能出现幻读,但mysql的innodb通过mvcc解决了这个问题);(4)可串行化读(行行加锁,太重了,一般不用)索引篇索引主要分为B+树索引和Hash索引。索引的最左匹配原则:比如设定一个索引为(col1,col

2018-01-08 20:07:03 907

原创 JVM学习笔记(三)——虚拟机字节码执行引擎

运行时栈结构栈帧是虚拟机进行方法 调用和方法执行的数据结构。它是虚拟机栈的栈中元素。主要由以下四种信息:(1)局部变量表  (2)操作数栈  (3)动态链接  (4)方法返回地址栈帧的大小是在编译时就可以确定的,比如需要多大的局部变量表,操作数栈有多深等等。因此,一个栈帧需要分配多少内存,只受到虚拟机的具体实现影响。符合平时运行逻辑一样,只有栈顶的栈帧元素才有效果,这个被称为当前栈帧,与当

2018-01-07 20:40:35 220

原创 JVM学习笔记(二)——虚拟机类加载机制

类加载的时机类加载的生命周期:加载验证、准备、解析(统称为连接),其中解析过程不像其他过程那样按部就班,它可以在初始化阶段之后再开始,也就是动态分派的基础,动态绑定。初始化使用卸载什么时候开始类加载,共只有五种情况遇到new,getstatic,putstatic,invokestatic四条字节码指令时。从字面意义上我们就很好理解:(1)new 代表最

2018-01-06 15:45:13 235

原创 算法-字符串

字符串排序一、键索引计数法时间复杂度:线性时间,排序N个键为0-R-1需要11N+4R+1次。因为不是继续比较的排序。计数排序嘛,分配型的排序方法,以空间换时间。

2017-12-22 21:44:40 183

原创 JAVA基础API

1、StringsubString()方法返回的子字符串和原字符串的value[]数组一样,并且多了偏移量和字符串长度,这也是为什么substring()方法能够在常数时间完成的原因。接上,由于substring()返回的实际是原字符串,所以s==s.substring(0)---->true,因为两者引用相同,重载的方法包括从起始索引开始(如果指定结束索引,是[起始索引,结束索引)即

2017-12-22 20:45:16 238

原创 数据结构知识点总结

一、树1、树(森林)和二叉树可以相互转化,规则是“左孩子右兄弟”,即当前节点的左孩子在由二叉树转化为树的过程中,左孩子还是当前节点的左孩子,而右节点会变成当前节点的兄弟。2、设二叉树度为0的节点有N0个,度为2的节点为N2,则N2=N0+1二、图1、无向图的数据结构是邻接多重表,有向图的数据结构是十字链表。二者都可以使用邻接表2、使得图从偏序到全序的遍历序列即拓扑排序,拓扑排序

2017-12-20 17:25:01 968

转载 JAVA的位运算符<<

作者:傻傻傻傻链接:https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8来源:牛客网在java中,对于1

2017-12-14 11:45:00 210

原创 数据结构-图的分析

1、有向图的强连通分量的计算:Kosaraju算法时间复杂度:O(V+E),对于有向图的强连通性查询可以在常数时间内完成。步骤:1、对图G进行转置(反向图)得到图Gr   2、对Gr求得逆反序,即Gr的拓扑序列   3、从Gr的拓扑序列开始,进行深度优先搜索,得到的搜索树即强联通分量。说实话,这个算法从代码量上是非常简洁的,仅仅就是从遍历所有节点(0,1....v)变成了按照拓

2017-12-13 21:00:09 248

原创 JAVA语言特性笔记

1、JAVA支持的多态性质主要是为两种:静态多分派和动态单分派。静态多分派在JAVA中的表现形式即:重载。主要由静态方法和私有方法构成(还有实例构造方法、父类方法)。他们的引用在类加载之初就已经被确定了。一个是类级别的,一个是私有方法,private访问限定了它不能被子类访问并覆写。动态单分派的表现形式为:覆写(Override)两者的主要区别在于一个是编译期绑定,

2017-12-12 23:44:55 219

原创 二叉树遍历

二叉树遍历分为:深度优先遍历和广度优先遍历,在课堂上主要提及到的先序遍历,中序遍历和后序遍历属于深度优先遍历,广度优先遍历的主要实现是层级遍历。二叉树本身属于图的一种,定义为连通的无环图,刚开始学习《算法4》这本书的时候还一直在翻目录,怎么没有提到重要的二叉树先序遍历,中序遍历和后序遍历呢?后来才拍拍脑门觉得自己太蠢了,写的深度优先和广度优先不就是为图设计的么,二叉树又本身就是图的一种。二

2017-12-09 23:31:36 151

空空如也

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

TA关注的人

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