自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式:原型模式

原型模式(Prototype),在制造业中通常是指大批量生产开始之前研发出的概念模型,并基于各种参数指标对其进行检验,如果达到了质量要求,即可参照这个原型进行批量生产。原型模式达到以原型实例创建副本实例的目的即可,并不需要知道其原始类,也就是说,原型模式可以用对象创建对象,而不是用类创建对象,以此达到效率的提升

2022-09-18 16:04:01 609 1

原创 单例模式(Go&Java)

而“static”关键字确保太阳的静态性,将太阳放入内存里的静态区,在类加载的时候就初始化了,它与类同在,也就是说它是与类同时期且早于内存堆中的对象实例化的,该实例在内存中永生,内存垃圾收集器(Garbage Collector,GC)也不会对其进行回收;相比“懒汉模式”,其实在大多数情况下我们通常会更多地使用“饿汉模式”,原因在于这个单例迟早是要被实例化占用内存的,延迟懒加载的意义并不大,加锁解锁反而是一种资源浪费,同步更是会降低CPU的利用率,使用不当的话反而会带来不必要的风险。

2022-09-17 23:13:49 211

原创 Go学习笔记

go学习笔记是本人学习总结的Go学习指南,帮助我个人和大家成为一名优秀的Gopher,本笔记不会局限于Go的基础语法和使用,可能会涉及到计算机的方方面面。

2022-09-17 20:32:33 235

原创 消息队列杂谈

原文见:https://mikechen.cc/7319.html消息队列(Message Queue),指保存消息的一个容器,本质是一个队列。消息说指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更加复杂,可能包含嵌入对象。如下图:消息队列的主要特点是异步处理,主要目的是减少请求响应时间,实现非核心流程异步化,提高系统响应性能。举一个用户注册的例子,用户成功注册后,系统需要发送短信注册成功通知,以及赠送注册成功的积分1)同步同步耗时:10ms+100ms+100ms=210ms

2022-06-04 16:44:47 217

原创 MySQL 索引机制

谈到 InnoDB 引擎的时候聊过在 InnoDB 引擎是面向行存储的,数据都是存储在磁盘的数据页中,数据页里面按照固定的行格式存储着每一行数据。InnoDB存储引擎是 B+ 树索引组织的,所以数据即索引,索引即数据。B+ 树的叶子节点存储的都是数据段的数据。InnoDB 引擎对数据的存储必须依赖于主键,主键对应的索引叫做聚集索引。如果不幸的是你建表没有建主键,InnoDB 会从表字段中寻找第一个非空的唯一索引作为聚集索引,如果还是不幸找不到,InnoDB 会生成一个不可见的名为 ROW_ID 的列,该列是

2022-06-04 16:43:05 334

原创 Binlog 必知

Binlog 的主要作用有两个:Binlog 包括两类文件:Binlog 日志功能默认是开启的,线上情况下 Binlog 日志的增长速度是很快的,在 MySQL 的配置文件 中提供一些参数来对 Binlog 进行设置。需要注意的是:max_binlog_size :Binlog 最大和默认值是 1G,该设置并不能严格控制 Binlog 的大小,尤其是 Binlog 比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性不可能做切换日志的动作,只能将该事务的所有 SQL 都记录进当前日志直到事务结束

2022-06-04 16:41:45 1527 1

原创 MySQL架构浅析

我们可以先看看下图MySQL的整体架构图MySQL的逻辑架构大致可以分为三层应用层是MySQL体系架构的最上层,它可其他client-server架构一样,主要包含如下内容:1. 连接处理当一个客户端向服务端发送连接请求后,MySQL server会从线程池中分配一个线程来和客户端进行连接,以后该客户端的请求都会被分配到该线程上。MySQL Server为了提高性能,提供了线程池,减少了创建线程和释放线程所花费的时间。2. 用户鉴权 当客户端向MySQL服务端发起连接请求后,MySQL server会对发起

2022-06-04 16:40:54 384

原创 ES 查询用法

通过ES查询表达式(Query DSL),可以实现复杂的查询功能,ES查询表达式主要由JSON格式编写,可以灵活的组合各种查询语句。还支持一次搜索多个索引按前缀匹配索引名查询结果格式2.query子句query子句主要用来编写类似SQL的Where语句,支持布尔查询(and/or)、IN、全文搜索、模糊匹配、范围查询(大于小于)。aggs子句,主要用来编写统计分析语句,类似SQL的group by语句sort子句,用来设置排序条件,类似SQL的order by语句ES查询的分页主要通过from和s

2022-06-04 16:26:19 25292 4

原创 ES聚合用法

