自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(163)
  • 资源 (4)
  • 收藏
  • 关注

原创 JVM工具

记录了“堆内存使用情况”、“线程”、“类”、“CPU使用情况”共四个资源的实时情况;并且在时间范围可以选择从1分钟到1年的显示情况。

2022-08-25 12:18:47 1327 1

原创 jvm参数调优

一、了解JVM参数JVM参数类型:常见垃圾回收器组合参数设定:(1.8)GC常用参数Parallel常用参数CMS常用参数G1常用参数二、调优1、调优前的基础概念:2、什么是调优?3、调优,从规划开始三、日志详解ps日志CMSG1四、案例分析案例1案例2

2022-08-25 12:13:51 1021

原创 Java类的加载过程

应用程序根据自身需要自定义的ClassLoader,如Tomcat、Jboss都会根据j2ee规范实现ClassLoader。

2022-08-20 06:36:55 8839

转载 mysql45讲之事务到底是隔离的还是不隔离的?

InnoDB里面每个事务有一个唯一的事务ID,叫作transaction id。它是在事务开始的时候向InnoDB的事务系统申请的,是按申请顺序严格递增的。而每行数据也都是有多个版本的。每次事务更新数据的时候,都会生成一个新的数据版本,并且把transaction id赋值给这个数据版本的事务ID,记为row trx_id。同时,旧的数据版本要保留,并且在新的数据版本中,能够有信息可以直接拿到它。也就是说,数据表中的一行记录,其实可能有多个版本(row),每个版本有自己的row trx_id。在MySQL里

2022-07-06 17:47:08 160

转载 mysql45讲之全局锁和表锁和行锁

根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。MySQL提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。**全局锁的典型使用场景是,做全库逻辑备份。**也就是把整库每个表都select出来存成文本。官方自带的逻辑备份工具是mysqldump。当my

2022-07-06 17:04:06 186

转载 mysql45讲之深入浅出索引

在MySQL中,索引是在存储引擎层实现的,所以并没有统一的索引标准,即不同存储引擎的索引的工作方式并不一样。而即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。InnoDB应用最广泛,这里就说说InnoDB的索引模型。聚簇索引保证关键字的值相近的元组存储的物理位置也相同(所以字符串类型不宜建 立聚簇索引,特别是随机字符串,会使得系统进行大量的移动操作),且一个表只能 有一个聚簇索引。因为由存储引擎实现索引,所以,并不是所有的引擎都支持聚簇索 引。目前,只有solidDB和InnoDB支持。在In

2022-07-06 16:29:55 274

转载 mysql45讲之事务隔离:为什么你改了我还看不见?

事务的一些基本概念可以从我之前写的这篇文章看:spring事务管理在MySQL中,实际上每条记录在更新的时候都会同时记录一条回滚操作。记录上的最新值,通过回滚操作,都可以得到前一个状态的值。假设一个值从1被按顺序改成了2、3、4,在回滚日志里面就会有类似下面的记录。不同时刻启动的事务会有不同的read-view,同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)。当某一事务要查看其所在read-view的值时,要从当前值一直回滚到其read-view所在的位置才能得到其事务所在版

2022-07-06 16:12:29 96

转载 mysql45讲之日志系统:一条SQL更新语句是如何执行的?

经过上一节我们知道mysql分为server层和存储引擎层。这一节我们要来了解mysql这两个模块的处理日志。最开始MySQL里并没有InnoDB引擎。MySQL自带的引擎是MyISAM,但是MyISAM没有crash-safe的能力,binlog日志只能用于归档。而InnoDB是另一个公司以插件形式引入MySQL的,既然只依靠binlog是没有crash-safe能力的,所以InnoDB使用另外一套日志系统——也就是redo log来实现crash-safe能力。所以InnoDB被mysql官方引入之后就

2022-07-06 15:01:14 94

转载 mysql45讲之基础架构:一条SQL查询语句是如何执行的?

Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。校验用户名和密码,校验保留权限,一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。建立连接的过程通常是比较复杂的,所以我建议你在使用中要尽量减少建立连接的动作,也就是尽量使用长连接。但是全部使用长连接后,你可能会

2022-07-06 14:56:10 81

转载 java中内存泄漏和内存溢出是什么

一、内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。第一步,修改JVM启动参数,直接增加内存。(-Xms,-Xmx参数一定不要忘记加。)第二步,检查错误日志,查看“OutOfMemory”错误前是否有其 它异常或错误。第

2022-07-05 15:52:00 1856

