php內部類
『壹』 大數據培訓內容,大數據要學哪些課程
數據來結構、自關系型資料庫、linux系統操作
hadoop離線分析、Storm實時計算、spark內存計算
『貳』 java 中什麼是內部類啊麻煩給講解一下。謝謝!
樓上真牛...貼這么多...
簡單的說,內部類就是類中的類,舉個例子:
class A {
private int i;
private void m() {
}
class B {
mm(int j) {
i = j;
m();
}
}
}
這里,B就是A的內部類
內部類的特點就是,可以方便的訪問外部類裡面的私有方法和屬性,比如,這里B裡面可以直接訪問A裡面的私有屬性i,和私有方法m()
『叄』 easyui queryparams php後台接收參數
//查詢參數直接添加在queryParams中
varqueryParams=$('#test').datagrid('options').queryParams;
queryParams.state=stateVal;
$('#test').datagrid('options').queryParams=queryParams;
$("#test").datagrid('reload');
php後台使用 $_GET('state')獲取
『肆』 JAVA入門基礎學完了該怎麼練習,後面應該學什麼
jse Standard
jee enterprise
JSE是裡麵包含了java的基本類. JEE裡面在JSE的基礎上加入了企業級的對象
一般理解,jse是jee的子集,jee主要是增加了java的了web部分
如果做安卓,那jse足夠!不用往下看,如果做web
後面需要學servlet,sql一定要掌握,php和java沒關系,php能做的java都能做
http?樓主說的是前端吧,前端的jquery必須掌握(js的封裝 js要能熟練運用)
然後是幾個主流框架,我們常說的ssh火或ssi,分別是struts2(mvc),hibernate(orm),mybatis(orm),spring(ioc aop mvc)
這些差不多就可以說javaweb入門了
一步一步來 不要心急,javaweb方向,需要掌握的東西深度不算很深,但廣度需要足夠的廣。。。
『伍』 用ruby開發,w網頁訪問方法時提示template is missing,怎麼解決呢
在Ruby中,一切皆是對象。下面舉一個例子來更直觀地說明Ruby語言的這一特點。
在Java中,求一個數的絕對值的代碼如下。
int c = Math.abs(-20);
而在Ruby語言中,一切皆是對象,也就是說「-20」這個數也是一個對象,因此,求一個數絕對值的Ruby代碼形式如下。
c = -20.abs 這樣的代碼編寫方式是不是更形象一些呢?
Rails 框架是一個更符合實際需要而且更高效的Web開發框架,Rails結合了PHP體系的優點(快速開發)和Java體系的優點(程序規整)。
Rails是一個全棧式的MVC框架,換句話說,通過Rails可以實現MVC模式中的各個層次,並使它們無縫地協同運轉起來。
在實際開發一個MVC模式的Web應用項目時,如果使用Java開發,需要用到Struts、Hibernate和Spring等框架,而且需要額外整合3個框架開發出的內容。而使用Ruby語言開發相同的項目時,只需要用到Rails框架就可以完成。
RoR的效率肯定要比Java高一個數量級,這確實是事實,比PHP至少也要高好幾倍,這也是事實,這一點在這篇文章中不展開了,但是為什麼開發效率這么高,我也想談談我的看法,當然還很不成熟的看法:
一、主要原因是ruby語言的語法非常強大我記得庄表偉說過一個觀點:「框架是強化的語法」,意思就是說語法比較弱,所以才需要n多框架,如果語法很強,框架就很少。這一點在Java和ruby身上得到了驗證。
1、ruby的open class VS Java的AOP,反射、動態代理,位元組碼增強等技術JDK1.3開始引入反射,就已經打開了Java這種靜態類型語言通往動態類型語法的潘多拉魔盒。隨後的動態代理技術,位元組碼增強技術,靜態和動態的AOP技術開始層出不窮,為什麼呢?就是需要在程序運行期動態改變對象的行為。但是對於ruby來說是open class的,語法級別上就支持程序運行期修改對象行為,所以Java需要很復雜技術才能實現的功能對於ruby來說就是非常簡單的搞定了。
2、ruby的ck typing VS Java的IoC,泛型Java的IoC不用說了,泛型在庫級別也開始廣泛使用。IoC就是根據對象行為來進行對象組裝,泛型就是在不確定對象行為的情況下確定對象的交互。但是ruby的對象行為是在運行期才確定的,天然就是泛型的,行為不是靜態的,所以不需要IoC。
3、ruby的block,closure VS Java的匿名內部類大家對spring的Template肯定印象很深刻,但是這是ruby標準的用法,所以各種資源釋放,異常處理在語法級別上就支持的很好,做起來很簡單。
4、ruby的Meta programming VS Java缺乏method_missing機制大家耳熟能詳了,Java沒有這么強的Meta programming,很多ruby magic耍不出來。
5、腳本語言 VS 編譯語言這也是一個很大的優勢,腳本編程速度確實快。
二、rails框架確實做的很棒
1、full-stackrails是一個概念一致的fullstack框架,不知道為什麼,在Java世界目前只有Rife這一個可以和RoR相提並論的fullstack框架,但是Rife的實現並不好(作者從PHP轉過來的,和DHH爆發過口水戰)。不過因為底層語法支持的不同,用Java是做不出來RoR框架的。因此也有人用Groovy做Grails,不過這幫人不太爭氣。
2、CoC這個不用說了,現在很多Java框架開始吸收這一點。
3、為web開發良身打造web開發需要用到各種技術全部提供,絕對的貼心,如果用Java,這些東西都需要自己集成或者自己實現,省了一大堆麻煩事。
4、開發測試部署快速這個不說了,Java劣勢太明顯了
關於「效率提高的來源」問題,我的理解就是次要復雜性被ROR降低到了極致。說的難聽一點,不是ROR太聰明,而是我們以前做得蠢事太多了。各種各樣的xml, taglib,單元測試困難 ... ...
做過項目的人都知道這些次要復雜性很多情況下真的是要命的。ROR沒有降低軟體的內在復雜性,也就是業務問題。但是它把復雜性降低到無限趨近於業務復雜性,也有人稱ROR是Web開發的DSL。而解決業務問題正是人發揮聰明才智的地方,ROR不能代替人,但是它把人從次要復雜性的泥潭之中解救了出來。
『陸』 如何在PHP中使用內部類
方法如下:
public class Lei{
public static void main(String ages[]){
Leis x=new Leis();
}
public static class Leis{
public Leis(){
System.out.println("asd");
}
}
}
主函數調用的是靜態方法,內部類要定義為static,Leis()為構造方法,用來初始化成員變數,不能用「x.Leis()」
『柒』 求php面試題以及答案,php筆試題
java異常機制的原理與應用
答:每當程序出現異常之後,如果程序沒有進行相應的處理,則程序會出現中斷現象。
實際上,產生了異常之後,JVM會拋出一個異常類的實例化對象,如果此時使用了try語句捕獲的話,則可以進行異常的處理,否則,交給JVM進行處理。當try語句捕獲異常之後,將與catch語句的異常類型進行匹配,如果匹配成功則執行catch內的語句。簡單的應用:在所以throws語句的地方加入try-catch。標准應用:try-catch-finally-throw-throws一起使用。
2. 垃圾回收機制的優點
答:釋放無用的對象所佔用的空間。方式:自動回收,手動回收。使用System.gc(),實際上調用Runtime.getRuntime().gc()
3. Error與Exception區別
答:Error是jvm進行處理,是jvm出錯
exception是可以由程序處理的,可以用try-catch捕獲的
4. final,finally,finallize
答:final定義的變數的值不能改變,定義的方法不能被覆蓋,定義的類不能被繼承
finally是異常的統一出口,finallize是垃圾回收前的收尾工作,是Object類定義的
5. Anonymous Inner Class是否可以extends,是否可以implements Interface
答:允許繼承和實現,因為匿名內部類就是在抽象類和介面的基礎上發展起來的
6. Static Nested Class 與Inner Class的區別
答:使用Static定義的Class就是外部類,可以通過外部類. 內部類直接訪問
而Inner Class是不能被外部訪問的,只能通過外部類的實例再找到內部類實例。
7. HashMap and HashTable?
答:HashMap:1) released in jdk 1.2,new Class 2)採用非同步處理方式,性能較高,是非線程安全的 3)允許null
HashTable:1)released in jdk 1.0 ,old Class 2)採用同步處理方式,性能低,是線程安全的3)不允許null
8. assert代表什麼?
答:asserts是jdk 1.4之後發布的新關鍵字,表示斷言,即程序執行到某個地方肯定是預計的值,一般開發很少使用。要使用assert,必須加上 -ea參數
9. gc是什麼?
答:gc是garbage collection,垃圾回收,使用gc可以進行垃圾空間的釋放
10. String s = new String("xyz")產生了幾個對象?
答:一個匿名對象xyz,在棧空間內。一個new實例化的對象,在堆空間內。
11. sleep() and wait()?
答:sleep()是Thread類定義方法,表示線程的休眠,可以自動喚醒
wait()方法是Object類定義的方法,需要手動notify()和notifyAll()//sleep()不釋放資源,wait()釋放資源
12. java中存在goto,但不能使用
13.數組有沒有length(),String有沒有length()?
答:數組有length屬性,String有length()
14. Overload與Override的區別
答:Overload:重載
|- 在一個類中定義的若干方法
|- 所有的方法名相同,但參數類型或個數不同
|- 只有參數有關,與返回類型無關
Override:覆寫
|- 在繼承的關系中
|- 子類定義了父類同名的方法,參數類型或個數最好完全一樣。
|- 訪問許可權不能更嚴格
15. Set里的元素不能重復,用什麼方法區分?==與equals()方法的區別
答:set里的元素是不能重復的,用iterator()方法來區分重復與否,==屬於地址比較,
==用於比較引用和比較基本數據類型時具有不同的功能:
比較基本數據類型,如果兩個值相同,則結果為true
而在比較引用時,如果引用指向內存中的同一對象,結果為true
16. 列出常見的 runtime exception
答:NumberFormatException/ArrayOutIndexofBoundException/NullPointerException/ClassCastException
17. abstract class 和 interface有什麼區別?
答:抽象類:
|-由抽象方法和常量、變數、全局常量、構造方法、普通方法組成
|-使用abstract聲明
|-子類要通過extends繼承抽象類,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法
|-存在單繼承的局限
|-抽象類可以實現若干個介面
介面:
|-由抽象方法和全局常量組成
|-使用interface關鍵字
|-子類要通過implements實現介面,子類如果不是抽象類,則必須覆寫抽象類的全部抽象方法
|-一個子類可以實現多個介面
|-介面不能繼承一個抽象類,但允許繼承多個介面
18. 啟動一個線程要用start(),因為要通知jvm進行cpu資源的分配
19. try裡面的代碼是否執行,在什麼時機執行?
答:finally{}裡面的代碼執行,在return之前。
20. 寫一個singleton
答:singleton的核心就是構造方法私有化,Class,Runtime都採用單例
package com.leongod.demo;
public class Singleton(){
private static final sin = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return sin;
}
}
21. 程序設計:輸入一組數字,然後排序輸出
答:package com.leongod.demo;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class IO {
public static void main(String[] args) throws Exception {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("請輸入一組數字,中間用空格分割:");
String str = buf.readLine();
Set<Integer> set = new TreeSet<Integer>();
String[] arr = str.split(" ");
for(String s : arr) {
if (s.matches("\\d+")) {
set.add(Integer.parseInt(s));
}
}
Iterator<Integer> it = set.iterator();
System.out.println("排序後的結果:");
while (it.hasNext()) {
System.out.print(it.next() + ",");
}
}
}
22.列出目錄內的文件
package com.leongod.demo;
import java.io.File;
import com.sun.org.apache.xpath.internal.functions.FuncBoolean;
public class FileDemo {
public static void main(String[] args) {
?? File file = new File("D:" + File.separator + "kongkong");
?? fun(file);
}
public static void fun(File file) {
if (file.isDirectory()) {
File[] lf = file.listFiles();
if (lf != null) {
for(File f : lf) {
fun(f);
}
}
}else {
System.out.println(file.toString());
}
}
}
23. char可以存一個中文漢字嗎?
答:可以,使用了unicode編碼
24.多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?
答:兩種多線程方法,繼承Thread類,實現Runnable介面
|-Thread類是Runnable介面的子類
|-使用Runnable介面可以實現資源共享的目的
|-所有線程操作都必須通過Thread類的start()方法啟動
兩種實現同步的方法:
|-同步代碼塊:Synchronized(this)
|-同步方法
25.f=3.4是不對的,3.4默認是double類型的
26.String and StringBuffer?
答:String 不可以修改,StringBuffer可以修改
27.Class.forname向容器中載入驅動程序
28.int與Integer有什麼區別?
答:int是基本數據類型,Integer是包裝類
在jdk1.5以後,可以實現自動裝箱和拆箱
29.2*8有效的方法是移位操作:2<<3
30.請說出類集框架的完整結構
答:類級框架的最大介面:Collection、Map、Iterator、Enumeration
Collection:存放單值
|-List:允許有重復內容
|-ArrayList:非同步處理,新的操作類,非線程安全
|-Vector:同步處理,舊的操作類,線程安全,支持Enumeration
|-Set:不允許有重復的內容,依靠hashCode()和equals()進行重復的驗證
|-HashSet:無序存放
|-TreeSet:有序存放,按Comparable排序
|-Map:存放一對值
|-HashMap:新的類,非同步處理,非線程安全,允許有null
|-HashTable:舊的類,同步處理,線程安全,不允許有null
|-TreeMap:有序排列,按key配需
|-Iterator:迭代輸出,依靠collection介面中的iterator方法輸出,是新的輸出標准
31.是否可以繼承String類?答:不可以,因為使用了final關鍵字
『捌』 static關鍵字的作用
全局靜態變數
局部靜態變數
靜態函數
類的靜態成員
類的靜態函數
在全局變數前加上關鍵字static,全局變數就定義成一個全局靜態變數.
靜態存儲區,在整個程序運行期間一直存在。
初始化:未經初始化的全局靜態變數會被自動初始化為0(自動對象的值是任意的,除非他被顯式初始化);
作用域:全局靜態變數在聲明他的文件之外是不可見的,准確地說是從定義之處開始,到文件結尾。
在局部變數之前加上關鍵字static,局部變數就成為一個局部靜態變數。
內存中的位置:靜態存儲區
初始化:未經初始化的全局靜態變數會被自動初始化為0(自動對象的值是任意的,除非他被顯式初始化);
作用域:作用域仍為局部作用域,當定義它的函數或者語句塊結束的時候,作用域結束。但是當局部靜態變數離開作用域後,並沒有銷毀,而是仍然駐留在內存當中,只不過我們不能再對它進行訪問,直到該函數再次被調用,並且值不變;
在函數返回類型前加static,函數就定義為靜態函數。函數的定義和聲明在默認情況下都是extern的,但靜態函數只是在聲明他的文件當中可見,不能被其他文件所用。
函數的實現使用static修飾,那麼這個函數只可在本cpp內使用,不會同其他cpp中的同名函數引起沖突;
warning:不要再頭文件中聲明static的全局函數,不要在cpp內聲明非static的全局函數,如果你要在多個cpp中復用該函數,就把它的聲明提到頭文件里去,否則cpp內部聲明需加上static修飾;
在類中,靜態成員可以實現多個對象之間的數據共享,並且使用靜態數據成員還不會破壞隱藏的原則,即保證了安全性。因此,靜態成員是類的所有對象中共享的成員,而不是某個對象的成員。對多個對象來說,靜態數據成員只存儲一處,供所有對象共用
靜態成員函數和靜態數據成員一樣,它們都屬於類的靜態成員,它們都不是對象成員。因此,對靜態成員的引用不需要用對象名。
在靜態成員函數的實現中不能直接引用類中說明的非靜態成員,可以引用類中說明的靜態成員(這點非常重要)。如果靜態成員函數中要引用非靜態成員時,可通過對象來引用。從中可看出,調用靜態成員函數使用如下格式:<類名>::<靜態成員函數名>(<參數表>);
『玖』 PHP擴展之ImageMagick函數執行問題。
試一下這個類吧 phpthumb
配置phpthumb讓他使用ImageMagick來生成縮略圖
phpthumb是一個功能非常強大的縮略圖生成類,支持jpg,bmp,gif,png等格式圖片生成。無論您是PHP項目還是其它項目只要你能有一台PHP的主機就可以使用phpthumb帶給您編程上的方便。因為他還支持遠程圖片生成。
phpthumb可以配合ImageMagick來使用,這樣就不會再受到PHP內存大小的限制了,還可以生成gif動畫。下面就講如何讓phpthumb用ImageMagick來生成生成圖片。
無論win平台還是linux平台phpthumb默認是開啟ImageMagick的,只不過配置錯誤和程序有一點小問題。首先就是安裝ImageMagick這個程序。不用安裝php_imagick這個PHP擴展。phpthumb使用的是命令行操作的,所以php應該可以運行一個進程才可以,不然請選擇另外的主機。安裝好後請按下面的步驟進行phpthumb的修改。
1.打開phpThumb.config.php查找
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
// Windows: set absolute pathname
$PHPTHUMB_CONFIG['imagemagick_path'] = 'C:/Program Files/ImageMagick-6.6.0-Q16/convert.exe';
} else {
// *nix: set absolute pathname to "convert", or leave as null if "convert" is in the path (location detected with `which`)
//$PHPTHUMB_CONFIG['imagemagick_path'] = '/usr/local/bin/convert';
$PHPTHUMB_CONFIG['imagemagick_path'] = null;
}
將上面的$PHPTHUMB_CONFIG['imagemagick_path'] 設成你安裝的正確路徑。上面共計有兩個地方,第一個是window平台。第二個是LINUX,UNIX平台的。請根據您的系統選擇設定。上面紅色部分為ImageMagick路徑,替換時注意目錄分隔符是/不是\。
2.打開phpThumb.class.php
查找 function ImageMagickVersion($returnRAW=false) {在這附近
有if (eregi('^Version: [^0-9]*([ 0-9\\.\\:Q/]+) (http|file)\:', $versionstring[1], $matches)) {
替換成if (eregi('^Version: (.+) (http|file)\:', $versionstring[1], $matches)) {
OK全部設定已經完成您的phpthumb已經自動使用ImageMagick生成圖片了。