【精品】解決方案模板集合7篇
為了確保工作或事情順利進行,時常需要預(yù)先制定一份周密的方案,方案是書面計劃,具有內(nèi)容條理清楚、步驟清晰的特點。那么應(yīng)當如何制定方案呢?以下是小編幫大家整理的解決方案7篇,歡迎閱讀與收藏。
解決方案 篇1
眾所周知,處理好人際關(guān)系在職場中非常重要,但很多職場人士都被這個問題給困擾。
1、冷漠
冷漠是人際交往中的大忌。這種人可能是出于一些錯誤的認識,比如覺得“酷”才是自己的個性所在,還有可能出于內(nèi)向型性格。這種人失去了認識別人的機會,也失去了讓別人了解自己的機會。
解決方法:見到同事要面帶微笑,主動打招呼問好;主動與同事進行溝通交流;為人處世要有人情味,要關(guān)心同事,愛護同事,尊重同事,理解同事。同事與同事相處,應(yīng)當減少“火藥味”,增加人情味。
2、嫉妒
楊東認為,嫉妒是否會給人際關(guān)系帶來致命影響,在于這種心理是不是表現(xiàn)在行為當中。要是只在心里想想,是人之常情,真要被人察覺,也可以坦然承認、自我解嘲一番。要是發(fā)展到加害、中傷他人,那么就可能成為“過街老鼠”。
解決方法:厚道做人,在與同事的交往中,不能待人苛刻,使小心眼。同事有了成功,不能眼紅,不能嫉妒;同事有了問題,不能幸災(zāi)樂禍,落井下石,更不能給人“穿小鞋”。
3、封閉
每個人都會偶爾想關(guān)起門,把嘈雜擋在門外。“如果過于封閉,會變得孤單甚至自閉。知識、經(jīng)驗以及思維方式都會迅速老化,失去競爭力和吸引力!睏顤|說。
解決方法:主動與同事進行溝通交流,多參與公司的集體活動,多培養(yǎng)自己的興趣愛好。
4、自我
有些人為了讓自己的利益最大化,不惜打小報告、給別人的.業(yè)務(wù)使壞甚至中傷他人的名譽。楊東表示“自我為中心”會因為損害他人的利益和尊嚴為職場不容。
解決方法:多跟別人分享看法,多聽取和接受別人意見,這樣你才能獲得眾人接納和支持,方能順利推展工作大計。
解決方案 篇2
Android設(shè)置鬧鐘并不像IOS那樣這么簡單,做過Android設(shè)置鬧鐘的開發(fā)者都知道里面的坑有多深。下面記錄一下,我解決Android鬧鐘設(shè)置的解決方案。
主要問題
1、API19開始AlarmManager的機制修改。
2、應(yīng)用程序被Kill掉后,設(shè)置的鬧鐘不響。
3、6.0以上進入Doze模式會使JobScheduler停止工作。
4、手機設(shè)置重啟后,鬧鐘失效問題。
API19以上AlarmManager機制的修改
API19之前AlarmManager提供了三個設(shè)置鬧鐘的方法,由于業(yè)務(wù)需求鬧鐘只需要一次性,所以采用set(int type,long startTime,PendingIntent pi);這個方法。
從API 19開始,AlarmManager的機制都是非準確傳遞,操作系統(tǒng)將會轉(zhuǎn)換鬧鐘,來最小化喚醒和電池使用。
由于之前的程序,沒有對API19以上的鬧鐘設(shè)置做處理,導致在4.4以上的手機設(shè)置鬧鐘無響應(yīng)(應(yīng)用程序沒有被殺死的情況也沒有鬧鐘)。
因些,設(shè)置鬧鐘需要根據(jù)API的版本進行分別處理設(shè)置。代碼如下:
AlarmManager am = (AlarmManager) getActivity() .getSystemService(Context.ALARM_SERVICE);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { am.setExact(AlarmManager.RTC_WAKEUP, TimeUtils .stringToLong(recordTime, TimeUtils.NO_SECOND_FORMAT), sender);}else { am.set(AlarmManager.RTC_WAKEUP, TimeUtils .stringToLong(recordTime, TimeUtils.NO_SECOND_FORMAT), sender);}
這樣,保證鬧鐘在應(yīng)用程序沒有被Kill掉的情況鬧鐘。
應(yīng)用程序被Kill掉時的處理
應(yīng)用程序被Kill掉后,設(shè)置的鬧鐘失效,這里利用守護進程以及灰色;顏肀WC后臺鬧鐘服務(wù)不被Kill掉。當應(yīng)用程序以及鬧鐘服務(wù)被Kill掉,守護進程以及灰色;顏碇匦聠郁[鐘服務(wù),并且重新設(shè)置鬧鐘。
關(guān)于守護進程的處理,這里采用開源的守護進程庫。Android-AppDaemon
在鬧鐘服務(wù)的onCreat加入Android-AppDaemon這個開源的守護進程。代碼如下:
@Overridepublic void onCreate() { super.onCreate(); Daemon.run(DaemonService.this, DaemonService.class, Daemon.INTERVAL_ONE_MINUTE); startTimeTask(); grayGuard();}
為進一步保證鬧鐘服務(wù)的存活,同加上灰色;睿ɡ孟到y(tǒng)的漏洞啟動前臺Service)。
代碼如下:
private void grayGuard() { if (Build.VERSION.SDK_INT < 18) { //API < 18 ,此方法能有效隱藏Notification上的圖標 startForeground(GRAY_SERVICE_ID, new Notification()); } else { Intent innerIntent = new Intent(this, DaemonInnerService.class); startService(innerIntent); startForeground(GRAY_SERVICE_ID, new Notification()); } //發(fā)送喚醒廣播來促使掛掉的UI進程重新啟動起來 AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent alarmIntent = new Intent(); alarmIntent.setAction(WakeReceiver.GRAY_WAKE_ACTION); PendingIntent operation = PendingIntent.getBroadcast(this, WAKE_REQUEST_CODE, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { alarmManager.setWindow(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), ALARM_INTERVAL, operation); }else { alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), ALARM_INTERVAL, operation); }}/** * 給 API >= 18 的平臺上用的灰色保活手段 */public static class DaemonInnerService extends Service { @Override public void onCreate() { Log.i(LOG_TAG, "InnerService -> onCreate"); super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i(LOG_TAG, "InnerService -> onStartCommand"); startForeground(GRAY_SERVICE_ID, new Notification()); //stopForeground(true); stopSelf(); return super.onStartCommand(intent, flags, startId); } @Override public IBinder onBind(Intent intent) { throw new UnsupportedOperationException("Not yet implemented"); } @Override public void onDestroy() { Log.i(LOG_TAG, "InnerService -> onDestroy"); super.onDestroy(); }}
上面操作盡可能提高鬧鐘服務(wù)的存活。但是在5.0以上的手機,利用系統(tǒng)的自帶的Clean功能的時候,還是會將鬧鐘服務(wù)徹底的干掉。為了解決5.0以上的問題,這里引入5.0以上的新特性 JobScheduler。
5.0以上的JobScheduler
在這里利用5.0以上的JobScheduler創(chuàng)建一個定時的任務(wù),定時檢測鬧鐘服務(wù)是否存在,沒在存在則重新啟動鬧鐘服務(wù)。(這里我設(shè)置每一分鐘檢測一次鬧鐘服務(wù))
在進入應(yīng)用程序的時候檢測當前系統(tǒng)是否是5.0以上,如果是則啟動JobScheduler這個服務(wù)。代碼如下:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, new ComponentName(getPackageName(), JobSchedulerService.class.getName())); builder.setPeriodic(60 * 1000); //每隔60秒運行一次 builder.setRequiresCharging(true); builder.setPersisted(true); //設(shè)置設(shè)備重啟后,是否重新執(zhí)行任務(wù) builder.setRequiresDeviceIdle(true); if (mJobScheduler.schedule(builder.build()) <= 0) { //If something goes wrong }}
其中的builder.setPersisted(true); 方法是設(shè)備重啟后,是否重新執(zhí)行任務(wù),在這測過是可以重新啟動任務(wù)的。
上面的操作進一步保證了鬧鐘服務(wù)被Kill掉后,重新啟動服務(wù)。但是在6.0以上引入了Doze模式,當6.0以上的手機進入這個模式后,便會使JobScheduler停止工作。
6.0以上Doze模式的處理
為了讓JobScheduler可以在6.0以上進入Doze模式工作,這里針對6.0以上的Doze模式做特殊的處理-忽略電池的優(yōu)化。
在Manifest.xml中加入權(quán)限。
在設(shè)置鬧鐘的時候,判斷系統(tǒng)是否是6.0以上,如果是,則判斷是否忽略電池的優(yōu)化。判斷是否忽略電池優(yōu)化代碼如下:
@TargetApi(Build.VERSION_CODES.M)public static boolean isIgnoringBatteryOptimizations(Activity activity){ String packageName = activity.getPackageName(); PowerManager pm = (PowerManager) activity .getSystemService(Context.POWER_SERVICE); if (pm.isIgnoringBatteryOptimizations(packageName)) { return true; }else { return false; }}
如果沒有忽略電池優(yōu)化的時候,彈出提醒對話框,提示用戶進行忽略電池優(yōu)化操作。代碼如下:
/*** 針對N以上的Doze模式** @param activity*/public static void isIgnoreBatteryOption(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { try { Intent intent = new Intent(); String packageName = activity.getPackageName(); PowerManager pm = (PowerManager) activity.getSystemService(Context.POWER_SERVICE); if (!pm.isIgnoringBatteryOptimizations(packageName)) {// intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + packageName)); activity.startActivityForResult(intent, REQUEST_IGNORE_BATTERY_CODE); } } catch (Exception e) { e.printStackTrace(); } }}
在界面重寫onActivityResult方法來捕獲用戶的選擇。如,代碼如下:
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == BatteryUtils.REQUEST_IGNORE_BATTERY_CODE){ //TODO something } }else if (resultCode == RESULT_CANCELED){ if (requestCode == BatteryUtils.REQUEST_IGNORE_BATTERY_CODE){ ToastUtils.show(getActivity(), "請開啟忽略電池優(yōu)化~"); } }}
補充
當應(yīng)用程序被Kill掉,但是鬧鐘的'服務(wù)沒有被Kill掉的,這時候又設(shè)置了鬧鐘。這就意味著設(shè)置的鬧鐘沒有放到鬧鐘服務(wù)那里。所以這種情況,設(shè)置的鬧鐘會失效。為了解決這種情況,利用AIDL(鬧鐘服務(wù)在另一個進程的需要進程間通信)調(diào)用鬧鐘服務(wù)的重新設(shè)置鬧鐘方法重設(shè)鬧鐘。
在應(yīng)用程序的onCreat()方法啟動鬧鐘服務(wù),然后再綁定鬧鐘服務(wù)。
private void initAlarmService() { startService(new Intent(this, DaemonService.class));//啟動鬧鐘服務(wù) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //JobScheduler ... } //綁定鬧鐘服務(wù) Intent intent = new Intent(this, DaemonService.class); intent.setAction("android.intent.action.DaemonService"); bindService(intent, mConnection, Context.BIND_AUTO_CREATE);}
在onDestroy()方法,調(diào)用鬧鐘服務(wù)的重設(shè)鬧鐘方法。代碼如下:
@Overrideprotected void onDestroy() { super.onDestroy(); try {//判斷是否有鬧鐘,沒有則關(guān)閉鬧鐘服務(wù) String alarm = localPreferencesHelper.getString(LocalPreferencesHelper.ALARM_CLOCK); if (daemonService != -1 && mIRemoteService != null) {// android.os.Process.killProcess(daemonService); mIRemoteService.resetAlarm(); } if (!alarm.equals("[]")) { if (daemonService != -1) { startService(new Intent(this, DaemonService.class)); } } else { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mJobScheduler.cancel(JOB_ID); } } unbindService(mConnection); //解除綁定服務(wù)。 } catch (Exception e) { }}
這里說明一下,當服務(wù)啟動并且被綁定的情況下,unbindService是不會停止服務(wù)的。
最后
以上并不代表所有的Android手機的鬧鐘都可以用,這只是盡最大的可能保證大部分的手機。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持教程網(wǎng)。
解決方案 篇3
1.項目背景
HIS系統(tǒng)是一套集成門診掛號收費、住院收費、藥庫管理、藥房管理、院長查詢等工作站的醫(yī)院管理系統(tǒng).
某大型醫(yī)院采用HIS系統(tǒng)后,擁有大量服務(wù)提供相關(guān)服務(wù)應(yīng)用.
隨著業(yè)務(wù)量的增加,服務(wù)器承擔的服務(wù)任務(wù)越來越多,需要使用多臺服務(wù)器來運行相同服務(wù).
針對大圖像(CT)的服務(wù)器服務(wù)響應(yīng)壓力也越來越大.需要通過負載均衡設(shè)備來提高系統(tǒng)應(yīng)用交付能力及高可靠性.
2.客戶需求
保證當前的HIS系統(tǒng)WEB服務(wù)器的高可靠性,可擴展性.
在WEB服務(wù)器前放置四/七層負載均衡設(shè)備,把HIS系統(tǒng)流量轉(zhuǎn)發(fā)到多臺的WEB服務(wù)器上,對流量進行合理優(yōu)化,減少單點故障的問題,提高系統(tǒng)效率.
保證當前的HIS系統(tǒng)圖像服務(wù)器的高可靠性,可擴展性,在圖像服務(wù)器前放置四/七層負載均衡設(shè)備,把用戶的圖像的下載流量智能轉(zhuǎn)發(fā)到多臺圖像服務(wù)器上,減少單點故障的問題,提高系統(tǒng)效率.
3.PIOLINK設(shè)計方案
方案中采用了PIOLINK的PAS3516負載均衡設(shè)備,支持16個千兆端口(16×10/100/1000Base-TX,16×1000Base-XSFP),該設(shè)備缺省配置了雙電源,雙閃存。
PIOLINK的PAS系列產(chǎn)品基于“ALLINONE”的設(shè)計理念,PAS3516上配置了SLB服務(wù)器的負載均衡功能,對訪問內(nèi)部的服務(wù)器的流量進行流量均衡,將其分攤到對應(yīng)服務(wù)器集群的主機上,保證用戶的最佳服務(wù).
2臺PAS3516通過VRRP協(xié)議做了設(shè)備冗余,保證網(wǎng)絡(luò)的可靠性,平時一臺處于Active工作狀態(tài),另一臺處于standby的備份狀態(tài)。備機可以備份主設(shè)備上的所有會話和狀態(tài),這樣如果主設(shè)備出現(xiàn)問題或故障,根據(jù)冗余協(xié)議的設(shè)置,備份PAS會即時接管主設(shè)備的所有會話,用戶當前的應(yīng)用不會受到影響,從而使得用戶的關(guān)鍵業(yè)務(wù)不會造成中斷,實現(xiàn)了高可用性。
如果醫(yī)院有增加internet鏈路出口,也可以將PAS3516前移,同時實現(xiàn)鏈路負載均衡的功能,充分保證了用戶的.投資。
4.采用PIOLINK給客戶帶來的收益
實現(xiàn)服務(wù)器應(yīng)用的負載均衡,大大提升了HIS系統(tǒng)整體的性能表現(xiàn).
PAS3516缺省支持雙電源,雙閃存,多風扇系統(tǒng),保證了設(shè)備的可靠性,同時兩臺設(shè)備本身可實現(xiàn)的熱備份,提高了客戶系統(tǒng)的穩(wěn)定性.
PIOLINK負載均衡產(chǎn)品“ALLINONE”的設(shè)計理念,最大程度保證了用戶的投資。
PAS3516上啟動了安全模塊PSM(PIOLINKsecuritymanager),可以提供蠕蟲病毒攻擊,電子郵件蠕蟲病毒攻擊和DoS攻擊等的防護功能,更進一步加強了用戶的網(wǎng)絡(luò)安全。
解決方案 篇4
中小企業(yè)融資是指金融機構(gòu)針對中小企業(yè)推出的定制化融資解決方案,由現(xiàn)有企業(yè)籌集資金并完成項目的投資建設(shè),無論項目建成之前或之后,都不出現(xiàn)新的獨立法人。貸款和其他債務(wù)資金實際上是用于項目投資,但是債務(wù)方是公司而不是項目,整個公司的現(xiàn)金流量和資產(chǎn)都可用于償還債務(wù)、提供擔保;也就是說債權(quán)人對債務(wù)有完全的追索權(quán),即使項目失敗也必須由公司還貸,因而貸款的風險程度相對較低。
專業(yè)解析:
據(jù)上海埂莎投資管理有限公司總裁吳田平介紹,中小企業(yè)融資是一個企業(yè)的資金籌集的行為與過程。也就是公司根據(jù)自身的生產(chǎn)經(jīng)營狀況、資金擁有的狀況,以及公司未來經(jīng)營發(fā)展的需要,通過科學的預(yù)測和決策,采用一定的'方式,從一定的渠道向公司的投資者和債權(quán)人去籌集資金,組織資金的供應(yīng),以保證公司正常生產(chǎn)需要,經(jīng)營管理活動需要的理財行為。中小企業(yè)融資過程是從中小企業(yè)融資準備到中小企業(yè)融資成功的階段,需要中小企業(yè)融資方做細致而具體的工作。中小企業(yè)融資過程主要分為以下幾個方面:
1、中小企業(yè)融資準備工作
中小企業(yè)融資需要有中小企業(yè)融資團隊、資料等準備,最關(guān)鍵的是商業(yè)計劃書準備中小企業(yè)融資解決方案中小企業(yè)融資解決方案。
通常,與風險投資公司接觸的第一步是遞交商業(yè)計劃書。風險投資商經(jīng)常接到大量商業(yè)計劃書,因此,商業(yè)計劃書必需立刻吸引風險投資商的眼球。商業(yè)計劃書摘要很重要,做得好可以引得投資商精讀計劃書全文,做得不好會讓他們決定不再浪費更多時間。
一份好的商業(yè)計劃書是至關(guān)重要的,應(yīng)該完整而清晰地闡述公司的發(fā)展目標、長期戰(zhàn)略等,這是表現(xiàn)企業(yè)發(fā)展?jié)摿蛣?chuàng)業(yè)者自身素質(zhì)的絕好機會。風險投資家在初次閱讀一份商業(yè)計劃時,就會對該企業(yè)的管理者進行評估,從而預(yù)測投資回報。
2、中小企業(yè)融資方案策劃
制訂可行的中小企業(yè)融資方案將會有針對性的進行中小企業(yè)融資運作,提高中小企業(yè)融資的效率
通常要考慮中小企業(yè)融資條件、中小企業(yè)融資方式、合作期限及資金退出方式等。
3、中小企業(yè)融資實施:
首先要選擇風險投資公司,這是中小企業(yè)融資過程中甚為重要的一環(huán)中小企業(yè)融資解決方案投資創(chuàng)業(yè)。如果對投資者不進行調(diào)研和選擇,就容易造成無謂的四處推銷,從而拖延中小企業(yè)融資過程。
在選擇投資者時,通常應(yīng)考慮到地域、行業(yè)重點、發(fā)展階段以及所需資金量等因素。其它一些因素也同等重要,例如投資者在中小企業(yè)融資中是否為主投方,已投資過的企業(yè)是否會與你的公司進行互補或競爭。
解決方案 篇5
1.軟件問題:顯卡的驅(qū)動沒有裝好。其實即使沒有驅(qū)動,顯示器也會正確地顯示每種顏色的,不至于出現(xiàn)丟失元色的情況,但是如果驅(qū)動安裝不正確卻有可能出現(xiàn)這個問題。如顯卡的類型和驅(qū)動類型對應(yīng)不一致,版本不一致等。這樣的問題解決起來很簡單,把原有的顯卡驅(qū)動卸載重新安裝即可。卸載驅(qū)動的方法是:我的電腦——右鍵“屬性”——硬件——設(shè)備管理器——顯示卡——右鍵——卸載。檢測是否顯卡驅(qū)動問題的方法很簡單:以Windows XP為例,在電腦開機進入滾動等候畫面時,如果能夠正確顯示XP徽標上紅色而進入系統(tǒng)之后卻無法顯示,則證明顯卡驅(qū)動不正確。
2.顯示器問題:顯示器硬件故障。造成顯示器硬件問題的原因很多,如顯像管老化,所處環(huán)境潮濕導致線路氧化、靜電等都會造成顏色顯示不正常。根據(jù)不同的原因采取不同的方法即可,如將顯示器置于通風處等(很多人喜歡給顯示器蒙一塊布來防塵,這里dudo提醒大家的是,防塵要用專用的防塵罩,否則可能會導致顯示器通風散熱不暢)。
3.顯卡問題:顯示問題是最經(jīng)常出現(xiàn)的問題。例如卡槽接觸不緊密、顯卡過熱、顯卡線路與元件問題等。對于卡槽不緊密的問題可以拔下來重插,有時可能是因為灰塵較多,這里需要清理一下插槽并用橡皮 等工具清理顯示卡。對于顯卡過熱,則可以上面安裝一個小風扇或者把機箱放置通風處,顯卡過熱造成的顏色不正常往往是剛開機的時候比較正常,使用一段時間之后開始走色。
4.接線問題:顯示器和顯卡之間的.連接線。顯卡上所有的顏色信息都是經(jīng)常一條數(shù)據(jù)線傳遞到顯示器上的,如果這里出了問題則也會引起三元色缺失或者顏色不正常。所以可以考慮換一根線試試。
5.線路接口針問題:這是我遇到的問題。顯示器缺少紅色的問題困擾了我很久,我使用了上面所有的辦法都沒有解決掉,最后一次在群里聊天時,老田同志讓我看看是不是顯卡接口處的針斷了。我把數(shù)據(jù)線拔下來檢查,果不其然,其中一根針嚴重彎曲,并沒有插入到針孔里去。后來用小鑷子直過來之后發(fā)現(xiàn)顯示器顏色一切正常了,缺失的紅色又回來了。
解決方案 篇6
一個小型的網(wǎng)站,比如個人網(wǎng)站,可以使用最簡單的html靜態(tài)頁面就實現(xiàn)了,配合一些圖片達到美化效果,所有的頁面均存放在一個目錄下,這樣的網(wǎng)站對系統(tǒng)架構(gòu)、性能的要求都很簡單,隨著互聯(lián)網(wǎng)業(yè)務(wù)的不斷豐富,網(wǎng)站相關(guān)的技術(shù)經(jīng)過這些年的發(fā)展,已經(jīng)細分到很細的方方面面,尤其對于大型網(wǎng)站來說,所采用的技術(shù)更是涉及面非常廣,從硬件到軟件、編程語言、數(shù)據(jù)庫、WebServer、防火墻等各個領(lǐng)域都有了很高的要求,已經(jīng)不是原來簡單的html靜態(tài)網(wǎng)站所能比擬的。
大型網(wǎng)站,比如門戶網(wǎng)站。在面對大量用戶訪問、高并發(fā)請求方面,基本的解決方案集中在這樣幾個環(huán)節(jié):使用高性能的服務(wù)器、高性能的數(shù)據(jù)庫、高效率的編程語言、還有高性能的Web容器。但是除了這幾個方面,還沒法根本解決大型網(wǎng)站面臨的高負載和高并發(fā)問題。
上面提供的幾個解決思路在一定程度上也意味著更大的投入,并且這樣的解決思路具備瓶頸,沒有很好的擴展性,下面我從低成本、高性能和高擴張性的角度來說說我的一些經(jīng)驗。
1、HTML靜態(tài)化
其實大家都知道,效率最高、消耗最小的就是純靜態(tài)化的html頁面,所以我們盡可能使我們的網(wǎng)站上的頁面采用靜態(tài)頁面來實現(xiàn),這個最簡單的方法其實也是最有效的方法。但是對于大量內(nèi)容并且頻繁更新的網(wǎng)站,我們無法全部手動去挨個實現(xiàn),于是出現(xiàn)了我們常見的信息發(fā)布系統(tǒng)CMS,像我們常訪問的各個門戶站點的新聞頻道,甚至他們的其他頻道,都是通過信息發(fā)布系統(tǒng)來管理和實現(xiàn)的,信息發(fā)布系統(tǒng)可以實現(xiàn)最簡單的信息錄入自動生成靜態(tài)頁面,還能具備頻道管理、權(quán)限管理、自動抓取等功能,對于一個大型網(wǎng)站來說,擁有一套高效、可管理的CMS是必不可少的。
除了門戶和信息發(fā)布類型的網(wǎng)站,對于交互性要求很高的社區(qū)類型網(wǎng)站來說,盡可能的靜態(tài)化也是提高性能的必要手段,將社區(qū)內(nèi)的帖子、文章進行實時的靜態(tài)化,有更新的時候再重新靜態(tài)化也是大量使用的策略,像Mop的大雜燴就是使用了這樣的策略,網(wǎng)易社區(qū)等也是如此。
同時,html靜態(tài)化也是某些緩存策略使用的手段,對于系統(tǒng)中頻繁使用數(shù)據(jù)庫查詢但是內(nèi)容更新很小的應(yīng)用,可以考慮使用html靜態(tài)化來實現(xiàn),比如論壇中論壇的公用設(shè)置信息,這些信息目前的主流論壇都可以進行后臺管理并且存儲再數(shù)據(jù)庫中,這些信息其實大量被前臺程序調(diào)用,但是更新頻率很小,可以考慮將這部分內(nèi)容進行后臺更新的時候進行靜態(tài)化,這樣避免了大量的數(shù)據(jù)庫訪問請求。
2、圖片服務(wù)器分離
大家知道,對于Web服務(wù)器來說,不管是Apache、IIS還是其他容器,圖片是最消耗資源的,于是我們有必要將圖片與頁面進行分離,這是基本上大型網(wǎng)站都會采用的策略,他們都有獨立的圖片服務(wù)器,甚至很多臺圖片服務(wù)器。這樣的架構(gòu)可以降低提供頁面訪問請求的服務(wù)器系統(tǒng)壓力,并且可以保證系統(tǒng)不會因為圖片問題而崩潰,在應(yīng)用服務(wù)器和圖片服務(wù)器上,可以進行不同的配置優(yōu)化,比如apache在配置ContentType的時候可以盡量少支持,盡可能少的LoadModule,保證更高的系統(tǒng)消耗和執(zhí)行效率。
3、數(shù)據(jù)庫集群和庫表散列
大型網(wǎng)站都有復(fù)雜的.應(yīng)用,這些應(yīng)用必須使用數(shù)據(jù)庫,那么在面對大量訪問的時候,數(shù)據(jù)庫的瓶頸很快就能顯現(xiàn)出來,這時一臺數(shù)據(jù)庫將很快無法滿足應(yīng)用,于是我們需要使用數(shù)據(jù)庫集群或者庫表散列。
在數(shù)據(jù)庫集群方面,很多數(shù)據(jù)庫都有自己的解決方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是類似的方案,您使用了什么樣的DB,就參考相應(yīng)的解決方案來實施即可。
上面提到的數(shù)據(jù)庫集群由于在架構(gòu)、成本、擴張性方面都會受到所采用DB類型的限制,于是我們需要從應(yīng)用程序的角度來考慮改善系統(tǒng)架構(gòu),庫表散列是常用并且最有效的解決方案。我們在應(yīng)用程序中安裝業(yè)務(wù)和應(yīng)用或者功能模塊將數(shù)據(jù)庫進行分離,不同的模塊對應(yīng)不同的數(shù)據(jù)庫或者表,再按照一定的策略對某個頁面或者功能進行更小的數(shù)據(jù)庫散列,比如用戶表,按照用戶ID進行表散列,這樣就能夠低成本的提升系統(tǒng)的性能并且有很好的擴展性。sohu的論壇就是采用了這樣的架構(gòu),將論壇的用戶、設(shè)置、帖子等信息進行數(shù)據(jù)庫分離,然后對帖子、用戶按照板塊和ID進行散列數(shù)據(jù)庫和表,最終可以在配置文件中進行簡單的配置便能讓系統(tǒng)隨時增加一臺低成本的數(shù)據(jù)庫進來補充系統(tǒng)性能。
4、緩存
緩存一詞搞技術(shù)的都接觸過,很多地方用到緩存。網(wǎng)站架構(gòu)和網(wǎng)站開發(fā)中的緩存也是非常重要。這里先講述最基本的兩種緩存。高級和分布式的緩存在后面講述。
架構(gòu)方面的緩存,對Apache比較熟悉的人都能知道Apache提供了自己的緩存模塊,也可以使用外加的Squid模塊進行緩存,這兩種方式均可以有效的提高Apache的訪問響應(yīng)能力。
網(wǎng)站程序開發(fā)方面的緩存,Linux上提供的Memory Cache是常用的緩存接口,可以在web開發(fā)中使用,比如用Java開發(fā)的時候就可以調(diào)用MemoryCache對一些數(shù)據(jù)進行緩存和通訊共享,一些大型社區(qū)使用了這樣的架構(gòu)。另外,在使用web語言開發(fā)的時候,各種語言基本都有自己的緩存模塊和方法,PHP有Pear的Cache模塊,Java就更多了,。net不是很熟悉,相信也肯定有。
5、鏡像
鏡像是大型網(wǎng)站常采用的提高性能和數(shù)據(jù)安全性的方式,鏡像的技術(shù)可以解決不同網(wǎng)絡(luò)接入商和地域帶來的用戶訪問速度差異,比如ChinaNet和EduNet之間的差異就促使了很多網(wǎng)站在教育網(wǎng)內(nèi)搭建鏡像站點,數(shù)據(jù)進行定時更新或者實時更新。在鏡像的細節(jié)技術(shù)方面,這里不闡述太深,有很多專業(yè)的現(xiàn)成的解決架構(gòu)和產(chǎn)品可選。也有廉價的通過軟件實現(xiàn)的思路,比如Linux上的rsync等工具。
6、負載均衡
負載均衡將是大型網(wǎng)站解決高負荷訪問和大量并發(fā)請求采用的終極解決辦法。
負載均衡技術(shù)發(fā)展了多年,有很多專業(yè)的服務(wù)提供商和產(chǎn)品可以選擇,我個人接觸過一些解決方法,其中有兩個架構(gòu)可以給大家做參考。
1)硬件四層交換
第四層交換使用第三層和第四層信息包的報頭信息,根據(jù)應(yīng)用區(qū)間識別業(yè)務(wù)流,將整個區(qū)間段的業(yè)務(wù)流分配到合適的應(yīng)用服務(wù)器進行處理。 第四層交換功能就象是虛IP,指向物理服務(wù)器。它傳輸?shù)臉I(yè)務(wù)服從的協(xié)議多種多樣,有HTTP、FTP、NFS、Te。net或其他協(xié)議。這些業(yè)務(wù)在物理服務(wù)器基礎(chǔ)上,需要復(fù)雜的載量平衡算法。在IP世界,業(yè)務(wù)類型由終端TCP或UDP端口地址來決定,在第四層交換中的應(yīng)用區(qū)間則由源端和終端IP地址、TCP和UDP端口共同決定。
在硬件四層交換產(chǎn)品領(lǐng)域,有一些知名的產(chǎn)品可以選擇,比如Alteon、F5等,這些產(chǎn)品很昂貴,但是物有所值,能夠提供非常優(yōu)秀的性能和很靈活的管理能力。Yahoo中國當初接近20xx臺服務(wù)器使用了三四臺Alteon就搞定了。
2)軟件四層交換
大家知道了硬件四層交換機的原理后,基于OSI模型來實現(xiàn)的軟件四層交換也就應(yīng)運而生,這樣的解決方案實現(xiàn)的原理一致,不過性能稍差。但是滿足一定量的壓力還是游刃有余的,有人說軟件實現(xiàn)方式其實更靈活,處理能力完全看你配置的熟悉能力。
軟件四層交換我們可以使用Linux上常用的LVS來解決,LVS就是Linux Virtual Server,他提供了基于心跳線heartbeat的實時災(zāi)難應(yīng)對解決方案,提高系統(tǒng)的魯棒性,同時可供了靈活的虛擬VIP配置和管理功能,可以同時滿足多種應(yīng)用需求,這對于分布式的系統(tǒng)來說必不可少。
一個典型的使用負載均衡的策略就是,在軟件或者硬件四層交換的基礎(chǔ)上搭建squid集群,這種思路在很多大型網(wǎng)站包括搜索引擎上被采用,這樣的架構(gòu)低成本、高性能還有很強的擴張性,隨時往架構(gòu)里面增減節(jié)點都非常容易。這樣的架構(gòu)我準備空了專門詳細整理一下和大家探討。
解決方案 篇7
每到新學期,許多孩子出現(xiàn)“開學綜合癥”的表現(xiàn),比如厭學、焦慮、上課走神、情緒不穩(wěn)定等,嚴重的還出現(xiàn)失眠、嗜睡及一些查無明確原因的頭暈、惡心、腹痛、小便失禁、疲倦、食欲不振等病癥。這些問題都讓很多家長困惑不已。
“開學綜合癥”主要集中表現(xiàn)在四類孩子身上:
其一,適應(yīng)新環(huán)境能力較弱,比如幼升小,小升初,初升高的孩子;
其二,經(jīng)常被老師批評的孩子,比如特別頑皮的,有不良習慣的孩子;
其三,學習成績不好的孩子;
其四,過于追求完美的孩子,比如三好生。
“開學綜合癥”輕則體現(xiàn)在心理上,重則體現(xiàn)在生理上,這就要求我們的家長細心對待。以下是專家給我們的一些建議。
1、如何解決心理上的“開學綜合癥”?
首先,家長應(yīng)該幫助孩子樹立信心,這樣可以緩解孩子內(nèi)心的脆弱和不安,建立自己比別人強的信念。這樣就能對學習抱有更積極的態(tài)度,更能適應(yīng)新環(huán)境。
其次,不要有過高的期待,不要用理想化,完美化的眼光去期待新的環(huán)境。要讓理想和現(xiàn)實處于平衡的狀態(tài)。
其三,培養(yǎng)獨立的自我意識。比如,要多和同學在一起。這樣你才不會被孤獨感所包圍,不會被懷舊情緒所左右。
要常與老師、父母溝通、交流。只有在相互溝通、交流的基礎(chǔ)上,大家才能相互理解、相互諒解,也能為你營造良好的學習生活環(huán)境;培養(yǎng)更多的興趣愛好。這樣不僅會使你結(jié)交到更多的`朋友,更會使你在興趣愛好中暫時了卻對家的思念。
2、如何解決生理上的“開學綜合癥”?
生理上出現(xiàn)的“開學綜合癥”癥狀就比較嚴重了。除了從精神上給予引導和舒壓,家長還應(yīng)多陪伴孩子,或者去專業(yè)的教育咨詢機構(gòu)幫助孩子共同解決這些癥狀。專業(yè)的教育咨詢機構(gòu),既能用專業(yè)的方法幫助孩子解決“開學綜合癥”的問題,同時,也能彌補孩子學業(yè)問題,可謂一舉兩得。
【解決方案】相關(guān)文章:
解決方案05-20
解決方案(實用)05-27
解決方案優(yōu)秀05-12
行業(yè)解決方案08-16
erp解決方案04-22
oa解決方案05-31
產(chǎn)品解決方案11-19
招聘解決方案02-14
解決方案(精)05-23
解決方案【優(yōu)秀】08-25