获得徽章 0
赞了这篇沸点
等我有钱了我要世界上每个地方都种满折耳根和香菜[不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑][不失礼貌的微笑]
展开
小橙子呀于2023-10-27 11:10发布的图片
小橙子呀于2023-10-27 11:10发布的图片
253
#毕业考研还是工作?# nginx\n具体就是一个轻量级以及高性能的web服务软件。\n\nnginx特点\n1、稳定性高。(但不如apache)\n\n2、系统资源消耗比较低。(处理http请求的并发能力较高,单台处理器可以处理3w-5w的并发请求)\n\n注:一般在企业中,为了保存服务器稳定,并发量的设置一般在2w左右。\n\nnginx的主要功能\n1、静态文件服务。(nginx可以直接提供静态文件服务。能够高效处理并响应静态文件的请求。)\n\n2、反向代理。(nginx本身可以作为一个反向代理的服务器。可以把客户端的请求转发给后端多个服务器,实现负载均衡,高可用。可以提高整个集群的性能。)\n\n反向代理:客户端在请求时,沟通代理服务器,会把请求的流量按照轮询算法,转发到后台不同的服务器,实现高可用和负载均衡。\n3、处理动态内容。(nginx处理动态内容很差,但它可以代理请求,发送到后端的动态服务处理,动态服务处理完后,由nginx把动态请求响应给客户端。)\n\n4、可以实现SSL/TLS加密(https的加密方式数字证书验证机制)\n\n5、虚拟主机。(nginx可以在一台服务器上设置多个虚拟主机,同一台服务器上可以有多个域名和站点。)\n\n6、URL重定向。(可以实现灵活的URL重写和重定向。)\n\n7、缓存功能。\n\n8、日志功能。(可以详细的记录请求的信息,包括访问时间,请求路径,IP地址,响应状态。有助于故障排查。)
展开
评论
#毕业考研还是工作?# JVM启动时参数\n-Xms、-Xmx、-Xss、-Xint这系列参数笔者称为 \"JVM启动时参数\" ,为什么这么说呢?因为在JVM启动时会去解析-Xms、-Xmx、-Xss、-Xint这系列参数,解析出来的值会赋值到 \"JVM内部运行时参数\" 实际上JVM内部控制大小使用的是 \"JVM内部运行时参数\" ,所以-Xms、-Xmx、-Xss、-Xint 这系列参数仅仅是一层抽象,因为缩写、很短、很容易记忆,反而 \"JVM内部运行时参数\" 很长不好记忆。
展开
评论
#毕业考研还是工作?# 人们仍然认为 Java 与当今时代相关,这是一种常见的误解。事实上 Java 是一种正在消亡的编程语言。 Java 一直是世界上使用最广泛、最流行的编程语言之一,但它很快就会面临消亡的危险。如今 Java 拥有庞大而活跃的开发者社区,并且仍然用于广泛的应用程序,包括 Web 开发、移动应用程序开发和企业级软件开发,但 Java 能在未来 10 年生存吗?
展开
评论
#2023年中总结# 消费者在消费消息的时候,需要知道从Broker的哪一个消息队列中去获取消息。所以,在消费者端必须要做负载均衡,即Broker端中多个消费队列分配给同一个消费者组中的哪些消费者消费。上篇文章讲解了负载均衡过程,这篇文章讲解消费者负载均衡的策略AllocateMessageQueueStrategy是负载均衡策略接口,有两个方法,分别是allocate和getName,allocate方法是为消费者分配消息队列,getName是获取负载均衡策略的名AllocateMessageQueueStrategy接口有六个子类实现。负载均衡策略说明它们具体说明如下:AllocateMessageQueueAveragely:平均负载策略,将消息队列平均分配给每一个消息者。假设一个topic有8个消息队列,有3个消息者A、B、C,那么采用该负载策略,那么A首先分配3个消息队列,然后B也分配3个消息队列,最后C分配2个消息队列。AllocateMessageQueueAveragelyByCircle:循环平均负载策略,跟平均负载策略不同的是。是将消息队列一个一个的分配给消息者。假设一个topic有8个消息队列,有3个消息者A、B、C。采用循环平均负载策略分配的方法是首先给A、B、C分别分配一个,然后再进行第二轮分配,也是给A、B、C分别再分配一个,这样子还剩下两个就分别分配给A、B。AllocateMessageQueueByConfig:配置负载策略,用户直接给消费者分配配置消息队列。AllocateMessageQueueConsistentHash:一致性哈希负载策略,为每一个消费者创建多个虚拟的节点,将虚拟节点连成一个环,这个环就是一致性哈希环,然后将消息队列进行哈希计算得到哈希值,通过哈希值找到距离一致性哈希环顺时针方向最近的那个虚拟节点,此时就可以通过虚拟节点获取到真实的消费者了,就将这个消息队列分配给这个消息者。
展开
评论
#与A-SOUL一起成为更好的自己# Mysql数据一致性与处理并发访问处理:隔离级别,锁策略与MVCC
莫念Program
2023-07-03 19:30
10
基础概念
脏读 一个事务中访问到了另外一个事务未提交的数据
不可重复读 一个事务内根据同一个条件对行记录进行多次查询,返回的结果不一致
幻读 同一个事务内多次查询返回的结果集不一样(增加了或者减少)
隔离级别
隔离级别 描述 锁
读未提交(read uncommit) 一个事务还没提交时,它做的变更就能被别的事务看到 任何操作都不会加锁
读提交(read commit) 一个事务提交之后,它做的变更才会被其他事务看到 在RC级别中,数据的读取都是不加锁的,但是数据的写入、修改和删除是需要加锁的
可重复读(repeatable read) 一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的 读操作不需要加锁,而写操作需要加锁。
串行化读(serializable): 当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。 “写”会加“写锁”,“读”会加“读锁”

