自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 问答 (1)
  • 收藏
  • 关注

原创 Bigdecimal

这篇文章,我就简单解释一下浮点数运算出现精度丢失的原因以及BigDecimal的常见用法,希望对大家有帮助!文章已经同步到 JavaGuide 在线网站(Java学习+面试指南,建议复制到浏览器打开):https://javaguide.cn/。BigDecimal 介绍BigDecimal可以实现对浮点数的运算,不会造成精度丢失。通常情况下,大部分需要浮点数精确运算结果的业务场景(比如涉及到钱的场景)都是通过BigDecimal来做的。纳尼,浮点数的运算竟然还...

2021-12-14 14:11:43 466

原创 java注解

序Java注解是在JDK1.5被引入的技术,配合反射可以在运行期间处理注解,配合apt tool可以在编译器处理注解,在JDK1.6之后,apt tool被整合到了javac里面。什么是注解注解其实就是一种标记,常常用于代替冗余复杂的配置(XML、properties)又或者是编译器进行一些检查如JDK自带的Override、Deprecated等,但是它本身并不起任何作用,可以说有它没它都不影响程序的正常运行,注解的作用在于「注解的处理程序」,注解处理程序通过捕获被注解标记的代码然后进行一些处

2021-01-27 14:59:25 279

原创 io模型

前言I/O 一直是很多小伙伴难以理解的一个知识点,这篇文章我会将我所理解的 I/O 讲给你听,希望可以对你有所帮助。I/O何为 I/O?I/O(Input/Outpu) 即输入/输出。我们先从计算机结构的角度来解读一下 I/O。根据冯.诺依曼结构,计算机结构分为 5 大部分:运算器、控制器、存储器、输入设备、输出设备。冯诺依曼体系结构输入设备(比如键盘)和输出设备(比如鼠标)都属于外部设备。网卡、硬盘这种既可以属于输入设备,也可以属于输出设备。输入设备向计算机输入数.

2021-01-27 14:43:39 193

原创 Java8 使用 stream().sorted()对List集合进行排序

Java8 使用 stream().sorted()对List集合进行排序集合对像定义集合对象以学生类(StudentInfo)为例,有学生的基本信息,包括:姓名,性别,年龄,身高,生日几项。使用stream().sorted()进行排序,需要该类实现Comparable接口,该接口只有一个方法需要实现,如下:public int compareTo(T o);有关compareTo方法的实现说明,请参考:Java 关于重写compareTo方法我的学生类代码如下:Stu...

2021-01-11 16:13:07 3030

原创 springbean的详细的声明周期

Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。一、生命周期流程图:  Spring Bean的完整生命周期从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列.

2020-12-14 11:03:54 360

原创 mybatisPlus讲解

一、MP 是什么MP全称Mybatis-Plus,套用官方的解释便是成为 MyBatis 最好的搭档,简称基友。它是在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。1. 三大特性1)润物无声只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。2)效率至上只需简单配置,即可快速进行单表 CRUD 操作,从而节省大量时间。3)丰富功能代码生成、物理分页、性能分析等功能一应俱全。2. 支持数据库 mysql、mariadb、orac...

2020-12-11 14:24:49 1023

原创 web容器、http服务器、servlet容器

以下代码相信大家都很熟悉,大学时学 Java Web 都写过这样的代码。从第一次接触 Servlet 到之后的很长一段时间内,我都没理解 Servlet 是个什么玩意?为什么要有 Servlet ?为什么要有 Servlet 容器?啥又是 Web 容器、HTTP 服务器?今儿咱们就来盘盘,并且从中来看看架构和框架的设计套路。看完之后可能对接口、抽象会有进一步的认识。来,上车!正文首先浏览器发起 HTTP 请求,像早期的时候只会请求一些静态资源,这时候需要一个服务器..

2020-12-09 15:21:06 535

原创 servlet和springmvc

1.简单看看servlet  1.1.servlet继承关系  先看看下面servlet的这个继承关系,有点印象即可(可以暂时忽略ServletConfig,这个接口就是让我们可以从web.xml文件中拿到标签中的参数,比如<servlet-name>,<init-param>等标签中的参数)  然后我们看一下最简单的servlet用法,概念和由来就不说了,说了我们也不懂,就知道能够通过浏览器访问servlet就够了。    1.2.servlet最简单的用法

2020-12-09 15:17:18 3236 3

原创 java8 stream流操作

