برنامه نویسی جاوا | جاواپرو – Telegram
برنامه نویسی جاوا | جاواپرو
5.95K subscribers
1.15K photos
168 videos
401 files
1.32K links
🎓آکـــــــــادمی جاواپـــــــــــــــرو
آموزش پیش نیازهای برنامه نویسی
آموزش مقدماتی تا پیشرفته جاوا
آموزش Spring Boot
سفارش پروژه ، دوره و تدریس خصوصی: @rzutab
مشاهده دوره ها و ثبت نام👇
wwww.academyjavapro.com
گروه جاوا : @group_javapro
Download Telegram
اتوماسیون انتقال داده از CSV به دیتابیس با Spring Boot و Spring Batch

من اخیراً یک پروژه با Spring Batch پیاده‌سازی کردم که وظیفه‌اش پردازش داده‌ها از یک فایل CSV و ذخیره آن‌ها در دیتابیس بود.
این پروژه کل جریان استاندارد Reader → Processor → Writer → Job → Listener را به‌صورت کامل پوشش می‌دهد.

در ادامه، اجزای اصلی این پروژه را مرحله‌به‌مرحله بررسی می‌کنیم 👇


📂 ۱. Reader (FlatFileItemReader)

این بخش فایل sample-data.csv را می‌خواند و هر سطر را به یک شیء از نوع Person نگاشت می‌کند.
@Bean
public FlatFileItemReader<Person> reader() {
return new FlatFileItemReaderBuilder<Person>()
.name("personItemReader")
.resource(new ClassPathResource("sample-data.csv"))
.delimited()
.names("firstName", "lastName")
.targetType(Person.class)
.build();
}


🛠 ۲. Processor (ItemProcessor)

در این مرحله، داده‌ها قبل از ذخیره‌سازی تغییر داده می‌شوند.
در این مثال، نام و نام خانوادگی هر شخص به حروف بزرگ (UPPERCASE) تبدیل می‌شود.
public class PersonItemProcessor implements ItemProcessor<Person, Person> {

@Override
public Person process(Person person) {
return new Person(
person.firstName().toUpperCase(),
person.lastName().toUpperCase()
);
}
}


💾 ۳. Writer (JdbcBatchItemWriter)

این بخش داده‌های پردازش‌شده را در جدول people دیتابیس درج می‌کند.

@Bean
public JdbcBatchItemWriter<Person> writer(DataSource dataSource) {
return new JdbcBatchItemWriterBuilder<Person>()
.sql("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)")
.dataSource(dataSource)
.beanMapped()
.build();
}


⚙️ ۴. Job و Step

در این قسمت، Job و Step تعریف می‌شوند.
اندازه chunk برابر با ۳ است؛ یعنی:

۳ رکورد خوانده می‌شود

پردازش انجام می‌گیرد

در دیتابیس ذخیره می‌شود

این چرخه تا پایان فایل تکرار می‌شود

@Bean
public Step step1(
JobRepository jobRepository,
DataSourceTransactionManager transactionManager,
FlatFileItemReader<Person> reader,
PersonItemProcessor processor,
JdbcBatchItemWriter<Person> writer) {

return new StepBuilder("step1", jobRepository)
.<Person, Person>chunk(3, transactionManager)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}




📊 ۵. Listener (JobExecutionListener)

پس از اتمام Job، این Listener اجرا می‌شود تا صحت درج داده‌ها در دیتابیس بررسی شود.
@Override
public void afterJob(JobExecution jobExecution) {
if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
jdbcTemplate
.query(
"SELECT first_name, last_name FROM people",
new DataClassRowMapper<>(Person.class)
)
.forEach(person ->
log.info("Found <{}> in the database.", person)
);
}
}


چرا کار روی این پروژه جذاب بود؟

✔️ مدیریت بهینه دیتاست‌های حجیم با استفاده از پردازش Chunk
✔️ پیاده‌سازی یک خط لوله تمیز ETL (استخراج → تبدیل → بارگذاری)
✔️ تفکیک شفاف مسئولیت‌ها بین Reader، Processor و Writer

