薩迪亞特:中東文化燈塔熠熠生輝

  在阿布扎比盧浮宮重讀“人類共同故事”

  如果非要選出一處阿布扎比必去打卡的文化地標景點,2017年11月11日正式開業的阿布扎比盧浮宮想必是首選。它是薩迪亞特島上第一個建成並開業的博物館,也是阿布扎比政府打造全球文化藝術中心戰略的重要支點。它的開業,首次將“世界級博物館”帶入了阿拉伯世界的文化地域。

  早在2007年,阿布扎比便與法國政府達成協議,希望在薩迪亞特島“復刻”一座盧浮宮。它基於“人類的普世價值”而建造,既體現了當代阿拉伯世界的活力,又代表了該地區多元的文化遺產。在法國17家博物館和文化機構的支持和幫助下,這一願景最終得以實現。

  當你置身這裏時,一定會被這座白色圓頂的建築所吸引,如同一座漂浮在海上的“城市”。它便是由建築學最高榮譽獎項普利茲克獎得主法國著名設計師讓·努維爾(Jean Nouvel)操刀設計。而最令人震撼的,是當你真正步入其中。得益於當地棕櫚樹的奇妙靈感,阿布扎比盧浮宮的穹頂採用了多層次的鏤空設計,白天陽光透過層層疊疊的穹頂空洞射下,在建築內形成了大小不一的斑駁光點,它們還會隨着陽光的直射角度的不同而變化,如夢如幻,彷彿棕櫚樹恭弘=叶 恭弘下的“光之雨”。

  在這座創意建築所營造的寧謐空間中,記者也迫不及待地開始了核心博物館展區的探索。這裏共產出了535件珍貴的藏品,其中有300件是從法國盧浮宮和其兄弟博物館中租借而來。這些藏品分量頗重,其中不乏世界級的鎮館之寶,如梵高的《自畫像》和達·芬奇的《救世主》等畫作。對於藝術的愛好者而言,這裏真的如同精神樂園。

  最值得一提的是,阿布扎比盧浮宮裡展品的布置順序,打破了以往以地理為坐標的布局,而是以時間為坐標,橫向俯瞰同時期地球上不同區域正在發生的人類文明,展現那些超越國界的文化“共通性”。500多件藏品被分為12個章節,由古至今,講述了過去12000年的歷史。不同地區和文化的藏品交替出現,突顯了阿布扎比想要傳達的包容性和跨文化性。

  “‘普世’是什麼意思?對於阿布扎比盧浮宮而言,這意味着要把重點放在讓我們團結一致的東西上:那是關於超越個體文化或文明、時間或空間的人類創造力的故事。”在博物館的官方介紹上,這句話給記者留下了深刻印象。當下,“人類命運共同體”的理念被廣為接受,而那些突破文化外殼的人類的共同聯繫,也將成為促進不同文化溝通與交流,消解偏見與衝突的基礎。而這,也是人類多元文化攜手走向“美美與共,天下大同”未來的必經之路。

  薩迪亞特:在沙漠中再造一片藝術“綠洲”

  在阿拉伯世界的腹地,阿布扎比可謂是獨具一格的存在。作為阿聯酋的首都和最大酋長國,阿布扎比不僅有酷熱的氣候和黃沙綿延的疆土,這裏更擁有超過400公里的原始海洋線和200多座島嶼。一面沙漠,一面海水,沙漠文化和海洋文化融匯共生,造就了阿布扎比保守又開放,純粹又多元,傳統又現代的複雜性格。而這種性格基因,正驅使着阿布扎比經歷一場野心勃勃的轉型——成為引領中東與世界接軌對話的窗口,並成為阿拉伯世界乃至全球的文化藝術“綠洲”。

  如果說任何一個宏大的理想都有一個現實的落點,那這片“綠洲”的落地之處,正是阿布扎比眾多島嶼中的一座,它有一個美麗而特別的名字——薩迪亞特(Saadiyat Island)。在阿拉伯語中,它意喻着“幸福之島”。薩迪亞特是一座位置絕佳的人工島,它佔地27平方公里,距離阿布扎比市中心7分鐘、阿布扎比國際機場僅20分鐘路程。據悉,阿布扎比政府重金投入了270億美元,欲將其打造成為以“文化藝術”為鮮明標籤的世界級旅遊休閑勝地。

  幸運的是,當這項戰略計劃在9年前剛剛啟動之時,《環球時報》記者曾作為被官方邀請的少數亞洲媒體,親自到現場見證了薩迪亞特的萌芽之態。

  “當記者離開酋長國宮酒店的室內展室,驅車來到薩迪亞特島時,不知為何想起了《一千零一夜》的神話。我們眼前的薩迪亞特島還是一片工地,阿布扎比古根海姆博物館的館址所在地甚至還寸土未動,只能看到遠處的黃色吊車。但是滿地細沙的薩迪亞特島與海水連接到一起,形成地、海、天在遠方連成一線的夢幻景觀……也許在這之前,你還會懷疑藝術在阿布扎比的未來是否像預想的明朗,畢竟有人會說金錢買不來一切,但是當你看着清真寺的精雕細刻,當你感受着海天一線的境界,當你了解它的地緣文化,當你路過那些趕赴展覽的年輕人,你也許會認為,何嘗不實現一下這個夢呢?畢竟,這一次,你確實難得地站在了世界藝術界的前沿焦點,這就是夢的開端。”《環球時報》記者在2010年拜訪薩迪亞特時寫道。

  從2010年到2019年,9年的時光飛逝而過。今日,當記者再次踏上薩迪亞特島的土地,真實地見到這座島上劇變的發生,忽然有驚為天人的衝擊感。一座座設計精美絕倫的藝術宮、博物館、畫廊從草圖中躍身而起,大大小小的展覽、沙龍、講座活動有條不紊地開展。來自全球的遊客們在海天一線的空靈之景中,欣賞着藝術,探討着藝術,汲取着藝術,融合於藝術。自然瀰漫的藝術氛圍讓每一位遠道而來的人感染其中,彷彿自己也成為了藝術的載體。就在時光交匯的剎那,那個曾經令人不敢相信的夢,竟然真的照進了現實。

  薩迪亞特文化區以其空前的規模和覆蓋面崛起成為全球文化中心,彙集了全球最龐大的重要文化資源,包括阿布扎比“盧浮宮”“阿布扎比古根海姆博物館”“扎伊德國家博物館”以及“海事博物館”等。每一座博物館的設計都出自普利茲克建築獎得主之手,並且使用了目前世界最先進的建築和科技。隨着它們的陸續開放,一個個鮮活的文化觸點被激活,如同一扇扇窗,透過它們,一股融古納今、兼收並蓄的文化洪流正奔湧向前。

  得益於政府的前瞻布局,阿布扎比正成為世界藝術市場的又一个中心,而文化藝術也成為了阿布扎比的另一支柱產業。無疑,薩迪亞特正在向外界社會打開阿拉伯文化的窗口,並重塑這一獨特的區域文化在全球文化藍圖中的新格局。

  艾恩綠洲,靈感的來源

  艾恩綠洲比鄰國家博物館。這片綠洲佔地面積3000英畝,擁有14.7萬棵椰棗樹,100多類品種。同時,這裏還種植芒果、檸檬、無花果、香蕉多種水果。在綠洲內,可以看到古老的灌溉系統。現在的綠洲被規劃得井井有條,遊客並不能隨意地進入樹林遊玩。但是,園區內的電瓶車會將遊客送到停靠點,然後依據遊覽路線進行遊覽。在此過程中,園區還會為遊客準備不同品類的椰棗供以品嘗。遊客還可以嘗試高難度的攀爬椰棗樹項目。這片綠洲是當地寶貴的資產。它也為阿布扎比的建築提供着創作源泉。陽光透過棕櫚樹留下影影綽綽的斑點成就了盧浮宮分館的屋頂、扎耶德清真寺的迴廊石柱上雕刻的椰樹樹恭弘=叶 恭弘,都體現了對這片土地難得的綠色的珍愛。

  大清真寺內步步“精心”

  自駕阿布扎比的途中,在任意一座連接阿布扎比島和內陸的橋上,都可以看到謝赫·扎耶德大清真寺的身影。當我們在更衣室內換上罩袍和長衫之後,這次對大清真寺的觀覽便更加具有了儀式感。而初見清真寺的第一眼,我們便被這座建築的藝術風采所深深折服。清真寺由9萬多噸白色的大理石建造,這使它的外表仿若白玉,照得所有朝聖者的面頰微微透明,而高高佇立的1000多根柱子以及由它們支撐的80餘個大理石穹頂則重重疊疊、層層遞進,環抱着所有進入寺內的人們。其間,四座傲然對視的宣禮塔迎着每位看客的目光直撞而來,恢宏的氣勢一下就倒入眼波。嚮導告訴我們,這座清真寺為紀念阿聯酋第一任總統謝赫·扎耶德而建,這裡是他的安息之地,清真寺故此得名。

  步入寺內,我們發現,整座清真寺的設計在充分體現伊斯兰教風格的同時,還借鑒了不少他國清真寺的設計。據說,該寺的設計師、建造原材料來自意大利、德國、土耳其、印度、中國和阿聯酋本國等地,充分證明了藝術和文明的創造已漸趨國際化。其內部的裝修和裝飾方法也頗具當代感,如,鑲嵌着青金石和瑪瑙、碧玉的花卉圖案以及由鋼材、黃銅、水晶製造的枝形吊燈便是典型的現代設計元素。鋪展在禮拜殿內的世界上最大的手工地毯的棉線來自伊朗、羊毛來自新西蘭;地毯上的阿拉伯式花紋圖案由1200名工匠花約兩年時間完成,用傳統的方式和傳承下來的匠心保證了藝術魅力的持久與新鮮。

  人們都喜歡在將夜未夜、暮色漸濃的時刻來到大清真寺。此時,殘陽下的大清真寺披金染紅,層層的拱門望之不盡,氣象森然,整座建築不高,卻有接天之勢。這裏觀者不少,卻寂靜無倫,只有人們的鞋履落在路面上,發出齊整的蹋蹀聲。震撼心靈的是耳畔不時傳來的呼祈聲,它正悠揚地飛越浮塵,飄向遠天,輕叩着每個伊斯蘭信徒心底那個與生俱來的幽深華茂的世界。

