HomeSoftwareScriptsNotesToolboxGallery
Computing
Thoughts on Coding Styleddrescue Recovery NotesDomain 301 Perma RedirectWin/Linux PuTTY File TransferOpenVPN Site-to-Site SetupParity Data CheckingRclone Quick ReferenceSnapRAID NotesSSH TunnelingTransfer E-Mails with IMAPUDK Third Person CameraVPN Protocol Ports

GNU/Linux
Apache Process Mem UsageApache and CA OpenSSLApache2 htpasswd NotesCentOS 7 GlusterFS NotesCracking WEP and WPADebian 7 on Hyper-VDebian 7 to 8 UpgradeDebian 8 to 9 UpgradeDebian 9 DRBD SetupDebian and VirtualboxDebian and LSBInitScriptsDebian and systemdDebian Apache LetsEncryptDebian Apt AutoremoveDebian Cron & AnacronDebian KVM HypervisorLinux Bash ColorsLinux Cron BackupLinux Dnsmasq Setup NotesIptables Chain ExampleIptables Firewall and GatewayLinux MD RAID BasicsLinux iproute2 RoutingLinux SFTP Network ShareAvoid Linux Shell LoggingChecking Storage UsageLinux I/O Disk PerformanceLinux ZFS NotesVi/Vim Basic Reference

Microsoft
Bypass Windows PasswordDaz and ToolkitMRTG Network Traffic ViewMS Outlook NotesDOS File Content SearchDOS Merging VCF filesROBOCOPY Batch ScriptingPowerShell Reference NotesThe runas CommandTeamViewer on HeadlessUpdateOrchestrator ModWorkgroup Failover ClusterDisable OneDrive in W10Windows 10 ServerWindows WiFi and netshWindows Boot Custom UIHyper-V NetworkingHyper-V ReplicationIIS10 and PHP7 SetupLet's Encrypt and IISPlex Media Server MigrationRebuilding Boot PartitionSecuring RDP ConnectionsServer 2012 R2 SetupWindows Shortcut CommandsWBAdmin Bare-Metal Backup

BSD/Unix
FreeBSD 10.0 Setup (NOR)

C#/.NET
C# Associative ArraysC# Asynchronized WebcallC# Base64 GZipped JSONC# Broadcast Registry ChangesChanging a project nameC# Code Execution TimerCode Signing With SigntoolC# Creating a WebserverC# Dealing with WhitespacesC# djDBI for SQL CEC# Form ReferencingC# Get Folder SizeC# Handling DisconnectsC# HTTP POST and GETC# Importing DLL FunctionsC# Installing ServicesC# Kill and Start ProcessesC# Lambda ExpressionsC# Local AppData HandlingC# Memory StreamReadingC# Minimize to System TrayC# PDFsharp and MigraDocC# Public Fields vs PropsC# Registry HandlingC# Regular ExpressionsC# Require AdministratorC# RichTextBox File StreamC# Application SettingsC# SqlCeConnection CodeC# Start with hidden formC# String EncryptionC# Cross Thread HandlingC# Updating A RuntimeC# Gmail as SMTPVSI Dependency ErrorC# Handle XML

C/C++
AOB Scan/InjectC Autodelete Old FilesC/C++ Multiline StringsC Socket ListeningC StringsGDI Double BufferWin32 Button ControlWin32 Edit ControlWin32 GetLastError()Win32 KeyloggingWin32 KeypostingWin32 Simple WindowWin32 Socket ProgrammingWin32 VERSIONINFO

PHP
Bitwise IP HandlingPHP ClassesContent Length HandlingDetecting Mobile BrowsersGoogle Captcha IntegrationHidden DownloadsHostname and Port RegexJSON Output HeadersMS Access Conn with COMProportional Image SizingRandom StringsRecursive FunctionsSending MailPHP SessionsSimple HTML-2-PDFPHP SimpleXMLTernary Operator and If/Else

SQL
MS Access Connection StringsMSSQL Case SensitivityMySQL Root Password ResetMySQL Check Slow QueriesColumn CountingQuick Note on CROSS JOINQuick Note on INNER JOINRandom Rows

HTML
HTML Raw Skeleton

JavaScript
AJAX Basicsevent.keyCode ReferenceIE7 Onclick EventsIE GIF Animation Problem

Java
Java Notater (NOR)

CSS
Border StylesFlyout MenusFont-Family Reference

Electrical
Betegnelser og SpenningsfallLovdata Elektrisk ArbeidResistors Series and ParallelSilicone and Circuit Boards

