馬來西亞最後一頭蘇門答臘犀牛病逝 全球剩80頭

摘錄自2019年11月24日中央通訊社馬來西亞報導

馬來西亞最後一隻蘇門答臘犀牛,25歲的母犀牛伊曼自2014年被捕獲後,一直在野生動物保護區接受妥善照顧,牠今天(24日)因癌病逝於婆羅洲(Borneo)沙巴(Sabah)。沙巴野生動物部門(Sabah Wildlife Department)主任奧古斯丁(Augustine Tuuga)說:「伊曼的死亡比預期要快,但我們知道,牠已經開始承受極大痛苦。」

蘇門答臘犀牛是體型最小的犀牛,曾廣布亞洲各地,野生蘇門答臘犀牛如今已近乎絕種,據保育人士估計,目前全球僅剩約30至80頭,大多棲息在蘇門答臘和印尼所管轄的婆羅洲地區。馬來西亞2015年宣布野生蘇門答臘犀牛絕種,最後一頭公蘇門答臘犀牛今年5月離世。

保育團體國際犀牛基金會(International Rhino Foundation)說,棲地減少和盜獵導致蘇門答臘犀牛生存於孤立區域,代表牠們繁衍困難,數十年內可能就會滅絕。

自2011年以來,馬來西亞不斷嘗試以體外受精方式,繁殖人工飼養的蘇門答臘犀牛,但迄今尚未成功。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

違法噴灑遭禁殺蟲劑 孟山都將付3億罰款

摘錄自2019年11月22日中央通訊社美國報導

美國農業生技巨擘孟山都(Monsanto)今天(22日)同意認罪,承認在夏威夷毛伊島(Maui)的設施對研究作物違法噴灑遭禁的劇毒殺蟲劑,將支付1000萬美元(約新台幣3億532萬元)罰款。

法新社報導,孟山都在提交給檀香山聯邦地區法院的法庭文件中承認,2014年在農場谷(Valley Farm)對玉米種子等作物噴灑Penncap-M殺蟲劑,即使已知環境保護署於2013年禁用這款化學物。

審理此案的加州中區聯邦檢察官韓納(Nick Hanna)說:「此案的違法行徑對環境、周圍社區和孟山都工人構成威脅。」他說:「聯邦法律與相關規範規定,使用管制和危險化學物的每個人,都有責任確保產品是經過安全儲存、運送與使用。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家前需注意的眉眉角角,別等搬了再說!

新北清潔公司,居家、辦公、裝潢細清專業服務

新宿市民測定所 發表嬰幼兒奶粉輻射檢查報告

文:宋瑞文(媽媽監督核電廠聯盟特約撰述)

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※幫你省時又省力,新北清潔一流服務好口碑

※別再煩惱如何寫文案,掌握八大原則!

比亞迪新能源車夯!2015年可望售出350億人民幣

根據中國汽車工業協會公佈的統計資料顯示,2015年1至4月份,比亞迪新能源汽車銷量已超過1.2萬輛。同時第一季,比亞迪歸屬於上市公司股東的淨利潤達1.2億元人民幣(下同),同比增幅高達910%。   按4月份單月的銷量資料來看,比亞迪乘用車總體銷量為32260輛,年減29.85%。但新能源汽車銷量為3646輛,其中秦2625輛,e6電動車890輛,騰勢131輛,實現了正向增長。   據比亞迪相關人士介紹,2015年,比亞迪還將推出包括鎖定個人消費者的插電式混合動力汽車「唐」,中型及緊湊型插電式混合動力SUV車型「宋」和「元」,以及新能源商用車「商」等。除此之外,在特種車輛方面,比亞迪也會逐步加快研發並推出應用於礦山、港口、機場及倉儲等領域的車型,以及應用於環衛、城市物流等領域的特種車輛。   而比亞迪副總裁廉玉波在出席內地電動車研討會時透露,預料今年可售出約值300億元至350億元的新能源汽車,料全年可售出約6.7萬部新車,佔公司汽車業務一半收入,並有望達到「自給自足」盈利水準。   他表示,現時比亞迪每月可售出1,000部純電動車e6,純電動巴士每月售約600部。且位於惠州的電池廠3月起投產,有利提升產能;其中較受歡迎的混能車「秦」,6月時產能將增至6,000架。而比亞迪與戴姆勒合資生意的純電動車「騰勢」,每月約售出500部,估計年底時將增至3,000至4,000部。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

新北清潔公司,居家、辦公、裝潢細清專業服務

台達電與福特亮相CES Asia 推新型智慧電動車解決方案

