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小时内与您取得联系。