Neuste Artikel aller Themen


      
Java, allgemein
11.05.2023

synchronized


synchronized wird verwendet, damit nicht zwei Threads gleichzeitig auf das selbe Objekt zugreifen können.

private synchronized (this) {
   // kritischer Code
}

Der Übergabeparameter ist häufig this, kann aber auch ein beliebiges anderes Objekt sein, welches vorzugsweise final ist um sicher zu stellen, dass das Objekt zur Laufzeit nicht geändert wird. Grund: Dieses Objekt enthält den lock für den synchronized code.
Daher ist code wie dieser nicht erlaubt:

ArrayList<String> myList = new ArrayList<>();
private synchronized (myList) {
   myList = new ArrayList<>();
}




      
Java, allgemein
28.04.2023

ArrayList - thread safe


Es gibt verschiedene Möglichkeiten eine ArrayList thread safe zu machen:

List list = new CopyOnWriteArrayList(); // Einfach statt einer normalen ArrayList verwenden

oder

List list = Collections.synchronizedList(new ArrayList());


Stichworte:
ArrayList, Multithreading, thread safe, CopyOnWriteArrayList




      
Java, allgemein
26.04.2023

Threadpool


package com.sowas.itwiki.threadpool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ThreadpoolExample {

   /**
    * Ein Task ist die Aufgabe, die der Thread erledigen soll
    */
   private class Task implements Runnable {
      private int taskId;

      public Task(int id) {
         this.taskId = id;
      }

      @Override
      public void run() {
         System.out.println("Task Id: " + this.taskId + " performed by " + Thread.currentThread().getName());
      }
   }

   public static void main(String args[]) {
      ExecutorService executerService = Executors.newFixedThreadPool(4); // create 4 worker threads in Thread Pool
      for (int i = 0; i < 10; i++) {
         executerService.submit(new Task(i));
      }
      executerService.shutdown();
      System.out.println("All done.");
   }
}

Ausgabe (kann je nach Platform leicht varieren):
Task Id: 0 performed by pool-1-thread-1
Task Id: 3 performed by pool-1-thread-4
Task Id: 4 performed by pool-1-thread-1
Task Id: 2 performed by pool-1-thread-3
Task Id: 7 performed by pool-1-thread-3
Task Id: 8 performed by pool-1-thread-3
Task Id: 1 performed by pool-1-thread-2
Task Id: 9 performed by pool-1-thread-3
Task Id: 6 performed by pool-1-thread-1
Task Id: 5 performed by pool-1-thread-4
All done.



      
html5-javascript
24.04.2023

find() ohne JQuery


document.getElementById("#test").querySelector("h1").innerHTML = "Text";
oder
document.getElementById("#test").querySelectorAll("h1")[0].innerHTML = "Text";



      
Git
14.04.2023

Cherry-picking


git cherry-pick wird verwendet um andere commits auf den aktuellen Branch zu übertragen.
Dazu muss dem Befehl lediglich die Commit-Id übergeben werden. Diese erhält man mit git log oder aber über Bitbucket (falls verwendet).

git cherry-pick b04e15466f5

b04e15466f5 ist natürlich nur eine beispielhafte Commit-Id.



      
html5-typescript
03.04.2023

ComboBox


Selektierten Wert auslesen

let combo: HTMLSelectElement = document.getElementById("MY_COMBO");
combo.addEventListener("selectionchange", function(ev) { 
   let value = combo.options[combo.selectedIndex].value;
});




      
SWT/JFace
02.02.2023

Text - maximale Länge


Möchte man die maximal zulässige Eingabelänge in einem Text-Eingabefeld begrenzen, so hilft folgender Befehl:
Text textField = new Text(...
textField.setTextLimit(6);  // Begrenzung auf sechs Zeichen


Stichworte:
Text, TexField, TextFeld, maximale, Zeichenzahl, Länge, Eclipse-RCP




      
Git
15.12.2022

stash in Datei exportieren


Exportieren mit:
git stash show -p > myFile.patch

Importieren mit:
git apply myFile.patch




      
Java, Swing
19.11.2022

JLabel, Hintergrundfarbe setzen



JLabel label = new JLabel();
label.setOpaque(true);  // wichtig!
label.setBackground(Color.CYAN);

JLabel, Innenabstand zum Text setzen



      
Java, Swing
17.11.2022

JLabel: Innenabstand zum Text setzen


Folgender Code zeigt, wie man den Innenabstand vom Text zum JLabel setzt:


import java.awt.Color; 
import java.awt.FlowLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;

public class LabelPadding {

   public LabelPadding() {
      JFrame frame = new JFrame("JLabel mit Padding");

      initGUI(frame);

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   private void initGUI(JFrame frame) {
      JLabel label = new JLabel("Labeltext");
      EmptyBorder eBorder = new EmptyBorder(6, 6, 6, 6); // oben, rechts, unten, links
      LineBorder lBorder = new LineBorder(new Color(96, 96, 96));
      label.setBorder(BorderFactory.createCompoundBorder(lBorder, eBorder));
      frame.setLayout(new BorderLayout());
      frame.add(label, BorderLayout.CENTER);
   }

   public static void main(String[] args) {
      new LabelPadding();
   }
}

JLabel, Hintergrundfarbe setzen