Microsoft Edge 新安全功能開測,允許用戶掃描哪些網站密碼外洩_台中搬家公司

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

自從 Chromium 版 Microsoft Edge 推出以來,因為功能、操作介面越來越好用,也已經吸引許多用戶轉移,現在 Microsoft Edge 可以說終於成為一個成熟的瀏覽器了,除了積極地向用戶提供各種更新,還在個人資料安全部分下了不少功夫。現在微軟開始測試一個新安全功能,能夠讓你直接掃描在哪些網站的密碼外洩了。

Microsoft Edge 新安全功能開測,允許用戶掃描哪些網站密碼外洩

Microsoft Edge 中附帶了一個內建密碼監視器,其主要目的在於保護使用者的密碼並且確保各項憑證沒有被外洩。微軟解釋道:「密碼是保護網路資料的一部份,有助於管理個人線上帳戶核魚塊地使用體驗,也因為這些原因對不肖人士極具吸引力。許多網站要求你使用密碼來建立帳戶,許多人會在各網站上重複使用同樣的密碼以便記憶,這些網站可能會在無意中經由網路釣魚或大規模資料外洩而使密碼洩漏出去,隨後可能在暗網上被交易並且被犯罪份子用來接管你的帳號。」

儘管多年來,各種駭客事件、資料外洩頻傳,各方已經呼籲大家避免堅持在各網站上用同樣的密碼,甚至直到現在還是有很多人用 123456 來做為自己的密碼。Microsoft Edge 現在開始測試一項與密碼監視器同綑綁在一起的密碼外洩掃描功能,使用方式非常簡單但卻挺實用,可以幫助你快速查看在哪些網站上的密碼外洩。目前這個功能已經在 Microsoft Edge 的 Dev 版上線,你可以從「設定 >> 個人檔案 >> 密碼」這個路徑進入即可找到它。

  • 進入上面路徑後,你可以看到有一個顯示你有幾個新外洩密碼的項目(如果有外洩的話)。

  • 點選後就能進入密碼監視器這一功能裡去修復密碼。你可以按網頁上的按鈕即刻掃描,並且可以從疑似有外洩情事的網址後面點擊立刻前去變更。

這裡要注意的是,這項掃描僅適用於你保存在 Microsoft Edge 中的密碼,所以其他沒有儲存登入資訊的網站無法用這個功能來檢查。這項功能目前已經可以在 Dev 版上使用,正式版本可能還要稍等一段時間。

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

◎資料來源:SoftPedia

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

上周熱點回顧(5.25-5.31)_台中搬家公司

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

熱點隨筆:

· 【面經分享】互聯網寒冬,7面阿里,終獲Offer,定級P6+ (敖丙)
· 開發一個大型後台管理系統,應該用前後端分離的技術方案嗎? (四猿外)
· 去阿里,是不可能的,這輩子都不可能的 (沉默王二)
· 微軟:正式發布針對 .NET Core的 Winform 設計器 (葡萄城技術團隊)
· [開源] .Net orm FreeSql 1.5.0 最新版本(番號:好久不見) (nicye)
· 極客手中的利器Electron (liulun)
· 由一次安全掃描引發的思考:如何保障 API 接口的安全性? (極客挖掘機)
· 因為一個跨域請求,我差點丟了飯碗 (軒轅之風)
· 阿里短信回執.net sdk的bug導致生產服務cpu 100%排查 (一線碼農)
· 拋開技術細節,分享五年職場的個人感悟及道理總結 (leapMie)
· 寫 JS 邏輯判斷,不要只知道用 if-else 和 switch (前端小蜜蜂)
· TechEmpower Web 框架性能第19輪測試結果正式發布,ASP.NET Core在主流框架中拔得頭籌 (張善友)

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

熱點新聞:

· GitHub左右為難:軟件侵權,但開源代碼合法,責任由誰來負?
· 剛剛,SpaceX首次載人火箭發射成功!馬斯克改寫人類航天史
· AI技術已達如此高度:去碼、上色6到飛起
· 或比人眼更清晰!世界首個3D人工眼球問世:數百萬人重見光明
· 1千萬年僅誤差一秒,這台鐘直接影響北斗衛星的導航定位精度
· 被疑財報注水遭頂尖投行看空 拼多多美股暴跌兩日市值蒸發超十分之一
· 基礎軟件+開源,為什麼是現在?
· 海爾救人小哥喜提新房:112平米/56萬元 免費送家電
· 知情人披露美團點評合併案內幕: 王興五年前的驚險一躍
· Visual Studio 已整合 ML.NET 模型構建器
· 王堅說和馬雲像海爾兄弟:兩個無知無少年搞在一起發生很多事
· 5年內讓人復明,港科大的人造眼有啥不一樣?

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

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

《愛在山河 知行合一:“美麗中國,我是行動者”公眾參与優秀案例選編》出版發行_台中搬家公司

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

2020-09-28

