自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA常用集合

特点:有序、可重复、有索引底层原理:a. 数据结构为数组,内存连续,根据索引查询快;删除和添加效率低,需要移动元素位置。b.创建一个ArrayList集合时,会先创建一个长度为0的数组,用一个指针size指向第0个位置,当第一次add元素时,会将数组扩容成一个长度为10的数组,size指针指向第1个位置。(size的指向是数组长度,也是下次存入数据的位置)c. 扩容,当数组元素存满时,进行数组扩容,扩容为原来长度的1.5倍,将老数组中的数据迁移到新数组中,然后向新数组添加元素。

2024-04-25 23:07:44 540

原创 JDK8新特性

JDK8新特性

2024-04-21 17:23:12 876

原创 MySQL用户创建和权限分配

GRANT ON 数据库名.表名 TO ‘用户名’@‘localhost’ [IDENTIFIED BY ‘密码’] [WITH GRANT OPTION];create user ‘用户名’ @ ‘host’ identified by '密码’;REVOKE ON 数据库名.表名 FROM ‘用户名’@‘localhost’IDENTIFIED BY ‘密码’ 也是可选的,如果带上,密码是当前用户的密码。drop user ‘用户名’ @ ‘host’;

2024-03-06 20:42:19 470

原创 SpringBoot整合Redis

首先看一下RedisTemplate类的源码中的afterPropertiesSet()方法,这个方法是在启动springboot项目配置redis之前进行的一些操作;从代码中可以看到,redis在配置序列话的方式的时候,默认使用的是JDK的序列化,如果我们需要自定义序列化就可以在配置文件中进行配置@Nullable@Nullable@Nullable@Nullable= null?

2023-10-31 22:29:17 172

原创 多线程之线程基础

进程(process)和线程(thread):例如:在我们使用视频app看视频的时候,打开一个app就是运行一个进程,而我们同时可以看到图像、音频、弹幕等等,其中的图像、音频、弹幕分别是一个线程在同时执行任务。进程是程序执行的一个过程,动态的,是系统资源分配的最小单位;一个进程包含至少一个或包含多个线程,线程是cup调度和执行的最小单位;

2023-03-24 17:55:27 234

原创 多线程之线程池

线程池的本质是池化技术,所谓池化技术,是程序在运行时会占用资源,为了优化资源的使用使用池化技术。比如JDBC连接池,由于和数据库建立连接和关闭时比较消耗资源,所以事先准备好资源。线程池的优点:降低资源消耗,提高响应速度,而且方便管理,最重要的是线程服用,可以控制并发数量。

2022-09-22 22:36:27 183

原创 SpringBoot底层注解

SpringBoot底层注解

2022-07-03 16:11:39 158

原创 SpringCloud组件的选用

注册中心Eureka:已经停止维护替代者:ZookeeperConsulNacos:推荐使用服务调用Ribbon:已经进入维护阶段LoadBalancer:替代RibbonFeign:已经不推荐使用OpenFeign:替代Fegin服务降级Hystrix:国内使用较多Resilience4j:国外使用较多sentienl:SpringCloud Alibaba的熔断与限流,推荐使用网关Zuul:以过时Zuul2:不推荐使用GateWay:推荐使用服务配置

2021-12-13 21:35:00 1737

原创 SpringCloud和Stringboot版本应该如何选择?

SpringBoot版本官网推荐强烈使用Springboot1.5版本以上的版本SpringCloud和Springboot的版本兼容官网:https://spring.io/projects/spring-cloud版本兼容如下:但是SpringCloud版本G之前的版本已经不推荐使用!更详细的兼容问题Spring官网更详细的版本兼容信息:https://start.spring.io/actuator/info“spring-cloud”: {“Hoxton.SR12”:

2021-12-13 21:12:04 254

原创 System类

