【ASP.NET Core】运行原理之启动WebHost
目录Server.StartAsyncServerIHttpApplicationHttpContextFactoryHttpContextConfigureIApplicationBuilderUseRunUseMiddlewareUseWhenMapWhenMapServer.StartAsync在上节我们知道WebHost.StartAsync内部是调用Server.StartAsync的。publicasyncTaskStartAsync
WPF 绘制对齐像素的清晰显示的线条
此前有小伙伴询问我为何他1像素的线条显示发虚,然后我告诉他是“像素对齐”的问题,然而他设置了各种对齐像素的属性依旧没有作用。于是我对此进行了一系列试验,对WPF像素对齐的各种方法进行了一次总结。此后在StackOverflow中,我回答了graphics-WPFDrawingContextseemsignoreSnapToDevicePixels-StackOverflow问题。阅读本文,我们将了解解决WPF像素对齐的四种方法以及其各自的适用范围和副作用。为什么要做像素对齐看线条!这是3像素的线条:然而论其原因,就是因为我们屏幕太渣~哦~不,是因为绘制的线条没有与屏幕像素对齐,具体来说是视觉对象(Visual)的位置不在整数像素上或尺寸不是整数像素。而与此同时屏幕的点距又太大以至于我们看出来绘制的线条和屏幕像素之间的差异。然而为什么WPF不默认为我们对齐像素呢?这是因为要对齐像素必定带来尺寸上的偏差;这是绘制尺寸精度和最终呈现效果之间的平衡。在MacBook
vue@2.0源码学习---目录结构分析与准备工作(step1)
前言网上vue的源码分析也蛮多的,不过很多都是1.0版本的并且大多都是在讲数据的observe,索性自己看看源码,虽然很难但是希望能学到点东西。原文地址源码版本为2.0.0runtime和runtime-with-compiler有必要了解这两个概念的区别。我们写vue程序的时候一般会给出template,但是仔细看过文档的话一定知道vue支持render函数的写法。runtime版本可直接执行render函数写法,假如是template写法,需要先利用compiler解析模板至render函数,再执行render函数渲染。为了学习起来简单,选择先从runtime版本入手,事实上两者相差的只是一个将模板字符串编译成为JavaScript渲染函数的过程。入口文件上面已经说过从runtime版本入手,所以首要任务就是找到runtime版本的入口文件。点开entries目录下的web-runtime.js,发现确实是导出了一个Vue构造函数。先写一个例子跑起来试试importVuefrom'../src/en
Vue-OrgChart: 可编辑,可导出 JSON 的树形组织图
调研最近公司有个需求,做一个可编辑的树形组织图。我第一个想到的是ECharts,可当时并没有(最近一个版本出了树图也不是组织图);然后想到了AntVG6(上手难度有点大也不是组织图);GoJS(LICENSE问题);最后找到了OrgChart,本是JQuery插件有时间沉淀,并且有二次开发的ES6版本,就是它了。前言首先感谢dabeng的Orgchart.js--OrgChart.js如果你想用OrgChart.js的Vue封装,可以直接用我的项目功能JSON格式导入导出树形关系图支持树形关系图导出图片可拖拉树形关系图可编辑树形关系图预览项目地址:https://github.com/spiritree/vue-orgchart文档地址:https://spiritree.github.io/vue-orgchart
移动端touch事件--点击、双指与拖拽
前言用vue做移动端开发过程中,需要手势操作。因为vue-touch目前不支持vue2.0,所以自己写了几个手势。实现功能点击双指缩放图片移动指令代码myTouch.js>>exportdefault(Vue)=>{Vue.directive('touch',{bind:function(el,binding,vnode){lettype=binding.arg;//传入点击的类型letcoordinate={}//记录坐标点的对象lettimeOutTap;lettimeOutLong;letscaleSize;//缩放尺寸letdisplacement={};//移动的位移//勾股定理计算距离functionge
vue路由传参的三种基本方式
现有如下场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取数据。父组件中:<liv-for="articleinarticles"@click="getDescribe(article.id)">methods:方案一:getDescribe(id){//直接调用$router.push实现携带参数的跳转this.$router.push({path:`/describe/${id}`,})方案一,需要对应路由配置如下:{path:'/describe/:id',name:'Describe',component:Describe}很显然,需要在path中添加/:id来对应$router.push中path携带的参数。在子组件中可以使用来获取传递的参数值。$route.params.id方案二:父组件中:通过路由属性中的name来确定匹配的路由,通
vue.js关于循环出来多个input并让每个input后的修改按钮控制其值
从后端返回的数据中,有时候你会遇到一堆的input,然后每个input后面都跟有一个按钮,就像这种情况其中有两个问题,1:在一个框里面输入值,然后所有的值都都会显示你输入的结果2:每个输入框点击能控制所有的input而不只是它前面的那一个其实解决也不复杂,主要是运用到了循环以及index指数的功能,下面开始上代码,首先把它遍历出来<trv-for="(item,index)inbstp"v-if="bstp"><td><inputtype="text"name=""class="form-control"min="0"step=""required="required"title=""v-model="item.value"></td><td><buttontype="button"class="btnbtn-successbtn-sm"@click="amendCardNum(index)">修改</button>&l
vue.js点击获取按钮第一次获取不到数据,第二次才可以
今天做完项目提交,产品给我提了一个问题,说我这个第一次打开的时候总是获取不到数据,得第二次才可以。我测试了下,点第一次走了接口,结果一闪而过,然后啥都没了,我还打印了下,结果闪了一下就没了,经过仔细查找,才发现我的路径地址是http://localhost:8080/?#/warship,莫名其妙的多了个“?”,然后百度了一下说是页面被刷新了,需要这么写<formclass="form-inlineaccount"onsubmit="returnfalse;">给from加个onsublime="returnfalse;"就完美了,最终显示为http://localhost:8080/#/warship然后第一次进去也就有数据了!
vue.js配置axios
官方现在已经不再推荐用resource了,换了个axios,咱也不能落后,至少你得知道咋弄,面试的时候也好给面试官吹吹牛逼,废话不多说。首先用npm安装npminstall--saveaxiosvue-axios安装完之后,在你的main.js文件里配置,加上这两句就好importaxiosfrom'axios'Vue.prototype.$http=axios然后你读取接口数据的时候,直接就可以这样写,这个跟resource一个样,我那个下面的op,uin之类的都是要传的参数。this.$http.post(localStorage.getItem("addUrl")+'/skynet_sync/btsp',{"op":"update_card_num","uin":uin,"protypeId":index,
程序员的自我救赎---11.3:WinService服务
《前言》(一)Winner2.0框架基础分析(二)PLSQL报表系统(三)SSO单点登录(四)短信中心与消息中心(五)钱包系统(六)GPU支付中心(七)权限系统(八)监控系统(九)会员中心(十)APP版本控制系统(十一)Winner前端框架与RPC接口规范讲解(十二)上层应用案例(十三)总结《WinService服务》说道Windows服务基本每个以.net为主要开发语言的技术团队都会用到这个,Winner2.0中对于WinServices也有一些与众不同的地方。正常来说,每次开发一个项目如果我们要用到Windows服务就要单独在项目下建立一个WinService。其实WinService就是一个壳子。但是每次为了这个壳子都要投产到服务器还要通过cmd命令去部署。因为一直习惯这么做,可能不会觉得麻烦,但是项目一多就会发现要部署几十个服务那不那么顺心了。所以Jason开发了一套“WinServiceJob”工具。先说说有点再说是怎么实现的:1,无需
你为什么得不到梦想中的开发工作?
作者|MeghanHebel译者|刘腾飞在这个万物互联、全民AI的信息年代里,互联网开发从业者的缺口一直存在。然而很奇怪的是,开发们总找不到称心的工作,理想的公司。为什么,我们得不到梦想中的工作呢?写在前面你可能对现在的工作不是很满意或者谈不上喜欢与不喜欢,不然你也不会来看这篇文章。很多开发者都梦想在一个这样的地方工作:工程师文化、极客、自由、对外宣称自己和Airbnb等硅谷公司一样。那里有吃不完的零食和喝不完的啤酒,还有随处可见的最新款各种电子设备。在那里,你可以和一群有趣的人一起全力投入在你们所做的事情上,觉得好玩的同时还能改变世界。但是,这个梦想对于很多数人都只能是梦想。你为什么是个程序员?小王写完最后一段代码,说:“打卡下班挤地铁,操蛋的人生”。而小张,明年要结婚了。盼望着自己的工资什么时候能上30K。他们都是这个城市很渺小的一个程序员,有时候也被生活压的喘不过气。但回到家,他们打开电脑,成为了他们那个世界里的主宰者。没有绝对的热情,不足以造就伟大的工程师。你可能会说你工作尽职尽责,那又怎样?
双十二,纯送书啦!
公众账号原文https://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247485475&idx=1&sn=71ef8a6d90da76c565fe71922a7421ed&chksm=eae1fd71dd96746750c6b7482859e7244db04b46deca4c1b19c25e180ee9d0c3212f8be843e7#rd
数据显示:中国程序员是世界上最牛的程序员
点击上方“程序人生”,选择“置顶公众号”第一时间关注程序猿(媛)身边的故事如果有人问你哪里的程序员最牛,十有八九你会觉得是美国。毕竟美国拥有非常多杰出的程序员:比尔·盖茨、肯·汤普森、C语言之父丹尼斯·里奇、唐纳德·克努特……但是据小编所知,印度这些年,程序员的规模增长是全世界最快的,俄罗斯的黑客也声名大噪。那么,判断哪里的程序员最牛,到底有什么可信的依据呢?我们一起来看看在HackerRank网站上,哪些国家在编程挑战赛中表现最厉害。我们的宗旨是:多看数据,少YY。在HackerRank网站上,举行过数以千计的编程挑战赛,吸引来自世界各地的万千程序员参加。从Python到算法到安全到分布式系统都有涉及!根据数据显示,中国和俄罗斯拥有最具才华的程序员。中国程序员在数学、功能程序设计和数据结构方面秒杀了世界其他国家的程序员,而俄罗斯程序员则在算法领域占据主导地位,算法也是最流行和最具竞争力的领域。值得注意的是,虽然美国和印度在HackerRank上也有不少优秀的程序员,但他们也只能排在
程序员面试失败的几种原因,你中枪了吗?
一直到今天,这跳槽高峰期一直迟迟不肯退却,竟还有互联网公司某部门整体辞职,对于一些人可能来说是司空见惯,最近人们无力吐槽这可怕的世界,有些人公司的明明很需要这方面的人才,但是呢就是不能够入闱用,而且还是不止一次遇到这么尴尬的问题,这到底什么情况呢?动力节点Java学院的老师为你总结那些Java程序员面试绝望的原因。Java程序员面试失败的原因一、说得太少程序员不善言辞是IT界的通病,他们所有的语言表情都用代码代替了,平时在办公室也只能听到啪啪啪的键盘声,几乎没有语言上的沟通,可能是职业原因,程序员的表达能力极差。面试时表现尤为明显的就是在非技术环节,例如自我介绍、项目介绍等等,无关动手敲代码的事情全都来不了,即使是介绍项目流程、自己负责的版块,都是磕磕绊绊,这样一来,面试官会觉得你对工作特别没有激情,并且整个面试过程略显尴尬,给人印象也一般甚至很差,所以很难成功。Java程序员面试失败的原因二、说得太多还有另一部分应试者属于话密型,但是这种人一般说活都是假大空,会让面试官感觉不真实,过于浮夸,说难听点就是废话连篇,每一句正经话,这一类
Springboot集成Swagger2
摘要:在项目开发中,往往期望做到前后端分离,也就是后端开发人员往往需要输出大量的服务接口,接口的提供方无论是是Java还是PHP等语言,往往会要花费一定的精力去写接口文档,比如A接口的地址、需要传递参数情况、返回值的JSON数据格式以及每一个字段说明、当然还要考虑HTTP请求头、请求内容等信息。随着项目的进度快速高速的迭代,后端输出的接口往往会面临修改、修复等问题,那也意味着接口文档也要进行相应的调整。接口文档的维护度以及可读性就大大下降。既然接口文档需要花费精力去维护,还要适当的进行面对面交流沟通,我们何不想一个办法,第一:可以不用写接口文档;第二:前端与后端沟通接口问题的时候,后端是否可以提供一个URL,在这个URL中罗列出所有可以调用的服务接口,并在每个服务接口中罗列出参数的说明,返回值的说明,第三:后端接口如果能模拟调用就所有问题都解决了。本文我们重点讲解一下Sringboot中集成Swagger2框架。1.1.添加Swagger2依赖在项目的pom.xml文件中增加如下的依赖。
[墙裂推荐]AndroidVideoCache:实现视频播放边下边播
热文导读|点击标题阅读成为Android大牛的10大独门秘籍吊炸天!74款APP完整源码!Android仿QQ侧滑菜单小红点的实现前言现在在Android上实现视频播放已不是什么难事,这方面的轮子已经很多,不管是Google的ExoPlayer、B站的ijkplayer,还是一些其他的,基本上都能满足我们的需求。但现在视频播放我们追求的是更好的用户体验:播放流畅,没有卡顿,不跳帧。因此,如何优化体验是一件十分重要的事情。另外,做过视频播放的小伙伴都知道:在CDN的情况下,实现视频边缓冲边播是不可能的。而只有在P2P下才能实现视频边下边播。如果,产品经理让你实现边下边播的功能,你心里肯定一万只草泥马奔腾而过~,然后,还得耐心给她介绍:这功能实现不了,因为xxx实现不了,云云......上面的问题真的就解决不了吗?在CDN下就真的不能边下边播吗?其实,不然,AndroidVideoCache就能满足你的需求,解决上述问题简介AndroidVideoCache是国外大神AlexeyDanil
Android Architecture组件之ViewModel
原文地址:https://android.jlelse.eu/android-architecture-components-viewmodel-e74faddf5b94ViewModel最重要的作用就是为UI提供和管理数据。介绍我猜想你肯定有一些Activity,也许你还有一些用来存储和提供数据给UI的类,比如说MVP模式中的Presenter,或者是MVVM中的ViewModel,很不幸的,用户可以旋转他的手机。接下来会发生什么呢,你的Activity会被重新创建,还有你的UI数据的持有者,这意味着什么呢?你需要将数据传递到重新创建的Activity中,否则你就需要再次恢复他们必须警惕内存泄漏的问题,因为数据持有者的生命周期比Activity的生命周期长。怎么解决这些问题呢,我们来认识一下VieModel。ViewModelViewModel存储数据并且提供给UI,并且他是生命周期可感知的,看一下下面的图:[图片上传失败...(image-aa886-1513051151124)]ViewModel能够保证在配置更改的时候仍然
从Watson看AI平台的架构设计
摘要:本文分析IBMWatson在技术架构上所面临的问题及解决办法,总结了人工智能平台在走向产品化需要面对的诸多挑战。最后提出了以云计算PaaS容器服务平台为基础,上层使用SaaS的服务架构来搭建企业级AI平台,是技术上可行也是较经济的一种解决方案。前言2016年被认为是人工智能的元年,随着AlphaGo战胜韩国棋手李世石,人工智能产业彻底站到了风口上。然而人工智能研发团队的核心技术人员通常都是掌握了某些核心算法的科学家,他们对于平台的架构设计,工程实施并不一定经验丰富。如何基于核心AI能力搭建出一套可持续运营又具有业务成长性的企业级AI平台呢?笔者以IBM的Watson为案例,来分析架构设计上需要考虑的方方面面。Watson解决那些问题?IBM的Watson在2011年在美国危险边缘(Jeopardy)真人秀中以77147分的成绩战胜两位人类选手赢得100万美金头奖而一举成名。在这个故事背后,IBM解决了那些人工智能领域的问题呢?我们先来看看Jeopardy这个节目的竞赛规则。作为美式智力问答节目,Jeopardy的题目由若
MySQL基础入门——MySQL与R语言、Python交互
首发于R语言数据分析与可视化写文章登录MySQL基础入门——MySQL与R语言、Python交互杜雨6hoursagoMySQL作为z最为流行的关系型数据库管理平台之一,与绝大多数数据分析工具或者编程语言都有接口,今天这一篇分享如何将MySQL与R语言、Python进行连接。R语言中与SQL管理平台通讯的接口包有很多,可以根据自己使用的数据库平台类型以及习惯,挑选合适的接口包。因为我个人笔记本使用的MySQL平台,所以本篇仅以MySQL为例分享。(如果你需要其他平台的接口导入方案,可以直接在csdn博客上搜关键字,有很多博客资料可以参考)。我习惯使用的接口包是RMySQL,里面的核心函数主要涉及数据库连接,数据读写,数据查询三个方面,以下是三个方面的内容实例。R与数据库的连接:library(“RMySQL”)library(“magrittr”)数据库连接语句:conn<-dbConnect(MySQL(),#数据库平台类型dbname=”db1”,#数据库名称username=”ro
MySQL Schema与数据类型优化
Schema与数据类型优化选择优化的数据类型1.更小的通常更好更小的数据类型通常更快,因为它们占用更少的磁盘,内存和CPU缓存2.简单就好简单数据类型的操作通常需要更少的CPU周期.例如:整型比字符操作代价更低,因为字符集和校对规则使字符比较比整型比较更复杂3.尽量避免NULL通常情况下最好制定列为NOTNULL,除非真的需要存储NULL值.如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引.索引统计和值比较都更复杂.可为NULL的列会使用更多的存储空间,在MySQL中也需要特殊处理如果计划在列上建索引,就应该尽量避免设计成可为NULL的列整数类型TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT.分别使用8,16,24,32,64为存储空间.整数类型可选的UNSIGNED属性,表示不允许负值,这大致可以使正数的上限提高一倍.例如:TINYINTUNSIGNED可以存储的范围是0255,而TINYINT的存储范围是-128127实数类型DECIMAL类型用