本站聲明:網站內容來源再生能源資訊網http://toptour.cn/,如有侵權請聯繫我們,我們將及時處理
【其他文章推薦】

※離島好好玩!小琉球必吃美食、必玩景點、最優惠的小琉球民宿套裝行程詳細攻略!

※專業量身客製冬、夏季台中polo衫印製設計,透氣舒適好穿

※超人氣NO.1 台中一中住宿,台中一中民宿近商圈步行只要幾分鐘!

※找尋專業廣告設計,價格公道大圖輸出,背板品質佳

中意時尚產業創新發展論壇舉行

中意時尚產業創新發展論壇舉行

      米蘭3月18日電(記者姜波)由西安高新技術產業開發區、意中基金會聯合主辦,西安高科(集團)公司、西安高科國際社區建設開發有限公司、西安國際社區時尚小鎮建設開發有限公司及奇柯(上海)投資管理有限公司聯合承辦的第一屆中意時尚產業創新發展論壇18日在意大利米蘭舉行。意大利經濟發展部副部長米凱萊·傑拉奇,西安市委常委、高新技術產業開發區黨工委書記鍾洪江,意中基金會主席阿爾貝托·彭巴塞以及中意兩國企業家代表和友好人士等出席了本次論壇。

  此次首屆中意時尚產業創新發展論壇的舉辦旨在進一步拓寬國際合作範圍,建立西安市高新區與意大利全領域溝通合作平台,引入更多國際資源。在論壇上,意方代表對西安高新區的發展及西安國際社區時尚小鎮的前景給予高度評價,並表示將以西安國際社區時尚小鎮為契機,不斷深化意中經濟文化交流合作機制,在時尚、文化、研發、設計、教育等領域搭建更廣泛的互利共贏平台。

  當天,高新區與意中基金會正式簽訂《中意時尚小鎮諒解備忘錄》。西安高科國際社區建設開發有限公司、西安國際社區時尚小鎮建設開發有限公司也分別與意中基金會、蒙達多利傳媒集團、New Crazy Colors、ADM時尚學院及時尚品牌Eleventy等多家意大利時尚產業機構達成合作意向,並簽署多份框架合作協議及諒解備忘錄。

本站聲明:網站內容來源於江西熱線http://www.online.jx.cn,如有侵權請聯繫我們,我們將及時處理

【其他文章推薦】

※全國票選五大台東必買台東伴手禮最佳商品哪裡買的到?

※月子中心貴鬆鬆,找對到府月嫂省一半,更讓你事半功倍!!    

※女孩困擾找不到『i cup內衣』?不必擔心專業內衣網購平台嚨底家

※機場接送服務包括:大陸機場接送以及桃園機場接送服務。

※最美的渡假聖地!享受無敵海景小琉球民宿推薦,旅遊達人,教你怎麼玩~

※嚴選台中火車站周邊熱鬧景點-台中一中住宿優惠!

※各類招牌、海報、大圖輸出,急件製作施工!

讓你的襯衫變得"好色"起來吧!

