suchahaerkang的博客

私信 关注
我是陈旭原
码龄6年

生命不息 运动不止

  • 182,759
    被访问量
  • 150
    原创文章
  • 25,533
    作者排名
  • 71
    粉丝数量
  • 目前就职 无
  • 于 2015-07-20 加入CSDN
获得成就
  • 获得76次点赞
  • 内容获得29次评论
  • 获得282次收藏
荣誉勋章
TA的专栏
  • java面试知识点
    6篇
  • I/O编程
    1篇
  • 项目实战问题解析
    16篇
  • spring
    19篇
  • java
    32篇
  • 设计模式
    6篇
  • mybatis
    1篇
  • linux
    9篇
  • jvm
    11篇
  • mysql
    14篇
  • 微服务
    9篇
  • docker
    1篇
  • spring-boot
    5篇
  • 杂七杂八
    11篇
  • 并发编程
    7篇
  • 中间件
    11篇
  • nosql
    1篇
  • 前端
    2篇
  • intellij idea
    3篇
  • 数据结构与算法
    11篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

【查找算法】- 二分查找算法

文章目录1 小案例2 二分查找算法的思路二分查找的代码1 小案例请对一个有序数组进行二分查找{1,8,10,89,1000,1234},输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"。2 二分查找算法的思路二分查找的代码说明:增加了找到所有的满足条件的元素下标:课后思考题:{1,8,10,89,1000,1000,1234}当一个有序数组中,有多个相同的数值时,如何将所有的数值都查找到,比如这里的1000。package com.sukang.searc
原创
57阅读
0评论
0点赞
发布博客于 3 月前

【排序算法】- 归并排序

文章目录1 归并排序介绍:2 归并排序思想示意图1-基本思想:3 归并排序思想示意图2-合并相邻有序子序列:4 归并排序的应用实例:1 归并排序介绍:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。2 归并排序思想示意图1-基本思想:3 归并排序思想示意图2-合并相邻有序子序列:
原创
56阅读
1评论
0点赞
发布博客于 3 月前

【排序算法】- 快速排序

文章目录1 快速排序法介绍:2 快速排序法示意图:3 快速排序法应用实例:1 快速排序法介绍:快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列2 快速排序法示意图:3 快速排序法应用实例:要求:对[-9,78,0,23,-567,70]进行从小到大的排序,要求使用快速排序法。【测试
原创
30阅读
0评论
0点赞
发布博客于 3 月前

redis学习笔记

文章目录1 redis入门1.1 Redis简介1.2 Redis 的基本操作2 Redis 数据类型2.1 数据存储类型介绍2.2 string1 redis入门1.1 Redis简介中国被世界黑的最惨的一天2007年10月30日,北京奥运会门票面向境内公众第二阶段预售正式启动。上午一开始,公众提交申请空前踊跃。上午9时至10时,官方票务网站的浏览量达到了800万次,票务呼叫中心热线从9时至10时的呼入量超过了380万人次。由于瞬间访问数量过大,技术系统应对不畅,造成很多申购者无法及时提交申请,为
原创
30阅读
0评论
0点赞
发布博客于 3 月前

java如何避免死锁

文章目录一、什么是死锁二、怎么排查死锁三、死锁产生的4个必要条件四、避免死锁的方法一、什么是死锁java中的死锁是一种编程情况,其中两个或多个线程被永久阻塞,Java死锁情况出现至少两个线程和两个或更多资源。在这里,我们将写了一个简单的程序,它将导致java死锁场景,然后我们将分析它。package com.sukang.sort;/** * @description: * @author: sukang * @date: 2020-11-09 15:48 */public class
原创
40阅读
0评论
0点赞
发布博客于 3 月前

Int和Integer的区别

文章目录一、Int和Integer的区别Int和Integer的比较(扩展)一、Int和Integer的区别1、Integer是Int的包装类,Int是八种基本数据类型之一。2、Integer变量必须实例化以后才可以使用,而Int变量不需要实例化。3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象,而Int是直接存储数据值。4、Integer的默认值是null,Int的默认值是0。Int和Integer的比较(扩展)先来看一段代码:publi
转载
23阅读
0评论
0点赞
发布博客于 3 月前

【排序算法】- 希尔排序

文章目录1 简单插入排序存在的问题2 希尔排序法介绍3 希尔排序法基本思想4 希尔排序法的示意图5 希尔排序法应用实例:1 简单插入排序存在的问题我们看简单的插入排序可能存在的问题。数组arr={2,3,4,5,6,1}这时需要插入的数1(最小),这样的过程是:{2,3,4,5,6,6}{2,3,4,5,5,6}{2,3,4,4,5,6}{2,3,3,4,5,6}{2,2,3,4,5,6}{1,2,3,4,5,6}结论:当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响。2
原创
89阅读
0评论
0点赞
发布博客于 3 月前

TCP协议三次握手、四次挥手以及TCP窗口滑动机制

文章目录一、TCP报文格式二、TCP三次握手三、TCP四次挥手四、TCP的滑动窗口机制一、TCP报文格式16位源端口号:16位的源端口中包含初始化通信的端口。源端口和源IP地址的作用是标识报文的返回地址。16位目的端口号:16位的目的端口域定义传输的目的。这个端口指明报文接收计算机上的应用程序地址接口。32位序号:32位的序列号由接收端计算机使用,重新分段的报文成最初形式。当SYN出现,序列码实际上是初始序列码(Initial Sequence Number,ISN),而第一个数据字节是ISN+1
原创
91阅读
0评论
0点赞
发布博客于 3 月前

ConcurrentHashMap解析

文章目录模拟一个面试官和面试者的对话来解析ConcurrentHashMap面试官:HashMap在多线程环境下存在线程安全问题,那你一般都是怎么处理这种情况的?小明:一般在多线程的场景,我都会使用好几种不同的方式去代替:使用Collections.synchronizedMap(Map)创建线程安全的map集合;HashtableConcurrentHashMap不过出于线程并发度的原因,我都会舍弃前两者使用最后的ConcurrentHashMap,他的性能和效率明显高于前两者。面
转载
20阅读
0评论
0点赞
发布博客于 3 月前

ThreadLocal技术详解

