聚合文章列表
11 浏览

.NET/C# 建议的异常处理原则

“体验”一词早已泛滥却又能够粗略地表达开发团队对客户端产品的要求,“质量”在体验中扮演的角色是——做得好了用户感觉不到,做得差一点儿用户就会破口大骂。本文将以提升客户端GUI产品质量为目标,谈谈.NET/C#中建议的异常处理方式。不恰当的异常处理会带来什么影响?DEMO和学习资料是无所谓的,找个地方写写try-catch-finally就完了……但是一旦这一行为迁移到了大型产品或软件系统中,不恰当的异常处理将会带来严重的体验下降或者巨大的额外维护成本。严重的体验下降众所周知,如果应用中存在大量未经处理的异常,那么应用分分钟崩溃死掉。如果软件面向最终用户,那么用户将不停地遭遇闪退或者“停止工作”。如果面向服务器或其他系统,频繁挂掉也几乎意味着服务不可用。这是异常处理“不足”造成的影响。不过,处理“不足”这种情况大家见得少,因为实际开发中更多遇到的不是很多异常未经处理,而是各种异常都处理掉了。算是“过度”吧。巨大的额外维护成本如果我们在各个功能上都加上try-catch块,在catch

.Net 2017-12-03 发布
45 浏览

契约测试框架-Pact实践

在前一篇博客中我们讲到契约测试是什么,以及它能给我们软件交付带来什么价值,本次将介绍一个开源的契约测试框架Pact,它最初是用ruby语言实现的,后来被js,C#,java,go,python等语言重写,此文将介绍Pact框架的相关知识并结合示例代码讲解在实际项目中应该怎么使用。Pact是什么?Pact是一个开源框架,最早是由澳洲最大的房地产信息提供商REAGroup的开发者及咨询师们共同创造。REAGroup的开发团队很早便在项目中使用了微服务架构,并在团队中对于敏捷和测试的重要性早已形成共识,因此设计出这样的优秀框架并应用于日常工作中也是十分自然。Pact工具于2013年开始开源,发展到今天已然形成了一个小的生态圈,包括各种语言(Ruby/Java/.NET/JavaScript/Go/Scala/Groovy...)下的Pact实现,契约文件共享工具PactBroker等。Pact的用户已经遍及包括RedHat、IBM、Accenture等在内的若干知名公司,Pact已经是事实上的契约测试方面的业界标准。Pact可以

.Net 2017-12-03 发布
22 浏览

c# AutoMapper 使用方式

安装方式:使用vs自带的nuget管理工具,搜索AutoMapper,选择第一个安装到你的项目即可。我从网上找了一些资料,参考网址:http://blog.csdn.net/csethcrm/article/details/52934325下载了个demo,然后自己又写了一遍,我把AutoMapper的使用分为两种:1、viewmodel与实体的字段名字是一致的,viewmodel的字段可以比实体中的字段少,但是不能多。还有一种情况是:源实体中的字段名字是Getxxx,那么viewmodel中对应的字段可以是xxx,也会自动对应赋值,比如我写的demo中源实体中GetA,viewmodel中的A;再有一种情况就是实体中的实体赋值,在我写的这个例子中,源实体中包含的实体类字段为Sub,里面包含的字段名字为Age,那么destmodel中对应的字段名字可以是:SubAge,那么automapper就可以自动为你赋值了,大家看最后的运行结果。给大家看下我建的源实体:publicclassSource1{pu

.Net 2017-12-03 发布
AD 友情赞助
15 浏览

vue-cli +webpack+vue-router 踩坑记

