- 博客(21)
- 资源 (8)
- 收藏
- 关注
原创 java实现K叉树及递归和非递归遍历算法
如下代码import java.util.Stack;/** * * @author Administrator * */class treenode { private int data; private treenode[] kNode; public treenode(int data) { super(); this.data = data;
2017-10-16 22:38:48 1101
转载 jdk中的设计模式
在JDK(Java Development Kit)类库中,开发人员使用了大量设计模式。转载自:http://blog.csdn.net/gtuu0123/article/details/6114197本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图。首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助。一、设计模式
2017-10-15 18:54:58 589
原创 JAVA GC JDK1.8描述
前言 与C语言不同,Java内存(堆内存)的分配与回收由JVM垃圾收集器自动完成,这个特性深受大家欢迎,能够帮助程序员更好的编写代码,本文以HotSpot虚拟机为例,说一说Java GC的那些事。Java堆内存 我们知道Java堆是被所有线程共享的一块内存区域,所有对象实例和数组都在堆上进行内存分配。为了进行高
2017-10-07 13:50:40 7043 2
原创 【经典】数据库SQL笔试题目必考
SQL资料:和我们在课堂上所学的较大的不同在于:子查询的位置非常灵活,可以出现在from子句后(需要为此查询取别名),也可以出现在select的目标列中,请仔细读懂下列例子(有的地方取别名直接就空格后出现别名,有的地方是用as后面跟别名的方式)。注:主要是学习基本语句或短语的用法题目Student(S#,Sname,Sage,Ssex) 学生表Course(C#,C...
2017-10-04 19:44:50 8813 1
原创 ConcurrentHashMap在jdk/java 1.8/8种的Unsafe与CAS操作
导语:JDK8中的实现ConcurrentHashMap在JDK8中进行了巨大改动,很需要通过源码来再次学习下Doug Lea的实现方法。它摒弃了Segment(锁段)的概念,而是启用了一种全新的方式实现,利用CAS算法。它沿用了与它同时期的HashMap版本的思想,底层依然由“数组”+链表+红黑树的方式思想(JDK7与JDK8中HashMap的实现),但是为了做到并发,又
2017-10-04 12:00:12 12700
原创 java后端题目常见
ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量。采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。ThreadLocal类中维护一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值为对
2017-10-03 12:35:36 2064 1
原创 MySQL存储引擎InnoDB和MyISAM对比总结
InnoDB引擎InnoDB是一个事务型的存储引擎,设计目标是处理大数量数据时提供高性能的服务,它在运行时会在内存中建立缓冲池,用于缓冲数据和索引。InnoDB引擎优点1.支持事务处理、ACID事务特性;2.实现了SQL标准的四种隔离级别;3.支持行级锁和外键约束;4.可以利用事务日志进行数据恢复。InnoDB引擎缺点不支持FULLT
2017-10-03 12:19:03 4727
转载 DispatcherServlet请求分发源码分析
首先,从DispatcherServlet的名称上可以看出它是一个Servlet,通过一张图来看一下它的实现关系。 既然DispatcherServlet是一个Servlet,那么初始化的时候一定会执行init方法,查看源码发现DispatcherServlet的init方法继承自HttpServletBean,具体代码如下图所示。 对于上面的代码,配合一个实际的web.xml配置样例更容易理解...
2017-10-03 12:08:21 6375
原创 Spring Aop 源码实现原理分析
更新:2018/4/2修改字体、添加引言。0 引言AOP是Aspect Oriented Programing的简称,面向切面编程。AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理、缓存、对象池管理以及日志记录。AOP将这些分散在各个业务逻辑中的代码通过横向切割的方式抽取到一个独立的模块中。AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AO...
2017-10-02 14:43:03 5110 1
原创 Java代码优化实现
就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了。代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意代码优化,总体来说对于提升代码的运行效率就很有用了。这个观点,在现在看来,是要进行代码优化的一个原因,但不全对。在机械工艺发展的今天,服务器动辄8核、16核,64位CPU,代码执行效率非常高,Stri...
2017-10-02 11:07:55 1266
原创 Spring Aop实现机制分析原理
1 AOP各种的实现AOP就是面向切面编程,我们可以从几个层面来实现AOP。在编译器修改源代码,在运行期字节码加载前修改字节码或字节码加载后动态创建代理类的字节码,以下是各种实现机制的比较。 类别机制原理优点缺点静态AOP静态织入在编译期,切面直接以字节码的形式编译到目
2017-10-01 22:49:17 5724
转载 【经典必学】常用开源框架中设计模式使用分析
一、前言说起来设计模式,大家应该都耳熟能详,设计模式代表了软件设计的最佳实践,是经过不断总结提炼出来的代码设计经验的分类总结,这些模式或者可以简化代码,或者可以是代码逻辑开起来清晰,或者对功能扩展很方便…。设计模式按照使用场景可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral
2017-10-01 20:12:56 2403
转载 Java AQS学习-ReentrantLock源代码分析
什么是AQSAQS是JUC里并发控制一个很重要的基础,他提供了一个独占和共享访问控制某个状态的工具,JUC里的锁、信号量、门阀都是基于AQS实现的,单独去看AQS的代码很难理解,而且很难理解其设计之精妙,笔者计划依次分析锁(ReentrantLock)、门阀(CountDownLatch)、信号量(Semaphor)、读写锁(ReadWriteLock)来解析AQS的设计细节。
2017-10-01 20:08:13 1560
原创 分布式锁的三种实现方式
一、zookeeper1、实现原理:基于zookeeper瞬时有序节点实现的分布式锁,其主要逻辑如下(该图来自于IBM网站)。大致思想即为:每个客户端对某个功能加锁时,在zookeeper上的与该功能对应的指定节点的目录下,生成一个唯一的瞬时有序节点。判断是否获取锁的方式很简单,只需要判断有序节点中序号最小的一个。当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机
2017-10-01 20:04:21 5765
转载 分布式锁的多种实现
目前几乎所有的大型web应用全都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式应用中的CAP理论告诉我们:任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partation tolerance)。最多只能同时满足其中两项。所以在设计之初,就需要对三者做出取舍。一般在互联网场景中,都会选择牺牲...
2017-10-01 20:00:56 1091
转载 JDK8中新增StampedLock原理
http://ifeve.com/jdk8%E4%B8%ADstampedlock%E5%8E%9F%E7%90%86%E6%8E%A2%E7%A9%B6/StampedLock是并发包里面jdk8版本新增的一个锁,该锁提供了三种模式的读写控制,三种模式分别如下: 写锁writeLock,是个排它锁或者叫独占锁,同时只有一个线程可以获取该锁,当一个线程获取该锁后
2017-10-01 19:51:08 3366
原创 JDK8中新增原子性操作类LongAdder
LongAdder简单介绍LongAdder类似于AtomicLong是原子性递增或者递减类,AtomicLong已经通过CAS提供了非阻塞的原子性操作,相比使用阻塞算法的同步器来说性能已经很好了,但是JDK开发组并不满足,因为在非常高的并发请求下AtomicLong的性能不能让他们接受,虽然AtomicLong使用CAS但是CAS失败后还是通过无限循环的自旋锁不断尝试的 ...
2017-10-01 19:49:23 1268
原创 Java MVC模式与三层架构比较
MVC模式与三层架构和表示层1.MVC模式 - Model-View-Controller - 模型-视图-控制器 - Model(模型) > 模型分为业务模型,和数据模型 > 模型负责处理业务逻辑以及和数据库进行交互 > Service和DAO - View(视图) >
2017-10-01 16:00:48 1006
原创 Java多线程问题总结
前言Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作
2017-10-01 10:43:32 3664
原创 Java 常见的数据结构
Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 字典(Dictionary) 哈希表(Hashtable) 属性(Properties)以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collection),我们后面再讨论。枚...
2017-10-01 10:39:33 11533
原创 JDK新特性
Java 8 新特性Java/JDK 8 新特性1.8对于1.7做了哪些优化/改进Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。新特性Java8 新增了非常多的特...
2017-10-01 10:35:51 9444
技术必备基础知识.pdf
2020-10-28
JAVA核心面试知识整理
2019-05-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人