2020-09-28 分享到:
[打印]
字號:[大] [中] [小]

  近日,生態環境部宣傳教育司組織編寫的《愛在山河 知行合一:“美麗中國,我是行動者”公眾參与優秀案例選編》一書由中國環境出版集團正式出版發行。

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

  2018年6月,生態環境部、中央文明辦、教育部、共青團中央、全國婦聯等五部門共同在全國範圍內開展“美麗中國,我是行動者”主題實踐活動。為將活動推向深入,2018年12月,生態環境部面向全社會開展十佳公眾參与案例評選活動,以發揮其典型示範、價值引領作用。活動獲得了熱烈反響,共徵集到有效案例200餘個,充分展示了社會各界參与生態環境保護、共建美麗中國的實踐行動和豐碩成果。

  《愛在山河 知行合一:“美麗中國,我是行動者”公眾參与優秀案例選編》一書將“美麗中國,我是行動者”2019年十佳公眾參与案例和10個優秀地方案例集納成冊,期待通過這些案例的創新做法,為各地開展“美麗中國,我是行動者”主題實踐活動和公眾參与工作啟迪智慧、分享經驗,為打好污染防治攻堅戰、建設美麗中國打下堅實的社會基礎。

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

7.3萬起的全新SUV 顏值高到逆天 操控還很好?_台中搬家公司

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

除了全系標配ESp,剎車輔助等,還標配了胎壓監測,陡坡緩降,定速巡航,后駐車雷達,自動頭燈,這就讓一些這個價位上的車型略顯得尷尬了,這是要趕超吉利的節奏。手動擋和自動擋的低配相比其他車型少了一些舒適性的配置,例如,中控显示屏,電動天窗等,對於只是用於代步的人來說,這兩個配置可要可不要。

隨着SUV熱度不減的勢頭,無論是合資還是國產,都在大力的推自己旗下的SUV車型,比如,在上個月剛剛公布預售價的東南DX3,預售價:7.29-9.99萬,作為低東南DX7一個級別的“小老弟”,在看看飽和的SUV市場,這樣的售價顯得是高了那麼一些,當然,一分錢一分貨,先來看看DX3到底有什麼“資本”再來評論這個預售價。

外觀:延續了DX7的設計風

同樣,DX7的整體設計出自賓尼法利納的手中,而DX3自然就延續了這樣一個風格,而最重要的是,消費者覺得好看。當然,我個人也覺得不錯,至少在一些設計上還是比較有自己的特點的,簡單說,就是原創度高。但,要是這設計出自國人設計師之手就更好了。

內飾:復古時尚風

十字形的空調出風口,較為復古,也許你已經在另外一個品牌上看過了。六邊形的中控屏造型添加了一些科技感,整體內飾造型來說,復古融合科技,還算協調,也比較簡約。鋼琴烤漆飾板在視覺上也進一步提升了質感和檔次感。當然,觸感也較好。

空間:中規中矩

DX3長寬高為:4354*1840*1670mm,軸距:2610mm,從車身尺寸上來看,

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

在同級別的車型當中並沒有多大優勢,並且空間也不會很大,應該說將將夠用吧,畢竟它只是一輛小型SUV,在怎麼壓榨空間也是有限的。

配置:有小驚喜

在準備看配置表的時候,我是不帶什麼好感的,但當看到完整的配置表時,卻有了那麼點小驚喜。除了全系標配ESp,剎車輔助等,還標配了胎壓監測,陡坡緩降,定速巡航,后駐車雷達,自動頭燈,這就讓一些這個價位上的車型略顯得尷尬了,這是要趕超吉利的節奏。手動擋和自動擋的低配相比其他車型少了一些舒適性的配置,例如,中控显示屏,電動天窗等,對於只是用於代步的人來說,這兩個配置可要可不要。頂配車型還配備全景天窗,其他方面和中配車型沒什麼差別。

動力:跟隨大眾

DX3和時下小型SUV流行的動力匹配是一樣的,1.5L或者是1.5T的發動機,1.5L最大馬力為120匹,匹配5擋手動變速箱,而1.5T發動機最大馬力156匹,匹配CVT無級變速箱(模擬8擋)。至於動力夠不夠,目前還沒有試駕,不能往下結論,但按照理論數據來說,作為一輛家用的小型SUV,是足夠的。

總結:就目前而言,已經不少的小型SUV的起售價都在5萬內了,而DX7起售價去到7萬,確實在這方面會讓不少人卻步,但這是預售價,沒什麼意外的話,正式上市也許會低一些。但也應該不會低到5萬,因為DX3低配的配置已經是其他小型SUV6萬多7萬車型價格,還有一點就是,DX7目前公布的車型也較少。就DX3這個產品而言,雖然空間一般般,但是在顏值和配置上對比同級有一定優勢存在,綜合實力還是比較高的。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

蘋果 App Store 突破 2 千億美金收益,Apple Music 與 Apple TV 也創新紀錄_台中搬家公司

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

從全球基本沒人能逃離疫情影響的一年跨入 2021,擁有眾多數位服務的蘋果,也恰好創了不少新里程碑。其中最大的項目,應該是目前蘋果生態系的重要核心,已伴隨開發者與使用者十多年的 App Store 的最新成績單。繼續閱讀蘋果 App Store 突破 2 千億美金收益,Apple Music 與 Apple TV 也創新紀錄報導內文。

▲圖片來源:

蘋果 App Store 突破 2 千億美金收益,Apple Music 與 Apple TV 也創新紀錄

擁有軟硬體數位服務全面掌控的優勢,打造出十分完整生態系的 Apple。選在 App Store 突破 2 千億美金收益的這個時間點,盤點了自家服務行至今日的成績單。