隔离级别 脏读 不可重复读 幻读
读未提交(read uncommit) 可能 可能 可能
读提交(read commit) 不可能 可能 可能
可重复读(repeatable read) 不可能 不可能(MVCC实现) 不可能(用next-key lock 保证)
串行化读(serializable) 不可能 不可能 不可能
mysql隔离级别有两个作用域,一个是当前会话隔离级别,另一个是系统隔离级别。
读取数据时,数据库会创建视图,访问的时候以视图的逻辑结果为准
隔离级别 视图
读未提交(read uncommit) 直接返回记录上的最新值,没有视图概念
读提交(read commit) 视图是在每个 SQL 语句开始执行的时候创建的
可重复读(repeatable read) 视图是在事务启动时创建的,整个事务存在期间都用这个视图
串行化读(serializable) 直接用加锁的方式来避免并行访问。
展开
评论
#与A-SOUL一起成为更好的自己# ptime命令用于显示系统的负载情况和运行时间,要使用uptime命令查看系统的负载情况,只需在终端中输入uptime即可。
[root@svr01]$ uptime
21:27:44 up 207 days, 11:15, 1 user, load average: 26.45, 16.76, 7.50

在输出结果中,分别表示最近1分钟、5分钟和15分钟的平均负载。
系统负载是指在某个特定时间范围内正在使用或等待CPU资源的进程数量。下面是对不同负载范围的解释:

如果系统平均负载小于等于3,表示系统性能良好,可以正常运行。
如果系统平均负载小于等于4,表示系统性能还可以,可以接受一些额外的负载。
如果系统平均负载大于5,表示系统负载过重,可能会影响系统的性能并导致严重的问题,此时考虑扩容,例如增加CPU核心数量。

作者:洛神灬殇
链接:juejin.cn
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
展开
评论
#与A-SOUL一起成为更好的自己# DefaultRequestProcessor继承自NettyRequestProcessor:处理各种客户端的请求,如果请求类型是为REGISTER_BROKER,则将请求转发到RouteInfoManager#regiesterBroker,主要是服务器端 或者客户端或者broker发送心跳

作者:Emanon
链接:juejin.cn
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
展开
评论
#与A-SOUL一起成为更好的自己# 我们拿到一个数组,如果想使用归并排序,应该怎么做呢?首先我们将数组从中间切分,分成左右两个部分,然后对左半部分和右半部分进行排序,两边部分又可以继续拆分,直至子数组中只剩下一个数据位置。
然后就要将拆分的子数组进行合并,合并的时候会涉及到两个数据进行比较,然后按照大小进行排序,以此往上进行合并。

作者:花哥编程
链接:juejin.cn
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
展开
评论
#挑战每日一条沸点# 标记-清除算法会带来两个明显的问题:

