自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java的四大特性(封装、继承、抽象、多态)小记

封装:java面向对象的基础,将对象的属性和行为都封装到类中,是现实生活的抽象表达,比较关键的点是分配属性和行为。比如说“人开车”,车与人都是对象,但是车行驶的行为是给车本身而不是人。        优点:模块化、减少耦合、隐藏信息(访问修饰符)继承:避免代码复写和实现功能扩展的基础,需要注意的是:不能继承父类的私有属性和构造        优点:能很好的体现相关类之间的层次结构关系抽象:从多个实...

2018-05-15 15:54:30 314

原创 关于Java平台的一些理解(虚拟机执行引擎)

首先是java平台的两个特点:1.一次编译,到处运行 :JVM帮助开发者屏蔽了操作系统层面上的细节,跨平台不需要重新编译 2.自动垃圾回收:java的垃圾回收机制    提到JVM不得不说Jre和Jdk,Jre是java的运行时环境,主要包含了JVM和java基础类库,而Jdk是jre的超集,里面包含了一些编译工具和调试分析工具    java的代码执行分为两种,第一种是将源代码编译成字节码文件,...

2018-05-15 11:51:20 1084

原创 Java中的线程与锁的一些概念理解

    Java中的线程是基于操作系统的原生线程模型来实现的,因此在调度上是取决于操作系统层面。    线程和进程间的区别是在       进程是系统进行资源分配和调度的一个独立单位.    线程则是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,它可与同属一个进程的其他的线程共享进程所拥有的全部资源.    理论上说,并发不一定要...

2018-05-06 11:59:04 587

原创 可循环使用的屏障CyclicBarrier(源码分析)

    前文有分析了发令枪的原理,这里先总结一下CountDownLatch和CyclicBarrier的区别。    1.发令枪是一次性的,无法重置,循环屏障可重复使用(reset)    2.发令枪是在所有任务都执行结束统一退出的时候使用,循环屏障是还没开始任务前统一步调的时候使用。举个例子,在计算银行的交易总金额是我们需要使用多个线程去计算每个时间段的总金额,如果我们想要得知该银行的一天的总...

2018-05-04 14:41:28 697

原创 发令枪CountDownLatch底层原理解析

    CountDownLatch是JUC包下比较有名的并发工具,也就是大家熟知的发令枪,类似Lock,借助了AQS队列同步器来完成功能,下面是比较简单的例子: CountDownLatch latch=new CountDownLatch(2); Work worker1=new Work("程序员1", 5000, latch); Work worker2=n...

2018-05-03 20:30:06 7077 1

