自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SlagSea

渣渣海的编程之路

  • 博客(85)
  • 资源 (3)
  • 收藏
  • 关注

原创 RocketMQ核心原理

文章目录简介使用场景特性架构角色介绍架构图核心特性以及原理消息发送Oneway发送消息消费消息存储存储方式选型存储结构CommitLogConsumeQueueRocketMQ存储关键技术MmapPageCache存储优化零拷贝消息过滤同步/异步复制同步复制异步复制高可用机制消息发送高可用消息消费高可用刷盘机制同步刷盘异步刷盘负载均衡Producer的负载均衡Consumer的负载均衡消息重试顺序消息的重试无序消息的重试重试次数死信队列特性:延迟消息顺序消息部分消息有序事务消息核心流程启动流程负载均衡向br

2021-10-28 00:29:44 848

原创 Spring框架

简介 Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 SpringMVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,已经成为使⽤最多的 Java EE 企业应⽤开源框架。主要优势方便解耦简化开发AOP编程支持声明式事务方便程序的测试方便集成各种优秀框架核心思想 在Spring中拥有许多的组件,但核心部分主要为:Beans、Core、Context、Expression,

2021-12-11 22:46:44 711

原创 Redis基础原理

底层数据结构Redis 解决哈希冲突的方式,就是链式哈希​ 如果一次性把哈希表 1 中的数据都迁移完,会造成 Redis 线程阻塞,无法服务其他请求。此时,Redis 就无法快速访问数据了。 为了避免这个问题,Redis 采用了渐进式 rehash。 简单来说就是在第二步拷贝数据时,Redis 仍然正常处理客户端请求,每处理一个请求 时,从哈希表 1 中的第一个索引位置开始,顺带着将这个索引位置上的所有 entries 拷贝到哈希表 2 中;等处理下一个请求时,再顺带拷贝哈希表 1 中的下

2021-11-25 22:07:35 6040 2

原创 MySQL核心原理

文章目录前言简介发展历程MySQL 应用架构演变MySQL 架构原理体系架构运行机制存储引擎InnoDB存储结构内存结构1)Buffer PoolPage管理机制改进型LRU算法维护Buffffer Pool配置参数2)Change Buffffer3)Adaptive Hash Index4)Log Buffffer磁盘结构InnoDB线程模型IO ThreadPurge ThreadPage Cleaner ThreadMaster ThreadInnoDB数据文件Row行格式Undo Log作用Red

2021-10-04 00:59:10 349

原创 Ffmpeg的使用

Ffmpeg使用介绍FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。框图下图所示基础知识封装格式所谓封装格式是指音视频的组合格式,例如最常见的封装格式有mp4、mp3、flv等。简单来说,我们平时接触到的带有后缀的音视频文件都是一种封装格式。不同

2021-08-28 12:09:21 535

原创 Mybatis核心原理

简介Mybatis是一款流行的持久层框架,基于ORM(Object-Relation Mapper)思想,对针对JDBC的封装,通过xml配置支持灵活复杂的SQL查询。框架组件架构图Mybatis核心成员数据流核心成员说明核心成员功能说明Configuration保存MyBatis大部分配置信息SqlSessionMyBatis主要的顶层API,与数据库交互,实现数据库增删改查功能。ExecutorMyBatis 调度器,负责SQL语句的生成和查询缓存的维护

2021-07-18 23:00:48 2871 12

原创 Orika框架封装问题排查

背景个人维护的一个后台服务使用了Orika框架去处理bean对象之间的映射,并对Orika框架做了简单的封装,减少冗余代码。这里简单说明下Orika框架的原理,Orika框架是在运行时动态创建字节码,生成最小开销的映射器来实现Bean对象之间映射的。其他Bean映射的框架有Mapstruct、BeanCopier等。问题后台服务在内部测试环境运行一段时间后,突然发现部分接口响应很慢,而且接口越刷越慢,平均接口耗时十几秒,造成前端接口响应超时,刷不出数据。问题排查初步排查针对相关接口业务逻辑做初步

