自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 问答 (8)
  • 收藏
  • 关注

原创 Oracle分表分区实战(含索引,检查处理)

背景业务需要,未来会对线上环境的一张表每月存储2000w+的数据。一年就达到上亿级??数据量其大可想而知,然而这张表又是单库单表存储,这样的方式肯定是不足以支撑千万甚至上亿万级的数据,大数据量的表还会导致查询随着数据量的增大而不断性能变低,甚至会导致数据库宕机。那么如何处理上千万级,甚至上亿级的数据呢?采用的是分表分区的方式(还可以分库)。遂写次博客记录一下。前言公司用的是Oracle数据库,那么Oracle数据库是怎样的存储结构呢??里面用户,表,表空间,dbf文件的关系又是怎样的呢??这里有必要先

2020-08-04 16:19:49 5114 1

原创 springboot中@Validated+@ControllerAdvice+@ExceptionHandler注解对全局异常的处理

前言为了解决什么问题:1.前端传入大量繁琐数据需要校验,会产生大量 if else语句以及try catch语句导致代码冗杂,不美观。用@Validated注解可以很好的解决。它根据实体类配置的校验规则在进入controller接口的时候就会自动校验参数。2.controller中每一个接口请求都要对异常进行处理,若接口不断增多,不同的异常也会不断增多,会导致异常太过紊乱,不好维护且不好拓展。因此用@ControllerAdvice+@ExceptionHandler对异常做统一处理。正文为了更方

2020-06-29 19:28:05 1941

原创 数字签名,数字证书,证书链原理(图文详解)

数字证书:数字证书是用来认证公钥持有者身份合法性的电子文档,以防止第三方冒充行为。由CA证书授权中心颁发。数字签名:谈及数字签名,就如小时候老师叫把卷子或者作业带回去给家长签字。只不过数字签名非物理用笔签名,是通过计算机电子签名,这过程就涉及身份认证和信息加密。

2020-06-13 12:55:13 5216 6

原创 设计模式 | 简单工厂模式

简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

2022-10-27 14:46:30 707 1

原创 简记一次线上数据迁移:exp,imp

文章目录背景oracle数据迁移minio文件迁移背景       由于客户新弄了一个机房用于容灾。需要对生产环境的数据迁移到新机房,重新部署项目。保证异地多活。2个机房主备,可以随时切换。oracle数据迁移1.查询原机房数据库MCS_ESIGN_SXDB用户的表空间名:select DISTINCT owner,tablespace_name from dba_extents where owner like ‘MCS_ES

2021-07-29 15:56:01 405

原创 Mysql | sql优化实战与常用经验总结

文章目录前言SQL优化知识一个sql的查询流程select执行顺序sql优化常用策略案例总结前言      最近工作上遇到一个sql查询缓慢的问题,觉得这个sql对于sql优化的知识点运用得比较全面。遂记录总结一下,同时整理一下sql优化相关的知识点SQL优化知识一个sql的查询流程首先我们看一看一个sql在MySQL里面是如何运行的:客户端client向mysql服务器发起sql比如查询操作的连接连接成功后,在server的服务

2021-05-11 12:00:42 723

原创 高性能Mysql(三) | 通过haproxy与keepalived对mysql分库分表实现高可用

文章目录前言架构图安装并配置Haproxy安装并且配置KeepalivedHaproxy基础知识及配置文件参数详解KeepAlived基础知识与配置参数详解前言      前文介绍了基于MyCat分库分表,读写分离,主从同步。本文则着重介绍如何通过haproxy负载均衡以及keepalived心跳机制搭建Mysql高可用架构。架构图前文:本文:在之前的架构上进行升级,实现高可用。192.168.43.110 mysql maste

2021-04-30 14:11:46 1162

原创 高性能Mysql(二) | 基于MyCat分库分表,读写分离,主从同步

