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

جلسه دوم

ایجاد پروژه و فایل داکر

🆔 @javapro_ir
🆔 @group_javapro
پروژه نقاشی به زبان جاوا.rar
1.1 MB
سورس کد پروژه برنامه نقاشی به زبان جاوا

🆔 @javapro_ir
🆔 @group_javapro
Media is too big
VIEW IN TELEGRAM
مینی دوره Spring Boot- اپلیکیشن TODO

جلسه سوم

🆔 @javapro_ir
🆔 @group_javapro
Media is too big
VIEW IN TELEGRAM
مینی دوره Spring Boot- اپلیکیشن TODO

جلسه چهارم

🆔 @javapro_ir
🆔 @group_javapro
Ping pong.rar
215.2 KB
سورس بازی پینگ پونگ به زبان جاوا

🆔 @javapro_ir
🆔 @group_javapro
Media is too big
VIEW IN TELEGRAM
مینی دوره Spring Boot- اپلیکیشن TODO

جلسه پنجم

🆔 @javapro_ir
🆔 @group_javapro
Media is too big
VIEW IN TELEGRAM
مینی دوره Spring Boot- اپلیکیشن TODO

جلسه ششم

🆔 @javapro_ir
🆔 @group_javapro
سورس پروژه بازی دوز به زبان جاوا😍👇
Media is too big
VIEW IN TELEGRAM
مینی دوره Spring Boot- اپلیکیشن TODO

جلسه هفتم(آخر)

🆔 @javapro_ir
🆔 @group_javapro
پروژه بازی pacman.rar
248.9 KB
سورس پروژه رایگان بازی pacman به زبان جاوا

🆔 @javapro_ir
🆔 @group_javapro
اتوماسیون انتقال داده از 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