HW5.zip
1.2 MB
سورس کد پروژه دانشجویی بازی کاملا گرافیکی و زیبا BrickBreaker به زبان جاوا هست
بازی در 4 محیط دارای آپشن های امتیاز دهی و قابلیت تیراندازی-تایمر-جان(قلب)-شروع مجد بازی-استارت و استاپ بازی و....
بازی در 4 محیط دارای آپشن های امتیاز دهی و قابلیت تیراندازی-تایمر-جان(قلب)-شروع مجد بازی-استارت و استاپ بازی و....
HW6.zip
1.4 MB
سورس کد پروژه دانشجویی بازی کاملا گرافیکی و زیبا Pacman به زبان جاوا هست
بازی دارای آپشن های امتیاز دهی جان(قلب)و....
بازی دارای آپشن های امتیاز دهی جان(قلب)و....
پاسخ:
هایبرنت به توسعهدهندگان کمک میکند تا بهجای درگیر شدن با کدهای تکراری JDBC، روی منطق کسبوکار تمرکز کنند.
⚡️ @javapro_ir✈️ @group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
پاسخ:
Product p1 = session.get(Product.class, 1L); // اتصال فوری به دیتابیس
Product p2 = session.load(Product.class, 2L); // بازگرداندن یک proxy
⚡️ @javapro_ir✈️ @group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
پاسخ:
هابرنیت (Hibernate) از دو نوع اصلی بارگذاری داده (Fetching) پشتیبانی میکند:
۱. این Eager Fetching — موجودیتهای مرتبط را بلافاصله بارگذاری میکند.
۲. و این Lazy Fetching — فقط زمانی دادههای مرتبط را بارگذاری میکند که به آنها دسترسی پیدا شود (پیشفرض برای مجموعهها).
@OneToMany(mappedBy = "category", fetch = FetchType.LAZY)
private List<Product> products;
استفاده از Lazy Fetching باعث بهبود عملکرد میشود، چون انجام joinهای سنگین را تا زمانی که واقعاً نیاز باشد به تأخیر میاندازد.
⚡️ @javapro_ir✈️ @group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
پاسخ:
هایبرنیت (Hibernate) دارای دو سطح کش (Cache) برای بهینهسازی عملکرد است:
۱. کش سطح اول (First-Level Cache):
بهصورت پیشفرض و محدود به یک Session است. هر بار که یک شیء را با session.get() دریافت میکنید، اگر قبلاً در همان Session بارگذاری شده باشد، از کش استفاده میشود.
۲. کش سطح دوم (Second-Level Cache):
یک کش اشتراکی بین چند Session است و باید بهصورت جداگانه پیکربندی شود. مناسب برای برنامههایی است که خواندن زیاد و تغییر کم دارند.
session.get(Product.class, 1L); // بار اول → دیتابیس
session.get(Product.class, 1L); // بار دوم → کش
استفاده از کش سطح دوم در برنامههایی با بار خواندنی بالا میتواند عملکرد را به شکل قابلتوجهی افزایش دهد.
⚡️ @javapro_ir✈️ @group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1👾1
14. Kafka چطور تحمل خطا (fault tolerance) و در دسترسبودن بالا (high availability) را تضمین میکند؟
15. مکانیزم تأیید دریافت پیامها در Kafka چطور عمل میکند؟
16. ISR یا نسخههای همزمان (In-Sync Replicas) در Kafka چیست؟
17. Kafka چطور با فشار برگشتی (backpressure) مواجه میشود؟
18. تفاوت بین acks=0، acks=1 و acks=all چیست؟
19. فشردهسازی لاگ در Kafka (Log Compaction) چیست، چه زمانی و چرا استفاده میشود؟
20. ثبت آفستها (commit offsets) دستی vs خودکار؟
21. تفاوت گروه مصرفکننده (Consumer Group) و استراتژی تخصیص پارتیشن چیست؟
22. عامل تکرار (Replication Factor) چیست و در عمل چه اهمیتی دارد؟
23. ابزارهای مانیتورینگ Kafka (مثل JMX، Prometheus و...)
24. چگونه Kafka را در محیط تولید (Production) ایمنسازی کنیم؟
25. مقایسه Kafka با RabbitMQ و ActiveMQ — در چه شرایطی کدام بهتر است؟
26. تحول ساختار اسکیمای پیامها در Kafka (Avro، Protobuf و...)
27. تفاوت Kafka Streams و Consumer API
28. Kafka Streams در مقابل Apache Flink
29. چگونه ترتیب پیامها در Kafka را حفظ کنیم؟
30. Kafka Connect — نقش Connectorهای ورودی (Source) و خروجی (Sink)
16. امنیت در میکروسرویسها (OAuth2، JWT)
17. مدیریت تراکنشهای توزیعشده
18. دستیابی به «سازگاری نهایی» (Eventual Consistency) چگونه است؟
19. استراتژیهای نسخهبندی API
20. الگوی Saga برای مدیریت خطاهای بین سرویسی
21. بهترین روشها برای مانیتورینگ و لاگگیری
22. اصول طراحی و بهترین شیوهها
23. تستهای واحد، یکپارچهسازی و قرارداد (Contract Testing)
24. دیتابیس مجزا برای هر سرویس یا دیتابیس مشترک؟
25. الگوهای نادرست (Anti-patterns) در طراحی میکروسرویسها
26. ارکستراسیون vs همنوازی (Choreography)
27. عملیات Idempotent و اهمیت آن
28. دسترسیپذیری بالا و تحمل خطا
29. CI/CD، Docker و Kubernetes برای استقرار
30. پیامرسانها در میکروسرویسها (Kafka، RabbitMQ و...)
⚡️ @javapro_ir✈️ @group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
1. معرفی سازندهها
سازنده (Constructor) یک بلوک شبیه به متد است که بهصورت خودکار هنگام ایجاد یک شیء (Object) اجرا میشود.
هدف آن مقداردهی اولیه به فیلدها و آمادهسازی شیء برای استفاده است.
سینتکس (نوشتار):
class ClassName {
ClassName() {
// کد مقداردهی اولیه
}
}
ویژگیهای کلیدی:
همنام با کلاس است.
هیچ نوع بازگشتی ندارد (حتی void هم نه).
میتواند بارگذاری مجدد شود (Overloaded).
وقتی شیء زیر را ایجاد میکنید:
MyClass obj = new MyClass();
مراحلی که اتفاق میافتد:
1. حافظهای برای شیء تخصیص داده میشود.
2. سازنده بهصورت خودکار فراخوانی میشود.
3. فیلدهای کلاس مقداردهی اولیه میشوند.
4. مرجع (Reference) به متغیر obj نسبت داده میشود.
1. سازنده پیشفرض (Default Constructor) – تولیدشده توسط کامپایلر
اگر هیچ سازندهای تعریف نکرده باشید، جاوا خودش یکی میسازد.
مثال:
class Book {
int pages;
String title;
}
Book b = new Book(); // از سازنده پیشفرض استفاده میشود
2. سازنده بدون پارامتر (No-Argument Constructor) – تعریفشده توسط کاربر
شما میتوانید یک سازنده بدون پارامتر بنویسید.
مثال:
class Book {
Book() {
System.out.println("Book created");
}
}
3. سازنده با پارامتر (Parameterized Constructor)
برای مقداردهی هنگام ایجاد شیء استفاده میشود.
مثال:
class Book {
String title;
int pages;
Book(String t, int p) {
title = t;
pages = p;
}
}
Book b = new Book("Java", 500);
4. بارگذاری سازنده (Constructor Overloading)
تعریف چند سازنده با تعداد یا نوع پارامتر متفاوت.
مثال:
class Student {
String name;
int age;
Student() {
name = "Default";
age = 18;
}
Student(String n, int a) {
name = n;
age = a;
}
}
Student s1 = new Student(); // سازنده بدون پارامتر فراخوانی میشود
Student s2 = new Student("Alice", 22); // سازنده با پارامتر
⚡️ @javapro_ir✈️ @group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
در جاوا، کلاس Object ریشه سلسلهمراتب کلاسها است.
هر کلاسی در جاوا بهطور ضمنی (اگر بهصورت صریح از کلاس دیگری ارثبری نکند)، از کلاس java.lang.Object ارث میبرد.
این یعنی همه اشیاء جاوا به متدهای تعریفشده در کلاس Object دسترسی دارند.
در بستهبندی java.lang تعریف شده است.
تمام کلاسهای جاوا بهصورت مستقیم یا غیرمستقیم از Object ارث میبرند.
مجموعهای از متدهای پایهای را فراهم میکند که همه اشیاء به ارث میبرند.
کلاس Object شامل ۱۱ متد از پیش تعریف شده است.
i. toString():
شیء را به یک رشته (String) تبدیل میکند.
میتوان آن را بازنویسی (Override) کرد تا اطلاعات معنادارتری ارائه دهد.
ii. hashCode():
یک عدد صحیح یکتا (hash code) برای شیء بازمیگرداند.
در مجموعههایی مانند HashMap برای بازیابی سریع استفاده میشود.
iii. equals(Object obj):
شیء فعلی را با شیء داده شده برای برابری مقایسه میکند.
میتوان برای تعریف مقایسههای سفارشی بازنویسی کرد.
iv. clone():
یک کپی از شیء فعلی ایجاد میکند.
برای کارکرد صحیح باید اینترفیس Cloneable پیادهسازی شده باشد.
v. finalize():
درست قبل از جمعآوری زباله (garbage collection) شیء فراخوانی میشود.
برای پاکسازی استفاده میشود، اما معمولاً استفاده از آن توصیه نمیشود.
vi. getClass():
شیء کلاس (Class object) مربوط به شیء را بازمیگرداند.
برای عملیات Reflection کاربرد دارد.
vii. notify():
یک رشته (thread) که در انتظار مانیتور این شیء است را بیدار میکند.
viii. notifyAll():
تمام رشتههایی که در انتظار مانیتور این شیء هستند را بیدار میکند.
ix. wait():
باعث میشود رشته فعلی منتظر بماند تا رشته دیگری notify() یا notifyAll() را فراخوانی کند.
x. wait(long timeout):
باعث میشود رشته فعلی به مدت زمان مشخصی یا تا زمان بیدار شدن، منتظر بماند.
xi. wait(long timeout, int nanos):
مشابه wait با تایماوت طولانیتر است، اما دقت زمان انتظار را با نانوثانیه افزایش میدهد.
⚡️ @javapro_ir✈️ @group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1👾1
Please open Telegram to view this post
VIEW IN TELEGRAM
🗿1