• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






菜鸟想长大

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

04 2017 档案

 
JVM知识点总览
摘要:jvm 总体梳理 jvm体系总体分四大块: 类的加载机制 jvm内存结构 GC算法 垃圾回收 GC分析 命令调优 当然这些知识点在之前的文章中都有详细的介绍,这里只做主干的梳理 这里画了一个思维导图,将所有的知识点进行了陈列,因为图比较大可以点击右键下载了放大查看。 类的加载机制 主要关注点: 什么 阅读全文
posted @ 2017-04-25 16:48 菜鸟想长大 阅读(156) 评论(0) 推荐(0)
细数JDK里的设计模式
摘要:这也是篇老文了,相信很多人也看过。前面那些废话就不翻译了,直接切入正题吧~ 结构型模式: 用来把一个接口转化成另一个接口。 java.util.Arrays#asList() javax.swing.JTable(TableModel) java.io.InputStreamReader(Input 阅读全文
posted @ 2017-04-25 16:44 菜鸟想长大 阅读(178) 评论(0) 推荐(0)
两个栈实现队列 两个队列实现栈
摘要:为说明思想,假设队列、栈都很大,不会出现满的情况。 1. 两个栈实现队列 实现一 思路 s1是入栈的,s2是出栈的。 入队列,直接压到s1是就行了 出队列,先把s1中的元素全部出栈压入到s2中,弹出s2中的栈顶元素;再把s2的所有元素全部压回s1中 实现二 思路 s1是入栈的,s2是出栈的。保证所有 阅读全文
posted @ 2017-04-25 16:38 菜鸟想长大 阅读(515) 评论(0) 推荐(0)
单点登录原理与简单实现
摘要:一、单系统登录机制 1、http无状态协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系 但这也同时意味着,任何用户都能通过浏览器访 阅读全文
posted @ 2017-04-25 15:38 菜鸟想长大 阅读(179) 评论(0) 推荐(0)
Java并发之AQS详解
摘要:一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronized(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLo 阅读全文
posted @ 2017-04-25 15:37 菜鸟想长大 阅读(798) 评论(0) 推荐(0)
Java更新
摘要:Java I/O 总结 JVM(8):JVM知识点总览-高级Java工程师面试必备 细数JDK里的设计模式 Java中创建对象的5种不同方法 关于Java Collections的几个常见问题 类在什么时候加载和初始化 两个栈实现队列 两个队列实现栈 ###更新于2017/3/12 java col 阅读全文
posted @ 2017-04-25 15:33 菜鸟想长大 阅读(177) 评论(0) 推荐(0)
各种java面经资源
摘要:面试的角度诠释Java工程师(一) 面试的角度诠释Java工程师(二) Java面试参考指南(一) Java面试参考指南(二) 阿里面试回来,想和Java程序员谈一谈 面试心得与总结—BAT、网易、蘑菇街 2017年小米春招内推面试面经 历年阿里面试题汇总(2017年不断更新中) 最近5年133个J 阅读全文
posted @ 2017-04-25 15:30 菜鸟想长大 阅读(201) 评论(0) 推荐(0)
HashMap与HashTable的区别
摘要:HashMap与HashTable的区别: 1、HashMap是非线程安全的,HashTable是线程安全的。 2、HashMap的键和值都允许有null值存在,而HashTable则不行。 3、因为线程安全的问题,HashMap效率比HashTable的要高。 HashMap的实现机制: Hash 阅读全文
posted @ 2017-04-25 15:12 菜鸟想长大 阅读(136) 评论(0) 推荐(0)
Http 与Https
摘要:一个Http请求 DNS域名解析 --> 发起TCP的三次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户 设计存储海量 阅读全文
posted @ 2017-04-25 15:09 菜鸟想长大 阅读(151) 评论(0) 推荐(0)
SpringMVC运行原理
摘要:SpringMVC运行原理 友情链接:Spring:基于注解的Spring MVC(上) 友情链接: Spring:基于注解的Spring MVC(下) 友情链接:SpringMVC与Struts2区别与比较总结 友情链接:SpringMVC与Struts2的对比 阅读全文
posted @ 2017-04-25 15:07 菜鸟想长大 阅读(121) 评论(0) 推荐(0)
Spring
摘要:Spring IOC (控制反转,依赖注入) Spring支持三种依赖注入方式,分别是属性(Setter方法)注入,构造注入和接口注入。 在Spring中,那些组成应用的主体及由Spring IOC容器所管理的对象被称之为Bean。 Spring的IOC容器通过反射的机制实例化Bean并建立Bean 阅读全文
posted @ 2017-04-25 15:04 菜鸟想长大 阅读(95) 评论(0) 推荐(0)
索引
摘要:索引:B+,B-,全文索引 Mysql的索引是一个数据结构,旨在使数据库高效的查找数据。 常用的数据结构是B+Tree,每个叶子节点不但存放了索引键的相关信息还增加了指向相邻叶子节点的指针,这样就形成了带有顺序访问指针的B+Tree,做这个优化的目的是提高不同区间访问的性能。 什么时候使用索引: 友 阅读全文
posted @ 2017-04-25 15:01 菜鸟想长大 阅读(94) 评论(0) 推荐(0)
类加载器工作机制
摘要:类加载器工作机制: 1.装载:将Java二进制代码导入jvm中,生成Class文件。 2.连接:a)校验:检查载入Class文件数据的正确性 b)准备:给类的静态变量分配存储空间 c)解析:将符号引用转成直接引用 3:初始化:对类的静态变量,静态方法和静态代码块执行初始化工作。 双亲委派模型:类加载 阅读全文
posted @ 2017-04-25 14:55 菜鸟想长大 阅读(157) 评论(0) 推荐(0)
Java并发编程之volatile关键字解析
摘要:Volatile和Synchronized四个不同点: 1, 粒度不同,前者锁对象和类,后者针对变量 2, syn线程阻塞,volatile线程不阻塞 3, syn保证三大特性,volatile不保证原子性 4, syn编译器优化,volatile不优化 volatile具备两种特性: 同步:就是一 阅读全文
posted @ 2017-04-25 14:33 菜鸟想长大 阅读(158) 评论(0) 推荐(0)
String ,StringBuffer, StringBuilder的区别
摘要:StringBuffer是线程安全的,每次操作字符串,String会生成一个新的对象,而StringBuffer不会;StringBuilder是非线程安全的 友情链接:String、StringBuffer与StringBuilder之间区别 阅读全文
posted @ 2017-04-25 14:10 菜鸟想长大 阅读(123) 评论(0) 推荐(0)
Synchronized关键字、Lock,并解释它们之间的区别
摘要:Synchronized 与Lock都是可重入锁,同一个线程再次进入同步代码的时候.可以使用自己已经获取到的锁。 Synchronized是悲观锁机制,独占锁。而Locks.ReentrantLock是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。 Reentr 阅读全文
posted @ 2017-04-25 14:04 菜鸟想长大 阅读(291) 评论(0) 推荐(0)
Java内存模型
摘要:Java虚拟机规范中将Java运行时数据分为六种。 1.程序计数器:是一个数据结构,用于保存当前正常执行的程序的内存地址。Java虚拟机的多线程就是通过线程轮流切换并分配处理器时间来实现的,为了线程切换后能恢复到正确的位置,每条线程都需要一个独立的程序计数器,互不影响,该区域为“线程私有”。 2.J 阅读全文
posted @ 2017-04-25 14:03 菜鸟想长大 阅读(124) 评论(0) 推荐(0)
java GC是在什么时候,对什么东西,做了什么事情?
摘要:1.新生代有一个Eden区和两个survivor区,首先将对象放入Eden区,如果空间不足就向其中的一个survivor区上放,如果仍然放不下就会引发一次发生在新生代的minor GC,将存活的对象放入另一个survivor区中,然后清空Eden和之前的那个survivor区的内存。在某次GC过程中 阅读全文
posted @ 2017-04-25 13:52 菜鸟想长大 阅读(366) 评论(0) 推荐(0)
反射机制,反射的性能,如何优化?
摘要:反射机制的定义: 是在运行状态中,对于任意的一个类,都能够知道这个类的所有属性和方法,对任意一个对象都能够通过反射机制调用一个类的任意方法,这种动态获取类信息及动态调用类对象方法的功能称为java的反射机制。 反射的作用: 1、动态地创建类的实例,将类绑定到现有的对象中,或从现有的对象中获取类型。 阅读全文
posted @ 2017-04-23 20:55 菜鸟想长大 阅读(591) 评论(0) 推荐(0)
线程间的通信
摘要:Java 多线程-- 线程间的通信——wait及notify方法 线程间的相互作用 线程间的相互作用:线程之间需要一些协调通信,来共同完成一件任务。 Object类中相关的方法有两个notify方法和三个wait方法: http://docs.oracle.com/javase/7/docs/api 阅读全文
posted @ 2017-04-23 20:51 菜鸟想长大 阅读(336) 评论(0) 推荐(0)
快速理解Java中的五种单例模式
摘要:解法一:只适合单线程环境(不好) package test; /** * @author xiaoping * */ public class Singleton { private static Singleton instance=null; private Singleton(){ } pub 阅读全文
posted @ 2017-04-23 20:38 菜鸟想长大 阅读(256) 评论(0) 推荐(0)
Comparable和Comparator的区别
摘要:Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparabl 阅读全文
posted @ 2017-04-23 20:33 菜鸟想长大 阅读(352) 评论(0) 推荐(0)
equals()与hashCode()方法详解
摘要:java.lang.Object类中有两个非常重要的方法: 1 2 public boolean equals(Object obj) public int hashCode() 1 2 public boolean equals(Object obj) public int hashCode() 阅读全文
posted @ 2017-04-23 20:05 菜鸟想长大 阅读(309) 评论(0) 推荐(0)
Cookies 和 Session的区别
摘要:1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在某个WEB站点会话间持久的保持数据。 2.session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session其实是利用Cookie进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器上 阅读全文
posted @ 2017-04-23 19:28 菜鸟想长大 阅读(120) 评论(0) 推荐(0)
List接口、Set接口和Map接口
摘要:1、List和Set接口自Collection接口,而Map不是继承的Collection接口 元素有放入顺序,元素可重复 List接口有三个实现类:LinkedList,ArrayList,Vector LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存 阅读全文
posted @ 2017-04-23 19:03 菜鸟想长大 阅读(888) 评论(0) 推荐(0)
Java NIO:IO与NIO的区别
摘要:一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。 二、NIO和IO的主要区别 下表总结 阅读全文
posted @ 2017-04-23 16:57 菜鸟想长大 阅读(269) 评论(0) 推荐(0)
NIO与传统IO的区别
摘要:传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操 阅读全文
posted @ 2017-04-23 16:33 菜鸟想长大 阅读(134) 评论(0) 推荐(0)
Java中堆内存和栈内存详解
摘要:Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。 阅读全文
posted @ 2017-04-23 16:19 菜鸟想长大 阅读(599) 评论(0) 推荐(0)
Java序列化与反序列化
摘要:Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨。 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。 2.为什么需要序列化与反序列化 阅读全文
posted @ 2017-04-23 14:42 菜鸟想长大 阅读(206) 评论(0) 推荐(0)
maven搭建
摘要:目前做的项目使用的是MAVEN来管理jar包,这也是我第一次接触maven,感觉非常好,再也不用一个一个去添加和下载jar包了,直接在maven配置文件中配置就可以了,maven可以帮助我们自动下载。非常方便。之前比较忙没时间整理,现在整理一下,记录下来,加深印象。当然我们使用maven也只是最基本 阅读全文
posted @ 2017-04-17 14:05 菜鸟想长大 阅读(1068) 评论(0) 推荐(0)
深入研究java.lang.ThreadLocal类
摘要:一、概述 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为 阅读全文
posted @ 2017-04-06 16:49 菜鸟想长大 阅读(323) 评论(0) 推荐(0)
SQL 优化经验总结34条
摘要:(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表 阅读全文
posted @ 2017-04-06 15:34 菜鸟想长大 阅读(286) 评论(0) 推荐(1)
数据库事务的四大特性以及事务的隔离级别
摘要:本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的 阅读全文
posted @ 2017-04-06 14:54 菜鸟想长大 阅读(148) 评论(0) 推荐(0)
HashMap,LinkedHashMap,TreeMap的区别
摘要:Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允 阅读全文
posted @ 2017-04-01 15:24 菜鸟想长大 阅读(128) 评论(0) 推荐(0)
java集合
摘要:1. StringBuffer 线程安全,StringBuilder 线程不安全 效率稍高些集(Set):集里的对象不按任何特定的方式排列,按索引值来操作数据,不能有重复的元素列表(List):序列中的对象以线性方式存储,按索引值来操作数据,可以有重复的元素映射(Map):映射的每一项为“名称—数值 阅读全文
posted @ 2017-04-01 14:37 菜鸟想长大 阅读(213) 评论(0) 推荐(0)