• Ubuntu创建分页文件

    本文将介绍如何在 Ubuntu 系统中创建分页文件。 为什么需要当系统的物理内存不足时,如果没有分页文件作为临时缓冲,系统可能会触发 OOM Killer 来终止一些进程以释放内存,这可能导致服务中断等异常情况。 分页文件则可以作为物理内存耗尽前的缓冲,将当前内存中不活跃的数据“交换”到文件系统中,从而给活跃进程留出更多的内存空间。 如何使用分页文件创建分页文件在根目录创建一个名为 swapfile 的 1GB 分页文件: 123sudo fallocate -l 1G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfile 随后使用 swapon 命令来挂载该分页文件: 1sudo swapon /swapfile 最后验证是否生效: 12swapon --showfree -h 开机自动挂载分页文件要想让分页文件在系统启动时自动挂载,需要编辑 /etc/fstab 文件,添加一行 /swapfile none swap sw 0 0: 1echo "/swapfile none swap sw 0 0" | sudo...
  • 某即时通讯软件的逆向工程——数据库解密

    本文记录了我对某个用于商家询盘的即时通讯(IM)软件的本地数据库的逆向工程过程。主要介绍了如何通过 IDA Pro 调试来分析其数据库文件的加密机制。

  • 数学建模基础

    本文是张文宇老师的数学建模培训课程的大纲整理。

    认识数学建模

    数学建模简介

    数学建模(Mathematical Modeling) 是利用数学语言(符号、公式、图表等)来模拟并解决现实世界中实际问题的一种方法。它是一个将现实问题抽象化、简化,建立数学结构,并完成求解和分析的过程。

    数学建模的本质是:

    • 翻译(Translation):将现实问题转化为数学问题;
    • 求解(Solution):利用数学工具和方法解决数学问题;
    • 解释(Interpretation):将数学结果带回现实世界成为解决方案。

    数学建模通常用于理解物理世界规律、预测未来趋势、优化决策和控制过程等方面。参与数学建模要求具备跨学科综合应用能力、逻辑思维能力、团队协作能力和科研素养。

  • 《终末地》CBT3逆向工程2:PCK文件解密

    《终末地》CBT3逆向工程2:PCK文件解密

    本文记录了我对 Unity 游戏《明日方舟:终末地》(简称《终末地》)全面测试版本中的 PCK 文件的逆向工程过程。

  • 《终末地》CBT3逆向工程1:VFS资源存储解密

    《终末地》CBT3逆向工程1:VFS资源存储解密

    本文记录了我对 Unity 游戏《明日方舟:终末地》(简称《终末地》)全面测试版本中的 VFS 资源存储逻辑的逆向工程过程。主要介绍了如何通过对反编译代码的静态分析,结合调试器的动态分析,解析《终末地》的 VFS 资源存储格式,并实现解析工具。

  • Ubuntu自定义欢迎消息

    本文将介绍如何自定义 Ubuntu 系统远程 SSH 登录时显示的欢迎消息。

    动态消息

    默认情况下,欢迎消息可能形如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Welcome to Ubuntu xx.xx LTS (GNU/Linux xxxxxx)

    * Documentation: https://help.ubuntu.com
    * Management: https://landscape.canonical.com
    * Support: https://ubuntu.com/advantage

    System information as of xxxxxx

    System load: x.x Processes: xxx
    Usage of /: xx.x% of xx.xxGB Users logged in: x
    Memory usage: xx% IPv4 address for eth0: xx.xx.xx.xx

    ...

    0 updates can be applied immediately.

    Last login: xxxxxx from xx.xx.xx.xx

    这些消息大部分是是动态生成的,即每一次显示的消息都可能是不一样的。

    它们是 /etc/update-motd.d/ 目录下的多个脚本文件按照一定的顺序运行后生成的。

  • 计算机视觉导言

    本文是 鲁鹏 教授的《计算机视觉与深度学习》(2022 年)课程的一部分。 前言计算机视觉简介计算机视觉是研究如何使计算机能够“看”的学科。它的目标是让计算机能够处理和理解图像和视频数据。 观察人类视觉系统,可发现它存在诸多优势和弊病(此类弊病是为了适应环境而产生的,从进化的角度来说并非弊病)。 计算机视觉的两个主要研究方向是三维重建和语义信息提取(图像理解) 。 本课程介绍本课程聚焦于视觉识别任务中最基础也最为重要的任务——图像分类。除此之外,还会涉及一些衍生任务,包括目标检测、图像分割、图像描述、图像生成等。 对于这些任务而言,基于卷积神经网络(CNN) 的深度学习方法是目前(21 世纪初)最为有效的解决方案。卷积神经网络始于 1998 年的 LeNet。在 2015 年,在 ImageNet 数据集上的图像分类任务上,计算机的准确率已经胜过人类。 本课程会讲解多种深度网络结构(包括全连接神经网络、卷积神经网络、循环神经网络、变分自编码网络、生成对抗网络等)。 相关课程 CS131: Computer Vision: Foundations and Applications ...
  • 开始上手OhMyZsh

    本文是作者在 Ubuntu 系统上配置 zsh 和 Oh My Zsh 的记录。

    为什么需要

    zsh 是一个功能强大的 Shell,提供了比 bash 更丰富的功能和更好的交互体验。

    Oh My Zsh 是一个开源的 zsh 配置框架,允许用户便捷地安装插件和主题,从而更加高效地使用 zsh。

    安装步骤

    安装 zsh

    在 Ubuntu 中,使用以下命令安装:

    1
    2
    sudo apt update
    sudo apt install zsh -y
  • LZ4压缩算法的块数据格式解析

    本文是针对 LZ4 Block Format Description 的部分内容的翻译和综述,解释了 LZ4 压缩算法的块数据的格式规定。

    前言

    LZ4 是使用了“固定的面向字节的编码格式”的一种 LZ77 类型的压缩算法。本文介绍的是块数据(Block)的格式规定,不涉及熵编码器(Entropy Encoder)和成帧层(Framing Layer),也不涉及压缩或解压算法的具体实现。

    术语

    • 序列(Sequence)是组成块的基本单位。
    • 字面量(Literal)是未经过压缩的原始数据。
    • 匹配复制(Match Copy)是将“先前出现过的字面量”的值复制到新位置的操作。
    • 标志符(Token)是序列最开头的 1 Byte。
    • 偏移量(Offset)是匹配复制操作中定位“先前出现过的字面量”的依据。
    • 匹配长度(Match Length)是匹配复制操作中需要复制的字面量的长度。
  • 开始上手Nginx服务器

    本文是作者在 Ubuntu 系统上部署 Nginx 服务器的记录。

    Nginx 基础

    简介

    Nginx 是一个高性能的服务器应用程序,由俄罗斯工程师 Igor Sysoev 于 2004 年开发。它主要被用于搭建HTTP 服务器反向代理服务器负载均衡服务器等各类 Web 服务器。

    Nginx 的主要优势在于高并发和高能效。它采用异步、非阻塞的事件驱动架构,能处理大量并发请求(10K 量级)。同时,在相同的硬件条件下,Nginx 的 CPU 和内存消耗要低于同类产品 Apache。

    安装方法

    安装 Nginx:

    1
    2
    sudo apt update
    sudo apt install nginx -y

    确保 Nginx 已启动且已设置开机自启动:

    1
    2
    3
    sudo systemctl start nginx
    sudo systemctl enable nginx
    sudo systemctl status nginx

    访问 http://<服务器地址>,若能显示出默认的 Nginx 欢迎页面(Welcome to Nginx),则表示安装成功。若无法访问,请检查服务器端的防火墙配置。

    Hello World

    以下内容演示了如何利用 Nginx 在本地的 80 端口部署一个简易的静态网站

123