自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 领导想要提拔你,从来看的不是努力,而是希望你有这6点!

而小林呢,他不仅工作认真负责,而且善于沟通,乐于助人,是团队中的“开心果”。更重要的是,小林在工作中展现出了解决问题的能力,能够独立思考,提出有效的解决方案。王经理笑呵呵地听完老张的“委屈”,拍了拍他的肩膀说:“小张啊,你工作努力,领导们都看在眼里。领导都喜欢靠谱的人,交代的事情能按时保质保量完成,遇到问题能及时沟通,不推诿、不扯皮。你有没有发现,公司里那些被领导看重、提拔的人,往往不是最努力的,也不是最“卷”的?高情商的人,懂得换位思考,能够体察他人的情绪,更容易获得他人的信任和支持。

2024-07-17 16:11:40 301

原创 在单位,领导不说,但自己得懂的7个道理

朋友打着如意算盘,心想被裁掉也好,正好拿着赔偿金找下家,可那些天天喊着工作没意思的同事,态度突然来了个180度大转变,说自己跟公司已经有感情了,还整天拍领导马屁。看看现在的AI技术,前有强大无比的Chat GPT,后有让人大呼震惊的Sora,如果不具备学习力,恐怕用不了几年,就被层出不穷的新技术、新人踢出局了。把“不是自己”的那部分舍弃掉,你就能看见“自己是谁”了。不是老板或上司苛刻、难伺候,更不是故意跟你过不去,而是你做错事,造成损失,说再多也无济于事,那就把你调走,免得再出什么纰漏和差错。

2024-07-10 08:57:37 1249

原创 真正的向上管理,不是“跪舔”或“拍马屁”,而是做好这5件事!

领导会议上,演讲平平无奇,你非要故作热情,当众拍马屁、吹牛,说领导演讲精彩绝伦,只会让领导更丢脸。聪明人,往往会整理好答案,放上自己的见解,准备好选项,ABCD,让领导去做选择题,而不是问答题。承诺就是预期,领导在你身上能够感受惊喜,发现你是一个潜力无限的人,自然会越发的看重你。主动创造让领导指点你的机会,不仅可以拉近距离,还能借机求教和示好,让领导对你印象更深。多了解领导,和领导沟通,出现在领导的视野里,能够大大增加你上位的概率。另外,你积极求教,频繁露脸,也是在加深印象,表明你积极工作的态度。

2024-06-05 09:16:05 442

原创 35道必懂的 Linux 运维面试题

能当替用户去访问公网,并且能把访问到的数据缓存到服务器本地,等用户下次再访问相同的资源的时候,代理服务器直接从本地回应给用户,当本地没有的时候,我代替你去访问公网,我接收你的请求,我先在我自已的本地缓存找,如果我本地缓存有,我直接从我本地的缓存里回复你;队列的主要目的是提供路由并保证消息的传递;,会先找本机的 host 文件,再找本地设置的 DNS 服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.

2024-05-08 09:35:23 1441

原创 Spingboot人工智能工程应用框架,你要干的活全部交给它

尽管人工智能有着悠久的历史,但 Java 在该领域的作用相对较小。这主要是由于历史上依赖于用 C/C++ 等语言开发的高效算法,而 Python 则充当访问这些库的桥梁。大多数 ML/AI 工具都是围绕 Python 生态系统构建的。然而,在 OpenAI 的 ChatGPT 等创新的推动下,生成式 AI 的最新进展已经普及了通过 HTTP 与预训练模型的交互。这消除了对 C/C++/Python 库的大部分依赖,并为使用 Java 等编程语言打开了大门。

2024-04-23 09:02:40 1378 1

原创 2024放下手机,用阅读来提升自己,好书推荐

阅读是一种非常有益的学习和提升自我的方式。:《纳瓦尔宝典》、《穷爸爸富爸爸》、《有钱人和你想的不一样》、《智慧投资者》;:《饮食的迷思》、《感恩的奇迹》、《不生气的活法》、《求医不如求己》;:《毛泽东传》、《曾国藩传》、《林徽因传》、《史蒂夫乔布斯传》、;:《影响力》、《少有人走的路》、《刻意练习》、《沉默的大多数》;:《自控力》、《番茄工作法图解》、《暗时间》、《奇特的一生》;:《65种微习惯》、《掌控习惯》、《习惯的力量》、《自律力》;:《复盘》、《只管去做》、《规划最好的一年》、《远见》。