Java Notater (NOR)



Personlige Notater 1 av 2                                   
Læring av Java og Android                                  
                                                            
                                                           Oktober 2016, Java 8
                                                                   
===============================================================================
                          Kjøring av Javaprogrammer
===============================================================================

Eclipse IDE for Java Developers
Neon.1 Release (4.6.1):

    Fil > Export > Runnable JAR file
    Kjør med:
        java -jar 

        

        
===============================================================================
                                    Typer
===============================================================================

Primitive Typer

    TYPE    VERDI        ANTALL BITS                              STANDARDVERDI
    
    boolean 1-bit verdi  (0)                                              false
    byte    8-bit verdi  (0000 0000)                                          0
    short   16-bit verdi (0000 0000 0000 0000)                                0
    int     32-bit verdi (0000 0000 0000 0000 0000 0000 0000 0000)            0
    long    64-bit verdi (0000 0000 0000 0000 0000 0000 0000 0000
                          0000 0000 0000 0000 0000 0000 0000 0000)            0
    float   32-bit verdi                                                   0.0f
    double  64-bit verdi                                                   0.0d
    char    16-bit verdi                                               '\u0000'
    
    MERK:
        - Sammenslåing gjøres med '+'. Selv mellom objekter og primitive typer.
        - Standardverdi for ikke-initialiserte objekter er 'null'.
        - Typekasting eksempel: int i = (int) variabel_av_annen_type.
        


        
===============================================================================
                                   Strenger
===============================================================================

Strengbehandling

    Sammenslåing av strenger bør gjøres med StringBuilder eller StringBuffer. 
    Det er en mer effektiv måte enn ved kun '+', som skaper et nytt objekt i 
    minnet hver gang man sammenslår. StringBuffer er identisk med StringBuilder
    med unntak av at StringBuffer er "thread-safe".
    
    Sammenslåing Eksempel:
    
        StringBuilder sb = new StringBuilder("");
        sb.append("Ole")
        .append("Dole")
        .append("Doffen");
        
Strengformatering

    F.eks. med System.out.printf(, )
    
    %2d     =    La verdien bruke en total bredde på 2.
    %-2d    =    Samme, men justering av verdi skjer mot venstre.
    %.2f    =    .2 betyr visning av 2 desimaler.
    %5.1f   =    Totalt 5 tall med 1 desimal.
    %-5.1f  =    Samme, men justering av verdi skjer mot venstre.
    
    MERK:
        - Streng klassen kan returnere formatert streng med .format()
        

        
    
===============================================================================
                                    Pakker
===============================================================================
                                    
MERK:

    - Man kan ikke ha flere klasser med like navn i samme pakke.
    - Klasser i pakker under default må ha pakkedefinisjon øverst.
    - Pakkehierarkiet er den samme som mappestrukturen.
    - Klasser i underpakker må ha importdefinisjon før bruk 
      (må være etter pakkedefinisjoner).
    - Wildcard '*' kan brukes ved import av 'pakke.klasser'.
    - Navnekonvensjon for pakker: com.thronic.pakkenavn
    
    Pakkedefinisjon for tilhørighet som skrives i klassefiler - eksempel:
        package pakke;
        
    Importdefinisjon eksempel:
        import pakke.klasse;
    

    
    
===============================================================================
                               Kontrollstrukturer
===============================================================================
    
IF/ELSE
    
    if () {
    
    } else if() {
    
    } else {
    
    }
    
SWITCH

    switch() {
        case "":
            break;
        
        default:
    }
    
FOR

    for (int n=0; n<10; n++) { ... }
    for (int n : matrise) { ... }
        - Samme som 'foreach' men heter i dette tilfellet 'Enchanced For-Loop'.

WHILE
    while (1) { ... }
    
try {
    // Prøv dette.
    
} catch (Exception e) {
    // Oi da.
    
} finally {
    // Vi gjør uansett dette til slutt.
}
    

    
    
===============================================================================
                             Matriser og Samlinger
===============================================================================
                             
Matriser

    int[] verdier;              // Deklarasjon.
    verdier = new int[3];       // Initialisering.
    int[] tall = {1,2,3}        // Deklarering og initialisering samtidig.
    int[][] par_odde = {        // Multidimensjonell matrise.
        {2,4,6},
        {1,3,5}
    }
    
