自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (8)
  • 收藏
  • 关注

原创 数据库 | 001-MySQL梳理系列(一)

MySQL基本组成SQL执行流程Server 层主要包括连接器、查询缓存、分析器、优化器、执行器,包含了MySQL主要的很多核心功能,以及所有的内置函数、存储过程、触发器、视图等,其实就是所有跨存储引擎的功能都是在这一层实现的存储引擎层,主要负责数据的存储和读取,是以插件的形式存在的 ,支持如 InnoDB 、MyISAM、Memory 等多个存储引擎,现在默认为 InnoDB查询缓存当一个SQL执行时首先会进入查询缓存查看之前是否执行过该语句,如果执行过则会以key-value的形

2021-01-26 09:03:14 149

原创 效率工具 | 快速创建虚拟机,Vagrant真香!

Vagrant 是一个基于Ruby的工具,主要用于创建和部署虚拟化开发环境。它以来于Oracle的开源VirtualBox虚拟化系统,通过使用 Chef创建自动化虚拟环境。Vagrant 主要的功能如下:建立和删除虚拟机配置虚拟机相关参数管理虚拟机运行状态自动配置和安装开发环境打包和分发虚拟机运行环境因为 Vagrant 依赖于某种虚拟化技术,目前支持常见的 VirtualBox、 VMWare等,所以在使用Vagrant之前我们需要先安装VirtualBox或 VMWare,不然..

2021-01-06 08:43:30 262

原创 [数据库]000 - Sysbench 数据库压力测试工具

000 - ????Sysbench 数据库压力测试工具sysbench 是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以下操作都将以支持MySQL数据库为例进行。1. Linux 上安装 sysbench 工具安装方式有两种,一种是通过 yum/apt 等来安装,另一种自己下载源码包来安装,笔者这里采用的是centos ,采用yum 安装sysbench 的

2020-12-30 08:33:19 360

原创 [JVM工具(1)] 堆栈检查利器jstat的使用

jstat可以检查 JVM 整体的运行情况,可以看到 新生代,老年代等的内存使用情况,以及GC 次数和耗时命令格式 如 jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]其中 -option 必选参数表示命令参数 如 gc 等, -t 为可选参数表示是否打印时间(秒),-h<lines> 可选参数,表示每隔多少行打印头部列表,如设置 -h 5 , 那么每.

2020-12-18 21:06:12 263 2

原创 [JVM工具(1)] 堆栈检查利器jstat的使用

jstat可以检查 JVM 整体的运行情况,可以看到 新生代,老年代等的内存使用情况,以及GC 次数和耗时命令格式 如 jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]其中 -option 必选参数表示命令参数 如 gc 等, -t 为可选参数表示是否打印时间(秒),-h<lines> 可选参数,表示每隔多少行打印头部列表,如设置 -h 5 , 那么每.

2020-12-18 21:04:02 215 1

原创 顺序栈与链式栈的图解与实现

# 顺序栈与链式栈的图解与实现栈是一种特殊的线性表,它与线性表的区别体现在增删操作上栈的特点是先进后出,后进先出,也就是说栈的数据操作只能发生在末端,而不允许在中间节点进行操作如上图所示,对栈的增删操作都只能在末端也就是栈顶操作,栈既然是线性表那么就存在表头和表尾,不过在栈结构中,对其都进行限制改造,表尾用来输入数据也叫做栈顶(top),相应的 表头就是栈底(bottom),栈顶和栈顶是两个指针用来表示这个栈与线性表类似,栈也是又顺序表示和链式表示,分别称作顺序栈和链栈栈的基本操作

2020-12-09 10:12:35 1416

原创 CountDownLatch、CyclicBarrier、Semaphore、Exchanger 的详细解析

本文主要介绍和对比我们常用的几种并发工具类,主要涉及 CountDownLatch 、 CyclicBarrier 、 Semaphore 、 Exchanger 相关的内容,如果对多线程相关内容不熟悉,可以看笔者之前的一些文章:《Java并发编程-线程基础》《总算把线程六种状态的转换说清楚了!》《[高频面试]解释线程池的各个参数含义》《知道线程池的四种拒绝策略吗?》《java中常见的六种线程池详解》《基于synchronized的锁的深度解析》????推荐《JAVA中常见的阻塞队列详解》

2020-11-30 10:11:46 265

原创 优雅关闭线程池的方案

