Weekly Technical Report for the Fourth Week of November 2022

This week, my main task was optimizing a Java service that exhibited abnormal timeout behavior. Even under low production traffic, the service experienced batch timeouts. At the same time, CPU usage remained consistently low and never increased under load. This strongly suggested that the system was not CPU-bound, but rather blocked on some operations. Most services I have worked on, including this one, are IO-intensive. They rely heavily on RPC calls, where worker threads often block while waiting for responses. To mitigate this, such systems typically use a large number of worker threads to ensure that new requests can still be processed even when many threads are blocked. ...

November 28, 2022

Technical Review for the Third Week of November 2022

This is the first of my technical reviews, mainly intended as a reflection on my experiences so far and as a starting point for future summaries. I have been working at the company for nearly six months, and recently transitioned from client-side development to backend development. This shift aligns with my long-term thinking, as backend work tends to expose more complex system-level problems and offers broader technical exploration. That said, I do not believe there is an inherent hierarchy between client-side and backend development. My earlier open-source project, GpgFrontend, is a client-side application where I dealt with complex issues such as cross-platform compilation, compatibility, and stability. These problems are by no means simpler. The perceived difference often comes from mindset rather than the nature of the work itself. ...

November 21, 2022