deprecated

The method is deprecated.如果這個方法過時,怎么知道最新的方法是什么?F3進入該類,查看對應的可用方法即可 。

Java中如何正確而優雅的終止運行中的線程Java中終止線程的方式主要有三種:1、使用stop()方法,已被棄用 。原因是:stop()是立即終止,會導致一些數據被到處理一部分就會被終止,而用戶并不知道哪些數據被處理,哪些沒有被處理,產生了不完整的“殘疾”數據,不符合完整性 , 所以被廢棄 。So, forget it!2、使用volatile標志位看一個簡單的例子:首先,實現一個Runnable接口,在其中定義volatile標志位,在run()方法中使用標志位控制程序運行public class MyRunnable implements Runnable {//定義退出標志,true會一直執行 , false會退出循環//使用volatile目的是保證可見性,一處修改了標志,處處都要去主存讀取新的值,而不是使用緩存public volatile boolean flag = true;public void run() {System.out.println("第" + Thread.currentThread().getName() + "個線程創建");try {Thread.sleep(1000L);} catch (InterruptedException e) {e.printStackTrace();}//退出標志生效位置while (flag) {}System.out.println("第" + Thread.currentThread().getName() + "個線程終止");}}然后,在main()方法中創建線程 , 在合適的時候,修改標志位,終止運行中的線程 。public class TreadTest {public static void main(String[] arg) throws InterruptedException {MyRunnable runnable = new MyRunnable();//創建3個線程for (int i = 1; i <= 3; i++) {Thread thread = new Thread(runnable, i + "");thread.start();}//線程休眠Thread.sleep(2000L);System.out.println("——————————————————————————");//修改退出標志 , 使線程終止runnable.flag = false;}}最后,運行結果,如下:第1個線程創建第2個線程創建第3個線程創建--------------------------第2個線程終止第1個線程終止第3個線程終止3、使用interrupt()中斷的方式,注意使用interrupt()方法中斷正在運行中的線程只會修改中斷狀態位,可以通過isInterrupted()判斷 。如果使用interrupt()方法中斷阻塞中的線程,那么就會拋出InterruptedException異常,可以通過catch捕獲異常 , 然后進行處理后終止線程 。有些情況 , 我們不能判斷線程的狀態,所以使用interrupt()方法時一定要慎重考慮 。
ajax同步警告ajax出現的同步警告是無法避免的 , 其實是造成主線程鎖死主要還是XMLHttpRequest沒有設置超時處理 。jquery ajax異步的執行方案:1、添加async:false.即修改為同步,代碼如下:function getAjaxReturn() { var bol=false; $.ajax({ type:"POST", async:false, http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx", data:"username="+vusername.value, success:function(msg){ if(msg=="ok"){ showtipex(vusername.id,"該用戶名可以使用",false) // return true; bol=true; } else { showtipex(vusername.id,"該用戶已被注冊",false); vusername.className="bigwrong"; //return false; } } }); return bol; } 2、 通過傳入一個函數解決這個問題,代碼:function getAjaxReturn(success_function,fail_function) { var bol=false; $.ajax({ type:"POST", http://www.cnblogs.com/wlmemail/admin/%22ajax/userexist.aspx", data:"username="+vusername.value, success:function(msg){ if(msg=="ok"){ showtipex(vusername.id,"該用戶名可以使用",false) success_function(msg); } else { showtipex(vusername.id,"該用戶已被注冊",false); vusername.className="bigwrong"; fail_function(msg); //return false; } } }); function success_function(info) { //do what you want do alert(info); } funciont fail_function(info) { //do what you want do alert(info); }
java中resume() stop()方法已經過時用什么方法代替呢stop

@Deprecated
public final void stop()

已過時 。該方法具有固有的不安全性 。用 Thread.stop 來終止線程將釋放它已經鎖定的所有監視器(作為沿堆棧向上傳播的未檢查 ThreadDeath 異常的一個自然后果) 。如果以前受這些監視器保護的任何對象都處于一種不一致的狀態,則損壞的對象將對其他線程可見,這有可能導致任意的行為 。stop 的許多使用都應由只修改某些變量以指示目標線程應該停止運行的代碼來取代 。目標線程應定期檢查該變量,并且如果該變量指示它要停止運行 , 則從其運行方法依次返回 。如果目標線程等待很長時間(例如基于一個條件變量),則應使用 interrupt 方法來中斷該等待 。有關更多信息,請參閱《為何不贊成使用 Thread.stop、Thread.suspend 和 Thread.resume?》 。

強迫線程停止執行 。

如果安裝了安全管理器,則以 this 作為其參數調用 checkAccess 方法 。這可能引發 SecurityException(在當前線程中) 。

如果該線程不同于當前線程(即當前線程試圖終止除它本身以外的某一線程),則安全管理器的 checkPermission 方法(帶有 RuntimePermission("stopThread") 參數)也會被調用 。這會再次拋出 SecurityException(在當前線程中) 。

無論該線程在做些什么,它所代表的線程都被迫異常停止,并拋出一個新創建的 ThreadDeath 對象,作為異常 。

停止一個尚未啟動的線程是允許的 。如果最后啟動了該線程,它會立即終止 。

應用程序通常不應試圖捕獲 ThreadDeath , 除非它必須執行某些異常的清除操作(注意,拋出 ThreadDeath 將導致 try 語句的 finally 子句在線程正式終止前執行) 。如果 catch 子句捕獲了一個 ThreadDeath 對象,則重新拋出該對象很重要,因為這樣該線程才會真正終止 。

對其他未捕獲的異常作出反應的頂級錯誤處理程序不會打印輸出消息,或者另外通知應用程序未捕獲到的異常是否為 ThreadDeath 的一個實例 。

拋出:
SecurityException - 如果當前線程不能修改該線程 。
另請參見:
interrupt(), checkAccess(), run(), start(), ThreadDeath, ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable), SecurityManager.checkAccess(Thread), SecurityManager.checkPermission(java.security.Permission)

關閉線程,最好不要用stop()或destory(),那要用什么方法呢?用sleep() 使當前線程停止運行,進入阻塞態 ??梢灾付ㄐ菝邥r間,一旦指定時間結束后,該線程也不一定會立即被喚醒 。通常是一些別的因素,比如 系統時間的準確度不高或者別的線程干擾都有可能影響這個線程是繼續阻塞 還是 進入運行狀態 。
wait()也可以 和sleep()類似 不過是被喚醒或者等夠了指定的時間就進入運行態 不指定時間就永遠等待

deprecated是什么意思checks for usages of deprecated classes and methods in xml在XML的過時的類和方法使用支票checks for usages of deprecated classes and methods in xml在XML的過時的類和方法使用支票

C語言的定義問題,關于__attribute__的用法,望大家幫忙解答便于記憶和閱讀程序 , GPIO_T是代表io口時鐘的結構體,都是結構體,一樣的標識,不利于閱讀

__attribute__ ((__packed__)); 怎么用?1. __attribute__是GNUC對標準C語法的擴展,是GNU C的一大特色,可以用于設置函數的屬性 , 變量的屬性 , 類型的屬性

packed屬性:使用該屬性可以使得變量或者結構體成員使用最小的對齊方式,即對變量是一字節對齊,對域(field)是位對齊 。
使用該屬性對 struct或者union類型進行定義,設定其類型的每一個變量的內存約束 。當用在 enum類型定義時 , 暗示了應該使用最小完整的類型。
下面的例子中,x成員變量 使用了該屬性,則其值將緊放置在a的后面:
structtest
{
chara;
intx[2] __attribute__ ((packed));
};

像下面的結構體,結構體的長度,就是各個變量長度的和
struct student
{
char name[7];
uint32_t id;
char subject[5];
} __attribute__ ((packed));

下面的 例子中 , my-packed-struct類型的變量數組中的值將會緊緊的靠在一起,但內部 的成員變量s不會被“pack”,如果希望內部的成員變量也被packed,my- unpacked-struct也需要使用packed進行相應的約束 。
struct my_packed_struct
{
charc;
inti;
structmy_unpacked_structs;
} __attribute__ ( (__packed__) );


2. __packed是進行一字節對齊 。使用_packed一般會以降低運行性能為代價,由于大多數cpu處理數據在合適的字節邊界數的情況下會更有效,packed的使用會破壞這種自然的邊界數 。

typedef struct1
{
char x;
int y;
}struct1;
typedef __packed struct2
{
char x;
int y;
}struct2;在32位的ARM SDT編譯器中
sizeof(struct1)值為8
sizeof(struct2)值為5;

extern volatile unsigned int WREG0 __attribute__((__sfr__,__deprecated__,__unsafe__))這個問題都這么久了,都沒人答 。我剛剛也遇到了這個問題 , 我用的是pic24fj128gXXX的,這好像是MPLAB自己帶的針對于它這款芯片特定的頭文件,這個頭文件中有好些這種定義 。具體的我也不太清楚,貌似在這個系列的單片機上開發 , 這個頭文件需要了解,也不是非得弄得特別清楚 。我差了些資料 , 就知道第一個是說明WREG0,__attribute__(sfr)說明了這個變量是地址,因為在后邊的我的開發代碼中沒有涉及到寄存器的地址,可能是它自己的編譯器就這么編譯解釋我們的代碼 , 所以不用太較真 。說了這么多 , 可能你現在已經解決了,我也只是說一下我的經驗,好讓后來的人搜到這個問題之后會有個大致的了解 。就這樣了,祝你好運,節節登高!

-Wno-deprecated-declarations編譯選項什么意思?這個編譯選項是用來關閉Xcode中關于廢棄API的警告
比如 你代碼中使用了某個已經被廢棄的API 這是Xcode會出現一個警告
這時你就可以通過這個編譯選項 關閉掉這個警告 。

java中的src文件和jre System library都是什么啊src是源碼目錄,jre是運行環境 , library是java運行時需要的類庫

eclipse使用中碰到一個疑惑因為每個開發工具所使用的jdk不一定相同~所以要選擇你說那個路徑(環境變量)~也就是選擇jdk以免版本混淆造成沖突(比如Oracle安裝時候也會自動安裝上一個跟自己匹配的jdk版本)
后面那個提示應該就是環境變量配置不正確造成的 ,再者就是沒有引入需要用的jar包 。

android直接運行java文件main方法,報錯1)右鍵入口類(含有Main方法的)==>Run Configurations==>雙擊(Java Application)==>New==>(2)在標簽Main里選好相應的ProjectName和要運行ClassName,(3)選標簽ClassPath中的Bootstrap Entries ,再從右邊點Advance==>Add Library==>JRE System Library,完成,然后將JRE System Library 點中再點Up按鈕 , OK了

eclipse中啟動tomcat的問題我之前是兩個項目在一起做(一個tomcat5,一個tomcat6),要經常要版本轉換
這個要把原來在eclipse環境中window--屬性--……配置的Tomcat6的版本換為tomcat7 , 再選擇tomcat7的路徑 。
eclipse6.0->windows->Preference->myeclips->server->Tomcat選擇版本->enable 接下來把Tomcat和JDK的路徑配置下(這個的話不改好像沒不會報錯,但是還有另一個路徑我忘了,也是改版本,但它的選擇不是以單選的形式,是以下拉的形式,就是你當前用的哪個版本就選哪個版本了


myeclipse 創建怎么沒有src 就一個JRE 急 !! 在線等 。改成java視圖就可以了

Java中如何通過代碼知道某個方法或某個類是否在聲明時被標注為deprecated?給你一個主函數參考一下吧,其實非常的簡單,這個方法是JAVA TIGER的新特性

public static void main(String[] args) {
try {
System.out.println(String.class.isAnnotationPresent(Deprecated.class));
System.out.println(String.class.getMethod("getBytes",int.class,int.class, byte[].class,int.class).isAnnotationPresent(Deprecated.class));

} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}

例子用的是String類做的示范 ??梢宰杂蓳Q成其它類 。
-------------------------------------------------------
這個有幫助嗎
public static void main(String[] args) {
try {
System.out.println(String.class.getDeclaredMethods().length);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
-----------------------------------------------------
5.0的JDK生成1.4版本的CLASS字節碼留下了@deprecated , 但是其它的JAVADOC都被丟掉了 。
在不提供這種反射機制的1.4時代,我們都非常懷疑讀那個@deprecated的可能性 。也許你可以試試用讀字節流的方法判斷@deprecated是否在關注的地方出現 。

如何正確地使用Java的@deprecated 標注起到注釋說明的作用

java的類或方法中通常在方法上或類上注釋的地方有個@,是什么含義?@呢是Java1.5之后引入的新功能 。
主要作用:
1、起到注釋說明的作用,如@deprecated 表示本方法為過時的方法 , 建議其他開發者不要使用;

2、在Java設計模式中使用(設計框架),減小程序耦合度,如在Spring中,@Inject表示,從配置文件中讀取初始化變量 , 并初始化該對象或值 。如在EJB3中,使用@Table(name="TABLE")表示,本與本Bean相關聯的數據庫表名稱為TABLE;

3、其他 , 開發人員可以自定義標注,在調用中使用getAnnotation();(可能拼寫有誤),從而提高代碼的擴展性

如何正確地使用Java的@deprecated 標注如何正確地使用Java的@deprecated 標注
Java注釋中的@deprecated用于在用Javadoc工具生成文檔的時候 , 標注此類/接口、方法、字段已經被廢止 。

java注釋的java注解Annotation(注解)是JDK5.0及以后版本引入的 。它可以用于創建文檔 , 跟蹤代碼中的依賴性,甚至執行基本編譯時檢查 。注解是以‘@注解名’在代碼中存在的,根據注解參數的個數,我們可以將注解分為:標記注解、單值注解、完整注解三類 。它們都不會直接影響到程序的語義,只是作為注解(標識)存在,我們可以通過反射機制編程實現對這些元數據的訪問 。另外,你可以在編譯時選擇代碼里的注解是否只存在于源代碼級,或者它也能在class文件中出現 。元數據的作用如果要對于元數據的作用進行分類,大致可分為三類:編寫文檔:通過代碼里標識的元數據生成文檔 。代碼分析:通過代碼里標識的元數據對代碼進行分析 。編譯檢查:通過代碼里標識的元數據讓編譯器能實現基本的編譯檢查 @OverrideJava代碼packagecom.iwtxokhtd.annotation;/*** 測試Override注解*@authorAdministrator**/publicclassOverrideDemoTest {//@OverridepublicString tostring(){return測試注解;}}@Deprecated的作用是對不應該在使用的方法添加注解,當編程人員使用這些方法時,將會在編譯時顯示提示信息,它與javadoc里的@deprecated標記有相同的功能 , 準確的說,它還不如javadoc @deprecated,因為它不支持參數,使用@Deprecated的示例代碼示例如下:Java代碼packagecom.iwtxokhtd.annotation;/*** 測試Deprecated注解*@authorAdministrator**/publicclassDeprecatedDemoTest {publicstaticvoidmain(String[] args) {//使用DeprecatedClass里聲明被過時的方法DeprecatedClass.DeprecatedMethod();}}classDeprecatedClass{@DeprecatedpublicstaticvoidDeprecatedMethod() {}}@SuppressWarnings,其參數有:deprecation,使用了過時的類或方法時的警告unchecked , 執行了未檢查的轉換時的警告fallthrough , 當 Switch 程序塊直接通往下一種情況而沒有 Break 時的警告path,在類路徑、源文件路徑等中有不存在的路徑時的警告serial,當在可序列化的類上缺少serialVersionUID 定義時的警告finally,任何 finally 子句不能正常完成時的警告all , 關于以上所有情況的警告 packagecom.iwtxokhtd.annotation;importjava.util.ArrayList;importjava.util.List;publicclassSuppressWarningsDemoTest {publicstaticListlist=newArrayList();@SuppressWarnings(unchecked)publicvoidadd(String data){list.add(data);
ecshop中Deprecated: preg_replace(): 報錯怎么辦?------解決方案--------------------
preg_replace_callback($pattern, function($r) { return 與$r相關的值; }, $subject)

你應該給出 cls_template.php 第496行的代碼
這樣才能給你準確的寫法
------解決方案--------------------
那就是
return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);
如果還有其他的地方報這樣的錯,就參照這個改.

你試試吧!

ecshop安裝后頁面出現代碼這是怎么回事???登錄ftp , 找到根目錄下htdocs,將data下的config.php和install.lock刪除 , 重新安裝一下ecshop系統 , 然后進入后臺管理--數據庫管理--數據備份 , 選擇恢復備份,清除緩存即可 。

ecshop里關于使用了高版本php產生的一個問題 求助$out = "<?php \n" . '$k = ' . preg_replace_callback("/(\'\\$[^,]+)/e" , "stripslashes(trim('\\1','\''));", var_export($t, true)) . ";\n";
直接改成這樣試試

本地安裝ecshop提示錯誤!怎么解決PHP5.5以后含有/e 的preg_replace被preg_replace_callback替代了

function eregi is deprecated in報錯怎么解決php版本升級后,運行項目 。報Function eregi() is deprecated錯誤!

在項目里找到ereg()或者eregi()使用此函數的位置;

查找ereg()或者eregi()函數 , 然后全部替換為preg_match()函數 。

刷新當前頁面,問題解決?。?

打開PHPmyadmin出現這個錯誤要在IIS6上使用高版本PHP,必須安裝fastCGI擴展
Microsoft FastCGI Extension for IIS 5.1 and 6.0
然后設定一下php.ini中的CGI and FastCGI參數:
fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect =0
cgi.rfc2616_headers=1
望采納 Thx

Function eregi() is deprecated in /opt/lampp/htdocs/lib.php on line 13eregi改preg_match

給服務器上傳了一個PHP源碼 數據庫都鏈接上了,但是有一些報錯的地方,請高手幫忙看下這個是版本的問題,php5.3以上的版本,已經棄用ereg_replace()和eregi()函數了,換成preg_replace() 和preg_match() 。你可以換函數,或者在這些函數前面加@ 。因為這些都是提醒級錯誤 。
例如:@ereg_replace/@eregi

php網站安裝好以后出現這種情況PHP5.3x后的版本不再支持ereg和eregi
ereg()使用 preg_match() 替代
ereg_replace()使用 preg_replace() 替代
eregi()使用 preg_match() 配合 ‘i’ 修正符替代
eregi_replace()使用 preg_replace() 配合 ‘i’ 修正符替代

用Eclipse編Java提示The method show() from the type Window is deprecated,并且窗口沒有出現這個方法已經不建議被使用了,使用另外的方式去實現 。

java中 The method getHours() from the type Date is deprecated 代碼怎么改?過時的方法 , 不影響 , 可以繼續使用,可能會在未來版本刪除 。如果看著不爽,可以在其方法上面加上@SuppressWarnings("deprecation")如:public class $ {@SuppressWarnings("deprecation")public static void main(String[] args) {Date now = new Date();System.out.println(now.getSeconds());}}

怎么樣解決The method getYear() from the type Date is deprecated【deprecated】那些方法都不推薦使用了,所以顯示黃線 , 這樣可以實現你想要的,你看下吧 , 希望對你有幫助

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
int currenYear = calendar.get(Calendar.YEAR);
calendar.set(Calendar.YEAR, currenYear + 2);
java.sql.Date newDate = new java.sql.Date(calendar.getTimeInMillis());

線程stop的時分,顯示The method stop is deprecated會有什么后果線程stop的時候,顯示The method stop() is deprecated會有什么后果?如下代碼所示,在用stop結束線程時,stop被橫線劃掉了 。而且報這個警告The method stop() from the type Thread is deprecated 。會對線程的執行有影響嗎?Java codetran_input = new Thread(new ActTranIn()); tran_input.start(); /**執行SSLSocket接受數據的代碼 。。。省略**/ tran_input.stop(); class ActTranIn implements Runnable { public void run() { /**執行SSLSocket發送數據的代碼 。。。省略**/ } }會執行的 你可以不用管警告 Thread.stop()有bug的,有時候拋出運行時異常 。所以不見意用這個方法 。

the type query is deprecated怎么解決出這個提示的地方有寫解決辦法呀. android.support.v7.app.ActionBarActivity is deprecated; use AppCompatActivity instead 意思是 ActionBarActivity 在最新版本的support v7包里面已經不建議使用,建議用 AppCompatActivity

如何正確地使用Java的@deprecated 標注Rule #1: do Javadoc how not to
每當你棄用某方法時,創建JavaDoc告訴其他程序員如何不再使用這個方法 。不要只說“這個方法廢棄了,不要用它” 。因為這就是廢棄標注和JavaDoc中@deprecated的字面意義,完全沒有必要再重復一遍 。Java開發人員作為目標受眾,都知道deprecation的意思 。
命名新的方法,取代舊有的 。(使用@link標注!)這可能還不夠,新的方法對應的文檔將解釋如何使用它 。不要在JavaDoc中重復(其字面意義),文檔也應遵從DRY原則 。另一方面你可能想要描述怎樣替換掉舊方法的調用 , 你可以就重構的細節給出提示 。
Rule #2: do not Javadoc how to
移除過時的JavaDoc文檔 。有些人可能爭辯:維護遺留代碼的用戶可能還會需要這些文檔 。事實上,他們使用的是舊版本庫中的舊版本方法 。舊版本的文檔仍舊存在那里,像被刻在石頭上(更確切的說是刻在資源倉庫的某個版本上) 。含有被廢棄掉的方法的實際版本不應包含過時的描述文檔,那會鼓勵程序員去繼續使用 。對于廢棄的方法 , 只有一種用法:不去用 。JavaDoc應該被實時描述,如同rule#1所述 。
Rule #3: 不要在JavaDoc中解釋
不要在JavaDoc中解釋為什么方法被廢棄了 。你是一個可靠的的開發,這是你的決定,你的選擇,其他人只能忍著 。如果愿意,可以寫一篇博客記錄這次調整的決策背景 。這可能有幫助,但它不應被寫在JavaDoc中 。
JavaDoc的Deprecated API專用來講解如何不再使用 。
重點是如何(how) 。而不是“為什么不再使用它(why)” 。
Rule #4: do deprecate
如果你覺得需要棄用一方法 , 那就去做吧!如果你害怕你的用戶,或不想因你廢棄掉一些方法導致你用戶體驗更加痛苦,這個決定將讓你自己痛苦 。盡你所能去讓API維持長久的穩定 。但如果有需要被廢棄的:立刻扔掉它 。不要因“為何當初設計API時沒有考慮到未來的變動”而感到愧疚 。沒有人能完美的預見未來 。畢竟 , 如果你知道未來,生活就無趣了 。

java代碼疑問 , eclips中講代碼用刪除線劃掉并提示deprecated是什么情況?您好,提問者:意思是說此方法已過時 , 過時的原因就是有API的類替代了次方法 。提示:可以正常使用的,就是一個提示而已 。
為什么JAVA項目代碼中在一個類中只對方法聲明,在另一個類中才定義方法,這么做有什么好處么你說的是接口吧,接口就像生活中的協議一樣,比如定義人 , 這個接口,然后里面聲明了人,有名字,兩只手 , 兩只腳,然后所有的實現類都必須實現這些方法 。也就是說只要屬于人(這個接口)都必須有名字,兩只手,兩只腳 。
這就像一種規范一樣 , 之后所有的實現類都可以有自己的擴展,但是必須實現人這個幾口類聲明的方法 。
在你以后調用的時候 , 可以直接調用接口,而不必關心實現類的具體實現 。比如數據庫的增刪改查 , 你定義了接口,然后由不同的實現類去實現 。你在servlet 或者aciton中調用的時候直接調用接口 , 然后你可以用不同的實現類實現不同數據庫的增刪改查等方法 。
這個時候你的系統就可以實現不同數據庫的切換了 。

對了接口還有一個好處就是多繼承 。就是一個實現類可以繼承多個接口 。這樣你的實現類又可以完成多個協議(接口聲明)了 。


---------------------
上面是我個人的一些理解,我看到樓上的說的也不錯 。
希望我的理解可以幫到樓主 。
ps.建議樓主看一下專業的書籍 。網上的回答畢竟還是不系統的 。

Java 代碼中 @ 符號是什么意思?annotation 。

Annotation,是Java5的新特性,下面是Sun的Tutorial的描述,因為是英文,這里我翻譯下,希望能夠比較清晰的描述一下Annotation的語法以及思想 。Annotation:Release 5.0 of the JDK introduced a metadata facility called annotations. Annotations provide data about a program that is not part of the program, such as naming the author of a piece of code or instructing the compiler to suppress specific errors. An annotation has no effect on how the code performs. Annotations use the form @annotation and may be applied to a program's declarations: its classes, fields, methods, and so on. The annotation appears first and often (by convention) on its own line, and may include optional arguments: JDK5引入了Metedata(元數據)很容易的就能夠調用Annotations.Annotations提供一些本來不屬于程序的數據,比如:一段代碼的作者或者告訴編譯器禁止一些特殊的錯誤 。An annotation 對代碼的執行沒有什么影響 。Annotations使用@annotation的形勢應用于代碼:類(class),屬性(field),方法(method)等等 。一個Annotation出現在上面提到的開始位置,而且一般只有一行,也可以包含有任意的參數 。@Author("MyName")class myClass() { }
or @SuppressWarnings("unchecked")void MyMethod() { }
Defining your own annotation is an advanced technique that won't be described here, but there are three built-in annotations that every Java programmer should know: @Deprecated, @Override, and @SuppressWarnings. The following example illustrates all three annotation types, applied to methods:
定義自己的Annotation是一個比較高級的技巧 , 這里我們不做討論,這里我們僅僅討論每一個Java programer都應該知道的內置的annotations:@Deprecated, @Override, and @SuppressWarnings 。下面的程序闡述了這三種annotation如何應用于methods 。import java.util.List;
class Food {}
class Hay extends Food {}
class Animal {
Food getPreferredFood() {
return null; } /** * @deprecated document why the method was deprecated */
@Deprecated
static void deprecatedMethod() { }
}
class Horse extends Animal {
Horse() {
return;
}
@Override
Hay getPreferredFood() {
return new Hay();
}
@SuppressWarnings("deprecation")
void useDeprecatedMethod() {
Animal.deprecateMethod(); //deprecation warning - suppressed }}
}
}
@DeprecatedThe @Deprecated annotation indicates that the marked method should no longer be used. The compiler generates a warning whenever a program uses a deprecated method, class, or variable. When an element is deprecated, it should be documented using the corresponding @deprecated tag, as shown in the preceding example. Notice that the tag starts with a lowercase "d" and the annotation starts with an uppercase "D". In general, you should avoid using deprecated methods — consult the documentation to see what to use instead.
@Deprecated@Deprecated annotation標注一個method不再被使用 。編譯器在一個program(程序?)使用了不贊成的方法,類,變量的時候會產生警告(warning) 。如果一個元素(element:method, class, or variable)不贊成被使用 , 應該像前面的例子里使用相應的@deprecated 標簽,并且注意標簽的首字母是小寫的"d",而annotation時大寫的"D" 。一般情況下,我們應該避免使用不贊成使用的方法(deprecated methods),而應該考慮替代的方法 。
@OverrideThe @Override annotation informs the compiler that the element is meant to override an element declared in a superclass. In the preceding example, the override annotation is used to indicate that the getPreferredFood method in the Horse class overrides the same method in the Animal class. If a method marked with @Override fails to override a method in one of its superclasses, the compiler generates an error. While it's not required to use this annotation when overriding a method, it can be useful to call the fact out explicitly, especially when the method returns a subtype of the return type of the overridden method. This practice, called covariant return types, is used in the previous example: Animal.getPreferredFood returns a Food instance. Horse.getPreferredFood (Horse is a subclass of Animal) returns an instance of Hay (a subclass of Food). For more information, see Overriding and Hiding Methods.
@Override@Override annotation 告訴編譯器當前元素是重寫(override)自父類的一個元素 。在前面的例子中 , override annotation用來說明Horse類中的getPreferredFood這個方法重寫(override)自Animal類中相同的方法 。如果一個方法被標注了@Override,但是其父類中沒有這個方法時,編譯器將會報錯 。但是并不是說我們一定要使用這個annotation,但是它能夠很明顯的給出實際行為,尤其是在方法返回一個被重寫的方法返回類型的子類型的時候 。上面的例子中,Animal.getPreferredFood 返回一個 Food實例 , Horse.getPreferredFood 返回一個Hay實例,這里Horse是Animal的子類,Hay是Food的子類 。
@SuppressWarningsThe @SuppressWarnings annotation tells the compiler to suppress specific warnings that it would otherwise generate. In the previous example, the useDeprecatedMethod calls a deprecated method of Animal. Normally, the compiler generates a warning but, in this case, it is suppressed. Every compiler warning belongs to a category. The Java Language Specification lists two categories: "deprecation" and "unchecked". The "unchecked" warning can occur when interfacing with legacy code written before the advent of generics. To suppress more than one category of warnings, use the following syntax: @SuppressWarnings@SuppressWarnings annotation 告訴編譯器禁止別的元素產生的特殊的警告(warnings),在前面的例子里,useDeprecatedMethod調用了Animal的不贊成使用的一個方法 。一般情況下,編譯器會給出一個警告(warning),但是在這種情況下,不會產生這個警告,也就是說被suppress 。每個編譯器的警告都屬于一個類型 。Java Language Specification列出了兩種類型:"deprecation" 和 "unchecked" 。"unchecked" warning 發生在使用非generic的舊代碼交互的generic collection類時 。為了禁止不止一種的警告時,使用下面的語法:@SuppressWarnings({"unchecked", "deprecation"})

如何使php頁面中不再出現NOTICE和DEPRECATED的錯誤提示<?php
//文件頭部設置
error_reporting(E_ALL^E_NOTICE);
?>
//或者在php.ini配置文件中修改:
error_reporting=E_ALL & ~E_NOTICE

php報錯: Deprecated: preg_replace(): The /e modifier is deprecated...這個錯誤是這樣的情況,我們來一起分析下:從錯誤的信息來看,貌似說是用了不推薦的函數,也就是過時的函數,可是事實是這樣嗎?為了一探究竟,我查看了PHP手冊的preg_replace()函數介紹,并沒有說這個函數過時了或不推薦了,那么,問題出在哪了呢?繼續往下看,結果在手冊中看到這樣的消息:錯誤/異常當傳入 "\e" 修飾符的時候,會產生一個 E_DEPRECATED 級別的錯誤 。好像明白點了 , 是因為用了“\e”修飾符,那之前使用為什么沒有出錯呢?繼續往下看,看到版本更新 , 一下恍然大悟,原來如此:版本說明5.5.0/e 修飾符已經被棄用了 。使用 preg_replace_callback() 代替 。參見文檔中 PREG_REPLACE_EVAL 關于安全風險的更多信息這下問題很清楚了,5.5.0以后的版本,/e的參數被廢棄了,也就是不推薦了,官方建議使用preg_replace_callback()函數代替 。廢話有點多了,好,下面進入正題 。好了,問題找到了 , 那就看看如何解決,官方推薦使用preg_replace_callback(),那還客氣啥 , 用就是了 ??墒牵瑔栴}又來了,怎么用呢?繼續看手冊,看preg_replace_callback()的手冊,說的很明白 。其實這個函數和preg_replace()唯一的區別就是 , preg_replace()將匹配到的串直接替換,而preg_replace_callback()是將匹配到的串帶入到回調函數中做處理后然后替換,就是這么任性,靈活度一下加大了,但是效率肯定不如preg_replace(),所以,如果僅僅是簡單替換,還是用preg_replace()的好 , 如果要對匹配到的串進行特殊處理,那就非preg_replace_callback()莫屬了,親!好了,就到這里了,為了升級知道賬號,所以廢話有點多了 。。。。。望采納啊 。
struts升級到2.3.14.2版本 報ActionContextCleanUp <<< is deprecated! Please use the new filters警告更改web.xml文件:struts2Filterorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterfilter-class處,改了就好了 。
PHP中如何開啟錯誤提示輸出?開啟步驟如下:
1. 打開php.ini文件 。
以ubuntu為例 , 這個文件在: /etc/php5/apache2 目錄下為例 。
2. 搜索并修改下行,把Off值改成On
display_errors = Off
3. 搜索下行
error_reporting = E_ALL & ~E_NOTICE
或者搜索:
error_reporting = E_ALL & ~E_DEPRECATED
修改為
error_reporting = E_ALL | E_STRICT
4. 修改Apache的 httpd.conf,
以Ubuntu 為例,這個文件在:/etc/apache2/ 目錄下 , 這是一個空白文件 。
添加以下兩行:
php_flag display_errors on
php_value error_reporting 2039
5. 重啟Apache,就OK了 。
重啟命令: :sudo /etc/init.d/apache2 restart.

求助Deprecated,關于php的具體代碼如下:<?php$ch = curl_init();$timeout = 5;curl_setopt ($ch, CURLOPT_URL, '');curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$file_contents = curl_exec($ch);curl_close($ch);echo $file_contents;?>​PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法 。它可以比CGI或者Perl更快速地執行動態網頁 。用PHP做出的動態頁面與其他的編程語言相比 , PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行 , 執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯后代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快 。

新手求助PHP的一個簡單問題PHP Deprecated:Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/ming.ini on line 1 in Unknown on line 0
原因:你的配置文件ming.ini中配置有問題:提示的意思是說你這個文件中的注釋不能用#開頭 , 這種注釋方式已經過時了··,所以你要檢查這個ini文件了,另外,如果我記得的沒錯的話 , ini格式的文件的注釋應該是";"分號開頭的 。

PHP Notice:Use of undefined constant myBook - assumed 'myBook' in /var/www/temp.php on line 19
PHP Stack trace:
PHP1. {main}() /var/www/temp.php:0
這個是應該你在調用的時候變量符號丟掉了,PHP中的變量的調用需要用變量符號$:
而且,在PHP中類對象訪問方法是用->的方式訪問 , 所以做如下更改:
$myBook = new book ;
myBook.set_price(80) ;// -> 應該是$myBook->set_price(80) ;
myBook.set_title("我的Book") ; // -> 應該是$myBook->set_title("我的Book") ;
myBook.get_price ( ) ; //->應該是 $myBook->get_price ( ) ;
myBook.get_title ( ) ; // ->應該是 $myBook->get_title();

關于PHP的問題在php.ini 里把錯誤級別改成 all_error^notice
大概就是這樣的
意思為輸出所有錯誤,但不顯示通知級別的 。

Notice代表通知級別的問題 但是不是錯誤程序,屏蔽notice通知程序可以正常運行 。
我一般寫的時候都會這樣

關于PHP版本比較,和錯誤報告 。。error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

報告除了通知錯誤(E_NOTICE )還有過時函數錯誤(E_DEPRECATED)之外的所有錯誤
error_reporting(E_ALL & ~E_NOTICE);

報告除了通知錯誤(E_NOTICE )之外的所有錯誤

代碼的意思就是說 如果php版本是5.3以上就關閉函數過時錯誤 , 5.3以下就不關閉 。

為什么要這么處理呢?
因為在版本升級到5.3之后之前版本的一些函數就不推薦使用,使用的話如果不關閉的錯誤提示的話就會提示函數過時錯誤 。。。