25日,台達電與福特汽車、海爾、天合光能攜手亮相首屆亞洲消費電子展(CES Asia),宣佈將四方聯合打造的「福特智•能生活」專案引入中國市場。此試點專案將在北京和上海兩個城市率先展開。福特及台達等合作夥伴將為試點家庭提供插電式混合動力汽車、智慧型交流充電樁、太陽能動力設備及智慧家電。   台達電在「福特智•能生活」專案中提供智慧型的電動車充電解決方案,並在福特展臺實地展示了壁掛式高效充電器產品。此壁掛式交流充電器已通過CQC/SRRC認證,採用防塵防水及防破壞機身設計,具備電壓、溫度等保護功能。充電器內建RFID讀卡機,可實現充電用戶身份辨識功能。充電器還內置乙太網通訊功能,可與充電站管理系統集成。   台達電動交通及雲端電源方案事業處總經理張育銘表示,福特這項計畫結合太陽能、家電和充電裝置,台達電導入家庭能源管理,讓電動車充電時用電不會超過既有容量,減少跳電的風險。此外,使用台達的充電裝置能遠端遙控,使用者可透過手機應用程式得知車輛是否充飽電,其還可採時間電價控制時程。   張育銘說,在政府補貼下,大陸電動車市場前景看好,未來幾年每年成長至少都有30%至50%。他表示,台達電開發電動車充電裝置近3年,原本就有和福斯(VW)和富豪(Volvo)合作,今年在大陸的交流充電器銷量預計達4000至5000台,遠高於2014年的數百台。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

※幫你省時又省力,新北清潔一流服務好口碑

※別再煩惱如何寫文案,掌握八大原則!

如何使用ABP進行軟件開發之基礎概覽

ABP框架簡述

1)簡介

在.NET眾多的技術框架中,ABP框架(本系列中指aspnetboilerplate項目)以其獨特的魅力吸引了一群優秀開發者廣泛的使用。

在該框架的賦能之下,開發者可根據需求通過官方網站【https://aspnetboilerplate.com/Templates】選擇下載例如Vue/AngluarJS/MVC等不同類型的模板項目,輕鬆加入ABP開發者的隊伍中,盡享基於ABP開發帶來的樂趣。

ABP開發框架也提供了豐富的文檔,能夠為開發者帶來許多便捷。目前ABP的文檔網站為:

官方文檔:https://aspnetboilerplate.com/Pages/Documents

文檔庫不可謂不全,加上國內眾多的ABP開發者參与的活躍的技術圈子,使得學習成本只是在第一個項目中比較高,後期將會越來越平滑。

2)現狀

當然,目前ABP的框架開發者和社區已經把更多的精力投入到了ABP.VNEXT開發框架,這個新框架以其DDD+微服務+模塊化的理念獲得了大量擁躉,使ABP框架的開發優先級已經開始逐漸降低。

但這是因為ABP框架的功能已經成熟穩定,且ABP是一種增量式的架構設計,開發者在熟練掌握這種框架后,可以根據自己的需要進行方便的擴展,使其成為小項目架構選型中一種不錯的備選方案。

當然,也存在一些弊端。例如由於ABP被稱為.NET眾多開發框架中面向領域驅動設計的最佳實踐,而囿於領域驅動設計本身不低的門檻,使得學習的過程變得看起來非常陡峭;

除此之外,ABP也廣泛使用了目前Asp.NET/Asp.NET Core框架的大量比較新的特性,對於不少無法由於各種原因無法享受.NET技術飛速發展紅利的傳統開發者來說,無形中也提高了技術門檻。

3)綜述

在這個系列中,本文計劃分成三篇來介紹ABP框架,第一篇介紹ABP的基礎概覽,介紹基礎知識,第二篇介紹ABP的模式實踐,第三篇,試圖介紹如何從更傳統的三層甚至是單層+SQL的單層架構,如何遷移到ABP框架。

(畢竟。。.NET遺留應用實在是太多了,拯救或不拯救?)

代碼結構結構

基本文件夾簡述

當我們通過ABP模板項目的官方網站下載一個項目后,我們所獲得的代碼包的結構如下圖所示,其中:

  • vue為使用iview框架構建的管理系統基本模板,該腳手架使用了yarn作為包管理器,並集成了vuex/axios等常用框架,並提供了用戶,租戶,權限三個基本功能的示例代碼,開發者只需發揮聰明才智就能快速的通過該框架入手前端項目。
  • (當然,該項目廣泛使用了typescript+面向對象的設計,似乎前端開發者。。普遍不擅長面向對象開發?)
  • aspnet-core則是一個完整的asp.netcore項目的快速開發腳手架。該腳手架集成了docker打包於一體,並包含基本的單元測試示例,使用了identity作為權限控制單元,使用swagger作為接口文檔管理工具,集成了efcore、jwt等常用組件,對於開發者來說,基本上算是開箱即用了。

前端vue項目

打開vue文件夾之後,該項目的基本目錄如下圖所示。(src文件夾)

lib文件夾

定義了與abp+vue腳手架項目的基礎組件和常見類庫,封裝了一系列基本方法。例如權限控制,數據請求,菜單操作,SignalR等基礎組件的用法。

router文件夾

定義了vue項目的路由規則,其中index.ts文件是項目的入口,router.ts文件定義了vue文件的路由規則。

store文件夾

由於本項目使用了vuex框架,所以我們可以來看看對於store文件夾的介紹。

在vuex框架中:

每一個 Vuex 應用的核心就是 store(倉庫)。“store”基本上就是一個容器,它包含着你的應用中大部分的狀態 (state)。
Vuex 和單純的全局對象有以下兩點不同:
Vuex 的狀態存儲是響應式的。當 Vue 組件從 store 中讀取狀態的時候,若 store 中的狀態發生變化,那麼相應的組件也會相應地得到高效更新。
你不能直接改變 store 中的狀態。改變 store 中的狀態的唯一途徑就是顯式地提交 (commit) mutation。這樣使得我們可以方便地跟蹤每一個狀態的變化,從而讓我們能夠實現一些工具幫助我們更好地了解我們的應用。

