SuperSocket.WebSocket.WebSocketServer.Setup无法启动
IMG_20180113_145418.jpg算是从昨天晚上开始调试WebSocket,代码是16年初正常老代码copy过来的,不过C#新项目和以前老项目始终在我笔记本上跑不起了。中间过程SuperSocket.SocketEngine新项目copy过来一开始就有问题,第三方引用是从NuGet重新添加的,SuperSocket.WebSocket1.6.6.1始终报错:SuperSocket.SocketEnginedll文件不存在;检查老项目packages里面却有这个文件,并且正常引用到项目里。好吧那就使用老项目的SuperSocket.WebSocket1.6.6这个版本,新项目里NuGet下载下来的却始终不带SuperSocket.SocketEngine,魔了!!最后折腾了半天在官网上、还有NuGet介绍里面感觉到了SuperSocket.Engine被剥离出去了,NuGet里面搜索一下还真是有一个单独的包,把SuperSocket.Engine这个引用进来就解决了。折腾了半天,其实还是文档看少了。SuperSoc
vue项目重构技术要点和总结
前言最近太忙了,博客好久没有更新了。今天忙里偷闲,简单总结一下最近vue项目重构的一些技术要点。vue数据更新,视图未更新这个问题我们经常会遇到,一般是vue数据赋值的时候,vue数据变化了,但是视图没有更新。这个不算是项目重构的技术要点,也和大家分享一下vue2.0通常的解决方案吧!解决方案如下:1、通过vue.set方式赋值Vue.set(数据源,key,newValue)2、通过Array.prototype.splice方法数据源.splice(indexOfItem,1,newValue)3、修改数据的长度数据源.splice(newLength)4、变异方法Vue.js包装了被观察数组的变异方法,故它们能触发视图更新。被包装的方法有:push()pop()shift()unshift()splice()sort()reverse()prop对象数组应用在JavaScript中对象和数组是引用类型,指向同一个内存空间,如果prop是一个对象或数组,在子组件内部改变它会影响父
Dora.Interception, 一个为.NET Core度身打造的AOP框架:不一样的Interceptor定义方式
Dora.Interception,一个为.NETCore度身打造的AOP框架:不一样的Interceptor定义方式相较于社区其他主流的AOP框架,Dora.Interception在Interceptor提供了完全不同的编程方式。我们并没有为Interceptor定义一个接口,正是因为不需要实现一个预定义的接口,Dora.Interception下的Interceptor定义变得更加自由。除此之外,Interceptor的异步执行是我在设计Dora.Interception之初最为关心的问题,也就是说如果Interceptor应用的目标方法是异步的,Interceptor自身也应该被赋予异步执行的能力。接下来我们就来聊聊如果你使用了Dora.Interception,如何定义你的Interceptor。目录一、两种代理类型生成方式二、InterceptorDelegate三、定义Interceptor类型四、支持方法注入一、两种代理类型生成方式Dora.Interception采用动态生成代理类型(采用ILEmit)的方式来实现
「MojoUnityJson」C#实现超级简单和高效的JSON解析器
MojoUnityJson是使用C#实现的JSON解析器,算法思路来自于游戏引擎Mojoc的C语言实现Json.h。借助C#的类库,可以比C的实现更加的简单和全面,尤其是处理UnicodeCode(\u开头)字符的解析,C#的StringBuilder本身就支持了UnicodeCodePoint。MojoUnityJson使用递归下降的解析模式,核心解析代码只有450行(去掉空行可能只有300多行),支持标准的JSON格式。算法实现力求简洁明了,用最直接最快速的方法达到目的,没有复杂的概念和模式。除了解析JSON,还提供了一组方便直观的API来访问JSON数据,整体实现只有一个文件,仅依赖System.Collections.Generic,System.Text,System三个命名空间,MojoUnityJson可以很容易的嵌入到其它项目里使用。本文主要介绍一下,超级简单又高效,并且看一眼就完全明白的解析算法,几乎可以原封不动的复制粘贴成其它语言版本的实现。保存上下文信息使用一个简单的结构体,用来在解析的过程中,传递一些上下
回顾2017,展望2018JavaScript发展趋势
如果2017年你被项目折磨的死去活来,那么这篇文章就是为你准备的。你可以把本文作为一个指南,为2018规划您的学习计划。Reactvs.Vue.js没有多少人相信Vue将成为React强劲的竞争者,但是2017年的Vue是无法忽视的,在开发者的推广下甚至把Angular打入了冷宫。当我们展望2018,蓬勃发展的Vue将和React展开激烈的竞争。未来React仍将获得世界最富有公司之一的财力支持,也不用质疑维护它的开发者天赋。但是Vue正在做的所有事都是为了开发者更快乐:Vue是轻量级的,学习成本低,社区丰富,有非常棒的状态管理,以及内置路由,等等。Vue的社区当然还没有React那么庞大,但社区的成长基于核心团队是否有优秀的推广大使以及是否愿意倾听社区的声音(两者缺一不可)。当我们提到取悦开发者的时候,我们不要忘了Facebook今年的重大错误:BSD+专利许可,这个错误送走了大批开发者。实际上,我们已经可以用Vue来很好的开发任何一个项目,这个是Vue核心团队取得的巨大成就。这里有一篇React
前端每周清单第 48 期:Slack Webpack 构建优化,CSS 命名规范与用户追踪,Vue.js 单元测试
前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎关注【前端之巅】微信公众号(ID:frontshow),及时获取前端每周清单。新闻热点国内国外,前端最新动态ECharts4.0发布:2018年1月16日,百度的ECharts团队对产品进行了更新,发布了时隔两年的大版本4.0。在ECharts4.0新版本中,主要在性能功能、易用性及扩大使用范围三个大的方面进行了八项升级:带给用户更强大的性能和功能,让开发者使用ECharts变得更加轻松,让更多的人在更多的场景都能访问使用ECharts制作的可视化产品。Puppeteer1.0发布:Puppeteer是由GoogleChrome团队开源的,HeadlessChrome操作接口库,已成为事实上的Headless浏览器操作标准。本周Puppeteer1.0正式发布,为我们带来了Chromium65,page.cove
vue实战-组件编写-todolist组件
我们在topNav这个页面上插入一个todolist子组件我不知道怎么回事,这里的markdown的代码总是串行。。所以代码看得不舒服,见谅啊,我最后会放github的源代码地址。如果可以,希望可以star!!!,给我动力以后继续出更进阶的实战教程完整代码1.父组件topNav中注册子组件,引入子组件 下面这一行就是定义的组件名称
Bootstrap 4 正式发布
2018.01.18经过我们多年的努力,Bootstrap4终于来了!整个团队和我已经无法用语言描述对这个版本发布的喜悦之情,但是我会尽力去表达的。感谢所有人,特别是团队成员,以及所有在pullrequest中提供代码或提出问题的人。谢谢。自从我们最后一次测试,我们一直在努力稳定我们CSS的几个关键部分,润色我们的文档,添加一些额外的惊喜,并计划发布后续的版本。我们还有一些问题要解决,但没有什么能阻止我们发布稳定的版本。是不是已经急切的想体验了?前往我们的文档站点并且探索。一定要看看我们的新实例和迁移的文件页面!想要在点击文档之前了解更多的内容吗?很好,让我们深入研究一下吧!更新这个版本相对于上次的测试版没有什么重大改变,但是我们已经做了一些关键的改进,并解决了一些棘手的错误。打印样式和实用工具类已经更新。我们已经改进了如何渲染打印的页面,以确保页面尺寸合理,而不是将其渲染为移动设备。打印显示工具还包括一系列新的display的值用来匹配我们的标准显示工具。添加了边框实用工具(例如.bor
小程序改良_02
简化后cityitem展示流程总览加载后默认城市,默认最新数据时间,与原始趋势列表跳转传递参数保持一致,便于统一维护更新onShow:function(){varthat=thistry{constvalue=wx.getStorageSync('default_address')if(value){that.setData({city:value})}}catch(e){}//检索数据中最新时刻config.findTime_CityAqi(that.data.city).then(d=>{if(d.length>0){//保留到小时vartime=d[0].time.substring(0,d[0].time.length-3)that.data.boards_map[0].time=timethat.setData({boards_map:that.data.boards_map})}}).catch(e=>{this.setData({title:'获取数据异
10个超赞的jQuery图片滑块动画
1.程序员必读24本经典,100%免费领取2.最值得学习的24本编程书,免费领取3.24本编程纸质书籍,云沃客限时免费送!4.助力程序员快速涨薪的24本精选纸质书本文由码农网–小峰原创,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!在网站开发过程中,特别是前端开发这块,经常会使用到很多图片滑块动画,也就是一些基于jQuery和HTML5的焦点图插件。本文将为大家收集10个超赞的jQuery图片滑块动画,这些现成的jQuery插件将为你节省很多开发时间,而且效果都还不错,一起来欣赏一下吧。1、jQuery/HTML5超炫全屏焦点图插件这次我们要来分享一款非常绚丽的jQuery焦点图插件,同时这款焦点图也利用了HTML5和CSS3的相关特性,使图片切换效果更加丰富多彩。另外,这款jQuery焦点图插件的特点是全屏的效果,因此看上去也非常的大气和整体。在线演示源码下载2、jQuery自动轮播图片焦点图插件今天我们要继续来分享一款非常实用的jQuery焦点图插件,和其他的jQuery焦点图
我的''jQuery''和jQuery
functiongetSiblings(node){}和functionaddClass(node,classes){}如下:functiongetSiblings(node){varallNodes=node.parentNode.children;vararray={length:0};for(leti=0;i
C#中的多线程超时处理实践
最近我正在处理C#中关于timeout行为的一些bug。解决方案非常有意思,所以我在这里分享给广大博友们。我要处理的是下面这些情况:我们做了一个应用程序,程序中有这么一个模块,它的功能向用户显示一个消息对话框,15秒后再自动关闭该对话框。但是,如果用户手动关闭对话框,则在timeout时我们无需做任何处理。程序中有一个漫长的执行操作。如果该操作持续5秒钟以上,那么请终止这个操作。我们的的应用程序中有执行时间未知的操作。当执行时间过长时,我们需要显示一个“进行中”弹出窗口来提示用户耐心等待。我们无法预估这次操作会持续多久,但一般情况下会持续不到一秒。为了避免弹出窗口一闪而过,我们只想要在1秒后显示这个弹出窗口。反之,如果在1秒内操作完成,则不需要显示这个弹出窗口。这些问题是相似的。在超时之后,我们必须执行X操作,除非Y在那个时候发生。为了找到解决这些问题的办法,我在试验过程中创建了一个类:publicclassOperationHandler{privateIOperation_operation;public
基于 WPF 的酷炫 GUI 窗口的简易实现
效果总结如下:无标题栏,或自定义标题栏窗口的半透明效果窗口可自由拖拽Enter以及Esc等默认按键右键菜单1.窗口的效果实现1.1窗口外观相关首先新建一个窗口,更改外观,对窗口的属性进行如下设置:外观设置中,「AllowsTransparency」复选框勾选上,该窗口就可以透明化,同时「WindowStyle」会自动变更为「None」,窗口的默认标题栏会消失,此时可以选择自定义标题栏。窗口允许透明化后,在「Background」、「BorderBrush」等选项中,对窗体的背景及边框颜色进行设置。可以设置为纯色或各种渐变形态以及各种透明形态。使用「BorderThickness」项设置窗体的边框宽度。「Opacity」设置整个界面的不透明度设置界面如下图所示:1.2窗口大小位置相关更改窗口的位置,对如下属性进行设置:WindowStartupLocation:修改窗口打开时的位置WindowState:修改窗口打开时的大小状态,可设置全屏窗口Topmost:本窗口置顶Width和Height:窗口
SQL Server 安全篇——SQL Server 安全模型(1)——安全性主体层级
前言:随着数据安全性的越来越重要,很有必要介绍一下数据库的安全方面的内容。本文兼容SQLServer2016,但是由于安全这个范围太大,不可能完全说清楚,所以以重点介绍常用功能,同时兼顾新特性。系列中以SQLServer演示库AdventureWorks2016CTP3为演示,下载地址:AdventureWorkssampledatabases首先,安全性是系统层面甚至企业层面,并不是某一个角色如DBA、IT管理员的责任,但是作为SQLServerDBA,本人还是以DBA的角度去看待这个问题。其次,安全并非独立的“功能”或者“工作”,需要搭配性能、稳定等方面,特别是稳定性,一个不稳定的系统,再安全也没用,极端来说,你想想我给你最高权限,登录服务器就报错、蓝屏,你能获取什么信息吗?作为DBA,首先需要了解的是SQLServer的安全模型或者安全机制,否则你根本无从下手。安全模型分为3篇:安全性主体层级(本文)实例级别安全性数据库级别安全性如有兴趣研究真正的权限方面的细节,可以下载研读:SQLSer
SQL Server 安全篇——SQL Server 安全模型(2)——实例级别安全性
接上文http://blog.csdn.net/dba_huangzj/article/details/79030680实例级别安全性包含创建和管理登录名、凭证(credentials)和服务器角色。相对的安全主体在实例级别包含数据库、端点和AlwaysONAvailabilityGroups。本文将讨论登录名、服务器角色和凭证。登录名:从SQLServer2012开始,在包含数据库中,可以让用户直接连到数据库,而不需要在实例层面验证。SQLServer支持两种实例级别验证模式:Windows身份验证:只勾选这个时,用户只能使用Windows本地账号或者域账号去连接SQLServer。SQLServer的账号与这个Windows账号关联,Windows主体的SID(securityidentifier)会存储在master库中。混合身份验证:也称SQLServer和Windows身份验证模式,见下图,在这种模式下,Windows身份验证依旧生效。同时可以创建SQL登录名,这种登录名具有名字、密码和SID
SQL Server 安全篇——SQL Server 安全模型(3)——数据库级别安全性
通常情况下,数据库用户是从实例层面创建的登录名来实现。相同实例下,一个登录名可以映射到多个数据库用户中,并且可以单独授权到数据库层面。从SQL2012开始,也可以创建没有登录名的用户(包含数据库)带有登录名的用户:通过SSMS或者T-SQL来创建用户,一般需要关联到一个被配置好权限的实例层面登录。常用的选项有:DEFAULT_SCHEMA:用户的默认架构,将在后续介绍。ALLOW_ENCRYPTED_VALUE_MODIFICATIONS:允许在大容量复制(bulkcopy)中使用数据加密。在后续章节介绍。比如下面例子:在AdventureWorks2016CTP3中创建一个用户Danni,关联到用户Danni登录,并且默认架构为Sales:USEAdventureWorks2016CTP3GOCREATEUSERDanniFORLOGINDanniWITHDEFAULT_SCHEMA=Sales;虽然没有强制规定必须与登录名一模一样,但是作为良好的管理来说应该保持一致,如果不指定默认架
SQL Server 安全篇——SQL Server 审核(1)——概览
在SQLServer安全篇——SQLServer安全模型(1)——安全性主体层级中提到过,安全分为主动安全和被动安全,前面关于账号权限的算主动安全,那么被动安全指的是记录用户活动以避免不可抵赖性威胁。这个很重要,因为如果攻击是由特权用户发起,那么基本上是很难阻止。SQLServer审核则可以从很大程度上帮助实现被动安全。但是需要反复提醒,安全是整体的,不仅SQLServer需要有审核,操作系统、网络、域、应用程序都应该尽可能提供足够的审核。何为审核?SQLServer审核使得DBA可以对实例层面和数据库层面的活动信息进行细粒度收集。审核日志可以存储为二进制文件、Windows安全事件日志(Windowssecuritylog)或者Windows应用程序事件日志(WindowsApplicationLog),审核日志的存储位置称为target。每个审核对应一个target。SQLServer审核驻留在实例级别,一个实例可以创建多个服务器审核。对于负载很重的环境,多个审计可以通过部署不同的审核目标文件到