这次主要是记录下自己在第一次做vue-cli+webpack+vue-router的经历以及一些踩过的坑,算是做一个简单的总结一.项目初始化1)vue官网上的步骤全局安装vue-clinpminstall--globalvue-clivueinitwebpackmy-projectcdmy-projectnpminstallnpmrundev这样项目就创建好了,因为npm源是在国外,如果是要使用国内的镜像:淘宝npm镜像搜索地址:http://npm.taobao.org/registry地址:http://registry.npm.taobao.org/使用cnmpnpminstall-gcnpm--registry=https://registry.npm.taobao.org//使用cnpminstallexpress其中需要注意的是安装过程中,会提示是否使用eslint,eslint算是一个代码语法规范检查的工具,不同意就不会把检查语法规范的功能加进webpack编

vue.js 2017-12-01 发布
15 浏览

一句话说明白C#中的new与override的区别

一句话说明白C#中的new与override的区别:父类引用指向子类对象时调用方法,如果用是override重写,执行的是子类的方法;如果用的是new覆盖,执行的是父类的方法。如果看了上面那句话,你还不是很懂,请看下面炒鸡清晰的代码,就肯定能明白啦!publicclassBaseClass{publicvirtualvoidPrintSomething(){Console.WriteLine("执行了父类方法!");}}publicclassDerivedClass:BaseClass{publicoverridevoidPrintSomething(){Console.WriteLine("执行了子类方法!");}}//客户端publicstaticvoidMain(string[]args){BaseClassinstance=newDerivedClass();//父类引用指向子类对象instance.PrintSomeThing();}//

c# 2017-12-02 发布
14 浏览

Android的消息机制

前言:提到Android消息机制大家应该都不陌生,在日常开发中都不可避免地要涉及到这方面的内容。从开发的角度来说,Handler是Android消息机制的上层接口,使得我们在开发过程中只需要和Handler交互即可。而Handler的使用过程也很简单,通过它可以轻松地将一个任务切换到Handler所在的线程中去执行。但是很多人认为Handler的作用就是更新UI,这的确没有错,但是更新UI仅仅是Handler的一个特殊的使用场景。具体来说应该是这样的:有时候需要在子线程中进行耗时的I/O操作,可能会是读取文件亦或许访问网络等,当耗时操作完成以后可能需要在UI上做一些改变,由于Android开发规范的限制,我们并不能在子线程中访问UI控件,否则就会触发程序异常,这个时候通过Handler就可以将更新UI的操作切换到主线程中执行。因此,本质上来说,Handler并不是专门用于更新UI的,只是常被开发者用来更新UI。Android的消息机制概述Android的消息机制主

消息系统 2017-12-19 发布
AD 友情赞助
15 浏览

关于Unix哲学17条原则的新感悟

Day337of365全文4753字|建议阅读10分钟文|mickjoust现在,说到操作系统,谈论最多的就是Android,ios,Linux,macos,windows,已经很少有人会使用到unix系统了,除了一些企业内部的系统,和编程爱好者社区会交流外,基本上已经绝迹于江湖了。但是,像某些行业里,因为会和高端的服务器配合使用,而惠普和IBM又是服务器里面的王者,所以,类UNIX系统像AIX,其实还是在使用的,orcale,emc等公司其实还是会用。可能你没有听懂,但是没有关系,可以选择强行记忆,下次你也好给朋友吹个牛什么的。说到unix,就要提到一个人,埃里克·史蒂文·雷蒙德,他是一个老黑客,一个作家,一个自由软件的倡导和开创者,可能很多人都对他不是很了解,但是这本书却是大名鼎鼎的——《UNIX编程艺术》,就算你没看过,可能在网上闲逛时都瞄到这本书的名字。最近,我也在看他写的另一本书《大教堂与大集市》,深受启发。《UNIX编程艺术》一书,我在读书时看过,但那时完全看不懂,里面全都是讲如何更

程序员 2017-12-19 发布
16 浏览

程序猿中的一股清流

