Database synchronization tool Debezium

The data in our database is always changing, and sometimes we want to listen to the changes in the database data and react according to the changes, such as updating the cache corresponding to the changed data, incrementally synchronizing to other data sources, detecting and auditing the data, and so on. And this technology is called Change Data Capture. For this technology we may know a well-known domestic framework Canal

Design and Implementation of Redis 7.0 Multi Part AOF

Redis is a very popular in-memory database that allows for very high read and write performance by keeping data in memory. However, once a process exits, all of Redis’ data is lost. To solve this problem, Redis provides two persistence schemes, RDB and AOF, to save data in memory to disk and avoid data loss. In this article, we will focus on the AOF persistence scheme, some of its problems,

How to set up an Nginx server on Debian 10

server is an Nginx directive that defines domain-specific settings so that you can run multiple websites on a single server. For each site, you can set up the site document root (the directory containing the site files), create separate security policies, use different SSL certificates, and more. This tutorial describes how to set up an Nginx server on Debian 10. Prerequisites Make sure you meet the following prerequisites. A domain name pointing to your public server IP.

The "perfect" solution to IPv6 and Gigabit bottlenecks with "dual network cable" bypass routing

Bypass routing is a homelab common requirement, the main route with hard routing to ensure stability, such as using Mikrotik’s RouterOS router as the main route, bypass routing using OpenWrt as a soft route to achieve advanced features such as ad filtering and tunneling, these functions are often not hardware accelerated and need to consume a lot of CPU to complete, x86 high performance soft routing is a very suitable choice.

Debugging Linux kernels with Qemu and GDB

Using Qemu to debug the Linux kernel is a convenient way, so I recently did some practice and documented the general steps and some of the pitfalls. Environment Since I am at home on a long vacation, I only have a MBP with MacOS available, and it is easier to develop and debug Linux kernel in a Linux environment, so I created a virtual machine with Ubuntu 18.04 installed using

Case sharing of JMH and Arthas positioning issues

I would like to summarize what I’ve been using in my recent work, the testing tool JMH and the Java runtime monitoring tool Arthas, which have helped me in my actual work. So here’s how to use these tools. I also want to deepen my familiarity with these tools. For these two tools, I will first briefly introduce the general usage scenarios of these tools, and then I will use

Up to 1400% Performance Improvement, Raspberry Pi 32-bit/64-bit System Comparison Test

Last week, the Raspberry Pi released its long-awaited 64-bit Raspberry Pi OS, which theoretically allows users to take better advantage of 64-bit processors (newer versions of the Raspberry Pi already have 64-bit processors), support more than 4GB of RAM (the Raspberry Pi 4B comes with up to 8GB of RAM), and perform better when working with multimedia content. Although this is theoretically true, how do 32-bit and 64-bit perform in actual tests?

Communicating with C++ code in NodeJS

I recently encountered a problem in my project where I needed to call C++ code in NodeJS, so here’s a quick summary. The main options In NodeJS, there are two main options for communicating with code written in other languages. Using the AddOn technique, write an extension to NodeJS using C++ and then call the source code or dynamic libraries written in other languages in the code using the FFI (Foreign Function Interface) technique, which brings in dynamic libraries written in other languages directly in Node A comparison of these two approaches shows that each has its own advantages and disadvantages.

The underlying implementation of pointers and references in C++

References are an important feature introduced in C++ as opposed to C. They make the syntax much more concise in many places, but how are they actually implemented underneath? In Wikipedia, pointers are described as follows. In computer science, a pointer is a programming language object that stores the memory address of another value located in computer memory. A pointer references a location in memory, and obtaining the value stored

Vue3 - Responsive Principle Explained

Vue3.0 pre-alpha version was officially released on October 5, 2019, followed by more than 500 PRs and 1000 commits over the next few months, and finally Vue3.0 alpha.1 was released on January 4, 2020. the core code of Vue3.0 is basically complete, and the main work left so far is server-side rendering, which the Vue team is actively working on. The Vue team is also actively working on it. The

Does anyone remember the ideal and proud BSD before Linux?