關於應用程式商店的部分,自 2008 年上線時至今已累積了極為可觀的開發者與用戶基礎,再加上近期 Apple 針對小型開發者減半抽成的友善政策,還有疫情導致更多居家時間的關係。App Store 在今年聖誕夜至跨年夜間的這週,據稱使用者就一共消費了 18 億美金的數字 — 甚至元旦當日還以 5.4 億美元消費刷新了紀錄(太威了吧)。

除了 App Store 以外,已經逐漸構築成一圈(?)「Apple One」訂閱服務的這個生態圈。官方也公布了相關的里程碑,包括 Apple Music 新的立即聆聽、全新的搜尋、個人化電台以及自動播放體驗,現在已被超過 90% 的 iOS 14 用戶使用當中;歌詞功能的用戶也增加了兩倍之多。

此外,透過近期開放眾多電視平台使用的策略下,Apple TV app 現在也已經在全球超過 100 國和地區超過 10 億台設備觀看;Apple TV+ 服務 2019 年上線至今也沒多久,不過也獲得超過 149 個獎項提名。喔對了,在台灣也已經非常普遍的 Apple Pay。據稱現在在英美的普及率已經達到 85% 與 90%,甚至在澳洲更是有 99% 的零售商店都支援這樣的支付功能。也是蘋果推行的相當成功的使用體驗之一。

講起來,台灣近年相對以往也變得越來越快就可以獲得蘋果的服務與功能了,不知道大家還有期待哪些服務可以進入台灣呢?交通卡?Apple Card 還是 Fitness+?可以留言跟我們聊聊啊。

本篇圖片 / 引用來源

延伸閱讀:

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

AirPods Pro 推超「牛」限量版,主動式降噪讓你隨時找到專屬自己的空間

傳超值款 iPad(第九代)將更薄更輕且依然有指紋辨識,至於 iPad Pro…

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

Golang-自動化監控教務系統成績單_台中搬家公司

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

目錄

  • 一、Golang模擬用戶登陸,突破教務系統
    • 1.1 請求登陸頁面
    • 1.2 抓包分析登陸請求
    • 1.3 golang使用js引擎合成salt
    • 1.4 模擬表單提交,完成登陸
    • 1.5 進入成績查詢頁,解析用戶成績
  • 二、植入微信公共號後台

一、Golang模擬用戶登陸,突破教務系統

1.1 請求登陸頁面

整個流程中的第一步是獲取登陸頁面,就像下圖這樣人為的通過瀏覽器訪問服務端,服務端返回反饋返回登陸頁面

訪問登陸頁面的目的上圖中標註出來了,為了獲取到Cookie,給真正發起登陸到請求方法使用。

下面的golang發送http到get請求,獲取登陸頁面的代碼:

// 訪問登陸也,獲取cookie
func GetCookieFromLoginhtml(url string) (cookie string, e error) {
   res, err := http.Get(url)
   if err != nil {
   	e = err
   }
   // 獲取cookie
   cookie = res.Header.Get("Set-Cookie")
   cookie = util.GetOneValueByPrefixAndSurfix("JSESSIONID=", "; Path=/", cookie)
   res.Body.Close()
   return
}

1.2 抓包分析登陸請求

輸入賬號賬號密碼後點擊登陸,將向後端發送登陸請求,如下圖:

分析向後端發送到登陸請求都攜帶了哪些請求參數,攜帶了哪些請求頭信息,以及需要通過Content-Type判斷,該如何處理form表單中的數據發送到後台。後台才能正常響應。

在瀏覽器的控制台中我們可以去看下登陸頁面源碼

登陸頁面對應的js源碼

1.3 golang使用js引擎合成salt

這一步也是必須的,所謂獲取salt,其實就是通過golang使用js引擎執行encodeInp(xxx), 這樣我們才能得到經過加密后的username和password,進一步獲取到encoded

import (
	"github.com/robertkrimen/otto"
	"io/ioutil"
)
func EncodeInp(input string)(result string,e error)  {
	jsfile := "js/encodeUriJs.js"
	bytes, err := ioutil.ReadFile(jsfile)
	if err != nil {
		e = err
	}
	vm := otto.New()
	_, err = vm.Run(string(bytes))
	if err != nil {
		e = err
	}
	enc,err :=vm.Call("encodeInp",nil,input)
	if err != nil {
		e = err
	}
	result = enc.String()
	return
}

js部分的代碼就不往外貼了,可以去下面的github地址中獲取

1.4 模擬表單提交,完成登陸

使用golang模擬登陸請求

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

// 模擬登陸
func login(salt, cookie string) (html string) {
	
	req, err := http.NewRequest("POST", LoginUrl, strings.NewReader("encoded="+salt))
  
	// 添加請求頭
	req.Header.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36")
	req.Header.Add("Cookie", "JSESSIONID="+cookie)
	req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
	req.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9")

	//發送請求
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("無密版qlu教務系統登陸請求失敗 : %v", err)
		return
	}
	// todo 根據狀態碼判斷下一步如何操作,如果狀態碼是302,表示操作成功
	fmt.Println("resp.Status:  ", resp.Status)

	b, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("error : %v", err)
		return
	}
	// 返回個人主頁的html
	html = string(b)
	// 手動關閉
	resp.Body.Close()
	return
}

這一步中值得注意的地方:

第一:我們發送的請求的類型是POST請求

