Spring Boot 理論總結(jié)

1胸完、什么是springboot

答:Spring Boot 是 Spring 開源組織下的子項(xiàng)目轨域,是 Spring 組件一站式處理方案凛虽,主要是簡(jiǎn)化了使用 Spring 的難度庄新,簡(jiǎn)省了繁重的配置隅茎,提供了各種啟動(dòng)器澄峰,開發(fā)者能快速上手。

2辟犀、Spring Boot有哪些優(yōu)點(diǎn)俏竞?

答:
1.快速構(gòu)建項(xiàng)目
2.對(duì)主流開發(fā)框架無(wú)配置集成
3.項(xiàng)目可獨(dú)立運(yùn)行绸硕,無(wú)需外部依賴Servlet容器
4.極大的提高了開發(fā) 和部署效率
5.提供運(yùn)行時(shí)的監(jiān)控
6.與云計(jì)算的天然集成
缺點(diǎn):
版本迭代更新快,一些模塊變動(dòng)大魂毁;
由于自己不用做配置玻佩,報(bào)錯(cuò)時(shí)很難定位;
網(wǎng)上現(xiàn)成的解決方法少席楚;

3 Spring Boot 最大的優(yōu)勢(shì)是什么呢咬崔?體現(xiàn)在哪些方面?

(1)Spring Boot 的最大的優(yōu)勢(shì)是“約定優(yōu)于配置“烦秩。
“約定優(yōu)于配置“使開發(fā)人員按照約定的方式來進(jìn)行編程垮斯,可以減少軟件開發(fā)人員需做決定的數(shù)量,既簡(jiǎn)單又不失靈活只祠。
(2)Spring Boot Starter兜蠕、Spring Boot Jpa 都是“約定優(yōu)于配置“的一種體現(xiàn)。
Spring Boot Starter 在啟動(dòng)的過程中會(huì)根據(jù)約定的信息對(duì)資源進(jìn)行初始化抛寝,Spring Boot Jpa 通過約定的方式來自動(dòng)生成 Sql 熊杨,避免大量無(wú)效代碼編寫。

Spring 盗舰、Spring Boot 和 Spring Cloud 的關(guān)系?

(1)Spring 最初最核心的兩大核心功能 Spring Ioc 和 Spring Aop 成就了 Spring晶府,Spring 在這兩大核心的功能上不斷的發(fā)展,才有了 Spring 事務(wù)岭皂、Spring Mvc 等一系列偉大的產(chǎn)品郊霎,最終成就了 Spring 帝國(guó),到了后期 Spring 幾乎可以解決企業(yè)開發(fā)中的所有問題爷绘。

(2)Spring Boot 是在強(qiáng)大的 Spring 帝國(guó)生態(tài)基礎(chǔ)上面發(fā)展而來书劝,發(fā)明 Spring Boot 不是為了取代 Spring ,是為了讓人們更容易的使用 Spring 。

(3)Spring Cloud 是一系列框架的有序集合土至。
它利用 Spring Boot 的開發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā)购对,如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心陶因、消息總線骡苞、負(fù)載均衡、斷路器楷扬、數(shù)據(jù)監(jiān)控等解幽,都可以用 Spring Boot 的開發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。
Spring Cloud 是為了解決微服務(wù)架構(gòu)中服務(wù)治理而提供的一系列功能的開發(fā)框架烘苹,并且 Spring Cloud 是完全基于 Spring Boot 而開發(fā)躲株,Spring Cloud 利用 Spring Boot 特性整合了開源行業(yè)中優(yōu)秀的組件,整體對(duì)外提供了一套在微服務(wù)架構(gòu)中服務(wù)治理的解決方案镣衡。

SpringBoot和Spring有什么區(qū)別呢霜定?
  1. Spring Boot(自動(dòng)配置(核心))
    可以建立獨(dú)立的Spring應(yīng)用程序档悠,內(nèi)嵌了如Tomcat,Jetty和Undertow這樣的容器望浩,不著再做部署工作可以直接跑起來辖所。
  2. SpringBoot將原有的XML配置改為Java配置,將bean注入改為使用注解注入的方式(@Autowire)磨德,并將多個(gè)xml缘回、properties配置濃縮在一個(gè)appliaction.yml配置文件中。
  3. 提供了一些現(xiàn)有的功能典挑,如量度工具切诀,表單數(shù)據(jù)驗(yàn)證以及一些外部配置這樣的一些第三方功能;
  4. 整合常用依賴(開發(fā)庫(kù)搔弄,例如spring-webmvc、jackson-json丰滑、validation-api和tomcat等)顾犹,提供的POM可以簡(jiǎn)化Maven的配置。當(dāng)我們引入核心依賴時(shí)褒墨,SpringBoot會(huì)自引入其他依賴炫刷。