我们经常在项目中使用的线程池,但是是否关心过线程池的关闭呢,可能很多时候直接再项目中直接创建线程池让它一直运行当任务执行结束不在需要了也不去关闭,这其实是存在非常大的风险的,大量的线程常驻在后台对系统资源的占用是巨大的 ,甚至引发异常。所以在我们平时使用线程池时需要注意优雅的关闭,这样可以保证资源的管控。在 Java 中和关闭线程池相关的方法主要有如下:void shutdown()List<Runnable> shutDownNowboolean awaitTerminat..

2020-11-23 15:43:03 228

原创 总算是把 BlockingQueue 说的明明白白了~

在之前的线程池的介绍中我们看到了很多阻塞队列,这篇文章我们主要来说说阻塞队列的事。阻塞队列也就是 BlockingQueue ,这个类是一个接口,同时继承了 Queue 接口,这两个接口都是在JDK5 中加入的 。 BlockingQueue 阻塞队列是线程安全的,在我们业务中是会经常频繁使用到的,如典型的生产者消费的场景,生产者只需要向队列中添加,而消费者负责从队列中获取。如上图展示,我们生产者线程不断的put 元素到队列,而消费者从中take 出元素处理,这样实现了任务与执行任务类之间..

2020-11-16 08:52:16 275

原创 基于synchronized锁的深度解析

