Building Native Image for a Java application requires configuration of reflection, proxies, and other dynamic Java mechanisms. But why is this necessary if the JVM handles all of this...
In C++, it's good practice to place functions next to the types they operate on. To apply this approach correctly, we need to understand how name lookup mechanisms work and spot where functions...
Devs often use "magic code" to solve tree problems on LeetCode. However, enterprise code requires readability and maintainability for years. What shall we do when a task is so large that...
It seems like we've already revealed the secret of alignment and defeated an invisible enemy—unaligned access. Memory is under control, but performance still whispers, "Don't forget about...
Imagine your program is a model of clean code—reviewed, tested, and seemingly flawless. But its performance still falls short of expectations. You've checked everything you know. Maybe...
This is the first article in a series on what developers can expect when upgrading between LTS versions of Java. In this part, we'll look at the key changes that programmers will encounter...
Java is expanding with new trendy mechanisms, and along with it, its tomb is growing with outdated features like Vector, Finalization, NashornScriptEngine, SecurityManager, and Unsafe. Let's take...
Interviewers and LeetCode problems often focus on rotating binary trees. But what about transforming a general tree into a different one? How do we solve this problem, and what approaches can...
C# 14 is almost here, so it's time for our annual feature overview. This year brought fewer changes than the last. Some might consider them minor, but is it really so? Let's take a closer...
In this article, we'll explain what gadget chains are and look at examples (with schemas) of how careless deserialization with native Java mechanisms can lead to remote code...