全部后端前端产品运维设计测试开发者客栈
最新 最热 官方 加精

客栈管理员 | 2024-07-30 | 开发者客栈

为什么需要开发者客栈

一 为什么而建 互联网圈子是出了名的跳槽频繁,跳槽的目的就是为了拿到更高的薪酬,公司为什么会给你开出更高的薪酬,第一决定要素就是面试过程中你回答的够不够好。 所以每个人在面试前都会去刷大量的面试题,每个人的刷题方式都不同,有的是看自己之前总结的文章、有的是网上针对自己的盲区去搜索相关面试题、有的就无目的的直接搜索前端/后端面试题、有的是在面试后被面试官问完然后把不懂的问题记下后再去网上找答案。 每个人最后都能够拿到offer,但是是不是自己满意的就不得而知。 但是我们如果在面试前做好充足的准备,刷足够的面试题,最后也可以坦然的对自己说“这次的跳槽我已经尽力了”。 如果我们盲目的刷题,只会让自己越来越焦虑,越觉得自己知道的太少了。 所以是不是需要有个网站,可以把所有的经典面试题和面经都汇总好,放在那里等着你来看,你也可以根据自己薄软的知识点去筛选出对自己最有用的那部分内容,这样你就可以在最短的时间内,获取到最...

 16222 |  17 |  21 开发者客栈

心如止水 | 2024-06-18 | MySQL数据库

(五)MySQL索引应用篇:建立索引的正确姿势与使用索引的最佳指南!

引言 数据库索引,绝对是 MySQL 的核心功能之一,如果没有索引机制的数据库,那数据的检索效率绝对是令人无法接受的,毕竟没有索引的表数据,就如同一个普通的文本文件存储在磁盘中。在《索引上篇》中,我们对于 MySQL 提供的索引机制,从引入,到创建、使用、分类、管理....等进行了全面阐述,相信经过上一篇的讲解后,大家对 MySQL 索引机制建立了系统化的认知,而本篇则会以上篇为基础,对索引机制进一步加深掌握。 不过在上篇中虽对数据库索引机制有了完善认知,但还不够,因为上篇仅是单纯的认知阶段,能否真正的在实际项目中运用好索引机制,还需要具备丰富的经验以及一些原则与方法论,比如下述一些关于索引的问题: • 索引虽然能给 MySQL 检索数据的效率带来质的飞跃,但加入索引没有带来新问题吗? • 既然索引能够提升查询性能,那是不是为表中每个字段建立索引,性能会更好? • 一张数据表中,哪些类型的字段不适合建立索引呢?又是因为什么原因呢? • 表中会存在大量的字段,但其中哪些字段建立索引才能够最大的性能收益呢? • MySQL 提供的索引种类也不少,...

 417 |  2 |  6 MySQL数据库

温酒 | 2024-06-18 | Nginx

nginx中的正则表达式和location路径匹配指南

