was ist der unterschied zwischen public, protected, package-private und private in java?
<p>in java gibt es klare regeln, wann die einzelnen zugriffsmodifikatoren verwendet werden sollen, und zwar die standardmodifikatoren (paket privat) <code>public</code>, <code>protected</code> und <code>private</code>, während <code>class</code> und <code>interface</code> und umgang mit vererbung?</p>
<p> <a href="http://docs.oracle.com/javase/tutorial/java/javaoo/accesscontrol.html">das offizielle tutorial</a> kann für sie von nutzen sein.</p><pre> \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ | │ klasse │ paket │ unterklasse │ unterklasse │ welt | | │ │ │ (gleiche packung) │ (verschiedene packungen) │ | | ───────────┼───────┼─────────┼ ──────────┼──────────┼──────── | | public │ + │ + │ + │ + │ + | | ───────────┼───────┼─────────┼──────────┼─── ───────┼──────── | | protected │ + │ + │ + │ + │ | | ───────────┼───────┼─────────┼──────────┼─── ───────┼──────── | | kein modifikator│ + │ + │ + │ │ | | ───────────┼───────┼─────────┼──────────┼─── ───────┼──────── | | privat │ + │ │ │ │ | | \_\_\_\_\_\_\_\_\_\_\_ | \_\_\_\_\_\_\_ | \_\_\_\_\_\_\_\_\_ | \_\_\_\_\_\_\_\_\_\_ | \_\_\_\_\_\_\_\_\_\_ | \_\_\_\_\_\_\_\_ | +: zugänglich leer: nicht zugänglich </pre>
Jython Compiler bietet nicht viel Optimierungs Entscheidungen. Da jedoch die Java Virtual Machine (Java) und vielleicht Compiler (javac) im Backend oder zur Laufzeit aufgerufen zu werden, sollten Sie einen Blick auf sie nehmen.