2024-03-26 08:36:28 276

原创 Nginx的反向代理:实现灵活的请求转发和内容缓存

http {server {显得有些复杂和固化。http {server {如果conf的内容过长,还可以进行模块化配置,使用include引用:events {http {server {server {server {server {events {http {server {server {server {server {把下面把一个拆分为多个,每个server可以独立。

2024-02-25 14:11:15 1414

原创 mysql 运行参数优化

4.binlog_format=ROW —— 修改为基于行的复制. 我最近写的另一篇 基于行的复制 ,里面叙述了我真的很喜欢它的原因,因为它可以通过减少资源锁定提高性能. 此外还需要启用两个附加设置: transaction-isolation=READ-COMMITTED and innodb_autoinc_lock_mode = 2.topology )中的所有服务器都必须设置唯一的 server-id.试图设定back_log高于你的操作系统的限制将是无效的。#指定MySQL查询缓冲区的大小。

2024-02-25 14:04:36 2331

原创 Spring Boot+ShardingSphere+MySQL实现分库分表:高效数据库扩展

分库分表是一种数据库水平分割技术,它将一个大型数据库分为多个小型数据库(分库),每个小型数据库包含多个数据表(分表)。这有助于减轻单一数据库的负载压力,提高性能和可伸缩性。ShardingSphere是一款强大的开源数据库中间件,它提供了分库分表、数据分片和负载均衡等功能。通过ShardingSphere,我们可以轻松实现分库分表,使数据库扩展变得更加容易。Spring Boot与ShardingSphere是一个强大的组合,可以帮助您实现分库分表,提高数据库性能和可扩展性。

2024-02-25 14:03:19 1655

原创 微服务架构设计 | 如何设计高性能系统

互联网时代,业务系统的主要特点是用户多、请求量大。尤其在中国这样拥有庞大用户基数的环境下,不用说阿里巴巴、京东这类需要满足双十一大促时每秒几万甚至几十万订单的系统,即使是一些垂直领域的业务系统(如三甲医院的挂号系统)每天也有不小的访问量。在这样的背景下,设计能够承受高并发负载的高性能系统显得尤为重要。本文将从系统性能评估、影响系统性能的主要因素,以及一些具体的设计模式等方面介绍如何设计高性能系统。

2024-02-25 14:01:28 940

原创 MyBatis批量插入数据从80s到1s优化

以上就是这次批量插入场景问题下如何通过 JDBC 和 MyBatis / MyBatis Plus 框架实现批量插入的整个优化过程了。通过上面的讲解,相信大家应该也可以看出来哪些实现方式是有着良好的效率和性能的。使用 JDBC 推荐使用自己实现批处理方式。使用 MyBatis / MyBaits Plus 推荐使用自己实现的批处理方式或 MP 自带的批处理方法。记得使用批处理方式进行批量插入一定要带上 rewriteBatchedStatements=true,这点很重要。

2024-02-02 13:43:59 1105

原创 Nginx限流配置详解

限流(Rate Limitting)是服务降级的一种方式,通过限制系统的输入和输出流量以达到保护系统的目的。比如我们的网站暴露在公网环境中,除了用户的正常访问,网络爬虫、恶意攻击或者大促等突发流量都可能都会对系统造成压力,如果这种压力超出了服务器的处理能力,会造成响应过慢甚至系统崩溃的问题。因此,当并发请求数过大时,我们通过限制一部分请求(比如限制同一IP的频繁请求)来保证服务器可以正确响应另一部分的请求。nginx 提供了两种限流方式,一种是限制请求速率,一种是限制连接数量。

2024-02-02 13:43:15 1611

原创 Linux运维工程师面试题汇总

①PV - 物理卷:物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。②VG - 卷组:卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。③LV - 逻辑卷:逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。①添加磁盘。

2023-12-20 13:18:43 1354

原创 <优化接口设计的思路>:接口的权限控制

我们在做系统的时候,只要这个系统里面存在角色和权限相关的业务需求,那么接口的权限控制肯定必不可少。但是大家一搜接口权限相关的资料,出来的就是整合Shrio、Spring Security等各种框架,然后下面一顿贴配置和代码,看得人云里雾里。实际上接口的权限控制是整个系统权限控制里面很小的一环,没有设计好底层数据结构,是无法做好接口的权限控制的。那么怎么做一个系统的权限控制呢?我认为有以下几步:那么接下来我就按这个流程一一给大家说明权限是怎么做出来的。

2023-12-19 09:00:13 1652

原创 <优化接口设计的思路>:接口安全

某家电商平台上,用户可以通过客户端发起购物请求,并对所选商品进行下单、支付等操作。为了保障系统的安全性和用户隐私,该电商平台采取了一系列安全措施,包括身份认证、请求过程鉴权和访问控制等三个阶段的验证。第一阶段是身份认证,鉴别客户端的身份。这一阶段可以采用多种方式进行身份验证,如HTTP基本认证、Token认证,和OAuth2认证等。在具体实践中,我们可以在客户端请求接口的时候,一并提交用于身份认证的Token信息,接口服务器可以通过相关的算法验证Token合法性并拒绝非法请求。

2023-12-18 08:58:15 1391

原创 <优化接口设计的思路>系列:留下用户调用接口的痕迹

接口设计是整个系统设计中非常重要的一环,其中包括限流、权限、入参出参、切面等方面。设计一个好的接口可以帮助我们省去很多不必要的麻烦,从而提升整个系统的稳定性和可扩展性。作为接口设计经验分享的第三篇,我想分享一下如何在用户使用过程中留下操作痕迹。在实际开发中,我会采取一些手段来记录用户操作,例如使用日志记录用户行为,或者在数据库中保存用户操作记录。这些痕迹可以帮助我们快速定位和解决问题,同时也可以为后续数据分析和优化提供有价值的参考。

2023-12-13 09:06:29 993

原创 docker-compose.yml文件配置详解

我们可以通过设置一级配置network自定义网络,创建更复杂的网络选项,也可以用来连接已经存在的网络(不是通过compose创建的)每个service 配置下也可以指定networks配置,来指定一级配置的网络。

2023-12-12 08:52:59 4005 1

原创 如果K8s出现问题,你可以从这9个方面排查

在本例中,它在本地 Namespace(default.svc.cluster.local)、所有 Namespace 中的 Service(svc.cluster.local)以及集群(cluster.local)中查找服务。本文档中,我们假定它是 “cluster.local”,但是您的可能不同,这种情况下,您应该在上面的所有命令中更改它。如果成功,那么需要调整您的应用,使用跨命名空间的名称去访问服务,或者,在相同的 Namespace 中运行应用和 Service。

2023-11-20 17:41:40 168

原创 如果K8s出现问题,你可以从这9个方面排查

在本例中,它在本地 Namespace(default.svc.cluster.local)、所有 Namespace 中的 Service(svc.cluster.local)以及集群(cluster.local)中查找服务。本文档中,我们假定它是 “cluster.local”,但是您的可能不同,这种情况下,您应该在上面的所有命令中更改它。如果成功,那么需要调整您的应用,使用跨命名空间的名称去访问服务,或者,在相同的 Namespace 中运行应用和 Service。

2023-11-17 13:47:23 182

原创 三种跨域解决方案:HttpClient、注解、网关

Spring cloud gateway中的filter分为两种类型的 Filter,分别是Gateway Filter和Global Filter。Spring Cloud Gateway作为Spring Cloud生态系统中的网关,目标是替代Netflix Zuul,其 不仅提供统一的路由方式,并且还基于Filer链的方式提供了网关基本的功能,例如:安全、监 控/埋点、限流等。比如说发送的异步请求是不同的两个源,就比如是不同的的两个端口或者不同的两个协议或者不同的域名。saveHospital方法。

2023-11-16 09:13:29 444

原创 JVM GC 调优命令看这一篇就够了

然而,代码中存在一个问题是异步打印业务Kafka topic数据,由于数据量较大,大量对象在内存中积压等待打印,最终导致了OOM。因此,在每次Young GC后,Survivor区域无法容纳所有的存活对象,导致它们提前进入老年代。通过调整,我们使得对象在Survivor区经历多次Young GC后,达到一定的年龄阈值,才会被转移到老年代。死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法进行下去。其实,前3个步骤,堆栈信息已经出来啦。

2023-11-16 09:12:12 817

原创 浅析SpringBoot加载配置的6种方式

的路径,将指定路径下的配置文件内容加载到 Environment 中,这样可以通过 @Value 注解或 Environment.getProperty() 方法来获取其中定义的属性值了。默认只限读取properties文件内容,想加载yaml文件内容,可以自定义factory适配器,指定factory具体的使用YamlPropertiesFactoryBean对象只限读取yaml文件,通过 @Value 注解或 Environment.getProperty() 方法来配合着获取其中定义的属性值。

2023-11-16 09:09:38 434

原创 postman导入请求到jmeter进行简单压测,开发同学一学就会

这个事情也是最近做的,因为线上nginx被我换成了openresty,然后接入层服务也做了较大改动,虽然我们这个app(内部办公类)并发不算高,但好歹还是压测一下,上线时心里也稳一点。于是用jmeter简单压测下看看,这里记录一下。这次也就找了几个接口来压:登录接口、登录后获取用户信息接口、登录后写数据的一个接口。

2023-11-16 09:08:39 1275 3

原创 服务器常见问题排查(一)—cpu占用高、上下文频繁切换、频繁GC

一般而言cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用jstack来分析对应的堆栈情况。

2023-11-13 14:31:30 795

原创 docker服务CPU飙高排查

Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包成一个独立的容器,以保证应用程序在不同的环境中都能够运行。然而,有时我们可能会遇到Docker服务CPU飙高的问题,即Docker服务占用了过多的CPU资源。当Docker服务CPU飙高时,可能会导致其他应用程序无法正常运行,甚至服务器负载过高,导致系统响应变慢。因此,我们需要及时排查和解决这个问题。

2023-10-25 09:01:29 3328

原创 提升代码重用性:模板设计模式在实际项目中的应用

模板模式是一种通过封装算法框架和提供可变的实现细节,来实现代码重用的设计模式。它能够简化代码的编写和维护,并且使得系统更易于扩展和修改。通过合理地使用模板模式,我们可以将通用的解决方法抽象出来,提高开发效率,减少重复代码的出现。

2023-10-18 08:50:16 339

原创 shell中实用eval命令和安全问题

eval命令非常强大,但也非常容易被滥用。它会导致代码被解析两次而不是一次。这意味着,如果你的代码中包含变量引用,shell解析器将评估该变量的内容。如果变量包含一个shell命令,shell可能会运行该命令,无论你是否希望运行它。这可能会导致意外的结果,特别是当变量可以从不受信任的来源(如用户或用户创建的文件)读取时。请注意,eval命令在编程中被广泛认为是危险的。它可以执行任意的Shell代码,包括恶意代码,因此应该谨慎使用。

2023-10-12 09:22:22 817

原创 实现SHELL中的列表和字典效果

很多情况下我们需要有种类型来存储数据,在python中有列表和字典,golang中有切片slice和map,那么在shell中,我们能否实现列表和字典呢,答案是肯定的,下面跟着博哥的示例来一步步掌握在shell中实现列表和字典的方法吧。

2023-10-12 09:13:07 1043

原创 这些负载均衡都解决哪些问题?服务、网关、NGINX?

服务的负载均衡主要解决微服务实例之间的负载均衡问题,确保每个实例都能够处理适当的请求量。网关的负载均衡主要解决外部请求的负载均衡问题,将请求路由到适当的微服务实例,提供统一的入口点。Nginx的负载均衡主要解决后端服务器的负载均衡问题,将请求分发到多个后端服务器,以平衡负载和提高系统的性能和可靠性。综合使用这些负载均衡方式可以实现整个微服务架构的负载均衡和高可用性,确保系统能够处理大量的请求并保持稳定运行。

2023-10-12 09:09:59 853 1

原创 解密Shell脚本中的EOF:编写高效、可读性强的代码!

在Shell脚本中,EOF(End of File)是一个特殊标记,用于指示一段文本的开始和结束位置。但它并不是Shell脚本中的关键字或保留字。您可以自由选择EOF之前的标记,只需确保开始和结束标记匹配即可。基本上<<EOF告诉 shell 您将输入多行字符串,直到“标记” EOF。您可以根据需要命名此标签,通常是EOF或STOP。

2023-10-12 09:09:10 746

原创 慢 SQL 的致胜法宝

大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什么思路去解决是我们必须要知道的。本文主要介绍对于慢SQL的排查、解决思路,通过一个个实际的例子深入分析总结,以便更快更准确的定位并解决问题。

2023-10-09 18:32:28 135

原创 12个微服务架构模式最佳实践

微服务架构是一种软件开发技术,它将大型应用程序分解为更小的、可管理的、独立的服务。每个服务负责特定的功能,并通过明确定义的 API 与其他服务进行通信。微服务架构有助于实现软件系统更好的可扩展性、可维护性和灵活性。接下来,我们将介绍微服务架构12种模式。

2023-09-11 08:28:35 787

原创 超经典 Linux 运维巡检脚本及示例

inux 系统日常巡检脚本,巡检内容包含了:磁盘、内存、CPU、进程、文件更改、用户登录等一系列的操作,直接用就行了。报告以邮件发送到邮箱,在 log 下生成巡检报告。

2023-09-11 08:27:16 1829

原创 JVM常用调优策略

调优之前首先我们要知道怎样才算是“优”,不能笼统的说我的程序性能很好,所以就需要有一个具体的指标来衡量性能情况,而在JVM里面衡量性能两个指标分别“吞吐量”和“停顿时间”。

2023-09-08 17:20:34 399

原创 Nginx:你必须了解的Web服务器与反向代理

Nginx是一款高性能的开源Web服务器,同时也是一个强大的反向代理服务器。它的主要作用是处理客户端请求并将其传递给后端服务器,然后将后端服务器的响应返回给客户端。1. Web服务器Nginx可以充当传统Web服务器,负责处理HTTP请求并提供静态内容,例如HTML文件、CSS、JavaScript、图像等。这意味着它可以托管网站并向用户提供网页内容。实际上,Nginx以其卓越的性能和稳定性而闻名,适用于高流量的网站,例如互联网巨头使用的一些大型网站。

2023-09-07 18:28:19 467

原创 MySql系列-常用命令

命令不区分大小写。

2023-09-04 08:59:43 285

原创 MLOps:掌握机器学习部署:Docker、Kubernetes、Helm 现代 Web 框架

定义:Docker是一个允许开发人员将应用程序及其依赖项打包到容器中的平台。容器化:与传统虚拟化不同,Docker容器共享主机系统的操作系统内核,而不是包含自己的操作系统。这使得它们轻便且快速。可移植性:容器确保应用程序在多个环境中一致运行,从开发人员的本地计算机到各种生产设置。Streamlit 是专为机器学习和数据科学项目打造的开源应用程序框架。只需几行 Python 代码,您就可以快速将数据脚本转换为交互式 Web 应用程序,而无需任何 HTML、CSS 或 JavaScript 知识。

2023-09-04 08:58:30 991

原创 100个Java工具类之60:栈类Stack

栈类Stack,包名是java.util.Stack,继承java.util.Vector类。栈是一种后进先出的数据结构,允许数据的动态插入和删除。下面是栈类Stack的几个主要用法。

2023-09-04 08:56:31 329

原创 100个Java工具类之61:队列类Queue

Queue类,队列,是一种数据结构,遵循先进先出的原则。下面通过实例能更好地理解Queue。

2023-09-04 08:54:23 877

原创 跑AI大模型的K8s与普通K8s有什么不同

得益于AI开始火的时候,云原生体系已经普及,所以当前绝大多数的AI底层都是基于Kubernetes集群进行的资源管理(不像大数据,早期大量使用Yarn进行资源管理,在云原生普及后,还得面临Spark on K8s这种云原生改造)。都知道云原生已经是Kubernetes的天下了,各大领域(大数据、互联网,基因、制药、时空、遥感、金融、游戏等)早已纷纷采纳。那在面对大模型AI火热的当下,咱们从程序员三大件“计算、存储、网络”出发,一起看看这种跑大模型AI的K8s与普通的K8s有什么区别?

2023-09-04 08:51:45 1089

空空如也

空空如也

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

TA关注的人

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