ورود

View Full Version : کلمات کلیدی جاوا ( volatile , transient)



dasssnj
دوشنبه 22 اردیبهشت 1393, 20:53 عصر
سلام می خواستم بدونم کلمات کلیدی :
volatile , transient
چی هستند و چه کاربردی دارند.
ممنون

cups_of_java
دوشنبه 22 اردیبهشت 1393, 22:26 عصر
transient کاربردش تو زمینه ی Serialization هستش و به این معنیه که فیلد مورد نظر توی عمل سریالیزیشن استفاده نشه. فیلد هایی رو ترنزینت می کنن که نمی خوان نگهداریشون کنن یا مانایی ندارن و یا تو انتقال شی ها توی شبکه نیازی به انتقال اطلاعات اونا نیست. مثل اگه شما وضعیت لحظه ایه یک فرایند رو توی یک فیلدی از یک شی نگهداری کنی در موقع ثبت و سریالیزیشن ممکنه دوست نداشته باشی اون فیلد رو نگهداری کنی جون همیشه در زمان اجرا محاسبه میشه.


volatile توی مباحث موازی و استفاده از Threadها بکار میره. لازمه این رو بدونید که هر ترد در زمان اجرا حافظه کش خودش رو داره از متغیر های یک شی! بنابراین ممکنه در اجرای موازی چندین ترد هر کدوم مقدار های متفاوتی رو در آن واحد توی کش خودشون برای یک متغیر بنویسن. این باعث میشه که حالت های نا سازگار پیش بیاد. این کلمه وقتی برای یک فیلد استفاده میشه باعث میشه ماشین مجازی جاوا همواره مقادیر کش ترد ها رو به روز نگهداری کنه برای اون فیلد و در واقع اجازه نده تا وقتی مقدارش نوشته نشده بقیه بخوننش. به نوعی دسترسی به اون متغیر رو بین همه ترد ها atomic‌ میکنه.

dasssnj
شنبه 27 اردیبهشت 1393, 11:16 صبح
ببخشید در مورد stictfp هم میشه توضیح بدید؟

cups_of_java
شنبه 27 اردیبهشت 1393, 14:09 عصر
محاسبات اعشاری رو محدود شده انجام میده طوریکه روی تمام پلتفرم ها نتیجه یکسان در بیاد.
اگه ازش استفاده نشه ماشین مجازی جاوا می تونه محاسبات اعشاری رو بسته به سیستمی که روشه با دقت های بالاتری انجام بده...

dasssnj
شنبه 27 اردیبهشت 1393, 15:13 عصر
ممنون.
شما اینا رو از کجا یاد گرفتی به ما هم بگو یاد بگیریم.

cups_of_java
شنبه 27 اردیبهشت 1393, 19:20 عصر
بعضی هاشو زمان یادگیری جاوا، بعضی هاشو تو محیط کار و بعضی هاش رو هم توی اینترنت....

vahid-p
شنبه 27 اردیبهشت 1393, 21:22 عصر
واقعا هم باید در گذر زمان یاد گرفت. من خودم از این تاپیک دو تاشو یادگرفتم. فضای اینترنت محل خیلی خوبی برای یادگیری هست. تو این یکی دوماه که بیشتر در مورد جاوا و کاربردهاش مطالعه کردم چقدر چیزهای جدیدی وجود داره و یادگرفتم ( مخصوصا منابع ناب انگلیسی - گفتم ناب چون در مورد جاوا از اینطرف منابع فارسی خیلی کمه، در عوض منابع انگلیسی به نظر میاد در مورد جاوا نسبت به زبانهای دیگه خیلی جامعتره - ). مثلا از این سه کلمه ای که پرسیدید فقط volatile رو سر کلاس بهمون گفته بودن به خاطر کاربرد بیشترش ( تو مبحث MultiThreading ).

من که این نتیجه گیری رو کردم هیچ راهی بهتر از مواجه شدن با مسائل مختلف وجود نداره.

dasssnj
چهارشنبه 31 اردیبهشت 1393, 07:46 صبح
assert را هم لطفا توضیح بدید

vahid-p
پنج شنبه 01 خرداد 1393, 00:58 صبح
assert یک متغیر را چک میکند که آیا null است یا خیر. تفاوتی که با if(x!=null) داره اینه که در x!=null همیشه این شرط چک میشه ولی با استفاده از assert میتونید فقط برای debugger مثلا تنظیم کنید که null بودن چک شود یا خیر. یعنی برای مرحله دیباگ کردن به درد میخوره و وقتی از کارکرد برنامه مطمئن هستید میتونید اون رو غیر فعال کنید ( بدون تغییر کد ) و کامپایل نخواهد شد و در نتیجه شروط اضافه برای چک کردن null بودن یا نبودن در برنامه نخواهد بود.

اگر میخواهید دقیقتر بدانید همراه با مثال سرچ کنید.

dasssnj
چهارشنبه 28 خرداد 1393, 09:29 صبح
چرا من نمی تونم متدی به اسم goto داشته باشم؟
یا چرا به این کد گیر میده؟
اینا که کلمات کلیدی جاوا نیستن؟ هستن؟
public final int const = 5;

cups_of_java
چهارشنبه 28 خرداد 1393, 12:35 عصر
goto از کلمات رزرو شده جاوا هست... به خاطر معروف بودن و بدنام بودن این دستور جاوا با اینکه ندارتش اما رزروش کرده...

dasssnj
چهارشنبه 28 خرداد 1393, 12:56 عصر
const چی؟اونم رزرو شده؟

cups_of_java
چهارشنبه 28 خرداد 1393, 13:12 عصر
بله اینم عین همونه.

dasssnj
پنج شنبه 29 خرداد 1393, 08:15 صبح
سلام دوباره.
چطور میشه bufferedImage را ریسایز کزد تا توی صفحه جاش بشه.
و اینکه چرا توی نت بینز pictureBox یا ImageBox وجود نداره. یعنی حتما باید Image را Icon کنیم و ایکون را به Jlabel نسبت بدیم؟

vahid-p
پنج شنبه 29 خرداد 1393, 15:08 عصر
سوالتون چه ربطی به موضوع تاپیک داشت؟ تازه یه سرچ میزدید پیدا میکردین.

چون ربطی به تاپیک نداره جوابش پ.خ میکنم.