记自旋触发内核看门狗导致系统重启的思考
问题描述业务中有用到一个驱动,但是加载这个驱动并使用他的一些功能时,会导致设备宕机重启。查看内核日志和转储宕机日志,发现时触发了内核软狗。
12cat /var/log/messagescat /var/crash/crash.txt
查看当前系统的看门狗超时时间,发现是5S,这个值一般默认是10 ...
浅谈Redis的HyperLogLog
前言很久之前面团子的时候没问到如何进行UV,PV统计,当时回答得不是很好,只是提到到可以用Redis的hyperloglog进行UV统计,但是如何进行统计,用了有什么好处,却不能回答上来。过去了这么久,最近忽然项目上某个点又让我想起这回事,于是回过来学习一遍。
UV统计比如我现在的博客,对于上面的每 ...
podman初体验
博主太懒了还没有更新…………….
离线编译syslog踩坑记录
博主需要改动`syslog-ng`的源码,并重新编译`syslog-ng`。但是编译环境存在各种受限。首先是是在内网环境中,不能在线安装相关依赖,再者就是编译环境的`Linux`发行版是定制的,虽然应该是基于`CentOS`改过来的,但是系统上做了啥处理,不说`yum`和`dnf`,最基本的`rpm`都没有,通过下载`rpm`包再安装到本地的方法都不能实现了。最后就是编译环境的那些基础C库都老的很,编译`syslog-ng`达不到最低版本要求,因此啥依赖都得自己下载源码编译过来。`pkg-config` 是一个用于管理和查询已安装库的工具,特别是在编译和链接阶段。它简化了编译和链接过程中的配置工作,确保编译器和链接器能够找到和使用正确的库及其依赖项。GLib是一个通用的跨平台 C 语言库,主要用于提供基础设施功能和通用编程工具。它是 GNOME 桌面环境和 GTK+ 库的基础,广泛用于各种 C 语言程序中。报错:configure: error: Glib headers inconsistent with current compiler setting. You might be using 32 bit Glib with a 64 bit compiler, check PKG_CONFIG_PATH
关于DNS的学习记录 其一
最近要做关于DNS服务收发包的业务,但是对于DNS实现的细节却不是很了解,于是抽空学习一下并记录一下。
DNS简介DNS(Domain Name System,域名系统)是互联网的重要组成部分,它将人类易读的域名(如google.com)转换为计算机易于处理的IP地址(如142.250.72.14) ...
Linux中Cron定时任务的踩坑
前言博主现在有个需求,需要定时执行一个脚本,于是在Linux环境中自然想到了cron。简单描述一下cron:
什么是 cron 服务?cron 是 Unix 和类 Unix 操作系统中的一个守护进程,用于根据预定的时间表自动执行任务。这个服务是操作系统的核心部分,允许系统管理员和用户计划周期性任务, ...
Linux中对CPU加压的思考
问题引出有个需求,要对服务打流量,从而让CPU占用达到峰值,进而查看系统的状态。但是由于基础设施的原因,只能通过ab打流量,因此我能打的流量的受限于客户机的带宽。这个时候怎么加ab的并发量和请求数,也只能让CPU的占用达到一个阈值。这个时候自然就想到直接上服务器,给它的CPU加压,达到加压测试的效果 ...
师大残酷青春物语
来深圳已经一周了,上周还在长沙和猪猡们在寝室开impact,现在就自己(其实也是双人间)在酒店,人去楼空,人走茶凉,物是人非,老男人干涩的眼眶里面也忍不住流出来两行浑浊的泪水。(不是)
师大最后的夜晚17号中午实验室吃了个饭,21级22级的都叫上了,卿哥勇哥也有,不过强哥得去批卷,没能够酣战一场,吃 ...
EasyExcel项目部署Linux服务器上报错空指针异常
EasyExcel项目部署Linux服务器上报错空指针异常;错误码为500的内部服务器异常,异常类型是:`java.lang.NullPointerException`,也就是空指针异常,而且报错信息竟然是无可用信息。日志根本看不出是什么原因造成了这个接口的错误。那么就看后台的日志吧,因为是通过`docker`部署的,那么直接`logs`查看日志:java.lang.NullPointerException: null at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264) at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219) at sun.awt.FontConfiguration.init(FontConfiguration.java:107) at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774) at sun.font.SunFontManager$2.run(SunFontManager.java:431) 结合上面的分析,可以知道,问题的根源就是:`alpine`的精简系统里面缺失基础字体!
解决JS通过Blob下载文件时文件损坏的问题
解决JS通过Blob下载文件时文件损坏的问题,当使用`Axios`发送请求时,设置`responseType`为`Blob`会告诉`Axios`将响应数据以二进制形式返回,而不是默认的JSON格式。如果不指定`responseType`,`Axios`将默认以JSON格式解析响应数据。结合上面所说,我的理解是二进制流本身是有个对数据要求很严格,而没指定返回类型,默认就把二进制流转成了字符串,而之后又把字符串转回`blob`对象的时候,中间可能就产生了意外的错误,比如编码格式啥的,进而造成二进制流损坏,也就是要下载的文件也损坏了;而从一开始指定为`blob`对象,接收到的二进制流是什么就是什么,中间不会再有变化。