- 博客(214)
- 收藏
- 关注
原创 高并发请求下如何对系统优化
性能监控:使用监控工具(如 Prometheus、Grafana、New Relic)监控系统性能和资源使用,及时发现和解决性能瓶颈。通过综合应用这些优化策略,可以显著提升系统在高并发场景下的处理能力和稳定性。根据具体的应用场景和需求,可以选择和组合适合的优化措施。连接池:使用数据库连接池(如 HikariCP、Druid)来管理和复用数据库连接,提高数据库操作的效率。日志分析:分析应用日志,识别性能问题和异常情况。
2024-07-26 15:02:09
438
原创 Nginx使用篇
Nginx 作为一个高性能的反向代理服务器,能够通过负载均衡、限流和动静分离等功能,显著提高网站的性能和可靠性。其配置灵活且高效,适用于各种规模的 web 应用。负载均衡:通过反向代理和多种负载均衡策略,将请求分发到多个后端服务器。限流:通过限流模块限制客户端请求速率,保护服务器免受过载攻击。动静分离:将静态资源和动态请求分开处理,提高网站性能。掌握这些配置和原理,可以有效优化 Nginx 的使用,提升 web 应用的整体表现。
2024-07-26 13:38:16
167
原创 单例模式详解
单例模式(Singleton Pattern)是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。这种模式在需要一个对象被共享且全局唯一的情况下非常有用,比如配置对象、日志对象、数据库连接对象等。单例模式通过确保一个类只有一个实例,提供了一种全局访问点来访问该实例。根据不同的需求和场景,可以选择不同的实现方式。饿汉式和枚举方式实现简单,但不能延迟加载;懒汉式和双重校验锁方式可以延迟加载,但需要考虑线程安全问题;静态内部类方式兼具延迟加载和线程安全,是一种推荐的实现方式。
2024-07-19 12:54:21
913
原创 Tomcat打破双亲委派模型的方式
双亲委派模型是一种类加载机制,它确保了类加载器层次结构中的父加载器先于子加载器尝试加载类。这种机制有助于防止类的重复加载和类之间的不兼容。然而,为了支持Web应用程序的独立性和隔离性,Tomcat需要在某些情况下打破这一原则。Tomcat通过自定义的WebappClassLoader打破了双亲委派模型,允许Web应用程序优先加载自己的类和资源。这种机制确保了每个Web应用程序的独立性和隔离性,避免了类库冲突,并使得每个应用程序可以拥有自己的类和库版本。
2024-07-09 09:56:10
718
原创 Spring框架中的自动装配
Spring框架中的自动装配(Autowiring)是通过依赖注入(Dependency Injection, DI)来自动解决Bean之间的依赖关系。自动装配的主要方式包括基于类型、基于名称、基于构造函数等。
2024-07-09 09:23:15
339
原创 Docker常见面试题整理
这使得开发人员可以更容易地处理复杂的Docker环境,尤其是在需要多个容器协同工作的场景下。Docker 是一种容器化平台,允许开发者打包应用程序及其依赖项到一个可移植的容器中,然后发布到任何支持 Docker 的环境中运行。Docker 解决了传统虚拟化环境中应用部署和运行时的依赖、配置、环境一致性等问题,提供了更轻量、更快速的应用部署和扩展方案。总之,Docker Compose是一个强大的工具,可以帮助开发人员和管理员更好地管理和部署Docker容器化的应用程序。
2024-06-22 13:38:55
862
原创 Springboot的自动配置原理
Spring Boot的自动配置原理是通过@EnableAutoConfiguration注解引入自动配置逻辑,然后解析@Import注解,加载各种配置类,包括deferredlmportSeleCtOr和自动配置类。通过SP机制读取soring.factories文性。过滤出自动配置类,并根据条件化配置来动态加载这些类,从而实现自动配置故功能。这种机制使得Spring Boot应用程序可以根据环境和需求自动配置,极大地简化了开发和部署的工作。
2024-06-22 11:44:13
1117
原创 Java动态代理详解
JDK动态代理:适用于实现了接口的类,通过InvocationHandler处理代理逻辑。CGLIB动态代理:适用于没有实现接口的类,通过继承实现代理,使用MethodInterceptor处理代理逻辑。性能更优。动态代理在AOP(面向切面编程)、拦截器、权限控制、事务管理等领域有广泛应用,提供了灵活的方式来在运行时增强对象行为。
2024-06-19 19:20:16
476
原创 Java内存模型(JMM)详解
Java内存模型(JMM)提供了一组规则,确保多线程程序在不同平台上的一致性和正确性。通过理解JMM的核心概念、关键字和同步机制以及 happens-before 规则,开发者可以编写出高效且线程安全的并发程序。
2024-06-18 11:05:45
952
原创 阻塞队列:ArrayBlockingQueue和LinkedBlockingQueue区别
ArrayBlockingQueue和LinkedBlockingQueue是Java中常用的两种阻塞队列,它们在内部实现和适用场景上有一些显著的区别。阻塞队列的实现通常依赖于底层的锁机制和条件变量。Java中的java.util.concurrent包提供了。(BlockingQueue)是一种特殊类型的队列,它用于在多线程环境中实现线程之间的通信。等多种阻塞队列实现,分别适用于不同的使用场景。
2024-06-18 09:40:40
860
原创 Kafka高频面试题整理
Kafka 是一个分布式流处理平台,最初由Linkedln开发并开源,后来成为Apache软件基金会的一个顶级项目。它被设计用于高吞吐量、持久性、分布式的数据流处理。
2024-06-13 20:51:01
1198
原创 Kafka之ISR机制的理解
ISR(In-Sync Replicas)是一个分区副本集合,这些副本被认为是与领导副本保持同步的。具体来说,ISR中的副本是那些能够在一定时间内(由参数replica.lag.time.max.ms指定)将数据同步到与领导副本相同位置的副本。Kafka的ISR机制通过维护一个与领导副本同步的副本集合,确保了数据的一致性和高可用性。通过合理配置和使用ISR机制,Kafka能够在面对节点故障时,仍然保证数据的安全和系统的稳定。
2024-06-13 08:36:39
669
原创 RabbitMQ高频面试题整理
AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一种用于消息传递的开放标准协议,广泛用于消息队列和消息中间件系统中。RabbitMQ 是 AMQP 协议的一个实现。Broker(代理)消息代理是消息队列服务器,负责接收、存储和转发消息。例如,RabbitMQ 就是一个 AMQP 消息代理。Message(消息)消息是 AMQP 中的基本数据单元,包含要传递的数据和一些元数据(如路由键和头属性)。Producer(生产者)
2024-06-12 16:04:54
1446
原创 Zookeeper高频面试题整理(入门到精通)
Zookeeper 翻译过来就是动物园管理员,他是用来管 Hadoop (大象) 、Hive(蜜蜂)、Pig(小猪)的管理员,简称zk。Zookeeper是 Apache Hadoop项目下的一个子项目,是一个开源的分布式协调服务。配置管理命名服务分布式同步分布式锁集群管理。ZAB协议是一种原子广播协议,保证所有ZooKeeper服务器上的数据一致性。包含崩溃恢复和消息广播两部分。领导者选举:系统初始化时或现有领导者失效时,所有节点通过选举过程选出新的领导者。
2024-06-09 15:01:37
1172
原创 JVM面试基本问题整理
TLAB 为每个线程分配了一块独立的内存区域,每个线程在自己的 TLAB 区域内进行对象的分配,不再涉及到全局的内存分配锁,从而避免了多线程之间的竞争。虚拟机内部引用(JVM Internal References):由虚拟机自身引用的对象,如常量池、类的引用等。常量池和运行时常量池是 Java 中两个相关但不同的概念,它们分别用于不同的阶段和存储不同类型的数据。本地变量(Local Variables):当前活动线程的栈帧中的局部变量引用的对象。计算 Java 对象的大小涉及对象头、实例数据和对齐填充。
2024-06-08 12:39:16
1082
原创 Redis高频面试基本问题整理
脑裂问题是指由于网络分区或节点故障,导致集群中的多个节点失去联系,并各自认为自己是主节点,继续接收和处理客户端的读写请求。这会导致数据的不一致和潜在的数据丢失。Redis 脑裂(Split-Brain)问题通常发生在 Redis 集群(Cluster)或哨兵模式(Sentinel)中。解决脑裂问题的方法配置 quorum:在 Redis 哨兵模式中,可以通过配置 quorum 来减少脑裂问题的发生。quorum 是指在进行故障转移时,需要同意故障转移的最少哨兵数量。
2024-06-07 18:38:47
1060
原创 Redis到底支不支持事务?
可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞。multi: 开启一个事务,multi 执行之后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即被执行,而是被放到一个队列中。exec:执行队列中所有的命令discard:中断当前事务,然后清空事务队列并放弃执行事务监视一个(或多个)key ,如果在事务执行之前这个(或这些) key 被其。
2024-06-07 15:18:42
827
原创 Redis集群之高可用可水平扩展
在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异 常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现 一般,特别是在主从切换的瞬间存在。的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单。
2024-06-06 20:50:38
462
1
原创 Easticsearch性能优化之索引优化
对于性能优化,Elasticsearch(以下简称ES)的索引优化是提高性能的关键因素之一。合理的设计索引,合理的分片和副本以及合理的缓存设置等,都有利于提升ES的索引性能和查询效率
2024-03-07 22:59:17
1079
原创 Easticsearch性能优化之硬件优化
对于性能优化,升级硬件设备配置一直都是提高服务能力最快速有效的手段。硬件优化主要可以从CPU内存存储设备(磁盘)、显卡、散热系统、主板、电源、外设设备等。CPU内存IO。
2024-01-12 15:10:29
1297
原创 git秘钥过期 ERROR: Your SSH key has expired
Github添加秘钥(记得粘贴时带上开头的 ssh-rsa不需要去掉)->过期时间设置久一点,添加完成就ok了,回到项目里可以正常操作项目了。首先登录Github查看,头像->设置->SSH秘钥,发现确实过期了,接下来就是重新生成秘钥。使用git命令时遇到Github 的 SSH Key秘钥过期,提示错误。然后进入刚刚生成的目录,把秘钥粘贴出来,放到Github上。直接在项目目录下执行命令。
2024-01-09 10:26:15
4692
原创 一文读懂java性能优化(最全干货篇)
性能优化:是指针对计算机系统或应用程序的性能进行改善的一系列技术和方法。性能优化的目标:是提高系统或应用程序的响应时间吞吐量效率和可伸缩性等方面的性能指标。性能优化需要有一些技巧:对于一个整个产品或项目而言,比如可以从前端优化、后端优化、架构优化、高并发优化、Linux内核优化、常用中间件优化等方便去优化,当然每个方面侧重点不同,用的技术点也不同。当然除了上述从技巧方面做优化,我们也必须通过使用性能测试工具进行性能基准测试,并根据测试结果进行有针对性的优化。
2024-01-03 16:35:40
1226
原创 Mysql5.7版本中,查询分组GROUP BY通过子查询中ORDER BY进行排序无效的问题解决办法
Mysql5.7版本中,查询分组GROUP BY通过子查询中ORDER BY进行排序无效的问题解决办法
2023-12-20 17:23:32
991
原创 6大场景,玩转ChatGPT!
我们知道AI技术不仅能够自动生成文章和内容,还可以根据我们的需求提供创意灵感和解决问题的方法。辅助我们完成各类写作任务,包括博客、文章、报告等。这不仅节省了时间,还提高了写作质量。但是为了充分发挥AI“小助手”的作用,我们也要掌握一些提问技巧和方法,让它生成的更符合我们的预期,更智能的为我们所用。以下针对不同场景的提问方法给到我们一些演示案例:Tip:以下案例可以直接放到chatgpt中查看效果不知如何获取ChatGPT的查看本专栏首页简介。
2023-11-02 10:40:05
574
原创 【Midjourney入门教程4】与AI对话,写好prompt的必会方法
Midjourney 还有一点跟 ChatGPT 有较大差异,它允许你在 prompt 里加入参数,而且这些参数相对来说一致性都比较好,所以如果你想实现的功能,参数里支持,那优先使用参数,而不是在主体里描述。临摹别人的画作,是学习 Midjourney 很好的方式,毕竟站在巨人的肩膀上,能让你走的更远!2、ChatGPT 是声明式的,你甚至可以让它扮演某个角色,但 Midjourney 是指令式的,你只能用指令让它画出你想象中的图片。木匠不会因为电动工具的出现而被淘汰,反而善用工具的木匠,收入更高了。
2023-11-01 15:11:53
1500
原创 【Midjourney入门教程1】Midjourney的注册、订阅
Midjourney是一个人工智能绘图平台。MJ 的工作模式就是从自然语言描述中生成图像,官方叫法是「Prompt 」,中文译作「提示词」,AIGC 圈内也称作「咒语」,因为大家把 AI 制图的过程戏称为魔法。
2023-11-01 10:40:10
1223
1
原创 AIGC是什么?一文读懂人工智能生成内容技术!
AIGC是一种新的人工智能技术,它的全称是Artificial Intelligence Generative Content,即人工智能生成内容。它是一种基于机器学习和自然语言处理的技术,能够自动产生文本、图像、音频等多种类型的内容。这些内容可以是新闻文章、小说、图片、音乐,甚至可以是软件代码。AIGC系统通过分析大量的数据和文本,学会了模仿人类的创造力,生成高质量的内容。
2023-10-26 11:28:16
1282
原创 Redis incr实现流水号自动增长
ava项目实现流水号自动增长,项目需求中有时需要生成一定规则递增编号eg用户编码自动生成,规则: user+7位数字,每次新增自增长,例: user0000001角色编码自动生成,规则: role+7位数字,每次新增自增长,例: role0000001
2023-10-23 11:28:40
321
原创 java处理时间-去除节假日以及双休日
有些场景需要计算数据非工作日的情况,eg:统计每个人每月工作日签到情况等,就需要去除法定节假日和工作日,可以新建一个表用来存储和维护这些非工作日。
2023-10-11 18:09:04
810
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人