I had too much coffee and decided to mirror my actions by writing too many programs in Java.

Overview

Raging Coffee

Table of Contents

Description

This project is geared towards the practical as well as theoretical exploration of the Java language in depth. Primarily, this is to serve as a checklist of my own knowledge in Java but since the best way to learn is to make something that others may learn from as well, this repository has been made public.
This also deals with certain general problem solving and algorithmic programs as well as design patterns that is just for my own reference. Others are welcome to check those out as well, in any case. There are already more complete and better repositories out there that are more famous for the various implementations of algorithms using Java. This repository is more geared to focus on the nuances of the language in general, rather than recreate the same work.
The project has NO dependencies.
Here is the link of the repository containing Java programs on algorithms.
Here is the link of the repository containing design patterns elucidated in an intuitive and resourceful manner by experienced and passionate engineers and experts.

(Top)

Running the Programs

Visual Studio Code with the extension Language Support for Java (TM) by Red Hat has been used. Sections for other IDEs such as IntelliJ or Eclipse shall be added if those environments bear certain feasilbility that deems their adoption over the present IDE.
The required dependencies (JDK 17) have firstly been installed.
Methods to run programs directly from Docker coming shortly. To run the programs from the terminal:

  • From the directory in which the source file is stored:
    javac fileName.java
  • From the root directory (exactly from within the \src\main\java directory):
    java com.ragingcoffee.directoryName.fileName

(Top)

Extra Dependencies

None of the dependencies mentioned below are a must for the project (since it is purely educational and the programs are standalone, not a part of any application). Even these have been used for learning purposes (as well as making the project more accessible and standard) and their guides are in the furtherreading directory.

  • Apache Maven: Project Management and build tool used to define a standard structure for the project.
  • Jenkins: Pipeline used to automatically build and test the code on a local server upon every push.
  • Docker: Containerization application used to run the programs directly by running a container of an image without any worries about any dependencies.

(Top)

Roadmap

  • Annotations
  • Inheritance
  • Interfaces
  • Enumerations
  • Multithreading
  • Well-known array algorithms and problem-solving techniques.
  • Recursion
  • Divide and Conquer Technique
  • Dynamic Programming Technique
  • Greedy Technique
  • Searching Techniques
  • Sorting Techniques
  • Caching Algorithms
  • General problems with multiple approaches
  • Problem Solving
  • Design Patterns
  • String Operations
  • File Operations
  • The Reflection API
  • The java.lang Package
  • The java.util Package

(Top)

Further Reading

Certain build tools and applications have been discussed here within the scope of their use in Java development. They may serve as a guide to understand how these tools integrate with Java, along with how they are used for development (this project is an example as well). These can be found under the furtherreading directory.

  • Apache Maven
  • Docker
  • Gradle
  • Jenkins
  • JUnit5
  • Java Access Modifiers
  • Java Conventions
  • Java Keywords with Multiple Uses

(Top)

Known Issues

  • Refactor on the basis on keyword and brackets separation.
  • Refactor on the basis of Java array [] convention.
  • Order imports.
  • Apply join() for every multithreading program.
  • Folder renaming.
  • Document everything.
  • Correct grammar of its and it's.
  • Apply backticks for every Java proper noun.
  • Complete Prime Numbers and Insertion Sort.
  • Space after every catch.
  • Fix TypeAnnotations.java.
  • Work on the Dockerfile.
  • 0 to 19 for caching in main memory.

(Top)

Resources

For this project, the resources referred to are:

  • Java: The Complete Reference by Herbert Schildt.
  • Clean Code: A Handbook of Agile Software Craftsmanship by Robert Cecil Martin.
  • Head First Design Patterns by Bates Bert, Freeman Eric, Robinson Elisabeth and Sierra Kathy.

(Top)

Contributions

  • Refer to Contributing.md first.
  • Comments in the programs are sparingly used because, as Uncle Robert would say, comments are just an excuse to pass on poorly-written code. Sufficiently comprehensive variable names have been taken in most cases and thus comments should never be an issue.

