自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

贾欣晓的博客

厚积薄发

  • 博客(149)
  • 资源 (2)
  • 收藏
  • 关注

原创 层次式架构设计-体系结构概述

软件体系结构可定义为:软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件层次式体系结构是最通用的架构,也被叫作N层架构模式(n-tier architecture pattern),这也是Java EE(J2EE)应用经常采用的标准模式。分层架构的一个特性就是关注分离(separation of concerns)。该层中的组件只负责本层的逻辑,组件的划分很容易明确组件的角色和职责。

2024-04-06 21:50:58 238

原创 信息系统架构设计-以服务为中心的企业整合实践

描绘了和Ramp Control相关的IT系统的状况,包括周围应用和应用提供的接口,这些应用和Ramp Control交互的类型和数据格式。本文将以Ramp Control系统中的Ramp Coordination流程为例,说明如何用以服务为中心的企业集成技术一步步解决该公司IT技术人员面临的企业集成问题。很明显,如此多的流程之间共享着一个业务活动的集合,如此多种类型的流程都是这些业务活动的不同组装方式。实际上,Ramp Coordination的流程因航班类型的不同,机型的不同有很大的差异。

2024-04-05 23:18:17 982

原创 什么是Redis数据一致性?如何解决?

什么是Redis数据一致性?如何解决?

2024-03-31 18:11:52 375

原创 图解分布式架构-CAP原则

什么是CAP?为什么不能同时拥有,只能两两组合?

2024-03-30 08:47:36 267

原创 数据库范式拆分实战

实战讲解如何将一个第一范式的表拆分到第三范式。

2024-03-24 22:14:22 789

原创 什么是数据库设计?基本步骤有哪些?

什么是数据库设计?基本步骤有哪些?

2024-01-28 20:25:11 370

原创 什么是数据库的三级模式两级映象?

外模式/概念模式映象(逻辑映象):是表和视图之间的映象,存在于概念模式和外模式之间;若表中的数据发生了修改,只需修改此映象,而无需修改应用代码。概念模式/内模式映象(物理映象):是表和数据的物理存储之间的映象,存在于概念模式和内模式之间;若修改了数据的存储方式,只需要修改此映象,而无需修改应用代码

2024-01-27 18:45:00 770

原创 如何开发一个prompt?prompt的使用有哪些原则?

写提示词时,第一次尝试是值得的,反复完善提示,获得越来越接近你想要的结果

2023-12-17 20:10:21 643

原创 什么是Restful?

REST是英文representational state transfer(表象性状态转变)或者表述性状态转移。Rest是web服务的一种架构风格。使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议。轻量级,跨平台,跨语言的架构设计。它是一种设计风格,不是一种标准,是一种思想。对应的中文是rest式的Restful web service是一种常见的rest的应用,是遵守了rest风格的web服务。

2023-12-10 19:49:52 924

原创 如何理解java中的context对象?

首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境;其 次,在web.xml中会提供有contextLoaderListener。

2023-12-10 19:48:05 1378

原创 操作系统(存储管理&进程管理&设备管理)

操作系统详解:1.存储管理2.进程管理3.设备管理

2023-11-18 22:25:52 438

原创 什么是java枚举?为什么要用java枚举?