第二:我們應該如何處理form表單中的數據后,再發送給後端,後端才能正常處理呢?

具體處理成什麼樣,是需要根據請求頭中的Content-Type決定的。

不知道大家知不知道常見的Content-Type的幾種類型:在form 表單中有一個屬性叫做 entype可以間接將數據處理成Content-Type指定數據格式, 比如我們可以像這樣設置:

  • enctype = text/plain 那麼form表單最終提交的格式就是: 用純文本的形式發送。

  • enctype = application/x-www-form-urlencoded

    • 表單中的enctype值如果不設置,則默認是application/x-www-form-urlencoded,它會將表單中的數據變為鍵值對的形式。
    • 如果action為get,則將表單數據編碼為(name1=value1&name2=value2…),然後把這個字符串加到url後面,中間用?分隔。
    • 如果action為post,瀏覽器把form數據封裝到http body中,然後發送到服務器。
  • enctype = mutipart/form-data

    • 上傳的是非文本內容,比如是個圖片,文件,mp3。

根據這個知識點,結合我們當前的情況,method=post,Content-Type = application/x-www-form-urlencoded

所以,在選擇golang的api時,我們選擇下圖這個api使用

1.5 進入成績查詢頁,解析用戶成績

如果不出意外,經過上面的處理,我們已經完成登陸,並且獲取到後台頁面的html源碼了。

再之後我們就直奔成績查詢模塊,還是使用如何的分析思路

func getAllScore(stuIdentify, cookie string) ([]mtStruct.Score, error) {
	// 發送查詢成績的請求
	u := "http://jwxt.qlu.edu.cn/jsxsd/kscj/cjcx_list"
	req, err := http.NewRequest("POST", u, strings.NewReader("kksj=&kcxz=&kcmc=&xsfs=all"))
	if err != nil {
		fmt.Printf("error : %v", err)
		return nil, err
	}
	req.Header.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36")
	req.Header.Add("Cookie", "JSESSIONID="+cookie)
	req.Header.Add("Referer", "http://jwxt.qlu.edu.cn/jsxsd/kscj/cjcx_query?Ves632DSdyV=NEW_XSD_XJCJ")
	req.Header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*;q=0.8,application/signed-exchange;v=b3;q=0.9")

	client := &http.Client{}
	resp, err := client.Do(req)
  ...
  
}

代碼詳情可以去github上查看。

二、植入微信公共號後台

上面的功能實現后再結合Golang開發微信公眾號就能實現一款好玩的應用。

讓用戶通過微信公共號平台和後端進行數據的交互,我們獲取到用戶的信息,拿着用戶的信息幫用戶監聽教務系統的成績單的狀態。一旦有成績第一時間推送給用戶。

點擊查看公眾號端設計思路

項目GitHub地址:https://github.com/zhuchangwu/golang-wechat-backend

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

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

藍城兄弟以2.4億元收購Finka_台中搬家公司

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

11月25日消息,藍城兄弟(BLCT.US)宣布以現金總代價人民幣2.4億元收購Finka的100%股權,預計交易將在12月中旬之前完成。

根據弗若斯特沙利文報告,社交網絡應用Finka在2019年擁有超過270萬註冊用戶。

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

北京時間7月8日晚,Blued母公司藍城兄弟順利登陸納斯達克。發行價16美元,開盤價20.45美元,上市首日收盤大漲46.44%,市值達8.35億美元(約人民幣58億元)。

藍城兄弟的前身是2000年成立的淡藍網,作為國內首家服務於性少數派人群的網站,淡藍網起初只是具有公益屬性的在線論壇,旨在科普與艾滋病毒相關的知識。那時誰也沒想到,就是這家小小的網站,後來成為了國內第一大男性同志社交平台和LGBTQ社區。所謂LGBTQ群體,即女同性戀者(Lesbian)、男同性戀者(Gay)、雙性戀者(Bisexual)、跨性別者(Transgender)、酷兒(Queer)等性少數群體。

【本文為原創,網頁轉載須在文首註明來源(微信公眾號ID:PEdaily2012)及作者名字。微信轉載,須在微信原文評論區聯繫授權。如不遵守,將向其追究法律責任。】

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

微軟推出新款 Surface Pro 7 Plus,SSD 採可拆式設計,擁有更好散熱、更大電池_台中搬家公司

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

隨著 CES 2021 登場,各大品牌都陸續推出新產品、新技術,這次微軟也缺席,稍早就發表一款全新 Surface Pro 7 Plus 平板筆電(或稱 Surface Pro 7+),跟現行的 Surface Pro 7 相比,許多地方都有提升,像是採用最新 Intel 第 11 代處理器、更好的散熱設計與續航力、以及相當吸引人的可拆式 SSD,讓用戶可自行修理或替換。

微軟推出新款 Surface Pro 7 Plus

微軟最新 Surface Pro 7 Plus 平板筆電外型與螢幕跟 Surface Pro 7 相同,都是 12.3 吋與 2736×1824 的解析度,基本上沒改變,主要都是在內部硬體:

首先是 LTE,這可說是自 2015 年以來,Surface Pro 系列再次見到 LTE 的機型,內部搭載的晶片組為 Snapdragon X20 LTE,也因此很可惜不支援目前最夯的 5G 網路。

