自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 gateway(源码分析)

gateway1. 什么是gateway官网解释: 该项目提供了一个在Spring生态系统之上构建的API网关,包括:Spring 5,Spring Boot 2和Project Reactor。Spring Cloud Gateway旨在提供一种简单而有效的方法来路由到API,并为它们提供跨领域的关注,例如:安全性,监视/指标和弹性。为什么使用gateway1.网关作为请求的入口,可以提供限流,权限校验等一系列功能2.提供路由分发功能2. 工作原理图3. 简单使用3.1 引入jar包&

2020-07-20 22:51:03 2881

原创 阿里云ECS U实例评测

u1系列是一个介于5代/6代之间的企业级产品,提供了多种实例规格,可以满足中小企业的大部分应用场景的产品。

2023-06-29 10:35:45 736

原创 python使用opencv换照片底色

第一次使用opencv,遇到了很多问题,记录一下由于pip使用了代理而电脑代理没开,导致pip install opencv-python时一直报错连接不上代理解决办法:安装完成后在交互模式可以正常使用输入python不报错就说明正常安装了但是在jupyter notebook 中引入一直报错,找不到cv2模块经过百度后,测试如下在交互模式下输入如下命令查看python环境这是anaconda下的一个虚拟环境,没有问题再在jupyter notebook下输入同样的命令,查看python环境,发现竟然不

2022-07-07 19:24:14 1971 1

原创 mysql左关联不走索引的一个问题的排查过程及思考

今天遇到一个mysql查询不走索引的情况,记录一下排查过程及解决办法Mysql版本 5.6 5.7错误情况两表关联,两表数据量不超过10w,查询速度极慢,基本约等于查不出来.测试:表1 user表 数据量10w表2 user_role表 数据量10w查询语句select * from user_role a left join user b on a.user_no = b.user_no排查过程查看执行过程发现a表并没有走索引,全表扫描而b表的Extra里的信息显示使用了BNL

2022-03-23 22:26:36 3079

原创 赢在CSDN-CSDN写作之路

其实,作为一个开发者我更擅长的是写技术类的文章.像这类总结性的文字还是写的不太好,不过…我想挑战一下自己的软肋0.0起源其实国内开发者应该都知道csdn的,百度搜索某个问题的答案,大概率出现的都是csdn,换句话说国内开发者应该都在csdn上搜索过问题的解决方案,我也不例外,也正是这个原因才认识的csdn.但是在开始的一到两年里都是以搜索问题答案和看一些文章为主,并没有萌生自己写文章的想法,直到某天在csdn的一篇文章里,忘了是哪个大佬写的,大概意思是建议开发者在进入工作后一年到两年时,必须开始写自己

2022-03-03 22:28:41 221

原创 阿里云ACK初体验

1.概述ACK官网文档 https://help.aliyun.com/document_detail/86737.html阿里云容器服务Kubernetes版(Alibaba Cloud Container Service for Kubernetes,简称容器服务ACK)是全球首批通过Kubernetes一致性认证的服务平台,提供高性能的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理,让您轻松高效地在云端运行Kubernetes容器化应用。个人理解,ACK就是阿里在k8s

2022-02-28 22:29:48 4681

原创 kafka顺序消费遇到的一个问题和心得

记录一下最近遇到的一个kafka的问题,kafka用的比较少,理解不深出现的问题,特此记录问题描述业务要求: kafka上的消息要求顺序消费,且为了保证顺序在生产消息时也是顺序的投放到一个分区中.一开始写的很简单,既然一个分区还要求顺序消费,那我就单线程消费呗,一个消费者消费一个分区单线程肯定是顺序的,刚开始也确实没有问题,但是运行一段时间后出现了问题.接入生产环境数据后,kafka数据量突然上升一个量级,大概每天有接近1千万左右的数据,由于我们的消费者里还有一些业务逻辑,所以其实每条数据消费速度并

2022-02-23 19:38:04 842

原创 RDS的购买使用

RDS: 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于阿里云分布式文件系统和SSD盘高性能存储,RDS支持MySQL、SQL Server、PostgreSQL和MariaDB TX引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。RDS其实就是云上的数据库,支持多种关系型数据库.以Mysql为例说明RDS的购买和使用购买https://www.aliyun.com/pro

2022-02-19 12:20:13 991

原创 ElasticSearch几个简单基础的概念