即vuex框架中,將原來的請求鏈路,抽象化為狀態的變化,通過維護狀態,使得數據的管理更加便捷,也易於擴展。

views文件夾

定義了登錄、首頁、用戶、角色、租戶的基本頁面,並提供了新增、查看、編輯、刪除的代碼示例。

綜上,該項目是一個結構清晰,邏輯縝密的前端框架,可以作為常見管理系統的腳手架。

後端項目

簡介

後端項目是一個遵循了領域驅動設計的分層,同時又符合Robert Martin在《代碼整潔之道》提出的【整潔架構】。

領域驅動設計簡介

在領域驅動設計的分層設計中,共有四個功能分層,分別是:

表示層(Presentation Layer):為用戶提供接口,使用應用層實現用戶交互。

應用層(Application Layer):介於用戶層和領域層之間,協調用戶對象,完成對應的任務。

領域層(Domain Layer):包含業務對象和規則,是應用程序的心臟。

基礎設施層(Infrastructure Layer):提供高層級的通用技術功能,主要使用第三方庫完成。

在後文中,基於abp對領域驅動設計的功能分層將進行多次、詳細敘述,本小節不再贅述。

整潔架構簡介

整潔架構是由Bob大叔提出的一種架構模型,來源於《整潔架構》這本書,顧名思義,其目的並不是為了介紹這一種優秀的架構本身,而是介紹如何設計一種整潔的架構,使得代碼結構易於維護。

(整潔架構就是這樣一個洋蔥,所以也有人稱它為“洋蔥”架構)

  1. 依賴規則(Dependency Rule)

用一組同心圓來表示軟件的不同領域。一般來說,越深入代表你的軟件層次越高。外圓是戰術是實現機制(mechanisms),內圓的是核心原則(policy)。

Policy means the application logic.

Mechanism means the domain primitives.

使此體系架構能夠工作的關鍵是依賴規則。這條規則規定軟件模塊只能向內依賴,而裏面的部分對外面的模塊一無所知,也就是內部不依賴外部,而外部依賴內部。同樣,在外面圈中使用的數據格式不應被內圈中使用,特別是如果這些數據格式是由外面一圈的框架生成的。我們不希望任何外圓的東西會影響內圈層

  1. 實體 (Entities)

實體封裝的是整個企業範圍內的業務核心原則(policy),一個實體能是一個帶有方法的對象,或者是一系列數據結構和函數,只要這個實體能夠被不同的應用程序使用即可。

如果你沒有編寫企業軟件,只是編寫簡單的應用程序,這些實體就是應用的業務對象,它們封裝着最普通的高級別業務規則,你不能希望這些實體對象被一個頁面的分頁導航功能改變,也不能被安全機制改變,操作實現層面的任何改變不能影響實體層,只有業務需求改變了才可以改變實體

  1. 用例 (Use case)

在這個層的軟件包含只和應用相關的業務規則,它封裝和實現系統的所有用例,這些用例會混合各種來自實體的各種數據流程,並且指導這些實體使用企業規則來完成用例的功能目標。

我們並不期望改變這層會影響實體層. 我們也不期望這層被更外部如數據庫 UI或普通框架影響,而這也正是我們分離出這一層來的原因所在。

然而,應用層面的操作改變將會影響到這個用例層,如果需求中用例發生改變,這個層的代碼就會隨之發生改變。所以可以看到,這一層是和應用本身緊密相關的

  1. 接口適配器 (Interface Adapters)

這一層的軟件基本都是一些適配器,主要用於將用例和實體中的數據轉換為外部系統如數據庫或Web使用的數據,在這個層次,可以包含一些GUI的MVC架構,表現視圖 控制器都屬於這個層,模型Model是從控制器傳遞到用例或從用例傳遞到視圖的數據結構。

通常在這個層數據被轉換,從用例和實體使用的數據格式轉換到持久層框架使用的數據,主要是為了存儲到數據庫中,這個圈層的代碼是一點和數據庫沒有任何關係,如果數據庫是一個SQL數據庫, 這個層限制使用SQL語句以及任何和數據庫打交道的事情。

  1. 框架和驅動器

最外面一圈通常是由一些框架和工具組成,如數據庫Database, Web框架等. 通常你不必在這個層不必寫太多代碼,而是寫些膠水性質的代碼與內層進行粘結通訊。

這個層是細節所在,Web技術是細節,數據庫是細節,我們將這些實現細節放在外面以免它們對我們的業務規則造成影響傷害

ABP的分層實現

在ABP項目中,層次劃分如下。

1. 應用層(Application項目)

在領域驅動設計的分層式架構中,應用層作為應用系統的北向網關,對外提供業務外觀的功能。在Abp模板項目中,Application項目也是編寫主要用例代碼的位置,開發者們在此定義與界面有關的數據行為,實現面向接口的開發實踐。

應用服務層包含應用服務,數據傳輸單元,工作單元等對象。

  • Application Service

