برای جستجوی عنصر خاص و یا کاراکتر خاصی در عناصر یک لیست دو روش می توانیم عمل کنیم
1.
names= ["سارا", "سعید", "مریم", "لیلا", "رضا","فرشته"]
newlist = []
for x in names:
if "ف" in x:
newlist.append(x)
2. روش دوم که ساده تر از روش اول می باشد به صورت زیر می باشد
names= ["سارا", "سعید", "مریم", "لیلا", "رضا","فرشته"]
newlist = [x for x in names if "ف" in x]
- فرشته حقیقی 5 سال قبل پاسخ داد
برای پیاده سازی کلاس singleton در جاوا در زمانیکه چند ترد داریم باید ساخت نمونه از کلاس در متد synchronize شده انجام شود.
public class ThreadSafeSingleton {
private static ThreadSafeSingleton instance;
private ThreadSafeSingleton(){}
public static synchronized ThreadSafeSingleton getInstance(){
if(instance == null){
instance = new ThreadSafeSingleton();
}
return instance;
}
}
- فرشته حقیقی 5 سال قبل پاسخ داد
Lazy initialization در الگوی singleton به این صورت می باشد که ساخت نمونه از کلاس در زمانی که به آن نیاز باشد انجام می شود. به عبارت دیگر ساخت نمونه در متد انجام می شود.
public class LazySingleton {
private static LazySingleton instance;
private LazySingleton (){}
public static LazySingleton getInstance(){
if(instance == null){
instance = new LazySingleton ();
}
return instance;
}
}
البته این روش در زمانیکه که چند ترد (thread ) داشته باشیم مناسب نمی باشد به این دلیل که زمانیکه چند ترد با هم در بلاک if باشند چند نمونه از کلاس ایجاد می شود.
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
eager initialization در الگوی singlton به این صورت عمل می کند که آبجکت را در زمان لود کلاس ایجاد می کند.
public class EagerInitializedSingleton {
private static final EagerInitializedSingleton instance = new EagerInitializedSingleton();
private EagerInitializedSingleton(){}
public static EagerInitializedSingleton getInstance(){
return instance;
}
}
در مثال بالا در خط چهارم یک آبجکت از کلاس ایجاد شده که در زمان لود کلاس می باشد. عیب این روش این است که حتی اگر اپلیکیشن به این آبجکت نیازی نداشته باشد این آبجکت ایجاد می شود.در حالتیکه کلاس singleton منابع زیادی مصرف نکند این روش مناسب می باشد. اما در بیشتر مواقع کلاسهای singleton منابعی برای عملیات فایلی و دیتابیس مصرف می کنند که در اینگونه موارد eager initialization مناسب نمی باشد.
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
singleton یک الگوی طراحی lمی باشد به منظور اینکه از یک کلاس فقط یک آبجکت وجود داشته باشد.برای پیاده سازی آن می بایست موارد زیر را رعایت کنیم.
- یک constructor از نوع private : اینکار باعث می شود با استفاده از دستور new نتوانیم ازکلاس نمونه ای بسازیم.
- یک متغیر static برای آبجکت
- یک متد sttatic برای ساخت آبجکتی از کلاس
public final class MySingleton {
private static MySingleton INSTANCE;
private ClassSingleton() {
}
public static MySingleton getInstance() {
if(INSTANCE == null) {
INSTANCE = new MySingleton ();
}
return INSTANCE;
}
// getters and setters
}
با استفاده از این پیاده سازی برای ساخت یک آبجکت از کلاس MySingleton نمی توانیم از constructor آن استفاده کنیم و می بایست با استفاده از متد getInstance آبجکتی از کلاس را دریافت کنیم. در این متد بررسی می کند که آیا قبلا آبجکتی از کلاس ساخته شده است یا خیر. در صورتیکه قبلا آبجکتی ساخته نشده یک آبجکت از کلاس برای ما می سازد.درصورتیکه قبلا آبجکتی ساخته شده باشد همان آبجکت قبلی برگردانده می شود.
- فرشته حقیقی 5 سال قبل پاسخ داد
برای پیدا کردن عناصر مشترک در دو مجموعه از متد intersection_update استفاده می کنیم.
x = {"java", "spring", "python"}
y = {"python", "php", "jsf"}
x.intersection_update(y)
متد intersection نیز یک مجموعه جدید ایجاد می کند و عناصر مشترک دو مجموعه را در آن قرار می دهد.
z = x.intersection(y)
- فرشته حقیقی 5 سال قبل پاسخ داد
برای ادغام کردن دو لیست در پایتون از متد union استفاده می کنیم.
set1 = {"java", "python" , "php"}
set2 = {1, 2, 3}
set3 = set1.union(set2)
متد update در مثال زیر نیز عناصر set2 را در set1 قرار می دهد
set1.update(set2)
- فرشته حقیقی 5 سال قبل پاسخ داد
برای حذف یک عنصر در پایتون از متدهای remove و discard استفاده می کنیم.برخلاف زبانهای دیگر که شماره اندیس عنصر را به متد حذف می دهیم، در پایتون برای این کار کافی است نام المان را به متد حذف بدهیم.
course= {"python", "java", "php"}
course.remove("java")
و یا
course.discard("java")
برای حذف عنصر اخر نیز می توانیم از متد pop استفاده می کنیم.
course.pop()
- فرشته حقیقی 5 سال قبل پاسخ داد
برای نوشتن در فایل بصورت زیر عمل می کنیم
f = open("file.txt", "a")
f.write(" ")
در تابع open باید مشخص کنیم که می خواهیم از انتهای فایل بنویسیم و یا اینکه محتوای فایل پاک شود و مطلب مورد نظر ما در آن نوشته شود.برای اینکار از پارامترهای زیر استفاده می کنیم
“a” : نوشتن از انتهای فایل
“w” : پاک کردن محتوای فایل و جایگزین کردن آن با مطلب مورد نظر ما
بستن فایل بصورت زیر انجام می شود
f.close()
- فرشته حقیقی 5 سال قبل پاسخ داد
برای خواندن از فایل در پایتون به صورت زیر عمل می کنیم
f = open("file.txt")
f.read()
در متد می توانیم مشخص کنیم که چند کاراکتر از فایل خوانده شود.مثلا در مثال زیر می گوییم که 20 کاراکتر اول فایل برگردانده شود
read(20)
- فرشته حقیقی 5 سال قبل پاسخ داد
json یک عبارت جاوااسکریپتی می باشد که برای مبادله دیتا بین سرویس ها استفاده می شود که به فرمت کلید و مقدار می باشد.
برای تبدیل json به پایتون باید پیکیج آن را در برنامه خود تعریف کنیم
import json
فرض کنیم عبارت json زیر را داریم
x = '{ "name":"John", "age":30, "city":"New York"}'
برای تبدیل آن از متد زیر استفاده می کنیم
y = json.loads(x)
برای دسترسی به عناصر y باید از کلیدها استفاده کنیم
y["age"]
برای تبدیل یک عبارت پایتون به json از متد زیر استفاده می کنیم
y = json.dumps(x)
- فرشته حقیقی 5 سال قبل پاسخ داد
- آخرین فعالیت در 5 سال قبل
برای اینکار می توانیم از تگهای <ui:insert> و <ui:include> استفاده کنیم.با استفاده از این تگها محتوای یک قسمت از صفحه با آن صفحه ای که مد نظر ماست پر می شود.
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:ui = "http://java.sun.com/jsf/facelets">
<h:body>
<ui:insert name = "header" >
<ui:include src = "header.xhtml" />
</ui:insert>
<ui:insert name = "content" >
<ui:include src = "contents.xhtml" />
</ui:insert>
<ui:insert name = "footer" >
<ui:include src = "footer.xhtml" />
</ui:insert>
</h:body>
و یا
<h:body>
<ui:insert name = "header" >
<ui:include src = "header.xhtml" />
</ui:insert>
<ui:insert name = "content" >
<ui:include src = "contents.xhtml" />
</ui:insert>
<ui:insert name = "footer" >
<ui:include src = "footer.xhtml" />
</ui:insert>
</h:body>
مثلا در قسمت header فایل header.xhtml قرار می گیرد.
- فرشته حقیقی 5 سال قبل پاسخ داد
برای تبدیل رشته به عدد از تگ <f:convertNumber> به صورت زیر استفاده می کنیم.
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:h = "http://java.sun.com/jsf/html"
xmlns:f = "http://java.sun.com/jsf/core">
<f:convertNumber minFractionDigits = "2" />
minFractionDigits : با استفاده از این ویژگی مینیمم رقم در قسمت اعشاری را مشخص می کنیم.در این مثال گفتیم که قسمت اعشار می بایست 2 رقم یا بیشتر باشد.
در این تگ می توانیم ویژگی های زیر را استفاده کنیم
maxFractionDigits : حداکثر رقم در قسمت اعشار
pattern : می توانیم یک الگو بدهیم و بگوییم که رشته به فرمت مورد نظر تبدیل شود.
maxIntegerDigits : ماکسیمم رقم در قسمت صحیح
minIntegerDigits : مینیمم رقم در قسمت صحیح
integerOnly : اگر true باشد فقط قسمت صحیح عدد در نظر می شود.
currencySymbol : هر علامت واحد پولی که بدهیم در کنار عدد قرار می گیرد.
type : نوع عدد که می تواند عدد پول یا درصد باشد
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:h = "http://java.sun.com/jsf/html"
xmlns:f = "http://java.sun.com/jsf/core">
<h:body>
<table >
<tr>
<th>Parameter</th>
<th>Value Passed</th>
<th>Output</th>
</tr>
<tr>
<td>minFractionDigits = "2"</td>
<td>100.12345</td>
<td>
<h:outputText value = "100.12345" >
<f:convertNumber minFractionDigits = "2" />
</h:outputText>
</td>
</tr>
<tr>
<td>pattern = "#000.000"</td>
<td>100.12345</td>
<td>
<h:outputText value = "100.12345" >
<f:convertNumber pattern = "#000.000" />
</h:outputText>
</td>
</tr>
<tr>
<td>currencySymbol = "$"</td>
<td>$100</td>
<td>
<h:outputText value = "$100">
<f:convertNumber currencySymbol = "$" type = "currency" />
</h:outputText>
</td>
</tr>
<tr>
<td>type = "percent"</td><td>100.12345%</td>
<td>
<h:outputText value = "100.12345%" >
<f:convertNumber type = "percent" />
</h:outputText>
</td>
</tr>
</table>
</h:body>
</html>
- فرشته حقیقی 5 سال قبل پاسخ داد
درصورتیکه بخواهیم فقط یک چک باکس داشته باشیم که کاربر آن را تیک بزند از تگ <h:selectBooleanCheckbox> به صورت زیر استفاده می کنیم
<h:selectBooleanCheckbox value = "1" id = "chkBOX" />
اما درصورتیکه بخواهیم چند گزینه داشته باشیم که کاربر بتواند چند مورد از آنها را تیک بزند از تگ <h:selectManyCheckbox> به صورت زیر استفاده می کنیم
<h:selectManyCheckbox value = "#{userData.data}">
<f:selectItem itemValue = "1" itemLabel = "SPRING" />
<f:selectItem itemValue = "2" itemLabel = "JSF" />
</h:selectManyCheckbox>
- فرشته حقیقی 5 سال قبل پاسخ داد
برای اینکار از تگ <h:messages> استفاده می کنیم
<h:messages style = "color:red;margin:8px;" />
با استفاده ازcolor رنگ فونت پیام را می توانیم مشخص کنیم.مثلا برای پیغام های خطا رنگ قرمز و برای پیغام های اخطار رنگ زرد قرار دهیم.
- فرشته حقیقی 5 سال قبل پاسخ داد
برای اینکار از تگ <h:inputSecret> به صورت زیر استفاده می کنیم
<h:inputSecret value = "password" />
- فرشته حقیقی 5 سال قبل پاسخ داد
برای اینکار از تگ < h:selectOneRadio > به صورت زیر استفاده می کنیم
<h:selectOneRadio value = "#{userData.data}">
<f:selectItem itemValue = "1" itemLabel = "Item 1" />
<f:selectItem itemValue = "2" itemLabel = "Item 2" />
</h:selectOneRadio>
- فرشته حقیقی 5 سال قبل پاسخ داد
برای پیاده سازی کمبوباکس در jsf از تگ<h:selectOneMenu> به صورت زیر استفاده می کنیم
<h:selectOneMenu value = "#{userData.data}">
<f:selectItem itemValue = "1" itemLabel = "Item 1" />
<f:selectItem itemValue = "2" itemLabel = "Item 2" />
</h:selectOneMenu>
- فرشته حقیقی 5 سال قبل پاسخ داد
برای اینکاز از تگ <h:selectOneListbox> به صورت زیر استفاده می کنیم
<h:selectOneListbox value = "#{userData.data}">
<f:selectItem itemValue = "1" itemLabel = "Item 1" />
<f:selectItem itemValue = "2" itemLabel = "Item 2" />
</h:selectOneListbox>
- فرشته حقیقی 5 سال قبل پاسخ داد
برای اینکار از تگ<h:selectManyListbox> بصورت زیر استفاده می کنیم
<h:selectManyListbox value = "#{userData.data}">
<f:selectItem itemValue = "1" itemLabel = "Item 1" />
<f:selectItem itemValue = "2" itemLabel = "Item 2" />
</h:selectOneListbox>
data لیست آیتم ها می باشد.
- فرشته حقیقی 5 سال قبل پاسخ داد