Stream 在对流进行处理时,不同的流操作以级联的方式形成处理流水线。一个流水线由一个源(source),0 到多个中间操作(intermediate operation)和一个终结操作(terminal operation)完成。源:源是流中元素的来源。Java 提供了很多内置的源,包括数组、集合、生成函数和 I/O 通道等。 中间操作:中间操作在一个流上进行操作,返回结果是一个新的流。这些操作是延迟执行的。 终结操作:终结操作遍历流来产生一个结果或是副作用。在一个流上执行终结操作之...

2020-12-03 14:29:35 143

原创 springboot整合spring-security实现认证授权

1.认证授权数据库中的五张表并使用mybatisplus一一映射。2.使用代码生成器生成生成对应的dao层、service层、impl、domain。3.实现userDetails接口;SpringSecurity用户的实体;重写方法。4.生成token的工具类。5、jwt配置类。6、统一返回结果result7、各种登录登出返回结果处理。8、其中登陆成功要进行token的生成。9、实现userDetailsService接口。根据用户名查询详细的用户信息。10、

2020-11-25 16:51:52 419

原创 单点登录的三种实现方式

在B/S系统中,登录功能通常都是基于Cookie来实现的。当用户登陆成功后一般会将登录状态记录到session中,或者给已过户签发一个token,无论是哪一种方式,都需要在客户端保存一些信息(session id 或者token)并且要求客户端在每次请求中携带它,在这样的场景下 使用cookie无疑是最方便的,因此我们一般会将sessionId或者token保存在cookie中,当服务器收到请求后,会通过验证cookie中的信息来判断用户是否登录。单点登录(single sign on , sso)是.

2020-10-16 10:12:13 1400

原创 记一次nginx配置前后台项目

http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 443 ssl; server_name *.hzqx.com; ssl_certificate cert/4562006__hzqx.com.pem;.

2020-10-13 14:57:47 201

原创 centos挂在ossfs,配置nginx实现ecs访问静态资源

1. 前期准备购买OSS存储资源包、创建Bucket,然后获取一个Access key2. 下载并安装ossfs包根据ECS实例系统版本,在github选择相应的rpm包下载到服务器上,我这里系统是Centos7.7的,所以选择ossfs_1.80.5_centos7.0_x86_64.rpm这个版本Github仓库地址:https://github.com/aliyun/ossfs/releases/执行命令下载wget https://github.com/aliyun/oss

2020-09-24 09:24:48 663 2

原创 springBean的生命周期

一、生命周期流程图:  Spring Bean的完整生命周期从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列关键点。 若容器注册了以上各种接口,程序那么将会按照以上的流程进行。下面将仔细讲解各接口作用。二、各种接口方法分类Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类:1、Bean自身的方法:这个包括了Bean本身调用的方法和通过配置文件中<bean>的init-method和destroy-meth.

2020-09-23 09:59:48 93

原创 springMVC工作流程

2、springmvc工作流程1、 用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由哪个Controller来处理(并未调用Controller,只是得知)3、DispatcherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该要去执行哪个Controller4、HandlerAdapter..

2020-09-22 16:53:41 85

原创 代理模式、静态代理、JDK+CGLIB动态代理

代理模式:使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。代理模式的主要作用是扩展目标对象的功能,比如说在目标对象的某个方法执行前后你可以增加一些自定义的操作。代理模式有静态代理和动态代理两种实现方式,先来看一下静态代理模式的实现。静态代理中,我们对目标对象的每个方法的增强都是手动完成的,非常不灵活(比如接口一旦新增加方法,目标对象和代理对象都要进行修改)且麻烦(需要对每个目标类都单独写一个代理类)。实.

2020-09-22 16:19:24 116

原创 Nginx配置接口转发

