Hello Habr! My name is Nikita Letov. I am a tech lead of backend development in remote banking services for individuals (or retail department) of Rosbank. In this article I will describe what a point of entry to an app is, when it becomes vital, and how API Gateway can help you. We'll review a traditional blocking pattern based on Netflix Zuul 1.x gateway with all its problems of using, then reactive Spring Cloud Gateway and difficulties of moving to it. Finally, we'll compare these two approaches.
Java *
General-purpose computer-programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible
How to Use Throw and Throws in Java
Exception handling in Java is the most effective way to handle runtime errors occurring in the application. This is used to protect the abnormal flow of the execution of the application and continue the application in normal flow. This is the process of handling runtime errors such as ClassNotFoundException, IOException, etc. The throw and throws keywords are used to handle exceptions in Java.
In this topic, we will learn how to use throw and throws keywords in Java with examples.
Spring Boot Mapping
The platform is designed for those who want to enhance their knowledge with simplicity. Programming tutorials and examples written in simple, understandable language for beginners and experienced. Spring Java tutorials provides well contents to learn java, spring framework and also the architecture of spring technology for professionals.
List in Java | Interface, Methods, Example
In this topic, we will learn about what is a List in Java. How to create a List in Java? What are the methods of List in Java? The List is an interface in Java. It is extending the Collection interface in Java. This List interface is present in the java.util package in Java. A list represents a group of individual objects as a single entity where duplicates are allowed and insertion order is preserved.
Create a native Kotlin application with Spring Boot Native, Gradle, and GraalVM without Docker for MacOS and Windows
In this tutorial, I want to talk about the practical experience of native compilation of a production application written in Kotlin with Spring Boot and Gradle using GraalVM. I’ll start right away with the pros and cons of the native compilation feature itself and where it can be useful, and then I’ll move directly to the build process for MacOS and Windows.
At the end of the article, in the afterword block, I will talk in more detail about the project and why such a need arose, given quite a few limitations and pitfalls of supporting native compilation both from Spring Boot and from GraalVM.
Best distributed task scheduling framework — Openjob 1.0.7 released
Openjob is a new distributed task scheduling framework based on Akka architecture. Supports multiple cronjob, delay task, workflow, lightweight distributed computing, unlimited horizontal scaling, with high scalability and fault tolerance. Also has complete management, powerful alarm monitoring, and support multiple languages
Making Java 8 aware of Let's Encrypt root certificate
When using older version of Java with not updated truststore, you may face an error while connecting to web hosts, that Java is unable to find a valid certification path to the requested target.
This happens because JRE truststore is unaware of the new root certificate that is being used by Let's Encrypt nowadays. Below I tried to clarify detail behind this issue and how to solve it. I hope newcomers might find this material helpful.
More powerful and intelligent task scheduling framework — Openjob 1.0.6 published
Openjob is a new distributed task scheduling framework based on Akka architecture. Supports multiple cronjob, delay task, workflow, lightweight distributed computing, unlimited horizontal scaling, with high scalability and fault tolerance. Also has complete management, powerful alarm monitoring, and support multiple languages
If you are looking for a high-performance distributed task scheduling framework that supports cronjob, delay task, lightweight computing, workflow, and supports multiple programming languages, then Openjob is definitely the way to go.
Spring Data JPA entity enum converter
Faced with situation when had to map STRING VALUE coming from database TO ENUM. The problem happens when value stored in database differs from enum name. And here we need a workaround to make a mapping. I will describe main points on how I was able to realise it.
Openjob: distributed task scheduling framework
Openjob is a distributed and high-performance task scheduling framework that supports multiple cronjob, delay task, workflow, lightweight distributed computing, unlimited horizontal scaling, with high scalability and fault tolerance. Also has perfect permission management, powerful alarm monitoring, and support multiple languages
Spring Reactor Mono::block deadlock
Faced with the situation when calling Mono::block leads to deadlock - in debug I can just see how it stands on Unsafe::park and no more movement at all.
Apply «capital letters jam» for generic type parameters
There are such types in Java - called "Generics".
And the point here is that there is a convention for naming generic type parameters WITH ONE CAPITAL LETTER.
But we have found much more readable approach!
Stand on two legs with code review
The problem
Unfortunately, when fulfilling their planned business goals, the departments of the organisation rarely take into account such a metric as solution code quality. And usually developers has no time for normal code review process.
How Java works with fonts
Hello!
In this article, I will try to briefly describe how Java Virtual Machine works with fonts. Once I needed to change the font used by the JVM and, surprisingly, found only pieces of legacy information about this. I spent a little time investigating the problem and now want to share this information with anybody who could find it useful. Feel free to leave any comments :)
Run ForkJoinTask via custom ForkJoinPool in CompletableFuture sauce
In one of the tasks on the project, I had to wrap the ForkJoinTask collection in CompletableFuture for asynchronous execution and building data processing pipeline chains.
On the difference between regular functions and Lambdas
The point of this article is to explore Lambda functions, their dirrerences from regular functions and how they are implemented, based on C++, Python and Java programming languages.
Throughout this article I will be using godbolt.org to compile code and see machine code or byte code.
«Divide and Conquer» for OpenStreetMap world inside PostgreSQL
I will continue the story "How to put the whole world into a regular laptop: PostgreSQL and OpenStreetMap" with secrets about OpenStreetMap geodata, on which many companies have built their business, but not everyone shares the details... Well, today we will open crucial details.
The OSM database in PosgreSQL after loading from the dump takes up more than 587 GB. This is already a large database by the standards of a DBMS, and one huge table for each type of object will not work. For manageability, such data must be partitioned, it's good that PostgreSQL supports declarative data partitioning. It remains only to figure out how to split geographical data. After searching and comparing, the H3 hierarchical hexagonal geospatial indexing system came to rescue. All this was implemented in my openstreetmap_h3 project for fast processing and loading of the world dump into the PostGIS database.
I considered following options from geopartitioning systems...
How to put the whole world into a regular laptop: PostgreSQL and OpenStreetMap
When a person used to say that he controls the whole world, he was usually placed in the next room with Napoleon Bonaparte. I hope that these times are in the past and everyone can analyze the geodata of the entire Earth and get answers to their global questions in minutes and seconds. I published Openstreetmap_h3 - my project, which allows you to perform geoanalytics on data from OpenStreetMap in PostGIS or in any query engine that can work with Apache Arrow / Parquet.
First of all, I say hello to the haters and skeptics. What I developed is really unique and solves the problem of transforming and analyzing geodata using the usual and familiar tools available to every analyst and data science specialist without bigdata, GPGPU, FPGA. What looks easy to use and code now is my personal project where I have invested my vacations, weekends, sleepless nights and a lot of personal time over the past 3 years. Maybe I will share the background of the project and the rake that I went through, but first I will still describe the end result.
From Zero to Hero: LeetCode
This is a translation of my article in Russian
In this article, I want to write about my experience of interacting with the LeetCode platform, and describe my preparation for an interview in FAANG similar companies by breaking it down into levels.
The whole article is written based on my experience, the numbers are very rough, I do not pretend to be objective, perhaps there are best practices on how to solve LeetCode problems, it would be cool if you share your experience in the comments.
Message broker selection cheat sheet: Kafka vs RabbitMQ vs Amazon SQS
This is a series of articles dedicated to the optimal choice between different systems on a real project or an architectural interview.
At work or at a System Design interview, you often have to choose the best message broker. I plunged into this issue and will tell you what and why. What is better in each case, what are the advantages and disadvantages of these systems, and which one to choose, I will show with several examples.
Authors' contribution
olegchir 4056.4tagir_valeev 2369.0phillennium 1485.423derevo 1271.0ARG89 1078.2igor_suhorukov 915.2dbelob 902.0doom369 826.0alizar 756.0dididididi 709.0