哈喽大家好,我是咸鱼。 最近一直在折腾博客的事,说是hexo极易上手,我觉得只仅限于在安装部署的时候,随着对hexo的深入使用,发现遇到的问题还是挺多的。 那今天来讲一下我在把本地图片插入到hexo博客文章中遇到的坑。 遇到的问题 这是我的hexo环境: hexo:7.2.0 node:18.20.0 npm:10.5.0 除此之外,我还安装了一个图片路径转换的插件:hexo-asset-image,版本是1.0.0。 Hexo配置文件_config.yml里有下面这个配置,且将其置为true post_asset_folder:true 这个功能实际上是Hexo官方文档中提到的资源文件夹...

  FJCVMCRMBw1f   5天前   17   0   0 Linux

哈喽大家好,我是咸鱼。(博客网址:https://xxxsalted.github.io/) 在搭建了博客并换了主题之后,发现有许多细节方面的东西还需要完善和定制化一下,比如说行距和引用的样式我不是很喜欢,以及没有评论功能。 于是决定自己动手,说干就干。 PS:下文的修改操作仅限于博客主题(Klise),不同主题的配置文件可能会不一样,不过大体思路都是差不多的,即修改scss|config|ejs文件。 Valine评论系统 搜了网上的教程,决定采用Valine来实现博客评论功能。 因为Valine的存储是基于LearnCloud的,所以我们要先注册一个LeanCloud账号。 登录之后...

  FJCVMCRMBw1f   15天前   20   0   0 Linux

哈喽大家好,我是咸鱼。 说到Linux定时任务,大家用得最多的就是crond服务,但其实systemd也有类似的功能。我们不但可以通过systemd来管理服务,还能设置定时任务,那就是systemdtimer。 与crond相比,systemd定时任务具有以下优点: 更高的精度:systemd定时任务可以精确到秒,而crond只能精确到分钟。 可以限制资源使用:使用systemd定时任务可以设置内存和CPU的使用限制,比如最多使用50%的CPU。 更灵活的配置:systemd定时任务可以通过条件、依赖关系等进行配置,以控制任务的执行。相比之下,crond的配置相对简单,灵活性较低。 举个例...

  FJCVMCRMBw1f   28天前   25   0   0 Linux

哈喽大家好,我是咸鱼。 我们知道CentOS7之后,Systemd代替了原来的SystemV来管理服务,相比SystemV,Systemd能够很好地解决各个服务间的依赖关系,还能让所有的服务同时启动,而不是串行启动。 通常情况下,yum安装的软件会由系统的包管理器(如RPM)安装,并且会配置相应的systemd服务,因此由systemd来管理。然而,在一些情况下,特别是当采用源码编译安装软件或者软件本身并没有提供systemd管理的解决方案时,就需要手动编写systemd服务文件(service文件)来管理这些软件。 那今天我们就来看看手动编写systemd服务文件来管理软件时发现的一些问题。...

  FJCVMCRMBw1f   2024年04月01日   39   0   0 Linux

哈喽大家好,我是咸鱼。 今天分享一个在压测过程中遇到的问题,当时排查这个问题费了我们好大的劲,所以我觉得有必要写一篇文章来记录一下。 问题出现 周末在进行压测的时候,测试和开发的同事反映压测有问题,请求打到A服务上被拒绝了。 我们登录服务器查看A服务的日志,发现频繁地报Toomanyopenfiles错误,可以看到压测的时候该进程要处理大量的socket,导致打开的文件描述符数量已经达到了操作系统允许的最大限制,因此无法再打开更多的文件。 java.io.IOException:Toomanyopenfiles ... 既然是系统资源相关的问题,我们先ulimit-n看一下系统中进程能够使...

  FJCVMCRMBw1f   2024年03月22日   15   0   0 Linux

哈喽大家好,我是咸鱼。 今天收到了一个告警,说有台服务器上的swap过高,已经用了50%以上了。 登录机器查看一下内存以及swap的使用情况。 [root@localhost]free-h totalusedfreesharedbuff/cacheavailable Mem:62G27G2.9G568M32G33G swap:16G8.3G8.1G 可以看到还有2.9G的空闲物理内存,但是系统已经开始使用swap了,初步判断是机器上面的程序内存需求比较大,但物理内存不够用所以开始使用swap来存储部分数据。 什么是swap swap顾名思义指的是Linux上的交换分区,有点像Windows的...

  FJCVMCRMBw1f   2024年03月13日   54   0   0 Linux

哈喽大家好,我是咸鱼。 今天咸鱼列出了一些大家在初学Python的时候容易踩的一些坑,看看你有没有中招过。 原文:https://www.bitecode.dev/p/unexpected-python-traps-for-beginners 不明显的字符串拼接 Python在词法分析的时候会把多个字符串自动拼接起来。 data="very""lazy" print(data)verylazy 这个特性可以让我们在声明一个长字符串的时候可以分成多行来写,这样看起来比较优雅。 msg=( "Iwantthistobeonasinglelinewhenitprints" "butIwantitt...

  FJCVMCRMBw1f   2024年03月11日   44   0   0 Python

哈喽大家好,我是咸鱼。 之前写过两篇关于SSL过期巡检脚本的文章: SSL证书过期巡检脚本 SSL证书过期巡检脚本(Python版) 这两篇文章都是讲如何通过脚本去自动检测SSL过期时间的,当我们发现某一域名的SSL证书过期之后,就要及时更换。 如果这个域名下有很多服务器,我们一台一台手动登录机器然后更新证书的话效率是非常低的,所以我们可以通过一些自动化运维工具去完成这些大量重复的工作。 像ansible、puppet这类工具也可以实现同样的效果,但是咸鱼这边主要用的还是saltstack,所以今天介绍一些如何通过saltstack去批量更新SSL证书。 关于saltstck的介绍: 干...

  FJCVMCRMBw1f   2024年02月26日   64   0   0 Linux

哈喽大家好,我是咸鱼。 好久不见,最近有一个很火的CVE——runc容器逃逸漏洞。年前的时候我们已经在测试环境进行了相关操作打算年后线上进行修复。 因为今天咸鱼才开工,所以文章也就拖到了现在😃 漏洞介绍 简单来讲,docker-runc是一个用Go语言编写的CLI工具,它利用Linux的核心功能(如cgroups和命名空间)来创建和运行容器。 由于runc内部不正确处理文件描述符,导致泄漏关键的宿主机文件描述符到容器中。 容器逃逸方式: 攻击1:利用文件描述符泄漏,特权用户执行恶意容器镜像,导致pid1进程在宿主机挂载命名空间中拥有工作目录,从而允许对整个宿主文件系统的访问。 攻击2:在...

  FJCVMCRMBw1f   2024年02月21日   192   0   0 信息安全

哈喽大家好,我是咸鱼。 想必上网冲浪的小伙伴最近都被《幻兽帕鲁》这款游戏刷屏了。 (文中图片均来自网络,侵删) 幻兽帕鲁是Pocketpair打造的一款开放世界的生存建造游戏。在游戏中,玩家捕捉各种各样的“帕鲁”。 “帕鲁”在玩家支配下,完成不同的工作、任务,像极了现实中的打工人(破防了家人们)。 在游戏中体验当资本家的快乐,一下子戳到了打工人社畜们的心上,类似的带有强共情的玩家评论非常多: “你不干有的是帕鲁干。” “周日玩帕鲁,周一变帕鲁。” “上班当了一天的帕鲁,下班了打开电脑轮到我当资本家了。” 但是游戏的火爆和在线玩家数量的飙升导致官方的服务器性能跟不上,许多玩家反馈...

  FJCVMCRMBw1f   2024年02月19日   67   0   0 Linux

哈喽大家好,我是咸鱼。 接触过Linux的小伙伴们都知道在Linux(或者说类Unix)中,有三种类型的用户: 超级用户(UID为0):即root用户,拥有最高权限。 系统用户(UID为1999):系统内建用户,用于运行系统服务和守护进程。 普通用户(UID为100060000):为了让使用者能够使用Linux系统资源而建立的,用户新建的账号一般就是普通账号。 那么现在问题来了,如何快速找出Linux中的真实用户(root用户和普通用户)? 正式开始之前,我们先介绍一个工具——getent getent命令 getent其实是"getentries"的缩写,功能是用于查看系统数据库中(包括...

  FJCVMCRMBw1f   2024年02月19日   117   0   0 Linux

哈喽大家好,我是咸鱼 IPv4(InternetProtocolversion4)是互联网上使用最广泛的网络层协议之一,于1981年在RFC791中发布,它定义了32位的IP地址结构和基本的协议操作。 由于IPv4使用32位的地址,因此只有四十亿(4,294,967,296,2^32)个地址。 这就导致随着地址不断被分配,IPv4地址开始面临枯竭问题: 2011年,互联网分配与分配机构(IANA)正式宣布IPv4地址用尽 由于IPv4地址短缺,一些机构开始收费分配IPv4地址,推动更多组织采用IPv6 IPv4枯竭,升级IPv6任重道远。 今天我们来看一篇文章,看看向IPv6迁移会遇到什么...

  FJCVMCRMBw1f   2024年01月26日   64   0   0 翻译区

哈喽大家好,我是咸鱼。 前天有个小伙伴找到我,给了我一段python代码: a=[1,2] a[1]=a print(a[1]) 然后问我为什么结果是[1,[...]],我一看这个问题有意思,我说三言两语解释不清楚,我写篇文章到时候你看下吧,于是有了今天这篇文章。 在正式开始之前,让我们先弄清楚一些概念。 对象?变量?引用?赋值? "Python中一切皆对象",相信这句话大家在学习Python的时候都已经听的耳朵起茧子了吧。 在Python中,所有的数据都是对象,包括基本数据类型(例如整数、浮点数、字符串等)以及用户自定义的类型(类的实例等)。 而对象其实是内存中分配的一块空间,用来存储其值...

  FJCVMCRMBw1f   2024年01月25日   19   0   0 Python

哈喽大家好,我是咸鱼 我们经常听到“Python太慢了”,“Python性能不行”这样的观点。但是,只要掌握一些编程技巧,就能大幅提升Python的运行速度。 今天就让我们一起来看下让Python性能更高的9个小技巧 原文链接: https://medium.com/techtofreedom/9-fabulous-python-tricks-that-make-your-code-more-elegant-bf01a6294908 字符串拼接的技巧 如果有大量字符串等待处理,字符串连接将成为Python的瓶颈。 一般来讲,Python中有两种字符串拼接方式: 使用该join()函数将字符串...

  FJCVMCRMBw1f   2024年01月08日   16   0   0 Python

哈喽大家好,我是咸鱼 我们在使用sorted()或map()函数的时候,都会看到里面有一个key参数 其实这个key参数也存在于其他内置函数中(例如min()、max()等),那么我们今天就来了解一下key参数的含义以及用途吧! 原文:https://www.thepythoncodingstack.com/p/the-key-to-the-key-parameter-in-python sorted()中的key 我们来看下面这段代码: some_numbers=[ 3.14159, 2.71828, 6.022e23, 6.626e-34, 299_792_458, 6.674e-11, ...

  FJCVMCRMBw1f   2023年12月26日   21   0   0 Python

哈喽大家好,我是咸鱼 我们知道Python是一门具有动态特性的语言,在编写Python代码的时候不需要显式地指定变量的类型 这样做虽然方便,但是降低了代码的可阅读性,在后期review代码的时候容易对变量的类型产生混淆,需要查阅大量上下文,导致后期维护困难 为了提高代码的可读性、可维护性,Python在PEP484中引入了类型提示(typehinting)。类型提示是Python中一个可选但非常有用的功能,可以使代码更易于阅读和调试 关于类型提示的介绍可以看: https://realpython.com/python-type-hints-multiple-types/use-pythons...

  FJCVMCRMBw1f   2023年12月22日   21   0   0 Python

当你打开终端并输入命令时会发生什么?(下) 哈喽大家好,我是咸鱼 我们先来大致回顾一下文章《当你打开终端并输入命令时会发生什么?(上)》的内容 终端设备是由电传打字机演变过来的,电传打字机通过物理线与大型计算机连接在一块来实现输入输出如上图,分别是二战时期的电传打字机和西门子“Fernscheiber100”电传打字机 随着技术的不断发展(尤其是显示技术),带显示屏的终端设备随之诞生而现在随着个人电脑的普及,出现了基于屏幕显示的图形用户界面(GUI),演变成了现在的计算机终端 现在的终端大多都是计算机上的一个应用程序,它们通常被称为终端模拟器,充当用户与操作系统交互的界面(比如说Linux中的...

  FJCVMCRMBw1f   2023年12月16日   61   0   0 Linux

哈喽大家好,我是咸鱼 参加过校招面试的小伙伴们肯定对下面这道面试题很熟悉:“当你在浏览器输入一段网址后会发生什么?”。这道面试题可以说是很经典了,因为其涉及大量网络协议,可以非常直观的看出小伙伴们对计算机网络体系的整体把握程度 但如果问题换成:“当你打开终端并输入ls时会发生什么?”,有多少小伙伴能够回答出来呢? 终端的前世今生 大多数现代终端应用程序的工作方式都来自于其历史前辈——电传打字机(teletypes,简称tty) 在大型计算机的时代,当时数据存储在磁带上,计算机的内存以kB为单位,电传打字机就是为了它们而被设计出来 如上图,左边的是IBM2741电传打字机,右边是IBMSyst...

  FJCVMCRMBw1f   2023年12月14日   13   0   0 Linux

哈喽大家好,我是咸鱼 当我们在学习Python的时候,可能会经常遇到单下划线_和双下划线__这两种命名方式 单下划线_和双下划线__不仅仅是只是一种简单的命名习惯,它们在Python中有着特殊的含义,对于代码的可读性和功能实现有着关键的作用。 那么今天我们来看一看在Python中单下划线和双下划线的用法和意义 前导单下划线 前导单下划线(LeadingSingleUnderscore)通常用于命名变量、方法和属性,表示这些命名的元素是【私有】的或者说是【内部使用】的。 这种命名约定并不是严格的语言规则(即非强制性),而是一种约定,告诉开发人员该对象不应该被外部直接访问或修改 _internal...

  FJCVMCRMBw1f   2023年12月01日   19   0   0 Python

哈喽大家好,我是咸鱼 今天我们继续来讲一讲Kafka 当有消息被生产出来的时候,如果没有指定分区或者指定key,那么消费会按照【轮询】的方式均匀地分配到所有可用分区中,但不一定按照分区顺序来分配 我们知道,在Kafka中消费者可以订阅一个或多个主题,并被分配一个或多个分区如果一个消费者消费了多个分区,某些场景下消费者需要顺序地消费消息,但消息并不是按照顺序分配给分区的,所以就不一定能够保证消息消费的全局顺序性 比如下图中Msg0002消息并不是在Msg0001消息之后的,就有可能导致消费者先把Msg0002消息给消费,Msg0001消息才被消费那么这种情况该怎么解决?如何尽可能地保证消息消费的...

  FJCVMCRMBw1f   2023年11月28日   18   0   0 Linux
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~