انوتیشن های تزریق وابستگی در اسپرینگ:
(تزریق وابستگی چیست؟ https://fa.wikipedia.org/wiki/%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C)
(شرح مفهوم تزریق وابستگی :
https://barnamenevisan.org/Articles/Article2880.html)
(قوانین استفاده از انوتیشن ها به همراه وراثت در جاوا:
http://iropensource.com/?p=164)
به محض ایجاد یک
در صورت تامین نشدن وابستگی توسط
#SPRING_DI_ANNOTATION
@this_java
(تزریق وابستگی چیست؟ https://fa.wikipedia.org/wiki/%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C)
(شرح مفهوم تزریق وابستگی :
https://barnamenevisan.org/Articles/Article2880.html)
(قوانین استفاده از انوتیشن ها به همراه وراثت در جاوا:
http://iropensource.com/?p=164)
@Autowirted برای ستر و گتر و سازنده هست و روی داده های اولیه کار نمیکنهبه محض ایجاد یک
Bean از شی مورد نظر وابستگی تامین میشود@Requiredموقعی که بین ساخته شد وابستگی حتما باید تامین بشه
در صورت تامین نشدن وابستگی توسط
container برنامه خطای NullPointerException میدهد@Qualifierدر صورت وجود چند
Bean از یک جنس انوتیشن @Autowired قادر به تشخیص نمیباشد پس با این انوتیشن مشخص میشود منظور ما کدام Bean بوده است@Valueهمانند @
Autowired است..Autowired نمیتواند برای داده های اولیه (primitive type) کارایی داشته باشد پس با استفاده از انوتیشن @Valueمیتوان از داده های اولیه نیز استفاده کرد
#SPRING_DI_ANNOTATION
@this_java
Wikipedia
تزریق وابستگی
تزریقِ وابستگی (به انگلیسی: Dependency Injection (DI)) در برنامهنویسی شیءگرا، الگوی طراحیست با قاعدهٔ اصلیِ جداکردنِ رفتار از تحلیلِ نیازمندی (به انگلیسی: Dependency Resolution): فنی برای تجزیهکردنِ مؤلفههایِ بسیار مستقلِ نرمافزاری (به انگلیسی: Software…
تزریق وابستگی چیست؟
بدین شکل اگر روزی خواستین کد یک لایه ی دیگر رو بطور کامل تغییر بدین هیچ مشکلی برای لایه ی پایینی که داره از اون لایه استفاده میکنه بوجود نمیاد چون اون لایه هه داره روی وابستگی inject شده لایه ی بالاتر کار میکنه!!! (نه مستقیم با کلاس لایه ی بالاتر)
https://stackoverflow.com/questions/32365877/why-use-dependency-injection-when-you-can-import-a-java-class
@this_java
(Dependency Injection)
به سخن ساده تزریق وابستگی الگویی است برای تزریق وابستگی های خارجی یک کلاس به ان, به جای استفاده ی مستقیم از آن وابستگی ها در درون خود کلاسبدین شکل اگر روزی خواستین کد یک لایه ی دیگر رو بطور کامل تغییر بدین هیچ مشکلی برای لایه ی پایینی که داره از اون لایه استفاده میکنه بوجود نمیاد چون اون لایه هه داره روی وابستگی inject شده لایه ی بالاتر کار میکنه!!! (نه مستقیم با کلاس لایه ی بالاتر)
https://stackoverflow.com/questions/32365877/why-use-dependency-injection-when-you-can-import-a-java-class
@this_java
Stack Overflow
Why use Dependency injection when you can import a java class?
Could someone please explain to me why do we need to use the spring's dependency injection when you can just import a java class like:
import com.package.somejavaclass
I just wonder why?
import com.package.somejavaclass
I just wonder why?
دسته بنده کلاس ها در یک package:
یکی از اصولی که بسیاری از ابزارها و کتابخانه های مشهور در جاوا آن را رعایت می کنند Package by Feature است که در برابر روش Package By Layer قرار دارد.
در روش Package by Feature از package ها بعنوان ابزاری برای بیان قابلیت های نرم افزار استفاده می شود و در هر package فقط کلاس های مرتبط با یک قابلیت خاص قرار داده می شود، برای مثال در یک برنامه مدیریت داروخانه ممکن است package بندی بصورت زیر باشد:
com.app.doctor
com.app.drug
com.app.presription
و در هر کدام از این package ها کلاس ها و فایل های مرتبط با آن package در لایه های مختلف نرم افزار جمع شده اند (کلاس های UI, Controller و ...). مهمترین مزیت این روش ماژولاریتی بالا و وابستگی کم بین package است.
در روش Package By Layer، از لایه بندی برنامه برای دسته بندی کلاس ها استفاده می شود، برای مثال در برنامه مدیریت داروخانه packaging می تواند بصورت زیر باشد:
com.app.action
com.app.model
com.app.dao
که در این روش کلاس ها مختلف یک قابلیت در package های مختلف پراکنده می شوند و در نهایت ماژولاریتی پایین می آید و وابستگی بین package زیاد است.
از مزایای روش Package by Feature نسبت به Package By Layer می توان به موارد زیر اشاره کرد:
Modularity بالاتر
Navigation آسانتر بین کدها
مدیریت راحتتر کلاس ها و قابلیت ها در زمان بزرگ شدن پروژه
#package_best_practice
@This_java
یکی از اصولی که بسیاری از ابزارها و کتابخانه های مشهور در جاوا آن را رعایت می کنند Package by Feature است که در برابر روش Package By Layer قرار دارد.
در روش Package by Feature از package ها بعنوان ابزاری برای بیان قابلیت های نرم افزار استفاده می شود و در هر package فقط کلاس های مرتبط با یک قابلیت خاص قرار داده می شود، برای مثال در یک برنامه مدیریت داروخانه ممکن است package بندی بصورت زیر باشد:
com.app.doctor
com.app.drug
com.app.presription
و در هر کدام از این package ها کلاس ها و فایل های مرتبط با آن package در لایه های مختلف نرم افزار جمع شده اند (کلاس های UI, Controller و ...). مهمترین مزیت این روش ماژولاریتی بالا و وابستگی کم بین package است.
در روش Package By Layer، از لایه بندی برنامه برای دسته بندی کلاس ها استفاده می شود، برای مثال در برنامه مدیریت داروخانه packaging می تواند بصورت زیر باشد:
com.app.action
com.app.model
com.app.dao
که در این روش کلاس ها مختلف یک قابلیت در package های مختلف پراکنده می شوند و در نهایت ماژولاریتی پایین می آید و وابستگی بین package زیاد است.
از مزایای روش Package by Feature نسبت به Package By Layer می توان به موارد زیر اشاره کرد:
Modularity بالاتر
Navigation آسانتر بین کدها
مدیریت راحتتر کلاس ها و قابلیت ها در زمان بزرگ شدن پروژه
#package_best_practice
@This_java
Forwarded from بینام
glassfish_4.1.2.zip
104.9 MB
Object_Oriented_SourceBaran.Com.rar
2.5 MB
آموزش آسان؛ساده و شیرین شی گرایی در جاوا در یکفایل فشرده 👌👌👌
@this_java
@this_java
یافتن اعداد کامل در جاوا:
عدد کامل عددی صحیح و مثبت است که مجموع مقسوم علیه های آن جز خودش برابر خود عدد شود.
مثال : 6عددی کامل هست
که به عدد های 1,2,3 بخش پذیره و جمع این عدد ها برابر با خود 6 است.
عدد کامل عددی صحیح و مثبت است که مجموع مقسوم علیه های آن جز خودش برابر خود عدد شود.
مثال : 6عددی کامل هست
که به عدد های 1,2,3 بخش پذیره و جمع این عدد ها برابر با خود 6 است.
public class Dcoder{
public static void main(String[] args){
for(long i = 1;i<=Long.MAX_VALUE;i++){
long m=0;
for(long i2=1;i2<i;i2++){
if(i%i2==0){
m+=i2;
}
}
if(m==i){
System.out.println(i);
m=0;
}
}
}
}
@this_javaانوتیشن
لینک
استفاده از انوتیشن بالا در عمل تفاوتی با استفاده از سازنده ندارد .
میتوان به جای انوتیشن
انوتیشن
لینک
استفاده از دو اینترفیس
@Required در اسپرینگ منسوخ شده است جایگزین ان چیست؟لینک
@Required :برای این است که اعلام شود یک وابستگی حتما باید تامین شود تا بین ساخته شود استفاده از انوتیشن بالا در عمل تفاوتی با استفاده از سازنده ندارد .
میتوان به جای انوتیشن
@Required از سازنده و یا از اینترفیس InitializingBean(و نه از انوتیشن @PostConstruct زیرا منسوخ شده است) استفاده نمود.انوتیشن
@PostConstruct @PreDestroy منسوخ شده اند ..جایگزین انها چیست؟لینک
استفاده از دو اینترفیس
InitializingBeanو DisposableBean
@this_javaBetter-Coding
Spring @PostConstruct and @PreDestroy alternatives in Java 9+
Both @PostConstruct and @PreDestroy annotations (often used in spring applications) are located in java.xml.ws.annotation package which is a part of Java EE module. J2EE has been deprecated in Java 9 and it’s scheduled to be removed in Java 11. Let’s look…
رمز سزار:
اصولا رمزنگاری به دو بخش رمزنگاری با کلید متقارن(دو روش مدرن برای مثال جایگزینی و کلاسیک برای مثال AES) و رمزنگاری با کلید نامتقارن تقسیم میشود.
رمزنگاری جایگزینی یا جانیشنی: هر واحد از متن اصلی بر طبق یک سیستم معین با متن رمز شده جایگزین میشود. یک واحد ممکن است یک حرف باشد(معمولا اینطور است) یا دو حرف . رمزگشایی ان با کمک عکس عمل جایگذاری امکان پذیر است
تفاوت با رمزنگاری جابجایی:جابجایی مکان حروف را تغییر میدهد و نه خود حرف را اما جایگزینی خود حرف را تغییر میدهد
یکی از ساده ترین و ابتدایی ترین مثال برای برای رمزنگاری جایگزینی رمز سزار میباشد
تابع رمزنگاری در رمز سزار:
(۲۶ همان پیمانه است که در اینجا تعداد حروف انگلیسی میباشد)
تابع رمزگشایی در رمز سزار:
شکستن رمز سزار: از انجایی که انتقال های ممکن (n) محدود است (در زبان انگلیسی ۲۶) میتوان حالات ممکن را بررسی کرد تا به یک عبارت با معنی رسید و ضریب انتقال را پیدا کرد.
در واقع در رمز سزار ما میایم به هر حرف توی زبان انگلیسی یک عدد میدیم از صفر تا بیست و شش و یک ضریب جابجایی در نظر میگیریم ..مثلا ۱...در این صورت اگر حرف ما A باشد (شماره اش صفر است) یک واحد به جلو میرویم و میشود ۱ که همان حرف B است...
نکته : اگر x-n منفی شد باید قدر مطلق این عدد منفی را از ۲۶ کم کنیم
@this_java
اصولا رمزنگاری به دو بخش رمزنگاری با کلید متقارن(دو روش مدرن برای مثال جایگزینی و کلاسیک برای مثال AES) و رمزنگاری با کلید نامتقارن تقسیم میشود.
رمزنگاری جایگزینی یا جانیشنی: هر واحد از متن اصلی بر طبق یک سیستم معین با متن رمز شده جایگزین میشود. یک واحد ممکن است یک حرف باشد(معمولا اینطور است) یا دو حرف . رمزگشایی ان با کمک عکس عمل جایگذاری امکان پذیر است
تفاوت با رمزنگاری جابجایی:جابجایی مکان حروف را تغییر میدهد و نه خود حرف را اما جایگزینی خود حرف را تغییر میدهد
یکی از ساده ترین و ابتدایی ترین مثال برای برای رمزنگاری جایگزینی رمز سزار میباشد
تابع رمزنگاری در رمز سزار:
E(x) =(x+n) mod 26n = ضریب انتقال
(۲۶ همان پیمانه است که در اینجا تعداد حروف انگلیسی میباشد)
تابع رمزگشایی در رمز سزار:
D(x)=(x-n)mod26ابتدا هر حرف یک عدد نظیر میکند: (برای a صفر و برای z بیست و شش)
شکستن رمز سزار: از انجایی که انتقال های ممکن (n) محدود است (در زبان انگلیسی ۲۶) میتوان حالات ممکن را بررسی کرد تا به یک عبارت با معنی رسید و ضریب انتقال را پیدا کرد.
در واقع در رمز سزار ما میایم به هر حرف توی زبان انگلیسی یک عدد میدیم از صفر تا بیست و شش و یک ضریب جابجایی در نظر میگیریم ..مثلا ۱...در این صورت اگر حرف ما A باشد (شماره اش صفر است) یک واحد به جلو میرویم و میشود ۱ که همان حرف B است...
نکته : اگر x-n منفی شد باید قدر مطلق این عدد منفی را از ۲۶ کم کنیم
@this_java
Forwarded from Iran Open Source Community (🕯SOLIDARITY🕯)
iropensource.com - What’s New in Java 13.zip
53.1 MB
چرا نباید کامنت گذاری کنیم 🤔
🔻 اگر زبان برنامه نویسی ما به اندازه کافی گویا میبود و یا اگر ما استعداد این را داشتیم که با استفاده از این زبان مقصود خودمان را به خوبی بیان کنیم، شاید نیازی به نوشتن کامنت های بسیاری نبود و شاید اصلا نیازی نبود.
✅ بنابراین هنگامی که در موقعیتی قرار میگیرید که نیاز به نوشتن کامنت دارید، فکر کنید و سپس ببینید که آیا راهی برای تبدیل جداول و گویا کردن کدتان وجود دارد یا خیر. هر زمانی که کد خودتان را به درستی نشان دادید باید خودتان را تشویق کنید. هر بار که شما کامنتی مینویسید باید در توانایی بیان خود احساس شکست کنید.
نظور خودتان را درون کد توضیح دهید
مطمئنا زمان هایی وجود دارد که کد وسیله ای ضعیف برای بیان توضیحات میباشد. متاسفانه برخی از برنامه نویسان این را بدین معنا میدانند که کد به ندرت ابزاری خوب برای توضیح دادن است. این به وضوح غلط است. کدامیک از اینها از نظر شما بهتر است ؟
یا این
✅تنها چند ثانیه طول میکشد که فکر کنید و مقصود خود را بیشتر در کد توضیح دهید. در بسیاری از موارد کاری را که میخواهید در کامنت بگویید به سادگی با ایجاد یک تابع میتوان بیان کرد.
چکیده ای از کتاب Clean Code
@this_java
🔻 اگر زبان برنامه نویسی ما به اندازه کافی گویا میبود و یا اگر ما استعداد این را داشتیم که با استفاده از این زبان مقصود خودمان را به خوبی بیان کنیم، شاید نیازی به نوشتن کامنت های بسیاری نبود و شاید اصلا نیازی نبود.
✅ بنابراین هنگامی که در موقعیتی قرار میگیرید که نیاز به نوشتن کامنت دارید، فکر کنید و سپس ببینید که آیا راهی برای تبدیل جداول و گویا کردن کدتان وجود دارد یا خیر. هر زمانی که کد خودتان را به درستی نشان دادید باید خودتان را تشویق کنید. هر بار که شما کامنتی مینویسید باید در توانایی بیان خود احساس شکست کنید.
نظور خودتان را درون کد توضیح دهید
مطمئنا زمان هایی وجود دارد که کد وسیله ای ضعیف برای بیان توضیحات میباشد. متاسفانه برخی از برنامه نویسان این را بدین معنا میدانند که کد به ندرت ابزاری خوب برای توضیح دادن است. این به وضوح غلط است. کدامیک از اینها از نظر شما بهتر است ؟
یا این
✅تنها چند ثانیه طول میکشد که فکر کنید و مقصود خود را بیشتر در کد توضیح دهید. در بسیاری از موارد کاری را که میخواهید در کامنت بگویید به سادگی با ایجاد یک تابع میتوان بیان کرد.
چکیده ای از کتاب Clean Code
@this_java
آرزوی بهروزی و سلامتی برای خسرو آواز ایران استاد محمدرضا شجریان داریم.
محمدرضا شجریان، استاد بی بدیل آواز ایران است که طی نیم قرن، جاوادانههای بزرگی در موسیقی ایران خلق کردهاست. طبق آنچه اساتید و کارشناسان موسیقی باور دارند، استاد محمدرضا شجریان صدای بیهمتای یک قرن گذشته موسیقی ایران بودهاست.
نماند بی پدر، آسمان موسیقی ایران..❤️
@this_java
محمدرضا شجریان، استاد بی بدیل آواز ایران است که طی نیم قرن، جاوادانههای بزرگی در موسیقی ایران خلق کردهاست. طبق آنچه اساتید و کارشناسان موسیقی باور دارند، استاد محمدرضا شجریان صدای بیهمتای یک قرن گذشته موسیقی ایران بودهاست.
نماند بی پدر، آسمان موسیقی ایران..❤️
@this_java
جاوا اف ایکس (JavaFX) چیست؟
یک کتابخانه جاوا است که برای ساخت Rich Internet Application مورد استفاده قرار می گیرد. برنامه های نوشته شده با استفاده از این کتابخانه می توانند به طور مداوم در چندین سیستم عامل اجرا شوند. برنامه های توسعه یافته با استفاده از Java Fx می توانند بر روی دستگاه های مختلفی مانند رایانه های رومیزی ، تلفن های همراه ، تلویزیون ، تبلت و غیره اجرا شوند.
سوال: Rich Internet application چیست؟(RIA)
اپلیکیشن های تحت وب هستند که بسیاری از ویژگی های اپلیکیشن های دسکتاپ را دارند. این اپلیکیشن ها روی ویندوز، لینوکس، مکینتاش، اندروید، آی او اس، مرورگرهای اینترنت، کنسول های بازی و حتی تلویزیون های هوشمند به خوبی اجرا می شوند.
نمونه پرکاربرد این نوع اپلیکیشن ها Adobe Flash می باشد.
اپلیکیشن های RIA معمولا با تکنولوژی های Adobe Flash ، Microsoft Silverlight و JavaFX طراحی می شوند.
اپلیکیشن های JavaFX روی پلتفرم های JavaSE و JavaME طراحی شده و تمام قدرت این پلتفرم ها را در اختیار گرفته است.
به وسیله JavaFX شما میتوانید اپلیکیشن هایی با گرافیک فوق العاده بسازید که بدون کوچکترین تغییری روی تمامی سیستم عامل ها و پلتفرم های دسکتاپ و موبایل و … اجرا شوند
برای توسعه برنامه های کاربردی GUI با استفاده از زبان برنامه نویسی جاوا ، برنامه نویسان به کتابخانه هایی مانند Abstract Windowing Toolkit و Swing اکتفا می کردند. پس از ظهور JavaFX ، این برنامه نویسان جاوا اکنون می توانند برنامه های GUI را با محتوای غنی به طور مؤثر توسعه دهند.
قبلا درمورد Swing و Awt توضیح داده شده است
@this_java
یک کتابخانه جاوا است که برای ساخت Rich Internet Application مورد استفاده قرار می گیرد. برنامه های نوشته شده با استفاده از این کتابخانه می توانند به طور مداوم در چندین سیستم عامل اجرا شوند. برنامه های توسعه یافته با استفاده از Java Fx می توانند بر روی دستگاه های مختلفی مانند رایانه های رومیزی ، تلفن های همراه ، تلویزیون ، تبلت و غیره اجرا شوند.
سوال: Rich Internet application چیست؟(RIA)
اپلیکیشن های تحت وب هستند که بسیاری از ویژگی های اپلیکیشن های دسکتاپ را دارند. این اپلیکیشن ها روی ویندوز، لینوکس، مکینتاش، اندروید، آی او اس، مرورگرهای اینترنت، کنسول های بازی و حتی تلویزیون های هوشمند به خوبی اجرا می شوند.
نمونه پرکاربرد این نوع اپلیکیشن ها Adobe Flash می باشد.
اپلیکیشن های RIA معمولا با تکنولوژی های Adobe Flash ، Microsoft Silverlight و JavaFX طراحی می شوند.
اپلیکیشن های JavaFX روی پلتفرم های JavaSE و JavaME طراحی شده و تمام قدرت این پلتفرم ها را در اختیار گرفته است.
به وسیله JavaFX شما میتوانید اپلیکیشن هایی با گرافیک فوق العاده بسازید که بدون کوچکترین تغییری روی تمامی سیستم عامل ها و پلتفرم های دسکتاپ و موبایل و … اجرا شوند
برای توسعه برنامه های کاربردی GUI با استفاده از زبان برنامه نویسی جاوا ، برنامه نویسان به کتابخانه هایی مانند Abstract Windowing Toolkit و Swing اکتفا می کردند. پس از ظهور JavaFX ، این برنامه نویسان جاوا اکنون می توانند برنامه های GUI را با محتوای غنی به طور مؤثر توسعه دهند.
قبلا درمورد Swing و Awt توضیح داده شده است
@this_java
Telegram
Learn Java
swing در مقابل AWT
درواقع دو مجموعه از کامپوننت های GUI در جاوا وجود دارد . قبل از اینکه swing در java SE 1.2 معرفی شود, GUI های جاوا با کامپوننت هایی از Abstract window Tolkit که به اختصار awt نامیده میشود در پکیج java.awt ایجاد میشدند. زمانیکه یک برنامه…
درواقع دو مجموعه از کامپوننت های GUI در جاوا وجود دارد . قبل از اینکه swing در java SE 1.2 معرفی شود, GUI های جاوا با کامپوننت هایی از Abstract window Tolkit که به اختصار awt نامیده میشود در پکیج java.awt ایجاد میشدند. زمانیکه یک برنامه…