转载 Java多线程之lock原理

文章目录一、AQS(AbstractQueuedSynchronizer)AQS的内部实现1、Node的主要属性:2、waitStatus节点的几种状态:3、设置尾节点:4、设置首节点:5、state二、ReentrantLock的实现原理1、lock2、unlock一、AQS(AbstractQueuedSynchronizer)Lock之所以能实现线程安全的锁,主要的核心是AQS,AQS提供了一个FIFO队列,可以看做是一个用来实现锁以及其他需要同步功能的框架。AQS的使用依靠继承来完成,子类通过继

2022-02-06 01:48:39 814

原创 设计模式之访问者模式

文章目录介绍使用场景优缺点优点缺点原理与实现介绍在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。使用场景1、对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作。2、需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,也不希望在增加新操作

2022-01-30 06:23:25 907

原创 设计模式之迭代器模式

文章目录介绍原理迭代器的优势遍历时注意删除和添加新元素的影响介绍迭代器模式(Iterator Pattern)是 用于顺序访问集合对象的元素,不需要知道集合对象的底层表示,是一种行为型模式。本文就以Java中的ArrayList为例来讲解迭代器模式的应用。原理一个完整的迭代器模式一般会涉及容器和容器迭代器两部分内容。为了达到基于接口而非实现编程的目的,容器又包含容器接口、容器实现类,迭代器又包含迭代器接口、迭代器实现类。对于迭代器模式,我画了一张简单的类图,你可以看一看,先有个大致的印象。为了

2022-01-30 05:57:55 933

原创 UML教程

文章目录UML类图图示样例一、常见UML图_类图1、什么是类图2、类在UML中表示 :3、注释部分:解释说明4、属性部分:4.1、属性语法 : [可见性]属性名[ :类型][ =初始值][{属性字符串}] ;4.2、可见性 :5、方法部分:5.1、方法语法:[可见性]操作名[( 参数表 )][ : 返回类型][ { 属性字符串 } ]5.2、可见性:6、接口二、类与类,类与接口之间的关系1、继承关系(泛化关系 Generalization)2、实现关系3、依赖关系4、关联关系5、聚合关系6、组合关系三、常见

2022-01-24 18:05:06 3531

原创 算法:树相关算法题

算法:1、判断一棵树是否是镜面树思路:把树分为左右两棵树,要验证左右两棵树为镜面关系,那么左树的左子树,就和右树的右子树成镜面关系;左树的右子树和右树的左子树成镜面关系,递归判断到最后,如果全部都是镜面关系,那么该树就是镜面树,只要有两个节点不是镜面关系这棵树就不是镜面树。// 测试链接:https://leetcode.com/problems/symmetric-treepublic class Code03_SymmetricTree { public static class TreeNo

2022-01-05 00:58:31 225

原创 算法:随机数

题目1:已知方法F()能等概率随机返回(50,100)之间的整数,写一个方法能随机等概率返回0和1。思路:1、先写一个新方法F1,返回(0,50)的随机数。2、把(0,50)分为[1.24],25,[26,49]。F1产生的随机数在[1.24]和[26,49]的概率是一样的,所以目标方法F2调用F1如果的结果在[1.24],就返回0,如果在[26,49]就返回1,如果是25就重新调用F1。// 此函数只能用,不能修改 // 等概率返回1~5 public static int f() { r

2022-01-03 18:18:51 528

原创 SpringSecurity四:基于SpringSecurity实现QQ登录

文章目录一、原理回顾二、相关接口的了解三、开发获取用户信息的api四、开发QQServiceProvider五、创建QQConnectionFactory及其需要的ApiAdapter1、ApiAdapter2、QQConnectionFactory六、配置类未完待续。。。一、原理回顾没看过前面几篇博客的内容可以先看看:SpringSecurity一:开发基于表单的登录SpringSecurity二:验证码校验和记住我SpringSecurity三:OAuth协议和SpringSocialOAu

2021-05-17 01:25:18 777 2

原创 DDD领域驱动设计五、微服务后前端如何设计

文章目录一、微前端的引入二、微前端的集成方式1、微前端与前端主页面的集成2、通用共享业务单元3、团队职责三、微前端的优势1、前端集成简单2、项目职责专一3、隔离和依赖性4、降低沟通和测试成本5、更敏捷地发布6、降低技术敏感性7、高度复用性一、微前端的引入现在企业微服务架构都是采用前后端分离的设计方式,后端也是通过微服务把项目拆分为多个小服务并独立部署。那么前端就要应对很多的后端服务,就有很多的api要管理,容易混乱,需要很高的沟通成本和技术要求。当服务出现变更的时候就要通知所有受影响的团队,需要较高的沟