این پروژه تجربه عملی بسیار خوبی از استفاده واقعی Spring Boot و Spring Batch برای اتوماسیون پردازش داده‌ها فراهم کرد.

🆔 @javapro_ir
🆔 @group_javapro
پروژه بازی Brick Breaker.rar
1.3 MB
سورس پروژه بازی Brick Breaker به زبان جاوا

🆔 @javapro_ir
🆔 @group_javapro
۱۳+ سال تجربه به‌عنوان مهندس ارشد جاوا فول‌استک — آنچه از ساخت سیستم‌های سازمانی (Enterprise-Grade) آموخته‌ام

پس از فعالیت روی پلتفرم‌های مالی بزرگ در Wells Fargo، Freddie Mac، DBS Bank و Oracle، به این نتیجه رسیده‌ام که مهندسی سازمانی فقط نوشتن کد نیست؛ بلکه درباره مقیاس‌پذیری، تاب‌آوری، امنیت و قابلیت مشاهده‌پذیری (Observability) است.
آنچه من به تیم اضافه می‌کنم:

بک‌اند و میکروسرویس‌ها

Java، Spring Boot، REST APIs

تراکنش‌های توزیع‌شده، استراتژی‌های سراسری مدیریت Exception

Spring Batch برای پردازش‌های مالی سنگین


معماری‌های رویدادمحور (Event-Driven)

Kafka، ActiveMQ، JMS

مصرف‌کننده‌های Idempotent، Throttling، الگوهای Async


تحویل Cloud-Native

Docker، Kubernetes (EKS)، PCF، AWS، Azure

GitHub Actions، Jenkins، Spinnaker (CI/CD)

AppDynamics، Splunk، Kiali برای Observability


مهندسی داده

PostgreSQL، Oracle، MariaDB، Teradata

طراحی ERD، Stored Procedure، Trigger

مهاجرت دیتابیس با Flyway


تجربه فرانت‌اند

React.js، Redux، Router

Memoization و بهینه‌سازی رندر


امنیت

OAuth2، JWT، LDAP، SAML

رفع آسیب‌پذیری‌ها (Fortify / DAST)


سیستم‌هایی که تحویل داده‌ام:

🏦 مدیریت اوراق قرضه

🏦 مخازن داده بازار سرمایه

💳 سیستم‌های بازخرید و پاداش

📊 سیستم‌های پیشنهاددهی و بازاریابی زمینه‌محور


مهم‌تر از همه، به معماری تمیز، استقرارهای قابل پیش‌بینی، سرویس‌های تاب‌آور و هم‌راستایی با اهداف کسب‌وکار اهمیت می‌دهم.


🆔 @javapro_ir
🆔 @group_javapro
Channel name was changed to «آموزش برنامه نویسی جاوا [عضویت کلیک کنید]»
پروژه Rapid Roll.rar
1.1 MB
سورس رایگان بازی Rapid Roll به زبان جاوا

🆔 @javapro_ir
🆔 @group_javapro
Channel name was changed to «برنامه نویسی جاوا [عضویت کلیک کنید]»
چه عواملی روی درآمد برنامه‌ نویسی تأثیر دارند؟
دستمزد برنامه‌ نویسی مانند مشاغل دیگر، تحت تأثیر چندین عامل قرار دارد. عواملی مانند سطح تجربه، کشور و شهر محل سکونت، شیوه همکاری و نوع شغل، تحصیلات، دانش تخصصی و مهارت‌های میان‌فردی، روی دستمزد برنامه نویسان تأثیرگذار هستند.


