自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 jsoup使用教程

jsoup是一款Java的html解析工具,主要是对html和xml文件进行解析在写爬虫的时候,当我们用HttpClient之类的框架,得到目标网页的源码后,需要从网页源码中取得我们想要的内容。就可以使用jsoup轻松获取想要的内容。jsoup的中文开发文档获取jsoup的maven方式<!-- https://mvnrepository.com/artifact/org.jsoup...

2020-04-23 22:12:39 17407 6

原创 Java零拷贝问题

概述零复制(英语:zero-copy;也叫做零拷贝)技术是指计算机执行操作时,cpu不需要先将数据从某处内存复制到另外一个特定区域。这种技术通常通过网络传输文件时节省CPU周期和带宽。传统IO传输模型传统IO分析在Java当中IO存在这三个对象,一个是user space用户空间,一个是kernel space内核空间,还有一个是hardware磁盘对象当jvm发起了一次读取事件时,...

2020-04-20 17:48:43 559

原创 Java的GC垃圾回收机制

什么是GC垃圾回收垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。注意:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身。换言之,垃圾回收只会负责释放那些对象占有的内存。分析引用:如果Reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块...

2020-04-05 17:06:26 330

原创 设计模式Java原型模式

原型模式基本介绍原型模式(prototype模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象原型模式是一种创建型设计模式,允许一个对象在创建另外一个可定制的对象,无需知道如何创建的细节工作原理:通过原型传给要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝他们来实现,即对象.clone()原型模式实现方式默认实现方式,浅拷贝实现一个Cloneab...

2020-03-28 17:48:48 216

原创 Centos7 安装docker-compose

Docker 安装docker-compose使用二进制包进行安装在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。例如,在 Linux 64 位系统上直接下载对应的二进制包。curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-...

2020-03-25 17:05:04 1674 10

原创 MySQL SQL语句优化explain关键字

概述在目前这个大数据,大流量时代,我们的网站不光流量大,数据量也会非常的巨大。在巨大的数据量中精确找出我们需要的数据,这个对我们数据库压力比较大。而我们在不考虑进行分库分表的操作时,进行SQL语句优化是一个很好的解决办法,下面介绍explain关键词分析SQL语句,及使用索引进行优化查询。explain关键字使用explain使用格式 EXPLAIN SELECT * FROM S...

2020-03-24 18:50:53 1616 12

原创 Spring事物注解@Transactional失效场景

概述@Transactional注解相信大家都不陌生,平时在开发中spring框架中经常用到的事物注解。他的作用就是控制程序执行的原子性,保证程序要提交就一起提交,如果出现错误,则一起进行回滚操作。但是在使用@Transactional注解的时候有很多需要注意的地方,不然你就会发现这个事物注解会出现失效的情况。在spring程序中如何去管理事物事物管理在系统开发中是不可缺少的,在spri...

2020-03-23 14:23:35 3775 11

原创 MySQL索引介绍

索引是什么索引(index)是帮助MySQL高效获取数据的数据结构如果没有特别指明,都是指的是B树索引(多路搜索树,并不一定是二叉树)结构组织的索引建立索引的优势和劣势优势提高数据检索的效率,降低数据库IO成本,通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。劣势实际上索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也要占用空间,因为更新表时,...

2020-03-21 15:35:28 2278 10

原创 CentOs7安装docker

如果之前安装过docker可以执行下面命令删除$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ ...

2020-03-17 19:12:54 1321 10

原创 HashMap如何添加元素详解

Map接口结构map接口是一个双边队列,拥有key,value两个属性,其中key在存储的集合中不允许重复,value可以重复。MapHashMapLinkedHashMapHashtable实现map接口实现map接口继承HashMap实现map接口MapHashMapLinkedHashMapHashtableHashMap特点存储结构在jdk1.7当中是数组加链表的结构,在jdk1...

2020-03-16 14:18:15 6793 10

原创 Java流NIO

什么是NIOJava NIO(NEW IO)是从Java1.4开始引入的新版IO,用来替代标准的Java IO APINIO于原来的IO有相同的功能,但是他们之间的使用方式是完全不同的,NIO是面向缓冲区,面向通道的的IO操作,NIO拥有更加高效的进行文件读写。另外NIO在网络编程可以是一个无阻塞的IO交互,可以大大提升Socket交互的效率。NIO于IO的区别IONIO...

2020-03-14 15:27:19 855 10

原创 Java单例模式实现

概述当我们的项目中有这样一个需求,整个项目运行的周期内,有一个类只存在一个实例对象,那么我们可以采用单例设计模式。单例设计模式有两种形式的,一种是懒汉式,一种是饿汉式的。我认为单例设计模式可以帮助我们更好的管理项目中的某些资源问题。饿汉式静态成员变量我们利用Java关键字static特性,在类初始化就被加载,并在以后的加载中不再加载。/** * 饿汉模式,静态成员变量 * * ...

2020-03-13 19:36:50 783 10

原创 jdk1.8新特性Stream流

概述Stream流完全不是I/O流,按照流水线处理方式来考虑代码中的思想。JDK1.8 之后,我们拥有了Lambda表达式,让代码的中心偏向解决实际问题,直到重点,可以提高效率。Stream流中使用了大量Lambda表达式,利用Lambda操作方式,提供开发效率在我们进行数据处理时有很大的帮助获取Stream流的三种方式数组int[] arr = {1, 2, 3, 4, 5};A...

2020-03-12 20:22:50 680

原创 JDK1.8新特性函数式接口

概述对于只有一个抽象方法的接口,需要这种接口的对象,就可以提供一个lambda表达式。这种接口称为函数式接口(functional interface)。在定义函数式接口的时候可以加入@FunctionalInterface注解来修饰该接口@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)pub...

2020-03-11 20:52:25 455 11

原创 Java8特性lambda表达式和方法引用

lambda表达式简介lambda表达式是一个传递的代码块,可以在以后执行一次或者多次。这个特性是JDK1.8之后的特性。lambda表达式使用场景在jdk中有一个Arrays.sort()方法用来对数组进行排序,在没有用lambda表达式之前我们一般用匿名内部类来传递比较条件,但是出现lambda表达式之后,这个就可以替换掉了。import java.util.Arrays;impor...

2020-03-11 19:25:09 633 12

原创 Java注解Annotation

概述Java语言中的类、方法、变量、参数和包等都可以被标注。和Javadoc不同,Java标注可以通过反射获取标注内容。在编译生成类文件时,标注可以被嵌入到字节码中。Java虚拟机可以保留标注内容,在运行时可以获取到标注内容。 当然它也支持自定义Java标注JDK1.5之后的特征用于说明程序一般在框架中使用格式:@AnnotationName文档注释:@param @return ...

2020-03-10 21:13:53 651 5

原创 Centos7配置alibab的yum源

进入到yum源配置文件目录 cd /etc/yum.repos.d/拉取阿里云yum源 wget http://mirrors.aliyun.com/repo/Centos-7.repo如果wget 不生效,可以执行 yum -y install wget 命令备份原来的yum源配置文件mv CentOs-Base.repo CentOs-Base.repo.bak替换掉系统...

2020-03-09 19:46:45 339 4

原创 Java多线程管理类CountDownLath

概述多线程的管理是一个让人头疼的事情,然而在Java中提供了很多对多线程管理的工具类,这里简单介绍一下CountDownLath。作用可以用来调整线程的执行顺序方法介绍long getCount()返回当前管理类中存在数void countDown() 将管理类中数值减一,当管理类中数值为0后,这个方法不会执行void await() 使所在线程等待,直到管理类中数值降为0代码...

2020-03-07 17:54:22 598 11

原创 Java内部类 inner class

为什么使用内部类内部类(inner class)是定义在另外一个类中的类。为什么需要使用内部类呢?主要有一下三点:内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。内部类可以对同一个包的其他类隐藏起来。当像要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)内部类比较便捷使用内部类访问对象状态内部类既可以访问自身数据域,也可以访问创建它的外围对像的数据...

2020-03-06 22:41:27 291

原创 Java基础反射reflect

概述能够分析类能力的程序成为反射reflective。反射机制的功能及其强大,再下面可以看到,反射机制可以用来:在运行时分析类的能力在运行时查看对象,例如,编写一个toString()方法供所有类使用。实现通用的数组操作代码。利用Method对象,这个对象很像C++中的指针函数。Class类在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识。这个信息...

2020-03-05 20:41:52 986 12

原创 Java多线程线程池

概述线程池就是定义管理几个有限的线程资源,进行循环利用。我们生活中有没有这种例子呢?当然是有的,比如我们银行窗口就是一个有限的资源,在我们处理完事情之后,将资源重新归还,然后重新分配下一个人员处理事情,这中模型就是线程池的模型。使用线程池的好处线程资源必须通过线程池提供,不允许在应用中自行显式创建线程使用线程池的好处是减少在创建和销毁线程上所花的时间以及系统资源的开销,解决资源不足的问题。...

2020-03-04 20:05:46 665 11

原创 Java多线程案例生产者消费者

概述在中国并发这个词已经非常常见了,比如双十一购物狂欢节的淘宝,过年回家的春运12306,这都是我们生活中的并发。在短时间内大量集中的访问一个服务器。然而Java又是解决并发的一把好手,下面简单介绍一下多线程案例的经典案例,生产者和消费者。多线程通信图解如何编写一个多线程配合的代码线程操作资源类。定义一个资源类,并在资源类中完成相应的方法,将资源类作为成员变量传递进线程中进行操作。如...

2020-03-03 21:20:03 866 10

原创 Java排序算法基数排序(桶排序)

概述Java中排序算法是非常重要的一部分,这里简单分析下基数排序(桶排序)的实现思路及其代码实现。常见排序算法时间复杂度表排序算法平均时间复杂度最差情形稳定度额外空间备注冒泡排序O(n^2)O(n^2)稳定O(1)n小时较好插入排序O(n^2)O(n^2)稳定O(1)n小时较好选择排序O(n^2)O(n^2)不稳定O(1)...

2020-03-02 19:23:10 495 10

原创 插入排序和希尔排序

概述Java中排序算法是非常重要的一部分,这里简单分析下插入排序和希尔排序的实现思路及其代码实现。常见排序算法时间复杂度表排序算法平均时间复杂度最差情形稳定度额外空间备注冒泡排序O(n^2)O(n^2)稳定O(1)n小时较好插入排序O(n^2)O(n^2)稳定O(1)n小时较好选择排序O(n^2)O(n^2)不稳定O(1)...

2020-03-01 17:00:54 1275 11

原创 冒泡排序和快速排序

概述Java中排序算法是非常重要的一部分,这里简单分析下冒泡排序和快速排序的实现思路及其代码实现。常见排序算法时间复杂度表排序法平均时间复杂度最差情形稳定度额外空间备注冒泡排序O(n^2)O(n^2)稳定O(1)n小时较好选择排序O(n^2)O(n^2)不稳定O(1)n小时较好插入排序O(n^2)O(n^2)稳定O(1)大...

2020-02-29 16:36:53 3272 15

原创 逆波兰表达式实现简单计算器功能

问题概述我们完成一个逆波兰计算器,要求完成如下任务输入一个中缀表达式,转成后缀表达式(逆波兰表达式),使用stack计算结果要求支持小括号,和多位整数,我们暂时不考虑小数问题逆波兰表达式书写逆波兰表达式(Reverse Polish notation, RPN,或逆波兰记法),也叫后缀表达式,运算符写在数值的后面为什么要使用逆波兰表达式呢实现逆波兰表达式其实并不是很难,但是为什么...

2020-02-28 14:00:04 1231 20

原创 字符串匹配KMP算法实现

应用场景已知有一个字符串str1 = "BBCABCDABABCDABCDBDE"和另外一个字符串str2 = "ABCDABD"现在需要你来判断str1是否包含str2,如果包含返回一个true,不存在返回一个false解决办法暴力匹配法KMP算法匹配暴力匹配法在遇到这种匹配问题,我们一般想到的都是这种暴力匹配法,下面简单讲解一下他的实现方法。创建两个变量i,j并且分...

2020-02-27 19:49:00 1020

原创 Java所有类的超类Object

概述Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的。如果没有明确指出超类,Object被默认是这个类的超类。Object的用途可以使用Object类型的变量引用任何类型的变量public void demo() { Object object = new Employee();}当然Object类型变量只能作为各种值的持有者,如果想要对其中的内容进行...

2020-02-25 00:21:38 729

原创 Java数据结构 -- 链表

生活中的链表链表其实是一个一环扣一环的东西,最简单明了的就是我们的链子了,它就是一个一环扣一环的东西链表介绍链表在内存中的图解可以用下图来表示链表是以节点的方式存储,是一个链式存储。每个节点都有一个data域,和一个next域。链表的内存空间可能是不连续的。链表有带头节点和不带头节点两种,具体使用哪一种视情况而定。单链表的代码书写单链表的数据模型单链表书写这里我们...

2020-02-22 16:41:19 562 5

原创 Java数据结构---队列

首先我们来看一个队列在实际生活中的场景我们在银行办理业务,是不是会看到这样一种场景,有一队人正整齐的排着队,在窗口前,等待办理业务,其实这就是队列在实际应用中的一个体现。队列的特点队列的是Java数据结构中的一种,它的一个有序的 列表 ,可以使用数组或者链表来实现。遵循先进先出的原则,先存入的数据会先被取出来,后存入的数据会后取出来队列的形式单向队列环形队列数组模拟单向队列...

2020-02-10 22:34:55 580

原创 Java数据结构----稀疏数组

我们先看一个实际的需求:编写一个五子棋盘程序,并存在退出后存盘功能和续上盘的功能。解决方案方案一:将这个棋盘模拟成一个二维数组,将数据存储起来。方案二:使用稀疏数组,将棋盘存储起来,并达到一个数据压缩的效果。解决方案优劣势分析方案一:优势: 简单方便,代码简单。劣势: 造成数据冗余,有很多不必要的数据存储下来了。方案二:优势:节省储存空间劣势:代码稍微复杂一些...

2020-02-09 12:34:40 508

原创 Java条件判断和循环

Java是目前很流行的web端开发语言,而条件判断和循环结构是Java一个很重要的部分,下面简单介绍Java常用的条件判断和循环结构。条件判断语句if判断语句public class Demo { public static void main(String[] args) { if (/*判断条件*/) { // 逻辑代码块 } }}if-else判断语句p...

2020-02-08 20:52:11 727 4

空空如也

空空如也

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

TA关注的人

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