avatar
Articles
84
Tags
108
Categories
15
Home
Tags
Categories
Archives
Sitemap
中文
Mobility
Search
Home
Tags
Categories
Archives
Sitemap
中文

Mobility

About RocketMQ's readQueue and writeQueue
Created2019-05-18|Message Queue
Explaining why MessageQueue in RocketMQ is split into writeQueue and readQueue. First, let me briefly introduce what a queue in RocketMQ is. Here is an architecture diagram of RocketMQ found online.As we know, when using RocketMQ, we produce or consume against a specific topic. MessageQueue is a part of a topic, similar to the concept of partitions in Kafka. A queue is the minimum unit for consumer consumption, meaning the number of consumers cannot exceed the number of queues. A very speci...
A Powerful Tool for Data Analytics: Introduction to ClickHouse
Created2018-11-14|Database
ClickHouse is an open-source database for real-time data analytics developed by Yandex, initially used in multiple data analytics projects internally at Yandex. To introduce ClickHouse, we first need to introduce Yandex. ClickHouse’s emergence is closely related to Yandex’s business needs. Yandex is Russia’s largest search engine, with many data analytics projects. The largest of these by data volume is Yandex.Metrica, a website analytics service similar to Baidu Analytics, with data volume s...
Converting Between Uppercase and Lowercase Using Bitwise Operations
Created2018-11-14|Java
Bitwise operations are a widely used computation method in computer science. When used appropriately, they can greatly improve computational efficiency. Today, I’d like to introduce a clever application of bitwise operations: converting between uppercase and lowercase letters. To tackle this problem, we can first examine the ASCII code characteristics of uppercase and lowercase letters. As we can see, the ASCII code values of each pair of uppercase and lowercase letters differ by 32. In bi...
ActiveMQ Multi-threaded Consumption - Different Approaches
Created2018-09-16|ActiveMQ Series
In a previous article, I introduced the basic syntax for using ActiveMQ on the client side. It is worth noting the consumer side: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 public void consume() throws JMSException { ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(); cf.setBrokerURL("tcp://localhost:61616"); Connection connection = cf.createConnection(); connection.start(); Sessio...
Some Experience with Balance Deduction Under High Concurrency
Created2018-08-25|Architecture Design
Recently, I participated in optimizing an older billing system and learned some common techniques for balance deduction under high concurrency. I also tried some approaches, so I’m summarizing my findings here. Problem DescriptionFor a billing system, concurrency issues are actually divided into two categories. The first is high application concurrency—essentially a large number of users and high access volume. This type of problem is no different from general high concurrency problems and ...
Java Details: Ternary Operator and Autoboxing
Created2018-05-10|Java
Problem IntroductionI encountered an interesting problem today while scanning code with FindBugs — it’s about the ternary operator. Let me record it here. It’s about code like this: 12boolean b = true; Long a = b ? 0l : Long.valueOf(2); FindBugs gave the warning: “Boxed value is unboxed and then immediately reboxed” — meaning a boxed object is unboxed and then immediately reboxed. This problem is actually quite common. I didn’t pay much attention to it at first, and just habitually change...
Designing an Open-Source Beijing Subway Route Planner (Java Version)
Created2018-03-23|Java
OverviewI’ve been looking for an apartment recently, and I wanted to find a location that’s relatively convenient to get to several places. Checking the map manually was quite troublesome, so I decided to build a small tool for planning Beijing subway routes. This article briefly introduces the implementation process. The current functionality is relatively simple — the main method takes an input starting station and lists the routes with the minimum number of stops from all other stations to...
Redis Cluster Data Migration
Created2018-02-24|Redis Series
In a previous article Understanding Redis Cluster Principles Through Hands-on Practice, we briefly introduced the design principles of Redis Cluster. Data in Redis Cluster is distributed across 16384 slots according to certain rules, and these slots are mapped to different nodes based on the configuration. We know that after the cluster is running stably, data can still be transferred at the slot level. However, I’ve never been entirely sure about the specific transfer process, including clus...
JStorm Source Code Analysis: The Loop Task AsyncLoopThread
Created2018-02-08|JStorm Source Code Analysis
OverviewAsyncLoopThread is a custom loop task execution utility in JStorm. The implementation is not complex, and on its own may not warrant a dedicated article. However, it is so widely used in JStorm — for features such as supervisor/nimbus heartbeat, fetching new topologies, updating worker status, and many more — that it’s worth introducing here, as it will also help with reading other parts of the codebase. UsageAsyncLoopThread can actually be extracted and used in your own projec...
ActiveMQ Feature - Persistence
Created2018-02-02|ActiveMQ Series
IntroductionData persistence is a concern that many systems deal with, especially for systems like Redis and ActiveMQ where data is primarily stored in memory. Since data is stored in memory, there is a risk of data loss when the system crashes. The solution to this problem is to write data to disk through some mechanism — that is, persistence. ActiveMQ provides three persistence methods, based on JDBC, KahaDB, and LevelDB respectively. Currently, the officially recommended method is KahaDB-b...
1…456…9
avatar
SandGrid
Mobility | Expanding life's choices
Articles
84
Tags
108
Categories
15
Follow Me
Announcement
Backend Dev | Architecture | AI Practice
Expanding choices through code
Recent Posts
Automating Hexo Theme Migration with AI Agent: From Next to Butterfly2026-05-28
How I Recovered My Blog After Vercel Banned 163 Email2026-05-11
Using LLM to Manage Security Development Standards - An llm-wiki Practice2026-05-11
Vaadin Framework Tutorial: A Frontend Development Guide for Java Engineers2024-03-06
An Easy Way to Build a Multi-Language Blog with Hexo2024-01-23
Categories
  • AI Practice2
  • ActiveMQ Series4
  • Algorithm1
  • Architecture Design5
  • Big Data8
  • Book Notes2
  • Cloud Native4
  • Database4
Tags
high-concurrency-design java hexo monitoring hawtio internet-advertising high-concurrency-solutions security-standards high-concurrency continuous-integration unit-testing llm zookeeper blog-setup hbase kryo activemq big-data practice jstorm json distributed-systems cloud-native knowledge-management chrome-extension open-source-project tools logical-thinking redis distributed-system-design database lua canary mysql logging software-engineering systems-thinking personal-growth algorithm database-transactions
Archives
  • May 2026 3
  • March 2024 1
  • January 2024 1
  • December 2023 1
  • January 2023 1
  • December 2022 1
  • May 2022 1
  • April 2022 1
Website Info
Article Count :
84
Total Word Count :
64.5k
Unique Visitors :
Page Views :
Last Update :
© 2025 - 2026 By SandGridFramework Hexo 8.1.2|Theme Butterfly 5.5.4
Search
Loading Database