處理器部分 Surface Pro 7 Plus 搭載 Intel 第 11 代,效能預計提升一倍。另外跟大多數 Surface Pro 系列一樣,Surface Pro 7 Plus 也有 i3~i7 的選擇,i3 版將內建 8GB RAM 與 128GB SSD 儲存空間,i7 版則可以選擇最高 32GB RAM 與 1TB SSD 儲存空間,LTE 版僅限 i5 版:

散熱方面採用全新石墨散熱設計,相較於 Surface Pro 7 散熱效果更好,還加入跟 Surface Pro X 一樣的技術,減少螢幕厚度並增加內部空間,然後再把這多餘空間加裝更大的電池,Surface Pro 7 Plus 是目前 Surface Pro 系列中,電池最大的一款,容量為 50.4 Wh:

根據微軟測試,最高可提供長達 15 小時的續航力,比 Surface Pro 7 多 4.5 小時,且支援快速充電,大約一小時內就能充飽 80%。

背面用螺絲打開就能看到可拆式 SSD:

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

I/O 端也跟 Surface Pro 7 一樣,具有一個 USB-C、USB-A、3.5mm 耳機孔與 Surface 連接介面:

Surface Pro 7 Plus 建議售價為 899 美金起,最旗艦機型要價 2799 美金,LTE 版起價為 1419 美金。

資料來源:微軟

微軟將推出對使用者更友善、更容易使用的檔案恢復工具

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

“造輪運動”之 ORM框架系列(一)~談談我在實際業務中的增刪改查_台中搬家公司

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

  想想畢業已經快一年了,也就是大約兩年以前,懷着滿腔的熱血正式跨入程序員的世界,那時候的自己想象着所熱愛的技術生涯會是多麼的豐富多彩,每天可以與大佬們坐在一起討論解決各種牛逼的技術問題,喝着咖啡,翹着二郎腿,大致就是下面這幅場景:

  

 

  可是現實卻總是那麼不盡如人意,現實的所謂技術生涯是永遠寫不完的增刪改查,還有那日漸稀薄的頭髮,哎,難…

  

 

    話說回來,如果連增刪改查都做不好,還談何技術生涯。

     所以,我一直認為:如果你認為自己是一個優秀的程序員,那就應該從最基礎的增刪改查中就能體現出來

     有人可能會說,增刪改查?很難嗎?

     其實,說難,也不難,無非就是寫SQL,Add、Delete、Update、Select,僅此而已;但是如果只是從SQL的角度認為這很容易,而對其不懈一顧,那你可能就和當初剛剛開始增刪改查大業的我一樣,太天真了。

    首先,我和大家分享一下我在工作這將近兩年中在增刪改查這條路上的心路歷程。

 