文章目录前言MyCat安装与配置(需要装JDK)启动MyCat检验效果前言      前文介绍了主从同步原理以及进行了实操演示,本文在前文的基础上学习基于mycat分库分表,读写分离.MyCat示例架构图:192.168.43.110:数据库test01,数据库test02,分别有student表192.168.43.111:数据库test01,数据库test02,分别有student表192.168.43.216:安装mycat,

2021-04-29 15:01:12 2815

原创 高性能Mysql(一) | 主从同步原理与实操

文章目录前言准备安装MySQLMysql 5.5版本(建议,但是此安装方式/etc目录下没有my.cnf文件,需手动准备)Mysql 8 版本(8可能会出问题,笔者一开用的8,改了my.cnf文件后死活启动不起来)主从同步配置master的my.cnf文件配置slave的my.cnf文件重启主从节点的mysqlslave从节点指定master检验效果其他知识点前言准备准备2台虚拟器,配置好网络,保证互通。各自装上mysql虚拟机1:192.168.43.110虚拟机2:192.168.43.111

2021-04-27 20:51:49 314

转载 [MySQL高级](一) EXPLAIN用法和结果分析

1. EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 ➤ 通过EXPLAIN,我们可以分析出以下结果: 表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表有多少行被优化器查询 ➤ 使用方式如下: EXPLAIN +SQL语句 EXPLAIN SELECT * FROM t1 执行计划包含的信息 ...

2021-04-15 10:23:31 163

转载 MySQL索引-B+树(看完你就明白了)

转载自:刘召考的博客 » MySQL索引-B+树(看完你就明白了)

2021-04-09 10:57:29 113

原创 Minio(二) | Minio多用户权限控制

文章目录前言Minio客户端的使用权限控制主流程测试Amazon S3 定义的操作:即各种权限配置前言        前文我们学习了minio的基本概念与搭建,那么如果我们有n个系统,n个系统都在使用同一套minio,那么如何来控制每个系统的访问权限呢???本文则重在解决此问题。Minio客户端的使用MinIO客户端快速入门指南       &nbs

2021-03-23 17:03:08 24279 6

原创 Minio(一) | 搭建Minio服务器(单节点)

文章目录Minio介绍简述特点单节点搭建Minio下载Minio。创建目录存放minio文件和数据准备Minio.serviceMinio介绍简述        MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

2021-03-23 14:21:47 6065 6

原创 Minio(三) | Minio分布式集群搭建

文章目录简述主流程准备虚拟机:2台centos7(配置好网络,保证2台虚拟机互通)准备搭建minio相关文件创建目录,并创建或者放入相关文件给文件加权限(在文件所在目录执行命令)编写run.sh启动文件准备minio.service系统服务文件另外的虚拟机节点依次重复上述步骤启动minio服务简述          搭建分布式minio,主流程就是各个节点都要写一个相同的启动脚本,做一些配置,比如用户名,

2021-03-23 11:04:33 4702 6

转载 Spring源码学习(六) | Spring循环引用

子路老师已经对循环引用作出了非常清晰明了的讲解,请移步至子路老师的博客阅读。此博文只是用于学习归档。如侵权,请联系博主,立刻删除。spring源码系列(一)——spring循环引用

2021-03-17 16:03:00 143

原创 Spring源码学习(五) | Bean的实例化过程

文章目录前言前言       上文分析学习了@Configuration配置类的相关知识点,本文则着重通过源码来分析学习bean的实例化过程。我们在平常的开发当中,无时无刻都会涉及到bean,那么bean在spring容器中是如何被实例化出来的呢?创建bean的时候,bean里面的bean又是如何处理的呢??...

2021-03-17 15:41:16 697

原创 夯实Spring(七) | @import注解的三种使用方式:普通类,ImportSelector,ImportBeanDefinitionRegistrar

文章目录前言@import简述导入普通类导入实现了ImportSelector接口的类前言        最近在阅读spring源码过程中,发现源码中有对@import注解的处理,且这个注解相关知识点在springboot,springcloud以及mybatis框架中或多或少都有用到,由此可见其的重要性。然而本人对@import相关知识点也了解得不多,遂作此篇文章对这个知识点的整理与学习。@import简述 