讓你的襯衫變得”好色”起來吧!

       襯衫可以說是春夏的必備單品,不但實用,而且能與任何下裝完美搭配。今年春夏流行的襯衫不再止於傳統的白色和純色,條紋、印花、拼色、波點,顏色和款式絢麗得如同春天一樣。

  * 條紋襯衫 *

  條紋襯衫可以說是時尚界的”常青樹”,相比純色襯衫,條紋襯衫更多了一些新意。細密的條紋,能給人一種靜謐溫柔的感覺。

  條紋襯衫相對於其他襯衫,中性的屬性更強,女生穿上條紋襯衫,可以增添不少男孩般的幹練和帥氣。

  襯衫最簡單的搭配就是穿上牛仔褲,輕鬆收穫復古范兒和潮流感。

 

 

 

  而搭配白色或者杏色、米色的下裝,溫柔知性的氣息則撲面而來。

 

 

  當極簡的條紋遇上宮廷袖、蕾絲、木耳邊、精緻的印花等極富甜美風的元素,則成就了條紋襯衫的浪漫氣息。

 

 

  * 印花襯衫 *

  在各大品牌的秀場上,印花襯衫絕對是一個不可忽視的主角。

 

 

  花朵圖案的印花襯衫簡直和生機盎然的春天”配一臉”,在春光明媚的日子里穿起來,讓整個人都有着春天般的活力與明艷。

 

  幾何、抽象、波普圖案的印花則更能彰顯個性,穿上這樣的襯衫,搭配簡單的褲裝,就有了一種濃濃的復古情懷。

 

 

  * 波點襯衫 *

  波點圖案的復古味道十足,穿上這樣的襯衫,搭配裙裝、褲裝,都有一種變身畫報中復古女郎的感覺。深V的領口,或者將下擺系起來,不但大大提升時髦指數,你想要的”法式風情”也能很輕易得到。

 

 

  * 拼色襯衫 *

  在眾多襯衫款式里,拼色襯衫是最另類的存在,混搭、碰撞等時尚風格都只需一件襯衫就可以輕鬆完成。

  拼色襯衫可以穿出乖乖的小女生味道。

 

 

  也可以輕鬆獲得藝術家般的自由和趣味感。

 

 

  而拼色襯衫帶來的嫵媚或大氣,都是基本款無法企及的。

 

本站聲明:網站內容來源於江西熱線http://www.online.jx.cn,如有侵權請聯繫我們,我們將及時處理

【其他文章推薦】

※【推薦】婚攝外拍包車,可以租用外景車拍婚紗

台東必買名產首選都在"購夠台東"

※南部專業嘉義到府坐月子,台南到府坐月子,高雄到府坐月子收費服務資訊懶人包

※棉花糖女孩穿搭g cup內衣,f 罩杯內衣零著感完美包覆

婚禮影片不NG,婚禮錄影mv精彩重現讓賓客感動熱議

小琉球民宿套裝行程帶你走遍最夯的行程,浮潛找海龜、知名打卡景點、人氣麻花捲,享受渡假樂趣

※找尋專業廣告設計,價格公道大圖輸出,背板品質佳

國家文物局:中法達成共識 中國專家將參与巴黎聖母院修復工作

  記者6日從國家文物局獲悉,中法雙方6日在京簽署合作文件,就巴黎聖母院修復開展合作,中國專家將參與巴黎聖母院修復工作。

  根據這份文件,中法雙方將在2020年確定巴黎聖母院保護修複合作的主題、模式及中方專家人選,儘早選派中國專家與法國團隊共同參與現場修復工作。

  文件還明確中法雙方將就陝西秦始皇陵兵馬俑保護開展技術與科學交流及培訓項目。

  “以文明交流超越文明隔閡,以文明互鑒超越文明衝突,以文明共存超越文明優越。”國家文物局局長劉玉珠表示,今年4月巴黎聖母院發生火災後,中法文化遺產主管部門間多次函件來往,討論合作設想。巴黎聖母院是法國乃至歐洲的文明象徵之一,其火災後修復工作受到法國國內的高度重視和國際社會的高度關注。秦始皇陵兵馬俑是享有國際盛譽的中國文化遺產,其保護研究也一直廣受國際關注。選取巴黎聖母院和秦始皇陵兵馬俑這兩個兩國各自最具標誌性的文化遺產開展保護修復和研究,將極大拓展中法文化遺產合作的深度,在世界範圍內產生積極示範效應。(記者施雨岑)

本站聲明:網站內容來源再生能源資訊網http://toptour.cn/,如有侵權請聯繫我們,我們將及時處理

【其他文章推薦】

※廣受好評的【機場接送推薦

租車接送服務需要另外加價嗎?

台東人氣名產台東人氣伴手禮,熱門獨家商品,現貨供應中

※坐月子經驗談-新竹到府坐月子媽媽心得分享與交流

※給婚攝的迎娶婚禮錄影必拍清單,沒拍到您一定會後悔!

※旅遊不求人,帶你掌握小琉球民宿海景攻略

※各類招牌、海報、大圖輸出,急件製作施工!

Chrome Extension 小試牛刀

 

自從有了Chrome以後,就喜歡上了這個瀏覽器,從此IE 886了。

以前作爬蟲,做登錄,做數據採集,做數據處理等各種功能,後來H5出來后,出現了,除了Session/Cookie 出了Local Storage,暫時還沒有更好的辦法獲取Local Storage。由於處理的數據比較少,所以決定研究一下Chrome Extension。

 

百度了一下Chrome Extension,可以通過Chrome Extension 官網進行學習,簡單上手。網址:

要解決的問題:

公司OA使用了很多年了,其中的流程備案記錄很少關注查看,今天公司通知最近要檢查,確認大家是否都看了,否則會進行處罰。今天要解決的問題就是自動把所有的未查看過的抄送記錄,都確認為已閱讀。

解決方案:

本來可以通過SQL語句,修改數據庫的是否閱讀狀態。這是最近單的方式,但是和Chrome Extension 就沒有關係了。

所以還是通過模擬的方式,通過點擊一個按鈕自動瀏覽本頁的所有標記為未讀的記錄。

操作記錄:

進入流程抄送記錄,點擊【自動瀏覽】開始操作。

 

 

 

 

點擊自動瀏覽后,會自動在該Chrome頁面上打開多個瀏覽器頁簽显示所有未讀的記錄

軟件開發中問題匯總:

怎麼使用Jquery

自動使用Juquery原來,對原生的js是越來越陌生了,寫Js第一件事就是下載一個Jquery用上。

 

 

 

 

在 manifest.json中配置對應的jquery路徑,然後在contentscript.js和background.js中就可以使用Jquery了。

Chrome Extension的圖標怎麼設置呢?

看到上面manifest.json中的icons屬性了嗎?設置上對應的圖標即可。注意大小。

點擊Chrome Extension圖標,展示的頁面

這是一個特別特別簡單的html頁面,只有一個按鈕,最後加了一個index.js的js文件,一定要引用到最後。Js文件主要是對該彈出頁進行操作。

這個插件只有一個動作,就是點擊上面的【自動瀏覽】按鈕。

 

 

 

點擊【自動瀏覽】按鈕的邏輯

點擊按鈕后,按鈕顏色編成藍色,如果有其他按鈕,則其他按鈕字體顏色為黑色,另外:點擊按鈕后,與當前網頁進行通訊,返回頁面上所有沒有瀏覽記錄的ID,並用【;】分割。

 