一、初出茅廬——原生sql走天下,sql寫到手抽筋

    某年某月某日,大三尾聲,翹課在宿舍睡大覺的我剛從床上艱難地爬起來,打開手機,發現剛工作的老學長阿威給我發來了一條信息:

   “阿森,來活了,幫我搞個網站,會弄嗎?”

   “網站?沒弄過誒。。”

     “這個項目給的銀兩還挺多的。。”

   “可以,可以,這個可以搞,沒問題,阿威哥”

     

  就這樣,我就走上了Web開發的道路。初入坑,首先遇到的問題就是數據庫的操作,但是經過自己的旁門左道的學習也大致摸清了使用ADO.NET操作數據庫的方法:

  第一步,使用DBConnection建立與數據庫之間的連接,打開連接

  第二步,然後創建DBCommand對象,初始化你想要執行的SQL語句

  第三步,調用DBCommand的方法,執行SQL語句

  第四步,使用DataReader逐條讀取sql執行的結果,或者使用DataAdapter類將結果填充(Fill)到DataSet中,最後關閉Connection連接

  到此為止,就實現了在.net中操作數據庫執行sql語句返回執行結果的操作。

  當然,我覺得任何一個初級的程序員也都會給自己封裝一個叫做SQLHelper的幫助類,我也不例外,它可以幫助你節省頻繁的建立數據庫連接(DBConnection)、初始化DBCommand對象、讀取sql執行結果等重複的代碼量。所以,封裝一個自己的SQLHelper工具類是一個初級程序員必備的素質。

  我把一個當初自己封裝的SQLHelper類貼出來獻獻醜:

   

  1     public static class SqlServerHelper
  2     {
  3         //數據庫連接字符串,從配置文件的配置字段中讀取
  4         private static readonly string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
  5 
  6         /// <summary>
  7         /// 創建新的數據庫連接
  8         /// </summary>
  9         public static SqlConnection CreateSqlConnection()
 10         {
 11             SqlConnection conn = new SqlConnection(connStr);
 12 
 13             conn.Open();   //打開數據庫連接
 14 
 15             return conn;
 16         }
 17 
 18         /// <summary>
 19         /// 執行無結果返回的sql語句(共用同一個連接)
 20         /// </summary>
 21         /// <param name="sqlConn"></param>
 22         /// <param name="sqlStr"></param>
 23         /// <param name="sqlParamters"></param>
 24         /// <returns>返回受影響的數據總條數</returns>
 25         public static long ExecuteNoQuery(SqlConnection sqlConn, string sqlStr, params SqlParameter[] sqlParamters)
 26         {
 27             using (SqlCommand cmd = sqlConn.CreateCommand())
 28             {
 29                 cmd.CommandText = sqlStr;
 30                 cmd.Parameters.AddRange(sqlParamters);
 31 
 32                 long sum = cmd.ExecuteNonQuery();
 33 
 34                 return sum;
 35             }
 36         }
 37 
 38         /// <summary>
 39         /// 執行無結果返回的sql語句(不共用一個連接)
 40         /// </summary>
 41         /// <param name="sqlStr"></param>
 42         /// <param name="sqlParamters"></param>
 43         /// <returns>返回受影響的數據總條數</returns>
 44         public static long ExecuteNoQuery(string sqlStr, params SqlParameter[] sqlParamters)
 45         {
 46             using (SqlConnection sqlConn = CreateSqlConnection())
 47             using (SqlCommand cmd = sqlConn.CreateCommand())
 48             {
 49                 cmd.CommandText = sqlStr;
 50                 cmd.Parameters.AddRange(sqlParamters);
 51 
 52                 long sum = cmd.ExecuteNonQuery();
 53 
 54                 return sum;
 55             }
 56         }
 57 
 58         /// <summary>
 59         /// 執行只有一行一列返回數據的sql語句(共用同一個連接)
 60         /// </summary>
 61         /// <param name="sqlConn"></param>
 62         /// <param name="sqlStr"></param>
 63         /// <param name="sqlParamters"></param>
 64         /// <returns>返回結果的第一行第一列數據</returns>
 65         public static object ExecuteScalar(SqlConnection sqlConn, string sqlStr, params SqlParameter[] sqlParamters)
 66         {
 67             using (SqlCommand cmd = sqlConn.CreateCommand())
 68             {
 69                 cmd.CommandText = sqlStr;
 70                 cmd.Parameters.AddRange(sqlParamters);
 71 
 72                 object res = cmd.ExecuteScalar();
 73 
 74                 return res;
 75             }
 76         }
 77 
 78         /// <summary>
 79         /// 執行只有一行一列返回數據的sql語句(不共用同一個連接)
 80         /// </summary>
 81         /// <param name="sqlStr"></param>
 82         /// <param name="sqlParamters"></param>
 83         /// <returns>返回結果的第一行第一列數據</returns>
 84         public static object ExecuteScalar(string sqlStr, params SqlParameter[] sqlParamters)
 85         {
 86             using (SqlConnection sqlConn = CreateSqlConnection())
 87             using (SqlCommand cmd = sqlConn.CreateCommand())
 88             {
 89                 cmd.CommandText = sqlStr;
 90                 cmd.Parameters.AddRange(sqlParamters);
 91 
 92                 object res = cmd.ExecuteScalar();
 93 
 94                 return res;
 95             }
 96         }
 97 
 98         /// <summary>
 99         /// 執行有查詢結果的sql語句(共用同一個連接)
100         /// </summary>
101         /// <param name="sqlConn"></param>
102         /// <param name="sqlStr"></param>
103         /// <param name="sqlParamters"></param>
104         /// <returns></returns>
105         public static DataTable ExcuteQuery(SqlConnection sqlConn, string sqlStr, params SqlParameter[] sqlParamters)
106         {
107             using (SqlCommand cmd = sqlConn.CreateCommand())
108             {
109                 cmd.CommandText = sqlStr;
110 
111                 cmd.Parameters.AddRange(sqlParamters);
112 
113                 //把sql語句的執行結果填充到SqlDataAdapter中
114                 SqlDataAdapter adapter = new SqlDataAdapter(cmd);
115 
116                 DataTable dt = new DataTable();
117                 adapter.Fill(dt);    //將執行結果填充到dt對象中
118 
119                 return dt;
120             }
121         }
122 
123         /// <summary>
124         /// 執行有查詢結果的sql語句(共用同一個連接)
125         /// </summary>
126         /// <param name="sqlStr"></param>
127         /// <param name="sqlParamters"></param>
128         /// <returns></returns>
129         public static DataTable ExcuteQuery(string sqlStr, params SqlParameter[] sqlParamters)
130         {
131             using (SqlConnection sqlConn = CreateSqlConnection())
132             using (SqlCommand cmd = sqlConn.CreateCommand())
133             {
134                 cmd.CommandText = sqlStr;
135 
136                 cmd.Parameters.AddRange(sqlParamters);
137 
138                 //把sql語句的執行結果填充到SqlDataAdapter中
139                 SqlDataAdapter adapter = new SqlDataAdapter(cmd);
140 
141                 DataTable dt = new DataTable();
142                 adapter.Fill(dt);    //將執行結果填充到dt對象中
143 
144                 return dt;
145             }
146         }
147 
148         /// <summary>
149         /// 批量插入數據到數據庫
150         /// </summary>
151         /// <param name="insertTable"></param>
152         /// <param name="dataTableName"></param>
153         public static void BatchInsert(DataTable insertTable, string dataTableName)
154         {
155             using (SqlBulkCopy sbc = new SqlBulkCopy(connStr))
156             {
157                 sbc.DestinationTableName = dataTableName;
158 
159                 for (int i = 0; i < insertTable.Columns.Count; i++ )
160                 {
161                     sbc.ColumnMappings.Add(insertTable.Columns[i].ColumnName, insertTable.Columns[i].ColumnName);
162                 }
163 
164                 sbc.WriteToServer(insertTable);
165             }
166         }
167 
168     }

