Files
org_roam/output/20250723190203-java_portswrigger_test.html
2025-12-28 20:41:18 +00:00

1258 lines
34 KiB
HTML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2025-12-28 Sun 20:37 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>java-portswrigger-test</title>
<meta name="generator" content="Org Mode" />
<style type="text/css">
#content { max-width: 60em; margin: auto; }
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #e6e6e6;
border-radius: 3px;
background-color: #f2f2f2;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: auto;
}
pre.src:before {
display: none;
position: absolute;
top: -8px;
right: 12px;
padding: 3px;
color: #555;
background-color: #f2f2f299;
}
pre.src:hover:before { display: inline; margin-top: 14px;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-authinfo::before { content: 'Authinfo'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { }
</style>
<link rel="stylesheet" href="/assets/styles/style.css" />
<link rel="stylesheet" href="/assets/styles/bigger-picture.min.css" />
<link rel="stylesheet" href="/assets/styles/media.css" />
<script src="/assets/scripts/script.js" defer></script>
<script src="/assets/scripts/search.js" defer></script>
<script src="/assets/scripts/bigger-picture.min.js" defer></script>
<script src="/assets/scripts/svg-pan-zoom.min.js" defer></script>
<script src="/assets/scripts/gallery-init.js" defer></script>
<script>
window.MathJax = {
tex: {
ams: {
multlineWidth: '85%'
},
tags: 'ams',
tagSide: 'right',
tagIndent: '.8em'
},
chtml: {
scale: 1.0,
displayAlign: 'center',
displayIndent: '0em'
},
svg: {
scale: 1.0,
displayAlign: 'center',
displayIndent: '0em'
},
output: {
font: 'mathjax-modern',
displayOverflow: 'overflow'
}
};
</script>
<script
id="MathJax-script"
async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
</script>
</head>
<body>
<div id="preamble" class="status">
<div class="banner-header">
<div class="banner-left">
<a href="/20241210233721-brain_moc.html"> <img src="/assets/gr.png" alt="Site Logo" class="banner-logo" /> </a>
<div id="updated">Updated: 2025-12-28 Sun 19:48</div>
</div>
<div class="banner-search">
<input id="search-box"
type="search"
placeholder="Search notes…"
aria-label="Search notes"
autocomplete="off" />
<div id="search-results"></div>
</div>
<button id="close-all">Close All</button>
</div>
</div>
<div id="stack-root">
<div class="stack-track">
<article class="stack-pane pane-root" data-url="/20250723190203-java_portswrigger_test.html">
<div id="content" class="content">
<div class="title-section">
<div class="title-controls">
<button class="pane-fullscreen" aria-label="Fullscreen">F</button>
<button class="pane-edit" aria-label="Edit pane">E</button>
<button class="pane-close" aria-label="Close pane">×</button>
</div>
<h1 class="title">java-portswrigger-test</h1>
<div class="title-metadata">
<span class="metadata-item">
<span class="metadata-label">planted:</span>
<span class="metadata-value">2025-07-23</span>
</span>
<span class="metadata-item">
<span class="metadata-label">last tended to:</span>
<span class="metadata-value">2025-12-28</span>
</span>
</div>
</div>
<div id="outline-container-org1c89d06" class="outline-2">
<h2 id="org1c89d06"><a href="#org1c89d06">Latest</a></h2>
<div class="outline-text-2" id="text-org1c89d06">
</div>
<div id="outline-container-org772a16f" class="outline-3">
<h3 id="org772a16f"><a href="#org772a16f">Java concepts:</a></h3>
<div class="outline-text-3" id="text-org772a16f">
<p>
## 1. Object-Oriented Programming Concepts
</p>
<p>
### Inheritance
</p>
<ul class="org-ul">
<li><b><b>Definition</b></b>: Mechanism where a class inherits properties and behaviors from another class</li>
<li><b><b>Syntax</b></b>: `public class Child extends Parent { }`</li>
<li><b><b>Types</b></b>: Single, Multilevel, Hierarchical</li>
<li><b><b>&rsquo;super&rsquo; keyword</b></b>: Refers to parent class objects/constructors</li>
<li><b><b>Method Overriding</b></b>: Child classes can provide specific implementation of methods</li>
</ul>
<p>
### Encapsulation
</p>
<ul class="org-ul">
<li><b><b>Definition</b></b>: Bundling data and methods that operate on the data within a single unit</li>
<li><b><b>Implementation</b></b>: Using private fields with public getters/setters</li>
<li><b><b>Benefits</b></b>: Hides implementation details, controls access, reduces code coupling</li>
</ul>
<p>
```java
public class Account {
private double balance;
</p>
<p>
public double getBalance() {
return balance;
}
</p>
<p>
public void deposit(double amount) {
if (amount &gt; 0) {
balance += amount;
}
}
}
```
</p>
<p>
### Polymorphism
</p>
<ul class="org-ul">
<li><b><b>Definition</b></b>: Ability of objects to take different forms</li>
<li><b><b>Types</b></b>:
<ul class="org-ul">
<li><b><b>Compile-time (Method Overloading)</b></b>: Multiple methods with same name but different parameters</li>
<li><b><b>Runtime (Method Overriding)</b></b>: Subclass implementing parent class method</li>
</ul></li>
<li><b><b>Example</b></b>:</li>
</ul>
<p>
```java
class Animal {
void makeSound() { System.out.println(&ldquo;Animal sound&rdquo;); }
}
class Dog extends Animal {
@Override
void makeSound() { System.out.println(&ldquo;Bark&rdquo;); }
}
```
</p>
<p>
### Abstraction
</p>
<ul class="org-ul">
<li><b><b>Definition</b></b>: Hiding implementation details, showing only functionality</li>
<li><b><b>Implementation</b></b>: Through abstract classes and interfaces</li>
<li><b><b>Abstract Classes</b></b>: Can have both concrete and abstract methods</li>
<li><b><b>Interfaces</b></b>: Collection of abstract methods (default/static methods allowed in Java 8+)</li>
</ul>
<p>
```java
abstract class Vehicle {
abstract void start();
void stop() { System.out.println(&ldquo;Stopping&rdquo;); }
}
</p>
<p>
interface Flyable {
void fly();
default void land() { System.out.println(&ldquo;Landing&rdquo;); }
}
```
</p>
<p>
## 2. Java Syntax and Language Features
</p>
<p>
### Basic Structure
```java
package com.example;
</p>
<p>
import java.util.List;
</p>
<p>
public class MyClass {
// Fields
private int number;
</p>
<p>
// Constructor
public MyClass(int number) {
this.number = number;
}
</p>
<p>
<i>/ Methods
public void doSomething() {
/</i> Method body
}
</p>
<p>
<i>/ Main method
public static void main(String[] args) {
/</i> Program execution starts here
}
}
```
</p>
<p>
### Access Modifiers
</p>
<ul class="org-ul">
<li><b><b>public</b></b>: Accessible from anywhere</li>
<li><b><b>protected</b></b>: Accessible within package and by subclasses</li>
<li><b><b>default (no modifier)</b></b>: Accessible only within package</li>
<li><b><b>private</b></b>: Accessible only within class</li>
</ul>
<p>
### Non-Access Modifiers
</p>
<ul class="org-ul">
<li><b><b>static</b></b>: Belongs to class rather than instance</li>
<li><b><b>final</b></b>: Cannot be extended (class), overridden (method), or changed (variable)</li>
<li><b><b>abstract</b></b>: Cannot be instantiated (class), must be implemented (method)</li>
<li><b><b>synchronized</b></b>: Controls thread access to method/block</li>
<li><b><b>volatile</b></b>: Variable value always read from main memory</li>
</ul>
<p>
## 3. Data Types, Variables, and Operators
</p>
<p>
### Primitive Data Types
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Type</th>
<th scope="col" class="org-left">Size</th>
<th scope="col" class="org-left">Range</th>
<th scope="col" class="org-left">Default</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">byte</td>
<td class="org-left">8 bits</td>
<td class="org-left">-128 to 127</td>
<td class="org-left">0</td>
</tr>
<tr>
<td class="org-left">short</td>
<td class="org-left">16 bits</td>
<td class="org-left">-32,768 to 32,767</td>
<td class="org-left">0</td>
</tr>
<tr>
<td class="org-left">int</td>
<td class="org-left">32 bits</td>
<td class="org-left">-2<sup>31</sup> to 2<sup>31</sup>-1</td>
<td class="org-left">0</td>
</tr>
<tr>
<td class="org-left">long</td>
<td class="org-left">64 bits</td>
<td class="org-left">-2<sup>63</sup> to 2<sup>63</sup>-1</td>
<td class="org-left">0L</td>
</tr>
<tr>
<td class="org-left">float</td>
<td class="org-left">32 bits</td>
<td class="org-left">~3.40282347 x 10<sup>38</sup></td>
<td class="org-left">0.0f</td>
</tr>
<tr>
<td class="org-left">double</td>
<td class="org-left">64 bits</td>
<td class="org-left">~1.79769313486231570 x 10<sup>308</sup></td>
<td class="org-left">0.0d</td>
</tr>
<tr>
<td class="org-left">char</td>
<td class="org-left">16 bits</td>
<td class="org-left">0 to 65,535</td>
<td class="org-left">&rsquo;\u0000&rsquo;</td>
</tr>
<tr>
<td class="org-left">boolean</td>
<td class="org-left">1 bit</td>
<td class="org-left">true/false</td>
<td class="org-left">false</td>
</tr>
</tbody>
</table>
<p>
### Reference Types
</p>
<ul class="org-ul">
<li><b><b>Classes</b></b>: `String`, custom classes</li>
<li><b><b>Arrays</b></b>: `int[]`, `String[]`</li>
<li><b><b>Interfaces</b></b>: Collections interfaces</li>
<li><b><b>Wrapper Classes</b></b>: `Integer`, `Boolean`, etc.</li>
</ul>
<p>
### Variable Declaration
```java
// Primitive types
int count = 10;
double price = 23.45;
</p>
<p>
// Reference types
String name = &ldquo;John&rdquo;;
Date today = new Date();
</p>
<p>
// Constants
final double PI = 3.14159;
```
</p>
<p>
### Operators
</p>
<ul class="org-ul">
<li><b><b>Arithmetic</b></b>: `+`, `-`, `*`, `/`, `%`, `++`, `&#x2013;`</li>
<li><b><b>Relational</b></b>: `==`, `!=`, `&gt;`, `&lt;`, `&gt;=`, `&lt;=`</li>
<li><b><b>Logical</b></b>: `&amp;&amp;`, `||`, `!`</li>
<li><b><b>Bitwise</b></b>: `&amp;`, `|`, `^`, `~`, `<a id="org02ebba6"></a>`, `&gt;&gt;&gt;`</li>
<li><b><b>Assignment</b></b>: `=`, `+=`, `-=`, `*=`, `/=`, etc.</li>
<li><b><b>Ternary</b></b>: `condition ? expr1 : expr2`</li>
<li><b><b>instanceof</b></b>: Tests if object is instance of class/interface</li>
</ul>
<p>
## 4. Control Flow Statements
</p>
<p>
### Conditional Statements
```java
<i>/ if-else
if (condition) {
/</i> code block
} else if (anotherCondition) {
<i>/ code block
} else {
/</i> code block
}
</p>
<p>
<i>/ switch
switch (variable) {
case value1:
/</i> code block
break;
case value2:
<i>/ code block
break;
default:
/</i> code block
}
</p>
<p>
<i>/ Enhanced switch (Java 14+)
switch (variable) {
case value1 -&gt; /</i> code or expression;
case value2 -&gt; <i>/ code or expression;
default -&gt; /</i> code or expression;
}
```
</p>
<p>
### Loops
```java
<i>/ for loop
for (int i = 0; i &lt; 10; i++) {
/</i> code block
}
</p>
<p>
<i>/ enhanced for loop (for-each)
for (String item : itemList) {
/</i> code block
}
</p>
<p>
<i>/ while loop
while (condition) {
/</i> code block
}
</p>
<p>
<i>/ do-while loop
do {
/</i> code block
} while (condition);
```
</p>
<p>
### Control Statements
</p>
<ul class="org-ul">
<li><b><b>break</b></b>: Exits loop or switch</li>
<li><b><b>continue</b></b>: Skips to next iteration</li>
<li><b><b>return</b></b>: Exits method, optionally returning value</li>
<li><b><b>yield</b></b>: Returns value from switch expression (Java 14+)</li>
</ul>
<p>
## 5. Exception Handling
</p>
<p>
### Exception Hierarchy
</p>
<ul class="org-ul">
<li><b><b>Throwable</b></b>: Base class for all exceptions
<ul class="org-ul">
<li><b><b>Error</b></b>: Serious problems, not typically caught</li>
<li><b><b>Exception</b></b>: Base for checked exceptions
<ul class="org-ul">
<li><b><b>RuntimeException</b></b>: Base for unchecked exceptions</li>
</ul></li>
</ul></li>
</ul>
<p>
### Try-Catch-Finally
```java
try {
<i>/ code that might throw exception
} catch (ExceptionType1 e1) {
/</i> handle exception type 1
} catch (ExceptionType2 | ExceptionType3 e2) {
<i>/ handle multiple exception types
} finally {
/</i> always executed code
}
```
</p>
<p>
### Try-With-Resources
```java
try (BufferedReader br = new BufferedReader(new FileReader(&ldquo;file.txt&rdquo;))) {
<i>/ code that uses resource
/</i> resource automatically closed
}
```
</p>
<p>
### Throwing Exceptions
```java
if (value &lt; 0) {
throw new IllegalArgumentException(&ldquo;Value cannot be negative&rdquo;);
}
```
</p>
<p>
### Creating Custom Exceptions
```java
public class CustomException extends Exception {
public CustomException() { super(); }
public CustomException(String message) { super(message); }
public CustomException(String message, Throwable cause) { super(message, cause); }
}
```
</p>
<p>
### Checked vs. Unchecked Exceptions
</p>
<ul class="org-ul">
<li><b><b>Checked</b></b>: Must be caught or declared (IOException, SQLException)</li>
<li><b><b>Unchecked</b></b>: Not required to be caught (RuntimeException and subclasses)</li>
</ul>
<p>
## 6. Java Collections Framework
</p>
<p>
### Main Interfaces
</p>
<ul class="org-ul">
<li><b><b>Collection</b></b>: Root interface
<ul class="org-ul">
<li><b><b>List</b></b>: Ordered collection (allows duplicates)</li>
<li><b><b>Set</b></b>: No duplicates</li>
<li><b><b>Queue</b></b>: Typically FIFO order</li>
</ul></li>
<li><b><b>Map</b></b>: Key-value pairs</li>
</ul>
<p>
### Common Implementations
</p>
<ul class="org-ul">
<li><b><b>Lists</b></b>:
<ul class="org-ul">
<li>`ArrayList`: Dynamic array, fast random access</li>
<li>`LinkedList`: Fast insertions/deletions</li>
<li>`Vector`: Synchronized version of ArrayList</li>
</ul></li>
<li><b><b>Sets</b></b>:
<ul class="org-ul">
<li>`HashSet`: Fast operations, no order guarantee</li>
<li>`LinkedHashSet`: Preserves insertion order</li>
<li>`TreeSet`: Sorted set (implements SortedSet)</li>
</ul></li>
<li><b><b>Maps</b></b>:
<ul class="org-ul">
<li>`HashMap`: Fast operations, no order guarantee</li>
<li>`LinkedHashMap`: Preserves insertion order</li>
<li>`TreeMap`: Sorted by keys (implements SortedMap)</li>
<li>`Hashtable`: Synchronized version of HashMap</li>
</ul></li>
<li><b><b>Queues</b></b>:
<ul class="org-ul">
<li>`ArrayDeque`: Resizable array implementation</li>
<li>`PriorityQueue`: Elements processed by priority</li>
</ul></li>
</ul>
<p>
### Usage Examples
```java
// ArrayList
List&lt;String&gt; names = new ArrayList&lt;&gt;();
names.add(&ldquo;Alice&rdquo;);
names.add(&ldquo;Bob&rdquo;);
names.remove(0);
String first = names.get(0);
</p>
<p>
// HashMap
Map&lt;String, Integer&gt; ages = new HashMap&lt;&gt;();
ages.put(&ldquo;Alice&rdquo;, 30);
ages.put(&ldquo;Bob&rdquo;, 25);
int aliceAge = ages.get(&ldquo;Alice&rdquo;);
boolean containsBob = ages.containsKey(&ldquo;Bob&rdquo;);
</p>
<p>
<i>/ HashSet
Set&lt;String&gt; uniqueNames = new HashSet&lt;&gt;();
uniqueNames.add(&ldquo;Alice&rdquo;);
uniqueNames.add(&ldquo;Alice&rdquo;); /</i> Ignored (duplicate)
boolean hasAlice = uniqueNames.contains(&ldquo;Alice&rdquo;);
```
</p>
<p>
## 7. Generics
</p>
<p>
### Basic Syntax
```java
// Generic class
public class Box&lt;T&gt; {
private T value;
</p>
<p>
public void set(T value) { this.value = value; }
public T get() { return value; }
}
</p>
<p>
// Usage
Box&lt;Integer&gt; intBox = new Box&lt;&gt;();
intBox.set(10);
Integer value = intBox.get();
```
</p>
<p>
### Wildcards
```java
<i>/ Unknown type (?)
void processElements(List&lt;?&gt; elements) {
/</i> Can read but not write elements
}
</p>
<p>
<i>/ Upper bounded wildcard
void addNumbers(List&lt;? extends Number&gt; numbers) {
/</i> Can read elements knowing they are at least Number
}
</p>
<p>
<i>/ Lower bounded wildcard
void addIntegers(List&lt;? super Integer&gt; integers) {
integers.add(10); /</i> Can write Integers
}
```
</p>
<p>
### Type Parameters
</p>
<ul class="org-ul">
<li><b><b>Type Parameter Naming Conventions</b></b>:
<ul class="org-ul">
<li>`E`: Element</li>
<li>`K`: Key</li>
<li>`V`: Value</li>
<li>`N`: Number</li>
<li>`T`: Type</li>
<li>`S`, `U`, `V`, etc.: Additional types</li>
</ul></li>
</ul>
<p>
### Type Erasure
</p>
<ul class="org-ul">
<li>During compilation, generic type information is removed (&ldquo;erased&rdquo;)</li>
<li>Runtime doesn&rsquo;t have access to generic type information</li>
</ul>
<p>
## 8. Functional Interfaces and Lambda Expressions
</p>
<p>
### Functional Interfaces
</p>
<ul class="org-ul">
<li>Interface with exactly one abstract method</li>
<li>Annotated with `@FunctionalInterface`</li>
<li>Common functional interfaces:
<ul class="org-ul">
<li>`Predicate&lt;T&gt;`: Takes T, returns boolean (`boolean test(T t)`)</li>
<li>`Consumer&lt;T&gt;`: Takes T, returns void (`void accept(T t)`)</li>
<li>`Function&lt;T,R&gt;`: Takes T, returns R (`R apply(T t)`)</li>
<li>`Supplier&lt;T&gt;`: Takes nothing, returns T (`T get()`)</li>
<li>`BinaryOperator&lt;T&gt;`: Takes two T, returns T (`T apply(T t1, T t2)`)</li>
</ul></li>
</ul>
<p>
### Lambda Expressions
```java
// Basic syntax
(parameters) -&gt; expression
(parameters) -&gt; { statements; }
</p>
<p>
// Examples
Predicate&lt;String&gt; isEmpty = s -&gt; s.isEmpty();
Consumer&lt;String&gt; printer = s -&gt; System.out.println(s);
Function&lt;String, Integer&gt; lengthFinder = s -&gt; s.length();
Supplier&lt;Double&gt; random = () -&gt; Math.random();
BinaryOperator&lt;Integer&gt; sum = (a, b) -&gt; a + b;
```
</p>
<p>
### Method References
```java
// Static method
Function&lt;String, Integer&gt; parseInt = Integer::parseInt;
</p>
<p>
// Instance method of specific object
Consumer&lt;String&gt; printer = System.out::println;
</p>
<p>
// Instance method of arbitrary object
Function&lt;String, Integer&gt; length = String::length;
</p>
<p>
// Constructor
Supplier&lt;List&lt;String&gt;&gt; listSupplier = ArrayList::new;
```
</p>
<p>
## 9. Streams API
</p>
<p>
### Creating Streams
```java
// From collection
List&lt;String&gt; list = Arrays.asList(&ldquo;a&rdquo;, &ldquo;b&rdquo;, &ldquo;c&rdquo;);
Stream&lt;String&gt; stream = list.stream();
</p>
<p>
// From array
String[] array = {&ldquo;a&rdquo;, &ldquo;b&rdquo;, &ldquo;c&rdquo;};
Stream&lt;String&gt; stream = Arrays.stream(array);
</p>
<p>
// Generate/iterate
Stream&lt;Integer&gt; numbers = Stream.iterate(0, n -&gt; n + 1).limit(10);
Stream&lt;Double&gt; randoms = Stream.generate(Math::random).limit(5);
```
</p>
<p>
### Common Operations
</p>
<ul class="org-ul">
<li><b><b>Intermediate Operations</b></b> (return a stream):
<ul class="org-ul">
<li>`filter(Predicate)`: Filters elements</li>
<li>`map(Function)`: Transforms elements</li>
<li>`flatMap(Function)`: Transforms and flattens</li>
<li>`sorted()`: Sorts elements</li>
<li>`distinct()`: Removes duplicates</li>
<li>`limit(n)`: Limits size</li>
<li>`skip(n)`: Skips elements</li>
</ul></li>
<li><b><b>Terminal Operations</b></b> (produce a result):
<ul class="org-ul">
<li>`forEach(Consumer)`: Processes each element</li>
<li>`collect(Collector)`: Gathers elements</li>
<li>`reduce(BinaryOperator)`: Reduces to single value</li>
<li>`count()`: Counts elements</li>
<li>`anyMatch(Predicate)`: Tests if any match</li>
<li>`allMatch(Predicate)`: Tests if all match</li>
<li>`noneMatch(Predicate)`: Tests if none match</li>
<li>`findFirst()`, `findAny()`: Finds elements</li>
</ul></li>
</ul>
<p>
### Example
```java
List&lt;String&gt; names = Arrays.asList(&ldquo;John&rdquo;, &ldquo;Jane&rdquo;, &ldquo;Jack&rdquo;, &ldquo;James&rdquo;);
</p>
<p>
List&lt;String&gt; filteredNames = names.stream()
.filter(name -&gt; name.startsWith(&ldquo;J&rdquo;))
.filter(name -&gt; name.length() &gt; 3)
.map(String::toUpperCase)
.sorted()
.collect(Collectors.toList());
```
</p>
<p>
## 10. Multithreading and Concurrency
</p>
<p>
### Thread Creation
```java
<i>/ Extending Thread
class MyThread extends Thread {
public void run() {
/</i> Code to execute in thread
}
}
MyThread thread = new MyThread();
thread.start();
</p>
<p>
<i>/ Implementing Runnable
class MyRunnable implements Runnable {
public void run() {
/</i> Code to execute in thread
}
}
Thread thread = new Thread(new MyRunnable());
thread.start();
</p>
<p>
<i>/ Lambda expression
Thread thread = new Thread(() -&gt; {
/</i> Code to execute in thread
});
thread.start();
```
</p>
<p>
### Thread Lifecycle
</p>
<ul class="org-ul">
<li><b><b>New</b></b>: Created but not started</li>
<li><b><b>Runnable</b></b>: Started, waiting for scheduler</li>
<li><b><b>Blocked</b></b>: Waiting for monitor lock</li>
<li><b><b>Waiting</b></b>: Called wait() without timeout</li>
<li><b><b>Timed Waiting</b></b>: Called sleep() or wait() with timeout</li>
<li><b><b>Terminated</b></b>: Completed execution</li>
</ul>
<p>
### Thread Synchronization
```java
<i>/ Synchronized method
synchronized void method() {
/</i> Thread-safe code
}
</p>
<p>
<i>/ Synchronized block
synchronized (lockObject) {
/</i> Thread-safe code
}
</p>
<p>
<i>/ Lock interface
Lock lock = new ReentrantLock();
lock.lock();
try {
/</i> Critical section
} finally {
lock.unlock();
}
```
</p>
<p>
### Concurrent Collections
</p>
<ul class="org-ul">
<li><b><b>ConcurrentHashMap</b></b>: Thread-safe HashMap</li>
<li><b><b>CopyOnWriteArrayList</b></b>: Thread-safe ArrayList</li>
<li><b><b>BlockingQueue</b></b>: Queue with blocking operations</li>
</ul>
<p>
### Thread Pools (ExecutorService)
```java
<i>/ Fixed thread pool
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.submit(() -&gt; {
/</i> Task to execute
});
executor.shutdown();
</p>
<p>
<i>/ CompletableFuture
CompletableFuture&lt;String&gt; future = CompletableFuture.supplyAsync(() -&gt; {
/</i> Async computation
return &ldquo;Result&rdquo;;
});
future.thenAccept(System.out::println);
```
</p>
<p>
### Atomic Variables
```java
AtomicInteger counter = new AtomicInteger(0);
counter.incrementAndGet(); // Thread-safe increment
```
</p>
<p>
### Thread Communication
</p>
<ul class="org-ul">
<li><b><b>wait()</b></b>: Causes thread to wait until notify/notifyAll</li>
<li><b><b>notify()</b></b>: Wakes up one waiting thread</li>
<li><b><b>notifyAll()</b></b>: Wakes up all waiting threads</li>
<li><b><b>join()</b></b>: Waits for thread to die</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-org8c0d0b0" class="outline-2">
<h2 id="org8c0d0b0"><a href="#org8c0d0b0">Original</a></h2>
<div class="outline-text-2" id="text-org8c0d0b0">
<ol class="org-ol">
<li>Object-Oriented Programming (OOP) in Java</li>
<li>Encapsulation (Access Modifiers: private, protected, public, default)</li>
<li>Abstraction (abstract classes, interfaces, default methods in interfaces)</li>
<li>Inheritance (extends, method overriding, super keyword, constructor chaining)</li>
<li>Polymorphism (Compile-time vs. Runtime, method overloading vs. method overriding)</li>
<li>Composition vs. Inheritance (Why favor composition over inheritance?)</li>
<li>SOLID Principles (How they apply in Java)</li>
<li>JavaBeans and POJOs (Plain Old Java Objects)</li>
<li>Java Data Types and Memory Management</li>
<li>Primitive vs. Reference Types</li>
<li>Wrapper classes (Integer, Double, Boolean, etc.)</li>
<li>String handling (String, StringBuilder, StringBuffer, immutability)</li>
<li>Autoboxing and Unboxing</li>
<li>Memory Allocation (Heap vs. Stack)</li>
<li>Garbage Collection (How it works, finalize(), weak references, types of GC algorithms)</li>
<li>Java Collections Framework (JCF)</li>
<li>List Interface (ArrayList, LinkedList, Vector, Stack)</li>
<li>Set Interface (HashSet, TreeSet, LinkedHashSet)</li>
<li>Map Interface (HashMap, TreeMap, LinkedHashMap, Hashtable)</li>
<li>Queue Interface (PriorityQueue, Deque, ArrayDeque)</li>
<li>Concurrent Collections (ConcurrentHashMap, CopyOnWriteArrayList)</li>
<li>Sorting and Searching in Collections (Comparable vs. Comparator)</li>
<li>Big-O Complexity of Collection Operations</li>
<li>Immutable Collections (List.of(), Set.of(), Map.of())</li>
<li>Exception Handling</li>
<li>Checked vs. Unchecked Exceptions</li>
<li>Custom Exceptions</li>
<li>Try-Catch-Finally vs. Try-With-Resources (AutoCloseable)</li>
<li>Throw vs. Throws</li>
<li>Multi-catch blocks (catch (IOException | SQLException e))</li>
<li>Best Practices for Exception Handling (Avoiding Generic Exceptions)</li>
<li>Java Multithreading and Concurrency</li>
<li>Thread Lifecycle</li>
<li>Creating Threads (Thread vs. Runnable, Callable, Future)</li>
<li>Synchronization (synchronized keyword, locks, ReentrantLock, wait(), notify())</li>
<li>Thread Safety and Shared Resource Handling</li>
<li>Executors and Thread Pools (ExecutorService, ScheduledExecutorService)</li>
<li>Atomic Variables (AtomicInteger, AtomicBoolean)</li>
<li>Fork-Join Framework</li>
<li>Deadlocks, Race Conditions, and Livelocks</li>
<li>Java Streams and Functional Programming</li>
<li>Lambda Expressions ((a, b) -&gt; a + b)</li>
<li>Method References (Class::methodName)</li>
<li>Functional Interfaces (Predicate, Consumer, Supplier, Function, BiFunction)</li>
<li>Streams API (Intermediate vs. Terminal Operations)</li>
<li>Stream Processing (map(), filter(), reduce(), collect())</li>
<li>Parallel Streams (parallelStream())</li>
<li>Optional Class (Optional&lt;T&gt;, avoiding null)</li>
<li>Java Input/Output (I/O) and Serialization</li>
<li>Byte Streams vs. Character Streams (InputStream, OutputStream, Reader, Writer)</li>
<li>File Handling (File, Files, BufferedReader, BufferedWriter)</li>
<li>Object Serialization (Serializable, transient keyword)</li>
<li>New I/O (NIO) (Path, Files, ByteBuffer, Channels)</li>
<li>Memory-Mapped Files</li>
<li>Java 11+ Features (Files.writeString(), Files.readString())</li>
<li>Java 8+ Features</li>
<li>Default and Static Methods in Interfaces</li>
<li>Optional Class</li>
<li>New Date and Time API (LocalDate, LocalTime, LocalDateTime, ZonedDateTime)</li>
<li>CompletableFuture (thenApply(), thenAccept(), exceptionally())</li>
<li>New Collection Methods (List.of(), Set.of(), Map.of())</li>
<li>Records (Java 14+)</li>
<li>Pattern Matching (Java 17+)</li>
<li>Sealed Classes (Java 17+)</li>
<li>Java Reflection and Dynamic Class Loading</li>
<li>Getting Class Information (.class, Class.forName())</li>
<li>Accessing Private Fields and Methods</li>
<li>Dynamic Proxy and InvocationHandler</li>
<li>Annotations and Annotation Processing</li>
<li>Java Networking (Sockets, HTTP)</li>
<li>Java Sockets (ServerSocket, Socket)</li>
<li>URL and HttpURLConnection</li>
<li>HTTP Clients (Java 11 HttpClient)</li>
<li>Multithreaded Server Applications</li>
<li>Java Security Basics</li>
<li>Encryption and Hashing (AES, SHA, RSA)</li>
<li>Java Cryptography API (MessageDigest, Cipher)</li>
<li>Secure Random Numbers (SecureRandom)</li>
<li>Security Manager (doPrivileged())</li>
<li>Understanding Java Classloaders and Security Policies</li>
<li>Java Virtual Machine (JVM) Internals</li>
<li>JVM Architecture (ClassLoader, Method Area, Heap, Stack, Execution Engine, Garbage Collector)</li>
<li>Class Loading (ClassLoader, Bootstrap, Extensions, Application ClassLoader)</li>
<li>JIT Compilation (Just-In-Time Compiler)</li>
<li>Garbage Collection Algorithms (G1, ZGC, Epsilon GC)</li>
<li>JVM Performance Tuning (-Xms, -Xmx, -XX:+UseG1GC)</li>
</ol>
<p class="backlinks-section" id="backlinks">
Backlinks
</p>
<ul class="org-ul backlinks-list">
<li><a href="20250722221649-career_moc.html#ID-dd04d228-fff5-402a-929d-9d113a2ec965">career<sub>moc</sub></a></li>
</ul>
</div>
</div>
</div>
</div></article></div></div>
<div id="postamble" class="status">
<footer>
<div class="copyright-container">
<div class="copyright">
Copyright &copy; 2022-2025 Zaine Qayyum. All rights reserved unless otherwise noted.</div></div>
<div class="generated">
Created with <a href="https://www.gnu.org/software/emacs/">Emacs</a> 30.2 (<a href="https://orgmode.org">Org</a> mode 9.7.11) on <a href="https://www.archlinux.org/">Arch</a> <a href="https://www.gnu.org">GNU</a>/<a href="https://www.kernel.org/">Linux</a>
</div>
</footer>
</div>
</body>
</html>