创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)。枚举类型符合通用模式 Class Enum,而 E 表示枚举类型的名称。枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。/*** 枚举测试类。

2023-11-18 21:35:59 146

原创 你真的了解java中的Class对象吗?

为了在使用泛化的Class引用时放松限制,可以使用通配符,它是java泛型的一部分。为了创建一个Class引用,它被限定为某种类型,或该类型的任何子类型,你需要将通配符与extends关键字相结合,创建一个范围。比如程序创建第一个对类的静态成员的引用时,就会加载这个类。为了生成这个类的对象,运行这个程序的JVM,会使用“类加载器”的子系统。因此,使用new操作符创建类的新对象也会被当作对类的静态成员的引用。一旦某个类的Class对象被载入内存,它就被用来创建这个类的所有对象。(同名的.class文件中)。

2023-11-18 21:30:25 89

原创 什么是java反射机制?

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Class对象的由来是将class文件读入内存,并为之创建一个Class对象。

2023-11-18 21:29:37 114

原创 什么是静态代理、JDK动态代理、cglib动态代理?

静态代理的缺点很明显:一个代理类只能对一个业务接口的实现类进行包装,如果有多个业务接口的话就要定义很多实现类和代理类才行。而且,如果代理类对业务方法的预处理、调用后操作都是一样的(比如:调用前输出提示、调用后自动关闭连接),则多个代理类就会有很多重复代码。这时我们可以定义这样一个代理类,它能代理所有实现类的方法调用:根据传进来的业务实现类和方法名进行具体调用。——那就是动态代理。

2023-11-18 21:25:38 97

原创 阿里AoneFlow分支管理

AoneFlow 只使用三种分支类型:主干分支、特性分支、发布分支,以及三条基本规则。

2023-11-18 21:20:22 415

原创 git基础命令

git是一种分布式版本控制系统。版本库是集中存放在中央服务器。集中式版本控制系统必须联网才能工作,本地电脑从中央服务器获取最新的版本,修改之后再推送给中央服务器。中央服务器出现问题,会影响所有人的工作。分布式版本控制系统没有中央服务器,每个人的电脑上都是一个版本库。分布式版本控制系统有一台用于交换大家修改的远程服务器,例如gitHub,gitLab。与本地版本库的操作不需要联网。初始化git版本库之后会生成一个隐藏文件.git,可以理解为git的版本库repository。

2023-11-18 21:16:25 296

原创 基于token的鉴权机制-JWT

网络应用环境间传递声明执行的一种基于JSON的开放标准。适用于分布式站点的单点登录(SSO)场景。

2023-11-18 21:14:28 132

原创 计算机组成与结构(系统可靠性分析&网络安全&加解密认证技术)

计算机组成与结构-安全性可靠性

2023-11-04 21:14:29 171 1

原创 计算机组成与结构(指令系统&存储系统&总线技术)

计算机组成与结构-计算机体系结构

2023-11-04 19:14:09 163

原创 海明码校验纠错原理实例详解

通过一个例子搞懂海明码校验纠错原理

2023-10-28 23:22:01 329

原创 二叉树:有了如此高效的散列表,为什么还需要二叉树?

上一节我们学习了树、二叉树以及二叉树的遍历,今天我们再来学习一种特殊的的二叉树,二叉查找树。二叉查找树最大的特点就是,支持动态数据集合的快速插入、删除、查找操作。我们之前说过,散列表也是支持这些操作的,并且散列表的这些操作比二叉查找树更高效,时间复杂度是 O(1)。

2023-10-28 21:29:01 118

原创 二叉树:什么样的二叉树适合用数组来存储?

前面我们讲的都是线性表结构,栈、队列等等。今天我们讲一种非线性表结构,树。树这种数据结构比线性表的数据结构要复杂得多,内容也比较多,所以我会分四节来讲解。

2023-10-28 21:28:11 154

原创 哈希算法:哈希算法在分布式系统中有哪些应用?

这三个应用都跟分布式系统有关。

2023-10-28 21:27:02 131

原创 哈希算法:如何防止数据库中的用户信息被脱库?

散列表也叫哈希表,散列函数也叫哈希函数、哈希算法,都源于英文Hash。将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法)对输入数据非常敏感,哪怕原始数据只修改了一个Bit,最后得到的哈希值也大不相同散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值。

2023-10-28 21:25:25 164

原创 散列表:为什么散列表和链表经常会一起使用?

链表那一节,我们用链表来实现LRU缓存淘汰算法,但是链表实现的LRU时间复杂度是O(n),可以通过散列表将时间复杂度降低为O(1)跳表那一节,Redis的有序集合是使用跳表来实现的,跳表可以看成一种改进版的链表。Redis有序集合不仅使用了跳表,还用到了散列表。java中LinkedHashMap这样一个常用的容器,也用到了散列表和链表两种数据结构。

2023-10-22 18:17:13 120

原创 散列表:如何打造一个工业级水平的散列表?

开放寻址法的缺点:开放寻址法解决冲突的散列表,删除数据比较麻烦,需要特殊标记已经删掉的数据。在开放寻址法中,所有的数据都存储在一个数组中,比起链表法来说,冲突的代价更高。所以,使用开放寻址法解决冲突的散列表,装载因子的上限不能太大。这也导致这种方法比链表法更浪费内存空间。总结:当数据量比较小、装载因子小的时候,适合采用开放寻址法。这是java中的ThreadLocalMap使用开放寻址法解决散列冲突的原因。

2023-10-22 18:16:13 126

原创 散列表:Word文档中的单词拼写检查功能是如何实现的?

散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。散列表的两个核心问题是散列函数设计和散列冲突解决。散列函数设计的好坏决定了散列冲突的概率,也就决定了散列表的性能。

2023-10-22 18:15:18 118

原创 跳表:为什么Redis一定要用跳表来实现有序集合

二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实现。如果数据存储在链表中,就真的没法使用二分查找算法了吗?我们可以对链表稍加改造,就可以支持类似“二分”的查找算法。改造之后的数据结构叫作“跳表(Skip list)”跳表是各方面性能都比较优秀的,可以支持快速的插入、删除、查找操作,写起来不复杂,甚至可以替代红黑树(Red-black tree)。问题:Redis为什么会选择用跳表来实现有序集合呢?

2023-10-22 18:14:13 95

原创 二分查找:如何快速定位IP对应的省份地址?

参照变体一} else {return -1;**凡是用二分查找能解决的,绝大部分我们更倾向于用散列表或者二叉查找树。**即便是二分查找在内存使用上更节省,但是内存紧缺的情况并不多。二分查找真的没什么用处了吗?“值等于给定值”的二分查找确实不怎么会被用到,二分查找更适合用在“近似”查找问题,在这类问题上,二分查找的优势更加明显。比如这篇讲到的几种变体问题,用其他数据结构,比如散列表、二叉树,就比较难实现了。

2023-10-22 18:07:43 678

原创 一图搞懂MySQL查询语句执行流程

一图搞懂MySQL查询语句执行流程

2023-10-15 11:15:02 67

原创 二分查找:如何用最省内存的方式实现快速查找功能?

有序数据集合的查找算法:二分查找(Binary Search)算法,也叫折半查找算法。二分查找的思想非常简单,但是难掌握好,灵活运用更加困难。

2023-10-14 22:41:03 299

原创 排序优化:如何实现一个通用的、高性能的排序函数?

大部分排序函数都是采用O(nlogn)排序算法实现,但是为了尽可能提高性能,会做很多优化。排序中的优化策略,比如合理选择分区点、避免递归太深等。

2023-10-14 22:40:09 1039

原创 线性排序:如何根据年龄给100万用户数据排序?

学习了三种线性时间复杂度排序算法,桶排序、计数排序、基数排序。他们对排序的数据都有比较苛刻的要求,应用不是很广泛。但是如果数据特征比较符合这些排序算法的要求,应用这些算法,会非常高效,线性时间复杂度可以达到O(n)。桶排序和计数排序的排序思想非常相似,都是针对范围不大的数据,将数据划分成不同的桶来实现排序。基数排序要求数据可以划分成高低位,位之间有递进关系。比较两个数,我们只需要比较高位,高位相同再比较低位。而且每一位的数据范围不能太大,因为基数排序算法需要借助桶排序或者计数排序来完成每一位的排序工作。

2023-10-14 22:39:24 177

原创 排序:如何用快排思想在O(n)内查找第K大元素?

冒泡排序、插入排序、选择排序三种排序算法,时间复杂度都是O(n^2),比较高,适合小规模数据的排序。和两种时间复杂度O(nlogn)的排序算法,适合大规模的数据排序,比上述三种更常用。归并排序和快速排序都用到了分治思想,非常巧妙。我们可以借助这个思想,解决排序问题:如何在O(n)的时间复杂度内查找一个无序数组中的第K大元素?

2023-10-13 21:52:14 430

原创 排序:为什么插入排序比冒泡排序更受欢迎?

需掌握的的排序:冒泡排序、插入排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序。按照时间复杂度可以分为三类:?

2023-10-13 21:50:20 216

原创 递归:如何用三行代码找到“最终推荐人”?

屏蔽掉递归细节,理解就会简单。

2023-10-13 21:49:26 85

原创 队列:如何在线程池等有限资源池中的应用?

我们知道,CPU 资源是有限的,任务的处理速度与线程个数并不是线性正相关。相反,过多的线程反而会导致CPU频繁切换,处理性能下降。所以,线程池的大小一般都是综合考虑要处理任务的特点和硬件环境,来事先设置的。?

2023-10-13 21:48:28 96

原创 什么是CAS机制?

什么是CAS机制?

2023-10-08 21:46:55 109

原创 Springboot与Spring到底有什么区别?

Springboot与Spring到底有什么区别?

2023-10-08 21:33:11 174

软考笔记-网络安全之加密技术思维导图

软考笔记-网络安全之加密技术思维导图

2023-09-03

软考-总线结构基础知识思维导图

软考-总线结构基础知识思维导图

2023-08-28

软考-计算机存储系统笔记脑图

软考-计算机存储系统笔记脑图

2023-08-27

软考-计算机指令基础知识脑图

软考-计算机指令基础知识脑图

2023-08-27

软考-计算机体系结构分类之Flynn分类法

软考-计算机体系结构分类之Flynn分类法

2023-08-27

PostgreSQL Windows安装包

PostgreSQL Windows安装包

2023-04-23

Windows上安装Redis3.0版本

Windows上安装Redis3.0版本,适用于windows64位操作系统安装

2022-08-08

基于springMVC+spring+mybatis+mysql框架的增删改查demo

本代码基于SpringMVC+spring+mybatis+mysql实现增删改查的基本操作

2016-07-07

空空如也

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

TA关注的人

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