文章目录一、ThreadLocal使用及原理解析1、基本使用2、原理分析二、InheritableThreadLocal的使用及原理解析1、基本使用2、原理分析3、ITL所带来的的问题三、TransmittableThreadLocal的使用及原理解析1、基本使用2、原理分析3、TTL中线程池子线程原生变量的产生四、总结一、ThreadLocal使用及原理解析项目中我们如果想要某个对象在程序运行中的任意位置获取到,就需要借助ThreadLocal来实现,这个对象称作线程的本地变量,下面就介绍下Thre
原创
27阅读
0评论
0点赞
发布博客于 3 月前

HashMap实现原理

文章目录一、什么是哈希表哈希冲突哈希冲突如何解决呢?HashMap采用哪种方法解决冲突的呢?二、对比:Hashtable、HashMap、TreeMap三、HashMap概念和底层结构四、HashMap的工作原理HashMap具体的存取过程:五、重写equals方法和hashCode方法1、如何重写equals方法和hashCode方法1 实现高质量的equals方法的诀窍包括2、实现hashCode方法的通用约定2、为啥HashMap中 “重写equals时也要同时覆盖hashcode”一、什么是哈希表
原创
63阅读
0评论
0点赞
发布博客于 3 月前

mvcc多版本并发控制

文章目录一、前提概要什么是MVCC?什么是当前读和快照读?当前读,快照读和MVCC的关系MVCC能解决什么问题,好处是?数据库并发场景有三种,分别为:MVCC带来的好处是?小结一下咯二、MVCC的实现原理隐式字段undo日志一、前提概要什么是MVCC?MVCCMVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC在MySQL InnoDB
原创
76阅读
1评论
0点赞
发布博客于 3 月前

netty学习笔记

文章目录一、I/O模型1、Java BIO编程1.1 java BIO工作机制1.2 java BIO应用实例1.3 java 问题分析2、java NIO编程2.1 NIO和BIO的比较2.2 NIO三大核心原理示意图2.3 应用实例-本地文件写数据2.4 应用实例-本地文件读数据2.5 应用实例-使用一个Buffer完成文件读取、写入一、I/O模型Java共支持3种网络编程模型/IO模式:BIO、NIO、AIOJava BIO:同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端
原创
90阅读
0评论
0点赞
发布博客于 4 月前

RabbitMQ消息队列处理库存解锁及关闭订单问题

文章目录一、RabbitMQ延时队列消息的TTL死信二、实战延时关单规范设计三、消息队列处理库存解锁及关单1、流程分析2、库存微服务2.1 解锁库存配置2.2 解锁库存流程2.3 业务代码2.4 调试四、RMQ 延时队列处理关单及库存解锁整合1、流程分析2、订单关单3、订单释放和库存释放进行绑定五、消息丢失、重复、积压等解决方案1、消息丢失2、消息重复3、消息积压一、RabbitMQ延时队列RabbitMQ延时队列实现定时任务。场景:比如未付款订单,超过一定时间后,系统自动取消订单并释放占有的库存。
原创
390阅读
1评论
0点赞
发布博客于 4 月前

本地事务与分布式事务

文章目录一、本地事务1、事务的基本性质2、事务的隔离级别3、spring事务的传播行为4、SpringBoot事务关键点4.1、事务的自动配置4.2、事务的坑一、本地事务1、事务的基本性质数据库事务的几个特性:原子性(Atomicity)、一致性(Consistency)、隔离性或独立性(isolation)、持久性(Durability),简称就是 ACID。原子性:一系列的操作整体不可拆分,要么同时成功,要么同时失败。一致性:数据在事务的前后,业务整体一致。转账:A:1000; B:10
原创
100阅读
0评论
0点赞
发布博客于 4 月前

消息队列RabbitMQ

文章目录一、RabbitMQ1、MQ简介1、简介2、RabbitMQ核心概念2、Docker安装RabbitMQ3、RabbitMQ消息发送测试1、fanout 模式2、Direct 模式3、Topic 模式二、Springboot 整合1、RMQ相关配置1、引入依赖2、启动类开启RMQ注解3、 配置文件增加RMQ属性2、RMQ使用1、单元测试3、RMQ队列监听1、监听消息2、RabbitListener三、可靠投递1、发送端确认2、消费端确认1、配置修改2、测试四、RabbitMQ 延时队列1、Rabbi
原创
45阅读
1评论
0点赞
发布博客于 4 月前

接口幂等性问题处理

文章目录一、接口幂等性概念1. 接口调用存在的问题2. 什么是接口幂等性3. 什么情况下需要保证接口的幂等性二、那些情况需要防止任意多次执行所产生的影响均与一次执行的影响相同,这是幂等性的核心特点。其实在我们编程中主要操作就是CURD,其中读取(Retrieve)操作和删除(Delete)操作是天然幂等的,受影响的就是创建(Create)、更新(Update)。一、接口幂等性概念1. 接口调用存在的问题现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系
原创
63阅读
0评论
0点赞
发布博客于 4 月前

SpringSecurity 退出登录使JWT失效的解决方案

文章目录一、将Jwt Token存入Redis中二、实现JwtClaimsSetVerifier,验证Jwt Token是否有效三、实现JwtTokenStore的removeAccessToken方法,退出后使原令牌失效项目引入了JWT,在实现退出功能的时候,发现即使调用了相关接口废弃令牌,但是令牌仍然可以使用。查看原码才知道,使用的JwtTokenStore的removeAccessToken是个空方法。查了下资料,看到以下这段话。其实要完美地失效JWT是没办法做到的。“Actually, J
原创
817阅读
0评论
1点赞
发布博客于 5 月前

git进行项目版本管理

文章目录为规范源代码版本管理,现将各分支表述如下:1.master分支2.develop分支3.release分支4.feature分支5.hotfixes分支git命令行操作指南为了更好地管理目前公司内的源码版本,让大家更好的协同工作,前阵子看了不少关于git版本管理的文章,总结除了一个相对简单的管理规范,并在实践一段时间后,进行了调整。最终版如下:为规范源代码版本管理,现将各分支表述如下:1.master分支存放的应该是随时可供在生产环境中部署的代码当开发活动告一段落,产生了一份新的可供部
转载
59阅读
0评论
0点赞
发布博客于 5 月前

异步与线程池及异步编排