🆔 @javapro_ir
🆔 @group_javapro
تأثیر سابقه کار روی دستمزد برنامه‌ نویس
اولین و مهم‌ترین عامل مؤثر روی حقوق برنامه‌ نویس، میزان سابقه کار و سطح تجربه او است. برنامه نویسان معمولاً مسیر شغلی خود را با یک دوره کارآموزی آغاز می‌کنند که معمولاً زیر دو سال طول می‌کشد. یکی از مهم‌ترین مزیت‌های این گروه شغلی این است که دستمزد کارآموزی بالاتری در مقایسه با دوره‌های کارآموزی سایر مشاغل دارد.
ازنظر سطح تجربه، برنامه نویسان را به سه سطح زیر تقسیم‌بندی می‌کنند:
سطح تازه‌کار (Junior): برنامه نویسان تازه‌کار، زیر دو سال سابقه کار دارند.
سطح متوسط (Mid-level): این برنامه نویسان، دو الی پنج سال سابقه کار دارند.
سطح ارشد (Senior): به برنامه‌نویسانی که بیش از پنج سال سابقه کار دارند، برنامه‌‌نویس ارشد گفته می‌شود.
اگر می‌خواهید برنامه‌ نویس شوید، ابتدا باید برای آگهی‌های استخدام کارآموز برنامه‌ نویسی، رزومه ارسال کنید. پس از پایان دوران کارآموزی خود، می‌توانید کار خود را به‌عنوان برنامه‌ نویس و با یک حقوق نسبتاً خوب، شروع کنید. پس از پنج سال از شروع کارآموزی، می‌توانید به‌عنوان یک برنامه‌ نویس ارشد استخدام شوید و درآمد بالایی داشته باشید.


🆔 @javapro_ir
🆔 @group_javapro
تأثیر تحصیلات روی درآمد برنامه‌ نویسی

جالب است که دستمزد برنامه‌ نویسی، با تمام تخصصی که این گروه شغلی نیاز دارد، وابستگی چندانی به سطح تحصیلات ندارد. باوجوداینکه اکثر برنامه نویسان فارغ‌التحصیلان رشته ‌های علوم کامپیوتر یا مهندسی نرم‌افزار هستند، اما افرادی که تحصیلات دانشگاهی ندارند یا کسانی که فارغ‌التحصیل رشته‌های غیر مرتبط هستند، می‌توانند یادگیری برنامه‌ نویسی را شروع کنند.
البته در برخی از مشاغل برنامه‌ نویسی، مانند برنامه‌ نویسی برای سازمان‌ها، به‌ویژه سازمان‌های دولتی، داشتن مدرک تحصیلی مرتبط برای استخدام برنامه‌ نویس اهمیت دارد و گا‌هاً ضروری است. در چنین سازمان‌هایی، سطح تحصیلات می‌تواند روی سطح حقوق برنامه‌ نویس مؤثر باشد. به‌عنوان‌مثال، برای استخدام شدن در یکی از بانک‌های جمهوری اسلامی ایران به‌عنوان برنامه‌ نویس، باید دارای حداقل مدرک کارشناسی در یکی از رشته‌های علوم کامپیوتر، مهندسی نرم‌افزار یا دیگر رشته‌های مرتبط باشید.


🆔 @javapro_ir
🆔 @group_javapro
1
استخدام برنامه نویس جاوا در توسن

✳️شرایط:

تسلط بر اصول شی گرایی و SOLID
آشنایی با اصول Clean Code
شناخت کامل زیرساخت Java
آشنایی با تکنولوژی های ارتباطی (REST, SOAP) 
ترجیحا آشنایی با Spring و یا Spring Boot
تسلط بر Hibernate
تسلط بر transaction management و اصول ACID
آشنایی با دیتابیس Oracle
آشنایی با معماری میکروسرویس
مکانیزم های authentication و authorization
آشنایی با design pattern ها
توانایی کار گروهی
توانایی حل مساله
علاقه مند به توسعه شخصی

❇️جهت اطلاعات بیشتر و ارسال رزومه اینجا کلیک کنید


🆔 @javapro_ir
🆔 @group_javapro
جدا کردن عدد صحیح از رشته در جاوا.pdf
720.6 KB
آموزش جدا کردن عدد صحیح از رشته در جاوا

فرمت:PDF

🆔 @javapro_ir
🆔 @group_javapro
👍1
بازی نقطه خط سری دوم.rar
209.8 KB
سورس بازی نقطه خط -نسخه دوم - به زبان جاوا

🆔 @javapro_ir
🆔 @group_javapro
Media is too big
VIEW IN TELEGRAM
پیمایش و چاپ عناصر یک ArrayList - شیوه دوم

فرمت:ویئو