JPA 和 Hibernate 有哪些區(qū)別?JPA 可以支持動(dòng)態(tài) SQL 嗎郁妈?

(1)因?yàn)镴PA是一種規(guī)范浑玛,提供了一些相關(guān)的接口 不能直接使用,JPA底層需要某種JPA實(shí)現(xiàn)噩咪,Hibernate 是 JPA 的一個(gè)實(shí)現(xiàn)集顾彰。

(2)JPA 是根據(jù)實(shí)體類的注解來創(chuàng)建對(duì)應(yīng)的表和字段,如果需要?jiǎng)討B(tài)創(chuàng)建表或者字段胃碾,需要?jiǎng)討B(tài)構(gòu)建對(duì)應(yīng)的實(shí)體類涨享,再重新調(diào)用Jpa刷新整個(gè)Entity。動(dòng)態(tài)SQL仆百,mybatis支持的最好厕隧,jpa也可以支持,但是沒有Mybatis那么靈活俄周。

5 Spring Boot 的核心配置文件有哪幾個(gè)吁讨?它們的區(qū)別是什么?
  1. Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件峦朗。
    2 :
    (1)application 配置文件這個(gè)容易了解建丧,主要用于 Spring Boot 項(xiàng)目的自動(dòng)化配置。
    (2)bootstrap 配置文件有以下幾個(gè)應(yīng)用場(chǎng)景甚垦。
    使用 Spring Cloud Config 配置中心時(shí)茶鹃,這時(shí)需要在 bootstrap 配置文件中增加連接到配置中心的配置屬性來加載外部配置中心的配置信息涣雕;
    少量固定的不能被覆蓋的屬性;
    少量加密/解密的場(chǎng)景闭翩;
6挣郭、Spring Boot 有哪幾種讀取配置的方式?配置文件有哪幾種格式疗韵?它們有什么區(qū)別兑障?

(1): Spring Boot 可以通過 @PropertySource,@Value,@Environment,@ConfigurationProperties 來綁定變量,
(2)配置文件有2中格式:properties 和 .yml蕉汪,
(3)它們的區(qū)別主要是書寫格式不同流译。另外,.yml 格式不支持@PropertySource注解導(dǎo)入配置者疤。

什么是YAML福澡?

YAML是一種人類可讀的數(shù)據(jù)序列化語(yǔ)言。它通常用于配置文件驹马。
與屬性文件相比,YAML文件具有分層配置數(shù)據(jù),更加結(jié)構(gòu)化革砸,而且更少混淆.

6、如何在 Spring Boot 啟動(dòng)的時(shí)候運(yùn)行少量特定的代碼糯累?

可以實(shí)現(xiàn)接口 ApplicationRunner 或者者 CommandLineRunner算利,這兩個(gè)接口實(shí)現(xiàn)方式一樣,它們都只提供了一個(gè) run 方法.

8泳姐、你如何了解 Spring Boot 配置加載順序效拭?

在 Spring Boot 里面,可以使用以下幾種方式來加載配置胖秒。
1)properties文件缎患;
2)YAML文件;
3)系統(tǒng)環(huán)境變量阎肝;
4)命令行參數(shù)较锡;

10、開啟 Spring Boot 特性有哪幾種方式盗痒?

1)繼承spring-boot-starter-parent項(xiàng)目
2)導(dǎo)入spring-boot-dependencies項(xiàng)目依賴

11蚂蕴、Spring Boot 需要獨(dú)立的容器運(yùn)行嗎?

可以不需要俯邓,內(nèi)置了 Tomcat/ Jetty 等容器骡楼。

12、運(yùn)行 Spring Boot 有哪幾種方式稽鞭?

1)打包用命令或者者放到容器中運(yùn)行
2)用 Maven/ Gradle 插件運(yùn)行
3)直接執(zhí)行 main 方法運(yùn)行

13鸟整、Spring Boot 的自動(dòng)配置是如何實(shí)現(xiàn)的?