毕业后进了一家金融外包公司做项目助理,每天做一个小时的公交车去上班,做的都是一些杂杂碎碎的事情,报帐,会议记录,统计考勤。看着身边忙忙碌碌的程序员,我却经常葛优躺的沉思自己以后的路该怎么走,是否也可以往开发的方向发展,经理说:‘‘我们这么多人,想学开发问谁都可以,慢慢就学会了,比在培训机构强多了’’,我信以为然,内心的排斥却也不曾减少。身边的亲戚做开发测试都有一个别人眼中的高收入,我不以为然,却阻止不了家人对我有一份好工作的向往,早在我毕业之时家人就建议我去学开发测试,我发誓打死都不当程序员,现在想来也是可笑,我最终还是没有避免走上这条路……对程序员毫无偏见,相反则很喜欢,喜欢他们的单纯,与世无争,少了职场的勾心斗角,多了份真诚,当然只是一部分。有偏见只是对这份职业的枯燥乏味,对于我的性格来说绝对是难以忍受的。三个月后我辞职了,原因很幼稚,可能是不愿忍受每天上下班在路上浪费的时间,可能是为了结束异地恋,可能是不愿忍受与领导的意见不合,不过是年少轻狂,想要的太多而做的太少……以后一年经历了很多

程序员 2017-12-19 发布
17 浏览

MySQL8.0新特性: 新的事务锁调度VATS简介

摘要:传统的事务锁赋予方式是采用FIFS先来先服务的方式,从MySQL8.0.3开始,引入了一种新的模式CATS调度方式,全称为Contention-AwareTransactionScheduling(或者叫做VATS,V=Variance).顾名思义就是能够感知到事务竞争关系来实现全局最小开销的锁调度方式。传统的事务锁赋予方式是采用FIFS先来先服务的方式,从MySQL8.0.3开始,引入了一种新的模式CATS调度方式,全称为Contention-AwareTransactionScheduling(或者叫做VATS,V=Variance).顾名思义就是能够感知到事务竞争关系来实现全局最小开销的锁调度方式。举个简单的例子,trx1和trx2同时等待一条记录锁,按照传统的方式,谁先进入等待队列,谁将优先获得锁。但如果同时有2个事务等待trx1,10个事务等待trx2,那么从全局来看收益最大的显然是让trx2获取到行锁。当被挂起等待的事务数超过32个时,会自动切换到新的调度方式相关资料先列一下:官方博客

MySQL 2017-12-03 发布
AD 友情赞助
14 浏览

新开源工具诞生!让C++秒变JavaScript

近日,Mozilla的AlonZakai成功将一个他曾经用C++编写的游戏转换为JavaScript代码并在Web上运行。那时要想将C++转换为JavaScript几乎是不能可能的事情,因此他开始着手编写一个开源工具,可以自动将C++代码转换成JavaScript。AlonZakai表示,他的项目Emscripten能够将C++快速的转换为JavaScript,并且可以兼容现有的浏览器,同时他们还将优化Firefox中的JavaScript引擎,提高运行速度。而现在,Emscripten可以将用C++编写的代码直接转换成WebAssembly。并且在未来还会支持更多的语言,包括Rust,Lua,Python,Java和C#。使用WebAssembly,几百万行代码库可以在几秒钟内完成加载,其运行速度能够达到本地程序的80%。并且随着浏览器引擎的更新换代,预计加载时间和执行速度都将得到进一步的提升。

JavaScript 2017-12-03 发布
16 浏览

【译】10个机器学习的JavaScript示例

原文地址:10MachineLearningExamplesinJavaScript在过去的每一年,用于机器学习(MachineLearning)的库在变得越来越快和易用。一直以来Python都是机器学习的首选语言,但现在几乎可将所有语言用于神经网络(neuralnetworks),这里当然也包括JavaScript!近几年,Web生态系统取得了很大进步,虽然JavaScript和Node.js的性能比Python和Java略差,但它们已足够处理许多机器学习问题。Web语言具有被广泛且易于使用的优势——你只需一个Web浏览器就可以运行一个JavaScript语言编写的机器学习项目。虽然许多JavaScript语言编写的机器学习库是刚刚诞生并且还在持续开发中,但还是值得去尝试使用它们。这篇文章会介绍几个JavaScript语言编写的机器学习库以及一些很酷的AIWeb应用示例,它们可以很好的帮助你开始AI之旅。1.Brain