處理網頁數據的頁面邏輯

通過jquery查詢當前頁面中所有的未讀記錄,遍歷並把所有的id用【;】分割。

一定要有return true.

 

 

 

寫在最後:

剛開始結束的時候,經歷了各種坎坷,

 

 

由於是Chrome Extension與頁面的數據進行通訊,各種搞不定,現在基本可以通過這個模式化的界面與各種服務、http頁面等進行互操作了。

通過這次Chrome Extension的開發,不僅重新熟悉了各種js,而且最重要的是,以後簡單的爬蟲,再也不用打開vs,吭哧坑成的編程啦。

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※全國票選五大台東必買台東伴手禮最佳商品哪裡買的到?

※月子中心貴鬆鬆,找對到府月嫂省一半,更讓你事半功倍!!    

※女孩困擾找不到『i cup內衣』?不必擔心專業內衣網購平台嚨底家

※機場接送服務包括:大陸機場接送以及桃園機場接送服務。

※最美的渡假聖地!享受無敵海景小琉球民宿推薦,旅遊達人,教你怎麼玩~

※嚴選台中火車站周邊熱鬧景點-台中一中住宿優惠!

※各類招牌、海報、大圖輸出,急件製作施工!

Flutter之環境配置與項目搭建,React-Native windows環境搭建記錄,React Naive之macOs環境配置記錄(iOS Android)

Flutter之環境配置與項目搭建

一,介紹

1.1,

       是一種 易於學習、 易於擴展、並且可以部署到 任何地方 的 應用 編程 語言。並且同時借鑒了Java和JavaScript。Dart在靜態語法方面和Java非常相似,如類型定義、函數聲明、泛型等,而在動態特性方面又和JavaScript很像,如函數式特性、異步支持等。

1.2,

        是 Google推出並開源的移動應用開發框架,主打跨平台、高保真、高性能。開發者可以通過 Dart語言開發 App,一套代碼同時運行在 iOS 和 Android平台。 Flutter提供了豐富的組件、接口,開發者可以很快地為 Flutter添加 native擴展。同時 Flutter還使用 Native引擎渲染視圖。

二,開發環境配置

 2.1,安裝Flutter

第一步:配置鏡像

由於在國內訪問Flutter有時可能會受到限制,Flutter官方為中國開發者搭建了臨時鏡像,大家可以將如下環境變量加入到用戶環境變量中:

1 export PUB_HOSTED_URL=https://pub.flutter-io.cn
2 export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

如下圖所示:

第二步:獲取Flutter SDK

去flutter官網下載其最新可用的安裝包,下載地址: ,打開后如圖所示:

    1. 將安裝包zip解壓到你想安裝Flutter SDK的路徑(如:D:\flutter;注意,不要將flutter安裝到需要一些高權限的路徑如C:\Program Files\)。

    2. 在Flutter安裝目錄的flutter文件下找到flutter_console.bat,雙擊運行並啟動flutter命令行,接下來,你就可以在Flutter命令行運行flutter命令了。

第三步:配置環境變量

如果不配置環境變量,在全局環境中是無法使用flutter命令的,轉到 “控制面板>用戶帳戶>用戶帳戶>更改我的環境變量”,在Path下添加D:\flutter\bin條目,保存即可。

第四步:運行 flutter doctor命令

在Flutter命令行運行如下命令來查看是否還需要安裝其它依賴,如果需要,安裝它們:

1 flutter doctor

該命令檢查你的環境並在命令行窗口中显示報告。Dart SDK已經在打包在Flutter SDK里了,沒有必要單獨安裝Dart。安裝完成后再運行flutter doctor命令來驗證是否安裝成功。

 2.2,windows與mac本配置(模擬器)

windows下sdk與jdk配置,可參考

mac本下sdk與jdk配置,可參考

 2.3,編輯器配置

常用編輯器是VS Code,故此這兒主要介紹VS Code的配置,VS Code支持Flutter運行和調試。

安裝flutter插件

    1. 啟動 VS Code。
    2. 調用 View>Command Palette…。
    3. 輸入 ‘install’, 然後選擇 Extensions: Install Extension action。
    4. 在搜索框輸入 flutter ,在搜索結果列表中選擇 ‘Flutter’, 然後點擊 Install。
    5. 選擇 ‘OK’ 重新啟動 VS Code。
    6. 驗證配置
      • 調用 View>Command Palette…
      • 輸入 ‘doctor’, 然後選擇 ‘Flutter: Run Flutter Doctor’ action。
      • 查看“OUTPUT”窗口中的輸出是否有問題

創建Flutter應用

    1. 啟動 VS Code
    2. 調用 View>Command Palette…
    3. 輸入 ‘flutter’, 然後選擇 ‘Flutter: New Project’ action
    4. 輸入 Project 名稱 (如myapp), 然後按回車鍵
    5. 指定放置項目的位置,然後按藍色的確定按鈕
    6. 等待項目創建繼續,並显示main.dart文件

VS Code格式化dart代碼的快捷方式是shift+alt+f

三,項目搭建

第一步:創建Flutter應用

1 flutter create yingqi_flutter

 第二步:底部tab

 Flutter中的路由管理和原生開發類似,無論是Android還是iOS,導航管理都會維護一個路由棧,路由入棧(push)操作對應打開一個新頁面,路由出棧(pop)操作對應頁面關閉操作,而路由管理主要是指如何來管理路由棧。