Spring Boot 項(xiàng)目的啟動(dòng)注解是@SpringBootApplication(又稱為核心注解),它就是由下面三個(gè)注解組成的:
(1): @SpringBootConfiguration包合了 @Configuration 注解朦蕴,實(shí)現(xiàn)配置文件的功能篮条。
(2): @EnableAutoConfiguration打開自動(dòng)配置的功能弟头,也可以關(guān)閉某個(gè)自動(dòng)配置的選項(xiàng),如關(guān)閉數(shù)據(jù)源自動(dòng)配置功能@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })涉茧。
(3): @ComponentScan Spring組件掃描赴恨。
其中 @EnableAutoConfiguration 是實(shí)現(xiàn)自動(dòng)配置的入口,該注解又通過 @Import 注解導(dǎo)入了AutoConfigurationImportSelector伴栓,在該類中加載 META-INF/spring.factories 的配置信息伦连。然后篩選出以 EnableAutoConfiguration 為 key 的數(shù)據(jù),加載到 IOC 容器中钳垮,實(shí)現(xiàn)自動(dòng)配置功能惑淳!

14 Spring Boot Starter 的工作原理是什么?

答:Spring Boot 在啟動(dòng)時(shí)會(huì)去依賴的 Starter 包中尋找 resources/META-INF/spring.factories 文件饺窿,然后根據(jù)文件中配置的 Jar 包去掃描項(xiàng)目所依賴的 Jar 包歧焦。
根據(jù) spring.factories 配置加載 AutoConfigure 類,
根據(jù) @Conditional 注解的條件,進(jìn)行自動(dòng)配置并將 Bean 注入 Spring Context
總結(jié)一下肚医,其實(shí)就是 Spring Boot 在啟動(dòng)的時(shí)候倚舀,按照約定去讀取 Spring Boot Starter 的配置信息,再根據(jù)配置信息對(duì)資源進(jìn)行初始化忍宋,并注入到 Spring 容器中。這樣 Spring Boot 啟動(dòng)完畢后风罩,就已經(jīng)準(zhǔn)備好了一切資源糠排,使用過程中直接注入對(duì)應(yīng) Bean 資源即可。

17超升、springboot常用的starter有哪些

spring-boot-starter-web 嵌入tomcat和web開發(fā)需要servlet與jsp支持
spring-boot-starter-data-jpa 數(shù)據(jù)庫(kù)支持
spring-boot-starter-data-redis redis數(shù)據(jù)庫(kù)支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方的mybatis集成starter

18入宦、Spring Boot 支持哪些日志框架?推薦和默認(rèn)的日志框架是哪個(gè)室琢?

Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作為日志框架乾闰,
假如你使用 Starters 啟動(dòng)器,Spring Boot 將使用 Logback 作為默認(rèn)日志框架盈滴,

19涯肩、SpringBoot 實(shí)現(xiàn)熱部署有哪幾種方式?

主要有兩種方式:
Spring Loaded
Spring-boot-devtools
Spring-boot-devtools?

如何在不重啟服務(wù)器的情況下在Spring引導(dǎo)時(shí)重新加載我的更改?

(1)這可以通過開發(fā)工具DevTools實(shí)現(xiàn)巢钓,添加DevTools依賴病苗,有了這個(gè)依賴項(xiàng),您保存的任何更改都將重新啟動(dòng)嵌入的tomcat症汹,它有助于提高開發(fā)人員的工作效率硫朦。
(2)Java開發(fā)人員面臨的關(guān)鍵挑戰(zhàn)之一是:將文件更改自動(dòng)部署到服務(wù)器并自動(dòng)重啟服務(wù)器。開發(fā)人員可以在Spring引導(dǎo)時(shí)重新加載更改背镇,而不必重新啟動(dòng)服務(wù)器咬展。這將消除每次手動(dòng)部署更改的需要泽裳。Spring Boot在發(fā)布第一個(gè)版本時(shí)沒有這個(gè)特性。這是開發(fā)人員最需要的特性破婆。
(3)DevTools模塊完全滿足開發(fā)人員的需求涮总。此模塊將在生產(chǎn)環(huán)境中禁用。
它還提供了H2-database控制臺(tái)荠割,以便更好地測(cè)試應(yīng)用程序妹卿。使用以下依賴項(xiàng)

 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId><optional>true</optional>
</dependency>

23、springboot集成mybatis的過程

a: 添加mybatis的starter maven依賴
org.mybatis.spring.boot / mybatis-spring-boot-starter 1.2.0
b: 在mybatis的接口中 添加@Mapper注解
c: 在application.yml配置數(shù)據(jù)源信息

24蔑鹦、什么是嵌入式服務(wù)器夺克?我們?yōu)槭裁匆褂们度胧椒?wù)器呢?思考一下在你的虛擬機(jī)上部署應(yīng)用程序需要些什么??

