自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java并发编程:volatile关键字

JMM内存模型在介绍volatile关键字之前,我们先介绍一下JMM内存模型以及线程之间的通信方式。JMM分为共享内存和工作内存,每一个线程在运行的时候都会分配一块独立的工作内存,共享内存就是我们系统中的主物理内存,线程间通信是通过共享内存和消息传递实现的。就是每一个线程在操作变量的时候,都会把主物理内存的变量拷贝到自己的工作内存一份,然后线程操作之后再把修改后的变量拷贝回主物理内存。如下图所示:volatile的特性volatile是Java虚拟机提供的轻量级同步机制。它具有三大特性.

2020-08-07 17:50:50 143

原创 Jvm之类加载机制

首先需要把编写的Java文件编译成class字节码文件,当程序使用到某个类的时候,需要先把这个类加载到内存中。类加载过程类加载到使用整个流程有:加载 》》验证 》》准备 》》解析 》》初始化 》》使用 》》卸载。加载: 在硬盘上查找并通过IO读取字节码文件,使用到该类的时候才会被加载。(类加载不是一次性完成的)。验证: 校验字节码的正确性,验证文件格式是否正确、元数据的存储结构验证、字节码...

2020-01-16 18:22:11 159

原创 BIO,NIO,AIO详解

IO模型IO模型就是说用什么样的通道进行数据的发送和接收,Java共支持3种网络编程IO模式:BIO,NIO,AIOBIO特点同步阻塞模型,一个客户端连接对应一个处理线程缺点1、IO代码里read操作是阻塞操作,如果连接不做数据读写操作会导致线程阻塞,浪费资源2、如果线程很多,会导致服务器线程太多,压力太大。应用场景BIO 方式适用于连接数目比较小且固定的架构, 这种方式对服务器...

2020-01-14 09:54:38 194

原创 ElasticSearch的基本使用

Elasticsearch简介百度百科ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户...

2019-08-09 10:58:39 121

原创 Spring Boot整合ELK实现日志实时分析

ELK的搭建我在上一篇博客中介绍过了,如果还不清楚的朋友请移步到上一篇博客https://blog.csdn.net/m0_38105115/article/details/95591423把Logstash的conf配置文件改成input { tcp { host => "localhost" port => 9601 ...

2019-08-01 15:19:09 1869 1

原创 Windows下搭建ELK(6.5.2版本)

介绍在日常编程中,我们一般都会把重点放到业务逻辑或者代码优化的工作上,但是往往却忘记了日志的处理和收集,我们平常整理日志都会使用sed和awk脚本命令来进行归纳日志,为了更好的效果,现在出现了流行的日志处理系统,那就是ELK。那么ELK都包括什么的,大家自行在官网上了解一下,https://www.elastic.co这里我只是把它们做一个简单的介绍。ELK中的E是ElasticSearc...

2019-07-12 10:27:26 3017

原创 windows下Elasticsearch集群的搭建

准备条件Windows10系统Elasticsearch5.5.2nodejsjdk1.8jdk和nodejs是安装elasticsearch的先决条件,大家自行下载。elasticsearch官网下载https://www.elastic.co/cn/downloads/elasticsearch打开网址之后会出现下图所示往下翻的话会看到这个点击的话会看到各种版本,我...

2019-07-11 17:36:06 1278

原创 Error occurred during initialization of VM Could not reserve enough space for 2097152KB object heap

Windows下安装ElasticSearch的时候运行elasticsearch.bat报错解决方法:打开config/jvm.options把-Xms2g-Xmx2g修改为-Xms256m-Xmx256m保存之后重新启动成功!...

2019-07-09 15:37:42 1132

原创 Redis集群搭建和启动测试