文章目录一、异步1、初始化线程池的4中方式2、开启线程测试二、线程池1、开发中为什么使用线程池?2、线程池七大参数:3、工作顺序:4、面试:三、CompletableFuture异步编排1、创建异步对象2、计算完成时回调方法3、线程串行化方法4、两任务组合 - 都要完成5、多任务组合四、测试代码五、异步编排小案例1、顺序获取详情、2、异步编排获取详情1、线程池配置2、代码优化一、异步在业务开发中,有很多异步场景,为了节约时间或或者提高系统的吞吐量,要做一些异步任务,在Java中要实现异步通常都是Thre
原创
83阅读
0评论
0点赞
发布博客于 5 月前

缓存及分布式锁

文章目录一、缓存1、缓存使用2、本地缓存与分布式缓存3、整合redis二、高并发下缓存失效的三个问题-穿透、雪崩、击穿1、缓存穿透2、缓存雪崩3、缓存击穿4、小结三、分布式锁原理及使用1、本地锁2、分布式锁演进四、分布式锁-Redisson1、Redisson简介和整合2、Redisson-lock锁测试3、Redisson读写锁4、项目实战五、SpringCache1、项目整合SpringCache一、缓存1、缓存使用为了系统性能的提升,我们一般都会将部分数据放入缓存中,加速访问。而DB承担数据罗盘
原创
73阅读
0评论
1点赞
发布博客于 5 月前

压力测试和性能优化实践

文章目录一、压测概念二、性能指标三、压测软件JMeter Address Already in use错误解决四、堆内存与垃圾回收一、压测概念1、压力测试考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在。压测都是为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到心中有数。2、使用压力测试,我们有希望找到很多种用其他测试方法更难发现的错误。有两种错误类型是:内存泄漏、并发与同步。3、有效的压力测试系统将应用以下这些关键条件:重复、并发、量级、随机变化。影响性能考虑点包括:
原创
65阅读
0评论
0点赞
发布博客于 5 月前

Nginx+Windows搭建域名访问环境

文章目录正向代理反向代理搭建域名访问环境Nginx配置文件反向代理配置Nginx请求网关正向代理作用:隐藏客户端信息例如:如果想访问谷歌,访问不上,可以搭建代理服务器,电脑配置代理服务器的地址,想访问某个地址,就由代理服务器帮我们访问反向代理作用:屏蔽内网服务器信息,负载均衡访问例如:想访问我们的系统,我们的系统每个服务器由内网部署,如果整个内网暴露出去,容易引起攻击,为了能找到整个内网服务器集群,在它们前面前置一个服务器(这样就是反向代理),而这个服务器可以使用Nginx。搭建域名访问环境
原创
169阅读
1评论
0点赞
发布博客于 4 月前

Java重写equals方法

文章目录一、为什么equals()方法要重写?二、怎样重写equals()方法?1、自反性原则2、对称性原则3、传递性原则4、必须覆写hashCode方法这样结果就是三个false。一、为什么equals()方法要重写?判断两个对象在逻辑上是否相等,如根据类的成员变量来判断两个类的实例是否相等,而继承Object中的equals方法只能判断两个引用变量是否是同一个对象。这样我们往往需要重写equals()方法。我们向一个没有重复对象的集合中添加元素时,集合中存放的往往是对象,我们需要先判断集合中是否存
原创
76阅读
0评论
0点赞
发布博客于 6 月前

SpringCloud项目整合OSS对象存储

文章目录一、缘起二、技术方案服务端签名后直传背景原理介绍三、实现案例1.开通阿里云OSS2.使用OSS SDK1) 安装SDK2) 上传文件到OSS3.整合Spring Cloud Alicloud OSS1) passjava-common项目引入spring-cloud-starter-alicloud-oss依赖2) 配置alicloud oss3)测试上传4.获取服务端签名4.1 准备工作:4.2 获取签名类4.3 配置网关路由4.4 配置跨域访问4.5 Web端上传组件一、缘起文件上传在系统
原创
386阅读
0评论
0点赞
发布博客于 6 月前

获取SpringCloud gateway响应的response的并进行修改

文章目录一、需求说明:二、解决方案:三、代码实现一、需求说明:由于公司的项目接入了几个几个服务进来,因为这几个服务接口返回的结果对象没有统一,前端需要后端将返回结果对象统一。二、解决方案:在网关写一个全局过滤器去对接口返回结果对象进行重构然后返回给前端。三、代码实现package com.jzt.zyy.gateway.filter;import cn.hutool.core.util.StrUtil;import cn.hutool.json.JSONObject;import
原创
1162阅读
1评论
0点赞
发布博客于 6 月前

mybatis-plus实现逻辑删除

文章目录需求说明代码实现需求说明常规的删除为物理删除,比较暴力。使用逻辑删除的好处是可能以后要用得到某些删除的数据。 比如说 某个需求是订单编号要自增, 即使这个订单被删除了,也要从被删除的订单编号开始递增,这个时候逻辑删除就派上用场了。逻辑删除就是在数据库中,指定某个状态位字段,约定好删除和未删除的状态。例如1是未删除, 0 是删除 。关于mybatis-plus逻辑删除的官网: mybatis-plus逻辑删除代码实现官方文档介绍的使用方法如下。一共只有两步, 一个是在yml中配置,
原创
769阅读
0评论
1点赞
发布博客于 6 月前

网站跨域问题理解及解决方案

文章目录一、跨域的概念二、options请求为什么发生两次请求options请求如何产生options请求options请求有什么作用三、跨域解决方案使用nginx部署为同一个域后端服务配置当次请求允许跨域网关配置跨域一、跨域的概念跨域: 指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。同源策略: 是指协议,域名,端口都要相同,其中有一个不同都会产生跨域。二、options请求自后天restful接口流行开来,从浏览器请求一个接
原创
166阅读
0评论
0点赞
发布博客于 6 月前

一个获取多级目录的小案例