第一步:安裝 Java
第二部:安裝 Web 或者是應(yīng)用程序的服務(wù)器(Tomat)
第三部:部署應(yīng)用程序 war 包

如果我們想簡(jiǎn)化這些步驟,應(yīng)該如何做呢嚎朽?讓我們來思考如何使服務(wù)器成為應(yīng)用程序的一部分铺纽?
你只需要一個(gè)安裝了 Java 的虛擬機(jī),就可以直接在上面部署應(yīng)用程序了是不是很爽哟忍?這個(gè)想法是嵌入式服務(wù)器的起源狡门。當(dāng)我們創(chuàng)建一個(gè)可以部署的應(yīng)用程序的時(shí)候,我們將會(huì)把服務(wù)器(例如锅很,tomcat)嵌入到可部署的服務(wù)器中其馏。
例如,對(duì)于一個(gè) Spring Boot 應(yīng)用程序來說爆安,你可以生成一個(gè)包含 Embedded Tomcat 的應(yīng)用程序 jar叛复。你就可以像運(yùn)行正常 Java 應(yīng)用程序一樣來運(yùn)行 web 應(yīng)用程序了。
嵌入式服務(wù)器就是我們的可執(zhí)行單元包含服務(wù)器的二進(jìn)制文件(例如扔仓,tomcat.jar)褐奥。

26、shiro和oauth還有cas他們之間的關(guān)系是什么翘簇?問下您公司權(quán)限是如何設(shè)計(jì)撬码,還有就是這幾個(gè)概念的區(qū)別??

cas和oauth是一個(gè)解決單點(diǎn)登錄的組件,shiro主要是負(fù)責(zé)權(quán)限安全方面的工作版保,所以功能點(diǎn)不一致呜笑。但往往需要單點(diǎn)登陸和權(quán)限控制一起來使用,所以就有 cas+shiro或者oauth+shiro這樣的組合彻犁。

token一般是客戶端登錄后服務(wù)端生成的令牌蹈垢,每次訪問服務(wù)端會(huì)進(jìn)行校驗(yàn),一般保存到內(nèi)存即可袖裕,也可以放到其他介質(zhì)曹抬;redis可以做Session共享,如果前端web服務(wù)器有幾臺(tái)負(fù)載,但是需要保持用戶登錄的狀態(tài)谤民,這場(chǎng)景使用比較常見堰酿。
我們公司使用oauth+shiro這樣的方式來做后臺(tái)權(quán)限的管理,oauth負(fù)責(zé)多后臺(tái)統(tǒng)一登錄認(rèn)證张足,shiro負(fù)責(zé)給登錄用戶賦予不同的訪問權(quán)限触创。

28、Spring Cache 三種常用的緩存注解和意義为牍?

@Cacheable 哼绑,用來聲明方法是可緩存,將結(jié)果存儲(chǔ)到緩存中以便后續(xù)使用相同參數(shù)調(diào)用時(shí)不需執(zhí)行實(shí)際的方法碉咆,直接從緩存中取值抖韩。
@CachePut,使用 @CachePut 標(biāo)注的方法在執(zhí)行前疫铜,不會(huì)去檢查緩存中是否存在之前執(zhí)行過的結(jié)果茂浮,而是每次都會(huì)執(zhí)行該方法,并將執(zhí)行結(jié)果以鍵值對(duì)的形式存入指定的緩存中壳咕。
@CacheEvict席揽,是用來標(biāo)注在需要清除緩存元素的方法或類上的,當(dāng)標(biāo)記在一個(gè)類上時(shí)表示其中所有的方法的執(zhí)行都會(huì)觸發(fā)緩存的清除操作谓厘。

3.什么是Java Config?