1  final result =
2         await Navigator.of(context).push(MaterialPageRoute(builder: (context) {
3       return LoginPage();
4     }));
1  Navigator.pop(context, "refresh");

  1 class AppHomeState extends State<AppHome> {
  2   final appBarTitles = ['首頁', '資訊', '產品', '我的'];
  3  
  4   ... 
  5 
  6   int _tabIndex = 0;
  7 
  8   var tabImages;
  9   var _body;
 10   var pages;
 11 
 12   Image getTabImage(path) {
 13     return Image.asset(path, width: 20.0, height: 20.0);
 14   }
 15 
 16   @override
 17   void initState() {
 18     super.initState();
 19 
 20    ...
 21 
 22     });
 23     pages = <Widget>[HomePage(), NewsPage(), ProductPage(), MyPage()];
 24     if (tabImages == null) {
 25       tabImages = [
 26         [
 27           getTabImage('images/ic_nav_news_normal.png'),
 28           getTabImage('images/ic_nav_news_actived.png')
 29         ],
 30         [
 31           getTabImage('images/ic_nav_tweet_normal.png'),
 32           getTabImage('images/ic_nav_tweet_actived.png')
 33         ],
 34         [
 35           getTabImage('images/ic_nav_discover_normal.png'),
 36           getTabImage('images/ic_nav_discover_actived.png')
 37         ],
 38         [
 39           getTabImage('images/ic_nav_my_normal.png'),
 40           getTabImage('images/ic_nav_my_pressed.png')
 41         ]
 42       ];
 43     }
 44   }
 45 
 46   TextStyle getTabTextStyle(int curIndex) {
 47     if (curIndex == _tabIndex) {
 48       return tabTextStyleSelected;
 49     }
 50     return tabTextStyleNormal;
 51   }
 52 
 53   Image getTabIcon(int curIndex) {
 54     if (curIndex == _tabIndex) {
 55       return tabImages[curIndex][1];
 56     }
 57     return tabImages[curIndex][0];
 58   }
 59 
 60   Text getTabTitle(int curIndex) {
 61     return Text(appBarTitles[curIndex], style: getTabTextStyle(curIndex));
 62   }
 63 
 64   @override
 65   Widget build(BuildContext context) {
 66     _body = IndexedStack(
 67       children: pages,
 68       index: _tabIndex,
 69     );
 70     return MaterialApp( 74       home: Scaffold( 80         body: _body,
 81         bottomNavigationBar: CupertinoTabBar(
 82           items: <BottomNavigationBarItem>[
 83             BottomNavigationBarItem(
 84                 icon: getTabIcon(0),
 85                 title: getTabTitle(0)),
 86             BottomNavigationBarItem(
 87                 icon: getTabIcon(1),
 88                 title: getTabTitle(1)),
 89             BottomNavigationBarItem(
 90                 icon: getTabIcon(2),
 91                 title: getTabTitle(2)),
 92             BottomNavigationBarItem(
 93                 icon: getTabIcon(3),
 94                 title: getTabTitle(3)),
 95           ],
 96           currentIndex: _tabIndex,
 97           onTap: (index) {
 98             setState((){
 99               _tabIndex = index;
100             });
101           },
102         ),
103       ),
104     );
105   }
106 }

 第三步:包管理與資源配置

Flutter項目默認的配置文件是pubspec.yaml,包與資源配置,均修改此文件

包配置如下圖所示:

    • dependencies:應用或包依賴的其它包或插件。
    • flutter:flutter相關的配置選項。

http: ^0.12.0就是項目中需要使用外部包配置,使用如下命令即可下載:

1 flutter packages get

資源配置如下圖所示:

 

 需要使用什麼資源,以圖片中的格式在assets下繼續添加即可。

 第四步:數據緩存

1,在pubspec.yaml文件中,添加如下包:

1   shared_preferences: ^0.4.3

2,數據記錄類

1 import 'package:shared_preferences/shared_preferences.dart';
2 import 'dart:async';
3 
4 class DataUtils {
5 
6 ...
7 
8 }

3,用戶登錄信息操作

 1   static const String SP_USER_NAME = "name";
 2   static const String SP_USER_ID = "userId";
 3   static const String SP_IS_LOGIN = "isLogin";
 4 
 5   // 保存用戶登錄信息,data中包含了token等信息
 6   static saveLoginInfo(Map data) async {
 7     if (data != null) {
 8       SharedPreferences sp = await SharedPreferences.getInstance();
 9       String userId = data['UserId'];
10       await sp.setString(SP_USER_ID, userId);
11       String name = data['Name'];
12       await sp.setString(SP_USER_NAME, name);
13       await sp.setBool(SP_IS_LOGIN, true);
14     }
15   }
16 
17   // 清除登錄信息
18   static clearLoginInfo() async {
19     SharedPreferences sp = await SharedPreferences.getInstance();
20     await sp.setString(SP_USER_ID, "");
21     await sp.setString(SP_USER_NAME, "");
22     await sp.setBool(SP_IS_LOGIN, false);
23   }
24 
25  // 獲取用戶登錄信息
26   static Future<LoginInfo> getLoginInfo() async {
27      SharedPreferences sp = await SharedPreferences.getInstance();
28     bool isLogin = sp.getBool(SP_IS_LOGIN);
29     if (isLogin == null || !isLogin) {
30       return null;
31     }
32     LoginInfo loginInfo = LoginInfo();
33     loginInfo.userId = sp.getString(SP_USER_ID);
34     loginInfo.name = sp.getString(SP_USER_NAME);
35     return loginInfo;
36   }

 下一章->

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※【推薦】婚攝外拍包車,可以租用外景車拍婚紗

台東必買名產首選都在"購夠台東"

※南部專業嘉義到府坐月子,台南到府坐月子,高雄到府坐月子收費服務資訊懶人包

※棉花糖女孩穿搭g cup內衣,f 罩杯內衣零著感完美包覆

婚禮影片不NG,婚禮錄影mv精彩重現讓賓客感動熱議

小琉球民宿套裝行程帶你走遍最夯的行程,浮潛找海龜、知名打卡景點、人氣麻花捲,享受渡假樂趣

※找尋專業廣告設計,價格公道大圖輸出,背板品質佳

《Java多線程面試題》系列-創建線程的三種方法及其區別

1. 創建線程的三種方法及其區別

1.1 繼承Thread類

首先,定義Thread類的子類並重寫run()方法:

package com.zwwhnly.springbootaction.javabase.thread;

public class MyFirstThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.printf("[MyFirstThread]輸出:%d,當前線程名稱:%s\n",
                    i, getName());
        }
    }
}

然後,創建該子類的實例並調用start()方法啟動線程:

package com.zwwhnly.springbootaction.javabase.thread;

public class ThreadTest {
    public static void main(String[] args) {
        System.out.println("主線程開始執行,當前線程名稱:" +
                Thread.currentThread().getName());

        Thread firstThread = new MyFirstThread();
        firstThread.start();

        System.out.println("主線程執行結束,當前線程名稱:" +
                Thread.currentThread().getName());
    }
}

運行結果如下所示:

主線程開始執行,當前線程名稱:main

主線程執行結束,當前線程名稱:main

[MyFirstThread]輸出:0,當前線程名稱:Thread-0

[MyFirstThread]輸出:1,當前線程名稱:Thread-0

[MyFirstThread]輸出:2,當前線程名稱:Thread-0

[MyFirstThread]輸出:3,當前線程名稱:Thread-0

[MyFirstThread]輸出:4,當前線程名稱:Thread-0

從運行結果可以看出以下2個問題:

  1. 程序中存在2個線程,分別為主線程main和自定義的線程Thread-0。
  2. 調用firstThread.start();,run()方法體中的代碼並沒有立即執行,而是異步執行的。

查看Thread類的源碼,可以發現Thread類實現了接口Runnable:

public class Thread implements Runnable {
    // 省略其它代碼
}

這裡是重點,面試常問!

1.2 實現Runnable接口(推薦)

首先,定義Runnable接口的實現類並實現run()方法:

package com.zwwhnly.springbootaction.javabase.thread;

public class MySecondThread implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.printf("[MySecondThread]輸出:%d,當前線程名稱:%s\n",
                    i, Thread.currentThread().getName());
        }
    }
}

然後,調用Thread類的構造函數創建Thread實例並調用start()方法啟動線程:

package com.zwwhnly.springbootaction.javabase.thread;

public class ThreadTest {
    public static void main(String[] args) {
        Runnable target = new MySecondThread();
        Thread secondThread = new Thread(target);
        secondThread.start();
    }
}

運行結果如下所示:

主線程開始執行,當前線程名稱:main

主線程執行結束,當前線程名稱:main

[MySecondThread]輸出:0,當前線程名稱:Thread-0

[MySecondThread]輸出:1,當前線程名稱:Thread-0

[MySecondThread]輸出:2,當前線程名稱:Thread-0

[MySecondThread]輸出:3,當前線程名稱:Thread-0

[MySecondThread]輸出:4,當前線程名稱:Thread-0

可以看出,使用這種方式和繼承Thread類的運行結果是一樣的。

1.3 實現Callable接口

首先,定義Callable接口的實現類並實現call()方法:

package com.zwwhnly.springbootaction.javabase.thread;

import java.util.Random;
import java.util.concurrent.Callable;

public class MyThirdThread implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        Thread.sleep(6 * 1000);
        return new Random().nextInt();
    }
}

然後,調用FutureTask類的構造函數創建FutureTask實例:

Callable<Integer> callable = new MyThirdThread();
FutureTask<Integer> futureTask = new FutureTask<>(callable);

最後,調用Thread類的構造函數創建Thread實例並調用start()方法啟動線程:

package com.zwwhnly.springbootaction.javabase.thread;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class ThreadTest {
    public static void main(String[] args) {
        System.out.println("主線程開始執行,當前線程名稱:" +
                Thread.currentThread().getName());

        Callable<Integer> callable = new MyThirdThread();
        FutureTask<Integer> futureTask = new FutureTask<>(callable);
        new Thread(futureTask).start();

        try {
            System.out.println("futureTask.isDone() return:" + futureTask.isDone());

            System.out.println(futureTask.get());

            System.out.println("futureTask.isDone() return:" + futureTask.isDone());
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }

        System.out.println("主線程執行結束,當前線程名稱:" +
                Thread.currentThread().getName());
    }
}

運行結果如下所示:

主線程開始執行,當前線程名稱:main

futureTask.isDone() return:false

-1193053528

futureTask.isDone() return:true

主線程執行結束,當前線程名稱:main

可以發現,使用Callable接口這種方式,我們可以通過futureTask.get()獲取到線程的執行結果,而之前的2種方式,都是沒有返回值的。

注意事項:調用futureTask.get()獲取線程的執行結果時,主線程會阻塞直到獲取到結果。

阻塞效果如下圖所示:

1.4 區別

以下是重點,面試常問!

  1. Java中,類僅支持單繼承,如果一個類繼承了Thread類,就無法再繼承其它類,因此,如果一個類既要繼承其它的類,又必須創建為一個線程,就可以使用實現Runable接口的方式。
  2. 使用實現Runable接口的方式創建的線程可以處理同一資源,實現資源的共享。
  3. 使用實現Callable接口的方式創建的線程,可以獲取到線程執行的返回值、是否執行完成等信息。

關於第2點,可以通過如下示例來理解。

假如我們總共有10張票(共享的資源),為了提升售票的效率,開了3個線程來售賣,代碼如下所示:

package com.zwwhnly.springbootaction.javabase.thread;

public class SaleTicketThread implements Runnable {
    private int quantity = 10;

    @Override
    public void run() {
        while (quantity > 0) {
            System.out.println(quantity-- + " is saled by " +
                    Thread.currentThread().getName());
        }
    }
}
public static void main(String[] args) {
    Runnable runnable = new SaleTicketThread();
    Thread saleTicketThread1 = new Thread(runnable);
    Thread saleTicketThread2 = new Thread(runnable);
    Thread saleTicketThread3 = new Thread(runnable);

    saleTicketThread1.start();
    saleTicketThread2.start();
    saleTicketThread3.start();
}

因為3個線程都是異步執行的,因此每次的運行結果可能是不一樣,以下列舉2次不同的運行結果。

第1次運行結果:

10 is saled by Thread-0

8 is saled by Thread-0

7 is saled by Thread-0

5 is saled by Thread-0

9 is saled by Thread-1

3 is saled by Thread-1

2 is saled by Thread-1

1 is saled by Thread-1

4 is saled by Thread-0

6 is saled by Thread-2

第2次運行結果:

10 is saled by Thread-0

9 is saled by Thread-0

8 is saled by Thread-0

7 is saled by Thread-0

6 is saled by Thread-0

5 is saled by Thread-0

3 is saled by Thread-0

2 is saled by Thread-0

4 is saled by Thread-2

1 is saled by Thread-1

如果將上面的SaleTicketThread修改成繼承Thread類的方式,就變成了3個線程各自擁有10張票,即變成了30張票,而不是3個線程共享10張票。

2. Thread類start()和run()的區別

2.1 示例

因為實現Runnable接口的優勢,基本上實現多線程都使用的是該種方式,所以我們將之前定義的MyFirstThread也修改為實現Runnable接口的方式:

package com.zwwhnly.springbootaction.javabase.thread;

public class MyFirstThread implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.printf("[MyFirstThread]輸出:%d,當前線程名稱:%s\n",
                    i, Thread.currentThread().getName());
        }
    }
}

然後仍然沿用之前定義的MyFirstThread、MySecondThread,我們先看下調用start()的效果:

package com.zwwhnly.springbootaction.javabase.thread;

public class ThreadTest {
    public static void main(String[] args) {

        System.out.println("主線程開始執行,當前線程名稱:" +
                Thread.currentThread().getName());

        Thread firstThread = new Thread(new MyFirstThread());

        Runnable target = new MySecondThread();
        Thread secondThread = new Thread(target);

        firstThread.start();
        secondThread.start();

        System.out.println("主線程執行結束,當前線程名稱:" +
                Thread.currentThread().getName());
    }
}

運行結果(注意:多次運行,結果可能不一樣):

主線程開始執行,當前線程名稱:main

[MyFirstThread]輸出:0,當前線程名稱:Thread-0

[MyFirstThread]輸出:1,當前線程名稱:Thread-0

[MySecondThread]輸出:0,當前線程名稱:Thread-1

主線程執行結束,當前線程名稱:main

[MySecondThread]輸出:1,當前線程名稱:Thread-1

[MySecondThread]輸出:2,當前線程名稱:Thread-1

[MySecondThread]輸出:3,當前線程名稱:Thread-1

[MySecondThread]輸出:4,當前線程名稱:Thread-1

[MyFirstThread]輸出:2,當前線程名稱:Thread-0

[MyFirstThread]輸出:3,當前線程名稱:Thread-0

[MyFirstThread]輸出:4,當前線程名稱:Thread-0

可以看出,調用start()方法后,程序中有3個線程,分別為主線程main、Thread-0、Thread-1,而且執行順序不是按順序執行的,存在不確定性。

然後將start()方法修改為run()方法,如下所示:

firstThread.run();
secondThread.run();

此時的運行結果如下所示(多次運行,結果是一樣的):

主線程開始執行,當前線程名稱:main

[MyFirstThread]輸出:0,當前線程名稱:main

[MyFirstThread]輸出:1,當前線程名稱:main

[MyFirstThread]輸出:2,當前線程名稱:main

[MyFirstThread]輸出:3,當前線程名稱:main

[MyFirstThread]輸出:4,當前線程名稱:main

[MySecondThread]輸出:0,當前線程名稱:main

[MySecondThread]輸出:1,當前線程名稱:main

[MySecondThread]輸出:2,當前線程名稱:main

[MySecondThread]輸出:3,當前線程名稱:main

[MySecondThread]輸出:4,當前線程名稱:main

主線程執行結束,當前線程名稱:main

可以看出,調用run()方法后,程序中只有一個主線程,自定義的2個線程並沒有啟動,而且執行順序也是按順序執行的。

1.2 總結

以下是重點,面試常問!

  • run()方法只是一個普通方法,調用之後程序會等待run()方法執行完畢,所以是串行執行,而不是并行執行。
  • start()方法會啟動一個線程,當線程得到CPU資源後會自動執行run()方法體中的內容,實現真正的併發執行。

3. Runnable和Callable的區別

在文章前面的章節中(1.2 實現Runnable接口 和1.3 實現Callable接口),我們了解了如何使用Runnable、Callable接口來創建線程,現在我們分別看下Runable和Callable接口的定義,其中,Runable接口的定義如下所示:

public interface Runnable {
    public abstract void run();
}

Callable接口的定義如下所示:

public interface Callable<V> {
    V call() throws Exception;
}

由此可以看出,Runnable和Callable的區別主要有以下幾點:

  1. Runable的執行方法是run(),Callable的執行方法是call()
  2. call()方法可以拋出異常,run()方法如果有異常只能在內部消化
  3. 實現Runnable接口的線程沒有返回值,實現Callable接口的線程能返回執行結果
  4. 實現Callable接口的線程,可以和FutureTask一起使用,獲取到線程是否完成、線程是否取消、線程執行結果,也可以取消線程的執行。

4. 源碼及參考

源碼地址:,歡迎下載。

如果覺得文章寫的不錯,歡迎關注我的微信公眾號:「申城異鄉人」,所有博客會同步更新。

如果有興趣,也可以添加我的微信:zwwhnly_002,一起交流和探討技術。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣受好評的【機場接送推薦

租車接送服務需要另外加價嗎?

台東人氣名產台東人氣伴手禮,熱門獨家商品,現貨供應中

※坐月子經驗談-新竹到府坐月子媽媽心得分享與交流

※給婚攝的迎娶婚禮錄影必拍清單,沒拍到您一定會後悔!

※旅遊不求人,帶你掌握小琉球民宿海景攻略

※各類招牌、海報、大圖輸出,急件製作施工!

2020年春晚將應用5G、8K等創新技術

  新華社北京1月14日電(記者余俊傑)中央廣播電視總台14日在京舉行2020年春節聯歡晚會創新應用啟動儀式,將利用5G、8K、4K和VR等新技術為觀眾帶來全新觀看體驗。

  據介紹,基於5G網絡的移動拍攝和景觀等機位的4K信號,都將接入春晚製作系統,為春晚全4K智能直播提供技術支持。同時,總台還將採用5G+8K技術實現多機位拍攝,並製作8K版春晚。

本站聲明:網站內容來源於裝修網http://et.21cn.com/,如有侵權,請聯繫我們

【其他文章推薦】

※想知道台北團體制服哪裡比較便宜嗎?

※專業台北團體服訂制、設計一條龍服務!

※住宿攻略懶人包,精選平價舒適一中街住宿,一中街民宿出遊的休息好去處!

※2020票選台東必買 最佳節慶送禮、年節伴手禮,釋迦禮盒,小農禮盒深受國人的青睞!

※各類招牌、海報、大圖輸出,急件製作施工!

讓民歌成為永遠的時尚

讓民歌成為永遠的時尚

受到現代生活猛烈衝擊的、已經在很大程度上被視為文化遺產的民歌,還可以有血有肉地重新進入多數人的感性世界嗎?民歌可以成為一種青春、主流、時尚的生活元素嗎?近日,山西省政協委員、音樂家王京榮關於民歌傳承的系列觀點引起了媒體的關注,這種關注耐人尋味。我們應該更深地思考這個問題。

坦率地說,在現代社會來臨之前,民歌一直就是時尚。“歌謠所生,宜自生民始也。”作為口頭語言藝術的民歌,其起源即昭示着人類的起源。人類自脫離動物界開始,也就開始了超越性的審美活動,這種審美很自然地體現在他們的言談歌詠之中,作為中國文學起源佐證的兩言《彈歌》:“段竹,續竹,飛土,逐肉”就是越人之歌。而作為中國文學源頭的元典《詩經》的“國風”,也是民歌歌詞的總匯。從先秦的歌謠,到漢魏樂府,再到唐宋間的曲子詞、竹枝詞等體式的流變,民歌生長在百姓的唇吻和心靈之上,始終是社會風尚的主要組成部分。明代沈德符記錄了萬曆年間江南小調的流行狀況:“不問南北,不問男女,不問老幼良賤,人人習之,亦人人喜聽之,以致刊布成帙。舉世傳誦,沁人心腑。”馬克思說:“民歌是唯一的歷史傳說和編年史。”我們可以說,民歌又何嘗不是一部時尚史呢?

問題是,今天當多數民歌所塑造表現的農耕甚至遊牧、漁獵生活情境離絕大多數人縹緲無跡的時候,我們還需要和民歌生活在一起嗎?

本雅明是現代知識分子中間較早對工業文化進行深刻批判的知識分子之一。他認為只有潛入歷史的廢墟中收集那些傳統世界中間的碎片,並把它重新綴合起來,變成一個完整的體驗世界,人才能在這種整體美學的感受中間得到解放。本雅明舉出了兩種觀照世界的方式,一個是以現代藝術為代表的寓言式地理解世界的方式,是撕裂的、片斷的、多元衝突的,和這種直覺相對的是以古希臘為代表的象徵式的直覺方式。本雅明認為在這種象徵中“自然被改變了的面貌,在救贖之光閃現的瞬間得以揭示出來。而這個東西在寓言中,觀察者面對的是歷史彌留之際的內容,是僵死的原始的大地景象”。也就是說作為寓言的現代藝術所帶來的這個世界,也許很壯觀但是缺乏生命之氣。