(Top)

Comments
  • Docker image to build the entire repository

    Docker image to build the entire repository

    A Dockerfile needs to be created that:

    • Copies all the source files into the working directory.
    • Built atop Maven supporting JDK.
    • Contributors with basic knowledge of Docker can try to contribute. Image validating the following would be considered as proof for resolution of the issue:
      • Correct running of any program inside a Docker container.
      • Correct running of all tests inside a Docker container upon running mvn test.

    Modify the Dockerfile inside the .devcontainer to complete the task.

    enhancement help wanted hacktoberfest hacktoberfest-accepted 
    opened by Diptonil 5
  • Faulty random number generator in caching section

    Faulty random number generator in caching section

    • The random number generator in caching section is required to give umbers from 0 to 19. It currently given numbers from 1 to 20. This needs to be fixed.
    • Optional: A mechanism to ensure that the random number generated is not the same that was generated before in the cache data structure.

    To understand more, take a close look at the cachingalgorithms section.

    bug hacktoberfest hacktoberfest-accepted 
    opened by Diptonil 4
  • [BUG] Possible IndexOutOfBounds Exception in RandomReplacementCache Logic

    [BUG] Possible IndexOutOfBounds Exception in RandomReplacementCache Logic

    Describe the bug Currently, in RandomReplacementCache the below code is being used to randomly remove elements from the cache cache.remove(random.nextInt(CACHE_SIZE + 1));

    The random.nextInt function here can end up generating 5 sometimes whereas the collection has the size=5 which would mean the indices are only from 0-4. This would then end up in an IndexOutOfBoundsException.

    Expected behavior IndexOutOfBounds Exception should not be seen

    Proposed solution The nextInt function should just be passed with CACHE_SIZE and not CACHE_SIZE+1

    Please assign the issue to me. Will push the fix for this.

    bug hacktoberfest hacktoberfest-accepted 
    opened by jivjen 1
  • Fix to ensure that random numbers are generated correctly for caching

    Fix to ensure that random numbers are generated correctly for caching

    Description:

    This fix aims at tackling the below two points as mentioned in #14 :

    • Ensuring that the generation of numbers happens within the range 0-19 and not 1 to 20
    • Ensuring that the numbers are unique and do not repeat themselves

    This fix also addresses the issue mentioned in #16

    Tested the same for all the different caching algorithms and they are working fine.

    hacktoberfest hacktoberfest-accepted 
    opened by jivjen 1
  • Dockerizing the entire repository

    Dockerizing the entire repository

    Description:

    This PR is to ensure that the entire repository is built as a Docker Container as mentioned in #12

    Summary of the changes:

    • Have modified the Dockerfile to ensure that the project is built using maven and built into the docker image properly
    • A docker image would have to have a main class specified which would be run once the container is up and hence added a Main class with a server started so that the container would not stop immediately and let us run the required commands inside it
    • Added the necessary configuration to the pom.xml to generate the manifest file for docker to pick up the main class properly

    Test Screenshots Screenshot 2022-10-06 201606

    Screenshot 2022-10-06 201646

    Screenshot 2022-10-06 203449

    hacktoberfest hacktoberfest-accepted 
    opened by jivjen 0
  • Order imports of all source and test files

    Order imports of all source and test files

    The following things need to be resolved:

    • All files (source and test) in the repository should be looked at.
    • Any tools such as the Organize Imports on Eclipse may be used, if needed.
    • If any third-party plugin is being used to order imports, the tool must be mentioned so that it may be incorporated in the workflow in the future.
    • Check for help here: https://stackoverflow.com/a/7735738/14814153
    • Since more test and source files would be added, this issue will be periodically reopened unless a suitable tool or plugin is found to automate the job.
    enhancement good first issue hacktoberfest hacktoberfest-accepted 
    opened by Diptonil 0
  • Documentation for the Java Memory Model

    Documentation for the Java Memory Model

    • Within the furtherreading/java-ecosystem directory, create a java-memory-model.md file that documents the entirety of the research and information pertaining to the Java Memory Model in a clear manner.
    • Any person perusing the documentation should not feel the need to refer to some other source of information over the internet or a book to resolve any further queries they have regarding this topic. Neither should they feel eluded, for whatever reason, as to understanding of the material that is provided here.
    • Exploring low-level implementation details in the system is always appreciated.
    • Contributors should have sufficient knowledge in the subject matter as well as proficiency in the English language.
    • Follow-up questions, comments and remarks to this issue will be acknowledged and humored.
    • Sources to refer to:
    documentation 
    opened by Diptonil 1
  • Documentation for Java Garbage Collection

    Documentation for Java Garbage Collection

    • Under furtherreading/java-ecosystem, create a file garbage-collection.md.
    • The file should contain detailed and exhaustive information about the Java Garbage Collector and its relation with respect to the Java Ecosystem.
    • Content should be made in such a way that after reading the documentation here, there should be no need for anyone to hop around the web to gain additional information or clarification on certain explanations put up here.
    • Contributors are expected to have a firm grip over the concept as well as English language in general.
    • Brief discussion over garbage collector tools, why we need them as well as their examples. Do not include tools that are not used anymore (CMS, for example). Describe the popular GC tools (G1, ZCG for example).
    • Sources to learn more and get help:
      • https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
      • https://medium.com/platform-engineer/understanding-java-garbage-collection-54fc9230659a
    documentation 
    opened by Diptonil 5
  • Include the Codecov and Lines of Code badge in the main Readme

    Include the Codecov and Lines of Code badge in the main Readme

    • A functional badge displaying the code coverage needs to be put beside the Maven Build badge.
    • A functional badge displaying the lines of code needs to be put beside the Codecov badge.
    enhancement good first issue 
    opened by Diptonil 0
  • Condense the Google Java Style Guide into `conventions.md` and finish off Gradle documentation

    Condense the Google Java Style Guide into `conventions.md` and finish off Gradle documentation

    • The conventions.md file in the directory of further reading is lacking as of now. Condense the whole manifest of the Google Java Style Guide into the file in the format that has already been laid down.
    • Documenting the gradle.md file needs to be finished off so as to impart a thorough and solid understanding of the build system. Refer to the maven.md under the Further Reading section for better understanding on how to tackle the documentation.
    • Elaborations and alterations in reasonable limits are acceptable.
    • Contributors are expected to be thorough in the English language.
    documentation 
    opened by Diptonil 0
  • Tests for Greedy Algorithms, General Problems, Divide and Conquer and DP

    Tests for Greedy Algorithms, General Problems, Divide and Conquer and DP

    Write tests using JUnit5 for the following sections:

    • Greedy Algorithms (3 test files)
    • General Problems (2 test files)
    • Divide and Conquer (2 test files)
    • Dynamic Programming (1 test file)
    enhancement good first issue 
    opened by Diptonil 3