Spring Java Config是Spring社區(qū)的一個(gè)產(chǎn)品幌羞,它提供了一種純java方法來配置Spring IoC容器。因此竟稳,它有助于避免使用XML配置属桦。使用JavaConfig的優(yōu)點(diǎn)是:
(1)面向?qū)ο蟮呐渲谩R驗(yàn)榕渲迷贘avaConfig中定義為類住练,所以用戶可以充分利用Java中的面向?qū)ο筇匦浴R粋€(gè)配置類可以子類化另一個(gè)配置類愁拭,覆蓋它的@Bean方法讲逛,等等。
(2)減少或消除XML配置岭埠。已經(jīng)證明了基于依賴注入原則的外部化配置的好處盏混。然而,許多開發(fā)人員不愿意在XML和Java之間來回切換惜论。JavaConfig為開發(fā)人員提供了一種純java方法來配置Spring容器许赃,這種方法在概念上類似于XML配置。從技術(shù)上講馆类,僅使用   JavaConfig配置類來配置容器是可行的混聊,但是在實(shí)踐中,許多人發(fā)現(xiàn)將JavaConfig與XML混合并匹配是理想的乾巧。
(3)類型安全的重構(gòu)能力句喜。JavaConfig提供了一種類型安全的配置Spring容器的方法预愤。由于Java 5.0對(duì)泛型的支持,現(xiàn)在可以通過類型而不是名稱檢索bean咳胃,不需要進(jìn)行任何基于類型轉(zhuǎn)換或字符串的查找植康。

6.什么是FreeMarker模板?如何使用Spring Boot實(shí)現(xiàn)它?

FreeMarker:
即一種基于模板和要改變的數(shù)據(jù), 并用來生成輸出文本,用來在MVC模式的Web開發(fā)框架中生成HTML頁(yè)面展懈。
使用:
導(dǎo)入依賴包 --》 配置文件 ---》 html中引入依賴直接用

18销睁、Spring Boot 可以兼容老 Spring 項(xiàng)目嗎,如何做存崖?

可以兼容冻记,使用@ImportResource注解導(dǎo)入老 Spring 項(xiàng)目配置文件。

19金句、保護(hù) Spring Boot 應(yīng)用有哪些方法檩赢?

在生產(chǎn)中使用HTTPS
使用Snyk檢查你的依賴關(guān)系
更新到最新版本
啟用CSRF保護(hù)
使用內(nèi)容安全策略防止XSS攻擊

5.什么是ELK堆棧?如何與Spring Boot一起使用?

ELK堆棧由三個(gè)開源產(chǎn)品組成:
Elasticsearch、Logstash和Kibana from Elastic违寞。



Logstash是一個(gè)日志管道工具贞瞒,它接受來自不同來源的輸入,執(zhí)行不同的轉(zhuǎn)換趁曼,并將數(shù)據(jù)導(dǎo)出到不同的目標(biāo)军浆。它是一個(gè)動(dòng)態(tài)的數(shù)據(jù)收集管道,具有可擴(kuò)展的插件生態(tài)系統(tǒng)和強(qiáng)大的彈性搜索協(xié)同作用
Kibana是一個(gè)可視化UI層挡闰,工作在Elasticsearch之上乒融。**
這三個(gè)項(xiàng)目一起用于各種環(huán)境中的日志分析。因此Logstash收集和解析日志摄悯、彈性搜索索引并存儲(chǔ)這些信息赞季,而Kibana提供了一個(gè)UI層,提供可操作的可見性奢驯。
Spring Boot + ELK stack

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末申钩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瘪阁,更是在濱河造成了極大的恐慌撒遣,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件管跺,死亡現(xiàn)場(chǎng)離奇詭異义黎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)豁跑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門廉涕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事火的『撸” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵馏鹤,是天一觀的道長(zhǎng)征椒。 經(jīng)常有香客問我,道長(zhǎng)湃累,這世上最難降的妖魔是什么勃救? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮治力,結(jié)果婚禮上蒙秒,老公的妹妹穿的比我還像新娘。我一直安慰自己宵统,他們只是感情好晕讲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著马澈,像睡著了一般瓢省。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上痊班,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天勤婚,我揣著相機(jī)與錄音,去河邊找鬼涤伐。 笑死馒胆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凝果。 我是一名探鬼主播祝迂,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼器净!你這毒婦竟也來了型雳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤掌动,失蹤者是張志新(化名)和其女友劉穎四啰,沒想到半個(gè)月后宁玫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粗恢,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年欧瘪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了眷射。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖妖碉,靈堂內(nèi)的尸體忽然破棺而出涌庭,到底是詐尸還是另有隱情,我是刑警寧澤欧宜,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布坐榆,位于F島的核電站,受9級(jí)特大地震影響冗茸,放射性物質(zhì)發(fā)生泄漏席镀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一夏漱、第九天 我趴在偏房一處隱蔽的房頂上張望豪诲。 院中可真熱鬧,春花似錦挂绰、人聲如沸屎篱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)交播。三九已至,卻和暖如春刹勃,著一層夾襖步出監(jiān)牢的瞬間堪侯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工荔仁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伍宦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓乏梁,卻偏偏與公主長(zhǎng)得像次洼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遇骑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容