Tagged: Java

dotenv for Java, Kotlin and the JVM

[Just show me dotenv] When working within the context of a modern microservice architecture, one often encounters services written in a variety of languages using a variety of frameworks. There are numerous benefits to microservice architectures, however configuring each service can be quite complex. Each framework may offer their own configuration method e.g. property files, yaml, json, etc. As the number of microservices pile up, this quickly becomes a dev...

Loading Balancing a JEE application using Tomcat and mod_cluster

Performance, scalability, and reliability are key factors to many production applications. Designing and implementing a highly performant, scalable, and reliable application is not an easy task. Furthermore, a single piece of computing hardware may not suffice in terms of the resources necessary to run and scale your application. As your user base grows, and continues to grow, your application will likely require more and more resources. In these cases, it...

Applying the Builder Pattern

The Builder Pattern is a design pattern used to separate the construction of a complex object from its representation, so that the same construction process can be used to create different representations. [1] Usage The Builder pattern is useful for constructing complex objects. It enables one to build a complex object without exposing the details of the object’s parts or how the object’s parts are assembled. Also, as noted previously,...

Google OAuth2 and JAX-RS

These days users have so many accounts… Google, Facebook, Twitter, LinkedIn, etc. Managing all of these accounts can quickly become a chore. As an application developer, you have the choice of allowing your users to reuse an existing account e.g. Google or creating a new account dedicated to your application. Reusing an existing account clearly has benefits. The user has one less account to maintain. He has one less username/password...

Merge Sort: Implementation and Analysis

Merge Sort Merge sort is a divide and conquer algorithm that sorts objects in O(n log n) time. Merge sort begins by dividing the input list into two sublists, and then continues to divide each subsequent sublist until we are left with a bunch of sublists that each contain one element. Each one element list is considered sorted. Next, Merge sort conquers each sorted sublist by repeatedly merging adjacent sorted...