Java hat unterschiedlichen Laufzeitschalter je nach verwenden, ob Sie es als Server-Prozess starten wollen, Client-Prozess, etc. Sie können auch, wie vielen Speicher sagen zuzuteilen. <blockquote> <p>angenommen, der server soll daten mit dem privaten schlüssel verschlüsseln und mit dem öffentlichen schlüssel entschlüsseln, um daten zu verteilen, von denen überprüft werden kann, dass sie vom richtigen server stammen.</p> </blockquote><p>sie können dies tun - auf eine sehr vereinfachte ebene funktioniert die rsa-signatur (anmerkung, vereinfacht - es steckt noch ein bisschen mehr dahinter).</p><blockquote> <p>kann ich den privaten schlüssel einfach veröffentlichen und den öffentlichen schlüssel geheim halten, anstatt den code zu ändern, um dies zu ermöglichen? beeinträchtigt dies die sicherheit des systems?</p> </blockquote><p>sie <strong> müssen den privaten schlüssel überhaupt nicht </strong> veröffentlichen - rsa ist eine trapdoor-permutation, was bedeutet:</p><ul> <li>wenn sie mit einem öffentlichen schlüssel verschlüsseln, können sie mit dem privaten schlüssel entschlüsseln.</li> <li>wenn sie mit einem privaten schlüssel verschlüsseln, können sie mit einem öffentlichen schlüssel entschlüsseln.</li> </ul><p>daher unterstützt rsa sowohl das signieren als auch das verschlüsseln, wobei der endbenutzer nur über den öffentlichen schlüssel verfügt.</p><p>wenn der client in ihrem fall überprüfen möchte, ob daten vom server stammen, wenden sie den zweiten fall von rsa an und entschlüsseln die signaturdaten mit dem bereits vorhandenen öffentlichen schlüssel.</p><p>da es sich um eine permutation handelt, sollten sie ihren code außerdem überhaupt nicht ändern müssen. beide tasten sollten mit derselben funktion arbeiten. ich würde erwarten, dass jede anständige kryptobibliothek apis zur überprüfung von signaturen gemäß den unterschiedlichen standards hat - eine davon wäre wahrscheinlich eine gute wahl.</p><p>rsa labs bieten ein nice <a href="https://web.archive.org/web/20130718172549/https://www.rsa.com/rsalabs/node.asp?id=2182">erklärung hierfür</a> .</p><p>wenn sie dies zwischen servern erweitern oder die clientkommunikation überprüfen möchten, generieren sie schlüssel für jede entität und tauschen sie die öffentlichen aus. das verfahren kann dann an beiden enden angewendet werden.</p><p>theoretisch sind e und d austauschbar (weshalb rsa funktioniert) (man muss als geheim bezeichnet und geheim gehalten werden), aber p und q müssen <strong> immer </strong> sein geheim gehalten, da diese es ihnen ermöglichen, d von e abzuleiten und umgekehrt. sie müssen jedoch beim verständnis des privaten schlüssels äußerst vorsichtig sein - speichert ihre software p/q im privaten schlüssel? wenn ja, können sie es nicht so veröffentlichen, wie es ist. auch wenn ich austauschbar sage - sobald sie eines dieser paare (e oder d zusammen mit ihrem modul n) veröffentlicht haben, müssen sie das andere <em> mit ihrem leben</em> schützen. praktisch gesehen <a href="https://stackoverflow.com/questions/696472/given-a-private-key-is-it-possible-to-derive-its-public-key">wie graeme in den kommentaren verlinkt</a> e wird oft als kleiner/fester wert gewählt. mein kommentar, dass e/d austauschbar ist, trifft eindeutig nicht zu, wenn e leicht zu bestimmen ist. wenn sie so etwas tun, kann dies zu verwirrung und fehlimplementierung führen. verwenden sie eine bibliothek eines drittanbieters/veröffentlichen sie keine privaten schlüssel.</p> Sie können Ihr Set `JAVA_HOME` in `/etc/profile` als [Petronilla Escarabajo](https://askubuntu.com/a/175519/19723) vermuten lässt. Der bevorzugte Speicherort für `JAVA_HOME` eine Systemvariable ist jedoch `/etc/environment` .

Öffnen Sie `/etc/environment` in einem beliebigen Texteditor wie `nano` oder `gedit` und fügen Sie die folgende Zeile hinzu:


```
 JAVA_HOME="/usr/lib/jvm/open-jdk"
 
```
(Java-Pfad könnte anders sein)

Verwenden Sie `source` diesen Befehl, um die Variablen zu laden:


```
 source /etc/environment
 
```
Überprüfen Sie dann die Variable, indem Sie diesen Befehl ausführen:


```
 echo $JAVA_HOME
 
```
**Aktualisieren**

Normalerweise beziehen die meisten Linux-Systeme standardmäßig / etc / environment. Wenn Ihr System dies nicht tut, fügen Sie die folgende Zeile hinzu `~/.bashrc` (Danke @pje)


```
 source /etc/environment
 
``` sollte ein austausch zb privater daten notwendig sein, wird man für private nachrichten freigeschaltet.danke schön, das hilft mir weiter. Zu "TeamViewer Enterprise Final " spukt mir Google nur mehr oder weniger illegale Sachen aus und laut Temviewer-Webseite gibt es eine Version mit dieser Bezeichnung gar nicht. - Da will doch nicht etwa einer.....


Nun zum Thema Unterschied Free- zu (sagen wir mal) Kaufversion.  

Teamviewer darf nur für die private Nutzung kostenlos genutzt werden  

Wie der Hersteller das genau definiert kannst Du hier <http://www.teamviewer.com/de/help/213-Wie-genau-ist-private-Nutzung-definiert.aspx> nachlesen.  

Auch kann man die Kaufversionen z.B. mit Firmenlogo und eigenem Mail-Einladungstext anpassen lassen.  

Die genauen Unterschiede der einzelnen Versionen kannst Du auf der Teamviewer-Webseite nachlesen, der Link dazu folgt im Kommentar.  

Soweit ich weiß, entspricht die Free-Version bis auf 1-2 Kleinigkeiten der Business-Version.
Die Mehrfunktionen der Kaufversionen wie mehrere Kanäle, erhöhte Performance, bevorzugter Support oder Managementkonsole usw. sind m.E. für den Privatnutzer nicht wirklich notwendig oder werden gar nicht gebraucht. "**JPEG-Foto**:
Das Allround-Alltagsformat Deiner Kamera, um schnell und komfortabel zu guten Fotos zu kommen. Schnelles Fotografieren, schnelles Abspeichern, sofortiges Betrachten am Blechotto, platzsparendes Archivieren und vielfältige Möglichkeiten zur Nachbearbeitung am PC.


**RAW-Foto**:
Das digitale Negativ für schwierige Lichtsituationen und die Vorlage zur digitalen Nachbearbeitung am PC in höchster Qualität mit vielfältigsten Möglichkeiten. Das qualitativ Beste, was aus Deiner Kamera herauszuholen ist, aber ohne Nachbearbeitung am PC nicht (oder nur stark eingeschränkt) anzusehen. Das Format für ganz spezielle, geplante und strukturierte Fotografien. Nicht für den alltäglichen Fotoalltag zu gebrauchen, wie z.B. Urlaubsfotos, Parties, Feste und Events."
(Quelle: Die Fotoschule)


Sehr ausführlich mit RAW- und JPEG-Vergleichsfotos hier:


<http://www.ralfonso.de/Fotoschule/fotoschule97.html>


**Kurzantwort: JPEG ist das Alltagsformat für den normalen User. RAW benutzt der sehr anspruchsvolle Profi.** <p>der weg zu gehen ist das hochladen <strong>einmal für jede ubunt</strong> version.</p><p>launchpad erstellt keine pakete für ubuntu-versionen, die nicht mehr unterstützt werden, und erstellt nur ein paket für eine bestimmte ubuntu-version. die zielversion wird (wie sie bereits wissen) in der datei <code>changelog</code> durch den neuesten eintrag angegeben!</p><p>denken sie daran, dass die pakete, von denen ihr programm abhängt, möglicherweise nicht in allen ubuntu-versionen in derselben version verfügbar sind.</p><p>sie sprechen auch von "multi-architektur" (architektur = cup-typ, z. b. x86, lpia, amd64). dies macht keinen unterschied, da jedes hochgeladene paket für alle verfügbaren architekturen erstellt wird, solange sie <code>architecture: any</code> in der paketdefinition (<code>debian/control</code>) datei, dies ermöglicht ihnen auch, das paket von verschiedenen paketen für verschiedene architekturen abhängig zu machen (das paket muss mehrmals definiert werden)</p> Da musst du dich mit den Begriffen "digitale Signatur" (siehe <http://de.wikipedia.org/wiki/Digitale_Signatur>) und PKI bzw. Zertifikate auseinander setzen. Ist nicht sooo schwierig, wenn man einmal das Grundprinzip begriffen hat. Und es gibt auch genug Gratis-Lösungen wie z.B. PGP.


In einem Schnellverfahren erklärt:
Ein solcher digitaler "Schlüssel" besteht immer aus 2 Teilen, einem privaten Schlüssel (das ist dein Heiligtum, welches du nie weitergeben darfst) und einem öffentlichen Schlüssel (den müssen alle Beteiligten bekommen -> den musst du so viel wie möglich verbreiten bzw. sollte der auf einem Server im Internet für alle verfügbar gemacht werden).


Wenn du nun etwas verschlüsselst, musst du das **immer mit dem öffentlichen Schlüssel aller Empfänger** verschlüsseln (die musst du natürlich vorher von denen bekommen) -> denn nur diese können die E-Mail dann mit Hilfe ihres jeweiligen privaten Schlüssels wieder entschlüsseln.


Fazit: nur mit solchen Techniken lassen sich Manipulationen verhindern bzw. nachweisen. <p>es ist keine schwäche für einen kurzen oder langen öffentlichen exponenten für rsa bekannt, solange der öffentliche exponent "korrekt" ist (dh relativ prim zu <em> p-1</em> für alle primzahlen <em> p </em> welche den modul teilen).</p><p><em> if</em> sie verwenden einen kleinen exponenten <em> und</em> sie verwenden kein padding für die verschlüsselung <em> und</em> sie verschlüsseln genau dieselbe nachricht mit bei mehreren unterschiedlichen öffentlichen schlüsseln ist ihre nachricht gefährdet: if <em> e = 3</em> und sie verschlüsseln die nachricht <em> m</em> mit öffentlichen schlüsseln <em> n<sub>1</sub></em>, <em> n<sub>2</sub></em> und <em> n<sub>3</sub></em>, dann hast du <em> c<sub>ich</sub> = m<sup>3</sup></em> mod <em> n<sub>ich</sub></em> für <em> i = 1</em> bis <em> 3</em>. mit dem <a href="http://en.wikipedia.org/wiki/chinese\_remainder\_theorem">chinesischer restsatz</a> können sie dann <em> m<sup>3</sup></em> mod <em> n<sub>1</sub>n<sub>2</sub>n<sub>3</sub></em>, was sich als <em> m herausstellt<sup>3</sup></em> (ohne modulo) weil <em> n<sub>1</sub>n<sub>2</sub>n<sub>3</sub></em> ist eine größere ganze zahl. eine (nicht modulare) kubikwurzelextraktion reicht dann aus, um <em> m</em> zu extrahieren.</p><p>die schwäche ist hier <strong> nicht </strong> der kleine exponent; vielmehr ist es die verwendung einer falschen auffüllung (nämlich überhaupt keine auffüllung) für die verschlüsselung. das auffüllen ist für die sicherheit von rsa sehr wichtig, egal ob verschlüsselung oder signatur. wenn sie keine ordnungsgemäße polsterung verwenden (wie die in <a href="http://www.rsa.com/rsalabs/node.asp?id=2125">pkcs # 1</a> beschriebenen), haben sie viele schwächen, und die im obigen absatz beschriebene ist bei weitem nicht die größte. wenn sich jemand jedoch auf eine schwäche im zusammenhang mit der exponentengröße bezieht, bezieht er sich mehr oder weniger direkt auf dieses ereignis. das ist ein bisschen alte und falsche überlieferung, die manchmal in ein verbot gegen <em> groß</em> exponenten umgewandelt wird (da es sich um einen mythos handelt, ist der umgekehrte mythos auch ein mythos und nicht mehr - und nein weniger begründet); ich glaube, das beobachten sie hier.</p><p>es gibt jedoch einige gründe, warum ein großer öffentlicher exponent vermieden werden sollte:</p><ul> <li> <p>kleine öffentliche exponenten fördern die effizienz (für public-key-operationen).</p> </li> <li> <p>es gibt sicherheitsprobleme, wenn ein kleiner exponent <em> privat</em> vorhanden ist. ein schlüsselwiederherstellungsangriff wurde beschrieben, wenn die länge des privaten exponenten nicht mehr als 29% der länge des öffentlichen exponenten beträgt. wenn sie erzwingen möchten, dass der private exponent kurz ist (z. b. um operationen mit privaten schlüsseln zu beschleunigen), müssen sie mehr oder weniger einen großen öffentlichen exponenten verwenden (so groß wie der modul). die forderung, dass der öffentliche exponent kurz sein muss, kann dann als eine art indirekte gegenmaßnahme angesehen werden.</p> </li> <li> <p>einige weit verbreitete rsa-implementierungen drosseln große öffentliche rsa-exponenten. z.b. der rsa-code in windows (cryptoapi, von internet explorer für https verwendet) besteht darauf, den öffentlichen exponenten in einem einzelnen 32-bit-wort zu codieren. es kann keinen öffentlichen schlüssel mit einem größeren öffentlichen exponenten verarbeiten.</p> </li> </ul><p>dennoch sieht "risiken können groß sein" wie die allgemeine rechtfertigung aus ("dies ist ein sicherheitsproblem" ist die übliche art zu sagen "wir haben es nicht implementiert, aber wir wollen keine art von faulheit zugeben").</p> <p>die standardmethode für die angabe des objekttyps ist entweder <a href="http://search.cpan.org/perldoc?perlfunc#ref"><code>ref</code></a> oder <a href="http://search.cpan.org/perldoc?scalar::util"><code>scalar::util</code></a> <code>::blessed</code>. wenn sie<em> wissen </em>das objekt gesegnet ist, geben sie dieselbe information zurück. </p><pre><code>my $class1 = blessed( $obj ); my $class2 = ref $obj; </code></pre><p><code>ref</code> gibt jedoch auch 'hash' für nicht gesegnete hashes zurück, während <code>blessed</code> dieses spiel ablehnt. </p><p>für eine liste von methoden ist es für den gesegneten zeigerstil eines perl-objekts einfach, eine davon selbst zu codieren. der folgende code funktioniert ziemlich gut für mich. es gibt die namen der funktionen (diejenigen, die den &quot;code-slot&quot; des angegebenen namens annehmen) zurück, die dem paket zugeordnet sind, das sie definiert. </p><pre><code>sub class\_methods { use class::isa; my $obj = shift; return unless ref( $obj ); my %meth\_names; foreach my $anc ( class::isa::self\_and\_super\_path( ref $obj ), 'universal' ) { my $stash = \%{"$anc\::"}; my @funcs = grep { m/^[\_\p{alpha}]/ # begins with \_ or alpha &amp;&amp; !exists $meth\_names{$\_} # no clobbering &amp;&amp; defined *{$stash-&gt;{$\_}}{code} # has a filled code slot } keys %$stash ; # assign to the "hash slice", keyed by all the entries in @funcs # the value of $anc repeated as many times as elements in @funcs. @meth\_names{@funcs} = ( $anc ) x @funcs; } return %meth\_names; } </code></pre><ul> <li><p>dies funktioniert auch für relativ komplexe objekte, aber wenn das besitzende paket eine menge generierten codes enthält, ist es nicht besonders hilfreich zu wissen, in welchem ​​paket die generatoren den code-pointer stecken. es wird mehr bedeuten, welches paket zu finden ist generiert den code. </p></li> <li><p>ist dies der fall, erhalten sie<em> might </em>den code aus der ausführung ihres codes, einschließlich <a href="http://search.cpan.org/perldoc?data::dumper"><code>data::dumper</code></a> und setzen von <code>$data::dumper::deparse</code> auf 1 wie folgt: (<code>local $data::dumper::deparse = 1;</code>) und dann den code-zeiger wie folgt: <code>say dumper( $code\_ref );</code></p></li> <li><p>es<em> won't </em>funktioniert für gültige methoden, die noch mit einer beliebigen <code>autoload</code>-methode erstellt werden müssen. wenn sie diese in der liste sehen, macht das objekt möglicherweise mehr, aber was es alles tut, wissen sie nicht.</p></li> <li><p>die &quot;basisklasse&quot; <code>universal</code> ist enthalten, da diese klasse verhalten enthält, das vom objekt verwendet werden kann. </p></li> </ul><p>viel glück.</p>