. 面向對象的特點
抽象:
抽象是或略一個主題中與當前目標的無關的因素,一邊充分考慮有關的內容。抽象并不能解決目標中所有的問題,只能選擇其中的一部分,忽略其他的部分。抽象包含兩個方面:一是過程抽象;一是數據抽象。
繼承:
繼承是一種聯接類的層次模型,允許和鼓勵類的重用,提供了一種明確的共性的方法。對象的一個新類可以從現有的類中派生,這叫做類的繼承。心累繼承了原始類的特性,新類稱為原始類的派生類或者是子類,原始類稱為新類的基類或者父類。子類可以從父類那里繼承父類的方法和實現變量,并卻允許新類增加和修改新的方法使之滿足需求。
封裝:
封裝就是把過程和數據包圍起來。對數據的訪問只是允許通過已經定義好的界面。面向對象就是基于這個概念,即現實世界可以描述為一系列完全自治,封裝的對象,這些對象通過固定受保護的接口訪問其他對象。
多態:
多態性是指不同類的對象對同一個請求作出相應。多態性包括參數多態和包含多態。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢。很好的解決了應用程序中同名的問題。
2. int 和 Integer 有什么區別
java提供了兩種類型:引用類型和原始類型(內置類型)。int是java的原始數據類型,Integer是java為int提供的封裝類。
java為每一種數據類型提供了自己的封裝類:
引用類型和原始類型的行為完全不同,并且他們具有不同的語義,引用類型和原始類型具有不同的特征和用法,他們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型有用作某個類的實例數據時制定的缺省值。對象應用實例變量的缺省值為null,而原始類型實例變量的缺省值與它們的類型有關。
3. final、finally、finalize的區別
4. heap和stack的區別
棧是一種現行結構,其添加和刪除元素應在同一段完成,棧按照先進后出的方式進行處理。
堆是棧的一個組成元素。
5. 基本的數據類型
byte,int,long,double,char,boolean,float,short
String不是基本數據類型,java.util.String是final類,因此不能修改這個類,不能繼承這個類。
為了節省空間,提高效率我們應該用StringBuffer。
6. assert什么時候使用?
assertion(斷言)在軟件開發中使用中常見的調試方式,很多編程語言中都支持這種機制,在實現中,assertion就是在程序中的一條語句,他對一個boolean表達式進行檢查,一個正確的程序必須保證這個boolean表達式的值是true。如果該值為false,說迷宮程序已經處于不正確的狀態了,系統將給出警告或者退出。一般來說assertion用來保證程序最基本、關鍵的正確性,assertion檢查通常在開發和測試時啟動,為了提高效率,在軟件發布后,assertion檢查通常是關閉的。
7. GC是什么?為什么要有GC?
GC是垃圾回收的意思(gabage collection),內存處理器是編程人員容易出現問題的地方,忘記或者錯誤的內存回收導致程序或者系統的不穩定甚至崩潰,java的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,java語言沒有提供釋放已分配內存的俄顯示操作方法。
8. 啟動線程使用run()還是start()?
啟動一個線程用start()方法,使線程所代表的虛擬處理機處于可運行的狀態,這意味著它可以有JVM(java虛擬機)來調度和執行,這并不意味著線程就會立即執行。run()方法可以產生必須退出的標志來停止一個線程。
9. 構造器Constructor是否可以被override?
構造器(override)不能被繼承,因此不能重寫overriding,但是可以被重載overloading。
10. 當一個對象作為參數傳遞給一個方法后,此方法可以給便這個對象的屬性,并可以返回變化后的結果,那么這里到底是值的傳遞還是引用傳遞?
是值得傳遞。java語言中只有值傳遞參數,對一個對象實例作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用,對象的內容可以在被調用的方法中改變,但對象的引用是永遠改變不了的。
11. 垃圾回收機制的優點,并考慮2種回收機制。
java語言中一個顯著的特點就是引入了垃圾回收機制,使C++程序員最頭痛的內存管理問題迎刃而解,他使得java程序員在編寫承學的哦時候不用再考慮內潤管理問題了,由于有了垃圾回收機制,java中的對象不再有“作用域”的概念,只是在對象引用的時候才有“作用域”,垃圾回收可以有效的防止內存泄漏,有效的使用可以使用的內存。
垃圾回收器通常作為一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚的哦回收,承諾過許愿程序員不能實時的調用來幾回收器對某個對象或所有對象進行垃圾回收,回收機制有分帶復制來幾回收和標記垃圾回收,增量垃圾回收。
12. char型變量中能不能存儲一個中文漢字?為什么?
能夠存儲一個漢字。
因為java中以unicode編碼,一個char占16個字節,多億放一個中文是沒有問題的。
13. jsp中的內置對象
14. jsp和servlet有奶俄相同點和不同點?他們之間的聯系是什么?
jsp是servlet技術的擴展,本質上是servlet的簡易方式,強調應用的表現和表達,jsp編譯后是“類servlet”,servlet和jsp最主要的不同點在于,servlet的應用邏輯是在java文件中,并且完全從表示層中的html里分離出來,而jsp的情況但是java和html可以組合成一個擴展名為.jsp的文件,jsp側重于視圖,servlet主要用于控制邏輯。
15. 匿名內部類(Anonymous Inner Class)是否可繼承其他類,是否可以實現接口?
可以繼承其他類或完成其他接口,在swing編程中常用此方式。
16. HashMap和HashTable的區別
HashMap是HashTable的輕量級實現(非線程安全的實現),他們都完成了Map接口,主要區別在于HashMap允許空鍵值(key),郁郁非線程安全,效率上可能高于HashTable。
17. String s=new String("abc");創建了幾個對象?
創建了兩個 一個是“abc” 一個是指向“abc”對象的 S 對象。
18. Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12,Math.round(-11.5)==-11,
return方法返回與參數最接近的長整數,參數加1/2后求其floor。
19. sleep()和wait()的區別?
sleep是線程類(thread)的方法。導致此線程暫停執行之地昂時間,給執行的機會給其他線程,但是監控狀態依然保持,到時候后自動回復,調用sleep不會釋放對象鎖。
wait是object類的方法,對此對象發出wait方法導致本線程放棄對象鎖,進入等待此對象的的呢古代鎖定池,只有針對此對象發出notify方法(或者notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。
20. 數組有沒有length()這個方法?String有沒有length()這個方法?
數組沒有length()這個方法,有length方法。
String有length()方法。
21. Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?
方法的重寫OVerriding和重載Overloading是Java多態的不同表現,
重寫Overriding是父類與子類之間多態性的一種表現,重載Overloading是一個類中多態性的一種表現,
如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫(Voerriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被屏蔽了,如果在一個類中定義了多個同名的方法,他們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overriding),Overriding的方法是可以改變返回值的類型。
22. Set里的元素是不是能夠重復的,那么用什么方法來區分重復與否呢?使用==還是用equals()?他們有什么區別?
Set里的元素是不能重復的,那么用iterator()方法來區分重復與否。equals()方法是判斷兩個Set是否相等。
equals()和==方法決定引用值是否指向同一個對象,equals()在類中被覆蓋,為的是當兩個分離的對象的內容和類型相配的話,返回真值。
23. error和exception 的區別
24. abstract class和interface有什么區別?(抽象類與接口的區別)
聲明方法的存在不去實現他的類被叫做抽象類(abstrct class),它用于要創建一個體現某些基本行為的類,并為該類聲明方法,但不能在類終中實現該類的情況,不能創建abstract類的實例。然而可以創建一個變量,其類型就是一個抽象類,并讓他指向具體的子類的一個實例。不能有抽象構造函數或抽象靜態方法,abstract類的子類為他們的父類中的所有抽象方法提供實現,否則他們也是抽象類為,取而代之,在子類中是實現該方法。知道其行為的其他類可以在類中實現這些方法。
接口(interface)是抽象類的變體,在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體,接口只可以定義static final成員變量,接口的實現與子類相似,除了個實現類不能從從接口定義中繼承行為,當類實現特殊的接口時,他定義(即將程序給予)多有這種接口的犯法,然后,它可以在實現了該接口的類的任何對象上調用接口的方法,由于抽象類,它允許使用接口名作為應用變量的類型。通常的動態聯編將生效,引用可以轉換到接口類型或從接口類型轉換,instanceof運算符可以用來決定某對象的類是實現了接口。
25. abstract的method是否可同時是static,是否可以是同時是native,是否同時是synchronized?
都不可以
26. jsp頁面中的跳轉方式分別是什么?有什么區別?
有兩種,分別是
< JSP:INCLUDE page="jjj.jsp" fresh="true">
< JSP:FORWARD page="nextpage.jsp">
區別:
前者頁面不會轉向include所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面,執行完后就會回來,相當于函數調用,并且可以帶有參數,后指完全轉向新的頁面,不會再回來。相當于個goto語句。
27. java servlet API中的forward()和redirect()的區別?
前者僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向的地址,后者則是完全的跳轉,瀏覽器將會得到跳轉的地址,并重新發送請求鏈接,這樣,從瀏覽器的地址欄中就可以看到跳轉以后的鏈接地址,多億,牽制更為高效。在前者可以滿足需要的同時,盡量使用forward()方法,并且這樣有助于隱藏實際的鏈接,在有些情況下,比如需要跳轉到其他瀏覽器的資源,則必須用sendRedeirct()方法。
28. xml有哪些解析技術?區別是什么?
有DOM,SAX,STAX等
29. jsp中有哪些內置對象?他們的作用是什么?
jsp中共9中內置組件:
30. 編程用java解析xml的方式
用sax方式解析xml,xml如下:
< ? xml version=1.0 encoding=gb2312? >
小黑
信息學院
6210798
男,1965,博士,94年調入清華大學
事件回調類SAXHandler.java
import java.io.*;
import java.util.Hashtable;
import org.xml.sax.*;
public class SAXHandler extends HandlerBase
{
private Hashtable table=new Hashtable();
private String currentElement=null;
private String currentValue=null;
public void setTable(Hashtable table)
{
this.table=table;
}
public Hashtable getTable()
{
return table;
}
public void startElement(String tag, AttributeList attrs)
throws SAXException
{
currentElement=tag;
}
public void characters(char[] ch, int start, int length)
throws SAXException
{
currentValue=new String(ch, start, length);
}
public void endElement(String name) throws SAXException
{
if (currentElement.equals(name))
table.put(currentElement, currentValue);
}
}
JSP內容顯示源碼,SaxXml.jsp:
< %@page errorPage=ErrPage.jsp contentType=text/html;
charset=GB2312 %> >
< %@page import=java.io.*%>
< %@page import=java.util.Hashtable %>
< %@page import=org.w3c.dom.*% >
< %@page import=org.xml.sax.* %>
< %@page import=javax.xml.parsers.SAXParserFactory %>
< %@page import=javax.xml.parsers.SAXParser %>
< %@page import=SAXHandler %>
< %@
File file=new File(c:people.xml);
FileReader reader=new FileReader(file);
Parser parser;
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp=spf.newSAXParser();
SAXHandler handler=new SAXHandler();
sp.parse(new InputSource(reader), handler);
Hashtable hashTable=handler.getTable();
out.println( );
out.println(
+ );
out.println(
+ );
out.println(
+ );
out.println(
+ );
out.println(
教師信息表 姓名 +
(String)hashTable.get(new String(name)) +
學院 +
(String)hashTable.get(new String(college))+
電話 +
(String)hashTable.get(new String(telephone)) +
備注 +
(String)hashTable.get(new String(notes)) +
);
>
31. EJB與JavaBean的區別
JavaBean是可重復用的組件,對JavaBean并沒有嚴格的規范,理論上講,任何一個Java類都可以是一個Bean,但是通常情況下,由于JavaBean是被容器所建(如tomcat等)的。所以JavaBean應具有一個參數的構造器,另外通常JavaBean還要實現serializable接口用于實現Bean的持久性,JavaBean實際上相當于微軟Com模型中的本地進程中com組件,踏實不能被夸進程訪問的,enterorise JavaBean相當于DCOM,即分布式組件,踏實基于java的與阿成方法的調用(RMI)技術的,所以EJB可以被遠程訪問(跨進成,跨計算機)但是EJB必須被部署在諸如websoere、weblogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問,EJB容器是EJB組建的代理,EJB組件由容器創建和管理。客戶通過容器訪問真正的EJB組件。
ython有三種方法解析XML,SAX,DOM,以及ElementTree。 ElementTree就像一個輕量級的DOM,具有方便友好的API。代碼可用性好,速度快,消耗內存少,下面看一段ElementTree解析xml代碼:
接口返回xml如下:
ElementTree知識要點
插入節點 :
Element.insert(index, element)
Element(tag[, attrib][, **extra])
SubElement(parent, tag[, attrib[, **extra]])
Element.append(subelement)
刪除一個節點:Element.remove(subelement)
刪除該節點下所有子節點:Element.clear()
節點中插入屬性 :Element.set(key, value)
查找節點Element.getiterator 、Element.getchildren 、 Element.find、Element.findall
督教文化繼承了希臘人的信念,認為人由物質的肉體和精神的靈魂兩部分組成,靈魂永恒及肉體再生是其來世觀的主要原則。古埃及人則認為人是由幾個元素組成的,失去任何一部分都意味著失去整體。這些要素中,某些部分是活著的時候就存在的,而有些則是在死后才顯現出其重要性。
18王朝的書吏阿蒙涅姆赫特的墓室祠堂中的銘文非常具象地表達了古埃及人對人的本質的認識。根據墻上的文字說明,祠堂南墻上的供品都是死者生前必需的物品。旁邊的銘文是:“為他的‘卡’,為他墓地的墓中所立之碑,為他的命運(SA),為他的生命時光(aHa),為他的Meskhenet,為他的Renenet,為他的赫努姆。愿神讓他控制它們(供品),富有它們,戰勝它們......”這些概念中,Meskhenet、Renenet、赫努姆是與他的出生和撫養有關的,另外兩個是與他的生命和性格相關的(SA、aHa),是儀式的焦點。北墻上的銘文指的是死者死后最重要的方面:“為他的‘卡’,為他的碑,為他的‘巴’,為他的阿赫(Ax),為他的尸體(XAt),為他的影子swt,為他所有的顯現xprw。愿這些神使得他富有這些(供品),使他加入他們,可以像他的先輩一樣永遠吃喝享用它們。”這些概念都以具體的形象出現在死者形象的上方,代表死者死后的存在形式:“卡”、“巴”、XAt、swt、xprw。關于人的物質的身體有幾個表述的概念:當人活著時,它是Xt,指人體作為物質的存在,但它也可以被描述為irw——“形式,外在”,強調身體作為一個人的物質形式以及發揮作用的形體的一面;在人死后,常用的詞是XAt——尸體,或者sax——木乃伊;影子swt也是活著的人的本質的組成部分,但是它更經常與死者聯系在一起。它與木乃伊有密切關系,是死者在人間的影子,但它的顏色是黑的。
圖坦卡蒙雕像的“巴”
在墓葬文獻中還有兩個重要的概念,一個是rn(名字),一個是ib或HAty(心)。前文提過,埃及人認為名字不僅是事物的音符,也是其本質的一部分,因此,一個人的名字被毀或者被遺忘就意味著此人整個被毀掉。心既是人的智力的基礎也是人的道德的基礎,人要作為富有道德和思想的存在就必須保證心的存活。心代表所有形式的能量,是意志之源。像“卡”一樣,它是獨立的存在,因此心與“卡”的關系是很接近的。心是理性、情感、意識、記憶等的源泉,也是自由意志的源泉,這種自由意志甚至可能反對神和神造的宇宙秩序。為此,在末日審判庭的天平上,一端是死者的心,另一端是象征正義的瑪阿特。有時我們看到天平的一端是一個人而不是一顆心,說明在古埃及人心目中,心是可以代表整個人的。作為一個獨立的個體,心有能力遺棄人,將他的意識和意志帶走。《孟菲斯神論》說:“心與舌有超乎其他感官的能量——因為是它們創造了一切......是心使得知識發展,是舌重復著心所想的。”對于死者來說,心就成了最關鍵的器官。人們精心地把它包裹好,從不讓它離開尸體。
像“卡”和心一樣,“名字”也是獨立的存在。所有的事物都有名字。《孟菲斯神論》中,創世主普塔是“能叫所有事物名字的嘴”,是普塔結束了“沒有任何東西的名字被叫出來的”混沌的初始時期。嬰兒一誕生就立即得到一個名字,因為沒有名字的事物是不存在的事物。為了防止在來世沒有名字,古埃及人千方百計地使自己的名字永久留存下去。最早的文字也是用來書寫名字的。名字能證明一個人的身份(當死者進入神的世界時,要宣稱“神是我的名字”),同時也能代表一個人,在許多建筑物上法老的形象是用他的王名來代表的。官員在國王雕像前祈禱,與在王名前祈禱是一樣的。神的名字與國王的名字都能產生魔法般的能量。例如,人們遇到鱷魚時,大呼阿蒙神的名字就能得救。用神和國王的名字做護身符更是普遍。同樣的道理,如果抹去一個人的名字就是徹底毀掉他的存在,傷害一個人的名字就如傷害那個人本身一樣。例如,埃赫那吞抹去了阿蒙的名字,后人又抹去埃赫那吞的名字,都是出于這樣的目的。許多時候,法老們通過更改名字的辦法把以前法老的神廟、陵墓、雕像據為己有,因此許多雕像與其所有者的身體外貌特征毫無關聯,只能靠上面的名字來判斷其身份。
在肉體與靈魂之間的是“卡”,該詞的象形文字符號是兩條高高舉向天空的胳膊,有擁抱、保護人類的含義。“卡”既屬于人類也具有神性:有史以來它就出現在人名中,同時又經常出現在為神而設的架子上。有的學者認為古埃及人把“卡”當作人類的另一存在形式,是與人類一起被神創造出來的,也代表著本原力量。在銘文中,我們發現古埃及人對“卡”的定義是“力量、財富、養料、繁盛、效力、永恒、創造性、神秘力量”,也有人稱之為“身體之外的靈魂肉體”“物質與精神世界之間的橋梁”。
軍官伊皮-哈-伊蘇太夫(Ipi-ha-ishutef)木棺上的棺文,11王朝,芝加哥大學博物館藏
“卡”是所有的生命體,它既是生命的活力,也是生命的歡樂,具體來說就是一切美好的事物。從“卡”身上散發出來的能量只在死亡時有短暫的中斷。不僅肉體有“卡”,雕像也可以承載“卡”。如果沒有了“卡”,就意味著生命的消失。“卡”需要物質供給,需要吸取營養;同時所有的養分中都有“卡”,古埃及人互相敬酒時會說“為你的‘卡’”。為確保來世和現世的結合,古埃及人為死者獻祭的同時,也供奉死者的“卡”。亡者死后必須重建與他們的“卡”之間的聯系。
“巴”的寫法有一個變化的過程,開始時埃及人把“巴”寫成一個凹嘴白鸛的樣子,逐漸地,白鸛嘴下部分的肉贅演變成乳狀羽毛,到新王國時期則成為一個人頭鳥身的形象。這種變化顯示出“巴”作為人體一個獨立的部分的作用,有時為強調這一點又加上人的胳膊。因為“巴”作為一個詞也有“羊”的含義,所以有時又用羊來作為代表“巴”的符號。需要注意的是,太陽神的“巴”以羊頭形象出現,而降臨到冥世的太陽神則是羊頭鳥身的樣子。為確保復活,“巴”必須每天夜里在冥世深處與肉體結合。《亡靈書》第89節中死者宣稱:“我看見我的‘巴’向我走來......它再次看見了它的身體并棲落在它的木乃伊上!”該節的敘述中還表達了擔心像鳥一樣盤旋的“巴”不能找到“它昨天所在之處”,或者受到阻止而不能回到其身體上去的焦慮心情。這種焦慮并非沒有道理,因為身體必須每夜都與靈魂結合,死者才能得到新的生命。上述《亡靈書》片段的插圖部分表現了一個人頭的“巴”時而停在木乃伊頭上,時而在它上面盤旋,旁邊的文字說明提示說:“巴”已被放入死者之胸,完成了與肉體的結合。21王朝的墓室壁畫也有同樣的主題,只不過通常“巴”直接出現在死者頭部的后面,而在后期埃及,此類畫面是在棺槨上的。大多數關于“巴”的文字都發現于墓葬作品中,而且通常很少提到活著的人的“巴”。在《辛努海的故事》中,當描繪他回到埃及會見國王并由于過分激動而昏了過去時,有這樣一句話:辛努海的“巴”離他而去,他失去了知覺,看到了死亡,直到國王開始以非常友好的口吻和他說話。在這里和在更普遍的意義上,“巴”表示“意識”。相反地,“卡”則經常在無意識的深處活動。一個拉美西斯時期的書吏曾寫到過量喝啤酒會導致失去“巴”。當面對法老的威力時,敵人的“巴”們會倉皇逃竄。關于活著的人的“巴”的最重要的文獻是前文提及的《一個人與他的“巴”的爭論》(見本書第五章第三節)。
“巴”依附于身體,因為它作為一種精神的個體沒有其他存在方式,它有物質的、身體的需求——面包、啤酒等。“巴”也享受愛的歡樂,墓葬文獻中提過“巴”的性行為。此外,男女的結合既是身體的,也包括他們的“巴”的結合。“巴”最本質的特點有兩點:一是可以自由行動,一是可以變成它所希望的種種形狀。肉體只能在地上活動,或與“巴”結合后在冥世游蕩,而“巴”則可以自己行動,如鳥般自由地上天入地,或者在人間花園里漫步。古埃及人把候鳥看作是“巴”的化身,因為它們能離開熟悉的世界到遠方去,又能定期回來。
中王國時期的墓碑,開羅埃及博物館藏
“巴”還在所有種類的變形中起到一定的作用。在這些變形中,某些神或動物會被看作是其他神或動物的“巴”,例如荷魯斯的4個兒子也代表他的4個“巴”。
“巴”和“卡”還有一種區別:“卡”是人的本原及保護力量的具體體現,而“巴”則標志著從另一事物中出現的一種事物。比如,兒子可以是他父親的“巴”而不能是他的“卡”;同樣地,父親可以是兒子的“卡”,卻不可能是他的“巴”。拉神稱巫術女神荷卡是自己的“巴”,而自己則是更古老的原始之神努神的“巴”。現在我們明白為什么古典作家最初遇到這些概念時會誤以為古埃及人相信靈魂的變形。在基督教時期的埃及,“巴”和“卡”的使用逐漸中斷,而希臘語的“psyche”(始基)一詞開始成為“靈魂”一詞的代名詞。“卡”經常以擬人化的形象出現并作為人的復制品,在古埃及人的認識中,“卡”是人的至關重要的組成部分,與生俱來,共存共生,且在人死后繼續存在。最好將“巴”描述為“生命力”,它在人活著的時候存在,但在人死后其重要性才更加顯現出來,其時它與人體雖然是可分離的卻又緊密聯系在一起。它鳥身人頭的形象說明“行動自由”是它最顯要的特點。
本質上,埃及人把他們對人的各個方面的看法和經驗進行了特別具體的概念化,所有的一切方面都可以叫作xprw,意為存在、顯現。總之,“卡”是生命力,“巴”是行動和效力的能力;Xt和rn代表物質的外觀和個性,swt是個神秘的物質存在,它以不同的形式和大小來來去去;心則代表人的智力、情感、道德層面的個性。這些方面都有能力獨立行動,但它們最終都是個人的復雜心理機制的有機構成部分。
阿赫(Ax)與上述的一切都不同,它不是人的某一個部分,而是代表人作為整體處于被祝福的狀態,以及超越墓葬的力量。這與下面要論述的通過儀式而達成的轉換相關。
本文節選自《金字塔的國度》(顏海英 著,商務印書館,2024年6月版),澎湃新聞經商務印書館授權刊發。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。