SQLHelper

    於是在那段開發的歲月里,是這個SQLHelper類陪我走完了全程,向它說聲辛苦了… 

 

二、EF框架真香,Lambda表達式我最愛

  大三暑假,由於抑制不住想要出去試一試的衝動,我來到了一家小型互聯網公司實習,公司也是用.net開發網站的技術棧。

   當上崗的第一天,我準備掏出我自認為牛逼的SQLHelper的時候,卻被項目經理叫停了,項目經理阿勇對我說:

   “小伙子,21世紀了,還在傻傻地用SQLHelper?來,試試EF吧,讓你欲罷不能…”

   於是,一臉懵逼的我,一頭埋進了EF的世界中,不得不說,的確香。

   EF全名EntityFramework,是微軟官方的一款ORM框架,支持Object(對象)與數據庫之間的數據映射,支持Linq的操作語法,受廣大.NET程序員青睞。

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

   其實在接觸EntityFramework之前我就使用過Dapper,Dapper相對與EF來說是輕量的多的一款ORM框架,近乎於原生sql的寫法,讓它處於性能之最,也提供對象與數據庫表之間的映射。

   但正是由於用過了EF,我才知道了原來還有 Lambda to SQL 這種東西,相信大多數程序員都和我一樣經歷過寫原生SQL的痛苦

   無論是多麼簡單的一條sql,你都要在表設計文檔和sql編輯器中反覆切換比對字段,生怕自己打錯一個字母;而且我們在基礎的業務中的大部分增刪改查其實都是相當簡單的單表操作sql,正是使用了Lambda to SQL 的代碼編寫方式,你可以在VsStudio豐富的代碼提示下飛快地完成一條簡單的SQL語句。

   為什麼說簡單的SQL編寫才使用Lambda表達式的形式去編寫呢,複雜的sql就不行了嗎?

   理由是,你要明白不管是Lambda還是Linq的語句,最終都是在EF的SQL語句解析器中被翻譯成可供數據庫執行的sql語句,不得不說EF的Linq To SQL 的解析器的確強大,但是畢竟還是機器翻譯的sql,當你讓它給你轉化一個複雜的linq語句時,它是一定考慮不到sql性能的優化。

   就像你去用金山詞霸翻譯一個單詞,它可以給你翻譯的很準確;但是你讓它去幫你翻譯一個長句,可能你讀着就覺得彆扭了;更有甚者把一篇論文粘貼複製到金山詞霸里,那可能比你直接看英文原文還費勁,這是同樣一個道理,有些東西還是需要人工來做,就比如優化sql語句。不能奢求什麼都扔給Lambda和Linq,它幫我們做的已經足夠多了。

   總之一句話,Lambda很香,但絕對不能替代SQL

 

三、全部都是存儲過程,調試太難

  畢業后的我來到了一家大型製造業企業從事IT行業,說的這麼體面,其實還是一個苦逼敲代碼的。

   上崗的第一天我就問旁邊的程序媛,對,你沒看錯,是“媛”,不是“猿”,嘿嘿。想我代碼生涯一年以來,第一次見這麼多程序媛,低調低調,不要聲張,不然讓隔壁的程序猿聽到了會嫉妒的。

   

  “姐姐,我們這用EF嗎?”

   “EF?是啥…”,姐姐一臉懵逼。。。

   “那你們用什麼操作數據庫啊?自己封裝SQLHelper嗎?”

   “用存儲過程啊,都用了7、8年了”

   “哦,這樣啊”,我心想,都用了7、8年了,這個姐姐是個狠人。

   入鄉隨俗,咱也不能壞了規矩,那就照着用吧,存儲過程以前用過幾次,但是那是在sql的邏輯比較複雜的時候才會寫存儲過程調用的,要是所有的sql都放在存儲過程裏面去調用的話,那就太繁瑣了吧。

   經過一段時間的使用,證明我的顧慮是對的。

   全部使用存儲過程后,發現,就是一條簡單的Delete、Insert語句都要寫在存儲過程中,簡直不要太麻煩。

   首先的問題就是,不好編寫,對於一個剛上手存儲過程語法的程序員來說這簡直就是災難,目前的SQL編輯器沒有語法提示功能而造成非常不好的代碼編寫體驗,嚴重拖慢開發進程;

   更要命的是,太難調試!當你在c#代碼中調用完存儲過程后,你發現程序安然無恙地執行完,但是並沒有得到你想要的結果,於是你找啊找,找啊找,最後,你只能懷疑是不是存儲過程有問題,但是運行過程中存儲過程一點動靜也沒有啊,這就是使用存儲過程最大的弊端,悄無聲息地出錯,完全不知道裏面發生了什麼,只能默默地把存儲過程的參數記下,然後輸入到sql的調試其中執行一遍才可以發現錯誤。

   然後你的項目經理跑過來問你昨天的代碼敲完了嗎,心累…

   於是,我對存儲過程留下了非常不好的印象。但是存儲過程的好處是顯而易見的:當你的業務邏輯用一條sql解決不了的時候你會考慮使用多條sql來配合完成查詢,可是如果執行每一條sql語句都要與數據庫建立連接然後再執行的話好像有點繁瑣不說,主要是重建數據庫連接的過程也是需要時間與資源的,所以這個時候存儲過程就派上用場了,把你的sql都扔到存儲過程裏面去吧,多麼令人心曠神怡的操作,這個時候你就不要去想存儲過程出錯難找的問題了,因為你想要獲得方便總要有點犧牲精神。

 