2021-03-09 16:28:13 968

原创 Spring源码学习(四) | @Configuration的cglib动态代理

文章目录前言例子@Configuration :full or lite设置 full or liteCglib生成代理类AppConfigWhere is it generated ???How to generate ???总结前言        上文分析学习了ConfigurationClassPostProcessor类的执行流程以及作用,本文则着重学习@Configuration这个注解有关的一些知识点。例子首

2021-02-26 22:27:34 2024 1

原创 Spring源码学习(三) | ConfigurationClassPostProcessor解析配置类

文章目录前言正文前言         前文学习了Spring容器启动的主流程分析,Spring会在AnnotatedBeanDefinitionReader加载几个类成为BeanDefinition,下面我们着重学习其中的一个类ConfigurationClassPostProcessor在context.refresh()时候具体干了些什么。正文首先看一下类图,ConfigurationClassPostP

2021-02-18 15:36:24 404

原创 Spring源码学习(二) | 主流程分析

文章目录前言主流程分析一:new AnnotationConfigApplicationContext()主流程分析二:context.register(AppConfig.class);主流程分析三:context.refresh();前言       上一篇介绍了源码结构以及Spring容器内部成员,本文着重分析学习spring容器启动的主流程过程:如下代码的整个流程,以及在这个过程中可以运用在实际工作中的知识点。(文中涉及到的概

2021-02-08 17:01:49 2493 1

原创 Spring源码学习(一) | 源码结构以及Spring容器内部成员概述

文章目录前言源码结构Spring容器启动简单demoSpring容器包含成员以及作用概述前言       Spring是一个开源的功能十分强大的框架。旨在业务逻辑层与其他层的解耦。本系列主要通过一个spring容器启动的demo来分析学习spring容器是如何加载bean到容器等相关知识。本文则概述源码结构和spring容器包含的大体成员及作用来为后续学习做准备。源码结构Spring框架是一个分层框架,包含一系列的功能。从上述图

2021-02-08 15:51:51 815 3

转载 Cookie、SessionStorage和LocalStorage的区别

一、 概念的理解 webstorage本地存储 1)webstorage是本地存储,存储在客户端,包括localStorage和sessionStorage 2)localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信 3)sessionStorage仅在当前会话下有效,关闭页面或浏览器后被清除。存...

2020-11-24 10:45:42 2230

原创 夯实Spring(六) | BeanFactory 与 FactoryBean

文章目录概述BeanFactoryFactoryBean总结概述BeanFactory是一个接口,它是spring中的一个工厂,能够生产bean,获取bean,也就是IOC容器或对象工厂。FactoryBean也是一个接口,实现了3个方法,通过重写其中的getObject()方法自定义生成bean逻辑创建一个新的bean,为IOC容器中Bean的实现提供了更加灵活的方式,FactoryBean在IOC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式。不止Spring中,包括mybati

2020-11-16 15:29:41 213

原创 夯实Spring(五) | 搭建Spring源码环境

文章目录前言安装gradleidea2020导入Spring源码前言本文阐述了如何搭建spring源码阅读环境,为后续源码学习做准备。安装gradle1.选择需要的版本,本文6.7。从官网下载gradle:https://gradle.org/releases/2.解压下载的压缩包,并且配置gradle环境变量3.新增系统变量GRADLE_HOME,这里配置为解压gradle的路径编辑path变量,新增gradle的变量4.检查是否安装完成,cmd命令行输入gradle -vid

2020-11-13 17:55:03 240

原创 夯实Spring(四) | 手写一个山寨版JDK动态代理

前言      从Spring Aop学习到有2种实现方式对类的代理生成从而实现方法的增强:1.JDK动态代理:通过接口,然后利用java反射完成对类的动态创建2.Cglib动态代理:通过继承来操作子类的字节码生成代理类那么如何理解代理??代理有几种方式??以及Java是如何实现JDK动态代理的呢??本文将着重介绍这块知识点。什么是代理?      代理,生活当中处处都可见代

