Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
Number format
#19
Posted 21 September 2018 - 14:35
#20
Posted 21 September 2018 - 20:24
Libertarian, on 21 septembrie 2018 - 14:35, said: Ce reguli? Nu doreai sa vezi care-s caracterele pt. decimal si digit grouping in functie de Locale? Nu. Care sunt regulile. Nu sunt de ajuns caracterele. Poate intr-o tara nu se desparte partea intreaga deloc, de exemplu. dani.user, on 21 septembrie 2018 - 14:30, said:
As masura cat mai repede ce incarca serverele. Intuitia imi zice ca e foarte putin probabil sa fie de la parsari de numere. Nu pot sa dau detalii. |
#21
Posted 22 September 2018 - 07:49
#22
Posted 22 September 2018 - 07:56
#23
Posted 22 September 2018 - 08:41
dani.user, on 21 septembrie 2018 - 14:30, said:
As masura cat mai repede ce incarca serverele. Intuitia imi zice ca e foarte putin probabil sa fie de la parsari de numere. in bucla for si asta pentru ca API-urile de java sunt generaliste , iar aici i se cere optimizare. Am intalnit in productie aceasta problema si modul cum am rezolvat-o a fost sa-mi creeez propriul algoritm de parsare a stringului catre numar folosind doar primitive(array-uri de charuri, si nu String care este obiect si are metadate ) si algoritm conceput de mine . Tin minte ca am facut algoritmul inclusiv si pentru numerele negative si puteam sa creeze numere reale inclusiv cu orice precizie doream. La cateva zeci de milioane de date, datorita acestui algoritm conceput de mine, pe care orice programator de liceu il poate face ca tema pentru acasa, am scazut incarcarea servelor cu 50 % iar timpul de procesare a scazut cu 60 % In cazul nostru nu avem de a face cu un programator ci un user obisnuit. Libertarian, on 22 septembrie 2018 - 07:49, said:
Nu vad niciun fel de "reguli" acolo ci doar niste tabele cu niste date pe care le extragi oricum direct din java. stii ce este o ecuatie. Edited by CrocodiluMereuVesel, 22 September 2018 - 08:43. |
#24
Posted 22 September 2018 - 09:43
CrocodiluMereuVesel, on 22 septembrie 2018 - 08:41, said:
Nu le vezi pentru ca nu esti programator si nu ai gandirea formata sa le vezi.Este ca si cum cineva ti-ar pune in fata o ecuatie si tu intrebi unde este ecuatia pentru ca nu stii ce este o ecuatie. Non-programatorul esti tu, care te bagi in seama aiurea cu tot felul de minciuni si habarnisme(aberatii scoase de pe goagle aiurea) - nu ar fi pentru prima oara cand o faci. Si nici macar un sistem de ecuatii de gradul intai nu il intelegi si nu il poti rezolva(clasa a 9a parca). |
#25
Posted 22 September 2018 - 10:17
CrocodiluMereuVesel, on 22 septembrie 2018 - 08:41, said:
de obicei (nu stiu in cazul asta) , dar de obicei API-urile de java pentru parsari de numere folosesc in spate regex_patternuri care este mult mai rau decat try and catch in bucla for CrocodiluMereuVesel, on 22 septembrie 2018 - 08:41, said:
Am intalnit in productie aceasta problema si modul cum am rezolvat-o a fost sa-mi creeez propriul algoritm de parsare a stringului catre numar folosind doar primitive(array-uri de charuri, si nu String care este obiect si are metadate ) si algoritm conceput de mine . CrocodiluMereuVesel, on 22 septembrie 2018 - 08:41, said:
Am intalnit in productie aceasta problema si modul cum am rezolvat-o a fost sa-mi creeez propriul algoritm de parsare a stringului catre numar folosind doar primitive(array-uri de charuri, si nu String care este obiect si are metadate ) si algoritm conceput de mine . Tin minte ca am facut algoritmul inclusiv si pentru numerele negative si puteam sa creeze numere reale inclusiv cu orice precizie doream. La cateva zeci de milioane de date, datorita acestui algoritm conceput de mine, pe care orice programator de liceu il poate face ca tema pentru acasa, am scazut incarcarea servelor cu 50 % iar timpul de procesare a scazut cu 60 % Edited by Libertarian, 22 September 2018 - 10:27. |
#26
Posted 22 September 2018 - 10:37
Puisor, nu intelegi conceptul de spatele unui regex-pattern si nici cum functioneaza, cat despre String, puisor nu intelegi conceptul de obiect si cum este implementat un obiect in java
Cand ai obiecte ai si metadate puisor, care iti umpla memoria pt a tine in minte valoarea in sine (care este primitiva). In java , obiectele String, Integer,Double sunt containere care contin primitiva in sine + metode de transformare, prin asta se deosebesc de primitvele int, char, long, double. Puisor asta este intrebare eliminatorie la interviul de java: Care este diferenta dintre Integer, Double, Long si int, long, double Quote
Si marmota invelea staniolu-n ciucalata. Asa cum spuneam: tu nu esti programator si nici c-o sa devi in scurt timp. Auzi la el containere de date pt prelucrari masive, hahaha Puisor pune mana si fa-ti prorpiul algoritm de parsare daca te tin suruburile si nu mai fi utilizator de api-uri facute de altii, auzi la el este programator de 30 de ani , hahahaha , Doamne de unde ii scoti, numai tu stii Deci rad cu lacrimi, haha Edited by CrocodiluMereuVesel, 22 September 2018 - 11:01. |
#28
Posted 22 September 2018 - 11:02
|
#29
Posted 22 September 2018 - 11:05
Container de ce cand array-ul de char e deja containerul?
Metodele ce nu le apelezi n-au nici o influenta. https://github.com/o...ang/String.java Array-ul simplu de char e tot obiect, asa ca n-are nici un avantaj fata de string cand doar citesti din el. Edited by dani.user, 22 September 2018 - 11:16. |
#30
Posted 22 September 2018 - 14:20
dani.user, on 22 septembrie 2018 - 11:05, said:
Container de ce cand array-ul de char e deja containerul? Metodele ce nu le apelezi n-au nici o influenta. https://github.com/o...ang/String.java Array-ul simplu de char e tot obiect, asa ca n-are nici un avantaj fata de string cand doar citesti din el. de prelucrare . In java conceptul de obiect este fundamental diferit fata de C++ chiar si in gestionarea memoriei. Lucrul valabil si pt programatorul de 30 de ani vechime a luii peste prajit'. Asa.... ca un hint(desi n-ar trebui sa fac asta ci tu ar trebui sa-ti dai seama), pe codul sursa al clasei String, ai asa: public String(char value[], int offset, int count) { if (offset < 0) { throw new StringIndexOutOfBoundsException(offset); Tu acolo ai niste mecanisme de throwing de exceptii care daca intra in bucle de procesare, e durere..... De altfel asta e si intrebare eliminatorie la interviul de senior java: "Pentru procesarea de masiva de date in bucle, ce alegeti clasa String sau array-uri de char , explicati alegerea ?:" Daca userul alege clasa String (in contextul unor procesari masive de date, deci doar in acest context,) atunci il sunam noi Chestiile astea sunt fineturi pe care numai un senior in java le stie Si apoi tot un senior de java stie ca atunci cand are procesare masiva de date, se renunta la containerele String, Integer, Long, Double si cauta se evite API-urile generice (standard library) si trece pe primitivele de array de chars, int, long, double, etc si se lucreaza foarte mult cu array-uri iar aici intervin tehnicile de programare invatate in liceu pt optimizare: gasirea mijlocului/minim/maxim al unui vector, prelucrari de matrice, diagoanala principala /secundara. Iar in bucle de procesare masiva, erorile niciodata nu se trateaza cu try and catch si cu instructiuni if then else sau switch case (desigur vorbesc de procesare masiva de date in java) Ba chiar mai mult daca se doreste optimizarea si mai puternica, se convertesc array-urile de charuri in array-uri de bytes si se lucreaza elegant cu instructiuni la nivel de bit ,adica programul devine din ce in ce mai asemenator cu C-ul desi este scris in java si practic la final se obtine un algortim izbitor de asemanator cu sintaxa C, unde se prelucreaza doar cu numere, grupate pe vectori si primitive, inclusiv si charurile care au fost transformate in bytes(numere) iar toate comparatiile din if--uri se fac intre numere si swith-case-urile se fac dupa valoarea numerica a charului respectiv. Edited by CrocodiluMereuVesel, 22 September 2018 - 14:29. |
#31
Posted 22 September 2018 - 15:18
Eu iti repet ca array'ul de char pe care il tot pomenesti e tot un obiect, tu ma iei cu int vs Integer.
I give up. Nu te obosi sa-mi raspunzi. Edited by dani.user, 22 September 2018 - 15:21. |
#32
Posted 22 September 2018 - 15:35
dani.user, on 22 septembrie 2018 - 15:18, said:
Eu iti repet ca array'ul de char pe care il tot pomenesti e tot un obiect, tu ma iei cu int vs Integer. I give up. Nu te obosi sa-mi raspunzi. |
#33
Posted 22 September 2018 - 21:27
Revine cu teste si rezultate:
Stimate domn, dani.user ia priveste aici : "C:\Program Files\Java\jdk-10.0.2\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\ IntelliJ IDEA Community Edition 2018.2.4\lib\idea_rt.jar=53796:C:\Program Files\JetBrains\ IntelliJ IDEA Community Edition 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\CrocodilulMereuVesel\IdeaProjects\test\target\classes test.App numar de elemente: 100000000 memorie folosita(primitive integer): 383.0 [MB] memorie folosita(obiecte Integer): 1.0 [GB] Process finished with exit code 0desi ambele dataset-uri contin exact acelasi informatii, diferenta fiind doar in spatiu de stocare(exemplificat aici) dar si in mai multe chestii importante(care influenteaza performanta unui job de procesare pe un server , implicit si resursele si comportamentul serverului) Ei bine, diferenta de spatiu observabila din avion(oare cat o fi in procente ? Hm...) se datoreaza (asa cum am evidentat in posturile anterioare) de prezenta metadatelor la nivel de obiect in java, prin metadate intelegandu-se la niver arhitectural, orice nu este primitiva. Astfel daca imi permiti ca o analogie vizuala, un obiect Integer(ca toate obiectele) este ca o ceapa:bulbul este valoarea primitvei(purtatoarea de informatie) iar foile de ceapa este obiectul care infasoara primitiva. In conditiile cand pe noi ne intereseaza doar purtatoarele de informatiei atunci mai usor este un 1Kg de arpagic decat un 1 Kg de ceapa desi ambele plante sunt din aceiasi familie si stocheaza aceiasi informatie: ADN-ul cepei insa intr-un mod ataaaaaaat de diferit. si codul de testare: package test; /** * Hello world! * */ public class App { public static void amprentaMemorie(String comment) { long total = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); long KB = 1024; long MB = 1024 * KB; long GB = 1024 * MB; double formatted = 0.0d; String um = "N/A"; if (total >= GB) { formatted = total / GB; um = "[GB]"; } else if( total >= KB && total <= GB) { formatted = total /MB; um = "[MB]"; } else if(total <KB) { formatted = total/KB; um = "[KB]"; } System.out.println( "memorie folosita(%COMMENT%): %MEM%" .replace("%COMMENT%", comment) .replace("%MEM%", formatted + " " + um) ); } public static void stocarePrimitive(int n ) { int[] a = new int[n]; for (int i = 0 ; i< n; i++){ a[i] = i; } } public static void stocareObiecte(int n) { Integer[] a = new Integer[n]; for (int i = 0 ; i< n; i++){ a[i] = i; } } public static void main( String[] args ) { int n = 100000000; System.out.println("numar de elemente: " + n); stocarePrimitive(n); amprentaMemorie("primitive integer"); stocareObiecte(n); amprentaMemorie("obiecte Integer"); } } De asemenea las aici si un link pentru mai multe referinte ca sa te ajute sa intelegi programul de mai sus: https://www.quora.co...a-for-beginners Edited by CrocodiluMereuVesel, 22 September 2018 - 21:45. |
|
#34
Posted 23 September 2018 - 08:59
Catamai trolleala. char[] vs. String nu conteaza asa mult, mare branza. Asta a zis dani.user.
Trolleala prin papusoi intra in int vs Integer. Macar fa si tu testul ala calumea, cu char vs. Character, ca sa fie troleala simetrica pe una dintre axe cu ce a spus dani.user. Nici trolleala nu mai e ce era odata. Edited by OriginalCopy, 23 September 2018 - 09:03. |
#35
Posted 23 September 2018 - 09:22
OriginalCopy, on 23 septembrie 2018 - 08:59, said:
Catamai trolleala. char[] vs. String nu conteaza asa mult, mare branza. Asta a zis dani.user. Trolleala prin papusoi intra in int vs Integer. Macar fa si tu testul ala calumea, cu char vs. Character, ca sa fie troleala simetrica pe una dintre axe cu ce a spus dani.user. Nici trolleala nu mai e ce era odata. numar de elemente: 100000000 memorie folosita(primitive integer): 383.0 [MB] memorie folosita(obiecte Integer): 1.0 [GB]Hai, la scoala cu tine. Edited by CrocodiluMereuVesel, 23 September 2018 - 09:24. |
#36
Posted 23 September 2018 - 09:26
A pai nu asa mai, daca vrei sa arati ca stii sa citesti ce scriem, trebuie sa faci si un benchmark corespunzator.
In outputul acela trebuie sa scrie "memorie folosita de 1 char[]" si "memorie folosita de 1 String". Hai, pune burta pe codareala. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users