為面向用戶界面層實現業務邏輯代碼。例如需要為某些界面對象組裝模型,通常會定義ApplicationService,並通過DTO對象,實現與界面表現層的數據交換。

  • Data Transfer Object (DTO)

最常見的數據結構為DTO(數據傳輸對象),這是來源於馬丁弗勒在《企業架構應用模式》中提到的名詞,其主要作用為:

是一種設計模式之間傳輸數據的軟件應用系統。 數據傳輸目標往往是數據訪問對象從數據庫中檢索數據。

在ABP的設計中,有兩種不同類型的DTO,分別是用於新增、修改、刪除的Input DTO,和用於查詢的Output DTO。

  • Unit of Work:

工作單元。工作單元與事務類似,封裝了一系列原子級的數據庫操作。

2. 核心層(Core項目)

核心層包含領域實體、值對象、聚合根,以及領域上下文實現。

  • Entity(實體):

實體有別於傳統意義上大家所理解的與數據庫字段一一匹配的實體模型,在領域驅動設計中,雖然實體同樣可能持久化到數據庫,但實體包含屬性和行為兩種不同的抽象。

例如,如果有一個實體為User,其中有一個屬性為Phone,數據為086-132xxxxxxxx,我們有時需要判斷該手機號碼的國際代號,可能會添加一個新的判定 GetNationCode(),可以通過從Phone字段中取出086來實現,這就是一種通俗意義上的行為。

  • Value Object(值對象):

值對象無需持久化到數據庫,往往是從其他實體或聚合中“剝離”出來的與某些聚合具備邏輯相關性或語義相關性的對象,有時值對象甚至只有個別屬性。

例如,上述實體,包含Phone字段,我們可以將整個Phone“剝離”為一個Telephone對象,該對象可包含PhoneNumber和NationCode字段。

public class User
{
     public Telephone Phone{public get;private set;}
}
public class Telephone
{
    public string  PhoneNumber {get;set;}
     public string NationCode  {get;set;}
}
  • Aggregate & Aggregate Root(聚合,聚合根):

聚合是業務的最小工作單元,有時,一個實體就是一個小聚合,而為聚合對外提供訪問機制的對象,就是聚合根。

在領域驅動設計中,識別聚合也是一件非常重要的工作,有一組系統的方法論可以為我們提供參考。

當然,事實上識別領域對象,包括且不限定於識別聚合、值對象、實體識別該對象的行為或(方法)本身是一件需要經驗完成的工作,有時需要UML建模方法的廣泛參与。

有時,我們會習慣於通過屬性賦值完成梭代碼的過程,從而造成領域行為流失在業務邏輯層的問題,那麼或許可以採取這樣的方法:

1、對象的創建,使用構造函數賦值,或工廠方法創建。

2、將所有對於屬性的訪問級別都設置為

public string Phone{public get;private set;}

然後再通過一個綁定手機號碼的方法,來給這個對象設置手機號碼。

public string BindPhone(string phone)
{
}

將所有一切涉及到對Phone的操作,都只能通過規定的方法來賦值,這樣可以實現我們開發過程中,無意識的通過屬性賦值,可能導致的“領域行為”丟失的現象發生。
這種方式可以使得對對象某些屬性的操作,只能通過唯一的入口完成,符合單一職責原則的合理運用,如果要擴展方法,可以使用開閉原則來解決。

但是,採用這種方式,得盡量避免出現:SetPhone(string phone) 這樣的方法出現,畢竟這樣的方法,其實和直接的屬性賦值,沒有任何區別。

  • Repository(倉儲)

倉儲封裝了一系列對象數據庫操作的方法,完成對象從數據庫到對象的轉換過程。在領域驅動設計中,一個倉儲往往會負責一個聚合對象從數據庫到創建的全過程。

  • Domain Service(領域服務)

領域服務就是“實幹家”,那些不適合在領域對象中出現,又不屬於對象數據庫操作的方法,又與領域對象息息相關的方法,都可以放到領域服務中實現。

  • Specification(規格定義)

規範模式是一種特殊的軟件設計模式,通過使用布爾邏輯將業務規則鏈接在一起,可以重新組合業務規則。

實際上,它主要用於為實體或其他業務對象定義可重用的過濾器。

3. 其他基礎設施(EntityFrameworkCore,Web.Core,Web.Host項目)

EntityFrameworkCore負責定義數據庫上下文和對EFCore操作的一系列規則、例如種子數據的初始化等。

Web.Core:定義了應用程序的外觀和接口。雖然從表面上看,Web.Core定義了作為Web訪問入口的控制器方法和登錄驗證的邏輯,看起來像是用戶表現層的東西,但是仔細想想,這些東西,何嘗不是一種基礎設施?

Web.Host:定義WEB應用程序的入口。

總結

本文簡述了ABP框架的前後端項目的分層結構,通過了解這些結構,將有助於我們在後續的實戰中更快入手,為應用開發插上翅膀。

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

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

新北清潔公司,居家、辦公、裝潢細清專業服務

四周年:聊聊測試工程師的核心競爭力

寫博客四周年,習慣每年這個時候做一次總結回顧。這次,就聊聊工作幾年以來,我個人對核心競爭力的一些思考和認知。。。

往期傳送門