Owner
Thoroughfare by the Brooks
Backend Web Developer | Cloud Engineer | DevOps
Thoroughfare by the Brooks
This repository contains Java programs to become zero to hero in Java. Programs related to each and every concep are present from easy to intermidiate level.

Learn Java Programming In this repository you will find topic wise programs of java from basics to intermediate. This follows topic wise approach that

Sahil Batra 15 Oct 9, 2022
Rise SRC Leak, original leaker had his github deleted :(

Hope i don't get deleted too Original REAMDE.md: leaked by mika johans intent guard obfuscation bypass 2021 zip exploited auth to get the SRC ##Permis

null 10 May 6, 2022
Spring JPA Many To Many example with Hibernate and Spring Boot CRUD Rest API - ManyToMany annotation

Spring JPA Many To Many example with Hibernate and Spring Boot CRUD Rest API - ManyToMany annotation

null 17 Dec 28, 2022
jedibot is an application that aims to do beneficial actions on the Ethereum blockchain for the DeFi ecosystem while earning a profit for the user.

jedibot is an application that aims to do beneficial actions on the Ethereum blockchain for the DeFi ecosystem while earning a profit for the user. These actions include maintaining the DAI peg, providing liquidity and liquidating undercollateralized assets.

我是高天才! 10 Feb 5, 2022
Stetho is a debug bridge for Android applications, enabling the powerful Chrome Developer Tools and much more.

Stetho Stetho is a sophisticated debug bridge for Android applications. When enabled, developers have access to the Chrome Developer Tools feature nat

Meta 12.6k Jan 3, 2023
this repo is probs gonna die cuz idk very much java but i will update it when i learn how to actually DO SHIT

pastegod.cc shitty rename of zihasz client base rn but as i learn java i will paste-i mean add modules ;) (23/9/2021) why is everyone starring and wat