进入conf目录下编辑nginx.confserver { listen 9091; server_name localhost; resolver 114.114.114.114; #access_log logs/host.access.log main; location / { proxy_pass http://127.0.0.1$request_uri;

2020-09-22 11:16:38 634

原创 将本地项目上传到码云

如何将本地项目上传到码云步骤:在码云上新建一个项目 XXXX (项目名) 本地创建一个文件夹Windows(E:/XXXX),MAC(Desktop/XXXX),然后使用git bash;或者直接使用使git clone+远程仓库地址 cd 到本地文件夹中Windows(E:/XXXX),MAC(Desktop/XXXX) //如果是在创建的文件中git bash 则此步骤可省略 使用 git init 命令 //初始化一个git 本地仓库此时会在本地创建一个 .git 的文件夹 //如果是c

2020-09-21 18:55:17 238

转载 linux安装mysql

一 安装前准备1、检查是否已经安装过mysql,执行命令[root@localhost /]# rpm -qa | grep mysql从执行结果,可以看出我们已经安装了mysql-libs-5.1.73-5.el6_6.x86_64,执行删除命令[root@localhost /]# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64再次执行查询命令,查看是否删除[root@localhost /]# r...

2020-09-17 11:38:12 125

原创 centos7安装nginx

1.因为Nginx依赖于gcc的编译环境,所以,需要安装编译环境来使Nginx能够编译起来。命令:yum install gcc-c++2.Nginx的http模块需要使用pcre来解析正则表达式,需要安装pcre。命令:yum install -y pcre pcre-devel3.安装依赖的解压包。命令:yum install -y zlib zlib-devel4.ssl 功能需要 openssl 库,安装 openssl。命令:yum instal

2020-09-17 09:44:03 237 2

原创 Docker部署springboot jar文件

1、使用docker部署springboot项目打成的jar包。2、将打好的jar包和dockerfile文件放在同级目录下。(dockerfile如下:)# 基础镜像使用javaFROM java:8# 作者MAINTAINER yin <2481771431@qq.com># VOLUME 指定了临时文件目录为/tmp。# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmpVOLUME /tmp# 将jar包添加到容...

2020-09-03 10:45:23 382

原创 mysql中如何避免插入重复的数据

最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常。以下是通过sql语句直接处理重复记录的插入:1 insert ignore into即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是idx_username索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据:..

2020-09-02 11:41:31 537

原创 RabbitMQ

2020-09-02 11:28:47 64

转载 关于redis面试题。

Redis支持的数据类型? String(字符串) List(集合) Set(不重复集合) hash(即hashmap) sorted(有序集合) 2.什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么? Redis 提供两种持久化机制 RDB(默认) 和 AOF 机制: RDB:是Redis DataBase缩写快照 RDB是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件..

2020-08-05 16:55:01 164

转载 sql优化的经历

我用的数据库是mysql5.6,下面简单的介绍下场景课程表createtableCourse(c_idintPRIMARYKEY,namevarchar(10))数据100条学生表:createtableStudent(idintPRIMARYKEY,namevarchar(10))数据70000条学生成绩表SCCREATEtableSC(sc_idintPRIMARYKEY,s_id...

2020-07-29 16:06:12 180

原创 Explain查看sql执行计划

Explain有什么用当Explain与SQL语句一起使用时,MySQL会显示来自优化器关于SQL执行的信息。也就是说,MySQL解释了它将如何处理该语句,包括如何连接表以及什么顺序连接表等。Explain有哪些信息Explain执行计划包含字段信息如下:分别是id、select_type、table、partitions、type、possible_keys、key、key_len、ref、rows、filtered、Extra12个字段。下边我们会结合具体的SQL...

2020-07-29 10:30:31 676 1

原创 高效使用mysql索引

什么是索引:索引是存储引擎用于快速查找记录的一种数据结构。通过合理的使用索引能大大提高访问性能。(这里针对的是InnoDB存储引擎的B+Tree索引数据结构)索引的优点1、大大减轻了服务器需要扫描的数据量,从而提高了数据的检索速度2、帮助服务器避免排序和临时表3、可以将随机I/O变为顺序I/O索引的创建3.1、主键索引ALTERTABLE'table_name'ADDPRIMARYKEY'index_name'('column');3.2、唯一索引...

2020-07-17 10:17:00 134

原创 观察者模式

————————————场景1:游戏操作界面在一个小游戏中,包含一个简单的操作界面,界面上有两个按钮:道具和魔法。如果点击“道具”按钮,游戏里的主角会使用道具;如果点击“魔法”按钮,游戏里的主角会使用魔法。如何让主角实时接收到点击按钮的事件,并做出相应的行动呢?场景2:游戏迷宫同样在这个小游戏里,有一个迷宫,迷宫里有怪物、陷阱和宝物。一旦主角移动到怪...

2020-07-16 16:43:44 178

转载 单例模式

什么是单例模式?单例模式指的是在内存中只创建一次对象的设计模式。在程序多次使用一个对象且作用相同时,为了防止频繁创建对象而造成内存飙升。单例模式只在内存中创建一次对象,让所有需要的地方都共享这一个对象。单例模式的类型:1.懒汉式:在真正需要使用对象的时候才去创建单例对象。2.饿汉式:在类加载的时候就创建好该单例对象,等待程序调用。懒汉式创建单例对象:懒汉式创建单例对象前,先要判断对象是否已经实例化,若已经实例化则直接调用该对象,否则执行实例化操作。根据上面的流..

2020-07-16 16:07:27 202

原创 代理模式 vs JDK的动态代理

代理模式----静态代理如何实现代理模式呢?首先来看静态代理。静态代理是指在程序运行前就已经存在的编译好的代理类是为静态代理。实现静态代理有四个步骤:①定义业务接口;②被代理类实现业务接口;③定义代理类并实现业务接口;④最后便可通过客户端进行调用。(这里可以理解成程序的main方法里的内容)我们按照这个步骤去实现静态代理。需求:在向数据库添加一个用户时前后打印日志。业务接口IUserService.javapackagecom.zhb.jdk.proxy;/***@a..

2020-07-16 11:06:48 102

原创 ActiveMQ、RocketMQ、Kafka等的对比

消息队列应用场景1、异步处理以用户注册,并且需要注册邮件和短信为例。用户注册后,需要发送注册邮件和注册短信。传统的做法有两种:串行和并行方式。如下图所示:1)串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。2)并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间。假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,.

2020-07-14 16:30:06 576

原创 java中堆和栈的区别

堆和栈都是java在内存中存放数据的地方。堆:(1):堆是java运行时的数据区,类的对象从堆中分配空间。这些对象通过new等指令创建,通过垃圾回收器来销毁。(2):堆的优势在于可以动态的分配内存空间,分配多少空间不必事先告诉编译器,因为他是在运行使其动态分配的;缺点是由于在运行时期分配空间,所以存取速度较慢。栈:(1):栈中主要存放一些基本类型的变量,byte,short,int ,long ,float,double,char,boolean ,和对象的引用。(2):栈的优.

2020-07-14 16:00:13 120

原创 教程地址整合

尚硅谷视频一、Java基础阶段 java基础新版视频教程715集:https://www.bilibili.com/video/BV1Kb411W75N MySQL核心技术:https://www.bilibili.com/video/BV1xW411u7ax Oracle、SQL、PLSQL视频教程:https://www.bilibili.com/video/BV14W411u7wT JDBC视频教程:https://www.bilibili.com/video/

2020-07-10 17:23:54 1787

转载 git设置公钥

git config --global user.name "zxc"配置用户名git config --global user.email "123123@qq.com"配置邮箱此时,会在C:\Users\Administrator目录下生成.gitconfig配置文件:请勿删除!ssh-keygen -t rsa -C "123123@qq.com"生成公钥和私钥按3次Enter,不需要设置名称与密码cat ~/.ssh/id_rsa.pub查...

2020-07-10 16:37:59 2428

原创 使用Docker部署单体web应用

1. 下载一个tomcat的镜像,可以从本地镜像仓库,dockerhub镜像仓库,网易镜像仓库,这里下载tomcat82.docker pull hub.c.163.com/library/tomcat:82.编写一个Dockerfile文件from hub.c.163.com/library/tomcat maintainer zhangchen 61037@qq.com COPY der.war /usr/local/tomcat/webapps 把docker...

2020-07-09 17:16:33 435

原创 centos配置jdk和tomcat

1.使用openjdk,无需配置环境变量yum list installed |grep java yum list installed | grep javayum -y list java* yum install java-1.8.0-openjdk*java -version2.下载jdk解压到usr/local/java中yum -y remove java-1.8.0-openjdk*tar -vzxf jdk-8u191-linux-x64.tar.gz...

2020-07-08 21:27:02 131 1

原创 Docker下载mysql镜像,配置mysql容器并使用

1.先使用阿里云配置Docker下载提速sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://zj8dk6mi.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker2.下载mysql镜像,可选择版本(此处选择5.7)

2020-07-08 17:08:34 356

原创 Centos安装Docker

1.卸载原有docker文件sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-lo

2020-07-08 17:01:29 112

转载 关于微服务架构最好的文章!

本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景。❝为了防止不提供原网址的转载,特加上原文链接:https://www.cnblogs.com/skabyy/p/11396571.html要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。从单体应用到微服务并不是一蹴而就的,这是一个逐渐演变的过程。本文将以一个网上超市应用为例来说明这一过程。最

2020-07-02 10:16:27 185

原创 Spring的依赖注入

前言提起Spring,大家肯定不陌生,它是每一个Java开发者绕不过去的坎。Spring框架为基于java的企业应用程序提供了一整套解决方案,方便开发人员在框架基础快速进行业务开发。在官网中,我们发现它的核心技术之一:Dependency Injection,简称:DI,翻译过来就是依赖注入。今天我们就来盘一盘它。在本文中,我们将深入研究Spring框架DI背后的故事,包括Spring Inversion of Control(控制反转)、DI和ApplicationC...

2020-05-21 19:54:46 175

空空如也

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

TA关注的人

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