四、沒有哪一種是完全適合自己的,如果有,那就是自己造的

  想要有Dapper的神速,又想要有EF中使用lambda表達式的便捷,但是二者好像並不能兼得。

   Dapper雖然是效率之王,但是它沒有EF中可以使用的便捷的lambda表達式;

   EF雖然可以使用便捷的lambda、linq語法,可是由於EF的過分強大(EF還具有對象追蹤的功能),讓它顯得稍微有點臃腫,屬於重量級的ORM框架。

   於是我就在想,有沒有一款輕量級的ORM,既有不低的執行效率,又有簡單實用的Lambda TO SQL?

   答案當然是,有的,現在開源的國產sqlSuger、freeSql,比比皆是。但是,我就是想自己試試造輪子的感覺,目的並不是說造出多麼好的ORM框架去超越他們,而是在這個過程中學到的東西和得到的歷練是非常可觀的。

 

   沒辦法,有觀眾說“褲子都脫了,就給我看這個?”,我決定還是先把藏的貨先擺出來,也好有個交代…

   源碼地址:https://gitee.com/xiaosen123/CoffeeSqlORM

   本文為作者原創,轉載請註明出處:https://www.cnblogs.com/MaMaNongNong/p/12884871.html

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

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

男人夜歸日益嚴重? 還不是因為買了這月銷2萬的車_台中搬家公司

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

除了總理為它駐足,第一次看到它的時候也被它的外觀所吸引,全新一代律動設計,極具品質感的外飾與內飾,超大全景天窗等,都展現出上汽比肩國際水準的精湛工藝品質,說到這裏,突然明白了那些喜歡呆在車上的男人為何都不回家了,可能他們都在榮威RX5上找到了一間屬於自己的小蝸居。

最近收到很多女性粉絲的投訴,自家男人都夜歸,甚至夜不歸家,所以專門開通了情感熱線,和各位女粉絲交流交流,此時搖身一變,變成了一位專治情傷的感情專家,慰藉女性粉絲幼小的心靈,但發覺了一個問題,她們陳訴案例時,都指向了一個方向,就是她們的男人更愛在車上獃著,甚至,情願睡車上,每次她們發現她們男人的地方都是在車上,那到底什麼車那麼吸引一眾男人呢?最終,找到答案了,就是以下這台“互聯網”汽車。

榮威RX5

先不論為什麼男人都為這台車而瘋狂,就看最近的一則新聞,在10月12日舉行的2016年全國大眾創業萬眾創新活動周上,李克強總理來到深圳灣創業廣場的展覽廳,阿里巴巴集團董事局主席馬雲剛剛向李克強總理介紹完他們打造的“第一款量產互聯網汽車”,騰訊公司董事會主席兼首席執行官馬化騰就把總理“拉”到展台前,介紹騰訊在眾創空間、網絡安全等方面的工作,而這兩個展台,據說都不在總理既定的参觀路線內。

連總理也被這台首款“互聯網”SUV吸引,肯為它改變路線,加長停留時間,自然它有它的磁力,加之榮威RX5的創新理念,

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

符合國家“互聯網+”戰略政策,更別說吸引眾多男士為它夜不歸家。

適逢李克強總理在會上被熱情的創業者一再打動,總理更是欣然答應給創業者現場發創業‘紅包’,只點擊了屏幕一下,100萬個1000元紅包立刻發給創業者們,款項可以用於購買商標註冊、社保代繳等企業服務。

除了總理為它駐足,第一次看到它的時候也被它的外觀所吸引,全新一代律動設計,極具品質感的外飾與內飾,超大全景天窗等,都展現出上汽比肩國際水準的精湛工藝品質,說到這裏,突然明白了那些喜歡呆在車上的男人為何都不回家了,可能他們都在榮威RX5上找到了一間屬於自己的小蝸居。

而且這小蝸居還很省錢,最近由上汽集團與阿里巴巴聯手打造的“探索·創變”——全球首次互聯網汽車拉力賽在杭州雲棲小鎮順利收官,探索先鋒們攜手榮威RX5,歷經72小時、1700公里,最終,順利抵達陝西安康,憑藉上汽世界級“藍芯”高效動力科技,榮威RX5創下3.7L/百公里的超低油耗紀錄,刷新SUV節油標準。

通過“吃貨的戰爭”、“雙盲導航”、“預約保養”等任務,榮威RX5多項互聯網“黑科技”也在複雜生活場景中完成實際應用,印證產品強大實力,互聯網汽車拉力賽展現出了未來全新汽車生活方式,併為消費者帶來了前所未有的變革體驗。

看到這些,也感覺自己開始慢慢同情起那些不被理解的男同胞了,在這麼一台好車面前如何能夠把持自己的慾望,而截至這個月為止,榮威RX5已經上市3月,訂單過10萬,10月銷量更是越過2萬大關,網上70%以上都是互聯網汽車的消息,在這個浮躁的社會裡面,能有一台給你安全感的車不容易,還有5萬台沒交付到客戶手上的新車正在整裝待發,估計再過幾個月,將會忙起來,情感業務也應該能開通了。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」