2021-05-16 23:35:23 1025 3

原创 kotlin协程调度器原理

抛砖引玉背景:某服务曾遇到一个学校开通状态同步,使用了kotlin协程异步批量更新学校双开服务,遇到某些学校状态更新不正确。kotlin协程调度原理什么是协程?kotlin结构化协程在kotlin协程实现模型最终都会转化为线程执行的任务public fun CoroutineScope.launch( context: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.

2021-02-28 14:08:23 691

原创 Retrofit Http 组件使用简介

Retrofit Http 组件使用简介1 Retrofit、Okhttp、retrofix-spring-boot-starter组件源由Okhttpsquare公司开源的http客户端工具Retrofixsquare公司另外开源的基于okttp进一步封装的http工具retrofix-spring-boot-startergithub大佬封装的基于spring boot的组件2 引用方式2.1 并引入下面依赖,启动类配置@RetrofitScan注解或者

2021-01-10 19:10:12 387

原创 linux如何后台执行程序?

一、使用场景 如果要自己的应用程序能够外网访问,比较常用的操作就是将服务部署到服务器(也可以本机使用 花生壳/ngrok 等内网穿透工具,让服务能够被外网访问)。部署服务登陆服务器会经常会用到xshell等终端工具,执行shell命令部署服务到linux机器上。可能会经常遇到应用程序日志在终端屏幕输出,关闭终端或者Ctrl+c程序就会终止运行。这时候就需要程序能够后台方式运行,并将...

2020-10-08 11:50:30 6926

原创 SQL的基础知识

系列文章目录提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录SQL基础操作1 前言2 概述2.1 创建和操纵表2.1.1 创建表语法2.1.2 更新表2.1.3 重命名表2.1.4 删除表2.2 检索数据2.2.1 检索单列2.2.2 检索多列2.2.3 检索所有列2.2.4 检索不同值2.2.5 限制结果2.3 数据排序2.4 过滤数据2.4.1 使用**where**子句2.4.2 where子句操作符2.4.3 使用通配符进行过滤2.5 创建计算字段2.5.

2020-10-07 13:58:14 324 1

原创 数据分析师的初级玩法(一)

文章目录前言背景爬虫概念主要步骤需要解决的问题实现的方式分析流程数据可视化最后前言少年不识愁滋味,爱上层楼。爱上层楼。为赋新词强说愁。而今识得愁滋味,欲说还休,欲说还休。却道天凉好个秋!​ ​  这首诗词个人觉得蛮符合当前的感慨。何为愁?很多人包括我自己常常因为生活的浪花啪啪打脸,殊不知有浪花才能走到彼岸。真心祝愿很多人可以从绝望中看到希望,我想这就是人生吧,无法选择出生,却可以选择走不一样的路。我认识身边的不少海归,却人各有志。有的人是混个学历,有的人是热爱学习,有的人是被逼无奈。形形色.

2020-10-03 13:06:57 256

原创 一次项目上的几个有意思的问题

记一次项目上的几个有意思的问题文章目录记一次项目上的几个有意思的问题1 背景2 遇到的问题2.1 支持所有get/post/put/delete/patch请求类型等去访问接口2.1.1 拦截器拦截请求,获取参数值以map格式放置threadLocal2.1.2 读取请求路径的参数或者解析body里面的值2.1.3 增加过滤器,包装每个request,为了copy请求体的数据做解析,若不copy请求体数据在读取解析,会报请求缓冲区空异常,这个是spring 框架web注解代理类抛出的异常.2.1.4 通

2020-09-21 00:32:05 139

原创 gor工具在测试和压测场景的应用

1 介绍gor是golang实现的http流量复制和压测工具.可以将生产环境的http流量环境和预发布环境重现.2 基本原理在代理例如nginx入口服务器上执行一个进程,监听端口请求,复制请求,根据命令配置请求到其他机器原理图:3 安装方式wget https://github.com/buger/goreplay/releases/download/v1.1.0/gor_1.1.0_x64.tar.gz tar -zxvf gor_1.1.0_x64.tar.gz cp.

2020-09-20 12:24:11 908

原创 Dubbo之RpcContext原理

1.前言最近在开发一个消息通知功能,需要将每个功能的dubbo rpc 接口参数通过MQ发送,消费方消费MQ将参数转化成消息通知的必要数据存数据库,用户通过接口获取自己的相关消息.依赖的RPC接口在设计上并没有操作者的参数,需求需要记录操作者.这里有个思路就是利用RpcContext,在一次完整的RPC调用链路中,将需要的参数透传过去.下面讲下使用RpcContext的使用原理以及使用RpcContext所走的坑.2.上下文信息RpcContext本质上是一个ThreadLocal,当接收到RP

2020-07-19 22:02:05 7047

原创 kotlin协程挂起原理(2)

说明 这边文章包含一些实操视频,csdn无法上传大于5M视频,又不想跳转到第三方平台播放,将视频转gif显示并上传到本人github.github文章地址:kotlin挂起原理(2)

2020-07-02 03:17:35 257

原创 毕业快一年,我想说我过得如何?

毕业一年了,因为一个点,搅乱了自己的思绪。这个点是我已经毕业快一年了。原生家庭08年父亲因癌症晚期去世了。我,老妈,小妹三个人组成一个单亲家庭继续走到了现在。家里顶梁柱的缺失在很长的一段时间里,看习惯了很多别人异样的眼光。童年也有许多不快乐的回忆,小时候被许多隔壁小朋友嘲笑过自己是外省人,仅仅是因为老妈是广西嫁这边。我不知道为什么这种会被嘲笑,可能是当时很多拉板车拉货的人很多都是外省过来的吧。现状2019年,我以一名程序员的身份毕业,找到了一份广州薪资过w的工作。当时自己的理想工作城...

2020-05-17 00:14:34 4630 12

原创 kotlin协程原理

1 什么是协程轻量级线程,kotlin在1.3版本后,提供了协程coroutine库,一种简化异步任务处理的方案。2 为什么用协程2.1 简化代码,增加可读性使用协程可以用简洁直观可读性高的写法,实现多重依赖关系的异步任务的书写。若不使用协程,一般的异步方式?通过Callback回调的方式 利用AsyncTask 通过链式调用java8提供的CompletableFut...

2020-04-11 01:21:56 3432

原创 设计模式-命令模式

1 概念一种高内聚模式,将一个请求封装成一个对象,从而让你使用的不同请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。2 概念解释是一种数据驱动的设计模式,请求以命令形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适对象并把该命令传给对应对象,该对象执行命令。命令模式通用类图如下:3 使用场景认为是使用命令的地方,如GUI开发,模拟DOS...

2020-03-01 18:36:22 833

原创 设计模式-责任链模式

1 概念使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。2 概念说明责任链模式的重点是在“链”上,将接收者对象连成一条链,并在该链上传递请求,直到有一个接收者对象处理它。通过让更多对象有机会处理请求,避免了请求发送者和接收者之间的耦合。责任链模式通用类图:3 应用场景有多个对象可以处理同一...

2020-02-17 22:19:56 914

原创 设计模式-六大原则

1 单一职责原则1.1 定义不要存在多于一个导致类变更的原因。1.2 名词解释通俗的说,即一个类只负责一项职责。1.3 场景说明假如类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方式:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1...

2020-02-13 13:30:37 1697

原创 设计模式-策略模式

1 概念策略模式也叫政策模式,是一种比较简单的模式,其定义是定义一组算法,将每个算法都封装起来,并且使它们之间可以互换2 概念理解策略模式使用的是面向对象的继承和多态机制,将算法实现从业务逻辑中剥离出来成为一系列独立的算法类,每个算法实现相同的接口就可以实现相互转换。策略模式通用类图:Context封装角色上下文角色,一般持有策略的引用,进行对策略的调用,具体的策略对象也可...

2020-02-08 17:51:23 2198

原创 设计模式-模板方法模式

1 概念定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类不可以改变一个算法的结构即可重定义该算法的某些特定步骤。 ...

2020-02-07 16:50:04 2422

原创 设计模式总览

1 前言学习别人的东西没有内化为自己的东西真的等于白白浪费了时间.有时候看过的书过阵子就有点忘记了看过的内容,在工作中如果没有用上很有可能会忘记.还是那句老话说的好,好记性不如烂笔头,学会记录,学会思考,在终身学习的旅途中留下一点痕迹,有时间还能翻来看看以往写的东西又有一番新的理解,这种感觉还是挺不错的.From today, work hard, boy!2 设计模式专题设...

2020-02-07 16:47:18 2195

原创 kotlin 基础总结

kotlin 学习总结记录一下与java相比的一些基础重要的点1.基础知识1.1 基本类型kotlin中没有java基本类型的int、float、double等,所有东西都是对象,这与java类似。但是kotlin对数字没有隐式拓宽转换,需要显示转换;数字字面量不支持八进制。1.2 包与导入使用import关键字,功能上与java差不多。import不限于导入类,还可以导入声明如枚举...

2019-06-09 23:52:54 1745

原创 谷歌浏览器安装json可视化插件

一、问题 在开发过程中,我们会经常遇到在浏览器请求一个接口获得json输出,这时候json数据不易看,有些特殊字符被转义,这时候可以安装google浏览器的JsonView插件来达到想要的效果,方便在有些时候可以直接json的数据。二、解决办法1.在该地址使用下载zip包格式将文件下载到本地,该地址如下: https://github.com/gil...

2019-03-28 15:23:59 2335

原创 vim 安装

一、问题 在Linux安装了go环境后,一般要安装vim-go插件,能够对go代码有配色、语法高亮、格式化等功能,方便开发者直接在linux上vim编写代码。安装完vim-go插件后vim打开一个文件可能会遇到问题,系统会提示vim版本过低,但是并不影响打开文件。因此需要卸载掉系统自带的vim,安装新版本vim。二、解决办法1.检查并卸载旧版本vimvimyum rem...

2019-03-23 22:12:51 1298

原创 谷歌浏览器提示因应用程序的并行配置不正确无法启动

渣渣海除了写点博客外,还有github哦,欢迎进去看看,如果有喜欢的,记得加个小星星哦。github地址:https://github.com/xuhaihan?tab=repositories一、问题 具体原因还没查清楚,是电脑一直没关突然运行出错导致丢失什么文件是谷歌不能启动,还是电脑突然间睡眠时更新的缘故,这个后面再看看,先网上找了一些方案,发现还是不行。历经波折...

2019-03-14 12:05:19 45249 1

原创 Java包装类的共同点

渣渣海除了写点博客外,还有github哦,欢迎进去看看,如果有喜欢的,记得加个小星星哦。github地址:https://github.com/xuhaihan?tab=repositories之前写过一篇博客,讲了基础的Java包装类的装包拆包过程,下面补充一下包装类它们的一些共同点。1.所有包装类都重写了Object方法 我们也很容易知道Object的方法有:bo...

2019-03-10 23:19:32 2418

原创 java线程同步的实现方式

这里抛砖引玉,为何要使用同步?当多个线程同时操作一个可共享的资源时会出现线程安全问题,将会导致数据不一致,因此使用同步锁来防止该操作执行完之前不许被其他线程执行,从而保证了该变量的唯一性和准确性。下面总结一些java线程实现同步方式,大致有下面几种:1.同步方法 使用 synchronized关键字,可以修饰普通方法、静态方法,以及语句块。由于java的每个对象都有一个内置锁...

2019-03-08 01:47:21 12758 2

原创 JAVA基本类型的拆箱和装箱

一个基础知识小回顾,码太多,基础的东西也要总结,最近推荐一本好书《java的编程逻辑》。里面除了讲述一些基础知识,还对线程并发那一块讲述的很明白,很不多,推荐!下面回归这次主题基本类型的拆箱和装箱。一、基本类型 java基本类型有8种: 整数:byte(1字节)、short(2字节)、int(4字节)、long(8字节) 浮点数:float、d...

2019-03-01 23:12:44 4374

转载 SQL优化建议30条

1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is nu...

2019-02-27 13:30:36 5918

转载 spring相关知识要点

1. 什么是spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB 控制...

2019-02-23 19:22:46 5865

转载 linux常用命令(四)

1.rm [选项] 文件… | 一个或多个文件或目录-f  忽略不存在的文件,不给出提示-i  交互式删除-r  将列出的目录及其子目录递归删除-v  列出详细信息2.echo:显示内容-n  输出后不换行-e  遇到转义字符特殊处理     eg:       echo "hehe"   显示hehe       ehco -e "hehe"    显示he(换行...

2019-02-18 12:25:39 5656

转载 linux常用命令(三)

1.gzip [-cdtv#] 檔名 | 压缩、解压缩,源文件都不再存在1-d  进行解压缩2-c  将压缩的数据输出到屏幕上3-v  :显示原档案/压缩文件案的压缩比等信息4-#  :压缩等级,-1最快,但压缩比最差,=9最慢,但压缩比最好2.gunzip | 解压缩3.bzip2 | 压缩、解压缩1-d  :解压2-z  :压缩3-k  :保留源文件4-c :...

2019-02-18 12:23:37 5505

转载 linux常用命令(二)

1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a  列出包括.a开头的隐藏文件的所有文件 -A  通-a,但不列出"."和".." -l  列出文件的详细信息 -c  根据ctime排序显示 -t  根据文件修改时间排序 ---color[=WHEN] 用色彩辨别文件类型 WHEN 可以是'never'、'always'或'auto'其中之一    白色:表...

2019-02-18 12:21:55 5191

转载 linux常用命令(一)

1.sort1-n   依照数值的大小排序。2-o<输出文件>   将排序后的结果存入指定的文件。3-r   以相反的顺序来排序。4-t<分隔字符>   指定排序时所用的栏位分隔字符。5-k  选择以哪个区间进行排序。2.wc 统计指定文件中的字节数、字数、行数, 并将统计结果显示输出1-l filename 报告行数2-c filename 报...

2019-02-18 12:20:14 4943

原创 使用layui对select append元素无效或者未及时更新

一、问题    本人在使用layui使用了select按钮,点击是js脚本会异步请求后台接口获取json数据,然后layui将json数据渲染到select上,然而获取接口数据没有问题,就是无法更新。本人使用代码如下:<div class="main layui-clear"> <div class="fly-panel" pad20> ...

2019-02-16 21:17:58 8616 2

原创 Nginx 安装

系统环境 系统平台:CentOS release 6.6 (Final) 64位。一、安装编译工具及库文件yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel二、首先要安装 PCREPCRE 作用是让 Nginx 支持 Rewrite 功能。1、下载 PCRE 安装包,下载地址...

2019-02-15 16:45:25 4498 1

原创 Nginx 匹配路径配置规则

一、location语法location [=|~|~*|^~] /uri/ { … }=         严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求 ~         区分大小写匹配(可用正则表达式) ~*       不区分大小写匹配(可用正则表达式) !~       区分大小写不匹配 !~*     不区分大小写不匹配 ^~      ...

2019-02-15 16:24:43 12890

在线编码解码加密解密工具

网页展示,部分数据后台传输,后台使用spring boot ,类似在线网页加密解密,使用idea编译器,版本2018,版本似乎没什么关系。下载导入基本可以用。程序页面访问链接:http://localhost:8090/ecdc/index

2018-05-07

计算机网络课程设计-IP包流量统计

网页动态可视化显示IP包数据,界面相对美观,有开关按钮,可以下载瞬时图片保存,值得下载。编译器是用idea,可以运行,启动后需要请求到访问页面。

2018-04-29

可运行的javaweb网上书城源码

数据库mysql,javaweb,可作为java课程设计作品,作品可以运行调试成功,下载换下编辑器就可以

2017-10-30

空空如也

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

TA关注的人

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