效率问题: 执行效率不稳定,如果堆中包含大量对象,而且其中大部分是需要被回收的,这时就必须进行大量的标记和清除的动作,导致标记和清除两个过程的执行效率随着对象数量的增长而降低,也就是执行效率和对象数量成反比。
空间问题:内存空间的碎片化问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致当程序运行过程中需要分配较大对象时,因无法找到足够的连续内存而不得已提前触发另一次垃圾收集动作。

(标记清除好比将地上的垃圾一个个捡起后再扔掉)
展开
评论
#与A-SOUL一起成为更好的自己# BeanPostProcessor 的设计目标主要是提供一种扩展机制,让开发者可以在 Spring Bean 的初始化阶段进行自定义操作。这种设计理念主要体现了 Spring 的一种重要原则,即 “开放封闭原则”。开放封闭原则强调软件实体(类、模块、函数等等)应该对于扩展是开放的,对于修改是封闭的。在这里,Spring 容器对于 Bean 的创建、初始化、销毁等生命周期进行了管理,但同时开放了 BeanPostProcessor 这种扩展点,让开发者可以在不修改 Spring 源码的情况下,实现对 Spring Bean 生命周期的自定义操作,这种设计理念大大提升了 Spring 的灵活性和可扩展性。
BeanPostProcessor 不是 Spring Bean 生命周期的一部分,但它是在 Spring Bean 生命周期中起重要作用的组件。
展开
评论
#挑战每日一条沸点# 切片本质是一个数组片段的描述,包括了数组的指针,这个片段的长度和容量(不改变内存分配情况下的最大长度)


切片操作并不复制切片指向的元素,创建一个新的切片会复用原来切片的底层数组,因此切片操作是非常高效的


切片有三个属性,指针(ptr)、长度(len) 和容量(cap)。append 时有两种场景:

当 append 之后的长度小于等于 cap,将会直接利用原底层数组剩余的空间
当 append 后的长度大于 cap 时,则会分配一块更大的区域来容纳新的底层数组



因此,为了避免内存发生拷贝,如果能够知道最终的切片的大小,预先设置 cap 的值能够获得最好的性能
展开
评论
#高校食堂大赏# 几种常见错误设计。

1. 固定窗口
有人设计了一个在每分钟内只允许访问1000次的限流方案,如下图01:00s-02:00s之间只允许访问1000次,这种设计最大的问题在于,请求可能在01:59s-02:00s之间被请求1000次,02:00s-02:01s之间被请求了1000次,这种情况下01:59s-02:01s间隔0.02s之间被请求2000次,很显然这种设计是错误的。

jm36ts

2. 缓存时间更新错误
我在研究这个问题的时候,发现网上有一种很常见的方式来进行限流,思路是基于redis,每次有用户的request进来,就会去以用户的ip和request的url为key去判断访问次数是否超标,如果有就返回错误,否则就把redis中的key对应的value加1,并重新设置key的过期时间为用户指定的访问周期。
展开
评论
#挑战每日一条沸点# 二十世纪六十年代之前,网络的概念主要用于电话通信,一次通话中双方之间需要建立一条线路(最初是一条物理线路,随着科技的发展,电话通信中的物理线路逐渐演变为电路交换网络。电路交换网络通过自动交换机实现电话之间的连接,从而避免了需要物理线路直接连接的限制),这条线路为用户提供一定的贷带宽或容量,以便传输信息。
二十世纪六十年代出现的一个重要概念——分组交换思想。分组交换中,包含一定字节数的数字信息“块”(分组)独立通过网络,在传输过程中可以在进行组合然后分解——(多路)复用。分组在到达目的地过程中会在交换设备之间传输,并且路径可变。这样做有两个优点:网络更有弹性;基于统计复用可以更好的利用网络链路和交换设备。
展开
评论
#每日快讯# Spring Web MVC的核心思想是将应用程序的逻辑分为三个部分:模型(Model)、视图(View)和控制器(Controller)。模型负责处理数据,视图负责渲染数据并呈现给用户,控制器负责处理用户请求并将结果传递给视图进行呈现。这种分离使得应用程序的不同部分可以独立地进行开发和维护,提高了代码的可重用性和可维护性。
Spring Web MVC还提供了许多有用的功能,例如数据绑定、表单验证、文件上传和国际化支持等。这些功能可以帮助我们更加高效地开发Web应用程序,提高开发效率。
总之,Spring Web MVC是一种非常有用的Web框架,它能够帮助我们更加高效地开发Web应用程序,简化开发过程,提高代码的可重用性和可维护性。
展开
评论
#挑战每日一条沸点# PowerShell获取当前目录文件夹路径path的方法
($pwd).Path
($pwd).Path
powershell复制代码($pwd).Path