System类package system;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintStream;import java.util.Arrays;import java.util.Map;import java.util.Properties;public class System01 { public st

2021-10-27 10:56:09 86

原创 SpringSecurity认证的底层代码实现

引言:在使用springSecurity后,我们知道有一个默认的接口"/login"可以实现认证功能(即通过用户名和密码登录),在登录时通常会看到"Bad credentials",那么是什么地方抛出的呢?它底层是如何实现的呢? 陷入沉思…(手动点烟!)SpringSecurity认证源码分析我们知道SpringSecurity的本质是一个过滤器链,即一个一个的过滤器,至于在springBoot启动的时候是如何加载的还没去研究.我们只需要知道其中的一个过滤器是UsernamePasswordAut.

2021-10-25 17:06:37 198 2

原创 SpringDataJPA_04

多表之间的关系表关系一对一:特殊的一对多一对多:主表对多个从表.在从表上新建一系列的外键,它的取值来自主表的主键多对多:利用中间表来关联,中间表至少有两个字段组成,这两个字段作为外键指向两张主表的主键,又组成联合主键.实体类关系:包含关系:可以通过实体类中的包含关系描述表关系继承关系开发时的步骤:明确表关系确定表关系(描述 外键|中间表)编写实体类,在实体类中描述表关系(包含关系)配置映射关系一对多配置第一步:编写一的一方实体类和多的一方实体类

2021-10-18 16:54:37 96

原创 SpringDataJPA_03

JpaSpecification动态查询JpaSpecificationExecutor方法列表:查询单个对象Optional findOne(@Nullable Specification spec);查询列表List findAll(@Nullable Specification spec);查询全部,分页pageable:分页参数Page:返回值,是由springdatajpa提供Page findAll(@Nullable Specification spec, Page

2021-10-18 13:47:52 68

原创 SpringDataJPA_02

SpringDataJPA简介SpringDataJPA是Spring的基于ORM框架,它在JPA的基础上封装了一套JPA应用框架,可以使开发者用极简的代码即可实现数据库的访问和操作,它提供了包括CRUD在内的常用操作.SpringDataJPA使开发者脱离了DAO层的操作,基本上所有的CRUD都可以用它来实现,一般使用SpringDataJPA+ORM框架(如:Hibernate)来实现操作,这样在切换ORM框架时及其方便,实现解耦.JPA 和 Hibernate 和 SpringDataJPA

2021-10-15 14:02:19 76

原创 SpringDataJPA_01

ORM思想我们在用JDBC操作数据库时,操作非常繁琐:1.注册驱动2.获取连接3.拼接SQL,提供占位符4.创建执行SQL对象5.执行SQL我们利用ORM的思想封装成工具类,可以通过Obj.save(),Obj.get()等方法来对数据库进行操作.这样实体类和数据库建立映射关系,通过实体类找到表,通过实体类中的属性找到表中的字段.核心: 操作实体类就相当于操作数据库表;思想: 建立实体类和数据库表映射,建立实体类中属性和表中字段的映射关系.HibernateHibernate

2021-10-14 15:35:27 64

原创 SpringSecurity-02

设置登入的用户名和密码第一种方式:配置文件设置只需要在spring的appliaction配置文件中设置两个属性spring.security.user.name=adminspring.security.user.password=123第二种方式:配置类创建一个配置类:package com.shao.securitydemo01.conif;import org.springframework.beans.factory.annotation.Autowired;import o

2021-08-26 09:52:12 96

原创 SpringSecurity-01

SpringSecurity初体验第一步:创建SpringBoot项目第二步:导入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/

2021-08-22 20:04:36 89

原创 代理模式(JDK动态代理)

什么是代理模式?所谓的代理者是指一个类别可以作为其它东西的接口。为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。它的组成有:抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。代理模式有什么作用?1.功能增

2021-07-11 18:57:01 181

原创 String类

String类中常用的方法.length():获取字符串长度.substring(a,b):截取字符串.equals()和equalsIgnoreCase():比较两个字符串是否相等,前者区分大小写.startsWith()和endWith():判断字符串是否以xxx开始和结束.indexOf():查找字符串最先出现的地方的下标.lastindexOf():查找字符或者字符串最后一次出现地方的下标.getchars():截取a字符串,并由b字符串接收.例子:a.getchars(a的开始下标

2021-07-01 16:05:52 69

原创 Nacos-配置中心

Nacos简介Nacos是阿里的一个开源的框架,它是针对微服务架构中的服务发现,配置管理,服务治理的一套解决方案.它集服务动态发现、服务配置、服务元数据及流量管理于一体的管理中心,能帮助我们更好的发现、配置和管理微服务。它支持几乎所有主流类型的“服务”的发现、配置和管理,如:Kubernetes ServicegRPC & Dubbo RPC ServiceSpring Cloud RESTful ServiceNacos的特性:服务发现与服务健康检查动态配置管理动态DNS

2021-06-23 23:28:27 383

原创 回顾Java反射

Class类常用的方法static ClassforName(String name):返回指定类名name的Class对象.Object newinstance():调用缺省构造函数,返回Class对象的一个实例.getName():返回此Class对象所表示的实体(类,接口,数组类或Void)的名称.Class getSuperClass():返回当前Class对象的父类的Class对象.Class[] getInterfaces():获取当前Class对象的接口.ClassLoader g

2021-06-18 20:53:36 56

原创 Java注解及自定义注解

什么是注解?注解的英文单词是Annotation.Annotation是JDK1.5之后开始引入的技术;Annotation的作用:不属于程序本身,可以对程序做出解释,可以有注释的作用.另外它可以被其他程序(比如编译器)读取.Annotation的格式:@注释名,可以对其添加一些参数值,如@SuppresWaring(value=“unchecked”)Annotation可以被用在pockage,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编

2021-06-05 00:07:42 74

原创 实体类定义规则

PO(Entity):持久层对象PO对应数据库中的Entity,可以简单的认为一个PO对应数据库中的一条记录.VO:表现层对象VO主要对应页面显示的数据对象.可以和数据库表对应,也可以不对应,根据业务需求而定,页面需要什么数据VO就可以封装什么数据.DTO:数据传输对象比如一个表中有一百个字段,那么它对应的PO就有一百个属性.但是View只要十个字段,这些字段可以来自同一个表,也可以来自不同的表.我们没必要把所有表中的字段返回给View,那么我们就可以把View所需要的字段封装到DTO对象中,这样

2021-06-04 22:56:34 325 1

原创 什么是云计算?什么是IaaS PaaS SaaS?

什么是云计算?计算机刚诞生的时候,没有网络每个电脑都是一个独立的个体,俗称单机.它包括CPU,内存,显卡,硬盘等硬件.用户在电脑上安装操作系统和软件.后来有了网络,单机之间可以相互通信,进行信息交互.再后来有了单机性能越来越强,于是有了服务器.人们把服务器集中放在机房里,用户通过网络去访问机房中的计算机资源.再再后来小型网络就变成了大型网络,小机房变成大机房–即互联网数据中心(IDC)当越来越多的计算机资源和应用服务(Application例如看电影)被集中起来,就变成了云计算,无数的大机房就变

2021-06-03 22:49:17 263 1

原创 微服务02-再谈微服务

什么是微服务架构?提出者:Martin Fowler微服务架构是一种架构模式,架构风格,它提倡将单一的应用程序划分成一组小的服务,每个服务运行在其独立的进程里而不是线程中.服务之间相互协调,相互配置,各个服务组装起来为用户提供最终价值.服务之间采用轻量级的通讯机制互相沟通,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中.另外,应尽量避免统一的,集中式的管理机制,对于具体的一个服务而言,应根据业务上下文选择合适的语言和工具对其进行构建(Maven),可以有一个非轻量级的集中式管理来协

2021-05-21 18:23:18 99

原创 Redis03-持久化策略和主从复制

Redis的持久化策略RDB:redis的默认策略,在指定时间内生成数据快照,默认保存到dump.rdb文件中,当redis重启的时候会自动加载dump.rdb文件到内存中。用户可以使用SAVE(同步)BSACE(异步)手动保存数据,可以设置服务器的save选项让服务器每间隔一段时间执行一次Bsave命令.优点:rdb是一个紧凑文件,直接使用rdb文件就可以还原数据,数据保存由一个子进程保存,不影响父进程的其他操作,恢复数据效率高于AOP.缺点:每次保存点之间导致redis不可意料的关

2021-05-19 15:15:57 79 2

原创 Redis02-常用命令和五种存储类型

全局指令keys * 查询所有的键,会遍历所有的键值,时间复杂度O(n)dbsize 查询键总数,直接获取redis内置的键总数变量,时间复杂度O(1)exists key 判断Key是否存在,存在返回1,不存在返回0del key [key…] 返回结果为成功删除键的个数指定Key的过期时间,当超过过期时间,会自动删除,expire key seconds key在seconds秒后过期expireat key timestamp 键在秒级时间戳timestamp后过期pexpire

2021-05-19 11:03:12 55

原创 Redis01-了解Reidis和Reids安装

一.什么是NoSQL数据库目前主流的持久层数据库都是关系型数据库,每次操作数据库都是i/o操作,i/o操作是主要影响程序执行性能的原因,连接关系型数据库都是消耗性能的过程。关系型数据库的数据结构都是树状机构,当深度比较深时查询数据比较慢。所谓NoSQL是Not Only SQL不仅仅使用关系型数据库.目前的项目大多是使用关系型数据库和非关系型数据库结合的形式进行数据存储的.二.Redis简介Redis是以C语言进行编写的。Redis平时操作数据都在内存中,读写效率极其高,所以常用作缓存工具。R

2021-05-19 09:54:48 97

原创 微服务01-认识微服务

微服务的本质是什么?是由all in one到模块化的转变,在微服务之前我们很多的项目都是把所有的服务功能都放到一个模块中.随着用户量的增大,服务器的压力也越来越大,负载均衡也解决不了.这个时候微服务框架就能解决这个问题.在一个项目中,往往有的模块的功能使用频率极大,而有的模块功能使用频率较小,这个时候我们就可以把这些功能模块拆分出来作为一个独立模块发布到一个独立的服务器上,使用频率大的模块就多分配几个服务器,使用频率小的模块就少分配几个服务器.这样就能很好的缓解服务器的压力.微服务的开发模式面临着什

2021-05-16 19:25:11 104 2

原创 MySQL-01

一.基本命令mysql -u(username) -p(password) --连接数据库update mysql.user set authentication_String=password(‘password’) where user=(‘username’) and Host = ‘localhost’;–修改用户密码flush privilleges;–刷新权限show databases;–查看所有数据库use 数据库名;–切换数据库show tables;–查看数据中所有表

2021-05-14 14:10:04 83

原创 SpringMVC执行流程剖析

SpringMVC执行流程流程中的几个关键点: DispatcherServlet中重写的doService() doService()中调用的doDispatch() doDispatch()中调用的getHandler()获取HandlerExecutionChain处理器请求链 doDispatch()中调用的getHandlerAdapter()获取处理器适配器 doDispatch()中调用的handle()接口的实现类中的handle()方法执行我们的Controller. doD

2021-05-11 16:16:09 65

原创 数据库事务

一. 事务的四大原则(ACID)原子性:要么全部成功,要么全部失败.一致性:事务前后的数据要保证一致性,比如赚钱时,两个用户之间的钱总和在这个事务中要是一致不变的.持久性:事务一旦提交就不可逆转,数据被提交到了持久层变成了文件.隔离性:两个事务直接互不相干,当多个用户同时访问数据库时,会为每个用户开启事务,不能被其他事务的操作数据所干扰,事务之间要隔离.因为事务之间需要隔离,那么就会有隔离的级别*二.事务的隔离级别(四个)1. 读未提交数据(READ UNCOMMITTED):允许事务

2021-04-28 15:55:13 181

原创 什么是RPC?

什么是RPC?RPC是Remote Procedure Call的简称,翻译一下就是远程过程调用.是相对于本地过程调用来讲的.什么是RPC协议?百度百科:英文原义:Remote Procedure Call Protocol中文释义:(RFC-1831)远程调用协议 ,最初由RFC-1050定义。注解:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了

2021-04-26 15:50:00 1274

原创 SpringSecurity学习笔记

一.什么是SpringSecurity百度百科:Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。个人理解:在w

2021-04-26 15:33:51 103

原创 Dubbo+Zookeeper服务的注册与调用实现步骤.

一. 什么是dubbo?百度百科:Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [1] Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。原理图:简单来说,dubbo框架能实现远程过程调用,具体流程是provider服务提供者(被调用的一方又称生产者)将服务注册到一个地方

2021-04-23 14:15:40 1951 2

原创 SpringAOP03-注解实现

SpringAOP注解实现切面类@Aspect//标记这是一个切面public class AnnotationPointCut { @Before("execution(* com.shao.service.ServiceImpl.*(..))")//切入点 public void before(){ System.out.println("====方法执行之前"); } @After("execution(* com.shao.service.Se

2021-04-21 18:01:22 69

原创 SpringAOP02-自定义类实现

SpringAOP之自定义类实现第一步自定义类public class Faction { public void after(){ System.out.println("调用方法之后!"); } public void befor(){ System.out.println("调用方法之前"); }}第二步骤注册bean,配置AOP <bean id="Faction" class="com.shao.log.Fac

2021-04-21 17:29:13 63

原创 SpringAOP01-SpringAPI接口实现

SpringAOP之SpringAPI接口实现第一步创建maven项目导入依赖 <dependencies> <!--spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId>

2021-04-21 16:47:10 182 2

原创 Nginx

Linux系统非root权限安装Nginx安装Nginx需要两个依赖pcre和zlib,如果没有这两个依赖是无法安装Nginx的,这就需要我们自己安装,但是非root用户是无法使用yum安装的.这儿可以下载依赖 ,提取码duam.第一种比较顺利的情况第一步:解压tar -zxvf nginx-1.9.9.tar.gz第二步:进入解压完的文件夹cd nginx-1.9.9第三步:配置(prefix=配置到的位置)./configure --prefix=/user/local/nginx

2021-04-15 21:19:36 173

原创 Springboot是如何连接数据库的之底层JDBC连接?

Springboot使用JDBC连接数据库第一步 创建一个springboot项目需要导入两个包:第二步使用idea连接上数据库这是是为了更加方便。idea的功能如此强大,感觉不需要其它的可视化软件,一个idea足矣!第三步编写配置文件就是我们在学习JDBC的时候写的xxx.properties,但是Springboot推荐使用xxx.yml格式。如下spring: datasource: username: root password: 123456 ur

2021-04-14 16:13:24 237

空空如也

空空如也

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

TA关注的人

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