2020-11-05 10:30:42 131

原创 夯实Spring(三) | Spring Aop 与 AspectJ

前言         谈起spring,Aop当然是其中的重中之重。本文简要讲解Aop理论知识,以及根据demo着重讲解Aspectj的基本用法。spring Aop 的语法这里不作介绍。Aop是什么?       Aop是面向切面编程,它通过动态代理的方式为程序添加统一的功能,集中解决一些公共问题。如日志处理,事务控制等等。 &n

2020-11-02 11:51:18 346

原创 夯实Spring(二) | Singleton Beans with Prototype-bean Dependencies

官网介绍Singleton Beans with Prototype-bean Dependencies:Spring中单例bean引入Prototype原型bean导致Prototype bean失效问题,此时的Prototype bean始终是同一个bean首先看一看官方文档:https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html翻译翻译如下:  &

2020-10-23 16:00:17 174

原创 夯实Spring(一) | Spring编程的3种 code style

文章目录前言前言此文主要是为了对spring编程的一个回顾以及总结,为后续spring源码学习夯实基础。主要阐述spring编程的三种编程风格:schemal-based-------基于xml配置文件annotation-based-----基于annotation注解java-based----java Configuration(springboot)首先看一看spring官方文档:https://spring.io/projects/spring-frameworkhttps:/

2020-10-22 17:05:47 491

原创 Oracle表空间满了之如何扩容

背景预发布环境压力测试的时候,后台报错:ORA-01654: 索引 TSA.TS_TIME_0_2020_09 无法通过 1024 (在表空间 TSA 中) 扩展定位问题无法拓展,可猜测数据库表空间满了,导致无法继续存储数据查看数据量:查看dbf文件位置和大小:SELECT T.TABLESPACE_NAME,D.FILE_NAME,D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUS FROM DBA_TABLESPACES T,DBA_DATA_FI

2020-09-30 15:58:42 2623

原创 记一次Oracle定时器调用存储过程的坑

背景Oracle用scheduler写了一个定时器调用存储过程,每个月创建一次表。结果到定时器的执行时间了表却没有创建(预发布环境)。本地环境正常,模拟环境正常,开发环境正常,测试环境正常预发布环境异常没创建表(此时心中:万马奔腾,不得不提一句,docker真香)排查问题刚发现这个问题的时候,一脸懵逼。特么本地环境,模拟环境,开发环境,测试环境都ok了,咋个预发布环境就出问题了??带着一脸懵逼,还是默默打开了oracle,查看了下定时器select job_name,start_date,

2020-09-29 17:03:57 888 1

原创 Spring boot源码深入学习(六) | 容器的创建,准备,刷新,启动

