„SzoftTechZH20130422” változatai közötti eltérés
Nincs szerkesztési összefoglaló |
a A C# kód bénán volt betördelve, ezt javítottam. |
||
(5 közbenső módosítás, amit 4 másik szerkesztő végzett, nincs mutatva) | |||
20. sor: | 20. sor: | ||
public KeyArgs(char character) { | public KeyArgs(char character) { | ||
_character = character; | |||
} | } | ||
} | } | ||
31. sor: | 31. sor: | ||
public event KeyEventHandler KeyDown; | public event KeyEventHandler KeyDown; | ||
// ennek a metódusnak a meghívásával tudjuk a keyup eventet | // ennek a metódusnak a meghívásával tudjuk a keyup eventet | ||
// elsütni | // elsütni | ||
public void FireKeyUp(char c) | public void FireKeyUp(char c) | ||
{ | { | ||
if(KeyUp != null) | |||
KeyUp(new KeyArgs(c)); | |||
} | } | ||
// ennek a metódusnak a meghívásával tudjuk a keydown eventet | // ennek a metódusnak a meghívásával tudjuk a keydown eventet | ||
// elsütni | // elsütni | ||
public void FireKeyDown(char c) | public void FireKeyDown(char c) | ||
{ | { | ||
if(KeyDown != null) | |||
KeyDown(new KeyArgs(c)); | KeyDown(new KeyArgs(c)); | ||
} | } | ||
} | } | ||
public class KeyBoardSubscriber | public class KeyBoardSubscriber | ||
{ | { | ||
// egy referenciát tárolunk egy KeyboardManager példányra, hogy | // egy referenciát tárolunk egy KeyboardManager példányra, hogy | ||
// fel tudjunk iratkozni az eseményeire | // fel tudjunk iratkozni az eseményeire | ||
private KeyboardManager manager = new KeyBoardManager(); | private KeyboardManager manager = new KeyBoardManager(); | ||
public void Subscribe() | public void Subscribe() | ||
{ | { | ||
//feliratkozás | |||
manager.KeyUp += ProcessKeyUp; | |||
} | } | ||
152. sor: | 152. sor: | ||
Sok olvasóra optimalizált megoldás. Egyszerre több olvasó is hozzáférhet az erőforráshoz, de íróból csak egy (illetve az író kizárja az olvasókat is). Pl. ritkán módosított cache megvalósítása. Folyamatok között: nem. Sebesség: közepes. | Sok olvasóra optimalizált megoldás. Egyszerre több olvasó is hozzáférhet az erőforráshoz, de íróból csak egy (illetve az író kizárja az olvasókat is). Pl. ritkán módosított cache megvalósítása. Folyamatok között: nem. Sebesség: közepes. | ||
'''c, | '''c,''' | ||
* főszál indít munkaszálat, tegyen be egy számot az item listbe, ezt jelezze a munkaszálnak | |||
* várja meg, míg befejezi a futását a munkaszál | |||
* munkaszál indulás után hatékonyan várakozzon a főszál jelzésére | |||
* jelzés után vegye ki a listából az elemet | |||
* írja ki a konzolra | |||
* fejezze be a futást | |||
Kölcsönös kizárás biztosítása, ha kell. | Kölcsönös kizárás biztosítása, ha kell. | ||
<pre> | |||
public class Process | public class Process | ||
{ | { | ||
189. sor: | 190. sor: | ||
} | } | ||
} | } | ||
</pre> | |||
Kölcsönös kizárás megvalósítására nincs szükség, mivel a listához időben szeparáltan férünk hozzá a két szálról(először az elsőről, aztán a másodikról). | Kölcsönös kizárás megvalósítására nincs szükség, mivel a listához időben szeparáltan férünk hozzá a két szálról(először az elsőről, aztán a másodikról). | ||
Alternatív megoldás, hogy a removedEvent-et kitöröljük a kódból, és a removedEvent.WaitOne() sor helyett workerThread.Join() -t használunk. | Alternatív megoldás, hogy a removedEvent-et kitöröljük a kódból, és a removedEvent.WaitOne() sor helyett workerThread.Join() -t használunk. | ||
5, Generikus típusok | |||
a, Példa generikus kényszer alkalmazására | |||
'''5, Generikus típusok''' | |||
'''a, Példa generikus kényszer alkalmazására''' | |||
<pre> | <pre> | ||
class Dictionary<K,V>: IDictionary<K,V> | class Dictionary<K,V>: IDictionary<K,V> | ||
209. sor: | 215. sor: | ||
'''b, Milyen esetben célszerű a dispose minta alkalmazása?''' | '''b, Milyen esetben célszerű a dispose minta alkalmazása?''' | ||
A drága,és felügyelt erőforrások felszabadítására használjuk, pl a File.Close() | A drága, és nem felügyelt erőforrások felszabadítására használjuk, pl a File.Close() dispose-t hív. | ||
A Dispose() meghívása nem történik automatikusan, ezt nekünk kell megtenni. | |||
A dispose tervezési mintának köszönhetően az objektumok által foglalt erőforrások felszabadítása válik determinisztikussá. | |||
'''c, .Net kóderedet alapú biztonsági mechanizmus lényege''' | |||
Adott helyről letöltött programnak milyen jogai vannak (rosszindulatú kódtól nem véd!) | Adott helyről letöltött programnak milyen jogai vannak (rosszindulatú kódtól nem véd!) | ||
(CAS) code acces security | (CAS) code acces security | ||
Nincsenek felkészítve a mobil kódokra. (levélhez csatolva, netről, dokumentumban tárolva érkezhetnek a gépre) | Nincsenek felkészítve a mobil kódokra. (levélhez csatolva, netről, dokumentumban tárolva érkezhetnek a gépre) | ||
Kód eredetét is kell ellenőrizni | Kód eredetét is kell ellenőrizni | ||
Kódhoz kötött jogosultságok: nem csak a felhasználót azonosítja, hanem a végrehajtott kódot is. | Kódhoz kötött jogosultságok: nem csak a felhasználót azonosítja, hanem a végrehajtott kódot is. | ||
A Szerelvényekhez kell meghatározni, hogy milyen jogaik vannak. (pl: netről töltött kód nem kap írási, és olvasási jogot, csak egy bizonyos mappára-> nem árthat nekünk) | A Szerelvényekhez kell meghatározni, hogy milyen jogaik vannak. (pl: netről töltött kód nem kap írási, és olvasási jogot, csak egy bizonyos mappára-> nem árthat nekünk) | ||
Nem egyesével adnak ki jogokat, hanem biztonsági házirendet alakíthat ki a rendszergazda. | Nem egyesével adnak ki jogokat, hanem biztonsági házirendet alakíthat ki a rendszergazda. | ||
'''6, Robusztus ADO.NET kapcsolat alapú modell | |||
Írjon példakódot: beszúr rekordot egy táblába: Student(StudentID, Name, YearofBirth) | '''6, Robusztus ADO.NET kapcsolat alapú modell''' | ||
(Nem szükséges sql paraméter használata.)''' | |||
'''Írjon példakódot: beszúr rekordot egy táblába: Student(StudentID, Name, YearofBirth)''' | |||
'''(Nem szükséges sql paraméter használata.)''' | |||
<pre> | <pre> | ||
254. sor: | 264. sor: | ||
</pre> | </pre> | ||
'''7, Bináris komponensek | '''7, Bináris komponensek''' | ||
a, Mit értünk dinamiks linkelés alatt? 3 előnye és 1 hátránya a statikus linkeléssel szemben.''' | |||
'''a, Mit értünk dinamiks linkelés alatt? 3 előnye és 1 hátránya a statikus linkeléssel szemben.''' | |||
Definíció: a futó program csak futásidőben tölti be a számára szükséges könyvtárakat. | Definíció: a futó program csak futásidőben tölti be a számára szükséges könyvtárakat. | ||
Előnyök: | Előnyök: | ||
* Ha több process használja a könyvtárat, akkor a memóriába csak egy példányban töltődik be (a kódrész, az adat marad külön!) | |||
* A háttértáron is csak egyszer foglal helyet (ha az alkalmazások megosztottan használják pl. a windows\system könyvtárból) | |||
* Kis alkalmazás (.exe) fájlméret | |||
* Ha a .dll-ben szerepel egy hibás függvény, akkor a programot egyszerűen a .dll cseréjével is javíthatjuk, nem kell újrafordítani. | |||
Hátrányok: | Hátrányok: | ||
* A program futásakor jelen kell legyenek az általa használt DLL-ek, ezek nélkül az alkalmazás futásképtelen. | |||
* Ha az alkalmazások megosztottan használják (pl. a windows\system könyvtárból): verzió kavarodás, DLL hell. | |||
(DLL hell példa volt a .NET szerelvényeknél) | (DLL hell példa volt a .NET szerelvényeknél) | ||
'''b, C# kód -> változó típusának kiírása konzolra.''' | |||
b, C# kód -> változó típusának kiírása konzolra. | |||
<pre> | <pre> | ||
int asd; | int asd; | ||
304. sor: | 315. sor: | ||
// Az AttributeUsage azt határozza meg, mihez tudjuk az adott attribútumot hozzárendelni | // Az AttributeUsage azt határozza meg, mihez tudjuk az adott attribútumot hozzárendelni | ||
</pre> | </pre> | ||
[[Category:Infoalap]] |