Tutorials     About     RSS
Tech and Media Labs
Tutorials for Software Developers and Technopreneurs
Java - JVM
Java SE
Java Language   
Java Collections   
Java Concurrency   
Java Cryptography   
Java.util.concurrent   
Java Date and Time   
Java Exception Handling   
Java Generics   
Java Internationalization   
Java IO   
Java JDBC   
Java SE
Java JSON   
Java Logging   
Java Multithreaded Servers   
Java Networking   
Java NIO   
Java Persistence   
Java Reflection   
Java Regular Expressions (regex)   
Java XML   
Java ZIP   
Java Desktop
JavaFX   
Java Howtos
Java Functional Programming
Java Unit Testing   
Java How To's and Utilities   
Java PDF Generation with IText   
Acme4J   

Butterfly DI Container   
Butterfly Persistence   
ModRun   
Build Tools
Ant   
Maven   
Gradle   
Docker   
Java - High Performance
Java Performance   
Netty   
Vert.x   
QBit   
JCTools   
Chronicle   
Mem Ops for Java   
RION Ops for Java   
Stream Ops for Java   
Java EE
Java Web Apps   
Java Servlets   
Scala
Scala Language   
Web - Distributed Systems - Mobile
Web & RIA
CSS   
HTML4   
HTML5   
HTML5 Canvas   
SVG - Scalable Vector Graphics   
Responsive, Mobile Friendly Web Design   
Vue.js   
Riot.js   
jQuery   
AngularJS   
 
OAuth 2.0 Tutorial   
Distributed Systems Architecture
Software Architecture   
Data Streaming   
RION   
IAP   
IAP Tools for Java  
Grid Ops for Java  
SOA - Service Oriented Architecture   
Web Services   
SOAP   
WSDL 2.0   
RSync   
Peer-to-Peer (P2P) Networks   
Server
Ubuntu Linux as Web Server  
Nginx   
OpenSSL for Web Servers  
Docker   
Data Formats
Unicode  
RION   
Android
Android Development   
Miscellaneous
Software Development
Software as Career
Software Elegance
API Design
Dependency Injection
OOP / OOD
Exception Handling Strategies
Data Science
Data Streaming   
Data Science   
Mathematical Analysis   
R Programming   
Nanosai Studio   
Development Tools
Git   
Software Entrepreneurship
Software Entrepreneurship   
Opinion
Opinions on software development
Related Resources
Related Resources (Links)
News

Polymorph P2P Network Algorithm

The Polymorph P2P network algorithm is based on my own, new P2P polyring topology designed especially with media routing in mind. I believe it is better suited at media routing than Chord, Kademlia, Pastry and Taspestry.

Chord P2P Network Algorithm

The Chord P2P network algorithm was one of the early P2P algorithms to appear. This Chord tutorial explains the core of the Chord P2P algorithm.

Java Annotations

I have updated my Java Annotations tutorial to also explain the built-in annotation @Contended.

False Sharing in Java

False sharing is a situation that can cause performance degradations when two or more threads write to different variables located within the same CPU cache line.

CPU Cache Coherence in Java Concurrency

In this short tutorial I correct my statements about how Java synchronized and volatile variables effect how thread visible variables are flushed to main RAM.

Compare and Swap

Compare and swap functionality is an alternative to synchronized blocks in Java when designing high throughput, non-blocking concurrent algorithms in Java.

Peer Findability and Message Routability

The peer findability and message routability challenges of P2P networks are typically addressed in similar ways. This tutorial covers common solutions to peer findability and message routability in peer-to-peer networks.

Peer Addressability

Peers in a peer-to-peer network need to be able to address each other uniquely. That it was peer addressability refers to. This tutorial explains how common P2P algorithms approaches peer addressability.

Peer Connectivity

Peers in a peer-to-peer network need to be able to connect to each other in order to communicate with each other. I explain common solutions to overcoming NAT and firewall problems in this peer connectivity tutorial.

Peer-to-peer Networks - Update Started

A lot has happened in the world of Peer-to-Peer (P2P) networks since I wrote the first version of this tutorial - so I have started updating it. First step was updating the introduction.