文章目录1、需求2、代码实现1、需求获取京东商城首页的三级菜单数据2、代码实现使用springboot+mybatis实现1、controller @RequestMapping("/list/tree") @ApiOperation(value = "查询三级分类、组装为分类树",notes = "前端通过key==data获取") public R list(){ List<CategoryEntity> entities = categoryS
原创
67阅读
0评论
0点赞
发布博客于 6 月前

ElasticSearch详解文档

1. ELASTICSEARCH1、安装elastic searchdokcer中安装elastic search(1)下载ealastic search和kibanadocker pull elasticsearch:7.6.2docker pull kibana:7.6.2(2)配置mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/dataecho "http.host: 0.0.0.0" >
原创
207阅读
0评论
0点赞
发布博客于 6 月前

【排序算法】- 插入排序

文章目录1 插入排序法介绍:2 插入排序法思想:3 插入排序思路图:4 代码实现:1 插入排序法介绍:插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。2 插入排序法思想:插入排序(InsertionSorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成
原创
46阅读
0评论
0点赞
发布博客于 7 月前

【排序算法】- 选择排序

文章目录1 基本介绍2 选择排序思想3 选择排序思路分析图4 代码示例1 基本介绍选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。2 选择排序思想尚硅谷Java数据结构和算法更多Java–大数据–前端–python人工智能-区块链资料下载,可访问百度:尚硅谷官网第128页选择排序(selectsorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]ar
原创
55阅读
0评论
0点赞
发布博客于 7 月前

【排序算法】- 冒泡排序

文章目录1 基本介绍2 演示冒泡过程的例子(图解)3 冒泡排序应用实例1 基本介绍冒泡排序(BubbleSorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好
原创
46阅读
0评论
0点赞
发布博客于 7 月前

【数据结构java篇】- 栈

文章目录1 栈的一个实际需求2 栈的介绍3 栈的应用场景4 栈的快速入门1 栈的一个实际需求请输入一个表达式计算式:[722-5+1-5+3-3]点击计算【如下图】请问:计算机底层是如何运算得到结果的?注意不是简单的把算式列出运算,因为我们看这个算式722-5,但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题。->栈2 栈的介绍栈的英文为(stack)。栈是一个先入后出(FILO-FirstInLastOut)的有序列表。栈(stack)
原创
51阅读
0评论
0点赞
发布博客于 8 月前

Netty学习笔记

文章目录1 Netty介绍和应用场景1.1 Netty的介绍1.2 Netty的应用场景1.2.1 互联网行业1.2.2 互联网行业1.2.3 大数据领域1.2.4 其它开源项目使用到Netty2 JavaBIO编程2.1 I/O模型2.1.1 I/O模型基本说明2.2 BIO、NIO、AIO适用场景分析2.3 JavaBIO基本介绍2.4 JavaBIO工作机制2.5 JavaBIO应用实例2.6 JavaBIO问题分析3 JavaNIO编程3.1 JavaNIO基本介绍1 Netty介绍和应用场景1
原创
252阅读
0评论
0点赞
发布博客于 8 月前

【数据结构java篇】- 链表

文章目录1 链表(LinkedList)介绍2 单链表的应用实例3 单链表面试题(新浪、百度、腾讯)5 双向链表应用实例5.1 双向链表的操作分析和实现6 单向环形链表应用场景6.1 单向环形链表介绍6.2 Josephu问题1 链表(LinkedList)介绍链表是有序的列表,但是它在内存中是存储如下小结上图:链表是以节点的方式来存储,是链式存储每个节点包含data域,next域:指向下一个节点如图:发现链表的各个节点不一定是连续存储链表分带头节点的链表和没有头节点的链表,根据实际的需求
原创
116阅读
0评论
0点赞
发布博客于 8 月前

【数据结构java篇】- 队列

文章目录1 队列的一个使用场景2 队列介绍3 数组模拟队列思路4、数组模拟环形队列1 队列的一个使用场景银行排队的案例:2 队列介绍队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图:(使用数组模拟队列示意图)3 数组模拟队列思路队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图,其中maxSize是该队列的最大容量。因为队列的输出、输入是分别从前后端来处理,因此需要两个变量front
原创
62阅读
0评论
0点赞
发布博客于 8 月前

【数据结构java篇】- 稀疏数组

文章目录一个实际的需求基本介绍应用实例一个实际的需求编写的五子棋程序中,有存盘退出和续上盘的功能。分析问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据.->稀疏数组。基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模稀疏数组举例说明应用实例使用稀疏数组,来保留类似前面的二维数组
原创
60阅读
0评论
0点赞
发布博客于 8 月前

【设计模式】- 状态模式

文章目录什么是状态模式状态模式应用场景状态模式实现需要重构的代码状态模式与策略模式区别策略模式结构图:状态模式结构图状态模式实现什么是状态模式状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式应用场景1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2.操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示。 通常,有多个操作包含这一相同的条件结构。State模式将每一个
原创
57阅读
0评论
0点赞
发布博客于 9 月前

【java虚拟机】- 垃圾回收

文章目录1. 如何判断对象可以回收1.1 引用计数法1.2 可达性分析算法1.3 四种引用2. 垃圾回收算法2.1 标记清除2.2 标记整理2.3 复制3. 分代垃圾回收3.1 相关 VM 参数4. 垃圾回收器4.1 串行1. 如何判断对象可以回收1.1 引用计数法1.2 可达性分析算法Java 虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象扫描堆中的对象,看是否能够沿着 GC Root对象 为起点的引用链找到该对象,找不到,表示可以回收哪些对象可以作为 GC Root ?1.
原创
67阅读
0评论
0点赞
发布博客于 9 月前

【java虚拟机】- 内存模型

文章目录1. java 内存模型1.1 原子性1.2 问题分析1.3 解决方法2. 可见性2.1 退不出的循环2.2 解决方法2.3 可见性3. 有序性3.1 诡异的结果3.2 解决方法3.3 有序性理解3.4 happens-before1. java 内存模型很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java Memory Model(JMM)的意思。关于它的权威解释,请参考 https://download.oracle.com/otn-pub
原创
56阅读
0评论
0点赞
发布博客于 9 月前

【java虚拟机】- 内存结构

文章目录1. 程序计数器1.1 定义1.2 作用2. 虚拟机栈2.1 定义2.2 栈内存溢出2.3 线程运行诊断3. 本地方法栈4. 堆4.1 定义4.2 堆内存溢出4.3 堆内存诊断5. 方法区5.1 定义5.2 组成5.3 方法区内存溢出5.4 运行时常量池5.5 StringTable5.5 StringTable 特性5.6 StringTable 位置5.7 StringTable 垃圾回收5.8 StringTable 性能调优6. 直接内存6.1 定义6.2 分配和回收原理1. 程序计数器
原创
53阅读
0评论
0点赞
发布博客于 9 月前

【并发编程】- 源码篇

文章目录指令级并行原理1. 名词2. 鱼罐头的故事3. 指令重排序优化4. 支持流水线的处理器5. SuperScalar 处理器CPU 缓存结构原理1. CPU 缓存结构2. CPU 缓存读3. CPU 缓存一致性4. 内存屏障volatile 原理1. 如何保证可见性2. 如何保证有序性3. double-checked locking 问题指令级并行原理1. 名词Clock Cycle Time主频的概念大家接触的比较多,而 CPU 的 Clock Cycle Time(时钟周期时间),等于
原创
120阅读
0评论
0点赞
发布博客于 9 月前

【并发编程】- 模式篇

文章目录同步模式之保护性暂停1. 定义2. 实现3. 带超时版 GuardedObject4. 多任务版 GuardedObject同步模式之 Balking1. 定义2. 实现同步模式之顺序控制1. 固定运行顺序2. 交替输出异步模式之生产者/消费者1. 定义2. 实现异步模式之工作线程1. 定义2. 饥饿3. 创建多少线程池合适4. 自定义线程池终止模式之两阶段终止模式1. 错误思路2. 两阶段终止模式线程安全单例1. 饿汉单例2. 枚举单例3. 懒汉单例4. DCL 懒汉单例5. 静态内部类懒汉单例享
原创
87阅读
0评论
0点赞
发布博客于 9 月前

【并发编程】- 应用篇

文章目录效率1. 使用多线程充分利用 CPU限制1. 限制对 CPU 的使用2. 限制对共享资源的使用3. 单位时间内限流互斥1. 悲观互斥2. 乐观重试同步和异步1. 需要等待结果2. 不需等待结果缓存1. 缓存更新策略2. 读写锁实现一致性缓存分治1. 案例 - 单词计数2. 案例 - 求和统筹案例 - 烧水泡茶定时1. 定期执行效率1. 使用多线程充分利用 CPU1) 环境搭建基准测试工具选择,使用了比较靠谱的 JMH,它会执行程序预热,执行多次测试并平均cpu 核数限制,有两种思路
原创
81阅读
0评论
0点赞
发布博客于 9 月前

【并发编程】- 基础篇

文章目录一、并发编程1. 概览1.1 这门课讲什么1.2 为什么学这么课1.3 课程特色1.4 预备知识2. 进程与线程2.1 进程与线程2.2 并行与并发2.3 应用3. Java 线程3.1 创建和运行线程3.2 观察多个线程同时运行3.3 查看进程线程的方法3.4 原理之线程运行3.5 常见方法3.6 start 与 run3.7 sleep 与 yield3.8 join 方法详解3.9 interrupt 方法详解3.10 不推荐的方法3.11 主线程与守护线程一、并发编程1. 概览1.1
原创
1083阅读
0评论
0点赞
发布博客于 9 月前

【springboot源码分析】- 进阶篇

文章目录一、Spring Boot与缓存1、JSR107一、Spring Boot与缓存JSR-107、Spring缓存抽象、整合Redis1、JSR107Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry。CachingProvider定义了创建、配置、获取、管理和控制多个Cach...
原创
138阅读
0评论
0点赞
发布博客于 9 月前

【springboot源码分析】- 基础篇

文章目录一、Spring Boot 入门1、Spring Boot 简介2、微服务3、环境准备1、MAVEN设置;2、IDEA设置4、Spring Boot HelloWorld1、创建一个maven工程;(jar)2、导入spring boot相关的依赖3、编写一个主程序;启动Spring Boot应用4、编写相关的Controller、Service5、运行主程序测试6、简化部署5、Hello...
原创
148阅读
0评论
0点赞
发布博客于 9 月前

mysql 存储过程 游标 like模糊查询并插入处理的一个小案例

DELIMITER $$DROP PROCEDURE IF EXISTS `synchICD10Data`$$CREATE PROCEDURE `synchICD10Data`()BEGIN DECLARE diagnosisCode, diagnosisName VARCHAR(45); DECLARE icdName text; DECLARE count int; DEC...
原创
166阅读
0评论
1点赞
发布博客于 10 月前

java8新特性

目录1、lambda表达式2、Stream API3、其他1、lambda表达式TestLambda1public class TestLambda1 { //原来的匿名内部类 @Test public void test1(){ Comparator<String> com = new Comparator<String>(){ @Overrid...
原创
73阅读
0评论
1点赞
发布博客于 10 月前

【并发编程】- interrupt()、interrupted()、isInterrupted()使用详解

文章目录1、为何不建议用stop方法中断线程2、interrupt、interrupted和isInterrupted方法介绍3、代码测试4、总结源码地址:1、为何不建议用stop方法中断线程在java的世界里,Thread类是对线程概念的抽象。想要中断一个线程有两种方式:(1)调用Thread类的stop方法(2)组合调用Thread类的 interrupt、interrupted和...
原创
59阅读
0评论
0点赞
发布博客于 10 月前

【并发编程】- 多线程与并发编程

文章目录1、什么情况下应该使用多线程2、如何应用多线程3、Java 并发编程的基础4、守护线程1、什么情况下应该使用多线程线程出现的目的是什么?解决进程中多任务的实时性问题?其实简单来说,也就是解决“阻塞”的问题,阻塞的意思就是程序运行到某个函数或过程后等待某些事件发生而暂时停止 CPU 占用的情况,也就是说会使得 CPU 闲置。还有一些场景就是比如对于一个函数中的运算逻辑的性能问题,我们可...
原创
80阅读
0评论
0点赞
发布博客于 10 月前

【设计模式】- 单例模式

文章目录1、单例设计模式介绍2、单例设计模式八种方式3、饿汉式(静态常量)4、饿汉式(静态代码块)5、懒汉式(线程不安全)6、懒汉式(线程安全,同步方法)7、懒汉式(线程安全,同步代码块)8、双重检查9、静态内部类10、枚举11、单例模式在 JDK 应用的源码分析12、单例模式注意事项和细节说明本博客源码地址:https://github.com/suchahaerkang/design-p...
原创
77阅读
0评论
0点赞
发布博客于 10 月前

【设计模式】- 工厂模式

文章目录1、简单工厂模式2、工厂方法模式(Factory Method)3、抽象工厂模式(Abstract Factory)4、工厂模式在 JDK-Calendar 应用的源码分析5、总结:工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建,是一种创建型模式。本文从一个具体...
原创
40阅读
0评论
0点赞
发布博客于 10 月前

【设计模式】- 建造者模式

文章目录1、小案例2、传统方式解决盖房需求3、传统方式的问题分析4、建造者模式基本介绍5、建造者模式的四个角色6、建造者模式原理类图7、建造者模式解决盖房需求应用实例8、建造者模式在 JDK 的应用和源码分析9、建造者模式的注意事项和细节本博客源码地址:https://github.com/suchahaerkang/design-pattern.git1、小案例盖房子项目需求1)需要...
原创
47阅读
0评论
0点赞
发布博客于 10 月前

【mybatis学习笔记】

/** * 1、接口式编程 * 原生: Dao ====> DaoImpl * mybatis: Mapper ====> xxMapper.xml * * 2、SqlSession代表和数据库的一次会话;用完必须关闭; * 3、SqlSession和connection一样她都是非线程安全。每次使用都应该去获取新的对象。 * 4、mapper接口没有实现类...
原创
32阅读
0评论
0点赞
发布博客于 10 月前

【springboot源码分析】- 启动配置原理

文章目录1、创建SpringApplication对象2、运行run方法几个重要的事件回调机制配置在META-INF/spring.factoriesApplicationContextInitializerSpringApplicationRunListener只需要放在ioc容器中ApplicationRunnerCommandLineRunner启动流程:1、创建Sprin...
原创
40阅读
0评论
0点赞
发布博客于 10 月前

【springboot源码分析】- SpringBoot与数据访问

文章目录一、JDBC一、JDBC导入依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐jdbc</artifactId></dependency><depend...
原创
63阅读
0评论
0点赞
发布博客于 10 月前

【mysql性能优化】- 避免索引失效原则

文章目录策略1 — 尽量全职匹配策略2 — 最佳左前缀法则策略3 — 不要在索引列上做任何操作策略4 — 范围条件放最后策略5 — 覆盖索引尽量用策略6 — 不等于要甚用策略7 — is null(使用)、is not null(不使用)有影响策略8 — Like查询要当心策略9 — 字符类型加引号(切记)策略10 — OR改UNION效率高前面我们学了执行计划各列的含义以及几个优化案例,本篇博...
转载
60阅读
0评论
0点赞
发布博客于 10 月前

【mysql性能优化】- 优化实例

文章目录一、优化小案例二、单表优化案例三、两表案例优化四、三表案例优化上一篇博客我们解析了执行计划explain的各个字段的含义,这篇博客我们先根据执行计划优化几个案例一、优化小案例首先创建一个表和加索引-- 创建一个test03create table test03( a1 int(4) not null, a2 int(4) not null, a3 int...
原创
118阅读
0评论
0点赞
发布博客于 10 月前

docker使用

文章目录一、简介二、核心概念三、安装Docker四、Docker常用命令&操作一、简介Docker是一个开源的应用容器引擎;是一个轻量级容器技术;Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使 用这个镜像;运行中的这个镜像称为容器,容器启动是非常快速的。二、核心概念docker主机(Host):安装了Docke...
原创
56阅读
0评论
0点赞
发布博客于 11 月前

【设计模式】- 适配器模式

文章目录一、小案例本博客源码地址https://github.com/suchahaerkang/design-pattern.git一、小案例1、泰国插座用的是两孔的(欧标),可以买个多功能转换插头 (适配器) ,这样就可以使用了。2、基本介绍1. 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能...
原创
57阅读
0评论
0点赞
发布博客于 11 月前

【设计模式】- 模板方法

文章目录1 小案例2 模板方法模式基本介绍3 模板方法模式原理类图4 模板方法模式解决豆浆制作问题4.1 应用实例要求4.2 思路分析和图解(类图)4.3 代码实现5 模板方法模式的钩子方法6 模板方法模式在 Spring 框架应用的源码分析7 模板方法模式的注意事项和细节本博客源码地址:https://github.com/suchahaerkang/design-pattern.git1...
原创
58阅读
0评论
0点赞
发布博客于 11 月前

【springboot源码分析】- 日志

文章目录1 日志框架2 SLF4j使用2.1 如何在系统中使用SLF4j [https://www.slf4j.org](https://www.slf4j.org)2.2 遗留问题2.3 SpringBoot日志关系2.4 日志使用2.5 切换日志框架1 日志框架市面上的日志框架JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…日...
原创
51阅读
0评论
0点赞
发布博客于 11 月前

【springboot源码分析】- 配置文件

文章目录1 配置文件2 YAML语法配置文件值注入本博客源码地址https://github.com/suchahaerkang/spring-boot-study.git1 配置文件1)SpringBoot使用一个全局的配置文件,配置文件名是固定的:application.propertiesapplication.yml如图加了这个包之后出现了提示2)配置文件的作用:修改...
原创
67阅读
0评论
0点赞
发布博客于 11 月前

【mysql性能优化】- 执行计划explain

文章目录1 前言2 准备3 执行计划结果列的含义3.1 id -- 用来判断语句执行的顺序3.2 select_type -- 判断查询的类型3.3 table -- 当前行操作的数据是关于哪张表的3.4 type -- 索引类型官网:https://dev.mysql.com/doc/refman/8.0/en/explain-output.html1 前言本文用mysql5.5版本测...
原创
93阅读
0评论
0点赞
发布博客于 11 月前

【myql性能优化】- mysql索引及底层数据结构

文章目录1 为什么要用索引2 什么是索引3 简单说说HASH索引4 非HASH索引为什么选用的数据结构为B+树?4.1 为什么不是其他数据结构4.2为什么是B+树而不是B树呢?4.2.1 B树数据结构4.2.2 B+树数据结构,以及为什么选择B+树4.2.3 一个错误的观点:B树和B+树的区别之一为B树的非叶子节点存储数据4.3 简单猜想:为什么索引中每个节点在内存中的地址是随机的5 MySQL索...
转载
53阅读
0评论
0点赞
发布博客于 1 年前

【mysql性能优化】- sql解析顺序

文章目录MySQL架构总览:2 查询执行流程2.1 连接2.2 处理2.3 结果3 SQL解析顺序MySQL架构总览:架构最好看图,再配上必要的说明文字。下图根据参考书籍中一图为原本,再在其上添加上了自己的理解。从上图中我们可以看到,整个架构分为两层,上层是MySQLD的被称为的‘SQL Layer’,下层是各种各样对上提供接口的存储引擎,被称为‘Storage Engine Layer...
转载
61阅读
0评论
0点赞
发布博客于 1 年前

【springboot源码分析】- 监听器的使用和源码分析

文章目录1 springboot中的监听器模式1.1 ApplicationListener1.2 ApplicationEventMulticaster1.3 ApplicationEvent1.4 springboot中的事件发送顺序1.5 springboot内部的监听器还是如何注册到容器中去的?1.6 springboot内部监听事件触发机制?2 自定义监听器2.1 通过SpringFac...
原创
63阅读
0评论
0点赞
发布博客于 1 年前

【springboot源码分析】- ApplicationContextInitializer的作用及源码分析

文章目录1 ApplicationContextInitializer的作用2 测试ApplicationContextInitializer功能本博客源码地址https://github.com/suchahaerkang/spring-boot-study.git1 ApplicationContextInitializer的作用ApplicationContextInitialize...
原创
112阅读
0评论
0点赞
发布博客于 1 年前

【springboot源码分析】- springboot项目搭建

文章目录1 快速搭建一个springboot + mybatis的项目1.1 新建一个springboot项目1.2 创建一个sb2的数据库,并且新建一个user表1.3 mybatis generate插件自动生成实体类和Mappers1.4 实现根据主键id查询用户信息的功能本博客源码地址https://github.com/suchahaerkang/spring-boot-study...
原创
62阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- spring容器创建源码解析

文章目录1 prepareRefresh();刷新前的预处理1.1 initPropertySources();初始化一些属性设置;子类自定义个性化的属性设置方法1.2 getEnvironment().validateRequiredProperties();检验属性的合法性1.3 预处理事件驱动2 obtainFreshBeanFactory();获取BeanFactory前面学习一些关于s...
原创
53阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 事件监听器 - ApplicationListener&@EventListener

文章目录1 测试功能2 ApplicationListener源码分析3 @EventListener原理本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.gitApplicationListener接口和@EventListener的作用:都是监听容器中发布的事件1 测试功能写一个实现ApplicationLis...
原创
156阅读
0评论
0点赞
发布博客于 1 年前

【spring 注解驱动开发】- BeanFactoryPostProcessor

文章目录1 BeanFactoryPostProcessor1.2 代码测试1.2 源码分析2 BeanDefinitionRegistryPostProcessor2.1 代码测试2.2源码分析3 总结本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git1 BeanFactoryPostProcessorBea...
原创
85阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 申明式事务 - 测试和源码分析

文章目录1 测试2 源码分析2.1 @EnableTransactionManagement2.2 AutoProxyRegistrar2.3 ProxyTransactionManagementConfiguration2.3.1 TransactionAttributeSource的作用2.3.2 TransactionInterceptor的作用本博客demo源码地址https://gi...
原创
48阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- AOP源码分析

文章目录1 @EnableAspectJAutoProxy注解做了什么?1.1 传入配置类,创建IOC容器`1.2 注册配置文件,刷新容器1.3 注册bean的后置处理器1.3.1 从容器中获取所有已经定义好了的BeanPostProcessor1.3.2 注册其他BeanPostProcessor组件1.3.3 分离BeanPostProcessor组件1.3.4 注册BeanPostPro...
原创
101阅读
1评论
1点赞
发布博客于 1 年前

【设计模式】- 代理模式

文章目录1 定义2 静态代理1 定义1.1 代理模式:给一个目标对象创建一个代理对象,代理对象可以获得控制这个目标对象的权限。既可以通过代理对象访问目标对象,对目标对象的功能进行增强1.2 代理模式的方式有三种:1)静态代理, 2)动态代理(又叫JDK代理或接口代理),3)Cglib代理(目标对象不需要实现接口,代理对象在内存中是动态生成的,有的教程把它归类于动态代理)下面有个场景:现在有...
原创
58阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- AOP - AOP功能测试

文章目录1 AOP作用2 AOP功能测试本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git1 AOP作用AOP是spring中最终要的特性之一,底层技术用到了动态代理AOP作用:在运行的程序中,将一段代码切入到指定方法指定位置上去运行的编程方法2 AOP功能测试要实现AOP的功能,首先要引入spring-...
原创
59阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 自动装配 - @Profile

文章目录1 @Profile的作用2 激活环境的两种方式本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git1 @Profile的作用@Profile的作用:切换不同的环境,可以动态的将不同的组件注册到容器中去现在有这么一个需求,我们都知道我们在开发项目的时候一般都会有开发(dev),测试(test)和生产(p...
原创
186阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 自动装配 - Aware自动注入容器底层组件和原理

文章目录1 验证Aware接口2 Aware的实现原理本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git添加链接描述上两篇文章我们学习了spring提供的@Autowired注解和java提供的@Resource,@Inject注解自动装配我们自定义的组件,但是如果我们在自定义组件的时候需要用到spring底层的...
原创
79阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 自动装配 - @Resource&@Inject

文章目录1 @Resource2 @Inject3 总结本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git上篇博客我们学习了通过spring提供的注解@Autowired进行自动装配。本篇博客将介绍java提供的两个注解来进行自动装配JSR250 提供的@Resource和JSR330提供@Inject,JSR...
原创
38阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 自动装配 - @Autowired&@Qualifier&@Primary

文章目录1 @Autowired2 @Qualifier3 @Primary本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git这篇文章我们开始学习spring的自动装配,即DI(依赖注入):将IOC容器中互相依赖的组件自动赋值对于自动装配spring提供了一些相关的注解,我们首先研究一下@Autowired这个...
原创
101阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 属性赋值 - @Value&@PropertySource

文章目录1 通过无参构造函数创建对象2 组件属性赋值2.1 @Value2.2 @PropertySource本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git1 通过无参构造函数创建对象首先我们写个配置类,将Person组件注册到容器中去/** * @description: * @author: su...
原创
82阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 生命周期 - BeanPostProcessor的使用和原理

文章目录1 BeanPostProcessor的使用本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git1 BeanPostProcessor的使用BeanPostProcessor是spring提供的一个接口,这个接口提供了两个默认方法,分别是在组件初始化前后进行一些处理...
原创
79阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 生命周期 - InitializingBean&DisposableBean&@PostConstruct&@PreDestroy自定义初始化和销毁方法

文章目录1 InitializingBean&DisposableBean2 &PostConstruct&@PreDestroy本博客demo地址https://github.com/suchahaerkang/spring-annotation.git上一篇文章学习了通过@Bean自定义初始化和销毁bean方法,在这篇文章中我们将分享通过spring提供Initi...
原创
110阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】-生命周期 - @Bean自定义初始化和销毁

文章目录bean的生命周期bean创建bean的初始化bean销毁本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.gitbean的生命周期bean的生命周期:创建 - 初始化 - 销毁bean的生命周期一般来说是由IOC容器来管理的,但是我们可以自定义初始化和销毁方法。下面我们就来介绍一下bean的三种生命周期以...
原创
71阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 组件注册 - @Import&FactoryBean

文章目录1 对前几篇博客的一个小总结2 @Import2.1 @Import(主键的类型)2.2 @Import(ImportSelector) 的方式2.3 @Import(ImportBeanDefinitionRegistrar) 的方式3 FactoryBean本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.g...
原创
59阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 组件注册 - @Conditional

文章目录1 @Conditional注解的作用2本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git1 @Conditional注解的作用 @Conditional是spring4中的一个注解,作用是在spring容器中注册组件的时候,进行一些条件判断,如果判断成功,那么就可以将组件注册在spring容器...
原创
38阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 组件注册 - @Scope&@Lazy

文章目录1 @Scope1.1 代码检验@Scope注解默认作用域是什么1.2 代码检验作用域为单实例的时候什么时候开始创建实例1.3 代码验证多实例prototype的特性和实例创建时间2 @Lazy本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git1 @Scope注意:@Scope 作用域有四种:s...
原创
50阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 组件注册 - @ComponentScan自动扫描组件&扫描规则

文章目录1本博客demo源码地址https://github.com/suchahaerkang/spring-annotation.git1
原创
68阅读
0评论
0点赞
发布博客于 1 年前

【spring注解驱动开发】- 组件注册 - @Configuration&@Bean给容器注册组件

1.发生过的
原创
63阅读
0评论
0点赞
发布博客于 1 年前

java 单链表及面试题

1.链表(Linked List)介绍链表是有序的列表,但是它在内存存储结构如下:2.特点:链表是以节点的方式来存储,是链式存储每个节点包含 data 域, next 域:指向下一个节点.链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定3.单链表介绍单链表(带头结点) 逻辑结构示意图如下:4.应用示例:使用带head头的单向链...
原创
549阅读
0评论
0点赞
发布博客于 1 年前

java 数据结构 用数组实现队列 改进版 实现环形队列

数组实现队列代码内容package com.sukang.queue;import java.util.Scanner;/** * @description: 数组模拟队列 * @author: sukang * @date: 2019-12-27 14:30 */public class ArrayQueueDemo { public static void ma...
原创
46阅读
0评论
0点赞
发布博客于 2 年前

java 稀疏数组

1、概念 当一个二维数组中大部分元素为0或则为同一个值时,可以使用稀疏数组保存这个二维数组2、处理方式 1)稀疏数据的第一行分别存二维数组的几行几列以及二维数据中不为0的元素个数 2)将二维数据的行列几元素值存放到稀疏数组中3、示例 原数组如下:    转换为稀疏数组如下:  4、java代码实现如下 ...
原创
124阅读
0评论
0点赞
发布博客于 2 年前

idea 项目上传到git上面去

1.计算机本地安装git -->右键出现git bash(并记录git 的安装位置)2.配置idea 的githubsetting-->version control --->git-->将本地安装的git 地址复制到对应位置---》test进行测试3.设置自己的github 账号密码点击create api token--->填写github...
转载
35阅读
0评论
0点赞
发布博客于 2 年前

git创建,合并和删除分支

TortoiseGit-创建分支、合并分支第一步:创建本地分支点击右键选择TortoiseGit,选择Create Branch…,在Branch框中填写新分支的名称(若选中”switch to new branch”则直接转到新分支上,省去第二步),点击OK按钮:第二步:通过“Switch/Checkout”切换到新创建的分支上,点击OK:第三步:在新分支下执...
原创
54阅读
0评论
0点赞
发布博客于 2 年前

VitualBox centos虚拟机扩展磁盘空间

1 第一步 在vmware中将虚拟机关机后,鼠标右键设置,直接点击扩展加自己想要扩展的数量就可以了,这个比较简单不多说。2 第二步 设置后进系统查看空间大小变化,实际并没有什么变化,我用的命令是df -h,我就蒙B了,上网一顿找,总算找到一个靠谱点的文章,但文章后半部分不对,我又结合另一个文章实现了这个针对centos版本的扩容,来吧,上操作。开始真正的操作1,执行命令:lsblk...
转载
53阅读
0评论
0点赞
发布博客于 2 年前

码云上比较好的java项目

2017 年度码云热门项目排行榜 TOP 50 出炉啦!我们根据所有开源项目在码云的用户关注度、活跃度、访问量等信息来对“热门”进行量化,从而筛选出了其中最“热门”的 50 个,它在一定程度上预示着业界的最新流行趋势。值得注意的是,榜单中涌现出了不少新兴项目,由此可见,国内的开源气氛越来越好,国内的开源也在蓬勃发展。前 20 名预览排名 软件 排名 软件1 zheng 11 AOS...
转载
1114阅读
0评论
0点赞
发布博客于 2 年前

docker化elk日志采集

ELK即Elasticsearch、Logstash、Kibana,组合起来可以搭建线上日志系统,在目前这种分布式微服务系统中,通过ELK 会非常方便的查询和统计日志情况.本文以jztdurengine(审方引擎)为例#ELK中各个服务的作用Elasticsearch:用于存储收集到的日志信息; Logstash:用于收集日志,应用整合了Logstash以后会把日志发送给Logst...
原创
355阅读
0评论
0点赞
发布博客于 2 年前

MySQL关于sql_mode的修改(timestamp的默认值不正确)

timestamp的默认值不正确原因:MySQL5.7版本中有了一个STRICT mode(严格模式),而在此模式下默认是不允许设置日期的值为全0值的,所以想要解决这个问题,就需要修改sql_mode的值。select @@global.sql_mode; 查看当前sql_mode;set sql_mode=(select replace(@@sql_mode,'NO_Z...
原创
356阅读
0评论
1点赞
发布博客于 2 年前