自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 【Linux初学】Docker社区版安装

介绍本章主要介绍的是在Linux系统下Docker的安装使用工具:VMware、XShell虚拟机系统:Centos7 (安装地址看文末)安装的Docker版本:19.03.12(社区版)安装1、安装docker组件以及数据存储的驱动包yum install -y yum-utils device-mapper-persistent-data lvm22、修改新的安装源yum-config-manager --add-repo https://mirrors.aliyun.com/doc

2020-08-21 13:52:57 256

原创 关于线程的这些知识,我懂的你也要懂!

关于线程你了解多少?程序,进程,线程之间的关系线程与进程的区别线程的生命周期多线程的创建方式多线程安全问题(生产者消费者问题)死锁问题程序,进程,线程之间的关系很多时候我们都会在书上看到这么一个概念:程序是一个指令的集合,进程是程序的一次静态执行过程,而线程是进程中一个单一的连续控制流程。通俗的理解:程序就是一个应用程序,好比微信这款应用程序,当我们运行微信程序的时候,需要登录自己的账号密码来运行,那么这就相当于一个进程,而微信这款程序在运行的过程中有聊天,朋友圈等功能,而这些功能

2020-06-14 19:42:49 228

原创 IDEA中Debug的各种按钮怎么用

对于我们的日常开发,很多时候都会用到debug这个功能,通过该功能我们可以看到代码的执行流程,看到每段代码的参数,同时该方法也有利于我们进行源码的阅读,不过对于小白来说,很多时候看不懂debug的标志本章使用的idea开发工具为2019.2.3版本Debug中的标志含义Debug的优化设置进行如下设置更加节省内存空间Setting -> Build,Execution,Deployment -> Debugger拓展知识在我们进行debug的时候,可以在循环里增加条件判

2020-06-08 20:15:14 4320 2

原创 【简单说】SpringIOC

