0%

近期把博客升级为HTTPS访问了。记录一下升级过程。

泛域名证书

为了在网站上启用 HTTPS,需要从证书颁发机构申请 SSL 证书。Let’s Encrypt 是一个证书颁发机构,向 Let’s Encrypt 申请证书是免费的。Let’s Encrypt 支持泛域名证书,可以满足我不想为每个子域名单独申请证书的要求。目前常用的 Let’s Encrypt 证书生成工具有 certbotacme.shacme-tiny,我使用的是 acme.shacme.sh 申请和安装泛域名 SSL 证书相对来说是比较方便的。

阅读全文 »

基本

安装

以Ubuntu为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world
阅读全文 »

Git LFS

Git LFS(Large File Storage,大文件存储)协议,可以把音乐、图片、视频等指定的任意大文件资源存储在Git仓库之外,对于使用者而言,类似在操作一个完整的Git仓库,非常方便。通过将大文件存储在Git原有的数据结构之中,可以减小Git仓库本身的体积,使克隆Git仓库的速度加快,也使得Git不会因为仓库中充满大文件而损失性能。

阅读全文 »

在探索ROS下一代通信系统的选项时,最初的选择是改进ROS 1的传输,或者使用ZeroMQ、Protocol Buffers和zeroconf(Bonjour/Avahi)等组件库构建一个新的中间件。然而,除了这些选项(这两个选项都涉及到我们从头开始构建一个中间件),ROS项目组还考虑了其他端到端的中间件。在研究中,一个中间件脱颖而出,那就是DDS。

使用端到端中间件(如DDS)的好处是,需要维护的代码要少得多,而且中间件的行为和确切规格已经被提炼成文档。有了这种具体的规范,第三方可以审查、审计和实施具有不同程度的互操作性的中间件。此外,如果要从现有的库中构建一个新的中间件,无论如何都需要创建这种类型的规范。

阅读全文 »

DDS(数据分发服务)是一套通信协议和API标准,以数据为中心是他的特点,它基于发布-订阅模型进行设计。而FastRTPS是eProsima公司对DDS的一个开源实现。DDS是一套中间件,提供介于操作系统和应用程序之间的功能,提供了低延迟、高可靠的通信以及可扩展的架构。DDS其实分为两部分,一部分是DDS规范,一部份则是DDSI-RTPS协议,是一个互操作性协议,也就是真正实现通讯机制的部分,在ROS2中,也正是这部分,取代了ROS1的TCPROS和UDPROS。

阅读全文 »

JDK 中提供了一系列场景的并发安全队列。总的来说,按照实现方式的不同可分为阻塞队列和非阻塞队列,前者使用锁实现,而后者则使用CAS 非阻塞算法实现。

阅读全文 »

ReentrantLock 是独占锁, 某时只有一个线程可以获取该锁,而实际中会有写少读多的场景,ReentrantReadWriteLock 应运而生。ReentrantReadWriteLock 采用读写分离的策略,允许多个线程可以同时获取读锁。

读写锁的内部维护了一个ReadLock 和一个WriteLock ,它们依赖Sync 实现具体功能。

阅读全文 »