🆔 @javapro_ir
🆔 @group_javapro
⚠️آموزش زبان جاوا از مبتدی تا پیشرفته.... 😍😍😍
Channel name was changed to «آموزش برنامه نویسی جاوا 😍»
تفاوت Static و Instance در جاوا

عبارت «Static در برابر Instance» یکی از مباحث کلیدی در طراحی کلاس‌ها و مدیریت حافظه در جاوا است.
این موضوع تعیین می‌کند که یک عضو کلاس متعلق به خود کلاس باشد یا تنها به شیءهایی که از آن کلاس ساخته می‌شوند ارتباط داشته باشد.
این تمایز نقش مهمی در درک رفتار برنامه‌ها، مدیریت حافظه و طراحی صحیح ساختارهای شی‌ءگرا ایفا می‌کند. ⚙️

Static چیست؟ 🔧

عبارت «static» به متدها و متغیرهایی اشاره دارد که متعلق به کل کلاس هستند نه به یک شیء خاص.
این اعضا تنها یک‌بار در حافظه بارگذاری می‌شوند و همهٔ نمونه‌های ساخته‌شده از کلاس به آن‌ها دسترسی مشترک دارند.
این ویژگی زمانی استفاده می‌شود که یک مقدار یا قابلیت باید میان همهٔ اشیا مشترک باشد، مانند شمارنده یا ابزار محاسباتی عمومی.

Instance چیست؟ 🧩

عبارت «instance» به متغیرها و متدهایی اشاره دارد که فقط پس از ساخته‌شدن یک شیء قابل استفاده هستند.
هر شیء مقادیر مستقل خود را برای این متغیرها نگه می‌دارد و تغییر آن‌ها بر شیءهای دیگر تأثیری ندارد.
این مفهوم پایهٔ شی‌ءگرایی است، زیرا هر نمونهٔ ساخته‌شده نمایانگر یک حالت مستقل از کلاس می‌باشد.

مثال ساده و روشن 🚗

عبارت «کلاس Car» را در نظر بگیرید که هم عضو static دارد و هم عضو instance:


public class Car {
    public static int totalCars = 0;  // Static
    private String model;             // Instance

    public Car(String model) {
        this.model = model;
        totalCars++;
    }

    public String getModel() {
        return model;
    }
}


این مثال نشان می‌دهد که totalCars از نوع static است و تعداد تمام خودروهای ساخته‌شده را ذخیره می‌کند.
این مقدار توسط تمام نمونه‌ها به‌صورت مشترک استفاده می‌شود و تنها یک بار در حافظه وجود دارد.
در مقابل، هر شیء مقدار مستقل خود را برای model نگه می‌دارد.

نحوهٔ استفاده در عمل


Car c1 = new Car("BMW");
Car c2 = new Car("Audi");

System.out.println(Car.totalCars);  // 2
System.out.println(c1.getModel());  // BMW
System.out.println(c2.getModel());  // Audi


این نمونه نشان می‌دهد که مقدار totalCars بدون ایجاد شیء جدید و از طریق نام کلاس قابل دسترسی است.
متغیرهای model اما فقط از طریق هر نمونه قابل مشاهده هستند زیرا از نوع instance می‌باشند.

متدهای Static و کاربرد آن‌ها 🧠

عبارت «متد static» زمانی مناسب است که رفتار آن متد وابسته به حالت داخلی شیء نباشد.
برای نمونه، متد Math.sqrt() نیازی به ساخت شیء ندارد و از طریق کلاس قابل اجرا است:


double result = Math.sqrt(25);  // بدون ایجاد شیء


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

نتیجه‌گیری 🎯

عبارت «شناخت تفاوت Static و Instance» به برنامه‌نویسان کمک می‌کند تا طراحی درست‌تری برای متدها و متغیرها انتخاب کنند.
این شناخت موجب استفادهٔ بهینه از حافظه، خوانایی بیشتر کد و جلوگیری از وابستگی‌های نامناسب می‌شود.
این موضوع هم در پروژه‌های کوچک و هم در سیستم‌های بزرگ نقشی اساسی در کارایی و پایداری نرم‌افزار دارد.


#کاربر_مبتدی


🆔 @javapro_ir
🆔 @group_javapro