ES中的聚合查询,类似SQL的SUM/AVG/COUNT/GROUP BY分组查询,主要用于统计分析场景。下面先介绍ES聚合查询的核心流程和核心概念。ES聚合查询类似SQL的GROUP by,一般统计分析主要分为两个步骤:对查询的数据首先进行一轮分组,可以设置分组条件,例如:新生入学,把所有的学生按专业分班,这个分班的过程就是对学生进行了分组。组内聚合,就是对组内的数据进行统计,例如:计算总数、求平均值等等,接上面的例子,学生都按专业分班了,那么就可以统计每个班的学生总数, 这个统计每个班学生总数的计算,就

2022-06-04 16:24:39 10418 1

原创 ES底层读写工作原理

面试题es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗?问这个,其实面试官就是要看看你了解不了解 es 的一些基本原理,因为用 es 无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es 在干什么,那你真的是…对 es 基本就是个黑盒,你还能干啥?你唯一能干的就是用 es 的 api 读写数据了。要是出点什么问题,你啥都不知道,那还能指望你什么呢?es 最强大的是做全文检索,就是比如你有三条数据:复制你根据 jav

2022-06-04 16:22:56 134

原创 SpringMVC基础2

一,响应数据和结果视图1.1返回值为Stringcontroller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。//指定逻辑视图名,经过视图解析器解析为 jsp 物理路径:/WEB-INF/pages/success.jsp@RequestMapping("/testReturnString")public String testReturnString() { System.out.println("AccountController 的 testReturnStri

2021-12-01 15:53:56 116

原创 Java线程

一,创建和运行线程1.1 直接使用Thread创建// 创建线程对象,构造方法的参数是给线程指定名字 Thread t = new Thread("t1"){ @Override// run方法内实现了要执行的任务 public void run() { System.out.println("hello"); } };//

2021-11-30 16:55:27 431

原创 进程与线程

一,进程与线程进程1.程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的2.当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。3.进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器 等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)线程1.一个进程之内可以分为一到多个线程。

2021-11-29 22:01:26 181

原创 SpringMVC基础

1.三层架构与MVC我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就 是浏览器服务器。在 JavaEE 开发中,几乎全都是基于 B/S 架构的开发。那么在 B/S 架构中,系统标准的三层架构 包括:表现层、业务层、持久层。1.1 表现层也就是我们常说的web层。它负责接收客户端请求,向客户端响应结果,通常客户端使用http协议请求 web 层,web 需要接收 http 请求,完成 http 响应。表现层包括展示层和控制层:控制层负

2021-11-29 17:14:54 199

转载 MySQL锁机制和加锁原理

原文章请参考:https://blog.csdn.net/qq_38238296/article/details/88362999首先对MySQL锁进行划分:**1,按照锁的粒度划分:**行锁、表锁、页锁**2,按照锁的使用方式划分:**共享锁、排它锁(悲观锁的一种实现)**3,还有两种思想上的锁:**悲观锁、乐观锁4,InnoDB中有几种行级锁类型:Record Lock、Gap Lock、Next-key LockRecord Lock:在索引记录上加锁**Gap Lock:**间隙锁

2021-11-28 23:47:25 1394

原创 数据库事务控制

1.事务的基本介绍 1. 概念: * 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。 2. 操作: 1. 开启事务: start transaction; 2. 回滚:rollback; 3. 提交:commit; 2.事务的四大特征原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。持久性:当事务提交或回滚后,数据库会持久化的保存数据。隔离性:多个事务之间。相互独立一致性:事务操作前后,数据总量

2021-11-26 19:30:58 1006

原创 数据库设计与范式

1.数据库范式1.1 知识准备1.1.1 函数依赖完全函数依赖设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。例子:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级);部分函数依赖设X,Y是关系R的两个属性集合,存在X→Y,若X

2021-11-25 23:43:21 500

原创 Spring框架

1.Spring简介Spring优点1.非侵入式2.容器在应用加载时,创建一个 Map,用于存放三层对象。 我们把这个 map 称之为容器。3.Ioc:控制反转即将对象创建的权利交给了框架,包括依赖注入和依赖查找原来: 我们在获取对象时,都是采用 new 的方式。是主动的。现在: 我们获取对象时,同时跟工厂要,有工厂为我们查找或者创建对象。是被动的。作用:削减计算机程序的耦合(解除我们代码中的依赖关系)4.依赖注入5.AOP:面向方面的编程面向方面编程,将日志、安全、

2021-11-24 20:38:20 342

原创 Spring Data JPA框架(更新中)