1. 问题引入小伙伴们都接触过线程,也都会使用线程,今天我们要讲的是线程安全相关的内容,在这之前我们先来看一个简单的代码案例。代码案例:/** * @url: i-code.online * @author: AnonyStar * @time: 2020/10/14 15:39 */public class ThreadSafaty { //共享变量 static int count = 0; public static void main(String[] ..

2020-11-09 08:52:40 225 1

原创 java中常见的六种线程池详解

之前我们介绍了线程池的四种拒绝策略,了解了线程池参数的含义,那么今天我们来聊聊Java 中常见的几种线程池,以及在jdk7 加入的 ForkJoin 新型线程池首先我们列出Java 中的六种线程池如下线程池名称描述FixedThreadPool核心线程数与最大线程数相同SingleThreadExecutor一个线程的线程池CachedThreadPool核心线程为0,最大线程数为Integer. MAX_VALUEScheduledThreadPool..

2020-11-03 09:23:22 393

原创 知道线程池的四种拒绝策略吗?

在之前的文章中我们知道了线程池各个参数的含义,其中有个参数handler 我们说了是拒绝策略,具体关于线程池的拒绝策略我们这篇文章来分析首先我们要理解线程池的拒绝策略的作用,它是用来处理当线程池无法继续处理更多的任务时的处理机制,那么首先我们要知道拒绝策略的触发时机,我么们来看下面代码:ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( 1, ..

2020-10-29 16:47:03 331

原创 [高频面试]解释线程池的各个参数含义

面试中非常高频的一个面试题:解释一下线程池中各个参数的含义。 这是一个非常常见但是却会卡死一大堆人的一道面试题,能够细致的了解线程池的各个参数的含义对我们学习线程池和使用线程池有着巨大的好处的。首先我们来看一下线程池主要的参数: 参数名参数含义corePoolSize核心线程数maxinumPoolSize最大线程数keepAliveTime空闲线程存活时间unit存活时间的单位workQueue存放线程任务队列threadFactory线..

2020-10-26 08:40:13 315

原创 总算把线程六种状态的转换说清楚了!

在我们接触编程时,就开始接触各种生命周期,比如对象的生命周期,程序的生命周期等等,对于线程来说也是存在自己的生命周期,而且这也是面试与我们深入了解多线程必备的知识,今天我们主要介绍线程的生命周期及其各种状态的转换。线程的六种状态线程的生命周期主要有以下六种状态:New(新创建)Runnable(可运行)Blocked(被阻塞)Waiting(等待)Timed Waiting(计时等待)Terminated(被终止)在我们程序编码中如果想要确定线程当前的状态,可以通过getSta...

2020-10-19 10:55:54 292

原创 如何优雅的停止一个线程?

在之前的文章中 i-code.online -《并发编程-线程基础》我们介绍了线程的创建和终止,从源码的角度去理解了其中的细节,那么现在如果面试有人问你 “如何优雅的停止一个线程?”, 你该如何去回答尼 ?能不能完美的回答尼?对于线程的停止,通常情况下我们是不会去手动去停止的,而是等待线程自然运行至结束停止,但是在我们实际开发中,会有很多情况中我们是需要提前去手动来停止线程,比如程序中出现异常错误,比如使用者关闭程序等情况中。在这些场景下如果不能很好地停止线程那么就会导致各种问题,所以正确的停止程序是.

2020-10-12 19:04:15 252

原创 Java并发编程-线程基础

1. 线程的创建首先我们来复习我们学习 java 时接触的线程创建,这也是面试的时候喜欢问的,有人说两种也有人说三种四种等等,其实我们不能去死记硬背,而应该深入理解其中的原理,当我们理解后就会发现所谓的创建线程实质都是一样的,在我们面试的过程中如果我们能从本质出发回答这样的问题,那么相信一定是个加分项!好了我们不多说了,开始今天的 code 之路1.1 *继承 Thread 类创建线程 ***这是我们最常见的创建线程的方式,通过继承 Thread 类来重写 run 方法,代码如下:/..

2020-10-10 14:35:52 157

原创 下载JDK 与 Hotspot 虚拟机源码

下载 jdk 源码,与 jvm 虚拟机源码,虚拟机现在主流都是 hotspot虚拟机首先进入 openjdk官方网站 http://openjdk.java.net/ ,这个网站中我们可以下载 jdk 源码,也可以下载 hotspot 虚拟机的源码首先我们进入 Mercurial 菜单下,这是一个版本控制器类似 git 、SVN 之类如上图所示,我们可以看到上面列了很多项目,我们这里选择 jdk8u 的项目进入进入后可以直接在线看,也可以直接下载压缩包,这里推荐...

2020-09-29 10:45:05 320

原创 Java操作Elasticsearch 之 [Java High Level REST Clientedit]

1. 简述Elasticsearch 是基于 Lucene 开发的一个分布式全文检索框架,向 Elasticsearch 中存储和从 Elasticsearch 中查询,格式是json。向 Elasticsearch 中存储数据,其实就是向 es 中的 index 下面的 type 中存储 json 类型的数据。elasticsearch 提供了很多语言的客户端用于操作 elasticsearch 服务,例如: java 、 python 、 .net 、 JavaScript 、 PHP ..

2020-09-23 16:23:50 554

原创 《spring源码解读》 - IoC 之解析 import 标签

在上一文中我们分析了注册 BeanDefinition 的过程,在其中我们了解到在解析跟节点和子节点时分两种情况,对于默认名称空间的标签我们通过 DefaultBeanDefinitionDocumentReader#parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) 进行处理,而对于自定义标签则通过 BeanDefinitionParserDelegate#parseCustomElement(Element e.

2020-09-02 15:43:10 492

原创 《spring源码解读》 - ioc之验证模型获取

我们上一篇文章最后调用到 `org.springframework.beans.factory.xml. XmlBeanDefinitionReader#doLoadDocument(...)` 方法,该方法主要代码如下:protected Document doLoadDocument(InputSource inputSource, Resource resource) throws Exception { //getValidationModeForResource是数据验证模型

2020-08-28 10:59:48 465

原创 DES/3DES/AES 三种对称加密算法实现

1. 简单介绍3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。2. 对称加密2.1 介绍对称密码算法是当今应用范围最广,使用频率最高的加密算法。它不仅应用于软件行业,在

2020-06-11 20:32:36 1715

原创 设计模式-委派/策略模式

1. 委派模式1.1 委派模式的简介委派模式不属于 GOF23 种设计模式中。委派模式( Delegate Pattern )的基本作用就是负责任务的调用和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理 的全权代理,但是代理模式注重过程,而委派模式注重结果。1.2 委派模式的使用场景委派模式在 Spring 中应用非常多,大家常用的 DispatcherServlet 其实就是用到了委派模式。现实生活中也常有委 派的场景发生,例如:老板(Boss)给项目经理(Leader)

2020-06-09 15:55:06 630

原创 深入Spring之IOC之加载BeanDefinition

本文主要分析 spring 中 BeanDefinition 的加载,对于其解析我们在后面的文章中专门分析。BeanDefinition 是属于 Spring Bean 模块的,它是对 spring bean 的统一抽象描述定义接口,我们知道在spring中定义bean的方式有很多种,如XML、注解以及自定义标签,同事Bean的类型也有很多种,如常见的工厂Bean、自定义对象、Advisor等等,我们在分析加载BeanDefinition之前,首先来了解它的定义和注册设计。上面类图我们做一个简单介绍.

2020-05-18 23:05:24 699

原创 Hexo+GitHub Actions 完美打造个人博客

Hexo简介Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在GitHub和Coding上,是搭建博客的首选框架。大家可以进入hexo官网进行详细查看,因为Hexo的创建者是台湾人,对中文的支持很友好,可以选择中文进行查看。Hexo搭建步骤安装Git安装Node.js安装Hexo编写github actions推送到github发布文章我们的开发过程是在win环境下,本质和环境没关系,影响不大,首先我们要保证我们的电脑上安装了git ..

2020-05-11 15:23:29 1304

原创 Spring中资源的加载原来是这么一回事啊!

1. 简介在JDK中 java.net.URL 适用于加载资源的类,但是 URL 的实现类都是访问网络资源的,并没有可以从类路径或者相对路径获取文件及 ServletContext , 虽然可以通过自定义扩展URL接口来实现新的处理程序,但是这是非常复杂的,同时 URL 接口中定义的行为也并不是很理想的 ,如检测资源的存在等的行为,这也是 spring 为什么自己全新的开发一套自己的资源加载策略...

2020-05-06 20:05:56 1139

原创 前奏:Spring 源码环境搭建

1. 主要依赖工具JDK1.8+GradleIntelliJ IDEAGittip: IDEA的版本尽量选择高点的版本,低版本存在构建失败的风险,Gradle 版本后面来说怎么选择2. 拉取项目我们要研究 spring 源码,首先必须的拿到 spring 的源码, spring 源码在 GitHub 上官方仓库 官方仓库我们最好先 Fork 到自己仓库,毕竟我们搭建起来随...

2020-04-28 20:49:00 718

原创 重新认识 Spring IOC

spring IOC 剖析再品IOC与DIIOC(Inversion of Control) 控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让 容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们所看到的配置文件。DI(Dependency Injection) 依赖注入:...

2020-04-24 23:35:45 724

原创 JavaConfig 搭建 SSM 框架

摘要: Spring在3.0版本之后支持了javaconfig的配置方式来代替原来的xml配置,javaconfig的配置简化了开发也为springboot的开发奠定了基础开发环境:ide:IDEA 2020.1JDK:java8Spring:5.2.4. RELEASEMybatis:3.5.3maven:3.6.31. Maven 项目构建通过 idea 构建基础的 ...

2020-04-24 23:03:52 315 1

原创 Spring Data Jpa 入门学习

本文主要讲解 springData Jpa 入门相关知识, 了解JPA规范与Jpa的实现,搭建springboot+dpringdata jpa环境实现基础增删改操作,适合新手学习,老鸟绕道~1. ORM 概论ORM(Object-Relational Mapping)顾名思义就是表示对象关系映射。在面向对象的软件开发中,我们肯定是需要和数据库进行交互的,那么这里就存在一个问题如何将数据库中的...

2020-04-21 22:35:42 999

原创 设计模式-抽象工厂模式(Abastract Factory)

简介: 从简单工厂、工厂方法再到抽象工厂模式,这是一个逐步演化的过程,每种模式都有自己适用的范围,而我们也要学会灵活的去使用,而不是死板的去刻意使用设计模式,本文章主要介绍抽象工厂类的实现过程也主要适用的场景1. 基本概念抽象工厂模式(Abastract Factory Pattern)是指提供一个创建一系列相关或相互依赖对象的接口,无须指定他们具体的类客户端(应用层)不依赖于产品...

2020-04-15 15:50:37 230

原创 设计模式-单列模式及原型模式

简介: 单例模式是非常经典的高频面试题,文章主要阐述单例模式的应用场景、IDEA 环境下的多线程调试方式、保证线程安全的单例模式策略、反射暴力攻击单例解决方案及原理分析、序列化破坏单例的原理及解决方案、常见的单例模式写法等方面来全面的解析单列模式的细节。1. 单列模式1.1 单列模式定义单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一...

2020-04-14 09:57:08 164

原创 Docker 中安装 Oracle数据库

摘要: 文章主要讲解在linux中如何在docker上部署安装Oracle数据库软件1. 安装前准备在进行Oracle的安装时我们首先需要安装Docker容器,关于Oracle的安装我们在之前的文章中有,如果不懂Docker的可以先看这篇文章:Docker 的安装与简单命令好了我们前期环境都准备好了,可进入正题了~2. Oracle的安装通过 docker search oracle...

2020-04-13 20:06:48 371

原创 java基础[继承与抽象类]

简介: 主要介绍 Java 基础中的继承与抽象类的相关知识点,以及各自的注意事项第一章 继承1.1概述定义继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。好处1. 提高代码的复用性。2. 类与类之间产生了关系,是多态的前提。 1.2继承的格式通过 extends 关键字,可以声明一个子类继承...

2020-01-09 22:09:45 211

原创 java基础[接口与多态]

简介: 文章介绍 Java 中接口与多态的概念与使用,包含在新版本中新特性第一章 接口1.1 概述接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法包含抽象方法(JDK7及以前),默认方法和静态方法(JDK8),私有方法(JDK9)。接口的定义,它与定义类方式相似,但是使用 interfac...

2020-01-06 08:58:27 208

原创 设计模式-工厂方法(Fatory Method)详解

简介: 介绍工厂方法(Fatory Method)的基本使用以及使用场景,点明工厂方法的优缺点以及在我们平时的源码中有哪些具体的体现1. 基本概念工厂方法模式( Fatory Method )是指定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行在工厂方法中我们关心相应产品对象的创建工厂,而不关心对象的实际创建细节,在增加产品时也符...

2020-01-03 08:45:46 202

原创 MySQL基础入门.md

简介:文章主要介绍数据库的基本概念,讲解 MySql 的基本使用与 SQL 的使用语法数据库的基本概念数据库的英文单词: DataBase 简称 : DB什么数据库?用于存储和管理数据的仓库。数据库的特点:持久化存储数据的。其实数据库就是一个文件系统方便存储和管理数据使用了统一的方式操作数据库 – SQL – DBAMySQL数据库软件1. 安装2. 卸载...

2020-01-02 16:35:22 189

原创 设计模式-简单工厂(Simple Factory)详解

简介: 介绍简单工厂(Simple Factory)的概念、使用场景以及详细的分析介绍。1. 概念简单工厂模式(Simple Factory Pattern)是指由一个工厂对象决定创建出哪一种产品类的实例,但它不属于GOF 23 种设计模式。2. 使用场景适用于用工厂创建对象较少的场景,只需要关注传入工厂方法的参数,并不需要关心内部具体的实现逻辑。3.代码实现我们以在线教育平台为例...

2019-12-30 17:15:20 381

原创 java中的数据类型

简要:在 java 中,我们知道有两种数据类型,一种是基本类型也叫原始数据类型( primitive types ),另一种是引用类型( reference types ),引用类型指向了不同的对象。本文我们主要讨论 Java 中强引用、软引用、弱引用、虚引用四种引用有什么区别?同时他们分别适用的场景是什么?基本概念在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无...

2019-12-24 12:56:14 112

原创 Docker的安装与入门

简介: 介绍在 Centos 下 Docker 的安装与基本命令,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。1. 安装DockerDocker 官方建议在 Ubuntu 中安装,因为 Docker 是基于 U...

2019-09-20 14:48:01 182

原创 IDEA中Debug使用教程

IDEA中Debug追踪使用IDEA的断点调试功能,查看程序的运行过程在有效代码行,点击行号右边的空白区域,设置断点,程序执行到断点将停止,我们可以手动来运行程序点击Debug运行模式程序停止在断点上不再执行,而IDEA最下方打开了Debug调试窗口Debug调试窗口介绍快捷键F8,代码向下执行一行,第九行执行完毕,执行到第10行(第10行还未执行)...

2019-07-18 23:03:44 542

基于ssh智能CAI平台研发考试系统

基于ssh智能CAI平台研发考试系统,一套完整的在线考试系统,包含教程,项目源码,数据库文件,文档说明等

2018-06-12

简洁商城系统后台管理模板

简洁商城系统后台管理模板,界面简约,适合初学者整合使用的前端页面模板,可与后台代码整合实现动态网站

2018-06-12

基于layui的后台管理模板

基于layui的后台管理模板,界面优美,可结合后台代码进行开发,适合做管理系统。

2018-06-12

ActiveMQ教程

ActiveMQ基础教程,初识ActiveMQ的知识其中的原理与案例讲解

2018-06-12

ActiveMQ与spring整合封装

ActiveMQ与spring整合进行封装,实现全注解开发,并且支持topic与queue两种模式无缝切换,对外提供统一的接口调用,简化操作。对连接池进行优化,容器实例动态生成。

2018-06-12

exe4j与inno使用完整教程

图文讲解了两款软件的详细使用,附带下载地址等,同时标明了其中的一些关键点与容易出现问题,及其解决方案

2018-06-12

《网络攻防综合训练》

实训内容有社会工程学、木马植入与控制、木马免杀与捆绑、主机发现、端口扫描、漏洞扫描、缓冲区溢出、网络嗅探、网页篡改、提权等。

2016-03-01

计算机网络 校园网规划

校园网设计包括以下几部分:校园内部主干设计、服务器系统设计、校园网应用设计。包括IP规划,VLAN规划,ACL等设置

2016-03-01

空空如也

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

TA关注的人

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