Listetyper

    Det finnes 9 typer lister i 3 kategorier: 
    
        ArrayList, LinkedList og Vector.
        HashSet, TreeSet og LinkedHashSet.
        HashMap, HashTable og TreeMap.
        
    Eksempel:
        ArrayList id_liste = new ArrayList();
    
        tall.add(123);
        tall.add(789);
        tall.add(2,456);    // Setter inn 456 på plass 2 i matrisen og
                               dytter nåværende verdi nedover.
                               
    HashSet, TreeSet og LinkedHashSet er lik i funksjonalitet, men godtar ikke
    identiske verdier. De blir ikke lagt til ved forsøk og blir ignorert.
    Kart opererer med nøkler og verdier (som collections i C#).
    
    Eksempel:
        HashMap kart1 = new HashMap();
        
    Eksempel med nøsting:
        HashMap> kart2 = 
        new HashMap>();
        
        kart1.put("DaGonny",1234);
        kart1.put("Kristine",5678);
        kart2.put("Navneliste", kart1);
        

        
        
===============================================================================
                                 Funksjoner
===============================================================================

Eksempelkode

    class Eksempel {
        private String s = "";
        private int i = 0;
        
        public void settVerdier(String s, int i) {
            this.s = s;
            this.i = i;
        }
        
        public String hentVerdier() {
            return s + i;
        }
    }
    
    public class Test1 {
        public static void main(String[] args) {
            Eksempel e = new Eksempel();
            e.settVerdier("Dette er test nr ",1);
            System.out.println(e.hentVerdier());
        }
    }
    
    
    
    
===============================================================================
                     Klasser, Objekter og Grensesnitt
===============================================================================

MERK:
    - Klasser kan kun ha 'public' eller ingenting foran definisjonen.
    - Abstrakte klasser kan kun arves og tjener kun som et templat/prototype.
    - private : Kun synlig for klassen.
    - protected : Kun synlig for pakken og underklasser.
    - public : Synlig for alt.
    - Deklarasjoner uten nøkkelord ovenfor er kun synlige på pakkenivå.
    
Konkret klasse:

    public class SvartStol {
        String farge = "Svart";
        int antallBein = 4;
        
        public void Sitte() {
            // Bestemt kode for å sitte på en svart stol.
        }
    }
    
Abstrakt klasse:

    public abstract class Stol {
        protected String farge;
        protected int antallBein;
        
        // Prototype for underklasser.
        public abstract void Sitte();
        
        // Felles ferdig definert funksjon for alle underklasser.
        public String hvilkenFarge() {
            return farge;
        }
    }
    
    Bruk:
        public class TVStol extends Stol {
            @Override
            public void Sitte() {
                // Unik kode for TVStol ang. sitting. Ekstrem avslapping her!
            }
        }
        
Konstruktbruk

    public class Klasse {
        private int i;
        
        public Klasse() {
            i = 0;
        }
        
        // Overlasting av konstrukt er lov.
        public Klasse(int i) {
            this.i = i;
        }
    }
    

    
===============================================================================
                            Komplett Eksempelkode
===============================================================================

interface Sitting {
	public void sittNed();
	public void reisOpp();
}

abstract class Stol {
	protected int antallStolBein;
	protected String farge;
	protected String puteType;
	
	public static void sitteAksjon(boolean b, Sitting s) {
		if (b) {
			s.sittNed();
		} else {
			s.reisOpp();
		}
	};
}

class Godstol extends Stol implements Sitting {
	public Godstol() {
		antallStolBein = 1;
		farge = "Grønn.";
		puteType = "Lazyboy.";
	}
	
	public void sittNed() {
		System.out.println("Setter meg ned i godstolen!\nDEILIG! ZZZZzzzzz");
	}
	
	public void reisOpp() {
		System.out.println("Reiser meg opp fra godstolen!\nUthvilt!");
	}
}

class Drittstol extends Stol implements Sitting {
	public Drittstol() {
		antallStolBein = 4;
		farge = "Muggen grå og jævlig.";
		puteType = "Treplate med spiker i fu-området.";
	}

	public void sittNed() {
		System.out.println("Setter meg på drittstolen:\nHELVETE! BLOD OGSÅ!");
	}

	public void reisOpp() {
		System.out.println("Reiser meg fra drittstolen:\n1 LITER BLOD. VEKK.");
	}
}

public class Test1 {
	public static void main(String[] args) {
		Godstol stol1 = new Godstol();
		Drittstol stol2 = new Drittstol();
		
		Stol.sitteAksjon(true, stol1);
		Stol.sitteAksjon(false,  stol1);
		
		Stol.sitteAksjon(true,  stol2);
		Stol.sitteAksjon(false, stol2);
	}
}