(Get-Location).path
(Get-Location).path
powershell复制代码(Get-Location).path

(Resolve-Path .).path
(Resolve-Path .).path
powershell复制代码(Resolve-Path .).path

(gi .).FullName
(gi .).FullName
powershell复制代码(gi .).FullName
展开
评论
#2023年中总结#
利用漏桶算法对请求进行限流
ates:
- Path=/order/**
filters:
- name:RequestRateLimiter
args:
#使用SpEL从容器中获取对象
key-resolver:'#@pathKeyResolver}'
#令牌桶每秒填充平均速率
redis-rate-limiter.replenishRate:1
#令牌桶的上限
redis-rate-limiter.burstCapacity:3


key-resolver:定义限流对像(ip、路径、参数),需代码实现,使用 spel 表达式获取
redis-rate-limiter.replenishRate:令牌桶每秒填充平均速率
redis-rate-limiter.burstCapacity:令牌桶总容量。
展开
评论
#挑战每日一条沸点# 优化服务器负载对于确保运行在 Kubernetes 上的 Golang 应用程序的高性能和可扩展性至关重要。随着企业越来越多地采用容器化的方式和 Kubernetes 来部署和管理应用程序,采取减少服务器负载的最佳实践势在必行,进而达到最佳的资源利用效率、成本效益并改善用户体验。

运行 Golang 应用程序的多个容器可以放在一个 Kubernetes 集群内,并部署在多个节点上。每个容器可以使用 CPU、内存以及存储等系统资源。如果这些资源没有被高效地管理起来,可能会导致服务器负载不断增加,从而降低性能并增加支出。

因此,针对 Kubernetes 的 Golang 应用优化对于完成有效的资源利用、降低服务器负载以及保证应用在生产环境中顺利运行至关重要。

在本文中,我们将研究在 Kubernetes 上优化 Golang 应用的最佳方法,重点是降低服务器负载。我们会讨论一些方法,包括用 readiness 和 liveness 探针进行监控,利用弹性伸缩等功能来优化资源利用。

通过采取这些最佳实践,可以提高在 Kubernetes 上运行的 Golang 应用的性能和可扩展性,这将改善用户体验、节约成本,并提升运维效率。
展开
评论
#甜粽还是咸粽# 虽然写了很久的CRUD,但是依旧觉得写好CRUD是一件非常难且麻烦的事情,以下的情况在开发过程中应该都遇到过:

SQL的编写需要细心,写错了SQL字段或者表名称,修改完要重启(几分钟过去了)
SQL编写好后进行测试时,造数据也好麻烦,特别是还存在表关联的情况,数据内容不真实,还容易超出字段长度,让人抓狂
SQL好不容易能跑了,又会有以下的疑问

符不符合SQL开发规范?
是否能命中索引?又可能命中哪个索引?
日常环境数据太少,如何模拟SQL在生产环境下运行的真实情况?
性能怎么样,最大TPS可以达到多少?数量大时是否会存在慢SQL?
TP99/TP90、最大RT/平均RT、平均TPS是多少呢?



对于使用Mybatis的开发者还会存在这些问题:

Mapper接口方法和XML标签不对应,修改完要重启(又几分钟过去了)
XML中多写了一个逗号或者分号,又没有错误提示,接口测试调用时才发现,修改完又又要重启(好多个几分钟过去了)
这个Mapper接口对应的是哪个XML文件?找找十几秒过去了
这个XMl文件对应的是哪个Mapper接口?找找十几秒又过去了
这个项目中有多少个XML文件?有多少SQL语句?里面是否存在慢SQL?是否都符合开发规范?
展开
评论
下一页
个人成就
文章被阅读 600
掘力值 52
收藏集
0
关注标签
0
加入于