一周年:聊聊寫博客這件事

兩周年:聊聊這一年的成長

三周年:聊聊近期目標和計劃

 

核心競爭力,各人有各人的想法。且在不同階段、不同企業、不同時期有不同的視角,無法一一而足。以我個人角度來說:核心競爭力實際上就是個人價值訴求的一種表達

我劃分了四個較為通用的維度,從這幾個維度出發,聊聊不同階段我的一些看法和建議。

思維導圖

 

時間維度

1、小白入門

通常來說,小白入門階段,指的是初入職場一年以內的同學。

在這個階段,個人的核心競爭力,或者說個人價值的體現,就是高效執行能力+快速學習能力

工作職責、範圍、流程、規範、溝通能力,在這個階段,也許會遇到不同的挑戰,但企業一般對新同學包容性都比較強,這個階段試錯空間較大,最利於新入成長。

2、快速成長

快速成長階段,一般指的是工作1-3年的同學。這個階段,個人認為核心競爭力主要體現在協同配合+ownership(主人翁意識,或者說是主動承擔工作的能力)。

當然,這個階段也會面臨職場第一次跳槽,如何編寫簡歷、面試、談offer、如何選擇就職行業、在團隊內刷存在感等事情。

表述可能有些直接,但這個階段,對未來的職場發展,影響往往是很大的。建議找個業內熟識的前輩,聊聊天,請教一下

3、專註沉澱

這個階段的同學我劃分為3-5年的同學,一般來說這個階段,會成為團隊里的中堅力量,甚至會承擔一部分所謂的“管理”的工作。

除了上述的幾點核心能力,我認為這個階段的同學,核心競爭力,往往體現在客觀的思考能力+創造價值的能力

如何理解創造價值?初入職場大多是聽安排做事,這個階段,會漸漸過渡到分配任務並且帶領小團隊快速高效完成工作的狀態。

至於專註沉澱,這個階段建議對自己的技術棧+未來五年職場規劃進行多次深入的review,這是一個不斷否定不斷堅持的過程。

4、成為專家

如何理解專家?即在某一個領域內擁有豐富經驗+專業特長+深入研究的人。一般在職場中,七年左右可以稱之為專家。

在《刻意練習:如何從新手到大師》這本書中,講述了很多關於成為某一個領域專家的方法,推薦大家閱讀這本書。

在這個階段,核心競爭力,反而簡單,即上面講到的創造價值

如何創造價值?解決團隊目前存在的核心問題,從基礎建設、流程規範、技術、分享、管理多方面來保質提效。

當然,最關鍵的是,主動傳達自己創造的價值!這個很考驗一個人的耐心和協調溝通能力,概括一下就是:深諳職場生存法則

 

核心能力

關於核心能力,其實在上面的幾個階段,都做了解讀。這裏我有個建議,你的核心能力,可以在簡歷的個人評價里體現出來

好的簡歷可以擺平面試求職路上的很多客觀因素,當然,也能吸引到某些獵頭的挖掘。

當然,不僅僅是簡歷,還有其他的一些客觀條件,這個請看下文。

1 # 這裏僅提供一個demo供參考
2 1、對項目整體業務和系統架構有較全面了解,能獨立解決複雜任務; 3 2、能與其他團隊建立良好的合作關係,並組織主導完成工作; 4 3、自我驅動能力強,熱愛分享,善於思考總結; 5 4、保持技術前瞻性,鑽研新技術及方法,並推動在工作中落地;

 

職場生涯

關於職場生涯,有很多博主很多大牛說過,這裏我順帶談談我的看法。

在專註沉澱階段(3-5年),為什麼要建議對自己的技術棧以及未來五年的職場規劃進行多次review呢?

一方面,這個階段會在技術和業務上有一定的深入和廣度;另一方面,職場或者說未來職業發展需要的是一專多能的在細小領域有較高成就的人

一般來講,這個階段需要對業務&技術做個權重。業務專家?技術大神?或者基層管理。

管理是一個蘿蔔一個坑,在互聯網領域,個人覺得對普通人來講,業務專家或技術大神,對普通人更友好。

不需要做多大範圍的TOP1,你只需要堅持去做下面幾點,就能有所收穫。

 

個人成長

關於個人成長,前段時間看了本書:《軟技能:代碼之外的生存指南》。裏面介紹了很多有趣的觀點和方法,大家不妨一讀。

挑幾個關鍵的point來談談我自己的個人成長曆程,也許會對你有所觸動。

1、寫作博客

大概工作第三年開始,我開通了博客,並且堅持每周都更新。有總結,有實踐,有思考,也有很多自己創造的內容。我把寫博客這件事叫做爆肝。。。

寫了一段時間,你會發現漸漸有了流量,有了評論,有了錯誤指摘,也有抬杠。從這些“收穫”里,你能將自己的底子打得更好,當然,知名度,或許有些罷。。。

2、開公開課

有了寫博客的沉澱(不一定寫博客,自己做筆記也可,但我還是建議寫博客,交流更重要,閉門造車要不得),你可以嘗試開公開課,比如:QQ群直播、網易公開課、騰訊課堂等。

如何將自己知道的東西,簡潔明了的傳遞給別人,在溝通分享中重塑自身的知識體系,是很有意思也很有挑戰的一件事。

