- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 Spring学习—Spring之旅
1、Spring介绍1.1、Spring框架组成 Spring是由6个定义良好的模块分类组成的 1.2、Spring如何简化Java开发复杂性? 为了降低Java开发的复杂性,Spring采取了以下4种关键策略: 1、基于POJO的轻量级和最小侵入性编程。 ...
2019-07-31 23:57:30
92
原创 Java8学习—用Optional取代null
1、Optional类入门 Optional类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。被Optional包装的对象最多只有一个。2、创建optional对象2.1、声明一个空的Optional 可以通过静态工厂方法Optional.empty创建一个空的Optioanl对...
2019-07-23 23:58:06
292
原创 Java8学习—函数式数据处理
1、 什么是流? 流的定义是从支持数据处理操作的源生成的元素序列,流的目的在于表达计算,比如:filter、map、reduce、find、match、sort等。流操作有两个特点: (1)流水线—很多流操作本身会返回一个流,这样多个操作就可以链接起来,形成一个流水线。 (2)内部迭代—与使用迭代器显示迭代的集合不同,流的迭代器操作是在背后进行的。...
2019-07-21 22:34:06
133
原创 Java8学习—Lambda表达式
1、什么是Lambda表达式? 我们可以把Lambda表达式理解为简洁的表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主题、返回类型,可能还有一个可抛出的异常列表。 Lambda表达式包括三部分: (1)参数列表—这里它采用了Comparator中compare方法的参数,两个Apple。 (2)箭头—把参数列表和Lambda主体分隔...
2019-07-21 22:33:09
452
原创 JVM学习—Java内存模型和线程
1、物理机的并发问题 物理机遇到的并发问题与虚拟机中的情况有不少相似之处,首先多任务并发执行不仅仅只靠计算机“计算”就能完成,至少还与内存的交互、读取运算数据、存储运算数据结果等相关。 由于计算机的存储设备和处理器的运算速度有着几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存。基于高速缓存的存储交互很好的解决了处理器和内存的...
2019-07-17 23:16:21
83
原创 JVM学习—虚拟机类加载机制
1、类加载的时机 类从被加载到虚拟机内存到卸载出内存,一共包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。 虚拟机必须进行初始化的四种情况:1、遇到new、getstatic、putstatic、或invokestatic这4条字节码指令时,如果类没有初始化则需要先进行初始化。比如使用new关键字实例化对象的时候、读取或设置一个类的静态字段(被f...
2019-07-11 23:52:42
71
原创 JVM学习—虚拟机性能监控与故障处理工具
今天分享一下如何运用一些工具来定位问题和JVM有关的一些问题。1、性能监控各种命令1.1、jps jps的作用:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID。1.2、jstat jstat作用:用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机的类装载、内存、垃...
2019-07-04 23:35:01
308
原创 JVM学习—垃圾收集器与内存分配策略
在学习垃圾收集器与内存分配之前,我们要思考三个问题: 1、哪些内存才需要我们去回收?我们如何判断这些内存可以回收? 2、什么时候回收? 3、如何回收?下面我们将根据这三个问题去好好研究一下垃圾收集器。1、对象已死?—判断是否需要被回收 在垃圾回收之前我们要确定哪些对象时还“存活”着,哪些对象已经...
2019-06-29 21:26:00
100
原创 JVM学习—Java内存区域与溢出异常
1、为什么要学习java内存区域? 作为一名java程序员在日常的工作中确实很少接触到内存管理的实际操作,因为在虚拟机的自动内存管理机制的帮助下,不再需要我们手动的去管理内存。不过,也正是因为我们将内存管理交给了虚拟机,当出现内存泄漏等方面的问题,如果不了解虚拟机是怎样管理内存的,那排查错误将会是一件非常艰难的工作。另外,要成为一名高级Java程序员,学好Java虚拟机方面的知...
2019-06-24 23:38:43
72
原创 数据结构学习—图
1、什么是图? 图是右顶点的有穷非空集合和顶点之间的集合组成 ,通常表示为:G(V,E),其中G表示一个图,V是图G的顶点的集合,E是图G中边的集合。我们只要记得,在图形结构中,结点之间的关系可以是任意的,因此图是多对多的关系。2、图的各种定义 无向边:若顶点Vi到Vj之间的边没有方向,则称这条边为无向边,用无序偶对(Vi,Vj)来表示。如果图中任意两个顶点之间的边...
2019-06-23 23:09:45
396
原创 数据结构学习—树
1、树的定义 树是n个结点的有限集合。n=0时称为空树,在任意一棵非空树中:(1)有且仅有一个特定的称为根的结点。(2)当n>1时,其余结点可以分为m个互不相交的有限集合,其中每一个集合本身又是一棵树。在此,我们主要来学习二叉树的应用。1.1、树的结点的分类 结点拥有的子树数称为结点的度。度为0的结点称为叶子结点...
2019-06-21 00:10:23
244
原创 数据结构学习—栈和队列
1、栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表。我们把插入和删除的一段称为栈顶,另一端称为栈底,不含任何元素的栈称为空栈。由于栈本身是一个线性表,因此栈的存储方式也有两种,分别是顺序存储和链式存储。 1.1 栈的顺序存储结构 既然栈是线性表的特列,那么栈的顺序存储其实也是线性表顺序存储的简化。我们称为顺序栈。 ...
2019-06-19 00:25:11
238
1
原创 数据结构—线性表
1、线性表1、什么是线性表? 线性表:零个或多个元素的有序序列。 元素之间是顺序的,若元素存在多个则第一个无前驱,最后一个元素无后继。其他每个元素都有一个前驱和一个后继。另外,线性表必须是有限的。2、线性表的存储结构 线性表的存储结构有两种,分别是顺序存储结构和链式存储结构。1、顺序存储结构 线性表的顺序存储结构,指的是用一段地址连续的存储单元依...
2019-06-02 23:29:03
273
原创 23种设计模式UML类图
设计模式总概况:一、设计原则1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Princ...
2019-03-11 22:44:53
594
原创 Python爬虫学习入门
一、什么是爬虫?1.1 爬虫的功能 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。1.2 爬虫的组成部分1、控制器 控制器是网络爬虫的中央控制器,它主要是负责根据系统传过来的URL链接,分配线程,然后启动线程调用爬虫爬取网页的过程。2、解析器 解析器是负责网络爬虫...
2018-11-06 23:14:23
307
elasticsearch技术解析与实战 高清 带索引书签目录_朱林(著)_机械工业出版社
2017-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人