环境:ubuntu16.04 Redis5.0.2 idea Jedis2.0.9介绍:我这里搭建的是一个伪分布式集群,六个Redis,三主三从目录文件:注意:只是把redis.conf文件复制过去,data目录下的文件是自动生成的。配置文件: daemonize yes(设置启动为后台进程) port 800*(设置目录的端口号【可以按照自己...

2019-07-09 09:57:14 1399

原创 SSM中Druid数据源配置

1,引入依赖<!--数据源--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.13</version> </de...

2019-06-04 10:29:10 1973

原创 docker容器的基本操作

一.创建容器Docker使用create创建容器,容器名为test1,但是用create创建之后必须使用start进行启动。docker ps -l查看状态(最近一个使用过的容器)二.启动容器启动第二个容器docker ps -l查看最新启动容器使用Dockerfile安装nginx创建容器test4并且在root下创建1.txt;启动容器输出hello docker。...

2019-05-28 18:09:48 154

原创 Java中自定义注解

既然是Java实现自定义注解,相信注解这个东西应该不用说了,注解这个东西在Java中是个很重要的,比如我们看源码的时候会有很多的注解,注解在源码中用的是特别多的,如果我们没有了解注解的相关知识,那么看别人的代码也是困难,当然注解也使自己的代码更加简洁,可以让代码变的简单易懂。注解也分为好几种,Jdk注解,第三方注解和自定义注解。Jdk注解:@Override:继承的注解。@Deprecat...

2019-05-11 17:15:47 90

原创 Spring Aop自定义注解方式实现记录用户操作日志功能(SSM)

目的为了实现用户做的每一步操作都被后台记录下来。思路1,创建自定义注解。2,在要记录的方法中加上自定义注解。3,拦截浏览器发送的请求。4,加载访问的类5,获取这个方法的方法名,然后根据AOP拦截的请求进行判断是否是同一个。6,判断这个拦截的方法有没有自定义的注解。7,获取注解的值,然后写入数据库。实现创建数据库DROP TABLE IF EXISTS `sys_log`;...

2019-05-11 16:42:54 2254

原创 docker镜像的基本操作

拉取镜像docker pull [OPTIONS] NAME[:TAG|@DIGEST][OPTIONS]是参数,NAME是镜像名TAG是版本号如果不加版本号的话,默认是latest最新版本。比如我们docker pull ubuntu:14.04如图可以看到ubuntu:14.04已经被拉下来了,默认是在官方镜像库拉下来的,163或者阿里都有,自己可以去官网看一下。如果用dock...

2019-05-10 19:18:50 118

原创 Ubuntu16.04两种方式安装docker

docker安装环境Ubuntu:16.04方式docker有两种安装方式,一种是apt存储库安装,一种是包安装。apt安装首先进行apt-get remove docker docker-engine docker.io卸载之前安装的docker。然后进行更新源。我这里使用的是阿里源,国内源比较快。然后进行apt-get update安装包以允许apt通过HTTPS使用存...

2019-05-10 18:30:00 1014

原创 Spring Cloud之服务网关Zuul

一.Zuul的简单介绍1.zuul是什么zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。Zuul是基于jvm路由和服务的负载均衡器,专为微服务而生的,认证,鉴权,限流,动态路由,监控,弹性,安全,负载均衡,协作单点压测。Zuul相当于外部环境和web网站后端所有请求的前门。2.zuul的工作原理zuul的核心是一系列的过滤器,大...

2019-04-27 20:57:35 234

原创 Spring Cloud之统一配置中心(Spring Cloud Config,Spring Cloud Bus自动刷新功能)

环境jdk1.8,maven,idea,rabbitmq,docker,码云。配置中心使用配置中心的目的,一个是方便维护,一个是为了配置内容的安全和权限,因为各自有各自的配置在远端git上。这样的话就进行隔离。最重要的一点是自动刷新配置。远端git我这里用的是码云,这张图就是说config-server从远端git把配置拉下来,然后在本地git同步一份,如果远端不能使用,那么能使用本地,然...

2019-04-22 17:52:41 411

原创 Spring Cloud之RestTemplate和Feign的使用和源码解析

介绍在Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign,feign注解化更方便使用。 ribbon是一个负载均衡客户端,可以很好的控制http和tcp的一些行为。Feign默认集成了ribbon。RestTemplate中 @LoadBalanced表明这个restRemplate开启负载均衡的功能。Feign1,添加依赖<...

2019-04-22 17:09:41 1028 1

原创 spring boot实现邮件发送功能

首先创建一个spring boot项目,我这里使用的是简单高效的idea编译器。添加依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-...

2019-04-17 16:39:10 386

原创 Spring Cloud之Eureka

微服务介绍微服务是一种新型的服务架构风格,微服务架构是一种将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并与轻量级机制(通常是HTTP资源的API)进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机制进行独立部署。这些服务的集中化管理已经是最少的,它们可以用不同的编程语言编写,并使用不同的数据存储技术。spring cloud和dubbo的对比sp...

2019-04-13 12:06:10 89

原创 阿里巴巴首面之面试题

简历今天下午三点收到了阿里巴巴的电话面试,时长49:36。研发Java工程师(实习生)面试内容基本上都是根据简历上的项目进行延伸的,所以建立一定要做的认真,并且要严谨,里边不能有虚假内容,不然真的能问到你冒汗的。面试题高并发根据项目延伸的如果在高并发或者分布式的时候会出现哪种情况,线程中的锁 synchronized是很重要,很重要,很重要。要理解这个的对象锁和类锁的区别和应用。...

2019-04-11 19:32:22 112

原创 详解二分搜索树

二分搜索树介绍树结构在计算机领域应用极其广泛,树结构也分为多种,二叉树,完全二叉树和满二叉树,二分搜索树是一棵二叉树。特点动态数据结构。一棵二叉树。每个节点的值大于其左子树的所有节点的值。每个节点的值小于其右子树的所有节点的值。每一棵子树都是一棵二分搜索树。一般不存在可重复的元素,当然也可以定义重复元素。自身就具有很自然的递归特性。二叉树不一定是"满"的。一个节点也是二叉...

2019-04-09 20:28:48 173

原创 递归算法

介绍定义我们先看一下百度百科上面的定义:递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、...

2019-04-09 15:11:52 103

原创 数据结构之链表实现栈和队列

链表引入前面两篇博客都是用数组实现的栈和队列,数组是一种静态的数据结构,想要实现真正的动态数据结构,就必须要用到链表,链表是一种简单的动态数据结构,它的实现其实就是用到了递归的方式。链表的实现首先写一个私有类进行包装这个节点private class Node{ public E e; public Node next; public N...

2019-04-08 18:06:00 556

原创 数据结构之数组实现队列和循环队列

队列描述队列的定义:先进先出(First In First Out);队列是一种特殊的线性表,只允许在表的头部(front处)进行删除操作,在表的尾部(tail处)进行插入操作的线性数据结构,这种结构就叫做队列。进行插入操作的一端称为队尾,进行删除操作的一端称为队尾。队列的类型:链式队列,即用链表实现的队列。静态队列:即用数组实现的队列。在这里,我们采用用数组实现的静态队列。因为用链表实现的...

2019-04-08 14:37:38 217

原创 数据结构之数组实现栈

栈描述栈,先进后出(Last In First Out) ,它是一种只能在表尾进行插入和删除的特殊线性表。由于栈是一个表,所以数组和链表都可以实现一个栈,数组是一种静态栈,链表是一种动态栈,如果分配空间太大的话,数组栈太浪费内存空间,栈的特性是只能从一端取出元素,也只能从一端存元素,进行操作的这一端就是栈顶,那么在栈中我们主要做的操作就是入栈和压栈。应用栈在生活中用到的也是挺多的,就像是...

2019-04-08 11:57:34 175

原创 数据结构之数组和常见问题

数组数组就是有限的元素序列,用于储存多个相同类型数据的集合。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。二次封装数组平常我们所用到的都是静态数组,静态数组的话就是提前分配好一定大小的空间,然后我们用的时候直接把数据放到分配好的空间中。数组是顺序存储的,数据都是一个一...

2019-04-08 11:20:19 247

原创 java之多线程

线程的概念线程:是进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。线程调度在Java程序中,JVM负责线程的调度。线程调度是值按照特定的机制为多个线程分配CPU的使用权。调度的模式有两种:分时调度和...

2019-03-28 20:14:20 111

原创 Jvm垃圾回收算法

一,JVM概念JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。二,堆与栈栈是运行时的单位,堆是存储的单位。栈解决的是一个程序的运行,就是如何进行数据处理等问题,堆解决的是存储数据的问题,就是在哪里存储数据并且存储到哪里,怎样存储。这样说的话可以理解成堆就...

2019-03-23 11:45:50 79

原创 算法之快速排序算法的实现

快速排序这个算法的鼎鼎大名相信大家都有多耳闻,这个算法被称为20世纪对世界影响最大的之一,它之所以这么出名,可能就是因为像它名字一样,比较快吧。快速排序是从当前数组中选择一个数为基点,之后根据这个数的大小进行判断比这个数大还是比这个数小,下面我们用三种方法来解决这个快速排序算法。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这...

2019-03-22 21:34:01 101

原创 插入排序算法的实现

插入排序的基本思想是:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。算法适用于少量数据的排序,时间复杂度为O(n^2)遍历一个数组,每次遍历一个数的时候,和前边的数判断,如果比前边的数小就和前边的数交换,这样直到满足条件即可。下边我们看一下具体代码的实现public class InsertSort { public static...

2019-03-22 20:44:42 165

原创 Java使用泛型实现选择排序算法

简单来说算法是一种解决问题的步骤,我们今天来解决的问题就是把一串数据按照一定的规则进行排序,我们可能并不知道排序的数据是什么类型,所以我们用泛型来描述数据类型。在下列一串数据中,我们如何进行排序呢{5 , 2 , 6 , 3 , 4 , 8 , 9 , 1 , 7 , 10}首先我们要获得的是第一个数据是最小值,然后依次往右越来越大,所以先把最小的1放到第一个位置上,然后再把2放到第二个位置...

2019-03-19 15:07:21 1528

原创 springmvc的拦截器配置和执行流程

1.拦截器(Interceptor):它依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上,基于Java的反射机制,属于面向切面编程(AOP)的一种运用,就是在service或者一个方法前,调用一个方法,或者在方法后,调用一个方法,比如动态代理就是拦截器的简单实现,在调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在调用方法后打印出字符串,甚至在抛出异常的...

2019-03-18 11:39:52 547 1

原创 spring事务的四种特性

什么是事务?事务一般是指数据库事务,是指作为一个程序执行单元执行的一系列操作,要么完全执行,要么完全不执行。事务就是判断以结果为导向的标准。(1)原子性(atomicity)原子性就是一个不可分割的工作单位。简单地说,就是在日常工作中,老板交给你做一件事情,然后你做到半路做不动了或者说做到最后没做完,那么这个老板就会认为你什么都没有做,做一半的东西不算数,因为老板提前告诉你他只看结果,所以...

2019-03-16 19:43:49 3172

原创 响应重定向和请求转发的区别

在B/C系统中,我们很多时候会进行这个servlet跳转到另一个servlet,比如说我们在一个官网的首页,然后需要进行登陆的话,会弹出登录页面,我们登录之后就又回到首页,这样的话需要servlet之间的跳转。那么我们有两种方式做这个事情。1,请求转发。请求转发实现的原理是servlet与servlet之间在tomcat服务器中进行请求的转发,浏览器中之发送一个请求,这个转发的行为是web服务...

2019-03-16 11:06:29 1558

原创 servlet的生命周期和执行流程

servletservlet没有main方法,它不能够独立运行,需要的是容器的支持,一般我们都是用tomcat作为servlet的运行容器,servlet可以动态的生成html页面。如图所示,在这个B/S模式下,用户输入网址访问,然后浏览器解析成http请求发送到服务器端,服务器端会有一个web服务器程序进行接收请求,然后把请求交给服务器程序去做,服务器程序会生成一个动态的html然后响...

2019-03-16 09:56:38 356

原创 PageHelper实现Mybatis的插件分页(SSM+maven+jsp)

PageHelper是Mybatis的一个插件,可以比较智能化的实现分页,把参数都封装到PageInfo中,我们实现分页,首先应该了解PageInfo参数说明,PageInfo参数如下://当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int size...

2019-03-13 21:31:52 965 4

原创 设计模式之代理模式

代理模式是一种结构性设计模式,他可以为其他对象提供一种代理以控制对这个对象的访问。举个例子,一个班级中,有老师,班长和学生,假期结束,要收作业了,班长负责收学生的作业,那么班长就是代理类,老师就是被代理类。所谓代理,是指具有与被代理对象相同的接口的类,客户端必须通过代理与被代理的目标类进行交互,而代理一般在交互的过程中(交互前后),进行某些特定的处理。优点: 1、职责清晰。 2、高扩展...

2019-03-01 21:27:33 81

原创 Collection,Set,List集合的比较

在集合之前我们都是用数组来存储数据,大家都知道,用数组存储数据的话,数组是一个不可变的,但是存储的数据是可变的,所以用数组已经不是一种好的选择。JDK也提供了一系列特殊的类,这些类可以存储任意的对象,并且长度可变,统称为集合。集合按照其存储结构可以分为两大类:单列集合Collection和双列集合Map,我们今天来讲一下Collection中的集合。Collection:单列集合类的根接口...

2019-03-01 17:18:26 384

原创 设计模式之建造者模式

建造者模式是使用多个简单的对象经过一步一步的构建最终成为复杂的对象,并且将这个复杂对象与其表示进行分离,这种类型的设计模式称为创建型模式。建造者模式通常分为四个角色:1,Builder2,ConcreteBuilder3,Director4,Product优点:建造者独立,易扩展。便于控制细节风险缺点:产品必须有共同点,范围有限制。内部变化复杂,会有很多的建造类。咱...

2019-02-27 09:20:46 76

oracle课程设计图书管理系统

本人写的oracle课程设计,希望大家多多关注,多多支持!

2017-12-09

空空如也

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

TA关注的人

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