在前端开发中,防抖(Debouncing) 是一种常用的优化技术,用于处理频繁触发的事件,如浏览器窗口的resize、input输入等。防抖的目标是在事件被触发后,等待一段时间,只执行一次事件处理函数,以避免频繁的重复操作。
防抖的原理很简单:当一个事件被触发时,立即设置一个定时器,在规定的时间内没有再次触发该事件时,执行事件处理函数。如果在定时器规定的时间内再次触发了事件,那么就清除前一个定时器,并重新设置新的定时器。这样,只有在事件停止触发一段时间后,才会执行事件处理函数。
以下是一个防抖的基本实现示例(使用 JavaScript):
1 | function debounce(func, delay) { |
很多时候在写文章或者制作PPT时需要用到一些图片资源,最近刚好发现了一个实用的高分辨率的免费资源平台Unspash, 跟大家分享一下。
Unsplash.com 是一个知名的免费高质量图片分享平台,提供各种类型的高分辨率摄影图片供用户免费下载和使用。这些图片可以用于个人、商业、创意和学术项目,包括网站、博客、社交媒体、演示文稿等。
一个常见的最短子数组算法题是 “Minimum Size Subarray Sum”。在这个问题中,给定一个正整数数组和一个目标值,要找到数组中一个连续子数组,使得子数组的元素和大于等于目标值,并且子数组的长度最小。
例如
1 | 输入: |
1 | 输入: |
在上一篇中,我们讲到了双指针算法的几种使用场景,这里具体举例,以经典的两数之和为例。
给定一个有序数字的数组和一个目标值,在有序数组中找到两个数字之和等于该目标值,返回包含两个数字的数组,如果没有找到返回包含两个-1值的数组。
1 | 找到的情况 |
1 | 找不到的情况 |
双指针算法(Two Pointer Algorithm)是一种常见的算法技巧,通常用于数组、链表等数据结构中解决一些问题。双指针算法的核心思想是使用两个指针在不同的位置上移动,以达到解决问题的目的。这两个指针可以朝着相同的方向移动,也可以朝着相反的方向移动,视问题而定。
双指针算法的常见应用场景和实现方法:
对撞指针(Two Sum、Three Sum): 在有序数组中查找满足特定条件的元素对或元素组合。使用两个指针分别从数组的两端开始,向中间逼近,根据元素之间的大小关系,调整指针的位置。
快慢指针(环形链表判断、链表中间节点): 在链表中判断是否存在环或找到链表的中间节点。使用两个指针,一个快指针每次移动两步,一个慢指针每次移动一步,根据指针的移动速度判断链表的性质。
Sometimes we face the erorr “Gem::FilePermissionError: You don’t have write permissions for the /Library/Ruby/Gems/x.x.x directory”. This error message indicates that the user doesn’t have the necessary permissions to install Ruby gems system-wide. This is because the system Ruby installation requires administrative privileges to modify its gem directory.
To resolve this issue, there is a few options:
1. Use a Ruby Version Manager (Recommended)
Instead of installing gems globally, consider using a Ruby version manager like rbenv
or RVM
. These tools allow you to manage multiple Ruby versions and gems without requiring administrative permissions.
Using rbenv
1. Install rbenv if you haven't already.
2. Install the desired version of Ruby using rbenv.
3. Install gems without needing elevated permissions.
Using RVM
1. Install RVM if you haven't already.
2. Install the desired version of Ruby using RVM.
3. Use the installed Ruby version without needing elevated permissions to install gems.
IO
Ruby程序在启动后会预先分配3个IO对象:
标准输入 - 预定义常量(STDIN), 全局变量($stdin)
标准输出 - 预定义常量(STDOUT), 全局变量($stdout)
标准错误输出 - 预定义常量(STDERR), 全局变量($stderr)
1 | $stdout.print "output something from $stdout\n" |
IO对象是否与控制台关联,我们可以通过**tty?**方法来判断。
1 | if $stdin.tty? |