What would the world be like without Linux? More than twenty years ago, Linus Torvalds, the father of Linux, said, “If 386BSD had been available before I created Linux, then Linux might not have been born.” Later, when people look back and reflect, there is no shortage of people who think: “If Linux had not flourished, FreeBSD would have filled the void today.” BSD (Berkeley Software Distribution, also known as Berkeley Unix), the most inextricable offshoot of Unix, had its cradle at the University of California, Berkeley, the most radical leftist stronghold in the United States at the time.

Github launches "sponsor-only" repository, develops new features based on sponsorship amounts

With the call for companies to give back to open source authors, Github has launched a new " Sponsor Repository": this repository is only accessible by sponsors, and developers can set sponsorship levels (up to ten) based on the amount of sponsorship, with each level of sponsorship enjoying different features (similar to the game vip1-vip10?). Once a sponsor provides a developer-defined amount of sponsorship, access to various features is automatically granted by the GitHub platform, and access is automatically withdrawn once the sponsor stops funding.

Tips for using Bash History

Bash is a common shell environment and most Linux distributions also come with Bash, so using history efficiently can save the time of manually typing repetitive commands. In this article, I share a few tips and configurations that I use myself. Search This technique should be more or less known to everyone, that is, press Ctrl-R in the input screen to search, the returned result is the latest matching command, and then press enter to execute.

Getting to Know the Power of Ast

The abstract syntax tree is an intermediate product of the compilation process, and is generally just a simple thing to understand. But we can take the whole parser and ast package from Go and use it directly, which can be very powerful in some scenarios. What is ast? I took an excerpt from Wikipedia. In computer science, an Abstract Syntax Tree (AST), or Syntax tree for short, is an abstract

Where did goexit come from?

A colleague saw the puzzling goexit when debugging with dlv: what is the goexit function and why is it on top of go fun(){}()? It looks like an “exit” function, so why is it at the top? In fact, if you have seen the pprof flame chart, you will often see the goexit function. Let’s reproduce it with an example. 1 2 3 4 5 6 7 8 9 10 11 package main import "time" func main() { go func () { println("hello world") }() time.

Swift and C++ Interoperability Working Group Formed

Recently the Swift community released an announcement that in order to further provide interoperability support between Swift and C++, they formed the Swift and C++ Interoperability Working Group as part of the Swift project. The role of this new working group is to develop and design an interoperability model between C++ and Swift developed by Apple. In the announcement, Swift developer Alex Lorenz said that the reason for the Swift and C++ Working Group is that there is already significant developer interest in bi-directional interoperability between the two languages.

2021 JavaScript Star Projects

This article is about the JavaScript Rising Stars’ 2021 Year in Review of the JavaScript space, based on the number of stars each project has added to GitHub in the last 12 months. The following sections are included. Most Popular Projects Front-end frameworks Node.js frameworks Build tools Vue ecosystem React Ecosystem CSS in JavaScript Testing frameworks Mobile Development Desktop Development Static Site Builder State Management GraphQL Most Popular Items zx Vite Next.

Getting Started with OpenTelemetry

Previously, OpenTelemetry officially entered the Beta phase, which marked the formalization of the basic OpenTelemetry model to begin integrating OpenTelemetry into applications and client libraries to capture application-level metrics and distributed traces. Introduction to OpenTelemetry This section focuses on what OpenTelemetry is, or you can skip this section if you already know it. Observability is one of the very important metrics for software. the OpenTelemetry project provides a set of

Comparison of NATS-Server (JetStream) and NATS Streaming Server

After I have complained countless times, NATS JetStream has finally ended its beta phase and entered the RC phase. Finally, I’ve just gotten an official reply that the official version will be released after a few issues are addressed. So on the occasion of this important NATS-Server feature release, let’s talk about the differences between the NATS product itself and the use of the new features, as well as more

Running dapr in a non-container (cluster) environment

dapr, which I have been following for some time, has been officially released in v1.0 (in fact, v1.0.1 was updated when this article was published), which means that dapr has entered a stable state to some extent and can be tried in practice. As a project I’ve been following, I tried it out in the first place and tried to introduce it into a real project, and this article is