1.安装参考CSDN es官方博客 https://elasticstack.blog.csdn.net/article/details/99413578官网下载,启动即可测试安装:postman测试:http://192.168.164.132:9200/返回如下图所示,安装成功2.概念2.1 Cluster集群,有一个或多个节点组成,默认情况下启动的es有一个cluster的集群,参照Es的配置文件elasticsearch.yml如下如所示:PostMan查询集群状态Get ht

2022-02-15 20:04:28 871

原创 机器学习入门概述及基本知识

1.机器学习简介机器学习: 不直接针对问题进行编程的情况下,赋予计算机学习能力的一个研究领域针对某类任务T和性能度量P,如果一个计算机程序T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E学习2.常见算法2.1 有监督算法样本数据中有结果标记分类按原理分基于统计 贝叶斯分类基于规则 决策树算法基于神经网络 神经网络算法基于距离 KNN(K最近邻)常用评估指标精确率 预测结果与实际结果的比例召回率 预测结果中某类结果的正确覆盖率F1-Score 统

2022-02-14 21:12:21 1718

原创 VM深入学习(二十五)-Class文件概述

1. 概述字节码文件是Java虚拟机跨平台/跨语言的基础.Java虚拟机只与字节码文件绑定,至于字节码文件的源代码是否是Java代码编写就不是JVM考虑的问题了,这也是JVM的强大之处.​字节码的生成由前端编译器生成,前端编译器可以是多种语言的编译器,将源代码编译为符合JVM规范的class文件,交由JVM解释执行.以Java为例,jdk中就包含了可以编译java源码的编译器,我们可以使用javac来将一个java源代码文件编译为class文件.​而通过对class文件的详细了解,我们可以看到

2022-02-13 09:43:50 444

原创 leecode刷题日记(二)-罗马数字转换

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。​通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等

2022-02-09 16:31:34 159

原创 leecode刷题日记(一)-回文数的判断

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。​回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。示例

2022-02-08 16:22:40 5560

原创 Flink入门学习

Flink学习官网: https://flink.apache.org/1. Flink简介Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform com

2022-01-31 22:25:25 2083

原创 Linux磁盘管理相关命令

记录一下磁盘管理命令​1. df查看某个目录下文件系统的磁盘使用情况df [参数] [目录]1.2 参数参数描述-a列出所有文件系统-k以k为单位返回容量-m以m为单位返回容量-h自适应,以G/M/K为单位返回容量-H以1M=1000k取代1M=1024k计算容量-T显示文件类型-i显示inode信息inode: http://www.ruanyifeng.com/blog/2011/12/inode.

2022-01-27 22:51:39 2642

原创 Linux系统管理相关命令

记录linux系统管理相关命令1. echo在终端输出字符串字符串可以为系统变量(包括临时变量)echo [要输出的字符串/变量]1.1 示例# 输出字符串echo hhhh# 输出系统变量PATHecho $PATH还可以通过**>**直接把输出的结果写入文件echo hello world > test.txtecho 还可以与命令结合,比如pwd命令显示当前工作目录,可以与echo结合输出到一个文件echo $(pwd) > location.txt

2022-01-27 22:49:36 2006

原创 Linux文本操作相关命令

1. Vim编辑器1.1 安装Vimyum install vim -y1.2 vim模式vim编辑器操作模式分为三种,分别针对不同的操作场景操作模式为命令模式,输出模式和底线命令模式1.2.1 命令模式(Command Mode)使用vim编辑文件的时候,默认就是命令模式从其他模式切换到命令模式使用 **ESC **按键在此模式下可以使用vim的命令来对文件进行快速操作记录一下常用的命令:命令描述gg移动到文件顶部第一行G移动到文件底部最后一行d

2022-01-27 22:47:05 1216

原创 JVM深入学习(二十四)-GC日志

垃圾回收的时候可以输出垃圾回收的详细信息,帮助我们分析垃圾回收的具体内容,了解一下gc日志的相关内容​1. 输出GC日志的相关参数1.1 输出GC过程日志-XX:+PringGC输出格式[GC (Allocation Failure) 2073K->784K(98304K), 0.0006580 secs]GC: gc的类型 GC表示新生代gc FullGC表示新生代/老年代/方法去Allocation Failure: 出现gc操作的原因,比如这个原因就是分配失败,就是分配

2022-01-20 23:03:58 399

原创 JVM深入学习(二十三)-下一代垃圾回收器

