- 博客(350)
- 资源 (1)
- 收藏
- 关注
原创 Go~并发之GMP原理与调度
文章目录前言routine与线程的关系N:1关系1:1关系M:N关系Go 语言的协程 goroutineGo中的调度器被废弃的 goroutine 调度器Goroutine 调度器的 GMP 模型的设计思想GMP 模型P 和 M 的个数问题P 和 M 何时会被创建调度器的设计策略go func () 调度流程调度器的生命周期代码示例分析可视化 GMP 编程Go 调度器调度场景过程全解析前言看这篇文章,请确保你已经熟悉进程、线程、协程等相关概念。并熟悉了操作系统常用的线程调度方式。并对并发和并行有一定
2022-04-10 16:29:17 1508
原创 Go~并发编程runtime、workerPool、timer、ticker、sync、atomic
文章目录前言并发的一些概念进程和线程并发和并行协程和线程runtime包runtime.Gosched()runtime.Goexit()runtime.GOMAXPROCSGoroutine池(Pool)worker pool(goroutine池)定时器Timer(只执行一次)Ticker(时间到了多次执行)并发安全和锁(Sync)sync.WaitGroup互斥锁(sync.Mutex)读写互斥锁(sync.RWMutex)惰性初始化(sync.Once)加载配置文件示例闭包下的惰性加载sync.Ma
2022-03-27 22:39:01 660
原创 Go~实现自定义Error返回体
error接口假设你就已经创建和使用过神秘的预定义error类型,但是没有解释它究竟是什么。实际上它就是interface类型,这个类型有一个返回错误信息的单一方法:// The error built-in interface type is the conventional interface for// representing an error condition, with the nil value representing no error.type error interface {
2022-03-27 10:51:48 1122
原创 艺术~如何设计一套优秀的API响应体
文章目录前言参考HTTP状态码优秀的设计进行分段处理个性化Message额外的好处前言客户端请求API,通常需要通过返回码来判断API返回的结果是否符合预期,以及该如何处理返回的内容等.有的API用返回码是int类型,有的是string类型,有的用0表示成功,又有的用1表示成功,还有用“true”表示成功,碰上这种事情,只能说:沟通起来真头疼。API返回码的设计还是要认真对待,毕竟好的返回码设计可以降低沟通成本以及程序的维护成本。参考HTTP状态码以HTTP状态码为例,为了更加清晰的表述和区分状
2022-01-26 11:55:18 620
原创 艺术~对走向前后端分离的理解
文章目录前言前端MVVM架构对开发人员而言对于后端工程师对于前端工程师不分离时耦合的痛点前言截止目前,所有的新项目都优先推荐使用前后端分离的架构,在前端使用MVVM模式,后端使用分布式部署或者使用简单的MVC单体架构。所以前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。核
2022-01-15 22:56:24 1747
原创 Go~从基础快速入门到代码案例分析
文章目录GO一 前言1.1 为什么是Go1.2 Go有缺点吗Go执行流程二 基础类型1.1 数据类型1.2 特殊占位符1.3 常量1.3.1 使用和注意事项1.4 指针1.5 值类型和引用类型三 Go分支结构3.1 for循环3.2 range遍历3.3 switch四 函数4.1 函数内存分布4.2 不定参数函数4.3 多返回值函数4.4 可命名返回值函数4.4.1 defer函数修改命名返回值4.5 函数参数为指针4.6 函数类型4.7 函数调用机制4.8 函数作为参数4.9 init函数4.9 匿名函
2022-01-06 16:50:37 1112
原创 Go~Golong容器大集合, 包括Slice、Map、Heap、List、Ring
文章目录前言Slice1.1 创建切片1.2 理解数组指针1.3 自动扩容1.4 字节切片1.5 copy()函数1.6 sort.slice()排序1.7 切片的坑Map2.1 声明&初始化2.2 常用操作2.2.1 长度和容量2.2.2 添加2.2.3 修改2..2.4 删除2.2.5 查看2.2.6 嵌套2.2.7 变量赋值2.3 Map底层原理剖析2.3.1 初始化2.3.2 写入数据2.3.3 读取数据2.3.5 修改数据2.3.6 扩容2.3.5 迁移翻倍扩容等量扩容2.4 Map的坑H
2021-12-11 23:34:45 1235 2
原创 Java~阅读《深入理解Java虚拟机》知识点总结
文章目录前言第一部分(Java程序内部机制)1.1Java运行时一个类是什么时候被加载的?1.2JVM一个类的加载过程?1.3一个类被初始化的过程的注意点1.4继承时父子类的初始化顺序是怎样的?1.5究竟什么是类加载器?1.6JVM有哪些类加载器?1.7JVM中不同的类加载器加载哪些文件?1.8JVM三层类加载器之间的关系是继承吗?1.9你了解JVM类加载的双亲委派模型吗?1.10JDK为什么要设计双亲委派模型,有什么好处?1.11可以打破JVM双亲委派模型吗?如何打破JVM双亲委派模型?1.12如何自定义
2021-12-01 20:52:31 2196 25
原创 Golong~最新Windows下Go环境+Go mod搭建, 介绍GOROOT、GOPATH、GOPROXY之间关系
文章目录前言搭建Go环境Goland下载Golong的SDK下载环境变量配置搭建GO mod环境初始化Go mod项目GOROOT、GOPATH、GOPROXY之间关系GOROOT介绍GOPATH介绍Go Modules的诞生GOPROXY介绍前言本人环境是windows10+Goland2020.3.4+Go版本是1.17.3大家如果只是单纯学习Go语言,只需要搭建Go环境就可以, 如果是想开发一个项目的话,目前主流公司都是使用Go mod的形式, 如果你学过java的话,这个Go mod和jav
2021-11-14 00:15:38 2984 1
原创 一个高考失利人的2022届秋招复盘,目前收到腾讯 字节 百度 阿里 京东的offer
文章目录一个高考失利人的2022届秋招复盘,目前收到腾讯 字节 百度 阿里 京东的offer前言本人情况和秋招结果战绩大学时间线安排大一大二举一些面试例子数据结构和算法如何考?如何学习这部分知识网络原理如何考?如何学习这部分知识数据库如何考?如何学习这部分知识操作系统如何考?如何学习这部分知识最重要的Java如何学?大三上学期找实习实习的重要性如何准备简历简历如何投递?方式一(三方软件投递)方式二(官网投递)方式三(内推)如何为面试准备?面试流程笔试面试笔试和面试中需要注意哪些?下学期参加秋招参加校招提前批
2021-11-05 17:11:58 6661 21
原创 艺术~为减少字符设计的短URL服务
设计原因之前需要写一个告警服务,告警需要一短信的方式通知对方,并且在短信中要给到监控报告的URL地址, 但是发送短信需要调用三大运营商的接口,短信息有字数限制的,发送一条短信最多七十个字,160个英文或数字字符,或者70个中文字符,也就说,你每次发信息,你发送超过70字的短信是按2条记费的,超过140个字按3条记费,依次类推。设计好处减少短信内容,为公司降低开销好看。 比起一大堆不知所以的参数,短链接更加简洁友好。安全。 不暴露访问参数。核心原理其实本质就是把长的url做一个映射, 变成
2021-07-17 13:28:13 155
原创 Go~复合数据类型,数组、Slice、Map、结构体
文章目录数组Sliceappend函数copy函数Slice内存技巧Map结构体结构体字面值结构体比较结构体嵌入和匿名成员数组数组的长度是固定的,因此在Go语言中很少直接使用数组。和数组对应的类型是Slice(切片),它是可以增长和收缩的动态序列,slice功能也更灵活,但是要理解slice工作原理的话需要先理解数组。数组的每个元素可以通过索引下标来访问,索引下标的范围是从0开始到数组长度减1的位置。内置的len函数将返回数组中元素的个数。var a [3]int // ar
2021-05-05 21:34:26 1185
原创 Go~基本数据类型,整型、浮点型、复数、布尔型、字符串、常量
文章目录整型浮点数复数布尔型字符串常量整型Go语言同时提供了有符号和无符号类型的整数运算。这里有int8、int16、int32和int64四种截然不同大小的有符号整数类型,分别对应8、16、32、64bit大小的有符号整数,与此对应的是uint8、uint16、uint32和uint64四种无符号整数类型。还有两种一般对应特定CPU平台机器字大小的有符号和无符号整数int和uint;其中int是应用最广泛的数值类型。这两种类型都有同样的大小,32或64bit,但是我们不能对此做任何的假设;因为不同的
2021-05-05 21:03:34 566
原创 Go~简介与特性
文章目录Go语言简介Go 是编译型语言Go的特点语法简单并发模型内存分配垃圾回收静态链接标准库工具链为并发而生的Go语言Go语言简介Go语言不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。可以进行网络编程、系统编程、并发编程、分布式编程。具有“部署简单、并发性好、语言设计良好、执行性能好”等优势。Go 从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想。因为Go语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过
2021-05-05 20:05:03 337
原创 Java~新时代程序员的编码风格:lambda表达式、函数式接口、Stream流式计算、链式编程、异步调用
文章目录前言Lambda表达式前言如果有同学去逛一些新出来的开源项目和框架,你肯定会看到大量的lambda表达式、函数式接口、链式编程、Stream流式计算。所以现在如果还不熟悉这几个技术,你就会发现看源码非常吃力。Lambda表达式基本语法: (parameters) -> expression 或 (parameters) ->{ statements; }Lambda表达式由三部分组成:paramaters:类似方法中的形参列表,这里的参数是函数式接口里的参数。这里的参数类
2021-04-02 09:10:45 641
原创 艺术~在单机和分布式环境下的限流算法(漏桶算法、令牌桶算法)
文章目录前言限流算法滑动窗口限流漏桶算法令牌桶算法单机限流和分布式限流限流组件前言今天总结学习一下限流的相关内容,包括常见的限流算法、单机限流场景、分布式限流场景以及一些常见限流组件。那就引来第一个问题,什么是限流?为什么要限流?首先来解释下什么是限流?在日常生活中限流很常见,例如去有些景区玩,每天售卖的门票数是有限的,例如 2000 张,即每天最多只有 2000 个人能进去游玩。这就是一个限流,那么再来回答第二个问题为什么要限流?依旧刚刚那个例子,如果不限流会怎么样,就会把景区挤爆。那换在
2021-03-30 10:10:22 562
原创 数据结构~缓存淘汰算法--LRU算法(Java的俩种实现方式,时间复杂度均为O(1))
文章目录前言LRU实现使用LinkedHashMap实现自己实现LRU前言比如我们在使用Redis中如果出现内存不够的时候,它会有一个内存淘汰策略,比如Random和LRU和LFU,而且我们使用最多的也就是LRU,所以我今天讲讲这个是如何实现的。LRULRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。新数据插入到链表头部;每当缓存命中(即缓存数据被访问),则将数据移到链表头
2021-03-27 22:44:49 500
原创 数据结构~倒排索引算法(InnoDB全文索引的实现原理)
文章目录前言基本概念文档文档集合文档编号单词编号倒排索引单词词典倒排文件倒排列表前言在各大搜索引擎中,输入关键字都可以找到我们想要的文章,还有InnoDB引擎中的全文索引,为什么能提高大量数据的检索,他们都有个共同的原因就是底层都是倒排索引算法。我们先了解一些基本概念。基本概念文档一般搜索引擎的处理对象是互联网网页,而文档这个概念更要宽泛一些,代表以文本形式存在的存储对象。相比于网页来说,涵盖更多形式,比如Word、PDF、html、XML等不同格式的文件都可以称为文档,再比如一封邮件、一条短
2021-03-26 13:16:59 899 1
原创 艺术~安全至上(SQL注入、CSRF攻击、DDoS攻击)
文章目录前言SQL 注入前言处于现在这个互联网时代,一些在web开发中常见的漏洞我也必须重视起来,比如下面我介绍的第一个问题sql注入问题。如果这个问题我们不注意,那我们的数据可能是有风险全部暴露出去的,而且导致这个问题还很简单,只需要在select上增加一个or 1=1 即可。SQL 注入...
2021-03-23 23:46:00 1546 7
原创 大数据~大数据预处理整体架构(数据清洗、数据集成、数据转换、数据消减)
文章目录前言数据清洗数据集成数据转换数据消减前言近年来,信息技术迅猛发展,尤其是以互联网、物联网、信息获取、社交网络等为代表的技术日新月异,促使手机、平板电脑、pc 等各式各样的信息传感器随处可见,虚拟网络快速发展,现实世界快速虚拟化,数据的来源及其数量正以前所未有的速度增长。中国的数据规模将超过美国位居世界第一。中国成为数据大国并不奇怪,因为中国是人口大国、制造业大国、互联网大国、物联网大国,这都是最活跃的数据生产主体,未来几年,中国成为数据大国也是逻辑上的必然结果。数据预处理主要包括数据清洗(D
2021-03-23 19:29:47 6549
原创 艺术~如何保证数据100%发送、幂等设计方案
文章目录如何保证数据100%发送前言常见幂等与非幂等产生原因什么时候需要幂等的不足解决方案页面重定向乐观锁分布式锁token令牌如何保证数据100%发送(1)订单服务投递消息给MQ中间件(2)物流服务监听MQ中间件消息,从而进行消费以RabbitMQ举例。下边说一个场景,如果MQ服务器突然宕机了会出现什么情况?是不是我们订单服务发过去的消息全部没有了吗?是的,一般MQ中间件为了提高系统的吞吐量会把消息保存在内存中,如果不作其他处理,MQ服务器一旦宕机,消息将全部丢失。这个是业务不允许的,造成很
2021-03-22 10:05:32 169 4
原创 艺术~延迟双删保证Redis和Mysql数据一致性
文章目录延迟双删总结流程设置缓存过期时间延迟双删这个问题是涉及到缓存redis和主从mysql的数据更新,在高并发中,是很容易出现缓存和数据库之间数据不一致问题的。如果出现不一致的情况是很危险的,比如我们常见的限量抢购,它既要响应快,又要数据可靠。我什么说是双删呢?首先我们知道redis中缓存的数据是用来读取的,写数据一般都是要写入mysql中。如果先删了缓存,还没有来得及写MySQL,另一个线程就来读,发现缓存空,则去数据库读取数据写入缓存,此时缓存中为脏数据。如果先写库,在删除缓存前,写库
2021-03-21 21:15:42 1229 3
原创 数据结构~红黑树(特性、查找、插入、删除)
文章目录前言概念规则查询插入旋转分两种实际插入情况分析对于不同情况的处理删除操作(寻找继承人)会遇到的情况对于不同情况的处理前言红黑树是一个查找效率和构建效率都比较优秀的一种数据结构。比如java8中的hashmap在扩容的时候,如果table长度达到64,并且链表长度达到8就会对其进行转红黑树的操作。每次插入新的数据的时候,会变色和旋转,来让高度保持在log2(N)这个合理高度内概念首先要知道,红黑树是一种特殊的二叉树!形状和AVL树很像,但是AVL树是有平衡因子进行强制平衡,而红黑树是由自
2021-03-21 17:24:39 658
原创 艺术~分布式事务CAP和BASE理论、2PC、3PC、TCC模型
文章目录前言CAP理论一致性Consistency可用性Availability分区容错性PartitionToleranceBASE思想基本可用BasicallyAvailiable软状态SoftState最终一致性EventualConsistency对比总结强一致性解决方案2PC2PC的延迟问题。3PC最终一致性解决方案补偿模式关键点解决方案TCC模式TCC总结前言传统的串行式系统设计或者使用mvc风格的系统设计保证数据一致性都是使用关系型数据库,好处是使用ACID事务特性,保证数据一致性只需要开
2021-03-21 11:30:16 1568 3
原创 Java~stream处理中map与flatMap的比较和使用案例
文章目录前言共同点和区别共同点区别使用案例前言使用Java8的新特性Stream流式处理,可以提高对于集合的一些操作效率,再配合lambda表达式,可以极致的简化代码,尤其还有并行流这个东东,可以去 了解一下,在一些场合还是可以提高效率的,而且编码起来也不费事。并且流式处理的核心就是一个浅拷贝和引用管道,其内部实现了一个引用管道ReferencePipeline, 他把需要处理的数据的引用拷贝了一份,然后处理数据,最后收集结果也是将这些引用放到了另一个集合中。今天要讲的就是stream处理中的map
2021-03-20 20:18:38 3284 8
原创 艺术~常见的不可逆加密、对称加密、非对称加密
文章目录前言数字签名不可逆加密MD5SHA1算法对称加密DES算法3DES算法AES算法(重点)非对称加密RSA算法ECC算法对称算法与非对称加密算法前言加密是我们保证数据安全的一个很重要的手段,尤其是现在广泛的token使用上,加密手段有着举足轻重的地位。一个好的加密算法主要体现在俩点:不易被破解加密解密的效率要好加密在就比如我现在的工作, 主要会用在一些数字签名的生成上或者一些数据的验证上,来进行数据安全的保护和数据完整性的保护。数字签名数字签名,简单来说就是通过提供 可鉴别 的 数
2021-03-19 13:34:01 922 2
原创 艺术~几种唯一ID的生成的方案
文章目录前言方案特性ID的生成方案1. UUID2. 数据库自增ID3.Twitter的snowflake算法(雪花算法)7. 美团Leaf解决时钟问题前言ID有着很重要的作用,就如同我们的身份证ID,是标明唯一的一个号码,尤其在大数据时代,数据成千上万,如果我们还想通过ID来标明身份就会有一定的困难,会有ID冲突的风险。特别是在复杂的分布式系统业务场景中如果ID冲突,将会面临很大的业务问题。我们在设计ID生成方案的时候往往考虑一下几个特点方案特性唯一性:确保生成的ID是全网唯一的。有序递增性
2021-03-18 20:06:10 624
原创 数据结构~总结一下B树、B-树、B+树、B*树的特点
文章目录前言B树(二叉查找树)B-树前言数据在计算机中的存储结构主要为顺序存储结构、链式存储结构、索引存储结构、散列存储结构。顺序存储一般就是我们常见的数据,存储少量数据还好,如果存储大量数据可能会出现内存不够的情况,而且数据一旦需要移动和删除是很耗时的链式存储改进了上述的缺点,但是链式存储的查找效率是很低的。尤其是范围查看是非常低的散列查找是非常快的,尤其使用Hash的思想可以在几乎是O(1)的复杂度下就可以找到对应数据,但是对于范围查找还是不友好索引查找就是我们今天要讲的树+链式的结构,它
2021-03-17 13:41:21 1732 1
原创 Git~掌握安装配置、工作流程、基本命令操作、分支管理和撤回
文章目录安装配置配置账号密码配置密匙工作流程基本概念文件的四种状态基本命令操作与远程仓库建立连接上传代码分支管理分支上传分支合并查看与撤回安装配置安装就不多讲了,很简单而且网上有很多文章,而且直接去官网下载安装就好https://git-scm.com/download总之输入git version 能出来版本就说明安装好了配置账号密码配置我在这简单记录一下命令, 比如配置你的name和email, 注意name和email是你自己的!git config --global user.n
2021-03-16 20:35:46 259
原创 MySQL~为什么推荐自增 id 作为主键
文章目录页的概念页分裂与页合并页的概念在计算机里,无论是内存还是磁盘,操作系统都是按页的大小进行读取的(页大小通常为 4 kb),磁盘每次读取都会预读,会提前将连续的数据读入内存中,这样就避免了多次 IO,这就是计算机中有名的局部性原理,即我用到一块数据,很大可能这块数据附近的数据也会被用到,干脆一起加载,省得多次 IO 拖慢速度, 这个连续数据有多大呢,必须是操作系统页大小的整数倍。所以MySQL 的页,默认值为 16 KB,也就是说对于 B+ 树的节点,最好设置成页的大小(16 KB),这样一个
2021-03-15 23:33:43 1488
原创 Maven~总结一下clean、compile、test、package、install、deploy分别有什么作用
文章目录前言clean 生命周期default 生命周期site 生命周期前言软件开发人员每天都要对项目进行清理、编译、测试、打包以及安装部署。通过学习、分析、反思和总结,Maven 抽象出了一个适合于所有项目的构建生命周期,并将它们统一规范。具体步骤包括清理、初始化、编译、测试、打包、集成测试、验证、部署和生成站点。这些步骤几乎适合所有的项目。Maven 拥有三套独立的生命周期,它们分别是 clean、default 和 site。clean 生命周期的目的是清理项目;default 生命周期的
2021-03-15 00:07:39 3644
原创 广告化开发(基础知识)~oCPA/oCPM/oCPC
文章目录前言概念oCPM:oCPC:oCPA:oCPA/oCPM/oCPC的目的是什么?前言每一个广告主或者每一个人都想要最低的成本来达到最高的收益,也就是利益最大化所以oCPA/oCPM/oCPC就是通过数据来优化广告投放让广告主选择更适合的流量和更适合的价格来提高收益。概念oCPM:即优化千次展现出价,本质还是按照cpm付费。采用更精准的点击率和转化率预估机制,将广告展现给最容易产生转化的用户,在获取流量的同时,提高转化率、降低转化成本,跑量提速更快。oCPC:即优化点击付费,本质还
2021-03-14 12:56:02 961
原创 Java~ForkJoinPool + parallelStream实现并行快速处理数据流
文章目录ForkJoinPoolinvoke、execute和submit区别parallelStream实现快速处理数据流ForkJoinPool说起ForkJoinPool先说Fork/Join框架我们通过Fork和Join这两个单词来理解一下Fork/Join框架。Fork就是把一个大任务切分 为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结 果。比如计算1+2+…+10000,可以分割成10个子任务,每个子任务分别对1000个数进行求和, 最终汇总这10个子
2021-03-11 23:23:52 4819 3
原创 Java~ LocalDate、LocalTime、LocalDateTime、DateTimeFormatter的学习和使用
文章目录前言获取日期API日期的计算加法操作减法操作比较日期和时间ISO标准日期格式转换String转日期其他好玩的API前言此篇博客借鉴与博主: 某科学的南条内容中也有自己的思考和总结众所周知,SimpleDateFormat在多线程环境下是不安全的, 因为其内部使用的是一个calendar对象, 那么在多线程环境下使用同一个对象去修改不同的数据必然会造成不安全问题。解决办法就是使用Java8提供LocalDate、LocalTime、LocalDateTime、DateTimeFormat
2021-03-04 19:27:08 835 1
原创 Java~多线程算法实战题目之商店售票
文章目录题目描述思路测试PS:这道题是我在面试中遇到的,所以没有链接, 感觉这道题很有意思就拿出来分享分享题目描述有一个商店有100张票,并且有三个售票口, 这三个售票口之间独立, 各卖各的, 但是票不是独立的, 每张票不能重复卖。注意:100张票必须全部卖出, 但是不能多卖。每个窗口每隔100毫秒卖出一张票。要求:输出每张票是被哪个窗口卖出思路这是一个很典型的多线程安全问题, 因为票一旦操作不当就会被重复卖出所以这道题的关键点就在于每个售票口在查看此时票还剩多少和取票这俩个操作必须保
2021-03-04 13:50:22 462 5
原创 Java~多线程算法实战, 三种方式解决LeetCode题目1116. 打印零与奇偶数
文章目录题目描述解决一: 使用死循环方式解法二:使用信号量机制解法三:使用锁机制题目描述假设有这么一个类:class ZeroEvenOdd {public ZeroEvenOdd(int n) { … } // 构造函数public void zero(printNumber) { … } // 仅打印出 0public void even(printNumber) { … } // 仅打印出 偶数public void odd(printNumber) { … } //
2021-03-02 13:09:55 444
原创 Linux~常用命令ps(查看进程信息)、top(监控linux的系统状况)、netstat(检验本机各端口的网络连接情况)
文章目录PS命令命令参数top命令参数解释netstat命令参数解释PS命令作用:主要是查看此时服务器的进程信息, 也就是说他返回的是静态的数据, 不会动态变化也就是说ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。linux上进程有5种状态:运行(正在运行或在运行队列中等待)中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)僵死(进程已终止,
2021-02-28 15:58:52 705
原创 Spring~事务API、事务失效原因、事务传播特性
文章目录Spring事务事务API实现原理事务失效事务传播机制Spring事务Spring事务是在所使用的数据库事务的基础上进行封装扩展封装主要是封装了一些JDBC的一写事务操作的对象, 扩展主要有以下几点特性加入了事务传播的概念, 从代码逻辑上看来比编程式事务简化很多提供声明式事务或者是注解式配置事务,让业务代码与事务分离,事务变得更易用(AOP技术)但是也造成了事务失效的情况出现, 具体原因下面讲述事务APISpring提供了一个TransactionDefinition, 它定义了
2021-02-27 21:59:39 378
原创 Spring~debug源码, 完整走一遍Spring创建一个bean的总结
文章目录前言前言今天自己debug完整的走了一遍Spring创建一个Bean对象的过程, 收获颇多总结如下:;Spring会先创建BeanFacory容器中需要的对象, 这也是Spring自己所需要的一些对象然后无论是xml还是注解还是properies还是yaml方式, 最后都会经过beanDeinitionReader把其抽象初始化成beandefinition, beandefinition 是bean对象的定义信息, 存储着bean对象的定义信息 包装成一个个的BeanDefin
2021-02-27 15:03:17 388 2
原创 Java~基于fluent-hc快速构建Http请求,结合failsafe实现异常重试
文章目录所需依赖实现failsafe安全失败构建Get请求构建Post请求自定义响应处理所需依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>fluent-hc</artifactId> <version>4.5.10</version>
2021-02-26 11:29:09 983
用java实现操作系统实验银行家算法
2020-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人