separation of duties
important for almost every aspect of CS;
different subsystems should do different things to be easier to understand and connect pieces cleanly
spring-boot
java framework for web-app development
DNS / Domain Name Servers
names are translated into IP addresses;
IP addresses are rememebered and when a name is typed in, reroute to that IP
IP address
“internet protocol address”; unique number for each computer used to determine the destination of a packet; currently at IPV6, so there are 2^n+1 bits of space in an address
requesting a site/network
model view controller
a software architectural pattern used for developing user interfaces dividing the program into three connected elements
model
internal representations of information; logic
view
interface presenting information to and accepting information from the user
controller
software linking the model and view; update model or view
JSON
JavaScript Object Notation; used for data storage, moving data in an MVC
process
execution of a program
thread
a complete unit of execution in a process;
threads share code, resources, memory, runtime details, state of process…;
“like a process but within a process” ?
methods for getting threads
coroutines
cooperative multitasking;
parallel processing for single-threaded languages, coordinated other tasks run when one task is blocked
abstract method
declaration, but no definition of the body
MIOS
a class may implement Many Interfaces but may only extend One Superclass
static members/variables
do not need an instantiated instance of their containing class; static variables are the same among all instances of the declared class
wrapper classes
a way to use data types as objects;
int myInt = 5 -> Integer myInt = 5;
use when working with arrays/iterables, since they can only store objects/instances not raws;
use when intializing something with the value “null” to avoid a compile error
wrapper class: float
Float
JVM
java virtual machine; enables a computer to run java (compiled bytecode)
JRE
java runtime environment;
runs on top of OS providing everything a program needs to run:
- classloader for required classes
- verifier to ensure code is accurate
- interpreter
JDK
java development kit; implements specification / provides software for working with Java applications
the mythical man-month
Fred Brooks’ essays on software eng + project management;
Brook’s Law
adding manpower to a late software project makes it later