1.了解ORM(Object-Relational Mapping)简介ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联,操作对象就可以直接操作数据库数据,就可以说这套程序实现了ORM对象关系映射简单的说:ORM就是建立实体类和数据库表之间的关系,从而达到操作实体类就相当于操作数据库表的目的。为什么使用ORM当实现一个应用程序时(不使用O/R Ma

2021-11-23 17:16:40 1125

原创 MySQL多表查询

1.准备工作查询语法select 列名列表 from 表名列表 where....数据准备# 创建部门表 CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ); INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部'); # 创建员工表 CREATE TABLE emp ( id INT PRIMARY KEY A

2021-11-23 15:09:28 110

原创 Spring框架

1.Spring简介Spring优点1.非侵入式2.容器在应用加载时,创建一个 Map,用于存放三层对象。 我们把这个 map 称之为容器。3.Ioc:控制反转即将对象创建的权利交给了框架,包括依赖注入和依赖查找原来: 我们在获取对象时,都是采用 new 的方式。是主动的。现在: 我们获取对象时,同时跟工厂要,有工厂为我们查找或者创建对象。是被动的。作用:削减计算机程序的耦合(解除我们代码中的依赖关系)4.依赖注入5.AOP:面向方面的编程面向方面编程,将日志、安全、

2021-11-23 11:36:09 326

原创 MySQL约束与查询

1 DQL:查询语句1.1 排序查询 排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * 排序方式: * ASC:升序,默认的。 * DESC:降序。 * 注意: * 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。1.2 聚合函数 聚合函数:将一列数据作为一个整体,进行纵向的计算。 1. count:计算个数 1. 一般选择非空的列:主键 2. count(*) 2.

2021-11-21 20:11:22 153

原创 SQL基础

1.导入SQL文件导入sql文件,输入“source sql文件的路径”(注意你的文件路径要是复制来的,要将""全部换成“/”)2.SQL基础2.1 SQL分类DDL数据定义语言、DML数据操作语言、DQL数据查询语言、DCL数据控制语言2.2 DDL操作数据库、表数据库操作#创建create database 数据库名称create database if not exists 数据库名称create database 数据库名称 character set 字符集名#查

2021-11-21 19:36:59 54

原创 第六章 面向方面编程(拦截器)

一,何为面向方面编程?面向方面编程(AOP)旨在向已有代码或应用增加行为来解决普遍关注点。在开发过程中,我们常常会收到新的关于日志或安全的需求。虽然日志代码都是一些重复性的代码,但这种需求却需要我们花费大量时间对已有代码进行重构。无论是出现在开发阶段还是项目设计阶段,这种普遍关注点都称为横切关注点,可以通过AOP解决可以动态向运行中的代码添加所需的行为。它们会动态装饰方法的调用,就好像装饰模式,装饰对象一样。...

2021-09-23 10:35:53 108

原创 第五章 装饰模式

一,何为装饰模式?其目的是包装一个目标对象,从而可以在运行时动态添加新的职责。每个装饰器都可以包装另一个装饰器,这样从理论上来说可以对目标对象进行无限次的修饰二,用普通代码实现装饰模式//Order接口public interface Order { public double getPrice(); public String getLabel();}//被装饰的类要实现Order接口public class Pizza implements Order { private St

2021-09-22 15:07:13 71

原创 第四章 工厂模式

一,何为工厂?工厂模式有两种形式:工厂方法与抽象工厂。它们的意图是一样的:提供一个接口,在不指定具体类的情况下创建相关或依赖的一系列对象工厂的目的在于创建对象。创建的逻辑被封装在工厂中,要么提供一个方法来返回新创建的对象(工厂方法模式),要么将对象的创建委托给子类(抽象工厂模式)。无论哪种情况,对象的创建都从对象的使用中抽离处理了通常来说,工厂本身会被实现为单列或是静态类,因为一般来说只需要一个工厂实例即可。这么做会将工厂对象的创建集中到一个地方,对代码进行修改和更新时有利于更好地组织和维护

2021-09-21 22:00:55 72

原创 第三章 依赖注入与CDI

依赖注入:Dependency Injection一 ,Java EE 实现依赖注入java EE 为了摆脱XML配置,java EE新增了几个注解来执行注入1,@Resource(),用于注入数据源、java消息服务(JMS)、URL、邮件与环境变量2,@EJB,用于注入EJB3,@WebServiceRef 用于注入Web Service4,@Inject 注解DI是类型安全的,因为它会根据对象引用类型注入依赖。import javax.inject.Inject;class .

2021-09-20 17:03:26 246

原创 第二章 单列模式

1.何为单列模式Spring等企业框架大量使用了单列模式,单列类可以保证其类型只会生成一个实例。只拥有一个实例在很多时候是很有用的,比如说全局访问以及缓存代价高昂的资源。在JavaEE中提供了一种内建机制,开发者可以通过为类添加注解来方便的创建单列。1.1单列模式的运用场景1.跨越整个应用程序域来访问共享数据,比如配置数据2.只加载并缓存代价高昂的资源一次,这样可以做到全局共享访问并且改进性能。3.创建应用日志实例,因为通常情况下只需要一个即可。4.管理实现工厂模式的类中的对象。5,创建

2021-09-17 15:41:50 117

原创 第一章 门面模式

1.门面模式简介1.1 简介为子系统中的一组接口提供一个统一的接口即:在隐藏子系统复杂性的同时,门面模式又通过一个易于使用的接口提供子系统的全部功能。例如:一个洗衣机有两种功能,强力洗涤和轻度洗涤,用户使用只需做出两种洗涤的决定,无需考虑两种洗涤的流程1.2门面模式的适用情况为遗留的后端系统提供简单且统一的访问为类创建一个公开的API,如驱动程序为可用服务提供粗粒度的访问。服务会被组合减少网路调用。门面会对子系统发起多次调用,而远程客户端只对门面进行一个调用将应用的流程与内部细节封

2021-09-13 18:15:22 91

原创 集合、链式结构

1.使用栈计算后缀表达式算法如下:从左到右扫描表达式,依次识别每个标记,如果是操作数,入栈,如果是运算符,pop两个元素计算,再将结果入栈。当到达表达式尾部时,栈中保留的元素就是表达式的最后结果。Javadoc标记是一个良好的函数注释标记再idea上快速注释是再函数前写/**+enter键...

2021-08-17 21:10:20 111

原创 Java异常处理

1.try catch finally语句捕获并且处理异常注意:无论是正常退出try块还是抛出异常退出都会执行finally2.我们可以通过Exception或者其后代派生一个新类来定义自己的异常。我们选择哪个类作为父类取决于新异常所表示的情况或者条件3.RuntimeException类型对象或其后代不接受检查,受检查的异常要么由try捕获,要么在方法头的throws子句中列出...

2021-08-11 22:36:48 42

原创 css继承和简写属性,以及在使用简写属性中出现的一些问题的解决

继承如果一个元素的某个属性没有层叠值,则可能会继承祖先某个元素的值继承一般是顺着DOM树向下传递的可以被继承的属性默认情况下,只有特定的一些属性能被继承,通常是跟文本相关的属性color,font,font-family,font-size,font-weight,font-variant,font-style,line-height,letter-spacing,text-align,text-indenttext-transform,white-space,word-spac

2020-12-17 17:09:02 189

原创 css层叠,CSS选择器优先级最佳解释

css层叠​ /* 样式的来源 > 样式的是否内联 > 选择器的优先级 > 源码中声明顺序​ 1.我们要尽量避免使用ID选择器#​ 2.作者的!important声明 > 作者 > 用户代理​ */​ /* 理解优先级1.行内样式​ 行内样式会覆盖任何来自样式表和​ eg:<a href = 'javascript:;' style = "background-color: orange;"></a&gt

2020-12-17 15:58:01 307

原创 数据结构:数组,稀疏矩阵,矩阵的压缩。应用:矩阵的转置,矩阵相乘

稀疏矩阵三元组顺序表用于储存压缩后的稀疏矩阵顺序存储表示#define MAXSIZE 125000//设置非零元素的最大个数为125000typedef struct{ int i;//元素行号 int j;//元素列号 Element e;//元素值}Tripe;typedef struct { Tripe data[MAXSIZE+1]; int mu;//总行数 int nu;//总列数 int tu;//非零元个数}TsMatrix;...

2020-10-28 23:16:10 600

原创 数据结构:串的知识总结,BF,KMP算法

数据结构:串的知识总结,BF,KMP算法#mermaid-svg-Vooz0VfdiWSP8pH7 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-Vooz0VfdiWSP8pH7 .label text{fill:#333}#mermaid-svg-Vooz0VfdiWSP8pH7 .node rect,#m

2020-10-23 21:47:11 418

原创 数据结构中栈的学习基础知识总结

数据结构中栈的学习总结栈的描述栈是一种特殊的的线性表,只在一端(栈顶,top)进行插入和删除输入数据:入栈 push删除数据并返回栈顶元素:出栈 pop栈的操作集栈(stack)的长度 Maxsize栈的元素 item生成空栈Stack CreateStack(int Maxsize)//生成空栈,最大长度为Maxsize判断栈是否满int IsFull(Stack S,int Maxsize)Push操作void Push(Stack S ,Ele

2020-10-17 10:15:57 408

原创 试用c语言编写一高效算法,将一顺序存储的线性表(设元素均为整型)中所有零元素向表尾集中,其它元素则顺序向表头方向集中

试用c语言编写一高效算法,将一顺序存储的线性表(设元素均为整型)中所有零元素向表尾集中,其它元素则顺序向表头方向集中常见思路:1,从前往后扫描,见到0元素先记数,再将后续一非0元素,前移并继续扫描,全部扫完后再把后续部分清0``2,从前往后扫描,见到0元素则与尾部非0元素互换前期准备链表的构建#include<stdio.h>#include<malloc.h>typedef struct Lnode { int date; struct Lnode *nex

2020-10-03 09:08:23 1271 5

空空如也

空空如也

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

TA关注的人

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