滴滴面试:谈谈对Netty线程模型的理解? Netty 线程模型是指 Netty 框架为了提供高性能、高并发的网络通信,而设计的管理和利用线程的策略和机制。 Netty 线程模型被称为 Reactor(响应式)模型/模式,它是基于 NIO 多路复用模型的一种升级,它的核心思想是将 IO 事件和业务处理进行分离,使用一个或多个线程来执行任务的一种机制。 1.Reactor三大组件 Reactor 包含以下三大组件: 其中: Reactor(反 开发运维 2024-05-31 穿过生命散发芬芳
JavaScript 开发优秀实践 TOP 25+ 本文将分享一些基本的JavaScript开发最佳实践。 JavaScript中的前端开发涉及创建用户界面和处理web应用程序的表示层。 以下是一些要遵循的最佳实践以及示例,可帮助确保代码库干净且可维护: 1.模块化 将代码分解为更小的、可重用的模块。可以帮助增强代码的可读性,并使管理依赖项变得更加容易。 示例: // users.js (module) export function getUse 开发运维 2024-05-31 共饮一杯
向满屏的 Import 语句说再见! 密集的导入语句不仅对视觉造成冲击,也是对代码组织结构的一次考验。 如何优雅地管理这些导入语句,避免“全屏占用”?本文将探讨生成大量导入语句的原因,可能带来的问题,以及如何从多个角度优化和管理导入语句。 拒绝使用模块重新导出 模块重新导出是一种常见技术,广泛应用于Twitter、字节跳动和谷歌等大公司的组件库中。 例如,在字节跳动的arco-design组件库中:https://github.com 开发运维 2024-05-31 泡泡
深度解密 Python 的浮点数是怎么实现的? 楔子 从现在开始,我们就来分析 Python 的内置对象,看看它们在底层是如何实现的。但说实话,我们在前面几篇文章中介绍对象的时候,已经说了不少了,不过从现在开始要进行更深入的分析。 除了对象本身,还要看对象支持的操作在底层是如何实现的。我们首先以浮点数为例,因为它是最简单的,没错,浮点数比整数要简单,至于为什么,等我们分析整数的时候就知道了。 浮点数的底层结构 要想搞懂浮点数的实现原理,就要知道 开发运维 2024-05-31 爱可生开源社区
编辑器目录树的设计,一点也不简单 朋友们好,我是优秀的大鹏。 今天花了很长时间思考一个网页文档编辑器,云端目录树要怎么设计。 这个看似简单的需求,技术上和产品上的思考却非常复杂。 下面以几种编辑器为例,讲一下各种编辑器在技术上和产品的思考。 1.以Vscode为代表的本地编辑器 在聊云端文档目录树设计之前,要先讨论下常见的本地文档编辑器的目录树。 以vscode为例,通常本地文档编辑器的目录树是下面这样的: 看起来是一个简单的多叉 开发运维 2024-05-31 大树
Vue3 标签之间怎么通信?详解四种主流方案 前言 最近跨标签页数据传输这类功能点比较火,因为现在跨标签同步数据共享的需求越来越多了,所以大家伙也就都探讨这类功能点的实现方式。 今天我就在 Vue3 项目中,给大家演示一下纯前端如何实现跨标签通信: 1、BroadCast Channel 2、Service Worker 3、LocalStorage + onstorage 4、open + postMessage 我先准备一个基础页面,代码 开发运维 2024-05-31 穿过生命散发芬芳
有人说 JS “最垃圾” ,JS 创建者表示这不能忍! Twitter/X 上有人发布了一个话题:“怎么样?JavaScript到底是垃圾还是神作?到底是哪一个?”,类似这种话题在某乎应该见怪不怪了吧? 图片 有意思的是某歪国网友回复到: “真不敢相信你还要这么费劲思考这个问题…… JS就是最垃圾的,就连Brendan Eich也会同意。” 你说 JavaScript “最垃圾” 吧,基本上代表你的个人言论,也就算了,这还 @ 了 JavaScript 开发运维 2024-05-31 共饮一杯
PostgreSQL 中的统计信息,你知道有哪些吗? 数据分布统计信息 这些统计信息与每个关系的数据分布相关。它们提供了一个关系中每个列最常见的值、列的平均宽度、列中不同值的数量等信息。当我们运行 ANALYZE 或者在 autovacuum 触发 ANALYZE 时,它们会被收集,并存储在 pg_statistic 系统表中(对应的公开可读视图是 pg_stats)。 以下是一个示例,有关如何产生和查看这些统计信息: 1. 创建一个表,并插入一些测 开发运维 2024-05-31 剑圣无痕
基于 Taro 的微信小程序开发实战:如何支持高亮代码块 如果我们想要开发一款程序员使用的社区小程序,那么对 markdown 格式的解析与渲染是一个非常重要的功能。不过要完善的支持 .md 格式,在微信小程序中并不是一件容易的事情。好在微信小程序目前已经支持 html 标签渲染,因此我们有许多的 web 方案可以借鉴。 我实现的最终的效果如上图所示。引入成功,并且在真机测试通过。接下来具体跟大家分享一下实现步骤。 // 我的开发环境 Taro 3.6. 开发运维 2024-05-31 大猫
CSS3 老矣,CSS4、CSS5即将到来! RFC 自 2010 年左右以来,术语“CSS3”已被广泛用于涵盖对级联样式表 (CSS) 的各种添加和增强。但是,随着 CSS 随着新功能和规范的不断发展,笼统术语“CSS3”已变得不够充分且具有误导性。该 RFC 提议将 CSS 属性分为不同的组,即 CSS3、CSS4 和 CSS5,以更好地组织和促进对不断发展的 CSS 格局的理解。这种分类旨在提高采用率和教学便利性,同时不会对 CSS 工 开发运维 2024-05-31 剑圣无痕
Spring中都应用了哪些设计模式呢? 我们在面试的过程中,很多时候,面试官喜欢问关于设计模式的相关内容,甚至有些在笔试的时候,让你简单写一个设计模式的实现,这时候,也有面试官习惯的问面试者,你了解Spring中使用到的设计模式么? 设计模式 在Java中,设计模式是解决常见设计问题的最佳实践和经验总结。它们帮助开发者设计更灵活、可维护且可扩展的软件系统。以下是Java中常见的一些设计模式分类及其示例: 创建型模式(Creational 开发运维 2024-05-30 贤蛋大眼萌
八种现代 JavaScript 响应式模式 响应性本质上是关于系统如何对数据变化作出反应,有不同类型的响应性。然而,在这篇文章中,我们关注的是响应性,即响应数据变化而采取行动。 作为一名前端开发者,Pavel Pogosov 每天都要面对这个问题。因为浏览器本身是一个完全异步的环境。现代 Web 界面必须快速响应用户的操作,这包括更新 UI、发送网络请求、管理导航和执行各种其他任务。 尽管人们常常将响应性与框架联系在一起,Pavel Pog 开发运维 2024-05-30 LOVEHL^ˇ^
C#队列(Queue)的基本使用,一文全掌握 在编程中,队列(Queue)是一种常见的数据结构,它遵循先入先出(FIFO, First-In-First-Out)的原则。在C#中,.NET Framework 提供了 Queue 泛型类,使得我们可以非常方便地创建和操作队列。本文将全面介绍C#中队列的基本使用方法,帮助你快速掌握这一数据结构。 一、创建队列 在C#中,你可以使用 Queue 泛型类来创建一个队列。T 表示队列中元素的类型。下面 开发运维 2024-05-30 穿过生命散发芬芳
深入理解Babel 项目管理工具Lerna解析 一、背景 Babel是一个比较庞大的项目,其子工程就有至少140个(如 babel/plugins/presets/lerna/babel-loader等),产出的子工具已经是前端开发的基础设施,对开发效率、代码质量等有非常高的要求。 在本文中,我们将了解Babel是怎样进行项目管理的。 图片 本文从工程管理、代码管理、文档管理、质量管理四个方面对Babel项目管理进行拆解分析。 工程管理 Bab 开发运维 2024-05-30 Escape
浅谈CSS权重计算规则,你学会了吗? 1. CSS权重计算规则 图片 CSS权重计算规则是用来决定当多个CSS规则应用到同一个HTML元素上时,哪一个规则会最终生效的准则。 1.1. 权重计算规则: 第一优先级:!important。它会覆盖页面内任何位置定义的元素样式。(ie6支持上有些bug)。 第一等:内联样式,如:style="color:red;",权值为1000.(该方法会造成css难以管理,所以不推荐使用) 第二等:ID 开发运维 2024-05-30 共饮一杯
从0到1,手把手教你部署自己的线上项目 Hello,大家好,我是 Sunday。 无论是针对校招还是社招而言,部署自己的线上项目都是非常重要的一件事情。但是我在跟很多同学沟通之后发现,很多同学对如何部署线上项目并不熟悉,有的同学甚至连服务器和域名都不太能搞清楚。 所以,今天咱们就花上几分钟的时间,和大家一起,从购买服务器开始,来看看如何快速的部署自己的线上项目! 视频版地址:https://www.bilibili.com/video/ 开发运维 2024-05-30 泡泡
不掌握 BigDecimal 的四大坑你敢用吗? BigDecimal 是 Java 中的一个类,这个相信大家都是知道的。它的作用就是可以表示任意精度的十进制数,BigDecimal 提供了精确的数字运算,适用于需要高精度计算的场景,例如金融、货币或者税收等涉及到金钱的地方。 与 double 和 float 不同的是,BigDecimal 对象在计算的过程中不会丢失精度,那么下面我们就来看下第一个坑,浮点精度的坑。 一、浮点精度的坑 我们先来看 开发运维 2024-05-30 三掌柜
C语言字符串为什么以\0 作为结束标志? 在学习C语言的过程中,我们会发现字符串的处理方式与其他高级编程语言有所不同。C语言采用以\0(空字符)作为字符串的结束标志,而不是像某些其他语言那样记录字符串的长度。 1. 背景介绍 C语言诞生于20世纪70年代,由Dennis Ritchie在贝尔实验室开发。作为一种系统级编程语言,C语言需要高效、直接地操作内存和硬件资源。字符串处理作为编程中不可或缺的一部分,C语言选择了一种既简洁又高效的方式 开发运维 2024-05-30 大树
C# 中的 Action 和 Func 委托 在C#中,Action和Func是两种常用的泛型委托,它们为开发者提供了一种类型安全的方式来定义和处理方法引用。Action和Func的主要区别在于,Action用于封装没有返回值(即返回类型为void)的方法,而Func则用于封装有返回值的方法。 Action委托 Action委托用于表示接受特定类型参数并不返回任何值(void)的方法。T在这里是一个占位符,代表委托可以接受的参数类型。Acti 开发运维 2024-05-30 泡泡
十个经典 Python 设计模式解析 大家好!今天咱们来聊聊Python编程中的那些“武林秘籍”——设计模式。它们就像编程界的暗号,让你的代码更加优雅、高效。让我们一起揭开这些模式的神秘面纱,看看它们在实际项目中的神奇作用吧! 1. 工厂模式(Factory Pattern) 想象一下,你有个大冰箱,每次需要冰淇淋时,你都不用直接打开冷冻室,而是通过一个工厂方法来决定要哪种口味。 def create_creamy_icecream( 开发运维 2024-05-30 法医