前言,我这里验证的nginx-v1.23.2单机环境下的nginx中的 正则表达式 、location路径匹配规则和优先级。 先准备好环境,基础配置是这样 nginx/conf/conf.d/host.conf : server { listen 8081; server_name 10.90.5.70; proxy_connect_timeout 60; proxy_read_timeout 600; proxy_send_timeout 600; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto "http"; proxy_set_header Host $host; proxy_

 249 |  0 |  0 Nginx

晚风 | 2024-06-18 | Java后端相关

盘点历届 Java 语言的关键字,一定有你不认识的

在 Java 编程语言中,关键字是具有特殊含义的保留字,它们用于表示语言中的特定功能和操作。 了解和正确使用这些关键字对于编写高效、可靠的 Java 程序至关重要。 今天通过这篇文章,我们一起来了解一下相关的关键字以及含义。 一、关键字汇总 二、访问控制 ✓表示可以访问,x表示不能访问 2.1、private(私有化) private 关键字是访问控制修饰符,可以应用于内部类、方法或类的变量字段。只能在声明 private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言,它们是不可见的。 2.2、default(缺省) default:关键字是可以应用于类、方法或类的变量字段的访问控制修饰符。当没有指定类的访问权限的时...

 260 |  0 |  0 Java后端相关

石昊 | 2024-06-17 | DDD

领域驱动设计DDD在B端营销系统的实践

1 背景 通过营销活动实现客户/用户拉新、留存和促活是业界普遍采用的方法。为实现商户增长和留存,美团核心本地商业/商业增值技术部也构建了相应的营销系统来支撑商户的线上营销运营。在系统建设过程中,面临着业务体量大、行业跨度大、场景多样、客户结构复杂,需求多变等挑战。本文试图还原从0到1构建面向商户的营销系统过程中,并通过DDD(领域驱动设计)来应对系统设计和建设中遇到的业务复杂度高、需求多变、维护成本大等问题。 2 基本概念 软件系统的复杂性主要体现在三个方面。 隐晦 :一是抽象层面的隐晦,抽象系统时,每个人都有自己特定的视角,你需要站在对方的角度才能明白他为什么这么做;其次是实现层面的隐晦,代码是一种技术实现,通常与现实世界的业务概念脱节,无形中增加了理解成本。 耦合 :代码层面的耦合扩大了修改范围;模块层面的耦合需要跨模块/服务交互;系统层面的耦合则需要跨团队协作。从代码到模块再到系统,耦合的影响逐渐扩大,成本随之增加。 变化 :业务需求决定了系统功能,不同的用户需求不一样,不同的业务发展阶段需求在不断变化,系...

 217 |  0 |  0 DDD

晴天 | 2024-06-17 | Spring 全家桶后端相关

一张长图透彻理解SpringBoot 启动原理,架构师必备知识,不为应付面试!

虽然Java程序员大部分工作都是 CRUD ,但是工作中常用的中间件必须和Spring集成,如果不知道Spring的原理,很难理解这些中间件和框架的原理。 一张长图透彻解释 Spring启动顺序 Timeout重构 (2).jpg 测试对Spring启动原理的理解程度 我举个例子,测试一下,你对Spring启动原理的理解程度。 1. Rpc框架和Spring的集成问题。Rpc框架何时注册暴露服务,在哪个Spring扩展点注册呢?init-method 中行不行? 2. MQ 消费组和Spring的集成问题。MQ消费者何时开始消费,在哪个Spring扩展点”注册“自己?init-method 中行不行? 3. SpringBoot 集成Tomcat问题。如果出现已开启Http流量,Spring还未启动完成,怎么办?Tomcat何时开启端口,对外服务? SpringBoot项目常见的流量入口无外乎 Rpc、Http、MQ ...

 262 |  0 |  0 Spring 全家桶后端相关

青木 | 2024-06-17 | Spring 全家桶后端相关

面试官:说说Spring事务传播机制?

Spring 事务传播机制是指,包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的。 既然是“事务传播”,所以事务的数量应该在两个或两个以上,Spring 事务传播机制的诞生是为了规定多个事务在传播过程中的行为的。比如方法 A 开启了事务,而在执行过程中又调用了开启事务的 B 方法,那么 B 方法的事务是应该加入到 A 事务当中呢?还是两个事务相互执行互不影响,又或者是将 B 事务嵌套到 A 事务中执行呢?所以这个时候就需要一个机制来规定和约束这两个事务的行为,这就是 Spring 事务传播机制所解决的问题。 Spring 事务传播机制有哪些? Spring 事务传播机制可使用 @Transactional(propagation=Propagation.REQUIRED) 来定义,Spring 事务传播机制的级别包含以下 7 种: 1. Propagation.REQUIRED:默认的事务传播级别,它表示如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 2. Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果...

 213 |  0 |  0 Spring 全家桶后端相关

心如止水 | 2024-06-14 | MySQL数据库

(四)MySQL之索引初识篇:索引机制、索引分类、索引使用与管理综述

引言 由于 MySQL 是作为存储层部署在业务系统的最后端,所有的业务数据最终都要入库落盘,但随着一个项目在线上运行的时间越来越久,数据库中的数据量自然会越来越多,而数据体积出现增长后,当需要从表查询一些数据时,效率会越发低下。在正常情况下,表的查询性能和数据量是成反比的,也就是数据越多,查询越慢。 这是什么原因导致的呢?由于 MySQL 默认的查询方式导致的,举个例子 SELECT   FROM  zz_student ; +------------+--------+------+--------+ | student_id | name   | sex  | height | +------------+--------+------+--------+ |          1 | 竹子   | 男   | 185cm  | |          2 | 熊猫   | 女   | 170cm  | |          3 | 子竹   | 男   | 182cm  | |          4 | 棕熊   | 男   | 187cm  | | 

 326 |  0 |  0 MySQL数据库

OOM | 2024-06-14 | Spring 全家桶后端相关

用 Arthas 定位 Spring Boot 接口的超时问题,让应用起飞~

背景 公司有个渠道系统,专门对接三方渠道使用,没有什么业务逻辑,主要是转换报文和参数校验之类的工作,起着一个承上启下的作用。 最近在优化接口的响应时间,优化了代码之后,但是时间还是达不到要求;有一个诡异的100ms左右的耗时问题,在接口中打印了请求处理时间后,和调用方的响应时间还有差了100ms左右。比如程序里记录150ms,但是调用方等待时间却为250ms左右。 下面记录下当时详细的定位&解决流程(其实解决很简单,关键在于怎么定位并找到解决问题的方法) 定位过程 分析代码 渠道系统是一个常见的spring-boot web工程,使用了集成的tomcat。分析了代码之后,发现并没有特殊的地方,没有特殊的过滤器或者拦截器,所以初步排除是业务代码问题 分析调用流程 出现这个问题之后,首先确认了下接口的调用流程。由于是内部测试,所以调用流程较少。 Nginx -反向代理  渠道系统 公司是云服务器,网络走的也是云的内网。由于不明确问题的原因,所以用排除法,首先确认服务器网络是否有问题。 先确认发送端到 Nginx Host

 251 |  1 |  0 Spring 全家桶后端相关

女王范 | 2024-06-14 | MySQL数据库

结合MySQL更新流程看 undolog、redolog、binlog

开篇tip 我们知道日志的作用不言而喻,无论是线上排查,亦或是性能优化,几乎都需要从日志中来获得信息作为依据,而MySQL中,很多很多的功能也都需要基于日志实现,比如事务回滚、数据持久化、数据恢复、数据迁移、MVCC机制..... 我们在了解具体内容之前,先对三种日志之间的小总结,涉及到使用场景和文件等,可以把这个当做先前总结,更细的内容在每一章会提及。 简单梳理下日志是在哪个地方写入到不同日志文件中的,undolog、redolog都是InnoDB引擎中的日志,而且都是在 Buffer Pool 中,而binlog在Server层中,位于每条线程中,并且每种日志在磁盘中的的归档方式和文件都是不一样的,之间的区别如下图。 WAL机制是什么? WAL,全...

 186 |  0 |  0 MySQL数据库

念旧。 | 2024-06-13 | 网络技术

21张图详解交换机MAC地址表的五大要素:目的MAC地址、所属VLAN、出接口、类型、老化时间

前言 什么是MAC地址表?MAC地址表有什么作用?MAC地址表里面包含了哪些要素?今天带你好好唠唠。 我们以一个案例为例: 如上图:PC1和PC2通过交换机SW1直连,此时PC1想要和PC2通信。 1、根据 TCP/IP参考模型 ,PC1想要和PC2通信,除了需要知道PC2的IP地址,还需要知道PC2的MAC地址,这个我们在之前章节已经讲了,可以通过ARP广播获取PC2的目的IP地址。(PC1的ARP表项如下图) 2、PC1将报文封装好发送给交换机SW1,交换机SW1会 查找MAC地址表 ,匹配到PC2的MAC地址,查找出接口为GE0/0/2。(交换机的MAC地址表如下图) ![图片](https://static.developers.pub/f1b3e90cd17149...

 475 |  0 |  0 网络技术

奈我何 | 2024-06-13 | 数据库

搞定了 6 种分布式ID,分库分表哪个适合做主键?

今天咱们继续一起来探究下,分布式ID在分库分表中起到的作用以及如何使用, ShardingSphere-jdbc 中已经为我们提供了多种分布式主键ID生成策略。接下来将分别介绍这些策略的优缺点,看看它们在实际应用中的场景和效果。 为什么用分布式主键ID 在传统的单库单表结构时,通常可以使用自增主键来保证数据的唯一性。但在分库分表的情况下,每个表的默认自增步长为1,这导致了各个库、表之间可能存在重叠的主键范围,从而使得主键字段失去了其唯一性的意义。 为了解决这一问题,我们需要引入专门的分布式 ID 生成器来生成全局唯一的ID,并将其作为每条记录的主键,以确保全局唯一性。通过这种方式,我们能够有效地避免数据冲突和重复插入的问题,从而保障系统的正常运行。 除了满足唯一性的基本要求外,作为主键 ID,我们还需要关注主键字段的数据类型、长度对性能的影响。因为主键字段的 数据类型 、 长度 直接影响着数据库的查询效率和整体系统性能表现,这一点也是我们在选方案时需要考虑的因素。 内置算法 在 ShardingSphere 5.X 版本后进一步丰富了其框...

 184 |  0 |  0 数据库

流苏 | 2024-06-13 | MySQL数据库

惊艳到我的 10个 MySQL高级查询技巧!

1.常见表表达式(CTEs) 如果您想要查询子查询,那就是CTEs施展身手的时候 CTEs基本上创建了一个临时表。 使用常用表表达式(CTEs)是模块化和分解代码的好方法,与您将文章分解为几个段落的方式相同。 请在Where子句中使用子查询进行以下查询。 SELECT name, salary FROM People WHERE NAME IN ( SELECT DISTINCT NAME FROM population WHERE country = 'Canada' AND city = 'Toronto' ) AND salary = ( SELECT AVG( salary ) FROM salaries WHERE gender = 'Female') 这似乎似乎难以理解,但如果在查询中有许多子查询,那么怎么样?这就是CTEs发挥作用的地方。 with toronto_ppl as ( SELECT DISTINCT name FROM population WHERE cou

 225 |  0 |  0 MySQL数据库

柚香 | 2024-06-12 | 数据库

聊聊 Mybatis 动态 SQL

这篇文章,我们聊聊 Mybatis 动态 SQL ,以及我对于编程技巧的几点思考 ,希望对大家有所启发。 1 什么是 Mybatis 动态SQL 如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。 Mybatis 借助功能强大 OGNL 表达式,可以根据参数条件,动态生成执行 SQL 。 使用动态 SQL 最常见情景是根据条件包含 where 子句的一部分。 这条语句提供了可选的查询博客文章列表 ,如果不传入 “title”,那么所有处于 “ACTIVE” 状态的 博客都会返回。 如果传入了 “title” 参数,那么就会对 “title” 一列进行模糊查找并...

 215 |  0 |  0 数据库

iron Man | 2024-06-12 | Spring 全家桶后端相关

网易面试:SpringBoot如何开启虚拟线程?

虚拟线程(Virtual Thread)也称协程或纤程,是一种轻量级的线程实现,与传统的线程以及操作系统级别的线程(也称为平台线程)相比,它的创建开销更小、资源利用率更高,是 Java 并发编程领域的一项重要创新。 PS:虚拟线程正式发布于 Java 长期支持版(Long Term Suort,LTS)Java 21(也就是 JDK 21)。 虚拟线程是一种在 Java 虚拟机(JVM)层面实现的逻辑线程,不直接和操作系统的物理线程一一对应,因此它可以减少上下文切换所带来的性能开销。 操作系统线程、普通线程(Java 线程)和虚拟线程的关系如下: 1.虚拟线程使用 虚拟线程的创建有以下 4 种方式: 1. Thread.startVirtualThread(Runnable task) 2. Thread.ofVirtual().unstarted(Runnable task) 3. Thread.ofVirtual().fa...

 201 |  0 |  0 Spring 全家桶后端相关

心如止水 | 2024-06-12 | MySQL数据库

(三)MySQL之库表设计篇:一、二、三、四、五范式、BC范式与反范式详解!

引言 MySQL 的库表设计,在很多时候我们都是率性而为,往往在前期的设计中考虑并不全面,同时对于库表结构的划分也并不明确,所以很多时候在开发过程中,代码敲着敲着会去重构某张表结构,甚至大面积重构多张表结构,这种随心所欲的设计方式,无疑给开发造成了很大困扰。 但实际上设计 DB 库表结构时,也有一些共同需要遵守的规范,这些规范在数据库设计中被称为“范式”,理解并掌握这些设计时的规范,能让咱们在项目之初,设计的库表结构更为合理且优雅。数据库范式中,声名远扬的有三大范式,但除此之外也有一些其他设计规范,如: • ①数据库三大范式( 1NF、2NF、3NF ) • ③第四范式( 4NF )和第五范式:完美范式( 5NF ) • ②巴斯-科德范式( BCNF ) • ④反范式设计 不过对于上述的几种设计范式,大部分小伙伴应该仅了解过三范式,对于其他的应该未曾接触,那在本篇中会重点阐述库表设计时,会用到的这些范式。 一、数据库三大范式 范式( Normal Form )在前面也提到过,它就是指设计数据库时要遵守的一些原则,而数据库的三大范式,相信诸位...

 177 |  0 |  0 MySQL数据库

花小染 | 2024-06-11 | Redis后端相关

百度面试:如何用Redis实现限流?

高并发系统有三大特征:限流、缓存和熔断,所以限流已经成为当下系统开发中必备的功能了。那么,什么是限流?如何实现限流?使用 Redis 能不能实现限流?接下来我们一起来看。 1.什么是限流? 限流是指在各种应用场景中,通过技术和策略手段对数据流量、请求频率或资源消耗进行有计划的限制,以避免系统负载过高、性能下降甚至崩溃的情况发生。限流的目标在于维护系统的稳定性和可用性,并确保服务质量。 使用限流有以下几个好处: 1. 保护系统稳定性 :过多的并发请求可能导致服务器内存耗尽、CPU 使用率饱和,从而引发系统响应慢、无法正常服务的问题。 2. 防止资源滥用 :确保有限的服务资源被合理公平地分配给所有用户,防止个别用户或恶意程序过度消耗资源。 3. 优化用户体验 :对于网站和应用程序而言,如果任由高并发导致响应速度变慢,会影响所有用户的正常使用体验。 4. 保障安全 :在网络层面,限流有助于防范 DoS/DDoS 攻击,降低系统遭受恶意攻击的风险。 5. 运维成本控制 :合理的限流措施可以帮助企业减少不必要的硬件投入,节省运营成本。 ...

 185 |  0 |  0 Redis后端相关

孤音 | 2024-06-11 | MySQL数据库

聊聊mysql优化神器:前缀索引!

一、什么是前缀索引? 所谓前缀索引,说白了就是对文本的前几个字符建立索引( 具体是几个字符在建立索引时去指定 ),比如以产品名称的前 10 位来建索引,这样建立起来的索引更小,查询效率更快! 有点类似于 Oracle 中对字段使用 Left 函数来建立函数索引,只不过 MySQL 的这个前缀索引在查询时是内部自动完成匹配的,并不需要使用 Left 函数。 二、为什么要用前缀索引? 可能有的同学会发出疑问,为什么不对整个字段建立索引呢? 一般来说,当某个字段的数据量太大,而且查询又非常的频繁时,使用前缀索引能有效的减小索引文件的大小,让每个索引页可以保存更多的索引值,从而提高了索引查询的速度。 比如,客户店铺名称,有的名称很长,有的很短,如果完全按照全覆盖来建索引,索引的存储空间可能会非常的大, 有的表如果索引创建的很多,甚至会出现索引存储的空间都比数据表的存储空间大很多 ,因此对于这种文本很长的字段,我们可以截取前几个字符来建索引,在一定程度上,既能满足数据的查询效率要求,又能节省索引存储空间。 但是另一方面,前缀索引也有它的缺点,MySQL...

 197 |  0 |  0 MySQL数据库

观云 | 2024-06-10 | Linux

深入探讨:Linux防火墙配置详解及iptables与firewalld的使用

1 防火墙定义 1. 防火墙是一种高级访问控制设备,置于不同网络安全域之间,他通过相关的安全策略来控制(允许,拒绝,监视,记录)进出网络的访问行为。 2. 防火墙是一组规则,当数据包进出受保护的网络区域时,进出内容(特别是关于其来源、目标和使用的协议等信息)会根据防火墙规则进行检测,以确定是否允许其通过。 2 防火墙分类 硬件防火墙 软件防火墙 主机防火墙 网络防火墙 --- 3 iptables 3.1 iptables 四表五链 3.1.1 功能(表) filter:防火墙过滤数据包,默认表 nat:网络地址转换(network address translation) mangle:拆分,做出修改 raw:关闭nat表上启用的连接追踪功能 3.1.2 链 PREROUTING (previous routing路由前) INPUT OUTPUT FORWARD POSTROUTING (postpone routing路由后) ![图片](https:/

 213 |  0 |  0 Linux

大牛猫 | 2024-06-10 | Spring 全家桶后端相关

公司禁止在 SpringBoot 中使用 @Autowired 注解,为什么?

前言 Spring 官方已不推荐使用 Autowired 字段/属性注入 bean,一些大公司的新项目也明令禁止使用了。 说明 最近公司升级框架,由原来的 spring framework 3.0 升级到 5.0,然后写代码的时候突然发现 idea 在属性注入的 @Autowired 注解上给出警告提示,就像下面这样的,也是挺懵逼的,毕竟这么写也很多年了。 ❝Field injection is not recommended ❞ 查阅了相关文档了解了一下,原来这个提示是 spring framework 4.0 以后开始出现的,spring 4.0 开始就不推荐使用属性注入,改为推荐构造器注入和 setter 注入。 下面将展示了 spring 框架可以使用的不同类型的依赖注入,以及每种依赖注入的适用情况。 依赖注入的类型 尽管针对 spring framework 5.1.3 的文档只定...

 255 |  0 |  0 Spring 全家桶后端相关

推荐标签 🏷️

后端相关 前端相关 Java JavaScript Spring 全家桶 算法 数据库 Redis