原创 java里的类加载机制

        类的生命周期包括:加载,验证,准备,解析,初始化,卸载,其中验证,准备和解析统称为连接。这5个阶段的顺序是一定的,但是实际上的执行并不是按部就班的,而且通常都是交叉混合式进行的。        比较重要的加载过程触发是有以下几种情况(针对hotspot):        1.在该类的静态部分被引用到的第一次时出发加载        2.子类初始化的时候--构造器(可以理解为构造器包...

2018-04-30 13:23:10 132

原创 SSM聚合项目测试总结(续)

        今天一个上午就做了一件事,就是尝试显示带css和js样式的界面,本来以为将js和css文件夹放在WEB-INF下就可以直接访问了,谁知道那么艰难,在这里做个记录,给有缘人减少困难。        我搜遍个各种方案,比如在引用前加“${pageContext.request.contextPath}”或者加“../",这些都没用,然后我在我的springmvc.xml里头使用静态资源...

2018-04-11 11:12:48 449

原创 整理一下今天整合ssm聚合项目框架测试的几个问题

在写service和controller层的时候,每次调用pojo的类注入的时候都会有问题,想了半天也没发现哪里依赖除了问题,结果是在pom一开始就没有配置完全的问题,以至于后面要强行Alt+Enter解决。在运行底层的dao接口时出现了这是调用的时候没有找到mapper.xml文件。解决方案:还有就是如果发现还是扫描不到你的mapper就在执行项目的顶层pom文件的build里面加 ...

2018-04-10 21:45:47 346 1

原创 网络通信相关基本概念

        最初接触到网络协议还是在大学的计算机网络课上,过了这么多年没想到我还是得重拾这些知识,要是早知道上课就不会开小差和玩手机游戏了[好像说的有点晚?],好吧,偏题了。        著名的OSI五层协议相信大部分人都知道,然后下面是我大概要讲的内容结构图:看到这么多协议别害怕,我一点一点尽量用例子讲明白这些东西。        相信大多数人是使用过ftp协议到某个不知名ftp服务器上下...

2018-04-10 10:57:23 1668

原创 IDEA下用Maven构建一个聚合的web项目

    今天开始学着在IDEA制作一个web(SSM)项目。我的web项目结构如下:      首先新建project-->在这里直接next就好,然后写上自己的工程项目名称和id注意这里的GroupId和ArtifactId,后面会一直用到的。然后下一步:完成,这样就创建了一个纯粹的maven工程。    接下来我要在该目录下一个个创建我的模块(除了controller),Content ...

2018-04-09 17:48:52 1120

原创 Lock接口基本实现原理

        在Lock接口的实现里面,有个比较有名的叫ReentrantLock,它的实现机制是靠其内部类Sync,而这个类是AbstractQueuedSynchronizer(AQS)的子类。这个类的主要功能是通过管理一个双向同步队列(FIFO)实现同步状态的管理,实现多线程对同步状态的访问安全。在同步队列种存储的数据结构是一个个的节点Node,其中包含了跟双向链表类似的前向节点和后续节点...

2018-04-08 10:52:48 919

原创 ArrayDeque的精巧之道

        今天在学习深度优先和广度优先遍历树的时候,发现了一个非常牛逼的数据结构,它就是ArrayDeque,这个数据结构既可以当成堆栈使用,又可以当成队列来使用。接下来通过debug一些简单的使用代码来探索一下ArrayDeque的底层实现原理。首先,我的简明测试如下:    在debug的过程中,我发现在ss和ss1的数据组成里面,相同值所在的地址是一样的,类似与String类,这是In...

2018-04-05 22:11:59 165

原创 JVM数据区在JDK1.8带来的变化以及GC

        前面有介绍过jvm的在jdk1.7的运行时数据区,现在讲讲JDK1.8带来的变化,JDK1.8的运行时数据区把方法区移除了,变成了元数据区,所以之前的那个图里面的数据块应该变成如下:        在jdk1.8之前的版本,我们通常把堆分为新生代,老年代和永久代(方法区)(我们通常认为方法区也是属于堆的),新生代又包含了eden,from和to(survivor),当对象存活了超过...

2018-04-01 14:21:10 6377 3

原创 JVM运行时数据区探索与直接内存的使用

话不多说,先上简图(<JDK1.8):从图中可以看出JVM的运行时数据区大致可以分为数据和指令两块内容,指令这块本质上也属于数据,不过大部分数据跟指令有关系。右边有3个部分都是线程私有的,计数器存储了当前线程执行的字节码指令的地址,不过这仅限于java方法,如果时native方法那这个计数器时为null的。(查看字节码可以在命令行使用javap -v class文件名),而在虚拟机栈里面,一...

2018-04-01 11:57:19 1193

原创 java线程的状态+锁分析

在最开始贴出我的线程状态理解简图(没画出结束状态):        相信很多小伙伴对这种图都有或多或少的印象,下面就来分析一下线程的整个可能出现的状态和状态变化出现的原因。我们都知道新建一个线程是很简单的,可以通过继承Thread或者实现Runnable/Callable接口来创建一个新的线程。在调用了start()方法之后该线程就进入了就绪状态,而且在就绪状态只能等待系统调度。在运行中的线程在碰...

2018-03-31 16:07:44 526

原创 在Ubuntu16.04上编译安装opencv2.1.13全过程(附资源)

        目前在做一个python-opencv读取RTSP流视频的项目,此行为需要得到有FFmepg库支持的opencv库,因此需要在ubuntu下安装opencv环境。在安装过程中有几个坑总结一下,避免大家入坑,最后在文末附上我的安装资源链接,希望小伙伴能积极点赞。            首先环境配置:            Ubuntu16.04(这个官网下比较好),ffmpeg2.4...

2018-03-31 14:47:26 1997

原创 多线程之volatile关键字

   接触过java的小伙伴们都知道,java有很多很好用的关键字,平常我们自己写代码的时候也会经常用到,但是并没有几个人真正了解其中含义和实现原理,今天我就带大家来详细解读一下volatile关键字。    在这之前,我们先来看看现在计算机的硬件内存架构图:早期的计算机并没有缓存这个东西,后来是因为在CPU和内存之间频繁地读取数据效率太慢而增加,其实这里面还隐隐地有二八定理地影子。当CPU核心要...

2018-03-31 14:15:39 236

原创 关于整个SpringMVC框架核心流程+核心源码分析

SpringMVC被广泛应用到企业级web应用程序开发上面,下面我们来看看它究竟有何魅力。不管是structs还是springmvc,首先从web开发地核心上讲是在原有地servlet处理方式上做了很多包装和增加了很多便捷开发地功能。SpringMVC被广为人知的很重要的一点就是它有一个中央控制器,说到这里就得提一下设计模式,其实很多设计模式都可以看作是第三者操作模式,所谓第三者就是在原有的功能模...

2018-03-29 18:25:33 334

Bootstrap框架做的小模板

这是用BootStrap框架做的几个精美的前端模板,拿去吧!!

2018-04-09

Java1.8源码

JDK源码,目前版本是1.8的欢迎大家下载 ! JDK源码,目前版本是1.8的欢迎大家下载 !

2018-04-02

空空如也

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

TA关注的人

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