職場向上發展,分享、培訓、演講是少不了的。有備無患,才是智者取勝之道。

這個過程里,你會發現自己以往的遺漏、錯誤、表述的誤差,也能從別人口中獲悉成長的力量。

3、著書立說

這個對很多同學來說可能有點不可思議,但其實沒那麼難。我認識測試圈子的同學比如小坦克,基於抓包進行接口&自動化測試,已經出了2本書了。

我自己也正在寫自己的第一本書:從零開始性能測試。

當然,給了我勇氣讓我開始下筆寫書的原因,一方面是想建立個人的品牌影響力;另一方面,通過博客,有好幾位出版社的編輯找到了我,不好意思拒絕他們的熱情相邀,就索性寫一本書吧。

人這一生,總要做幾件讓自己回想起來就覺得中二熱血的事情。。。

4、諮詢培訓

關於諮詢培訓,其實和轉崗斜杠很類似。生存所需嘛,憑自己的本事站着吃飯,不寒磣。

通過自我成長,寫博客,開公開課,建立個人影響力,嘗試付費諮詢,做培訓,運營公眾號,接商業推廣,甚至極客時間開一門課,都是可以嘗試的。

很多事情不是看到希望才做,而是做了才能有所收穫。

當然,這個過程中,你會開始思考如何拓展推廣渠道,引流拉新,提高創作內容的質量,遇到很多未知領域的挑戰。

別怕,向前走,前面有光!

 

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

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

※幫你省時又省力,新北清潔一流服務好口碑

※別再煩惱如何寫文案,掌握八大原則!

新春走基層·脫貧攻堅一線見聞:八百里瀚海的扶貧之路

  中國消費者報報道(記者李洪濤)噼!啪!清脆的爆竹聲不時在空中炸響。吉林省通榆縣蘇公坨鄉蘇公坨村六撮房屯,這個極具東北特色的小村莊到處散發著濃濃的年味。新春佳節前夕,《中國消費者報》新春走基層的記者跟隨當地市場監管部門的扶貧幹部,冒着零下23攝氏度嚴寒,踏着皚皚白雪,走進幫扶的貧困戶家中送上節日禮物。

  通榆縣地處吉林省西部,這裏常年乾旱少雨,風沙肆虐,自然環境惡劣,因地域廣闊,素有八百里瀚海之稱。該縣蘇公坨鄉蘇公坨村和巨寶山村,是兩個有着535個貧困戶的貧困村。在該縣脫貧攻堅工作中,通榆縣市場監督管理局勇挑重擔,對這兩個村實行包保脫貧。54歲的局黨委辦公室主任徐方樓任職駐村第一書記,如今已經4年。

  1月14日上午,天寒地凍。在駐村扶貧點簡陋的小平房裡,記者見到了面部黝黑、雙手長滿老繭,一身农民打扮的徐書記。

  據徐書記介紹,經過局裡幾年來的幫扶,蘇公坨村和巨寶山村的貧困戶基本上都實現了脫貧,目前,還有兩個因車禍及因病致貧的貧困戶還在积極幫扶中。當日上午,記者跟通榆縣市場監督管理局副局長趙洪亮一起,來到了這兩個貧戶家中進行了走訪。正值新春佳節,細心的扶貧幹部們為貧困戶們精心準備了大紅的燈籠、春聯,還有水果等年貨。雪野茫茫,鄉路彎彎,儘管岔路很多,但開車的食品檢驗檢測中心主任馬立群卻是十分地路熟。他風趣地說:“從春到冬,我們天天下鄉扶貧,路都記在心裏了。”

  當一行人來到蘇公坨村六撮房屯貧困戶白延軍家中時,64歲的劉金環老人正在給躺在炕上的老伴翻身。見到了徐方樓和馬立群,老人激動得連忙下炕,熱情地打着招呼。接過喜氣洋洋的大紅燈籠和寫着“家好人好運氣好,福旺財旺日子旺”的春聯時,她的眼裡噙着淚水。據徐方樓介紹,現年66歲的白延軍是一位退伍老兵。2018年7月30日早晨,他趕着毛驢車去地里幹活時,在村路上不幸被一輛物流公司的大貨車撞傷,雖然經搶救保住了性命,卻成了沒有任何知覺的植物人。由於在賠償上存在爭議,官司還處在人民法院的二審階段。從院里堆放的銹跡斑斑的各種農機具可以看出,在未出車禍前,劉延軍是個勤勞的人,一家人生活也比較富裕。記者在走訪中獲悉,白延軍一家的不幸遭遇,深深地牽動了市場監管部門幹部職工的心。大家踴躍捐款1.36萬元,春耕生產時還送上種子、化肥等生產資料。更重要的是,扶貧幹部們多次到家中看望,鼓勵一家人勇於面對困境,重拾生活信心。

  在巨寶山村巨寶山屯,45歲的农民張波動情地拉着扶貧幹部們連聲道謝。原來,他的女兒張鈺堔患有先天性成骨不全症,脆弱的雙腿稍不留意就會造成骨折,今年15歲了,已經骨折了十幾次。雖然身患重病,坐着輪椅,但小鈺堔聰明伶俐,樂觀向上,已經上了初中二年級的她學習成績優異。為了幫扶張波一家,扶貧幹部們協調有關部門,不僅對他家原有土平房進行了泥草房改造,還在村裡給他安排了一個協警的公益崗位,每年有1萬多元的收入。記者在張波家的牆上,看到貼着《扶貧攻堅幫扶提示板》,上面不僅有《扶貧手冊》,還有包保幹部的姓名和聯繫電話。

  在基層走訪,雖然天氣寒冷,但陽光明媚,空氣清新。歡聲笑語中,記者感受到了扶貧幹部和貧困戶之間濃濃的情意。在蘇公坨村黨支部委員會,一位中年婦女與扶貧幹部杜克峰熱情地打招呼,雙方十分熟識地拉着家常。該中年婦女名叫王艷,是楊樹林村的一名社主任。她告訴記者,她和這些城裡來的扶貧幹部親如兄妹。

  通榆縣是國家級貧困縣,脫貧攻堅任務艱巨。談到扶貧工作時,通榆縣市場監督管理局局長徐立忠說:“我們在扶貧攻堅方面做了很多細緻的工作。”據其介紹,該局對所包保的蘇公坨村和巨寶山村採取多項舉措。去年,倡議、組織愛心企業,為包保村捐款40.4萬元。(蘇公坨村28.5萬元,巨寶山村11.9萬元)。聯手白城市老年科協到蘇公坨村開展義診活動,向貧困群眾免費進行體檢,免費贈送價值1.75萬元的藥品。組織通榆縣益壽堂醫藥有限公司到蘇公坨村開展送醫送葯義診活動,免費提供價值3萬元的藥品。協調通榆縣農業銀行到蘇公坨村送電腦、打印機、紙張等14類辦公用品,價值1.2萬元。

  為了促進貧困人口增收,發展農村庭院經濟,該局給村民們購買了1.4萬元豆角籽。在改善人居環境上,購買2.6萬元的櫥櫃革、鐵絲、1萬根樹軸、7000株花苗。雇傭鏟車、鈎機、叉車、四輪車,對包保的兩村進行了環境衛生整治,美化了生活環境。在危房改造上,為貧困戶購買了1300米的電纜線,飲用水井房電錶一塊。中秋節,為蘇公坨村358戶、巨寶山村177戶貧困戶每戶送2公斤月餅。春節前夕,為兩村535戶貧困戶每戶送去5公斤蘋果、1桶食用油。此外,包保幹部們還自掏腰包,為貧困戶購買電視機、電視天線、玉米種子、輪椅、秧苗、藥品、米面油、食品、兒童玩具、雞雛、電飯鍋、櫥櫃等,积極開展結親、認親和幫親活動。在蘇公坨鄉敬老院,舉辦了以“敬老愛老”為主題的支部黨日活動,為老人們送水果、衣物、涼席等物品,併為老人理了發,打掃了敬老院院內外衛生,把溫暖送到孤寡老人心上,讓老人們感受到了黨的溫暖和關懷。