2020-12-24 12:49:39 761 4

原创 DDD领域驱动设计四、分层架构和代码模型

一、DDD的分层架构DDD 分层架构包含用户接口层、应用层、领域层和基础层。通过这些层次划分,我们可以明确微服务各层的职能,划定各领域对象的边界,确定各领域对象的协作方式。。DDD的分层架构如图:从上到下依次是:用户接口层、应用层、领域层和基础层。那 DDD 各层的主要职责是什么呢?下面我来逐一介绍一下。1、用户接口层用户接口层负责向用户显示信息和解释用户指令。这里的用户可能是:用户、程序、自动化测试和批处理脚本等等。2、应用层实现服务组合和编排,适应业务流程快速变化的需求,这一层聚集了应该服

2020-12-23 18:45:13 22262 4

原创 DDD领域驱动设计三、用事件风暴构建领域模型

文章目录一、准备事件风暴1、参与人员2、环境条件二、确定产品愿景三、业务场景分析四、领域建模五、微服务拆分与设计我们在上一篇文章中提到过的DDD领域模型的很多概念如通用语言、界限上下文、实体、值对象、聚合、聚合根、领域事件都是通过事件风暴确定的。现在就开始介绍如果用事件风暴构建领域模型。事件风暴是一项团队活动,领域专家与项目团队通过头脑风暴的形式,罗列出领域中所有的领域事件,整合之后形成最终的领域事件集合,然后对每一个事件,标注出导致该事件的命令,再为每一个事件标注出命令发起方的角色。命令可以是用户发起

2020-12-23 11:37:40 2837

原创 DDD领域驱动设计二、基础概念

文章目录一、领域和子域领域、子域、核心域、通用域、支撑域、通用语言、限界上下文、聚合、聚合根、实体、值对象、领域事件、事件风暴等等,非常多。这些名词,都是关键概念,它们非常抽象难以理解,但却又很重要,是理解 DDD 的核心设计思想和理念的基础。一、领域和子域...

2020-11-23 09:23:42 953

原创 DDD领域驱动设计一、为什么需要DDD

一、为什么需要DDD在单机和集中式架构时代,系统分析、设计和开发往往是独立、分阶段割裂进行的。比如,在系统建设过程中,我们经常会看到这样的情形:A 负责提出需求,B 负责需求分析,C 负责系统设计,D 负责代码实现,这样的流程很长,经手的人也很多,很容易导致信息丢失。最后,就很容易导致需求、设计与代码实现的不一致,往往到了软件上线后,我们才发现很多功能并不是自己想要的,或者做出来的功能跟自己提出的需求偏差太大。而且在单机和集中式架构这两种模式下,软件无法快速响应需求和业务的迅速变化,最终错失发展良机。

2020-11-18 16:04:52 4674 1

原创 排序算法汇总

排序算法1、基本介绍​ 排序算法比较基础,但是设计到很多计算机科学的想法,如下:​ 1、比较和非比较的策略​ 2、迭代和递归的实现​ 3、分而治之思想​ 4、最佳、最差、平均情况时间复杂度分析​ 5、随机算法2、排序算法的分类算法分类[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T2BZuSPd-1571761162745)...

2020-11-08 17:24:59 363

原创 这些年,面试官在MySQL上挖的那些坑

这些年,面试官在MySQL上挖的那些坑1、表设计上的坑1、字段设计​ 字段类型设计:​ 尽量使用整型表示字符串:​ INET_ATON(str),address to number​ INET_NTOA(number),number to address​ 定长和非定长数据类型的选择:​ 1、decimal不会损失精度,存储空间会随数据的增大...

2020-11-08 16:34:52 201

原创 自动化工具之Jenkins

文章目录一、Jenkins简介1、概念理解1.1、持续集成1.2、持续交付2、Jenkins目标3、Jenkins调用流程二、Jenkins安装1、安装前准备2、各插件安装三、Jenkins集成插件实现war自动流程四、Jenkins执行shell启动java程序一、Jenkins简介Jenkins是一个独立的开源自动化服务器,可用于自动执行与构建,测试,交付或部署软件相关的各种任务,是目前最...

2020-11-08 16:29:44 516

原创 状态模式

