-
الإعلانات
-
تسجيل عضوية جديدة في المنتدى 01/31/2016
السلام عليكم ورحمة الله وبركاته عزيزي العضو الجديد : حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة ) فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK) وقم بتفعيل إشتراككم من هناك
-

Eng.Fouad
اعضاء-
عدد المشاركات
78 -
تاريخ الانضمام
-
تاريخ اخر زياره
السمعه بالموقع
18 عاديعن Eng.Fouad
-
الرتبة
عضو
- تاريخ الميلاد 05/10/1989
معلومات الملف الشخصي
- الجنس ذكر
- الدولة : Saudi Arabia
-
هذا هو الحل: System.setProperty("prism.text", "t2k"); System.setProperty("prism.lcdtext", "false");
-
أحمد أبو عبد البر أعطى سمعة إيجابية لــ إجابة على سؤال: ما هو الـ Thread؟
-
sameer-2000 أعطى سمعة إيجابية لــ إجابة على سؤال: ما هو الـ Thread؟
-
Mr.B أعطى سمعة إيجابية لــ إجابة على سؤال: ما هو الـ Thread؟
-
houssam11350_11350 أعطى سمعة إيجابية لــ إجابة على سؤال: ما هو الـ Thread؟
-
قبل مدة ليست بالبعيدة كتبت تعريف عن ماهية الثريد رداً على سؤال سألني إياه أحد الأشخاص على الفيسبوك، وأحببت أن أشارككم إياه. ما هو الـ Thread؟ تعريف الـ Thread: الثريد “Thread” باختصار هو “خيط” أو سلسلة من الأوامر البرمجية. سنعتبر مجازاً بأن الأمر البرمجي يمثل سطر واحد من كود لبرنامج معين.–∎–∎–∎–∎–∎–∎–∎–∎– المسؤول عن تشغيل هذا الخيط من الأوامر البرمجية هو الـ CPU “وحدة المعالجة المركزية”. يحتوي أي برنامج على ثريد واحد على الأقل، ويسمى الثريد الرئيسي main thread. في لغة الجافا مثلاً، دالة main تحتوي على مجموعة من الأوامر البرمجية اللتي ينفذها الـ CPU على الـ main thread عند تشغيل البرنامج. عند إحتواء البرنامج على أكثر من ثريد، فإن نظام التشغيل OS يقوم بجدولة الـ CPU للعمل على تنفيذ الأوامر الموجودة في “الثريدات”. وتختلف الطريقة بحسب مواصفات جهاز الحاسب المشغل ونظام التشغيل. لو كان الجهاز يحتوي على CPU واحد فقط، فإن نظام التشغيل يجبر هذا الـ CPU بالعمل على تنفيذ الأوامر الموجودة بالثريدات بشكل متزامن “concurrently”. مثال: لدينا 3 ثريدات، كيف يقوم الـ CPU بتنفيذها؟ في الحقيقة، تختلف الطريقة المتبعة من نظام تشغيل إلى آخر ولكن أغلب الأنظمة الحديثة تتبع طريقة round-robin algorithm، وتعتمد هذه الطريقة على المساواة في الأوقات المعطاة لكل ثريد time slices. الشكل التالي يوضح الطريقة (بافتراض كل ثريد يحتوي على 4 أوامر برمجية): ∎–∎-………………-∎–∎ ………∎–∎-………………-∎–∎ ………………∎–∎-………………-∎–∎ كما يُلاحظ في الشكل السابق، قام نظام التشغيل بجدولة الـ CPU على جميع الثريدات لتشغيلها جميعاً بشكل متزامن. قام الـ CPU بتنفيذ أمرين من الثريد الأولى ثم قام بالانتقال “context-switching” إلى الثريد الثانية وقام بتنفيذ أمرين، ثم انتقل إلى الثريد الثالثة وقام بتنفيذ أمرين أيضاً، ثم عاد إلى الثريد الأولى ونفذ أمرين … وهكذا. في الحقيقة، ليس هناك طريقة ثابتة متبعة من قبل أنظمة التشغيل لتنفيذ الثريدات. في المثال السابق مثلاً، ربما سيقوم نظام التشغيل بتنفيذ الثريد الأول كاملاً ثم ينتقل إلى البقية. ربما أيضاً يقوم بتنفيذ الثريد الثاني أو الثالث قبل البقية. حتى أن الترتيب أيضاً سيختلف مع كل مرة تقوم فيها بتشغيل البرنامج. الترتيب غير مهم في أغلب الحالات، ولكن إن لزم ترتيبها، توجد عدة طرق للتحكم بالترتيب، ومنها جعل ثريد معين بأولوية أعلى للتنفيذ، أو تشغيل ثريد معين عند الانتهاء من تنفيذ ثريد آخر. عندما يحتوي جهاز الحاسب على أكثر من CPU واحد، أو يحتوي الـ CPU الواحد على عدة أنوية “cores”، يتم التنفيذ بشكل متوازي “in parallel”. لنطبق المثال السابق ولكن هذه المرة مع وجود CPU ثنائي النواة:∎–∎–∎–∎……… ∎–∎-………-∎–∎ ………∎–∎–∎–∎ مع وجود CPU ثنائي النواة، زادت سرعة التنفيذ إلى الضعف (قل زمن التنفيذ إلى النصف)! أيضاً، الترتيب هنا مجهول ومتغير ويختلف في كل مرة يتم فيها تشغيل البرنامج. لنأخذ مثال بسيط لتتضح الصورة بشكل أكبر:أ/ مطعم يقدم وجبات سريعة. يوجد به عامل واحد فقط يقوم بتقديم الطعام إلى الزبائن. الزبائن عادةً يقفون في صف واحد وكل واحد ينتظر دوره. هذا مثال لجهاز حاسب (مطعم) به CPU واحد (العامل) وثريد وحدة من الأوامر البرمجية (صف واحد من الزبائن). ب/ مطعم يوجد به عامل واحد مشابه للمطعم السابق، ولكن هذه المرة الزبائن يقفون على 3 صفوف والعامل يقوم بخدمة الصفوف الثلاثة بأسلوب الـ round-robin. هذا مثال لجهاز حاسب (مطعم) به CPU واحد (العامل) و 3 ثريدات من الأوامر البرمجية (3 صفوف من الزبائن). ج/ مطعم يوجد به عاملان، والزبائن تقف في 3 صفوف. هذا مثال لجهاز حاسب (مطعم) به 2 من الـ CPU أو CPU ثنائي النواة (العاملان) و3 ثريدات من الأوامر البرمجية (3 صفوف من الزبائن). هنا الإنتاجية ستزيد :) ملحوظة أخيرة وهي بأن نظام التشغيل يحتوي على الآلاف من الثريدات ونظام التشغيل يقوم بجدولة الـ CPUs المتوفرة لتنفيذها، وليس برنامجك وحده من يتم خدمته من قبل الـ CPUs :)
-
jelastic.com
-
Eng.Fouad أعطى سمعة إيجابية لــ إجابة على سؤال: برنامج (Online Exam) مفتوح المصدر
-
Eng.Fouad أعطى سمعة إيجابية لــ رد في موضوع: مقترح لإفتتاح موقع Stackoverflow باللغة العربية
-
X-PLOD أعطى سمعة إيجابية لــ رد في موضوع: مقترح لإفتتاح موقع Stackoverflow باللغة العربية
-
Eng.Fouad أعطى سمعة إيجابية لــ رد في موضوع: مقترح لإفتتاح موقع Stackoverflow باللغة العربية
-
Sherif56 أعطى سمعة إيجابية لــ رد في موضوع: مقترح لإفتتاح موقع Stackoverflow باللغة العربية
-
romansy أعطى سمعة إيجابية لــ رد في موضوع: مقترح لإفتتاح موقع Stackoverflow باللغة العربية
-
مقترح لإفتتاح موقع Stackoverflow باللغة العربية
Eng.Fouad رد على Eng.Fouad's موضوع في الأخبار والنقاشات التقنية
أعتقد أن الأخ حسن قد وجد حل لهذه المشكلة هنا: http://www.arabteam2000-forum.com/index.php?showtopic=209165 -
موقع Area 51 هو موقع تابع لشبكة StackExchange العالمية. في هذا الموقع يمكن تقديم مقترحات لإفتتاح موقع أسئلة/إجابات في أي مجال كان. طبعاً لإفتتاح الموقع، لابد أن يمر بـ 3 مراحل: define و commit ثم beta. عند إنشاء الموقع، سيحتوي على جميع الخصائص والمميزات الخاصة بالمواقع الأخرى من نفس الشبكة كموقع stackoverflow مثلاً. قمت بتقديم مقترح لإنشاء موقع شبيه بموقع stackoverflow ولكن باللغة العربية. stackoverflow هو موقع أسئلة/إجابات في شتى مجالات البرمجة وتطوير البرمجيات. حالياً الموقع في حالة define ويحتاج إلى 60 followers و 40 سؤال بـ 10 up-votes أو أكثر. لذلك أتمنى من الجميع المشاركة في الموقع ابتداءاً بالضغط على زر following ووضع الايميلز أعتذر إن كان هذا الموضوع يتعارض مع سياسة المنتدى، ولكن هدفي من الموضوع هو نشر الفائدة للمجتمع التقني العربي. رابط المقترح: http://area51.stackexchange.com/proposals/39345/stackoverflow-in-arabic
- 12 ردود
-
2
-
السلام عليكم ورحمة الله وبركاته دائماً ما أشاهد هذا المتغير موجود في بعض الكلاسات وخصوصاً المتعلقة بالـ Swing، فماذا يعني؟ قرأت أنه يتعلق بشيء يسمى التوافقية لكن لم أفهم المعنى وأتمنى أن أجد المعنى في هذا الموضوع .. وشكراً
-
java.awt.datatransfer.StringSelection strsel = new java.awt.datatransfer.StringSelection(textField.getText()); java.awt.datatransfer.Clipboard clbrd = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); clbrd.setContents(strsel, strsel);
-
تقوم بعمل thread خاص بالـ swing عملت لك مثال بسيط، يقوم بتوليد أرقام عشوائية من نوع int وتتراوح قيمتها ما بين 0 و 100: import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; import javax.swing.Timer; public class Main extends JFrame { private int s = 0; private JLabel label; private Executor executor = Executors.newCachedThreadPool(); private Timer timer; private int delay = 1000; // every 1 second public Main() { super("أرقام عشوائية"); setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(300, 65); label = new JLabel("" + s); setLayout(new FlowLayout()); getContentPane().add(label, "Center"); prepareStartShedule(); setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new Main(); } }); } private void prepareStartShedule() { timer = new javax.swing.Timer(delay, startCycle()); timer.start(); } private Action startCycle() { return new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { executor.execute(new MyTask()); } }; } private class MyTask extends SwingWorker<Void, Void> { @Override protected Void doInBackground() throws Exception { doTasksInBackground(); return null; } } private void doTasksInBackground() { generateRandomS(); label.setText("" + s); } private void generateRandomS() { s = (int)(Math.random() * 101); System.out.println(s); // to see it through the console } }
-
تقصد بأنك تريد مراقبة المتغير s وعندما يتغير يقوم البرنامج بتغيير نص الـ label بشكل مستمر؟ إذا كان كذلك يمكنك استخدام SwingWorker
-
بالانغليزي: Data Structure & Algorithms
-
نزلت النسخة أخيراً: http://msdn.microsoft.com/ar-sa/windows/apps/br229516/
-
تعاملت مع هذه المكتبة في الآونة الأخيرة، وصراحة أبهرت بعملها جرب هذا الكود: WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_8); // There are many browsers available and you can choose any HtmlPage currentPage = null; try { currentPage = (HtmlPage) webClient.getPage("http://www.google.com"); } catch(Exception e) { // Cannot get the page } System.out.println(currentPage.getTitleText());
-
نعم من الممكن استخدام bitwise operators String[] arr = {"You have entered an invalid value", Double.toString(radius*radius*Math.PI)}; String answer = arr[- (int) Math.ceil(radius) >>> 31]; أما إذا أردت تضمين الصفر، يمكنك استخدام الآتي: String[] arr = {Double.toString(radius*radius*Math.PI), "You have entered an invalid value"}; String answer = arr[(int) Math.ceil(radius) >>> 31];
-
لماذا تتعدل قيمة الـ Object عند تمريرها كـ parameter، مع أن الجافا pass-by-value
Eng.Fouad posted سؤال in JavaSE
السلام عليكم ورحمة الله وبركاته المعروف في الجافا بأنها تقوم بتمرير القيم فقط pass-by-value وليس في مثل بعض اللغات الأخرى pass-by-reference لكن في المثال التالي: public class test { public static void main(String[] args) { int temp = 1; editPrimitive(temp); System.out.println(temp); // prints 1 int[] temp_array = {1}; editObject(temp_array); System.out.println(temp_array[0]); // prints 2 } public static void editPrimitive(int n) { n = 2; } public static void editObject(int[] n) { n[0] = 2; } } عندما قمنا بتمرير primitive لم تتعدل القيمة، وهذا متوقع لأن التمرير تم بالقيمة pass-by-value، ولكن عندما قمنا بتمرير الـ array وهو object تعدلت القيمة!! أليس صحيحاً أن الجافا لا يمرر المرجع pass-by-reference؟ أتمنى أن أجد إجابة مرضية لتساؤلاتي، وشكراً