JavaScript 2017-12-03 发布
13 浏览

JavaWeb 基于Session的用户登陆注销实现

通过Session来存储用户的部分登陆信息来验证用户是否在线,这应该时最容易实现的一种Web端方案,本文以SSM(Spring、SpringMVC、myBatis)框架为载体,来具体实现这套登陆系统。1.通过前端传递用户名密码到后端接口,接口拿到值后,对其进行MD5加密,与数据库中的字段进行比较,返回状态给前端,前端根据返回值进行页面跳转。MD5加密工具类publicStringEncoderByMd5(Stringstr)throwsNoSuchAlgorithmException,UnsupportedEncodingException{//确定计算方法MessageDigestmd5=MessageDigest.getInstance("MD5");BASE64Encoderbase64en=newBASE64Encoder();//加密后的字符串Stringnewstr=base64en.encode(md5.digest(str.getBytes("utf-8")));returnnew

JavaScript 2017-12-03 发布
AD 友情赞助
16 浏览

【面试问题】——秋招面试中遇到的一些问题&思维导图&反思

【面试问题】——秋招面试中遇到的一些问题&思维导图&反思前言:秋招也跑了挺多的公司,虽然都是招Web前端,但是不同的公司,因为需求和目的不同,面试的考察点也是各不相同。我没有实习经验,只有自己学东学西比较杂也比较浅的一些知识积累可以用,这个过程我发现了自己的不足,也增加了很多对公司、对社会的阅历,觉得自己成长了,起码越来越真实,越来越坚强,勇敢,也发现了自己原来也有干脆、利落、直接的一面,与以往害羞、含蓄的自己很不一样。哈哈哈,废话不多说,下面我就整理一下自己面试的很多问题,还有自己整理总结的答案、分析。

JavaScript 2017-12-03 发布
22 浏览

IE10对象的内存布局及创建

喷射完后可以使用vmmap查看内存状态,可以看到喷射的大块的内存,随意选择一个地址,查看地址内容:0:013>dd21c6000021c600000000000000001010000000000000000021c600100000000000000400000004000000000021c600200000022300000223000002230000022321c600300000022300000223000002230000022321c600400000022300000223000002230000022321c600500000022300000223000002230000022321c600600000022300000223000002230000022321c60070000002230000022300000223000002230x21c60004的0x1010是数组长度0x1000加上数组头长度

JavaScript 2017-12-03 发布
15 浏览

IE:从一字节改写到全地址读写

为了追踪内存布局,我们要找到ArrayBuffer对象的地址,在jscript9!Js::JavascriptArrayBuffer::Create下断点,断下后返回:0:007>gBreakpoint0hiteax=00000058ebx=022e1780ecx=022fb000edx=00000400esi=01ff6890edi=02e2ba54eip=610f2ba8esp=02e2ba28ebp=02e2ba48iopl=0nvupeiplnznapocycs=001bss=0023ds=0023es=0023fs=003bgs=0000efl=00200203jscript9!Js::JavascriptArrayBuffer::Create:610f2ba88bffmovedi,edi0:007>gueax=02426dc0ebx=022e1780ecx=0000000

JavaScript 2017-12-03 发布
14 浏览

Ajax,赋予前端新活力

Asynchronous&Synchronization[嵌牛导读]当你编写代码遇到同步|异步时,差不多这个时候Google就该给你你想要的一推名词解释,和排名靠前的Ajax-[AsynchronousJavascriptAndXML]。只要你耐心的看下去,虽然无法教会你在实际应用中灵活区分同步操作|异步操作,但我一定会让你明白什么是同步操作,什么是异步操作。[嵌牛鼻子]同步,异步,回调(callback),Ajax,过程[嵌牛提问]

JavaScript 2017-12-19 发布
18 浏览

5分钟学会 CSS Grid 布局

这是一篇快速介绍网站未来布局的文章。Grid布局是网站设计的基础,CSSGrid是创建网格布局最强大和最简单的工具。CSSGrid今年也获得了主流浏览器(Safari,Chrome,Firefox,Edge)的原生支持,所以我相信所有的前端开发人员都必须在不久的将来学习这项技术。在本文中,我将尽可能快速地介绍CSS网格的基本知识。我会把你不应该关心的一切都忽略掉了,只是为了让你了解最基础的知识。你的第一个Grid布局CSSGrid布局由两个核心组成部分是wrapper(父元素)和items(子元素)。wrapper是实际的grid(网格),items是grid(网格)内的内容。下面是一个wrapper元素,内部包含6个items:

1
2
3
4
5
6
要把wrapper元素变成一个grid(

CSS 2017-12-03 发布
17 浏览

如何在 .NET Core Web API 使用 DI ?

.NETCore已經內建DI,讓我們可以享受DIcontainer實現依賴注入的方便,VisualStudio2017在ASP.NETCoreWebApplication的template中,預設已經可直接使用DI,不需另外設定。VersionVisualStudio201715.4.5.NETCore2.0Microsoft.Extensions.DependencyInjection2.0.0UserStory一個常見的分層架構,除了OrderController外,常見我們還會依職責拆分OrderService與PaymentService…等。OrderController.Index()呼叫OrderService.CreateOrder(),然後OrderService.CreateOrder()再去呼叫PaymentService.PayCreditCard()。傳統我們會這樣寫code:OrderContr

.Net 2017-12-03 发布
14 浏览

c#游戏进程杀手

我认为写博客还是比较重要的,特别是短时间写出一个含有新知识点的软件。这样总结下这次编程经验和再捋顺一下这次编程思路。首先来谈谈为什么想做这个小程序,一是感觉自己太贪玩想控制一下,二是也锻炼下自己的编程。好,话不多说进入正题吧。文件源代码在这个https://i.cnblogs.com/Files.aspx?order=1下面。名字是ApplicationControl。不过使用的时候你还是要到子窗体中设置你的游戏库,我这里只有WeGame、LOL登陆程序的进程名称。源码有点乱,见谅。如需改进,请多指教。首先给大家展示一下程序结果图:这里的原理很简单,就是写一个监视进程的函数如果发现进程列表中有相同名字的进程则调用process类中的kill方法杀死进程,再设置一个计时器来循环调用该函数即可。首先我们窗体加载函数中调用一个初始化函数。Initial函数:1publicvoidInitial()2{3timer1.Enabled=false;4

.Net 2017-12-03 发布
15 浏览

C#设计模式之十八中介者模式(Mediator Pattern)【行为型】

C#设计模式之十八中介者模式(MediatorPattern)【行为型】一、引言今天我们开始讲“行为型”设计模式的第五个模式,该模式是【中介者模式】,英文名称是:MediatorPattern。还是老套路,先从名字上来看看。“中介者模式”我第一次看到这个名称,我的理解是,在两个对象中间增加一个“中间对象”,“中间对象”协调两个对象的关系,但是随着理解的深入,“中间对象”处理关系的对象可能不只是两个对象,可能是三个对象,或者更多对象。中介者模式在现实生活中的例子很多,比如:A对象和B对象做生意,如果A对象和B对象是一次性买卖,没有讨价还价的过程,A对象和B对象直接见面更好。但是A对象或者B对象的想法经常变,每次想法的改变都通知对方,就会使对方很反感,而且也不利于生意的顺利进行。如果在A对象和B对象之间增加一个C对象,在最终确定之前不要告诉C对象,对方也就不知道(隔离了耦合,对方可以更具需求变化),等一方最终确定想法后,把最后决定告诉C对象,C对象再转告对方,这样就简化了A对象和B对象的交易过程,而且双方都很满意。在软件构建过程中,

.Net 2017-12-03 发布
AD 友情赞助