自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

瑾析编程

做一名专注的技术大人

  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 【操作系统】第二章 进程

文章目录第1节 概述定义出现的原因进程的组成组织方式进程特征第2节 进程的状态与转换状态转换第3节 进程的控制第1节 概述定义来自百度百科狭义上进程是正在运行的程序的实例。广义上进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。出现的原因当计算机引入多道程序技术后,为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念。进程的组成进程是由程序段、数据段、程序控制块

2021-05-26 01:19:17 221

原创 【操作系统】 第一章 概述

文章目录第1节 概念和功能概念功能功能1:提供资源管理功能2:提供调用硬件的接口功能3:实现硬件扩展第2节 特性特性1:并发特性2:共享特性3:虚拟特性4:异步第3节 运行机制和体系结构运行机制体系结构时钟管理中断处理原语内核程序划分:大内核和微内核第4节 中断定义分类:内中断和外中断第5节 系统调用定义系统调用和库函数的区别操作系统系列文章读者需要具备一定计算机基础知识。第1节 概念和功能概念操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以提供

2021-05-19 23:55:33 284

原创 JMeter - Thread Group

环境说明操作系统:WindowsJMeter版本:5.4.1JDK:1.8Thread GroupThread Group是测试计划(Test Plan)的基础,用于配置测试计划的执行参数。添加Thread Group步骤,右键Test Plan,依次选择Add -> Threads(Users) -> Thread Group,见图1。图1.Thread Group添加步骤示意图配置说明Thread Group存在几个常用配置参数,见图2.图2. 配置页面N

2021-05-11 23:48:40 988

原创 GIT常用功能

本文章主要通过Git Bash工具来介绍GIT常用的功能,文章最后会附带IDEA操作截图。另外本文章只记录自己常用的操作,如果要系统学习建议安装Git Bash工具,通过git --help add进行系统帮助手册。1. 名词解析名词说明Local(本地)本地仓库,仅自己可见,通过commit命令可见将操作提交到本地仓库Remote(远程)远程仓库,仓库成员可见,通过push命令将本地仓库中本地分支推送到远程仓库中远程分支Commit(提交)提交修改内容到本地仓.

2021-02-01 00:16:35 523

原创 【Enterprise Architect】 -通过数据库反向生成DataModel

软件版本:Enterprise Architect 13.5.1351背景公司底层框架使用开源框架,已经将实体表生成数据库。希望将实体关系保存起来,统一管理初始化脚本。解决方案通过Enterprise Architect直接反向生成。方案执行步骤新建工程,add view “数据库” -> add Data Model,结果如下图右键点击“数据库”,选择“Code Engineering” -> “Import DB schema from ODBC source”.

2020-12-03 10:43:24 774 2

原创 【Enterprise Architect】 - 团队合作- 使用数据库

软件版本:Enterprise Architect 13.5.1351背景团队在进行概要设计时,使用EA画一些UML图不能同步,只能通过导入导出方式实现,太麻烦。解决方案通过Enterprise Architect数据库来进行数据同步。方案执行步骤下载MySQL ODBC,下载地址:https://dev.mysql.com/downloads/connector/odbc/,默认为最新版本(8.0.15),如果是win7系统,建议下载5.1.13,早期版本需要点击右边连接切换查看早期版.

2020-12-03 10:18:47 515

原创 前后端分离下解决文件下载权限问题

问题背景介绍前后端分离框架中,前端在发起Ajax请求时,在Header携带Token值,后端获取该Token进行权限校验。问题描述在下载文件的场景,大部分浏览器是不支持Ajax请求文件下载,所以通常做法是直接请求下载地址,这时候是无法通过代码设置Header的参数,也就是无法知道当前用户信息,如何进行权限控制?解决方案该问题的痛点是数据权限问题。初步思路在用户要下载的时候,先进行权限校验权限不足时,进行信息提示权限足够时,则为用户生成一次性的下载链接(下载一次后失效,保证数据安全)

2020-10-26 11:56:41 1429 2

原创 JVM性能诊断工具详解