通过一个简单的案例来认识什么是控制反转,为什么要使用SpringIOC容器业务逻辑层Dao,定义一个UserDao接口package com.ctb.dao;public interface UserDao { // 获取用户 void getUser();}接下来写每个不同的UserDao的具体实现普通方式:package com.ctb.dao.impl;import com.ctb.dao.UserDao;public class UserDaoImpl i

2020-06-02 16:29:59 185

原创 自动注入注解的使用与区分

在我们的日常开发过程中,我们经常都会使用到@Autowired这个注解,省去了手动创建bean的步骤,所以我们可以理解@Autowired有自动装配的功能,同样的这次讲的@Resource也是有同样的功能的注解@Resource 和 @Autowired 的使用在使用@Autowired的时候,我们需要注入spring的依赖,因为@Autowired是spring提供的功能,而@Resource 是jdk中定义的注解,依靠的是java的标准,所以基本上很多时候都能够使用使用@Autowired

2020-06-02 10:09:09 753

原创 IDEA之Git的运用

配置操作打开IDEA,创建一个新的项目,在IDEA右上角的File中选择Settings选择Version Control中的Git选择你本地安装的Git的路径本地库的初始化操作:选择VCS->Import into Version Control->Create Git Respository在弹出框选择指定文件位置,就可以查看到文件生成一个.git将模块添加到add中,选择一个目录,然后右键,会看到一个git->add将模块commit,对准模块右键git-

2020-05-20 16:49:29 114

原创 Git远程库相关操作

本章介绍的是如何把本地库与远程库建立连接上传操作在github上创建自己的仓库,登录github账号,点击右上方的加号,选择new repository进行仓库的信息配置创建完成后可以看到远程库的地址在Git本地将地址通过别名的方式进行保存查看当前目录下是否有远程地址的别名git remote -v创建一个别名git remote add (别名) (远程库的地址)向远程库推送数据git push (别名) (分支)当推消息的时候需要登录github账号在远程库进行查看

2020-05-20 14:39:52 156

原创 Git的分支结构及其操作

概念在版本控制过程中,使用多条线同时推进多个任务,这里的多条线,就是多个分支结构分支操作查看分支git branch -v创建分支git branch (新建分支名)注意:查看的时候,*号表示的是当前你位于哪个分支切换分支git checkout (分支名)合并两个分支git merge (要合并的分支)原文件的内容为:在branch1分支下,文件修改为并在该分支上进行add,commit操作切换到master,并查看文件在主分支上添加内容为:在主分支上执

2020-05-20 13:17:22 1202

原创 Git常用命令及初始化本地仓库

Git的三个区本地库:保存各种文件版本的数据库,可以向这个数据库中拉取各个文件版本或把更新后的文件推入数据库进行记录。这是 Git 用来保存项目的元数据和对象数据库的地方,是 Git 最重要的部分,从其他计算机克隆仓库时,拷贝的就是这里的数据。已经推入到这个数据库中的文件对应的状态是 已提交 (commited) 。暂存区:用来存储对当前已修改过并且作了版本标记的文件,在同一段时间内位于暂存区尚未提交的所有文件都属于同一个当前的版本,这些标记使得对应文件被包含在下次提交的快照中。这个区域是一个文件,

2020-05-19 20:48:30 1280

原创 分布式版本控制系统Git的安装教程

概念Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目优点相比集中式版本控制器(代表:SVN),分布式版本控制系统能有有效应对中央服务器单点故障问题,而且分布式版本控制系统的客户端不只是提取最新版本的文件快照,而是把代码仓库完整地镜像下来。在管理项目时,分布式版本控制系统存放的不是项目版本与版本之间的差异(这是集中式版本控制器的存储方式),而是存放每个版本的索引。下载网址:https://git-scm.com/downloads安装双击下载的安装包点击n

2020-05-19 17:07:59 209

原创 查看您的Mysql执行计划

为什么要了解Mysql执行计划我们优化mysql性能的时候,需要了解的是mysql是如何处理sql语句的,了解它的执行过程,从而分析查询语句或者是表结构,以加快SQL语句的执行效率。查看sql的执行计划explain + 查询语句执行计划中各个字段的意义ColumnMeaningid选择标识符select_type选择类型table输出行的表partitions匹配的分区type访问类型possible_keys可能应用在这张表中

2020-05-12 10:51:30 102

原创 Mysql索引及其常见问题

首先要了解一下索引知识:索引概念索引是为了加快对数据的搜索速度而设立的,索引是方案中的一个数据库对象,与表独立存放,索引是帮助Mysql高效获取数据的数据结构,存储在文件系统中,索引的文件存储形式与存储引擎有关,索引文件的结构为:hash、二叉树、B树、B+树作用在数据库中用来加速对表的查询,通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O分类主键索引主键是一种唯一性索引,但它必须指定位PRIMARY KEY,不允许有空值唯一索引索引列的所有值都只能出现一次,即必须

2020-05-12 09:27:23 235

原创 Mysql之常用存储引擎

什么是存储引擎存储引擎就是指表的类型以及在计算机中的存储方式,查看mysql存储引擎的指令:show engines;常见的存储引擎介绍InnoDB是mysql5.5版本之后的默认存储引擎,InnoDB给MySQL的表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全,数据存储在磁盘上的。它是通过B+Tree结构对主键创建索引,然后叶子节点存储记录,如果没有主键,那么会选择唯一键,如果没有唯一键,那么会生成一个6位的row_id作为主键使用该存储引擎创建表时,会创建两个文件.f

2020-05-11 14:18:54 87

原创 Mysql数据库存储ip地址

很多时候我们数据库存储ip地址都是以字符串的形式的,毕竟那个ip地址点来点去的,其他类型都无法存储了,今天带来一个小知识,mysql中的inet_aton使用从上图可以看到,使用这个函数可以把ip地址转化为整型,那么就好办了,我们可以把ip地址存储为整型比较为什么要介绍这个小知识,看到下面的测试用例,你就会知道了创建两张不同的表,c1是使用int类型进行存储的,c2是使用char类型...

2020-05-07 17:11:10 1102

原创 【简单说】CPU乱序问题

CPU乱序问题:读乱序:写乱序:如何保证特定情况下不发生乱序硬件内存屏障三种方式:sfence:在sfence指令前的写操作必须在sfence指令后的写操作前完成Ifence:在Ifence指令前的读操作必须在Ifence指令后的读操作前完成mfence:在mfence指令前的读写操作必须在mfence指令后的读写操作前完成原子指令,如x86上的”lock …“指令是一个Fu...

2020-04-28 16:09:40 943

原创 【简单说】JMM

MESI伪共享问题解决办法:缓存行CPU乱序问题合并写,是如何实现得CPU内存屏障重排序

2020-04-28 12:29:52 279

原创 【简单说】类加载过程

JVM是什么java从编码到执行的过程:java文件通过javac命令转换为.class文件,然后会被classLoader转载到内存中,可能.class文件还包含某些java类库,类库也会被转载到内存中,转载完之后就会通过字节码解释器或者JIT即时编译器进行解析,最后通过执行引擎进行运行。JVM与JAVA无关:任何语言只要能编译成class文件,它都能在JVM上运行JDK、JRE、J...

2020-04-25 16:27:26 474

原创 Vue+Springboot解决数据传输时参数格式不匹配问题

前端:使用的是ant design vue ,端口号为8000后端:使用的是springboot框架开发,端口号为8080需求:已经解决跨域问题,前端发送登录的信息给后台,后台接收不到样例:前端:handleSubmit(e) { e.preventDefault() const { form: { vali...

2020-04-22 13:16:23 2278

原创 Vue+Springboot解决前后端跨域问题

前端:使用的是ant design vue ,端口号为8000后端:使用的是springboot框架开发,端口号为8080需求:前端发送请求,后端可以进行处理,并返回结果第一步,修改前端,前端测试的时候会使用Mock数据,现在进行前后端分离,就不再范文mock数据修改.env.development文件NODE_ENV=developmentVUE_APP_PREVIEW=false...

2020-04-22 12:42:11 1194

原创 如何在springboot快速生成数据库表的实体,mapper,service,controller

方法:使用的是MybatisPlus代码生成器在pom.xml文件中添加依赖:<!--mybatis代码快速生成--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-genera...

2020-04-22 11:04:05 1249

原创 【Linux初学】安装Redis教程

基本条件使用的工具是VMware,虚拟机系统为centos 6.x创建虚拟机的教程:https://blog.csdn.net/weixin_44943485/article/details/105093447安装虚拟机系统的教程:https://blog.csdn.net/weixin_44943485/article/details/105093926具体安装步骤1、打开虚拟机2...

2020-04-09 13:37:41 88

原创 小白谈谈23种设计模式

23种设计模式分类:一、创建型模型(共五种):单例模式工厂方法模式抽象工厂模式建造者模式原型模式二、结构性模型(共七种):享元模式适配器模式装饰模式代理模式门面模式桥接模式组合模式三、行为型模型(共十一种):策略模式中介者模式责任链模式观察者模式命令模式备忘录模式模板模式状态模式迭代器模式访问者模式解释器模式面向对象的六大原则:...

2020-04-08 10:47:02 112

原创 小白谈谈代理模式

概念一个类代表另一个类的功能,就好比我们生活中的中介,我们要把楼卖出去,可是我们不可能天天在大街上问,有没有人愿意买我的楼嘛,中介就是帮我们干这件事,相当于我们的代理,中介跟我们都是有卖楼这同一操作的,但是真正卖楼的具体操作还是我们,中介只是负责找客户。静态代理案例:我们都玩过游戏吧,有些游戏只能在国外玩,如果想在国内玩,那肯定得有个代理商才行。今年国外最火的游戏《寸头大作战》想在国内开拓...

2020-04-07 18:06:05 139

原创 小白谈谈解释器模式

概念解释器模式就是按照给定的语法,进行解析。给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。实现案例:小明饭店举行了一个促销活动,凡是到店的顾客名字包含“明”字,或者籍贯为广州的都可以享受半价优惠,每当顾客进店都需要到门口的电脑上进行身份登记,输入格式为:深圳,阿花直接上代码:首先我们定义一个抽象表达式类:public interfa...

2020-04-07 13:56:01 196

原创 小白谈谈访问者模式

概念实现优点:缺点:本文的代码:提取码:

2020-04-07 10:16:40 96

原创 小白谈谈迭代器模式

概念与for循环类似,用于遍历容器元素,迭代器模式提供一种方式去访问一个容器元素中的各个对象,而又不暴露该对象的内部细节。实现案例:今天,我们学校组织春游,当我们乘上大巴准备出发的时候,老师让我点名答到,喊名字我也懒得喊了,等下喊破喉咙今天的快乐可都没了。那我就来写个程序吧,把名字打到公交车的显示屏上,用for循环太low了,今天我们得用个高级点的技术——迭代器模式首先我们学生是主体,那...

2020-04-06 15:43:21 120

原创 小白谈谈状态模式

概念当一个对象内在状态改变时,允许其改变行为,这个对象看起来像是改变了其类。也就是说,状态模式把对象的状态转换封装起来,当状态发生改变时,引起了行为发生改变,从外部看像是对象对应的类发生改变。实现案例:我就举一个我们最熟悉的案例——手机,手机的状态有很多种,这次我就简化手机的状态,只拿出4种状态进行举例:通话状态、锁屏状态、联网状态、充电状态。我们都知道,在通话状态下,我们可以接收其他的...

2020-04-06 10:57:46 119

原创 小白谈谈模板模式

概念模板模式就是通过一个模板定义一些方法,然后再根据这个模板具体实现一些特定的功能。模板的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。实现案例:某一玩具工厂要开始生产玩具,做生产的总得有的方案吧,或者说总得按照某一个模板进行生产吧。某玩具工厂制作玩具娃娃的基础设计模板,这个模板必须配备两个功能,一个是发出声音,一个是会做动作,这样才能配合小孩子玩耍:代码如下:/** ...

2020-04-02 16:55:17 113

原创 小白谈谈备忘录模式

概念备忘录模式就是用来保存一种状态的,能够在不破坏封装性的前提下,实现对象状态的保存和恢复工作。保存对象的状态是为了以后在需要的时候快速恢复到保存时的状态,通常与命令模式同时使用,那么就可以进行某些命令的恢复操作,恢复到修改之前的某一个状态中。实现案例:包租婆有一个小本本用来记录每个租客的租金缴纳情况首先我们来定义一个小本本,专门用于记录缴纳情况的:/** * 定义一个包租婆的备忘录...

2020-04-02 15:40:39 234

原创 小白谈谈原型模式

概念学完这个模式,就觉得这个模式怎么不叫克隆模式,就是实现一个克隆,也是一个名字而已,前人总结得出的(也不见得老婆饼有老婆,是吧?),当直接创建对象的代价比较大时,则采用这种模式。实现案例:假如在未来的某个时候,克隆技术正式普及了,我们需要对一只猫咪进行克隆,那么这个猫咪就得具备克隆的特性,借下来我们来定义一下这个猫咪的类:我们要对这个名为小白的白猫进行克隆:/** * 定义一个白猫...

2020-04-02 14:29:12 91

原创 小白谈谈命令模式

概念命令模式很容易理解,每当我们点击键盘也是在对计算机发起命令,就是发起号令,然后对象接收到命令进行具体执行。实现案例:我们在学生时代都有军训过吧,那肯定是一段难忘的记忆了。教官训练我们的时候,都会发出号令,而这些号令都属于命令,下面就用命令模式实现这个场景:我们教官发出命令时都会是向前或者向后的,此处简化就不弄向左向右了,有兴趣的朋友可以自己进行补充首先定义命令这个抽象类:/**...

2020-04-02 13:17:53 115

原创 小白谈谈桥接模式

概念桥接模式就是将抽象部分与它的实现部分分离开来,使他们都可以独立变化。何为抽象?比如我觉得你很热心,热心这个词就属于一个抽象的概念,是我们脑子里觉得的一种形式,那么具体实现是什么,你扶老奶奶过马路,这是一个具体行为,我们看得见的。实现案例:今天我和女朋友去看电影,要去看什么电影呢?平时996的我哪有时间去了解现在有什么电影上映,等我们到了电影院,它们播什么我们就看什么呗。首先定义一个电...

2020-04-02 10:09:34 106

原创 小白谈谈适配器模式

概念适配器,我们最熟悉的就是笔记本电脑的适配器,用于转换我们笔记本的电压的,让原来不合乎我们的东西,经过适配器的转换,转变为适合我们的东西。适配器模式也是同样的道理,让原来不兼容的两个接口协同工作实现案例:自从家里养了只二哈,家里的鞋子就没有一双是完整的,明晚公司举行了一个年度晚会,就算不穿西装,也得穿得正正齐齐嘛,鞋子也得是个好的,晚上下班都已经10点多了,周围的门店也都关门了,找不到门...

2020-04-01 16:37:13 90

原创 小白谈谈建造者模式

概念通过多个简单的对象一步一步构建成一个复杂的对象,如果在创建一个对象的时候,需要传递很多参数来实例化,那么使用这种模式,就可以很容易就实现对象的创建,还可以确定建造的顺序。实现接下来以一个简单的案例进行介绍,比如我们现在需要建造一个房子,一个房子需要有柱子,地基,墙壁,屋顶,而且这个是有先后顺序的,先建地基->柱子->墙壁->屋顶,具体实现如下:代码实现:定义一个屋...

2020-04-01 15:12:42 112

原创 小白谈谈享元模式

概念享元模式又称为轻量级模式,它是一种对象结构型模式。该模式主要用于减少创建对象的数量,通过调用已创建的对象实现共享一个单元,从而降低运行的成本,提高性能。实现简单地实现享元模式public class fw1 { public static void main(String[] args) { String str1 = "ctb"; Stri...

2020-04-01 10:33:48 93

原创 小白谈谈组合模式

概念组合模式属于一种树状结构,通过部分-整体的层次结构来表示,组合模式使得用户对单个对象和组合对象的使用具有一致性实现这是一个软件研发企业技术部组织结构,是一个典型的树状结构实现此结构:实现代码:定义一个节点的抽象类:public abstract class Node { abstract public void print();}定义一个分支节点:/** *...

2020-03-31 18:26:49 99

原创 小白谈谈观察者模式

概念这是一个十分容易理解的模式,当一个对象(被观察者)的属性发生变化,或者该对象调用某些方法,所有依赖它的对象(观察者)发生一系列变化。实现案例:我是一个996的程序员,喜欢哈士奇,在自己的出租屋里养了一只哈士奇,不过由于工作原因,没能常常在家,于是我就在上班的时候,给哈士奇放置一天的食物和水,供它一天吃饱喝足。不过哈士奇都有一个天性——拆家,于是我就安装了一个智能摄像头,用于观察我的哈士奇...

2020-03-31 15:58:20 106

原创 小白谈谈责任链模式

概念责任链就是用于处理相关事务的一条链,链上有多个节点,每个节点都有机会(条件匹配)处理请求事务,如果某个节点处理完了就依次传递给下一个节点,直到处理完毕。实现方式:举例:其中一条车往右行驶,在马路上会有测速摄像头(红色),违章摄像头(橙色),测速摄像头就是对汽车的行驶速度是否为安全速度进行评判,而违章摄像头则是对汽车驾驶员是否系上安全带进行评判,这里测速摄像头和违章摄像头组成一条处理事务的...

2020-03-31 13:53:36 197

原创 小白谈谈装饰模式

概念简单理解,装饰模式就是不断给一个物品或者一件事进行动态装饰,在不改变其结构的前提下,使其添加功能。实现举例:当我们有了一台车之后,每隔一段时间都会回去4S店进行保养的,当车子在4S店做完保养后,4S店都会给我们打印一个清单,表示所有在4S店的服务。假如我们不只是做保养,还需要给车加个大尾翼和换个颜色,那么用普通方式如下:首先定义一个4S店基本服务的抽象类:public abstrac...

2020-03-31 10:36:01 88

原创 小白谈谈中介者模式

概念中介者模式又叫做调停者模式,即在一个环境中,每个元素都是相互有影响的,而且是相互依赖的,加入一个中介者,使每个元素只用处理好属于自己的那部分,每个元素之间的关系处理则是由这个中介者来完成。介绍适用场景:中介者模式是一个非常好的封装模式,也是一个很容易被滥用的模式,所以以下情况适合使用中介者模式:多个对象之间产生了相互的依赖关系,并且存在的是相互依赖的关系多个对象的依赖的行为尚不确...

2020-03-28 16:01:02 143

空空如也

空空如也

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

TA关注的人

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