一、定义:当一个对象的内在状态改变时运行改变其行为,这个对象看起来是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。当然,如果这个判断很简单,那就没必要用“状态模式”了。二、结构图三、状态模式的好处与用处好处:可以将与特定状态相关的行为局部化,并且将不同状态的行为分割开来。状...

2020-11-08 16:18:10 64

原创 git协同开发

一、Git远程仓库GitHub是一个免费的服务器,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。注意GitHub上免费托管的Git仓库,任何人都可以看到,而能免费创建的私有项目是有限的。1、创建SSH Key步骤1、下载安装git,前面的文章已经介绍过,不再这里重复。步骤2、在本地电脑用户目录下,鼠标右键git bash here...

2020-11-08 16:17:04 851

原创 投资理财之基金四:指数基金

文章目录一、股票是什么1、持有股票的权益2、有哪些基金是主要投资股票的①、混合基金②、股票基金③、股票指数基金④、主动型基金⑤、被动型基金我们都知道,比货币基金和债券基金收益更大的就是股票基金了,相比投资货币和债券,股票是长期增值速度最快的资产。当然风险也大,风险和收益成正比嘛。我们要找的理财神器就是跟投资股票有关,确切的说是跟股票基金有关,要搞明白股票基金,咱们还是最好先了解一下股票。一、股票是什么股票,其实就是公司为了筹集资金,而发行给股东们作为持股凭证的一种有价证券。这个和债券有点像,债券

2020-10-06 11:11:38 603

原创 投资理财之基金三:债券基金

文章目录一、什么是债券二、债券基金1、债券基金有明星的优点①、债券基金由专业的基金经理来帮你投资,省心又省力。②、个人投资者资金有限,直接参与债券市场会受到一些限制。③、个人投资者很难做到分散投资,降低风险。2、筛选债券型基金222法则3个维度前两节课我们介绍了基金的基础概念和购买渠道,从这节课开始,我们会学习具体类型基金的详细内容,并介绍其筛选和买卖策略。由于货币基金的收益太低,现在的收益在2%,比通货膨胀还低,大家的时间精力都有限,所以就不做详细介绍了。这节主要介绍 债券基金。一、什么是债券我

2020-10-06 04:10:55 1007

原创 投资理财之基金二:购买基金的渠道

文章目录一、购买基金的渠道有哪些?1、购买渠道2、场内基金和场外基金二、各个渠道购买场外基金的优劣势。1、银行2、基金公司官网3、第三方平台4、券商三、如何规避开户中出现的坑?第一大坑:高佣金①️、先说买股票的手续费②、买基金的手续费第二大坑,规费~第三大坑:叠加套餐总结:一、购买基金的渠道有哪些?1、购买渠道目前我们普通投资者买基金主要有以下四个渠道:证券公司;银行;基金公司;第三方销售平台,如:天天基金、支付宝、微信理财通等等。现在不少同学都会选择第1种和第4种方式,也就是证券公司或

2020-09-13 16:27:00 2011

原创 投资理财之基金一、初识基金

文章目录一、基金是什么二、基金的优点1、有专业的基金经理帮忙投资,不仅省心省力,而且收益更好。2、基金的投资门槛很低,很多基金最低起投低至100元甚至更低。2、基金是组合投资,能分散风险三、基金的分类1、按募集方式2、按照运作方式3、按照交易渠道4、按投资对象一、基金是什么基金是指基金公司汇集很多投资者的资金,按照证监会的规则,进行各种各样的投资以获取收益的一种理财工具。其实就是我们自己凑了一笔钱,请一位投资专家,让他来帮我们赚钱。基金是一种间接投资,你的钱不是直接买了商品,而是你委托给专业人士,让

2020-09-13 16:05:04 857

原创 SpringSecurity三:OAuth协议和SpringSocial

文章目录一、OAuth协议1、OAuth协议简介2、OAuth协议中的授权模式2.1、OAuth协议中的授权码模式2.2、相对其他模式的特点:二、SpringSocial1、SpringSocial基本原理一、OAuth协议1、OAuth协议简介0:用户访问第三方应用:。1:第三方应用请求用户授权服务信息。2:用户若不同意授权,流程结束;若同意授权继续下面的步骤。3:第三方应用向服务提供商申请令牌。4:确认用户有授权,则向第三方应用发放令牌。5:有了令牌,就可以向服务提供商申请某些资源。6

2020-09-10 23:09:47 428

原创 SpringSecurity二:验证码校验和记住我