1. ShenandoahRedHat发布于OpenJdk上的一款低延迟垃圾回收器.网址: https://wiki.openjdk.java.net/display/shenandoah/Main注: 只在OpenJdk中存在,不在Oracle官方版本中发布.且根据Shenandoah官方信息,目前只在jdk8/11/17中支持,其他jdk版本都已经停止维护​Shenandoah的特性:Shenandoah is the low pause time garbage collector t

2022-01-20 23:02:07 1056

原创 Istio的流控

Istio可以实现负载均衡/路由/故障注入等多种流控功能

2022-01-20 23:00:21 262

原创 JVM深入学习(二十二)-7种垃圾回收器总结

学习完了7种垃圾回收器之后,总结一下为啥是7种?SerialSerial OldParaNewParallel ScavengeParallel OldCMSG1共7种,其中主要学习的是Parallel + CMS +G1​垃圾回收器并行/串行/并发分类针对回收位置回收算法主要思想适用场景Serial串行新生代复制算法低停顿时间硬件资源匮乏,单核cpu情况下Serial Old串行老年代标记-压缩算法低停顿时间硬件资源匮乏,单核cp

2022-01-19 21:53:38 340

原创 JVM深入学习(二十一)-主流垃圾回收器G1

G1垃圾回收器1.1 概述G1(Garbage First) 是一款并行回收的,新生代/老年代都回收的全功能垃圾回收器G1的思想是区域分代化,垃圾优先区域分代化: 将堆内存分为一个一个的region,每个region可以是物理上不连续的空间,G1对region进行追踪,衡量每个region回收后的价值和回收所需时间(其实就是region回收的效率,回收后能清除较多空间的region优先级更高)垃圾优先: 由于G1对垃圾回收的效率更加敏感,因此称G1是垃圾优先​G1的出现基于现代计算机资源的升级

2022-01-19 21:53:04 1224

原创 JVM深入学习(二十)-开创并发回收的CMS垃圾回收器

CMS(Concurrent-Mark-Sweep)垃圾回收器1.1 概述CMS垃圾回收器在jdk1.5时诞生,在jdk的历史上有划时代的意义,因为他是第一个并发垃圾回收器,支持垃圾回收线程和用户线程交替执行,从而达到低延迟的目的.因此,CMS的目标和适用场景就是低延迟,与Parallel是两个方向​CMS是针对老年代回收垃圾回收器,但是因为底层框架原因,他只能与Serial/ParNew组合使用,并不能与Parallel Scavenge组合使用.CMS使用**标记-清除算法,**同时存在ST

2022-01-19 21:51:23 596 2

原创 stio简介及基于阿里云ACK安装Istio

Istio就是Service Mesh的落地实现.​1. Istio的功能负载均衡,服务发现故障恢复,指标收集和监控A/B测试,灰度发布限流,访问控制和端到端认证2. Istio的架构架构图:数据平面: 数据平面由一组sidecar方式部署的智能代理(Envoy)节点组成,与每一个微服务节点共存,只负责工作可以看到架构图上是Proxy,并不是Envoy, 其实Proxy是在Envoy的基础上包裹了一层的代理层,因为Envoy是使用C++编写的代理,但是Istio大部分都是使用G

2022-01-18 23:28:25 3850

原创 JVM深入学习(十九)-进入历史的三种垃圾回收器

1. Serial垃圾回收器1.1 概述上文中已经提到过Serial垃圾回收器是最早期的垃圾回收器,是单线程的Serial垃圾回收器主要针对新生代的回收,回收算法使用复制算法,单线程就是串行回收,具有STW机制同时Serial也提供了针对老年代的Serial Old垃圾回收器,同样是单线程的,回收算法使用**标记-压缩算法,**同样具有STW机制.​对于Serial Old当jvm是client模式的时候,Serial Old是默认的老年代垃圾回收器.当jvm是server模式的时候,Se

2022-01-18 23:24:43 176

原创 服务网格(Service Mesh)是什么?

1. Service Mesh是什么(What)Service Mesh中文含义服务网格,是一种微服务网络层治理方案.服务网格将微服务中与网络相关的部分抽象出来,形成一个应用层的抽象网络层,专门负责微服务的网络治理​2. Service Mesh解决了什么问题(Why)简而言之,Service Mesh解决的就是微服务中所有的网络问题.​没有Service Mesh之前,微服务之间的通信依赖于各种框架自身的实现:比如:注册中心有注册中心的通信框架;负载均衡有负载均衡的实现逻辑;限流熔断

2022-01-18 23:22:36 1894

原创 JVM深入学习(十八)-如何查询当前jvm使用的垃圾回收器