简介本文主要是收集整理Linux系统下JVM自带的性能诊断工具(jps、jstat、jmap),包含工具的作用,用法,返回数据说明。JVM自带工具,都可以通过command -help来阅读工具的使用说明工具介绍JPS作用用来查看服务器(如果没有指定服务器,默认为本机)上运行的所有JAVA进程pid。一般情况下使用这个工具的目的只是为了找出运行的JVM进程ID,然后可以进一步使用其它的工具来监控和分析JVM。用法语法规则[root@localhost ~]# jps -helpusa

2020-09-20 22:37:29 321

原创 OrderBy工作原理(待更新)

本文介绍OrderBy工作原理,参考极客时间-林晓斌老师的MySQL实战45讲。本文需要先掌握B+Tree,覆盖索引知识点。https://time.geekbang.org/column/article/73479概述OrderBy根据max_length_for_sort_data参数可以分为两类:一种是全字段排序,另一种是rowid排序。全字段排序rowid排序详情...

2020-09-15 22:16:09 826

原创 MySQL语句的执行过程(待更新)

前言客户端一般会使用长连接连接到数据库服务器,当执行SQL语句时先通过连接器进行权限校验,校验通过则会查询缓存(MySQL 8已移除缓存),缓存的数据结构为key-value,key为SQL语句,value为SQL语句执行结果;如果命中缓存则直接返回结果,否则进入分析器分析器会先进行词法分析,确认关键字,表名,字段名,再进行语法分析,判断是否为合法的SQL语句;如果表或字段不存在,或者SQL不合法则抛出异常,正常则进入优化器优化器会根据情况为当前查询选择最优的执行方案(不过有时候会选择错索引,可

2020-09-15 13:40:14 165

原创 《架构师训练营》-第十二周-大数据

HDFSRAID技术参考百度百科:磁盘阵列参考知乎:RAID有哪几种?有什么区别?磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。常用的标准RAID方案有以下:RAID 0:将多块磁盘组成一块更大的磁盘。例如:使用了三块80GB

2020-09-02 23:17:38 160

原创 《架构师训练营》-第九周-JVM和高性能秒杀

JVM组成架构类加载器加载.clsss文件到内存(方法区),当前线程或者新线程会

2020-09-01 23:23:47 183

原创 《架构师训练营》-第十一周-安全与高可用

安全攻击XSS跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。百度百科:XSS攻击案例原理HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,与之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符(如<)时,用户浏览器会将其误认为是插入了H

2020-08-26 22:28:19 230

原创 《架构师训练营》-第八周-网络与数据库

网络通信协议一次Web请求的网络通信历程OSI七层模型和TCP/IP四层模型OSI七层模型TCP/IP四层模型功能应用层(Application Layer)应用层(Application Layer)为用户的应用提供服务并支持网络访问表示层(Presentation Layer)应用层(Application Layer)负责转化数据格式,并处理数据加密和数据压缩会话层(Session Layer)应用层(Application Layer)负责管理网

2020-08-16 21:29:36 252

原创 《架构师训练营》-第八周-数据结构与算法

算法时间复杂度多项式时间复杂度:O(1),O(logn),O(n^a)非多项式时间复杂度:O(a^n),O(n!)空间复杂度算法在执行过程中需要用到的存储空间大小。NP问题P问题:能在多项式时间复杂度内解决的问题NP问题:能在多项式时间复杂度内验证答案正确与否NP-hard问题:比NP问题更难的问题。(例如二元一次方程是比一元一次方程更难的方程)NP完全问题:是一个NP-hard问题,也是NP问题数据结构数组// 30分...

2020-08-16 11:39:18 180

原创 《架构师训练营》-第十周-微服务与DDD

微服务当一个系统功能非常多时,通过微服务可以解决以下问题:解决巨无霸系统的编译、部署困难解决巨无霸系统通过一个仓库进行管理,多人开发,分支管理问题解决集群部署时,耗尽数据库连接的问题解决因为耦合性太高,改动难的问题微服务框架...

2020-08-12 23:10:09 193

原创 由浅入深了解synchronized关键字

简介本文主要介绍synchronized的用法,功能,原理,以及最后通过实验数据验证。用法使用synchronized关键字对方法或者代码块进行修饰,来实现多线程下加锁的目的,具体用法如下:介绍代码功能修饰静态方法public synchronized static void add() {}对类对象进行加锁修饰实例方法public synchronized void add() {}对类实例进行加锁修饰代码块-类对象synchronized (Obj.c

2020-08-05 15:50:27 226

原创 《架构师训练营》-第七周-性能优化

性能测试性能测试是性能优化的前提,也是性能优化结果的检查和度量标准。不同视角下的性能优化有不同的标准,也有不同的优化手段。主观视角:用户感受到的性能客观视角:性能指标衡量的性能性能测试指标响应时间响应时间是指应用系统从发出请求开始到收到最后响应数据所需要的时间。并发数并发数是指系统能够同时处理请求的数目,这个数字也反映了系统的负载特性。处理并发用户数,还存在着在线用户数和系统用户数。吞吐量吞吐量是指单位时间内系统处理的请求的数量,体现系统的处理能力。对于网站,可以用“请求数/秒”或是

2020-07-22 10:02:30 367

原创 《架构师训练营》-第六周-NoSQL

介绍CAP、一致性协议、NoSQL数据库CAP原理一致性(Consistency)Every read receives the most recent write or an error.每次读取的数据都应该是最近写入的数据或者返回一个错误,而不是过期数据,也就是说数据是一致的。数据在多个副本之间是否能够保持一致的特性。可用性(Availability)Every request receives a(non-error) response,without the guarantee t

2020-07-15 23:03:17 280

原创 《架构师训练营》-第五周-缓存、队列、负载均衡、分布式数据库

这周总共介绍了缓存,负载均衡缓存缓存命中率影响缓存命中率的指标有:缓存键集合大小,缓存可使用内存空间,缓存对象生存时间。缓存键集合大小在保证缓存命中率的同时,尽量减少缓存键的数量。天气预报,根据IP来缓存和根据国家来缓存。缓存可使用内存空间物理上能缓存上的对象越多,缓存的命中率越高缓存对象生存时间对象缓存的时间越长,缓存对象被重用的可能性越高一致性Hash算法普通hash算法普通hash算法,将缓存数据的key计算一个值,然后mod服务器节点数量。当时在增加或移除服务器节点时,

2020-07-08 19:01:58 307

原创 Swagger使用说明

需求针对前后端分离框架,特别是当前后端为不同人员开发时,需要接口提供方(一般为后端开发团队)提供一份接口文档来描述接口内容。需求:能不能在写代码时,一起生成接口文档。解决方案swagger参考官网案例:点击进入使用说明引入依赖// ${swagger.version} 为 2.9.2<!-- swagger --><dependency> <groupId>io.springfox</groupId> <artif

2020-07-08 09:36:43 204

原创 SpringCloudAlibaba-入门操作

本文主要是预研Spring Cloud Alibaba技术,参考资料有:SpringCloud官网Nacos中文文档NacosNacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos Server稳定包下载地址地址:https://github.com/alibaba/nacos/releases解压: unzip nacos-server-version.zip或者tar−xvfnacos−server−version.zip 或者 tar

2020-07-04 23:14:16 394

原创 《架构师训练营》-第四周-架构演进

高并发挑战的两个方法垂直伸缩垂直伸缩是指提升单台服务器硬件,不需要改变系统软件架构。缺点当硬件提升到一定程度之后,提升的性能和价格性价比不高水平伸缩水平伸缩是指增加服务器,将系统由单机扩展为集群,以此来获取性能提升。缺点初期需要投入较多的人力来实现系统的集群。架构演化第零阶段单机部署应用程序,文件服务器和数据库,如下图:第一阶段当发现单台的网络带宽,CPU,IO不足时,可以将文件服务器和数据库独立部署,如下图第二阶段当发现请求频繁的访问数据库,导致响应偏慢,可以考虑增加缓存

2020-07-01 09:22:44 368

原创 Redis原理

原理多路复用Redis协议:RESP持久化混合模式:RDB+AOFRDB默认情况下,是快照RDB的持久化方式,将内存中的数据以快照的方式写入二进制文件中,默认的文件名是dump.rdb# 900秒内,如果超过1个key被修改,则发起快照保存save 900 1 # 300秒内,如果超过10个key被修改,则发起快照保存save 300 10# 60秒内,如果1万个key被修改,则发起快照保存save 60 10000AOF配置文件中的appendonly修改为yes,开启A

2020-06-25 19:20:51 145

原创 《架构师训练营》-第三周-设计模式-待更新

课堂内容学习代码:https://github.com/CNXMBuyu/design-pattern-study.git简单工厂package cn.hgy.simplefactory;/** * @author guoyu.huang * @version 1.0.0 */public class SimpleFactory { public BaseClass getClass(String type) { String classAType = "clas

2020-06-24 23:34:10 223

原创 SpringCloud学习-更新中

eureka服务注册中心的一些基本操作如下图:EurekaClient:包含服务提供者和服务调用者EurekaServer:Eureka服务器register - 服务注册EurekaClient向EurekaServer提供自身的元数据。renew - 服务续约EurekaClient在默认情况下,每隔30秒会发送一次心跳来进行服务续约。通过服务续约来告知服务器,该EurekaClient是可用的。正常情况下,如果EurekaServer在90秒内没有收到EurekaClient的

2020-06-22 23:13:20 138

原创 Redis基础和应用

数据结构string类似数组的数据结构。扩容:如果数组的长度小于1MB,扩容是当前长度*2;如果超过1MB,每次增加1MB最大容量:512M指令set key valueget keyexists keydel keymset key1 value1 key2 value2 …mget key1 key2 …expire key expire_time_sec :设置过期时间setex key expire_time_sec value : 创建时设置过期时间setnx k

2020-06-22 07:18:25 264

原创 《架构师训练营》-第二周-面向对象编程

面向对象编程对象对象具有状态、行为和标识。状态:每个对象可以有自己的数据(属性)行为:每个对象可以产生行为(函数)标识:表明每个对象都区别于其它的对象(地址)面向对象编程的三要素封装(Encapsulation)封装是为了提高代码可维护性和易用性,降低接口复杂度,来隐藏信息或者保护数据。Java语言利用访问修饰符来达到封装的目的。private,protected,public三个级别,当不使用访问修饰符时,类默认是同一个包下可见,接口默认是public级别。继承(Inherit

2020-06-17 22:48:04 143

原创 《高级JAVA开发面试》JVM问题整理(更新中)

java内存模型程序计数器:一个线程一个程序计数器方法区:metaspace;存放类结构以及常量虚拟机栈:每个方法都分配一个虚拟机栈本地方法栈:native方法堆:实例数据堆逻辑内存新生代:Eden、Survivor from、Survivor to老年代可达性算法能作为GC Root对象:虚拟机栈中引用的对象方法区中类静态属性引用的对象方法区中常量引用的对象本地方法栈中JNI引用的对象垃圾回收复制算法:当内存不够可以借用老年代(该算法一般用于新生代垃圾回收)

2020-06-17 21:58:21 186

原创 MYSQL8-性能调优

explain使用explain用于分析sql语句的性能。案例分析:mysql> show create table employees;CREATE TABLE `employees` ( `id` int(11) NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) DEFAULT NULL, `hire_date` date NOT NULL, `card_no` char(18)

2020-06-14 08:43:21 1105

原创 JDK8-数据结构-Map以及具体的实现(待更新)

Map存储一组键值对象,提供key到value的映射。实现类java.util.HashMap数据结构与算法HashMap用到数组,链表(单链表),树(红黑树)三种数据结构和哈希算法。static final int hash(Object key) { int h; // 异或运算:0^0=0;0^1=1;1^0=1;1^1=0 return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16)

2020-06-09 08:32:28 332

原创 《架构师训练营》-第一周-编写架构设计文档

4+1架构视图逻辑视图(Logical View)相关方客户、用户、开发组织管理者视角系统的功能元素,以及它们接口、职责、交互主要元素系统、子系统、功能模块、接口用途开发组织划分、成本\进度的评估逻辑视图案例过程视图(Process View)相关方性能优化、开发相关人员视角系统运行时线程、进程的情况主要元素系统进程、线程以及处理队列等过程视图案例物理视图(Physical View)相关方系统集成商、系统运维人员视角系统逻辑组件到物理节点的物理部

2020-06-09 08:30:36 395

原创 JDK8-数据结构-List以及具体的实现

List接口ListIterator迭代器

2020-05-28 07:51:21 240

原创 基础算法-归并排序,快速排序

本文图片来在极客时间-王争老师的《数据结构与算法之美》本文源码地址>>>GitHub归并排序(MergeSort)算法说明归并排序的核心思想还是蛮简单的。如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。例如要对一组元素11 8 3 9 7 1 2 5进行归并排序,步骤如下:步骤说明假设要对N个元素进行归并排序,执行的步骤如下:JAVA代码快速排序(QuickSort)算法说.

2020-05-23 08:33:35 203

原创 基础算法-冒泡排序,插入排序,选择排序

本文图片来在极客时间-王争老师的《数据结构与算法之美》冒泡排序(Bubble Sort)算法说明每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。例如:要对一组数据 4,5,6,3,2,1,从小到大进行排序。第一次冒泡操作的详细过程如下:步骤说明假设要对N个元素进行冒泡排序,执行的步骤如下:比较相邻的元素。如果前者>后者,则交换两者的位置。按顺序对.

2020-05-17 07:22:09 207

原创 设计模式下篇-行为型

行为型主要解决类或对象之间交互的经典结构。行为型的设计模式有观察者模式,模板模式,策略模式,职责链模式,状态模式,迭代器模式,访问者模式,备忘录模式,命令模式,解释器模式和中介模式。接下来以3个W和1个H来学习下这十一种设计模式十一种模式介绍观察者模式-Observer什么是观察者模式在对象之间定义一个一对多的依赖,当一个对象(被观察者)状态改变的时候,所有依赖的对象(观察者)都会自动收到通知。为什么使用观察者模式降低被观察者和观察者的耦合性,提高易用性。如何使用观察者模式被观察者,该

2020-05-09 07:17:51 191

原创 设计模式中篇-结构型

结构型主要解决特定场景类和对象组合使用的经典结构。结构型的设计模式有代理模式,桥接模式,装饰器模式,适配器模式,门面模式,组合模式和享元模式。代理模式-Proxy代理模式是指在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。通用代码-基础类public interface IBusinessService { void invoke(); v...

2020-05-04 14:11:34 180

原创 设计模式上篇-创建型

经典设计模式有23个,分为创建型,结构型和行为型。创建型的设计模式有工厂模式,抽象工厂模式,单例模式,建造者模式和原型模式。主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。工厂模式-Factory简单工厂package cn.hgy.simplefactory;/** * @author guoyu.huang * @version 1.0.0 */...

2020-05-03 07:34:18 179

原创 设计模式前言-设计原则、面向对象和Java语言特性

设计原则是心法,设计模式是招式。掌握心法,以不变应万变,无招胜有招。所以在学习设计模式之前,个人建议先了解本文提到的内容。一、设计原则提到设计原则,你能想起哪些设计原则?在编程的时候,你是否会思考这段代码有没有违背哪些原则?接下来,我们一起温习下六大设计原则:单一原则、开闭原则、里氏替换原则、迪米特法则(最少知道原则)、接口隔离原则、依赖倒置原则。六大设计原则首字母合起来,称为SOLID(...

2020-05-01 15:37:56 234

原创 翻译《Spring Boot Reference Guide》-第三单元.使用SpringBoot

第三单元.使用SpringBoot本节将更详细地介绍如何使用SpringBoot。它覆盖的主题有构建系统,自动配置以及如何运行你的应用。我们也会提供一些SpringBoot的最佳实践。尽管关于SpringBoot没有什么特别之处(它只是另一个你可以使用的库),但是有一些建议,当你遵循了,可以让你的开发更简单一些。如果你刚开始接触SpringBoot,你应该先阅读入门指南,然后进入这个章节。1...

2020-04-10 07:29:19 308

20210207-IDEA操作GIT截图.pptx

20210207-IDEA操作GIT截图.pptx

2021-02-24

空空如也

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

TA关注的人

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