一文搞懂七种基本的GC垃圾回收算法 作者 | mingguangtu 本文主要是中村成洋、相川光写的《垃圾回收的算法与实现》一书的读书笔记,没有输出的学习就是一盘散沙。我们要学习GC就要系统性的学,形成自己的知识框架,后面再学习其他的GC实现,就知道该放在框架的哪个地方,本文起到了作为GC知识框架的作用。不管技术风云怎么变化,打牢基础总是不会错的。 一、为什么要有GC 1. 什么是GC GC 是 Garbage Collection 开发运维 2024-05-23 大树
体验超现代的 Vue ?Vue Macros 使用探索 什么是 Vue Macros Vue Macros 是一个 vue 的周边库,可以在 Vue 2.7 以上的项目中进行使用。并引入了一套高级功能(宏)和语法糖。 图片 这些宏是库的一部分,主要是实现了 Vue 目前尚未正式采用的提案。 如何使用? 要开始在项目中使用 Vue Macros,首先需要安装该库: 使用 npm:npm install -D unplugin-vue-macros 使用 开发运维 2024-05-23 穿过生命散发芬芳
yolov部署到iPhone或终端实践全过程 本文经计算机视觉研究院公众号授权转载,转载请联系出处。 期待已久的检测经典又来来了一波强袭——yolov5。其实yolov5没有完整的文件,现在最重要的应该是把yolov4弄清楚,在目标检测领域中受益匪浅,可以在某些场景得到较高的提升。今天我们还是给大家分享yolov4,下一期我们将实践得将yolov5部署到苹果手机或者在终端通过摄像头实时检测! 一、技术回顾 有大量的特征被认为可以提高卷积神经网 开发运维 2024-05-23 LOVEHL^ˇ^
一篇文章带你了解JavaScript的Storage接口 一、概念 Storage 接口用于脚本在浏览器保存数据。两个对象部署了这个接口:window.sessionStorage和window.localStorage。 二、属性和方法 1. Storage.setItem() Storage.setItem()方法用于存入数据。它接受两个参数,第一个是键名,第二个是保存的数据。如果键名已经存在,该方法会更新已有的键值。该方法没有返回值。 window 开发运维 2024-05-23 三掌柜
领域化、中台化和多Region化,携程账号系统演进之路 作者简介 Scai,携程高级研发经理,多年深耕于账号中台,持续推进中台的技术架构演进及性能优化。 一、前言 在互联网早期时代,账号系统的功能非常广泛,包括账号管理、登录认证相关能力以及维护各类用户信息,比如头像、昵称、积分、等级等。随着业务的发展,每个功能逐渐分化出自己的需求和架构侧重点,独立出各自的领域服务也成了业界共识。 本文分享的账号系统,指的是提供用户账号管理、登录认证相关能力的系统。介绍 开发运维 2024-05-23 大猫
Redis大Key问题的深入探索与解决方案 Redis,作为一个高性能的键值存储系统,被广泛应用于各种需要高速数据读写的场景。然而,在使用Redis过程中,一个常见问题是大Key问题。本文将深入探索Redis大Key问题的概念、原因和影响,并分析其解决方案,同时提供实际案例来支持观点,并对Redis大Key问题的未来发展趋势进行预测和展望。 一、Redis大Key问题的概念、原因和影响 概念 Redis中的大Key,指的是占用大量内存空间的 开发运维 2024-05-23 向阳逐梦
Rust 上手很难?搞懂这些知识,前端开发能快速成为 Rust 高手 在我的交流群里有许多人在讨论 rust。所以陆续有人开始尝试学习 rust,不过大家的一致共识就是:rust 上手很困难。当然,这样的共识在网上也普遍存在。 这篇文章,就是专门为想要学习 rust 的前端开发而写,为大家抛开 rust 的迷雾,让大家感受到,上手 rust,其实没有那么难。从本质上来说,他跟 JavaScript 是非常相似的。大家可以将这篇文章作为 rust 学习的先导片,我将会 开发运维 2024-05-23 贤蛋大眼萌
我们一起聊聊.NET快速实现网页数据抓取 前言 今天我们来讲讲如何使用.NET开源(MIT License)的轻量、灵活、高性能、跨平台的分布式网络爬虫框架DotnetSpider来快速实现网页数据抓取功能。 注意:为了自身安全请在国家法律允许范围内开发网页爬虫功能。 网页数据抓取需求 本文我们以抓取博客园10天推荐排行榜第一页的文章标题、文章简介和文章地址为示例,并把抓取下来的数据保存到对应的txt文本中。 请求地址:https://w 开发运维 2024-05-23 LOVEHL^ˇ^
深度复制:C# 中 List 与 List 多层嵌套不改变原值的实现方法 概述:以下内容详细介绍了在 C# 中实现不改变原 List 值的多层嵌套复制方法,包括使用 AutoMapper、Json.NET、以及对象序列化的步骤和示例。这些方法提供了灵活而高效的方式,可以根据项目需求选择最适合的深度复制方式。 1. 使用 AutoMapper 进行多层嵌套复制 AutoMapper 是一个对象映射工具,可以方便地进行对象之间的映射。以下是使用 AutoMapper 实现多 开发运维 2024-05-23 Escape
跨域问题及常用的四种解决方案 图片 前言 跨域问题指的是在Web开发中,由于浏览器的同源策略限制,当一个网页尝试访问与它不同源(协议、域名或端口不同)的资源时,可能会遇到安全限制导致无法正常访问的问题。这种策略旨在防止恶意网站读取或修改其他网站的数据,保护用户信息安全。 这样说可能有点抽象,下面具体展开说明。 跨域问题演示 通常情况下,我们主流的开发模式是:前后端分离。当我们从浏览器80访问服务端81应用 图片 下面我们用一个 开发运维 2024-05-23 大猫
RocketMQ 是什么?它的架构是怎么样的?和 Kafka 又有什么区别? 作为一个程序员,假设你有 A、B 两个服务,A 服务发出消息后,不想让 B 服务立马处理到。而是要过半小时才让 B 服务处理到,该怎么实现? 这类延迟处理消息的场景非常常见,举个例子,比如我每天早上到公司后都会点个外卖,我希望外卖能在中午送过来,而不是立马送过来,这就需要将外卖消息经过延时后,再投递到商家侧。 那么问题就来了,有没有优雅的解决方案?当然有,没有什么是加一层中间层不能解决的,如果有, 开发运维 2024-05-22 张二河
使用 Argo CD 探索 GitOps,你学会了吗? Argo CD 是一个用于 Kubernetes 的声明式 GitOps 持续交付工具。 管理 Kubernetes 集群的复杂性可能是一项艰巨的任务,尤其是在跨多个环境部署和同步应用程序时。为了研究如何更好地应对此类挑战,我决定研究流行的 GitOps 持续交付工具 Argo CD。Argo CD 是一款开源 GitOps 持续交付工具,可为 Kubernetes 集群管理带来便利性和自动化。借 开发运维 2024-05-22 泡泡
我们忘记了前端基础知识 在所有最新的趋势和无尽的范例中,我们似乎忘记了前端开发的基础。 最近 Pavel Pogosov 注意到了一些改变他对这个行业看法的事情。似乎在所有无尽的趋势、范式和新奇中,我们忘记了前端开发的核心。 在这篇文章中,Pavel Pogosov 想分享一些最近项目中的代码片段,并试图解释他的想法。 无尽的过度复杂化 这里有一个最基本的卡片组件,它有一个可选的 header 属性。如果这个属性存在,我 开发运维 2024-05-22 醒在深海的猫
ViewRootImpl如何负责管理绘制视图树和刷新界面 ViewRootImpl位于视图层次结构的顶部,负责View和WindowManager之间的通信。 视图绘制:负责调用View树的绘制流程,包括测量(measure)、布局(layout)和绘制(draw)等操作。监听View树的改变,并根据需要触发相应的绘制操作,确保界面的及时更新。 事件分发:负责将输入的各种事件(如触摸事件、按键事件等)分发给正确的View处理。根据触摸事件的位置信息,逐层 开发运维 2024-05-22 共饮一杯
Vue3 实现最近很火的酷炫功能:卡片悬浮发光 有趣的动画效果 前几天在网上看到了一个很有趣的动画效果,如下,光会跟随鼠标在卡片上进行移动,并且卡片会有视差的效果。 那么在 Vue3 中应该如何去实现这个效果呢? 图片 基本实现思路 其实实现思路很简单,无非就是分几步: 首先,卡片是相对定位,光是绝对定位 监听卡片的鼠标移入事件mouseenter,当鼠标进入时显示光 监听卡片的鼠标移动事件mouseover,鼠标移动时修改光的left、top 开发运维 2024-05-22 捡田螺的小男孩
Python 并发编程的 12 个实用技巧 今天我们要一起探索的是Python中的并发编程,这可是提升程序速度的魔法钥匙哦!别担心,即使你是新手,我也会让你一步步成为并发小能手。 1. 遇见threading,多线程初体验 想象一下,你在咖啡馆同时处理邮件、聊天和写代码,这就是多线程的日常。在Python里,threading模块是你的得力助手。 import threading import time def say_hello(name 开发运维 2024-05-22 贤蛋大眼萌
阿里面试:说说自适应限流? 限流想必大家都不陌生,它是一种控制资源访问速率的策略,用于保护系统免受过载和崩溃的风险。限流可以控制某个服务、接口或系统在一段时间内能够处理的请求或数据量,以防止系统资源耗尽、性能下降或服务不可用。 常见的限流策略有以下几种: 令牌桶算法:基于令牌桶的方式,限制每个单位时间内允许通过的请求量,请求量超出限制的将被拒绝或等待。 漏桶算法:基于漏桶的方式,限制系统处理请求的速率,请求速率过快时将被限制 开发运维 2024-05-22 大白菜程序猿
前端跨平台开发框架大盘点 前端跨平台开发框架日益成为开发者的首选,它们允许开发者使用统一的技术栈构建适用于多个平台的应用。在 App 领域,React Native、Flutter、Weex 和 Hippy 提供了原生渲染的能力;在客户端领域,Electron、Tauri 和 Nw.js 使 Web 技术能够构建桌面应用;而在小程序领域,uniapp 和 Taro 则实现了一次编写、多端运行的愿景。本文将对这些框架进行简要 开发运维 2024-05-22 向阳逐梦
Rust 正在全面入侵前端 过年期间我没怎么发文章,但是我也没闲着。在这个空闲时间,把 rust 基础以及个别生态技术方案扎扎实实的,系统的学习了一下。学习他的初衷是因为 rust 可以支持鸿蒙应用的原生级别的开发,为进阶资深级别的鸿蒙开发者做技术储备。 可这不学不知道,一学吓一跳。这才发现 rust 生态,正在以一种锐不可当的气势,全方位、无死角的入侵前端开发的方方面面。最关键的是,由于有后发优势,这些技术方案往往都比已有 开发运维 2024-05-22 LOVEHL^ˇ^
当调用一个 Python 对象时,背后都经历了哪些过程? 楔子 在上一篇文章中,我们分析了对象是如何创建的,主要有两种方式,一种是通过特定类型 API,另一种是通过调用类型对象。 对于内置类型的实例对象而言,这两种方式都是支持的,比如列表,我们既可以通过 [ ] 创建,也可以通过 list() 创建,前者是列表的特定类型 API,后者是调用类型对象。 但对于自定义类的实例对象而言,我们只能通过调用类型对象的方式来创建。一个对象如果可以被调用,那么这个对象 开发运维 2024-05-22 贤蛋大眼萌