責任編輯:邊靜

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

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

新北清潔公司,居家、辦公、裝潢細清專業服務

Gogoro 計劃在美推出電動腳踏車「Gogoro Eeyo」,歐洲、台灣夏季登場

Gogoro 醞釀推出的全新服務「Gogoro Eeyo」有了最新消息,從 Gogoro Eeyo 社群帳號顯示,是來自 Gogoro 的電動腳踏車,預計 5 月於美國推出,歐洲、台灣則在夏季登場。

目前 Gogoro 官方已為 Gogoro Eeyo 開設社群帳號如 、、,在介紹中僅說明來自 Gogoro 的電動腳踏車,首發將在 5 月於美國推出,歐洲、台灣則預計在夏季登場,此外還加上表情符號來敘述,Gogoro 將從核心服務的電動機車,拓展到電動腳踏車的新領域。

Gogoro 在電動機車、換電系統、共享機車等領域發展成熟,然而目前針對 Gogoro Eeyo 尚未有更進一步的資訊,像是 Gogoro Eeyo 是自家設計或與他廠合作的電動腳踏車?其電動腳踏車有何特色功能?採用隨車充電還是 Gogoro Network 的電池交換網路?會有如同 GoShare 架構的共享腳踏車服務、或定點租還的「電動版 YouBike」、亦或只單賣電動腳踏車?疫情影響下 Gogoro 又將如何布局美國市場?

而從 Gogoro 向智慧財產局提交的商標資料加以推測,Gogoro Eeyo 外型可能與 Gogoro VIVA 相似,採充電系統而非換電方式;有獨立 App 可以控制,車上配有安全帽,還提供行車記錄的功能。

Gogoro Eeyo 整個產品或服務都令人好奇,筆者相信 Gogoro Eeyo 將讓不少台灣民眾期待,《科技新報》也將為讀者帶來後續報導。

(合作媒體:。首圖來源:)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

新北清潔公司,居家、辦公、裝潢細清專業服務

SpringBoot2.x的依賴管理

前提

這篇文章是《SpringBoot2.x入門》專輯的第1篇文章,使用的SpringBoot版本為2.3.1.RELEASEJDK版本為1.8