文章目录一、验证码功能1、验证码接口校验原理二、记住我1、基本原理2、RememberMe配置一、验证码功能1、验证码接口校验原理图形验证码和短信验证码的校验原理都差不多,只是发验证码的方式不一样而已,在认证过滤器UsernamePasswordAuthenticationFilter之前添加ValidateCodeFilter实现验证码的验证功能,验证通过则继续过滤器链的下一个;否则抛异常,移交认证失败处理器处理,不走后面逻辑。 http.addFilterBefore(valid

2020-09-10 19:26:10 733 2

原创 SpringSecurity一:开发基于表单的登录

文章目录一、SpringSecurity基本原理:1、基本原理2、基本代码二、自定义用户认证逻辑1、根据用户名获取用户信息2、处理用户校验逻辑3、处理密码加密解密三、个性化用户认证流程1、自定义登录2、自定义登录成功和失败处理四、认证流程原理详解1、认证流程源码级详解2、认证结果如何在多个请求之间共享3、获取认证用户信息前言:SpringSecurity系列是比较高级的内容,需要有一定的基础才能学得懂,例如需要熟悉spring系列,熟悉filter和interceptor,还得有实际的开发经验;这个系列的

2020-09-10 05:42:55 286

原创 单例模式

饿汉模式线程安全,比较常用,但容易产生垃圾,因为一开始就初始化。public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { r...

2019-11-05 04:52:02 164

原创 自动化工具之Sonar

文章目录一、Sonar是什么1、Sonar简介2、为什么要选择sonarQube3、代码质量问题4、Sonar组成5、代码规则检测工具5.1、Checkstyle5.2、PMD5.3、Findbug6、Sonar工作流程二、Sonar安装配置1、Sonar安装前准备1.1、MySQL环境准备1.1.1、下载YUM源1.1.2、安装mysql源1.1.3、检查mysql源是否安装成功1.1.4、安装...

2019-10-21 03:08:36 1894

原创 JVM总结之垃圾回收

文章目录垃圾回收一、java堆内存的细分1、分代收集算法2、新生代2.1、Eden 区2.2、Survivor From 区2.2、Survivor To 区3、老年代4、元数据5、对象分配6、对象晋级二、垃圾回收1、怎么定位垃圾1.1、引用计数法1.2、可达性分析2、怎么回收垃圾2.1、标记清除算法(Mark-Sweep)2.2、复制算法(copying)2.3、标记整理算法(Mark-Comp...

2019-10-19 21:08:07 751

原创 JVM总结之JVM内存结构

文章目录JVM内存结构1、线程私有部分① 程序计数器② 虚拟机栈③ 本地方法区2、线程共享部分① 堆② 方法区(永久代)运行时常量池(Runtime Constant Pool)堆和栈的区别3、直接内存4、jdk1.6、jdk1.7和jdk1.8内存结构区别为什么去除方法区java虚拟机是是每个java程序员学习的重点。JVM内存结构JVM的内存结构主要由两大部分组成:1、线程私有部分:程......

2019-10-19 16:00:43 753

原创 Spring Boot总结一

一、Spring Boot介绍Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。 简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题—习惯大于约定。Spring Boot默认使用tomcat作为服务器,使用logback提供日志记录。 Spring Boot提供了一系...

2019-10-14 15:41:38 563

原创 MySQL之性能优化

文章目录一、一些概念知识1、各数据库存储引擎a、MyISAM存储引擎b、InnoDB存储引擎c、MEMORY存储引擎d、MERGE存储引擎2、MySQL的两种索引a、B-Tree索引b、hash索引c、索引的相关概念d、存储引擎及文件格式比较e、建索引的目的二、sql的优化1、大批量插入数据2、优化INSERT语句3、查询优化4、不使用索引的情况5、建议不建立索引的情况三、explain执行计划1...

2019-10-12 23:20:47 373

Spring-Security-demo.zip

SpringSecurity 学习demo源码,需要的可以下载学习! SpringSecurity 学习demo源码,需要的可以下载学习!

2020-09-09

redis简单使用实例

相关用法可以到这篇博客查看https://blog.csdn.net/w1lgy/article/details/84940774

2018-12-10

rabbit和spring整合实战

本项目是rabbit和spring的整合实战项目,可用于读者学习。相关知识点可查看我的博客https://blog.csdn.net/w1lgy/article/details/83144133

2018-10-18

springcloud实例demo

这是springcloud的实例demo,非常适合初学者学习!!!

2017-10-12

空空如也

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

TA关注的人

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