Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
B6高性能拼接Json字符串庫!
System.text.dll是用社區版c++為VB6編寫的com組件,簡單幾步即可免注冊調用,完全免費。經測試,海量字符串拼接時速度接近c++的性能。
JsonBuilder對象
說明:字符串高性能拼接對象,接近C++的性能。
示例1
Dim JStrB As JsonBuilder
Set JStrB = New JsonBuilder
With JStrB
.Node_Start
.Node_AddKey "code", 200, True
.Node_AddKey "message", "OK"
.Node_End
Debug.Print .ToString()
End With
Set JStrB = Nothing
結果:{"code":200,"message":"OK"}
示例2
Dim JStrB As JsonBuilder
Set JStrB = New JsonBuilder
With JStrB
.Node_Start
.Node_AddKey "code", 200, True
.Node_AddKey "message", "OK"
.Son_Begin "Data"
.Son_AddKey "ID", 1, True
.Son_AddKey "Title", "測試"
.Son_AddKey "Price", "12", True
.Son_Finish
.Node_End
Debug.Print .ToString()
End With
Set JStrB = Nothing
結果:{"code":200,"message":"OK","Data":{"ID":1,"Title":"測試","Price":12}}
示例3
Dim JStrB As JsonBuilder
Set JStrB = New JsonBuilder
With JStrB
.Node_Start
.Node_AddKey "code", 200, True
.Node_AddKey "message", "OK"
.Son_Begin "Data"
.Son_AddKey "ID", 1, True
.Son_AddKey "Title", "測試"
.Son_AddKey "Price", "12", True
.Son_Finish
.Node_End
Debug.Print .ToString()
End With
Set JStrB = Nothing
結果:{"code":200,"message":"OK","Data":{"ID":1,"Title":"測試","Price":12}}
Dim JStrB As JsonBuilder
Set JStrB = New JsonBuilder
With JStrB
.Array_Begin
'張三
.Node_Start
.Node_AddKey "Name", "張三"
.Node_AddKey "Age", "22", True
.Node_AddArrayText "Color", """Red"",""Green"""
'..Love
.SonArray_Begin "Love"
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "閱讀"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "書法"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Finish
'..Property
.Son_Begin "Property"
.Son_AddKey "Account", "zhangsan"
.Son_AddKey "OrderID", 1, True
.Son_Finish
'..Cart
.SonArray_Begin "Cart"
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "水滸傳"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "紅樓夢"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Finish
'..Payer
.Son_Begin "Payer"
.Son_AddKey "Account", "zhangsan"
.Son_AddKey "PayerID", 1, True
.Son_AddArrayText "Color", """Red"",""Green"""
.Son_Finish
.Node_AddKey "Province", "北京"
.Node_End
'李四
.Node_Start
.Node_AddKey "Name", "李四"
.Node_AddKey "Age", "30", True
.Node_AddArrayText "Color", """無"""
'..Love
.SonArray_Begin "Love"
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "音樂"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "閱讀"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Finish
'..Property
.Son_Begin "Property"
.Son_AddKey "Account", "lisi"
.Son_AddKey "OrderID", 2, True
.Son_Finish
'..Cart
.SonArray_Begin "Cart"
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "西游記"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Node_Start
.SonArray_Node_AddKey "Name", "射雕英雄傳"
.SonArray_Node_AddArrayText "Color", """Red"",""Green"""
.SonArray_Node_End
.SonArray_Finish
'..Payer
.Son_Begin "Payer"
.Son_AddKey "Account", "lisi"
.Son_AddKey "OrderID", 2, True
.Son_AddArrayText "Color", """Red"",""Green"""
.Son_Finish
.Node_AddKey "Province", "上海"
.Node_End
.Array_Finish
Debug.Print .ToString()
End With
Set JStrB = Nothing
結果:[{"Name":"張三","Age":22,"Color":["Red","Green"],"Love":[{"Name":"閱讀","Color":["Red","Green"]},{"Name":"書法","Color":["Red","Green"]}],"Property":{"Account":"zhangsan","OrderID":1},"Cart":[{"Name":"水滸傳","Color":["Red","Green"]},{"Name":"紅樓夢","Color":["Red","Green"]}],"Payer":{"Account":"zhangsan","PayerID":1,"Color":["Red","Green"]},"Province":"北京"},{"Name":"李四","Age":30,"Color":["無"],"Love":[{"Name":"音樂","Color":["Red","Green"]},{"Name":"閱讀","Color":["Red","Green"]}],"Property":{"Account":"lisi","OrderID":2},"Cart":[{"Name":"西游記","Color":["Red","Green"]},{"Name":"射雕英雄傳","Color":["Red","Green"]}],"Payer":{"Account":"lisi","OrderID":2,"Color":["Red","Green"]},"Province":"上海"}]
如感興趣,請關注“vb6plus”。
序員的工作和日常生活非常的枯燥,這里給大家推薦一些程序員經常使用的網站,也是我經常上的一些網站,我將會從多個角度、多個層面分別為你整理歸納這些網站和論壇
項目是一個面試官非常看重的點,也是拓展視野、挖掘輪子一個的地方,下面就為你推薦幾個程序員都應該 mark 的項目類網站
作為開源代碼庫以及版本控制系統,Github 擁有140多萬開發者用戶。隨著越來越多的應用程序轉移到了云上,Github 已經成為了管理軟件開發以及發現已有代碼的首選方法。代碼托管必備。
Github 也有非常多好的項目可以推薦,比如我自己的 github (逃了)
https://github.com/crisxuan/bestJavaer
還有其他非常多優秀的 Github ,比如 CS-notes、JavaGuide、mall 商城項目
碼云托管平臺是中國的,之所以國內自己開發了一個碼云平臺,是因為 github 涉及到 fq,你懂的,而且碼云是開源中國的托管平臺,會定期評選一些優秀的項目,你不可錯過!
對于有些人,提到GitHub就會自然的想到Gitlab,Gitlab支持無限的公有項目和私有項目。其首頁截圖如下
程序員必須知道的幾個Git代碼托管平臺
談到 coding.net,首先必須提的是速度快,功能與開源中國相似,同樣一個賬號最多可以創建 1000 個項目,也支持任務的創建等
coding.net
中國專業IT社區CSDN (Chinese Software Developer Network) 創立于1999年,致力于為中國軟件開發者提供知識傳播、在線學習、職業發展等服務。中國最大、最具專業的博客平臺,同時也是質量最高的博客平臺
這樣一個不起眼的地方,卻吸引了很多IT技術精英,把這里當作自己的網上家園,每天在這里分享著精彩的原創內容,也許他們看重的不是華麗的外表、誘人的虛名,而是純凈、專注、對技術人員的理解。
掘金現在被字節跳動收購了,內容審核變得越來越嚴格,也涌現了很多大佬,他們寫的文章非常幫,強烈推薦大家每天逛一逛,博客內容都是經過層層篩選的,非常值得一看
思否上面有很多大佬,不得不說思否的界面做的非常清新,舒服,這就讓人很喜歡這個博客平臺,目前看來還是比較小眾,但是上面的開發者的互動很多,是一個很溫馨的地方。s
infoq 是最近興起的一個技術社區,界面非常小清新,讓人感覺很舒服,目前入駐的開發者倒不是很多,但是 infoq 依托極客邦的大流量和資源,做起來應該很快的,我入駐了 infoq ,感覺里面還是有很多大佬的,推薦大家經常瀏覽一波
GitChat 是一個付費學習網站,當然也支持免費模式,因為付費所以相對文章質量比較高,但是免費的文章同樣也很不錯,而且我就在 GitChat 上面寫了很多免費文章,不應該是很多,應該是全部免費,我的 gitchat 主頁如下 程序員cxuan 的 GitChat
無論你是在大學進行人生最重要階段的學習,或者是在中國的某座城市工作,或者是在外太空的某個天體如 Sputnik 1 上享受人生,在注冊進入 V2EX 之后,你都可以為自己設置一個所在地,從而找到更多和你在同一區域的朋友。
這個網站和CSDN一樣是國內最大程序員社區,各種教程、資源、工具、書籍都是可以找到的。在社區里,你可以盡情的寫博客,發動態,激烈的討論問題,只有在這種環境下才能激起你學習的熱情。
簡書是一個不僅僅為程序員提供的創作分享社區,上面充滿了各種各樣精彩的博文,也有很多優秀的博主,但是相比較與CSDN個人認為在技術創作方面就略低一籌了。
有問題,上知乎。知乎,可信賴的問答社區,以讓每個人高效獲得可信賴的解答為使命。
本是一個分享各種人生雜談,和一些鮮為人知以及各種大牛的免費和付費的知識型網站。由于流量逐步擴大,吸引了大批優秀的程序員在上面分享自己的技術創作,也是一個程序員常去的網站之一,不僅僅是為了學習技術。
SegmentFault 思否是中國領先的新一代開發者社區和專業的技術媒體。我們為中文開發者提供純粹、高質的技術交流平臺以及最前沿的技術行業動態,幫助更多的開發者獲得認知
菜鳥教程提供了編程的基礎技術教程, 介紹了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各種編程語言的基礎知識,是個小白入門,學習語言的好地方。
在W3School,你可以找到你所需要的所有的網站建設教程。從基礎的 HTML 到 CSS,乃至進階的 XML、SQL、JS、PHP 和 ASP.NET。從左側的菜單選擇你需要的教程! 和菜鳥教程十分相似的網站。
易百網是一個內容全面的教程網站,專注于VBScript, MATLAB, EJB, IPv6, IPv4, 電子商務, PostgreSQL, SQLite, SDLC, Assembly, 操作系統, JSON, iOS, 設計模式, VB.Net, 計算機基礎知識。
期初這個網站是由游戲玩家視頻火起來的,尤其LOL骨灰級玩家遍布其中。bilibili 是國內知名的視頻彈幕網站,通過動漫打出了名聲,最近兩年發展勢頭迅猛,里面有不少有創意的 Up 主,不乏一些有趣的程序員。
中國大學MOOC(慕課) 是國內優質的中文MOOC學習平臺,由愛課程網攜手網易云課堂打造。平臺擁有包括985高校在內提供的千余門課程。在這里,每一個有意愿提升自己的人都可以免費獲得更優質的高等教育。
慕課網(IMOOC)是IT技能學習平臺。慕課網(IMOOC)提供了豐富的移動端開發、php開發、web前端、android開發以及html5等視頻教程資源公開課。
網易云課堂,是網易公司打造的在線實用技能學習平臺,主要為學習者提供海量、優質的課程,用戶可以根據自身的學習程度,自主安排學習進度。涵蓋實用軟件、IT與互聯網、外語學習、生活家居、興趣愛好、職場技能、金融管理、考試認證、中小學、親子教育等十余大門類。
實驗樓這個網站我直接吹爆,無需配置繁瑣的本地環境,隨時在線使用。
幾乎每個算法大牛都知道的神奇網站,這個網站上面有:算法、數據庫、Shell、多線程等多種類型供你學習。多數人在上面練習編程算法,尤其是給想進入一線互聯網公司的技術人員,提供了一個免費又方便的題庫。面試前都會在上面進行長期和充分的刷題,是你的不二選擇。
LintCode領扣上有數量超過1000道的算法題目和人工智能題目,通過刷題熟練掌握數據結構和算法。完成各大名企的階梯訓練,為你斬獲心儀的offer打下堅實的基礎
洛谷創辦于2013年,致力于為參加noip、noi、acm的選手提供清爽、快捷的編程體驗。它擁有在線測題系統、強大的社區、在線學習功能,也是一個很好練習刷題的網站啦
程序員客棧是領先的程序員自由遠程工作平臺,未來互聯網企業用人方式。提供優秀程序員為您進行網站建設制作、測試運維服務、人工智能AI、大數據區塊鏈、軟件開發等優質服務。
碼市是互聯網軟件外包服務平臺,意在連接需求方與廣大開發者。讓項目的需求方快速的找到合適的開發者,完成項目開發工作。
猿急送為您提供兼職程序員,兼職工程師信息,猿急送是一個高級技術共享平臺,是優質的程序員兼職網站,這里匯聚BAT等知名互聯網公司的技術開發、產品、設計大牛。
開源眾包–專業的軟件眾包平臺,350萬+ 優質開發者為您提供網站、APP、微信/小程序、企業應用等軟件開發服務,有效降低企業 IT 軟件開發成本、解決技術資源不足等問題。
這個比較高級,是一些知名公司技術人員兼職的平臺。我們可以在線約好去其他公司兼職坐班。實現網為企業提供BAT等名企背景的、靠譜的開發設計兼職人才和自由職業者,滿足企業項目外包、駐場開發、遠程兼職、技術咨詢等短期人力需求。
豬八戒網企業外包服務,中國領先的靈活用工平臺,其中服務品類涵蓋LOGO設計、UI設計、營銷推廣、網站建設、裝修設計、工業設計、文案策劃、知識產權的服務。
碼易是智網易聯旗下IT軟件服務平臺,集軟件商城、企業應用、電商軟件、crm軟件、商務服務平臺于一體的一站式軟件外包開發服務平臺。
求職之前,先上牛客,就業找工作一站解決。這個網站不像csdn和OSChina以技術博客論壇為主了。但是在你需要的時候,卻是相當有價值,里面有面試技巧、各種知名的不知名的互聯網公司的對應往年校招社招面試題庫,刷到你手軟,一般應屆生用這個比較多。
拉勾招聘是專業的互聯網求職招聘網站。致力于提供真實可靠的互聯網崗位求職招聘找工作信息,擁有海量的互聯網人才儲備,互聯網行業找工作就上拉勾招聘,值得信賴的求職。
BOSS直聘是權威領先的招聘網,開啟人才網招聘求職新時代,讓求職者與Boss直接開聊、加快面試、即時反饋,是一個致力于為招聘者和求職者搭建高效溝通、信息對等的平臺
獵聘,2018年香港上市。作為中國知名中高端人才求職招聘平臺,匯聚56萬+知名企業、16萬+認證獵頭,為5700萬用戶提供高薪工作崗位。總之,獵聘還是非常不錯的。
希望能對大家有所幫助呀。
繼微軟拋棄IE瀏覽器全面擁抱Chromium內核推出Edge瀏覽器后,一直在關注那老舊的webbrowser未來如何發展。雖然編程語言千千萬,也有人不看好winform編程,但在當前windows依舊占據相當的市場份額。在webbrowser中官方支持的是IE內核,而IE內核又跟你的電腦的安裝版本有關系,再加上IE對各種html前端支持的不友好。vuejs都已經徹底拋棄了IE瀏覽器,遲遲不敢在生產環境大量應用vueweb應用。(有人可能會說可以換webkit或者cesharp內核,筆者也嘗試過,但畢竟不是微軟的親生,各種不友好,各種復雜,webkit都多久沒更新了,根據歷史經驗過于復雜的東西一般很難長久)。
之前關注過webview2,但那段時間剛出支持也不是很友好,無法很有效繼承,有說要安裝edge瀏覽器的,又說要安裝別的,而win7可能又不支持等等,而恰好我們的場景用又存在大量的win7,只能暫時放棄。
最近要應用Vue,重新關注了一下相關應用,很驚喜的發現,webview2有了官方比較好的支持(可能早就有了,但是肯定不會超過1年)微軟官方文檔鏈接WebView2 - Microsoft Edge Developer
如果本文有不對的地方還要以官方文檔為準,研究不深。先說體驗效果,webview2真的很好,內核徹底替換為chromium,Vue項目跑起來了也不用擔心各種不兼容了,終于不用為webbrowser擔憂了。由于項目使用的VB.NET(不要問為甚么不是C#,我會一點,但是用不到),因此考慮到系統中的使用還是集成到了VB.NET中,在搜索過程中發現webview2的資料不多,一些屬性還沒有很好的案例,可能與winform的沒落有關系吧,而且相關介紹均是C#的,也包括官方文檔。因此在基本集成以后,通過這篇文章做簡單分享與記錄。這里的集成比較簡單,主要是滿足WEB和客戶端的混合編程,也是webview2介紹中的重要應用之一,畢竟WEB才是管理系統的未來。
Webview2 加了個2可能是為了跟安卓的webview區分吧,畢竟一搜webview出來的全是安卓的。
Webview2支持win7、win8、win10以及對應的server版本,可以說是涵蓋了windows的江山,具體的版本說明可以參考官方文檔。如果你說還有xp,天就被聊死了,我們不是一路人。
從搜到的帖子看大家對于webview2還是持肯定態度的,比webkit,cefsharp的兼容性要好的多,從我的體驗來講它可以完全替代webbrowser控件,正在生產環境中替代原有webbrowser控件。
Webview2雖然沒有了IE一堆亂糟糟的版本問題,但是Webview2畢竟是依賴與Edge誕生的產品,它依然需要一定的環境,微軟提供了2種方案。
這里選擇的是Webview2 runtime畢竟我們是集成環境,這里可以根據需要選擇。
官方文檔是C#的比較簡單,C#er們自行閱覽即可,畢竟在大神面前我只是個渣渣。
1、引入Webview2
2、關鍵方法、事件
WebView21.CoreWebView2.Navigate(im_ipurl)
Function installruntime()
Try
Dim v As String = WebView21.Source.ToString
Me.Text = ("Copyright ? 2021-2022 lxfamn, All Rights Reserved " )
Catch ex As Exception
If Environment.Is64BitOperatingSystem Then
MsgBox("系統全面升級瀏覽器內核,接下來系統將自動為您安裝補丁,請在彈出窗口選運行,64位系統")
Process.Start("\\運行組件共享路徑\webruntime\X64.exe")
Else
MsgBox("系統全面升級瀏覽器內核,接下來系統將自動為您安裝補丁,請在彈出窗口選運行,32位系統")
Process.Start("\\運行組件共享路徑\webruntime\X64.exe")
End If
End Try
End Function
Private Sub WebView21_CoreWebView2InitializationCompleted(sender As Object, e As CoreWebView2InitializationCompletedEventArgs) Handles WebView21.CoreWebView2InitializationCompleted
installruntime()
WebView21.CoreWebView2.Navigate(im_ipurl & "/home")
End Sub
事件執行流程如下圖所示:
3、最關鍵、復雜的流程
webview與主機程序的交互過程,在原有的webbrowser中在WebBrowser1_DocumentCompleted事件中通過對WebBrowser1.DocumentText的解析可以做進行不同的處理。
在webview2中沒有了上述事件和方法,取而代之的是postMessage,官方案例使用的C#,使用了aysn異步綁定等方式。
簡單可以理解為,提供了WebView21.CoreWebView2.ExecuteScriptAsync和WebView21.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync方法,向站點注入javasript程序來實現相關功能,這里我只使用了ExecuteScriptAsync方法,在NavigationCompleted事件,在頁面加載完成后向主機發送消息,WebView21_WebMessageReceived 事件中接受發送的消息。
Private Sub WebView21_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles WebView21.NavigationCompleted
TextBox1.Text = WebView21.Source.ToString()'導航完成后,在標題欄中顯示當前網址
If (TextBox1.Text.Contains("www.microsoft.com")) Then
WebView21.CoreWebView2.Navigate("https://blog.lxfamn.cn/?cat=101")
End If
WebView21.CoreWebView2.ExecuteScriptAsync("window.chrome.webview.postMessage(document.body.innerHTML);")
End Sub
Private Sub WebView21_WebMessageReceived(sender As Object, e As CoreWebView2WebMessageReceivedEventArgs) Handles WebView21.WebMessageReceived
webdeal(e.WebMessageAsJson.ToString)'根據接收的消息進行邏輯處理
End Sub
4、其他的一些
建議結合官方文檔進行閱覽,理解一些方法和規則,一些方法和過程在官方文檔中解釋還是比較清楚的,本文主要是幫助解釋一些在vb.net以及一些邏輯等問題的解釋。
附上一些處理url自動補充前綴的方法
Function geturl(dealway As String)
Try
Dim urlstr As String = TextBox1.Text
If Not urlstr.Contains("http") Then
Dim re As New Regex("((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}")
Dim Contents As MatchCollection = re.Matches(urlstr)
Dim rea As New Regex("[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?")
Dim Contentsa As MatchCollection = rea.Matches(urlstr)
If Contentsa.Count > 0 Or Contents.Count > 0 Then
urlstr = "http://" & urlstr
Else
If dealway = "百度" Then
urlstr = "https://www.baidu.com/s?wd=" & urlstr
End If
If dealway = "blog" Then
urlstr = "https://blog.lxfamn.cn/?cat=101"
End If
End If
End If
WebView21.CoreWebView2.Navigate((urlstr))
Catch
installruntime()
End Try
End Function
界面布局
有問題之處歡迎指正
個人博客:VB.NET Edge webview2 引入-IT涉獵者
未經允許不得轉載:https://blog.lxfamn.cn/?p=6698
*請認真填寫需求信息,我們會在24小時內與您取得聯系。