回顾上一篇学习了prepareEnvironment准备环境:1.初始化环境2.配置环境3.加载配置文件.通过ApplicationEnvironmentPreparedEvent事件发布,执行对应的监听器事件4.绑定环境到SpringApplication下面学习一下容器的创建,准备,刷新,启动。首先看一看核心run方法流程回顾一下: public ConfigurableApplicationContext run(String... args) { // 实例化一个stopWat

2020-09-22 15:19:35 475

原创 记一次高并发压测过程中遇到的坑

背景测试在用jmeter进行压力测试,在并发量高的时候,先后出现的一系列问题。这里总结一下做个回顾环境:主机A:window 版本的 nginx主机B:Linux VMware2台虚拟机:虚拟机A:部署项目服务虚拟机B:Oracle,redis流程:nginx部署单结点服务在虚拟机A上面,通过jmeter进行压力测试。排查问题思路:1.检查nginx错误日志,后台日志问题一:nginx突破1024限制在高并发的时候,遇到的第一个问题:请求一部分失败,一部分成功。1.jmeter报

2020-09-22 10:11:51 4018

转载 查询数据库当前连接数(session),进程数,修改最大连接数等操作

如侵权,请联系博主,立马删除。谢谢   查询数据库当前连接数(session),进程数等操作   查询当前数据库连接数,进程数,启动数据库 查询数据库当前进程的连接数:   select count(*) from v$process;   查看数据库当前会话的连接数:   elect count(*) from v$session;   查看数据库的并发连接数:   sel

2020-09-21 15:40:14 918

转载 linux 大量的TIME_WAIT解决办法

如侵权,请联系博主,立马删除。谢谢 发现存在大量TIME_WAIT状态的连接tcp        0      0 127.0.0.1:3306              127.0.0.1:41378           &nbsp

2020-09-21 15:28:36 439

原创 nignx:maximum number of descriptors supported by select() is 1024 while connecting to upstream

背景测试在用jmeter进行压力测试,在并发量高的时候,出现接口时而正常时而失败的情况。并发量低没有问题。版本:window问题nginx log报错:maximum number of descriptors supported by select() is 1024 while connecting to upstreammaximum number of descriptors supported by select() is 1024 while waiting for request

2020-09-17 10:48:38 4804

原创 Spring boot源码深入学习(五) | 准备环境时application配置文件的加载优先级

回顾上一篇写到springboot中准备环境prepareEnvironment的实现逻辑,下面着重学习一下application.properties或者application.yaml的加载顺序正文由图可知,我们可以看到,会从4个路径下面分别去加载配置文件。下面我写了一个demo,看一下各个位置的加载优先级。优先级从高到低依次为file:./config/ :项目根目录找config文件夹下找配置文件。图中:端口1111file:./ :根目录下找配置文件。图中:端口2222==clas

2020-09-16 15:58:21 840

原创 Spring boot源码深入学习(四) | prepareEnvironment准备环境

文章目录回顾prepareEnvironment源码分析初始化环境getOrCreateEnvironment配置环境configureEnvironment事件发布,加载配置文件listeners.environmentPrepared(environment)总结回顾上一篇学习了springboot中:1.SpringApplication的实例化流程2.springboot读取spring.factories文件,获取监听器,第一次执行发布事件流程等等下面接着后面的分析学习:【1】获取监听

2020-09-14 19:48:10 784

原创 Spring boot源码深入学习(三) | SpringApplication实例化以及第一个监听器事件发布

回顾上一篇讲到springboot大体的启动流程:【1】获取监听器【2】准备环境【3】控制台打印Banner【4】创建容器,根据不同类型创建不同的容器【5】实例化异常报告期实例,用于记录启动过程中的错误。【6】准备容器,给刚刚创建的容器做一些初始化工作【7】刷新容器,这一步至关重要。后续再做解析【8】刷新容器后的一些操作,这里是空方法下面详解分析一下。SpringApplication的实例化run方法调用过程中会实例化一个SpringApplication对象,里面操作了几步,这里

2020-09-10 15:42:34 800

原创 Spring boot源码深入学习(二) | 源码结构及启动流程概要

文章目录前言源码结构启动流程概括前言      上一篇中介绍了如何搭建Spring boot源码本地阅读环境,那么现在就可以开始我们的源码阅读了。本文简单介绍springboot源码结构以及大概介绍springboot启动流程的各个步骤,先有一个宏观的逻辑概念,学习springboot启动的各个流程,之后再详细各个步骤分析学习。源码结构spring-boot-project:SpringBoot框架的核心,功能都在这里实现Spring

2020-09-10 10:43:32 1158

原创 Spring boot源码深入学习(一) | 搭建源码阅读环境

前言“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”       在前俩年的工作经验中,一来各种技术层出不穷,二来时间上确实不够充裕,三来觉得刚起步各种技术会用就行,花太多时间阅读源码性价比着实不高。对于各种技术总是浅尝即止,然而越到后面越发现,若不是对源码有深入的学习,是很难写出优质的代码。最重要的一点是,我们在使用某些技术或者框架时,遇到某些问题,若不了解它,那么发生了问题,肯定原因在我自己身上,而不是框架的问题。

2020-09-09 11:00:32 2917 2

空空如也

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

TA关注的人

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