null 9 Dec 9, 2022
I learned so much in this project, a twitch+ recommendation system

VisualHunter I learned so much in this project, a twitch+ recommendation system, a Personalized Twitch Resources Recommendation ● Built a full-stack w

Rui Zhang 2 Jan 12, 2022
Allows changing of hurt animation modifier, changing how much the user's camera moves after the player being hurt.

Hurt Animation Modifier Allows changing of hurt animation modifier, changing how much the user's camera moves after the player being hurt. Credit to W

null 5 May 17, 2022
Short Java programs for practice (OCP) Oracle Certified Professional Java SE 11

OCP-study Short Java programs to practice for (OCP) Oracle Certified Professional Java SE 11 Exam Google document with notes: https://docs.google.com/

Sabina Matjašič 1 May 24, 2022
Reverse engineer and rewrite real mode dos programs!

Spice86 - A PC emulator for real mode reverse engineering Spice86 is a tool to execute, reverse engineer and rewrite real mode dos programs for which

Kevin 55 Nov 9, 2022
This app is simple and awesome notepad. It is a quick notepad editing experience when writing notes,emails,message,shoppings and to do list.

This app is simple and awesome notepad. It is a quick notepad editing experience when writing notes,emails,message,shoppings and to do list.It is easy to use and enjoy hassle free with pen and paper.

Md Arif Hossain 1 Jan 18, 2022
All the Assignment Programs given by College

OOPs-Assignment This is a Repo holding the Assignments or test programs given by the College in the 5th Semester. We will try to include as much as pr

Raunak Mandal 4 Jul 16, 2022
The Apache Commons CSV library provides a simple interface for reading and writing CSV files of various types.

Apache Commons CSV The Apache Commons CSV library provides a simple interface for reading and writing CSV files of various types. Documentation More i

The Apache Software Foundation 307 Dec 26, 2022
Section B of Assignment 1. Setup project and collaborate on GitHub by writing test fixtures.

Task Each member (including the team leader) should create a branch (use student number as the branch name) and include a small program in the branch

Quinn Frost 1 Apr 6, 2022
Using this library, and writing a few lines of code, you can manage your own domain objects in ZooKeeper

Using this library, and writing a few lines of code, you can manage your own domain objects in ZooKeeper. It provides CRUD operations and change notifications out of the box.

Sahab 4 Oct 26, 2022
Mirror of Apache Velocity Engine

Title: Apache Velocity Engine Apache Velocity Welcome to Apache Velocity Engine! Apache Velocity is a general purpose template engine written in Java.

The Apache Software Foundation 298 Dec 22, 2022
Java libraries for writing composable microservices

Apollo Status: Archived ⚠️ Apollo is heavily used within Spotify, however, most of its development has recently been done internally leveraging Apollo

Spotify 1.6k Dec 6, 2022
A singular file to protect as many Minecraft servers and clients as possible from the Log4j exploit (CVE-2021-44228).

MC-Log4J-Patcher The goal of this project is to provide Minecraft players, and server owners, peace of mind in regards to the recently discovered Log4

Koupa Taylor 4 Jan 4, 2022
A springboot starter for retrofit, and supports many functional feature enhancements, greatly simplifying development

retrofit-spring-boot-starter English Document Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求。而spring-boot是使用最广泛的Java开发框架,但是Retrofit官方

Ke Technologies 1.4k Jan 5, 2023