
大工篇
文章平均质量分 88
路漫漫其修远兮我将上下而求索
码涤生
现在以一颗谦容的心想大家学习,将来以一颗无私的心想大家解答疑难杂症
展开
-
Spring中的AOP翻转的使用与在事务管理中的表现
Spring框架应该是作为Java开发耳熟能详的一个,并且要能够熟练掌握。但是里面知识点的零碎可能随着时间的流逝,一些知识也会变的陌生起来。Spring这一系列的文章主要是将自己对Spring的一些认识梳理一下,其中这篇文章讲的主要是AOP相关的。在很早的时候也写过一篇将IOC容器的文章,供君参考,他从Java原生的事务讲起,引入为什么要进行事务,以及原生的事务管理有哪些缺点,我们通过怎么样的方法来进行改进——代理。原创 2022-09-16 22:04:30 · 397 阅读 · 0 评论 -
Spring中的IOC控制翻转容器使用与总结
创建类,让这个类作为工厂Bean,实现接口FactoryBean实现接口里面的方法实现的方法中返回的Bean类型。原创 2022-09-16 19:59:47 · 373 阅读 · 0 评论 -
Java中的正则表达式是什么该怎么用?
正则表达式不止存在于Java中,在诸多的语言中都有而且语法相似几近相同,他主要用于编程中的文本处理。底层算法的主轴采用的是转态转移算法,当然也匹配有各种词法、语法解析。解析出来的各种规则构成了状态,根据一定的规则形成一个状态链也可以理解理解为是条件链,如果这些条件通过则说明通过正则表达式中指定的规则找到了我们目标字符串。//匹配一段文字中的所有英文单词 String context = "2005年6月,在Java One大会上,Sun公司发布了Java SE 6。原创 2022-08-25 12:57:25 · 329 阅读 · 0 评论 -
Java中的锁机制——中断与Synchronized
在多线程的并发下为了保证资源的安全性我们需要对资源的相关操作进行限制,这个限制就是通过锁机制实现,锁本质上就是通过在系统对一个资源做出标记,这个标记代表着一定的读写权限,那个线程拿到了这个标记其他的线程就需要进行等待。从锁的性能来讲我们可以将锁分为悲观锁、乐观锁;从使用的表现形式上来看又可以分为偏向锁、轻量级锁、重量级锁,为了最求达到最佳的性能,通常这种锁会搭配进行使用。...原创 2022-08-14 21:41:11 · 876 阅读 · 0 评论 -
Volatile应用与底层原理
由于CPU与内存之间速度的不一致所以设置了一种中间机制——缓存,不同的操作系统他们关于缓存的实现又是多样的,Java为了屏蔽操作系统的一些底层差异就设计了一种操作的规范——JMM(Java内存模型),JMM并不是物理存在的,他是逻辑上的一种概念。JMM有三大特性——可见性、原子性、有序性。个人感觉这与数据库底层的原理实际上有相似之处,说白了都是对数据的操作呗。源码到最终的执行会经过编译器优化重排、指令并行重排、内存系统的重排。那么应该按照什么样的顺序来判断重排以及如何重排呢?...原创 2022-08-12 13:54:55 · 218 阅读 · 0 评论 -
Future与CompletableFuture
Future与CompletableFuture的比较与使用原创 2022-08-09 09:43:51 · 1212 阅读 · 0 评论 -
我终于到清楚了Mybatis的运行机制
Mybatis源码Mybatis是我们常用的一个框架,主要用于数据库的操作,在以往的文章中已经写过Mybatis的源码分析、以及操作。在今天的这篇文章中,主要用自己的语言描述一下自己对于Mybatis源码的认识与理解,不去做具体的源码分析,具体的源码分析可以参考:Mybatis原理六大步骤详细解析_码涤生的博客-优快云博客一、Mybatis源码概述在说Mybatis源码之前我们先来阐述一下Mybatis使用的几种过程与方法,Mybatis的使用我们可分为注解类型以及xml形式,在使用Mybat原创 2022-03-20 11:36:54 · 1155 阅读 · 0 评论 -
Mysql索引的创建于修改
有关索引的操作1、常看当前系统中默认的引擎show variables like ‘default_storage_engine’;2、查看表的引擎——通过看创表语句create table t1(id int) engine=MyISAM;3、建表的时候指定存储引擎create table t1(id int) engine=MyISAM;4、CREATE创建索引ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引;CREATE INDEX可对原创 2022-03-12 21:28:22 · 726 阅读 · 0 评论 -
通俗易懂成体系的Mysql索引优化
有关索引的机制中我们已经在《话说Mysql索引机制》 中介绍过,在这篇文章中主要想要讲述的是Mysql的常见引擎以及索引的分类、常规的索引优化建议与背后的底层机制。关于优化建议与底层机制的时候主要还是介绍原来的话说Mysql索引机制来说的,所以可以先看一下前一篇文章!一、Mysql中的引擎与索引分类个人理解引擎就是Mysql一种系统的环境或者说就像是汽车的引擎,这个引擎我们是可以替换的,然而不同的汽车引擎会给汽车提供一些不同的特性,这个特性就可以类比于我们的索引。下面首先先从Mysql的结构上入手说.原创 2022-03-12 21:25:16 · 1258 阅读 · 0 评论 -
Mysql中Join查询使用与原理
在Mysql中我们最终的一个操作就是查询,查询中又要当属join的应用,这里我们在SQL的层面介绍join的7中产寻区别于数据的覆盖范围,但是不同的DB他的join使用可能略有不同。eg:Mysql中是无法使用外连接查询。这个文章中的内容都来自与B站周阳老师,记录这个笔记主要也是为了加深一下自己的认识。一、概述与建表语句1、概述在Mysql中如果对join的类型不说明则默认采用的内连接——inner join。关于join这几种情况的使用通过下面的这张图以及后边的示例语句就没有什么问题了,但是他在.原创 2022-03-08 17:44:00 · 3100 阅读 · 0 评论 -
查询分析explain的使用
查询分析explain的使用在了解索的具体使用之前我们想了解一下MySQL中用于性能分析的工具Explain,这里面的语法是很简单的重点在于要理解其中各个字段的含义,便于可以在后面的分析中能够读懂其中的含义并加以分析。1、id表明执行顺序,id越大优先级越高优先被执行,id值相同的情况下,从上到下执行2、select_type标识出的是查询的类型,需要重点理解一下SIMPLEPRIMARYDERIVED——from中包含的子查询SUBQUERY ——在select或原创 2022-03-08 11:12:00 · 347 阅读 · 0 评论 -
话说Mysql索引机制
索引是数据库中非常重要的一部分,网上有关索引的资源也有很多,但是更多的都是在讲索引怎么用,很多号称是Mysql高阶的教程也可以说仅仅只是讲了Mysql索引的八股文,我们往往对于Mysql索引的机制不能够很好地理解。这里的这两篇文章是承接《大话Mysql底层事务机制》、《话说Mysql的底层存储结构》这两篇文章而来,在前边的两个文章说在掌握具体知识的基础上用自己的语言描述了自己对Mysql数据库底层存储结构的认识以及在此结构之上结合Redo、Undo日志的事务机制。这里说的索引实际上也是在理解Mysql存储.原创 2022-03-08 10:08:34 · 461 阅读 · 0 评论 -
大话Mysql底层事务机制
以往已经总结过Mysql底层实现上的一些细节,上一篇的文章也用通俗的语言说了一些自己对Mysql底层存储实现上的认识与理解。这篇文章就在原来的基础上来说一下基于redo、undo日志实现的数据安全存储、以及结合存储机制和版本链等技术对Mysql事务的实现。在文章中主要是分为两部分一个是redo、undo日志的结构、关键属性的相关计算,Mysql事务以及隔离级别实现的原理!课堂笔记:(3条消息) Mysql二——事务控制背后的redo、undo以及MVCC_任天柳-优快云博客思维导图:https://.原创 2022-03-03 16:23:06 · 669 阅读 · 0 评论 -
话说Mysql的底层存储结构
有关Mysql底层存储结构前面已经写过一篇文章,当然这文章主要是基于听爪哇课程之后做的笔记,过了一段时间之后有重新看一遍,就用通俗的话说一下自己对这一块的理解。过往笔记:(23条消息) Mysql基础底层存储原理与Mysql的索引分类与实现_任天柳-优快云博客文章导图:Mysql上 | ProcessOn免费在线作图,在线流程图,在线思维导图一、概述现在我们讨论的是Mysql的存储,通常我们是在cpu中处理数据,但是由于成本以及存储特性最终数据的保存又一定是要到磁盘的。CPU的运行速度与IO读.原创 2022-02-28 22:41:12 · 1014 阅读 · 0 评论 -
Java集合——HashMap源码
Java集合知识图谱:https://www.processon.com/view/link/61bf27a17d9c087834f1d352问题:链表中的key放的到底是什么,Hash值吗,hash会有冲突吗,hash生成的原理是什么map中的阈值是如何确定下来的,意义是什么一、二三树2-3树是一种绝对平衡多叉树,在这棵树中他的任意一个节点的左右节点高度是相同的。2-节点表示节点中保存一个元素,3-节点则表示节点中保存两个元素。二、红黑树1、红黑树的五大概念每个节点要么是红色.原创 2021-12-19 20:43:23 · 992 阅读 · 0 评论 -
Java集合——HashSet、TreeSet源码
Set的实现是很简单的,但是这个简单的基础是建立在对于Map关键是HashMap的理解一、基础知识概述1、Set不能够方重复元素但是可以添加一个null(并不是所有的Set都可以例如TreeMap的就不行),这里应该是开启了HashMap的putVal方法中的后两个参数final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) {}2、Set接口对象存放的是无序的,但是取出的顺序是有序的(不是添加的.原创 2021-12-19 20:33:08 · 940 阅读 · 0 评论 -
RestFul风格的理解
平常经常听到RestFul相关的内容有时候说是RestFul架构、有时候说是RestFul风格,有时候还会拿它与RPC来做对比,那么他到底是什么呢?一直以来我也不是很明白说是说理解的是是而非,真正对RestFul有一个较为全面的理解是从读了周志明老师的《凤凰架构》开始的,关于这一本数有一个网页版的,感兴趣的同学可以前去学习。这是一本很好地书,里面也有很多其他方面的内容可供大家学习,这篇文章的内容都也脱胎与《凤凰架构》这本书https://icyfenix.cn/architect-perspective原创 2021-10-14 23:08:30 · 595 阅读 · 0 评论 -
Ribbon&OpenFeign实现服务治理——注册、发现、负载均衡
一、网络模型1、OSI的七层模型七层的模型体现着程序设计过程中的单一职责的特性,每个模块都负责这自己的东西。应用层——老板下达收购Google的指令,并写完收购意向书为计算机用户提供应用接口,也为用户直接提供各 种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。表示层——将中文意向受翻译成英文表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能 被另一个系统的应用层识别。如果必要,该层可提供一种标准表示原创 2021-10-08 17:02:40 · 780 阅读 · 0 评论 -
限流熔断Sentinel的应用场景、基本概念与使用
Nacos就是我们程序安全的一个开关,在这里只是初步的接触了解,项目中如果要是与网关以及集群的限流结合一定是一件非常有意思的事情。有关Sentinel的源码部分流程图参考:Sentinel源码 | ProcessOn免费在线作图,在线流程图,在线思维导图 |希望后面自己也能去看源码好好理解一下,学习学习里面的相关理念,包括对高并发场景的处理一、相关概念1、服务雪崩在我们的微服务架构中一个请求常常是有多个服务提供能力的这时候就会形成一个复杂的调用链路,在这个调用的链路中肯定有的位于上游有的位于下.原创 2021-10-01 13:07:33 · 1669 阅读 · 0 评论 -
服务治理Eureka——生态、实践、源码
Euraka是Netflix的一个核心子模块,他基于Rest实现服务的发现与注册,采用了CS的设计架构一、SpringCloud微服务生态在前面过程中接触到Dubbo、Nacos等微服务技术他们是SpringCloud Alibaba的技术栈,而上面列举出来的应该算是SpringCloud Netflix的技术栈范围,Spring Cloud可以看成是有关微服务的一套规范,这两个技术栈就是对这套规范的不同实现。二、分布式相关理论1、CAP理论Consistency 一致性分布式系统不同的原创 2021-09-25 16:52:33 · 330 阅读 · 0 评论 -
Nacos入门安装使用与相关原理
一、Nacos的安装Nacos单例启动命令:startup.cmd -m standalone目前Nacos的2.X版本有些不稳定,在课程上的时候老师讲的是他尝试的时候在做集群的时候失败,但是自己在本机上尝试的时候是项目启动不起来。因此在本地尝试的时候还是采用了1.3的版本。下载地址:https://github.com/alibaba/nacos/releases现在完成之后可以看看配置文件是否需要修改,还是采用默认配置:如果conf目录下没有application.properti原创 2021-09-21 23:16:59 · 761 阅读 · 0 评论 -
Dubbo的集群容错、负载均衡策略与分布式事务解决方案
思维导图连接地址:https://www.processon.com/view/link/6142bac463768941d2773f82原创 2021-09-16 11:36:08 · 131 阅读 · 0 评论 -
RPC架构与Dubbo相关原理
微服务微服务部分主要是掌握一下有关微服务的基本原理,对于实际的操作以及代码解析在这篇文章中不做重要部分一、Dubbohttps://www.processon.com/view/link/613f535c7d9c081bd800cb0b三、API与SPI1、概述API是调用者定义接口服务端来进行实现,SPI的规则则是服务端定义接口调用者来进行实现。SPI的用途在于他可以做接口扩展,为什么呢,因为服务端会调用客户端实现的接口。2、Java JDK实现实现原理在ServiceLo原创 2021-09-14 14:04:27 · 126 阅读 · 0 评论 -
服务发现Nacos
一、服务发现的两种方式客户端的服务发现优点:客户端指导所有可用网络的实际网址,所以可以非常方便的实现负载均衡功能缺点:耦合性强,针对不同的语言,每个服务的客户端都得实现一套服务发现功能在Dubbo中应该采用的就是客户端服务发现,Zookeeper会将所有可用的地址列表给客户端,客户端也会进行相应的缓存。服务端服务发现优点:服务的发现逻辑对客户端值不透明的,客户端只需要向load balancer发送请求就可以了缺点:不需要关心改负载均衡器的性能二、Nacos架构图通过原创 2021-09-22 20:15:18 · 505 阅读 · 0 评论 -
淘宝建构演变之路
1、域名解析——DNSDNS又称为域名解析服务器。当在不同地域访问淘宝的网站时,解析后我们最终访问的地址是不同的,这是因为DNS会将访问分配到不同的入口这样可以保证你的访问是可以较快的一个。2、网页的相关指标PV与UVPV(page view):是一个页面的访问量UV(unique visitor):作为一个用户,你这次访问淘宝的所有界面均算作是一个uv3、浏览器域名并发加载限制正常情况下浏览器中对于一个域名下资源的加载是有限制的,eg:IE6&7为两个,IE8为6个、谷歌不同的版本会有原创 2021-09-09 17:11:22 · 161 阅读 · 0 评论 -
网络编程基础BIO与NIO概念差异与实战
1、Java工支持三种网络编程模型IO模式:BIO、NIO、AIOBIO:同步并阻塞,服务器的实现方式为一个连接一个线程,如果这个连接不做任何事情就会造成资源的浪费;连接数据较小却固定的架构的架构,这种方式对系统的性能要求高但是可贵之处在于程序容易理解NIO:同步非阻塞模型;服务器实现模式为一个线程处理多个请求、客户端发送的请求都会到一个多路复用器(Selector),多路复用器轮询到连接有I/O请求就进行处理;适用于连接数多但是连接较短的的架构就像聊天之类的系统,他的编程比较复杂AIO:异步非阻塞原创 2021-08-15 22:22:08 · 376 阅读 · 0 评论 -
Mysql二——事务控制背后的redo、undo以及MVCC
Redo日志1、什么是redo日志考虑到效率的问题,进行SQL操作的时候并不会直接将操作的数据写入到磁盘中而是会走一个缓存。既然有缓存的概念,那么就又缓存数据丢失造成与磁盘数据不一致的情况出现。这就是redo日志出现的背景,系统中将这个操作的相关记录计入到一个文件中,当系统发生问题的时候系统会保证这个文件可以被正常保存,当再次启动的时候就对这个文件进行一些操作保证恢复到系统发生异常前的状态。2、redo简单日志类型简单日志类型的场景:在Mysql中的上一篇文章中我们介绍了Mysql中页的概念在原创 2021-07-25 20:59:19 · 743 阅读 · 0 评论 -
Mysql基础底层存储原理与Mysql的索引分类与实现
概论在这篇文文章中主要讲的是Mysql相关底层基础的一些东西,关于这部分东西因为有些是已经了解的,所以在文章中并不做详细介绍解释。内存与磁盘交互的基础单位——页1、为什么要有页的概念存在?如果每次操作都直接对磁盘进行IO,这样会造成系统较大的资源浪费,为了避免这种浪费,就将一些操作攒起来来一次IO。eg:查询数据的使用如果要是每比对一次数据都需要进行一次IO那么将是非常浪费,我们就将一次性的取出1页的数据,到内存再进行操作。2、基础单位页的结构User Records、Free Space原创 2021-07-20 17:27:30 · 238 阅读 · 0 评论 -
Mybatis原理六大步骤详细解析
在文章中的源码跟踪我们只以一个简单的查询语句为例:@Testpublic void test01(){ SqlSession sqlSession = null; try{ sqlSession = MybatisSqlSessionFactory.openSqlSession(); //框架根据我们提供的接口的Class文件生成动态代理,我们的sql语句应该就是在这个动态代理的过程中 //生成并执行的 BeautyMapp原创 2021-07-12 11:32:32 · 305 阅读 · 0 评论 -
Mybatis的使用
通过这篇文章主要是掌握Mybatis在开发中的各种使用技巧Mybatis有中文的官网,整体内容不算难,这或许是最好的学习资料:mybatis – MyBatis 3 | 动态 SQLJDBC、Mybatis、Hibernate的区别1、JDBC使用JDBC进行开发最大的缺点在于代码量冗余,他们需要对异常进行正确的捕获与处理,并且要关注资源的释放。JDBC 的执行步骤注册驱动获取Connection对象,并用Connection对象来打开Statement用Statement对象执行SQL.原创 2021-07-04 22:53:24 · 229 阅读 · 0 评论 -
07-SpringBoot入门概述与SpringBoot原理
本文的重头戏在于Spring的运行的原理机制,同时也从入门介绍SpringBoot的项目概况技术架构与项目搭建SpringBoot概述SpringBoot是基于Spring的,在Spring的生态中SpringBoot的版本的迭代速度是非常快的,通常来说SpringBoot的小版本之间没有核心功能上的改动但是对于大版本来说是有本质的改变的例如SpringBoot1.X与SpringBoot2.X。来了解Spring之前我们来了解一下Spring的能力:微服务——Microservices .原创 2021-06-26 15:12:12 · 194 阅读 · 0 评论 -
06——Java设计模式之代理模式、命令模式、模板方法模式、适配器模式、装饰模式、观察者模式
设计模式实际上就是一种编程思想,尽管之前可能没有听过种种的设计模式但是在实际的开发中我们可能已经在用了。学习这些设计模式的意义在与让我们对各种编程方式有一个更系统的了解。再遇到一些场景时我们可以写出更合乎规范(高内聚、低耦合)的代码。命令模式将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参 数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式中的角色主要包括:抽象命令类、具体命令类、调用者、接受者、客户端。在这几个角色中接受者的角色根据具体的调用场景是可有可无的.原创 2021-06-16 14:31:01 · 267 阅读 · 0 评论 -
06—Java设计模式——工厂模式、策略模式、单例模式
目录六大设计原则工厂模式1、工厂模式在Spring中的应用:2、简单工厂3、方法工厂4、抽象工厂策略模式设计模式是编程的一种理念、思想,不管是那种设计模式都遵循这设计模式的六大原则。如果要是要用一句话来概括的话那就是“用抽象封装框架、用实现拓展细节”,如果用一个词来概括的话那就是“解耦”。六大原则与设计模式我们需要遵守但是也不可矫枉过正,否则的话项目的代码将变得杂乱。 六大设计原则 单一职责:一个类只负责具体具体领域的一个职责,而不是实现很多的功能 ...原创 2021-06-14 22:01:47 · 1537 阅读 · 2 评论 -
02-Java函数式编程
初步了解函数编程的面貌,并接触基础的使用。如果可以的话,总结一篇自己对异步编程、同步编程的认识与理解什么是函数式编程函数式编程是一种范式,在函数式语言中函数作为第一对象,在语言中他可以作为变量、参数、返回值。函数式语言注重描述而非具体的执行步骤,sql语句就算是描述性语言。函数式编程的几大特性:确定性:变量中的值不会存在不确定的改变原,避免了并发过程中可能产生的问题 闭包 惰性求值 部分应用 结合率 柯里华 高阶函数:Lamada表达式:方法的要素:方法签名(参数、返..原创 2021-06-11 17:41:10 · 1202 阅读 · 0 评论 -
01——从源码角度来ArrayList的扩容机制与LinkedList链表的维护与查找
文章目标:理解ArrayList的add操作,明白其中的扩容机制。理解LinkedList的双向链表原理。这两个集合的源码我们都从他的构造函数入手来逐步理解整个集合的全貌ArrayList源码ArrayList的构造函数有多个,打开源码无参构造函数:public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; // Object[] DEFAULTCAPACITY_EMPTY_ELEME.原创 2021-06-07 13:51:40 · 131 阅读 · 3 评论 -
01-Java反射的原理与使用
1、为什么要有反射程序的运行分为编译器、运行期,正常情况下程序的代码都是在编译器就已经加载到jvm了,但是理工反射我们可以在运行期根据实际运行过程中的条件再决定把哪一个类的代码加载到...原创 2021-06-06 16:12:24 · 146 阅读 · 1 评论