主要梳理一下SpringBoot2.x的依賴關係和依賴的版本管理,依賴版本管理是開發和管理一個SpringBoot項目的前提。

SpringBoot其實是通過starter的形式,對spring-framework進行裝箱,消除了(但是兼容和保留)原來的XML配置,目的是更加便捷地集成其他框架,打造一個完整高效的開發生態。

SpringBoot依賴關係

因為個人不太喜歡Gradle,所以下文都以Maven舉例。

SpringCloud的版本(SpringCloud的正式版是用倫敦地鐵站或者說倫敦某地名的英文名稱作為版本號,例如比較常用的F版本Finchley就是位於倫敦北部芬奇利)管理不同,SpringBoot的依賴組件發布版本格式是:X.Y.Z.RELEASE。因為SpringBoot組件一般會裝箱為starter,所以組件的依賴GAV一般為:org.springframework.boot:spring-boot-starter-${組件名}:X.Y.Z.RELEASE,其中X是主版本,不同的主版本意味着可以放棄兼容性,也就是SpringBoot1.xSpringBoot2.x不保證兼容性,而組件名一般是代表一類中間件或者一類功能,如data-redisspring-boot-starter-data-redis,提供Redis訪問功能)、jdbcspring-boot-starter-jdbc,提供基於JDBC驅動訪問數據庫功能)等等。以SpringBoot當前最新的發布版本2.3.1.RELEASEorg.springframework.boot:spring-boot-starter:jar:2.3.1.RELEASE為例,用mvn dependency:tree分析它的依賴關係如下:

這個依賴樹也印證了starter是基於Spring項目裝箱和擴展的。

SpringBoot依賴管理

如果使用Spring Initializr創建一個SpringBoot項目的話,那麼會發現項目的POM文件中會加入了一個parent元素:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

其實spring-boot-starter-parent相當於作為了當前項目的父模塊,在父模塊裏面管理了當前指定的SpringBoot版本2.3.1.RELEASE所有依賴的第三方庫的統一版本管理,通過spring-boot-starter-parent上溯到最頂層的項目,會找到一個properties元素,裏面統一管理Spring框架和所有依賴到的第三方組件的統一版本號,這樣就能確保對於一個確定的SpringBoot版本,它引入的其他starter不再需要指定版本,同時所有的第三方依賴的版本也是固定的。如項目的POM文件如下:

<!-- 暫時省略其他的配置屬性 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.1.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

這樣只需要修改parent元素中的版本號,就能全局更變所有starter的版本號。這種做法其實本質上是把當前項目作為spring-boot-starter-parent的子項目,其實在一定程度上並不靈活。這裏推薦使用另一種方式:通過dependencyManagement元素全局管理SpringBoot版本,適用於單模塊或者多模塊的Maven項目。項目的(父)POM文件如下:

<!-- spring-boot-guide 父POM -->
<properties>
    <spring.boot.version>2.3.1.RELEASE</spring.boot.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.version}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

然後需要用到其他starter的時候,只需要在dependencies直接引入即可,不再需要指定版本號,版本號由dependencyManagement中定義的版本號統一管理。

<!-- spring-boot-guide/ch0-dependency 子POM -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>

SpringBoot依賴覆蓋

有些特殊的情況,可能項目中大部分的starter使用的是相對低的版本,但是由於部分新的功能需要使用到更高版本的個別starter,則需要強制引入該高版本的starter。這裏舉一個例子,項目用到的SpringBoot組件的版本是2.1.5.RELEASE,使用的中間件服務Elasticsearch的版本是7.x,而spring-boot-starter-data-elasticsearch支持的版本如下:

理論上可以一下子升級SpringBoot2.3.1.RELEASE,其實也可以直接指定spring-boot-starter-data-elasticsearch的版本覆蓋掉全局的SpringBoot組件版本,這裏應用了Maven依賴調解原則

<!-- 父POM或者全局POM -->
<properties>
    <spring.boot.version>2.1.5.RELEASE</spring.boot.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring.boot.version}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        <version>2.3.1.RELEASE</version>
    </dependency>
</dependencies>

這樣就能單獨提升spring-boot-starter-data-elasticsearch的版本為2.3.1.RELEASE,其他組件的版本依然保持為2.1.5.RELEASE

小結

目前有兩種常用的方式管理SpringBoot組件的版本(兩種方式二選一):

  1. 配置parent元素,通過項目繼承的方式指定SpringBoot組件的版本號,這是Spring Initializr生成的項目中默認的配置方式。
  2. 配置dependencyManagement元素(推薦此方式),通過(父)POM文件統一指定SpringBoot組件的版本號。

另外,SpringBoot1.x2.x之間有兼容性問題(最明顯的一點是2.x中刪除了1.x中大量的內建類,如果用到了這些SpringBoot中的內建類,容易出現ClassNotFoundException),降級或者升級都有比較大的風險。一般情況下,建議使用同一個大版本進行項目開發,如果確定需要進行大版本切換,請務必做完畢的功能測試。

(本文完 c-1-d e-a-20200628)

技術公眾號(《Throwable文摘》,id:throwable-doge),不定期推送筆者原創技術文章(絕不抄襲或者轉載):

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

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

新北清潔公司,居家、辦公、裝潢細清專業服務