本雅明懷鄉、懷舊,他尋找原始藝術的光暈,對過去如此迷戀和痴情,他到底想呼喚什麼?我們在欣賞民歌的時候我們所感到的是這種單純、寧靜、質樸、厚實,也不乏熱烈、奔放,還有崇高、莊重等其他情感和美學的元素,我們所看到的是這種生存的樣態。我們激動的到底是什麼?我們所感到激動的就是在傳統人文世界中,我們找到了人應該為人的那種存在的方式,我們覺得人應該是那樣活着,人應該那樣和這個世界進行美好的連接,應該那樣詩意地棲居,人才像個人。這種人的本真的狀態,並不以樣貌的陳舊而過時。反倒是,我們越是在非熟人社會孤獨地存在,越需要追尋這種源自文化母體深處的熟稔和親切。

傳統社會以大分工的形式存在,它的進步和落後、文明的積累和它對人的異化是同時存在的,它最大的缺憾是物質的貧乏和政治的奴役。根本上解決這個問題就是交給現代社會的任務。我們能做的是,將這種現代性理解為並非全然固定的僵死結構,它應該是開放的,既對空間開放也對時間開放,它應該是一種建構性的場域,在這個場域中間我們可以把現代性變得更加符合人的需要,人詩意生存的需要。這樣來理解,傳統就不再是一個被降服、被審判、被恥笑、被切割、被虛假玩弄的概念,而應該是喚起我們敬畏感的、我們藉此和世界真誠連接的一種方式。我們通過傳統洞開人類生命的本質存在,回歸人類應然的統一存在。民歌正是自傳統社會以來,人們和世界真誠連接、自然洞開的一種生命的打開方式。在民歌的歌唱中,藝術活動和人的肉身體驗、生命器官高度合一,是在深層次上對人的主體性的高度弘揚。在歌唱中,身體這一自然客體、心靈寓體的能量被強烈激發,人的主體意義被充分地釋放,這是藝術的解放,更是人的解放。

今天,我們理解民歌價值的時候,應該有更寬廣和深層的追問,我們對民歌藝術存在和發展的生命力才可能會有更多的期待。沒錯,對民歌的自信,正是民族文化自信的一部分。正因為這樣我們應該向致力於民歌保護、挖掘和創造性轉化的藝術家、理論家致敬。王京榮先生所在的山西華夏之根藝術團,多年來致力於中國民族音樂和民歌的推廣和弘揚,他們曾經創造了民族交響樂《華夏之根》、說唱劇《解放》和兒童劇《紅星楊》等著名作品,其中說唱劇《解放》,大量地重建了民歌元素和當代審美情境的整體性聯繫,受到觀眾的熱烈歡迎,連續演出了1000多場。一個民歌大省的藝術團,盡到了守土的職責,也讓我們看出了復興的端倪,明晰了可能的路徑。

我國著名的思想家梁啟超讚頌民歌說:人將自己一瞬間的情感,用極簡短極自然的音節表現出來,並無意要它流傳。因為這種天籟與人類好美性最相契合,所以,好的歌謠能令人人傳誦,歷千年不廢。其感人之深,有時還駕於專門詩家之上。

本站聲明:網站內容來源於江西熱線http://www.online.jx.cn,如有侵權請聯繫我們,我們將及時處理

【其他文章推薦】

※全國票選五大台東必買台東伴手禮最佳商品哪裡買的到?

※月子中心貴鬆鬆,找對到府月嫂省一半,更讓你事半功倍!!    

※女孩困擾找不到『i cup內衣』?不必擔心專業內衣網購平台嚨底家

※機場接送服務包括:大陸機場接送以及桃園機場接送服務。

※最美的渡假聖地!享受無敵海景小琉球民宿推薦,旅遊達人,教你怎麼玩~

※嚴選台中火車站周邊熱鬧景點-台中一中住宿優惠!

※各類招牌、海報、大圖輸出,急件製作施工!

男士夏季穿搭造型小竅門

男士夏季穿搭造型小竅門

夏季雖然在穿衣上很簡單,衣服款式也很簡單,但是在穿搭造型上它也有着一些不為人知的小竅門,這裏帶大家來了解下。

1.將他人的視線集中在你的上半身

如果你是個子小,矮小腿短的,那麼這第一點竅門一定要記住了,將他人的視線集中在你的上半身,簡單的說,就是在穿搭上可以穿一些有着比較簡約版型的上衣單品,比如常見的,有紋理線條、印花或者是稍微亮色的上衣,然後跟下身一些有着飽滿色彩的褲子搭配,這樣就會很自然的人家在視線上就會集中在你的上半身上,對於個子矮小的男士來說,這可以很巧妙的掩飾你的身高。營造出一種視覺誤差的效果。

2.想要穿出高級感 身上顏色不能多

如果自身的身形線條不是很完美的,那麼又想穿出高級感的,小編在這給大家最好的建議就是身上衣服單品的顏色絕對不能多,最好保持在2——3個即可,因為過多的顏色不僅顯得拖沓累贅還會給人帶來一種俗氣七彩彩虹的樣子,這可是穿搭造型上的一大禁忌,所以切莫犯這樣的錯誤。

3.自然地運用“同色系

穿衣搭配只要懂得自然地運用同色系穿搭竅門,那麼再怎麼簡單的單品也可以穿出屬於自我的風格,尤其是一些身高不高的男士來說,在夏季里更加要懂得這點,因為同色系的穿搭可以使全身有着統一的色感,視覺上有着明顯的增高效果,比如,常見的黑+黑搭配,那麼显示出來的穿搭造型肯定是顯高又瘦的,不信你試試。

4.合身款式顯利落有精神

一個人如果長得再帥,但是如果基本的穿搭竅門都不懂,那麼也沒用,對於夏季中的男士們來說,選擇的上衣一定要以合身的款式為首要條件,因為一些過於寬鬆或者是長度過長的短袖都會讓你顯得沒精神,拉低你的衣品,甚至還會影響到你的身高,所以只有恰好合身款式的衣服才會凹現出大方得體的造型。

5.褲子的選擇至關重要

誰不想穿衣顯高顯瘦的,因此褲子的選擇也是很重要的單品,褲子如果選得好,那麼在視覺上就有着增高的效果,但是如果是過於寬鬆過長的褲子,那麼對身高的影響是很大的哦,像在夏季里,如果身高沒有170以上的盡量的不要穿一些五分長度的褲子,因此這樣會顯得你更加的矮小。

本站聲明:網站內容來源於江西熱線http://www.online.jx.cn,如有侵權請聯繫我們,我們將及時處理

【其他文章推薦】

※【推薦】婚攝外拍包車,可以租用外景車拍婚紗

台東必買名產首選都在"購夠台東"

※南部專業嘉義到府坐月子,台南到府坐月子,高雄到府坐月子收費服務資訊懶人包

※棉花糖女孩穿搭g cup內衣,f 罩杯內衣零著感完美包覆

婚禮影片不NG,婚禮錄影mv精彩重現讓賓客感動熱議

小琉球民宿套裝行程帶你走遍最夯的行程,浮潛找海龜、知名打卡景點、人氣麻花捲,享受渡假樂趣

※找尋專業廣告設計,價格公道大圖輸出,背板品質佳