Sunday, 24 of October 2043
12°C
Saturday, 25 of October 2043
18°C
Monday, 26 of October 2043
25°C
Wednesday, 28 of October 2043
10°C
Tuesday, 27 of October 2043
20°C

Sorry, but your browser does not support WebGL!

高性能 IO 的设计

一个内存数据库的设计与实现(一)

这是我看了《Redis 设计与实现》后一时兴起决定做的项目。它会帮助我熟悉高性能 IO、持久化机制甚至分布式算法。 高性能数据库少不了高性能的 I/O 模块。 高性能的 I/O 牵扯到特定的系统调用,而一般我们的服务器都使用 Linux 系统,所以下面也只讨论 Linux。 I/O 按其是否阻塞调用者可分为阻塞 IO(Blocking I/O,简称 BIO)与非阻塞 IO(NonBloc...

Redis 笔记

NoSQL 学习

Redis 是一个开源的内存型键值数据库,提供 5 种常用的数据结构,支持事务、持久化、Lua 脚本和多种集群方案等, 可应用作计数器、数据库缓存、热点数据缓存等。 底层数据结构与对象 Redis 数据库里面的每个键值对(key-value pair)的键与值都是对象(object),具体来说,键(key)总是一个字符串对象(string object); 而值(value)则可以是字符...

自己实现 Lua 虚拟机与编译器

项目回顾系列(一)

这是我很久前做的一个项目(commit 记录显示时间是 2019.10-2020.1),根据张秀宏前辈的《自己动手实现 Lua:虚拟机、编译器和标准库》 用 Go 实现的。因为代码量不小,很多函数书上都只有功能描述,具体实现都是自己独立完成的。项目做完体会还是很深的,但是 当时还没有记录项目体会的习惯。现在为了暑假实习,把它写上简历了,特地回来回顾一下。为减轻文章编写压力,下面很多的内容都摘...

Prefix Array and Monotone Stack

Common Algorithms Template Series (8)

Prefix array is an useful tool that helps to minimize the repeated calculation done in an array(original) and thus reduces the time complexity of your program. Usually, the prefix array has the sam...

用于超分辨率通用风格迁移的协同蒸馏

Collaborative Distillation for Ultra-Resolution Universal Style Transfer

这是对 Collaborative Distillation for Ultra-Resolution Universal Style Transfer 这篇风格迁移相关 paper 的翻译。原文可以在上面的 链接处下载。 Download Translated PDF 最后附上 GitHub:https://github.com/gonearewe

软件的密码保护原理

加密相关笔记

我们有一些数据或信息不想让别人知道,该怎么办呢。很多软件都会提供密码保护 功能,比如 word 可以加密你的文档,压缩包也可以加密,但它们是如何工作的呢? 我们以文档加密为例。 一个很笨的想法是保存用户设置的密码,以后使用是对输入的密码用 if-else 判断一下, 仅当密码正确时打开文档。但是,第一,我们竟然保存了用户密码;第二,我们的文档还是 明文保存的。倘若保存这两者的地方仅提供有...

基于 ScalaFX 实现压缩软件

一个简单压缩软件的设计与实现系列(四)

最后终于到了实现压缩软件的时候。 参考资料 我们的 GUI 基于 ScalaFX, 而它又基于 JavaFX。JavaFX 的示例与文档对于 ScalaFX 也很有帮助, 毕竟后者只是薄薄的一层包装。更何况后者自己的示例与文档实在是太简单太浅层了,能拿来参考 的太稀缺了。JavaFX 的官方资料貌似也很不全面,不过对于 get started 还足够,尤其是关于 UI 控件的教程;除此之...

发布 artifact 至 Maven Central

一个简单压缩软件的设计与实现系列(三)

前言 一般来说,发布(publish)是库开发的最后一步。Github 的 Release 模块就可以起到发布的作用。 但是,Java 系可是有着非常成熟的生态系统与包管理机制。所以我们今天将尝试把库发布到 Maven Central 中去,以后我们可以非常方便地通过 Maven 或 Gradle 引入这个依赖(dependency)。 第三方仓库 但是,Maven 中央仓库并不支持我...

Scala 7Z 压缩库的设计与实现

一个简单压缩软件的设计与实现系列(二)

在上篇文章中我们完成了技术选型,我们放弃了成熟的选用了 sevenzipjbind 作为压缩的核心。 sevenzipjbind 提供的 API 还残留着 C++ 风味,我们有必要自己再包装一层,把它 变成易用的 Scala API。所以我们干脆另起一个新项目,先来实现一个 SevenZ4S(Seven Zip for Scala) Library。 一开始,决定包装策略。先阅读项目 U...

简单汇编程序设计

《嵌入式系统设计与应用》课程要点

以 MCS-51 汇编为例。 循环(数组处理为例) 多字节二进制数减法 设被减数首地址存于 R0,减数首地址存于 R1,两个数的字节长度存于 R2,相减结果存于被减数所在单元, 多字节二进制数按低字节在前的顺序存放。 MSUB: CLR C ;清进位位 MSUB1: MOV A, @R0 ;被减数最低字节 SUBB A, @R1 ;减 ...