查看当前jdk使用的垃圾回收器方法有两种:​使用jvm参数方式运行程序的时候加上jvm参数 -XX:+PrintCommandLineFlags 来打印使用的命令行参数,其中就包含了垃圾回收器的类型​-XX:+PrintCommandLineFlags例子:在运行程序启动参数里添加如上参数:运行结果:可以看到jdk17用的是G1垃圾回收器​使用命令行使用jps+jinfo也可以测试当前jvm的垃圾回收器​# 查看当前运行java线程jps# 找到运行的线程使用jinf

2022-01-17 17:44:49 2801

原创 JVM深入学习(十七)-垃圾回收器类型及概述

jvm在长时间的演变过程中出现了很多垃圾回收器,在这里总结一下​1. 7种经典垃圾回收器串行垃圾回收器: Serial,Serial Old(回收老年代)并行垃圾回收器: ParNew, Parallel Scavenge, Parallel Old(回收老年代)并发垃圾回收器: CMS,G1​2. 垃圾回收器的演变过程1999年jdk1.3 第一款垃圾回收器 Serial串行垃圾回收器, ParNew是Serial的多线程版本2002年jdk1.4 发布 Parallel 和 CMS(

2022-01-17 17:43:50 505

原创 JVM深入学习(十六)-垃圾回收器的分类和性能指标

1. 垃圾回收器的分类1.1 按垃圾回收线程分按垃圾回收的线程分,分为串行垃圾回收器(Serial)和并行垃圾回收器(Parallel)1.1.1 串行垃圾回收器(Serial Collector)顾名思义,串行垃圾回收器是只有一个垃圾回收线程工作的垃圾回收器.串行垃圾回收器的应用场景就是使用 jvm Client模式(64位jdk默认Server)的时候,会使用串行垃圾回收器.当jvm运行的环境处理器资源较少时,会使用此垃圾回收器,并且此时相较于并行垃圾回收器,效率更高.​1.1.2 并行

2022-01-17 17:42:39 455

原创 JVM深入学习(十五)-深入了解java引用

1. java中的引用(Reference)引用是java中堆和栈的桥梁,想要访问堆中的对象,就必须通过引用来访问(8个基本数据类型除外)在垃圾回收中,如果一个对象仍然被GcRoots引用,那么就不会被回收(强引用),这也不是绝对的,主要是根据引用类型来决定的​在jvm中也有对于的抽象类 Referencepackage java.lang.ref;import jdk.internal.vm.annotation.ForceInline;import jdk.internal.vm.ann

2022-01-15 23:15:28 182

原创 JVM深入学习(十四)-JVM中垃圾回收进阶概念

1. 内存溢出和内存泄漏问题1.1 内存溢出内存空间不足,且垃圾回收器也无法提供更多的内存,就会出现内存溢出情况内存溢出多出现于堆空间,很少出现于虚拟机栈,但是栈也会出现Strack Overflow正常情况下,各年龄代的垃圾回收正常回收对象已经足够,当内存空间实在不足时,触发一次FullGC,回收大量内存,保证程序正常,但是当内存占用的速度非常快的时候,超过垃圾回收的速度的时候就会出现OOM​1.1.1 内存空间不足内存空间不足可以分为两种情况堆内存初始化的内存较小 -Xms -Xmx分

2022-01-13 22:33:44 108

原创 System.gc()做了什么?

1. System.gc()System.gc()我们都知道是手动垃圾回收,这点无需多说,今天我们来了解一下System.gc()是怎么进行垃圾回收的。System.gc()内部调用了 Runtime.getRuntiompublic static void gc() { Runtime.getRuntime().gc();}在往深一层则是本地方法了public native void gc();System.gc()会执行FullGC,对新生代和老年代进行回收注意: 此时垃圾回

2022-01-13 22:32:06 558

原创 阿里云无影云电脑初体验及引发的思考

有幸尝试阿里无影云电脑,记录下使用过程,并对云电脑进行思考。​无影是什么阿里云无影云桌面( Elastic Desktop Service)的原产品名为弹性云桌面,融合了无影产品技术后更名升级。它可以为您提供易用、安全、高效的云上桌面服务,帮助您快速构建、高效管理桌面办公环境,提供安全、灵活的办公体系。​这是官网解释。个人理解,无影最重要的两个字就是弹性。如果做过开发,了解过k8s相关知识的同学应该立刻就能明白,弹性的意义,弹性的好处就在于能够根据需求动态的分配,从而减少闲置资源,最大化资源利

2022-01-12 00:39:51 1128

原创 AoneFlow和云效快速使用DevOps

今天学习一下git分支管理模型之阿里的AoneFlow模型,以及阿里的云效代码管理平台分支管理模型简介使用过git一段时间之后,开始深入了解git分支管理模型,经过百度学习后,常用的一般有两种分支模型 TrunkBased模型(简称tbd)和目前最常用的GitFlow模型,以及今天学习的阿里分支管理模型AoneFlow.分支管理模型只是一种通用的约定,并不是强制要按照这个模型的管理办法实施,只是针对各种分支管理的情况总结出来的通用的管理办法,每个项目可能根据自身项目的周期和实际情况来指定分支管理模型.

2022-01-10 22:16:03 1824 3

原创 Netty的简单使用和理解

Netty 学习笔记1.Netty 介绍和应用场景1.1 介绍Netty 是jboss的一个开源框架Netty是一个异步的,基于事件驱动的网络应用框架基于nio1.2 应用场景Rpc 例如dubbo游戏大数据涉及到网络通信的应用都可以使用netty2. i/o模型2.1 介绍bio 同步并阻塞 一个连接对应服务器一个线程 适用于连接数较少的架构 jdk1.4nio 同步非阻塞 服务器一个线程处理多个连接 适用于连接数较多连接时间短 jdk1.4aio(nio.

2022-01-04 20:46:59 764 1

原创 JVM深入学习(十四)-垃圾回收相关算法

1. 标记阶段算法标记阶段主要用于标记垃圾对象. 标记阶段的算法就是区分存活对象和垃圾对象的过程.1.1 引用计数算法简单的说,就是为每一个对象都保存一个整形的引用计数器属性.每当此对象被引用,引用计数器+1,当一个引用失效,引用计数器-1,当计数器=0时,说明此对象无任何引用.​优点:实现简单,对垃圾对象的表示高效快速 就是一个计数器,使用加法减法计算效率高,无延迟 当引用=0时直接回收缺点:单独维护计数器,增加内存开销多次加法减法,增加时间开销无法处理循环引用问题循环引

2021-12-29 22:44:18 257

原创 JVM深入学习(十三)-垃圾回收概念

1. 垃圾的定义什么是垃圾?运行程序中没有任何指针指向的对象​2. 为什么要垃圾回收垃圾不回收的情况下,内存空间迟早会被占用完,影响应用程序的正常运行垃圾回收可以进行内存碎片整理,保证大空间对象的分配3. 早期的垃圾回收在c/c++中都是使用手动垃圾回收的方式进行垃圾回收具体的说: 使用new申请内存,使用delete回收内存​4. Java的内存管理机制java使用自动内存管理的方式来对内存进行操作,内存的分配和回收都由java实现,不用开发人员手动分配及回收.相较于c/c+

2021-12-29 22:43:37 142

原创 JVM深入学习(十二)-从jvm角度看String

1. String的特性定义方式String str = “hello”;String str = “hello”;String声明为final,不可被继承String实现了Serializable接口和Comparable接口String的底层存储结构在jdk1.8之后从char[]变为了byte[]String不可变,String一旦定义,不可修改,修改=重新定义String常量池String pool中不会出现相同的内容,String pool本质上是一个hashtable,j

2021-12-29 22:41:41 318

原创 JVM深入学习(十)-运行时数据区之本地方法接口

本地方法接口就是使用java调用非java代码接口本地方法接口的意思是接口由java语言定义,实现由其他语言实现本地方法接口的作用是为了融合C/C++程序native修饰的方法就是本地方法接口为什么使用Native Method?为了与java外的环境进行交互与操作系统交互,提高执行效率(操作系统底层c/c++)sun公司的解释器使用c实现的...

2021-12-27 21:43:26 520

原创 SpringBoot及SpringCloud配置文件加载分析(源码解读)

SpringBoot版本 2.3.5.RELEASESpringCloud版本 Hoxton.SR9本文只讨论配置文件加载,以bootstrap.yml和application.yml为例,后缀名的加载顺序可以通过源码看到.bootstrap.yml是SpringCloud使用的配置文件,SpringBoot中其实并没有加载bootStrap.yml的默认实现1. 概述SpringBoot加载配置文件的方式是使用了观察者模式,在启动时发出一个事件(ApplicationEnvironmentPre

2021-12-26 22:37:28 1941 1

空空如也

空空如也

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

TA关注的人

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