برنامه نویسی جاوا | Java
5.7K subscribers
1.11K photos
158 videos
379 files
1.18K links
🎓آکـــــــــادمی جاواپـــــــــــــــرو
آموزش پیش نیازهای برنامه نویسی
آموزش مقدماتی تا پیشرفته جاوا
آموزش Spring Boot
سفارش پروژه ، دوره و تدریس خصوصی: @rzutab
مشاهده دوره ها و ثبت نام👇
wwww.academyjavapro.com
گروه جاوا : @group_javapro
Download Telegram
عکس محیط بازی Pacman به زبان جاوا
HW5.zip
1.2 MB
سورس کد پروژه دانشجویی بازی کاملا گرافیکی و زیبا BrickBreaker به زبان جاوا هست

بازی در 4 محیط دارای آپشن های امتیاز دهی و قابلیت تیراندازی-تایمر-جان(قلب)-شروع مجد بازی-استارت و استاپ بازی و....
تصویر محیط بازی BrickBreaker به زبان جاوا
تصویر محیط بازی هواپیمای جنگی به زبان جاوا
HW6.zip
1.4 MB
سورس کد پروژه دانشجویی بازی کاملا گرافیکی و زیبا Pacman به زبان جاوا هست
بازی دارای آپشن های امتیاز دهی جان(قلب)و....
⭐️مزایای استفاده از هایبرنت چیست؟

پاسخ:

کاهش کدنویسی تکراری SQL
مستقل از نوع پایگاه داده
پشتیبانی از کش برای بهبود عملکرد
مدیریت تراکنش‌ها و بارگذاری تنبل (Lazy Loading)
تولید خودکار اسکیمای پایگاه داده (DDL)
پشتیبانی از HQL (زبان پرس‌وجوی هایبرنت)

هایبرنت به توسعه‌دهندگان کمک می‌کند تا به‌جای درگیر شدن با کدهای تکراری JDBC، روی منطق کسب‌وکار تمرکز کنند.

➡️اشتراک 👍لایک 💬کامنت


⚡️ @javapro_ir
✈️@group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Channel name was changed to «آموزش برنامه نویسی جاوا»
This media is not supported in your browser
VIEW IN TELEGRAM
کار تیمی ...


➡️اشتراک 👍لایک 💬کامنت


⚡️ @javapro_ir
✈️@group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Channel name was changed to «آموزش برنامه نویسی جاوا»
🟪تفاوت بین متدهای ‎get()‎ و ‎load()‎ در هایبرنیت چیست؟

پاسخ:

🔵 مثال:
Product p1 = session.get(Product.class, 1L); // اتصال فوری به دیتابیس
Product p2 = session.load(Product.class, 2L); // بازگرداندن یک proxy

🟣زمانی که مطمئن نیستید شیء موردنظر وجود دارد یا نه، از ‎get()‎ استفاده کنید.


⚡️ @javapro_ir
✈️@group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Channel name was changed to «آموزش برنامه نویسی جاوا»
Channel name was changed to «بدو آموزش برنامه نویسی😍»
💡استراتژی‌های مختلف Fetch در Hibernate چیست؟

پاسخ:
هابرنیت (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
This media is not supported in your browser
VIEW IN TELEGRAM
نمایش نسخه دموی پروژه به مشتری ... 😂


⚡️ @javapro_ir
✈️@group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
📱تفاوت بین کش سطح اول و سطح دوم در Hibernate چیست؟

پاسخ:
هایبرنیت (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
👍21👾1
🚀 در پاسخ به سوالات مصاحبه Kafka و میکروسرویس‌ها مشکل دارید؟ من کمکتون می‌کنم!

🛡در ادامه، مهم‌ترین سوالات مصاحبه‌ای در سطح متوسط آورده شده که معمولاً از افراد با ۲ تا ۴ سال تجربه پرسیده می‌شن ⬇️

📌 سوالات مصاحبه Kafka (سطح متوسط):

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
Channel name was changed to «مرجع آموزش برنامه نویسی جاوا»
موضوع: سازنده‌ها (Constructors) در جاوا

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 در جاوا

در جاوا، کلاس Object ریشه سلسله‌مراتب کلاس‌ها است.
هر کلاسی در جاوا به‌طور ضمنی (اگر به‌صورت صریح از کلاس دیگری ارث‌بری نکند)، از کلاس java.lang.Object ارث می‌برد.
این یعنی همه اشیاء جاوا به متدهای تعریف‌شده در کلاس Object دسترسی دارند.

🔝نکات کلیدی درباره کلاس Object:

در بسته‌بندی java.lang تعریف شده است.

تمام کلاس‌های جاوا به‌صورت مستقیم یا غیرمستقیم از Object ارث می‌برند.

مجموعه‌ای از متدهای پایه‌ای را فراهم می‌کند که همه اشیاء به ارث می‌برند.

کلاس 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
This media is not supported in your browser
VIEW IN TELEGRAM
از تاثیرات قهوه روی من در زمان کدنویسی ...


➡️اشتراک 👍لایک 💬کامنت


⚡️ @javapro_ir
✈️@group_javapro
Please open Telegram to view this post
VIEW IN TELEGRAM
🗿1