Canvas粒子背景效果
使canvas根据窗口自适应width=$(':root').width();height=$(':root').height();zoom=getZoom();$canvas.attr('width',width);$canvas.attr('height',height);由于要做到自适应需要监听resize事件,在回调中执行mainBgFullScreen绘制Canvas,固定套路if($canvas[0].getContext){varctx=$canvas[0].getContext('2d');ctx.fillStyle='#ffffff';ctx.strokeStyle='rgba(255,255,255,0)';ctx.lineWidth=1*zoom;drawCanvas(ctx);}2.第二步在drawCanvas函数中根据一定的逻辑画点画线1.画点:封装一个工厂生成不同大小,不同位置,运动速度不同的点,这些根据屏幕缩放比生成,保证各个屏幕大小下显示协调
.NET Core中的去虚
在.NET最初被设计出来时,方法在默认情况下必须是非虚方法。这有几个原因,其中一个是,非虚方法通常比虚方法快很多。除了虚函数表查询本身的成本之外,虚函数通常还无法内联。由于.NET的发展趋势是倾向于使用大量的小方法,所以非内联方法的函数调用开销最终会超过方法本身的开销。我们在文章“关于C#的抽象与For-Each性能”中介绍了这种内联的部分效果。在过去的几年中,我们习惯的C#一直在变化。以前,大接口并不常见,但现在,可以完全匹配所有类的“影子接口”都非常常见了。这始于WCF,它鼓励这种做法,虽然不是必须的。随着DI框架性能的提升,在项目中见到面向所有非DTO类的影子接口已经很平常了。方法去虚有多种方式,本质上讲,就是在特定的情况下把它们视为非虚方法。JavaHotSpot就以具备这项特性而闻名。在Java中,所有方法在默认情况下都是虚方法,因此,在Java的历史中,解决这种性能问题的需求出现得早很多。在今年三月份,.NETCore悄悄地对“去虚(Devirtualization)”发起了挑战。简单去虚特性处理了
从0引入 ASP.NET Identity Core
原文出自RuiFigueiredo的博客,原文链接《ASP.NETIdentityCoreFromScratch》译者注:这篇博文发布时正值Asp.NetCore1.1时期,原博主使用的是vscode+yeoman+node.js。现在(2017年12月22日)已经到了Asp.NetCore2.0时代了,文中的代码发生了变化,yeoman上也找不到最新2.0的模板,所以在此译文中,博主对其作了改动,开发工具由vscode+yeoman+node.js替换为vscode+dotnetcli,.netcoresdk从1.x升级到2.x,这篇文章有些内容和原文不一样的,但是整体思路没变。动手做本文中的例子请准备好上述条件,鉴于上述的工具及软件,你可以在windowslinuxosX进行编码。如果你在windows上使用visualstudio2017开发,那么参照本文章完全没问题摘要:本文主要介绍了,在不使用visualstudio模板的情况下,如何一步一步的将Asp.Net
.NET Core容器化@Docker
温馨提示:本文适合动手演练,效果更佳。1.引言我们知道.NETCore最大的特性之一就是跨平台,而对于跨平台,似乎大家印象中就是可以在非Windows系统上部署运行。而至于如何操作,可能就有所欠缺。那这一节我们就结合简单实例一步一步教你如何借助Docker来容器化.NETCore应用,以完成跨平台的构建和部署。2.环境准备自从玩.NET就一直和Windows系统打交道,如果还基于Windows来展开本节内容,不就跑题了吗?!那咱们就切换到Linux系统。如果没有Linux基础和Docker基础,请自觉完成以下两个实验:腾讯云开发者实验室:Linux基础入门腾讯云开发者实验室:搭建Docker环境完成了以上两个实验后,我们就离Linux的世界更近一步。因为后续是基于Linux-CentOS系统进行实操演练,没有Linux上机环境的,可以考虑从腾讯云实验室列表找一个CentOS相关的实验项目作为本文的演练环境。3.Docker简介在开始之前,有必要对Docker做一下简单了解,可以参考我的上一篇
.Net 5分钟搞定网页实时监控
一、为什么会用到网页实时监控LZ最近在无锡买房了,虽然在上海工作,但是上海房价实在太高无法承受,所以选择还可以接受的无锡作为安身之地。买过房的小伙伴可能知道买房的流程,买房中间有一步很重要的就是需要商品房备案,简单点说就是你买房时可以在政府商品房备案网站处查看你购买房的备案情况,如果是已经备案了开发商还在卖这套房子,那肯定就是一房多卖了。而且很重要一点就是,只有备过案,才能进行下一步银行贷款,在目前银行利息越来越高的情况下,肯定是越早备案越早贷款越有利,所以以最快速度知道自己购买房子的备案情况尤为重要。当然也可以每天到网站查询自己的备案情况,显然这不是程序员的做法,更不是.Net程序员的做法。程序员的做法肯定是备案一旦下来,程序老老实实的通知到手机上。顺便吐槽一点,查询备案的网站真慢。二、选择windows服务、窗体(winform)、web还是控制台程序?当然最合适的肯定是windows服务,winform和web肯定也可以的,控制台程序不一定是最合适的,但肯定开发是最快速的。综合考虑了一下,因为是一个很小的监控项目而且只会用一
Spring Cloud(十一)高可用的分布式配置中心 Spring Cloud Bus 消息总线集成(RabbitMQ)
上一篇文章,留了一个悬念,ConfigClient实现配置的实时更新,我们可以使用/refresh接口触发,如果所有客户端的配置的更改,都需要手动触发客户端/refresh,当服务越来越多的时候,那岂不是维护成本很高,显然不太合适,而使用SpringCloudBus消息总线实现方案,可以优雅的解决以上问题,那就是通过消息代理中间件RabbitMQ加Git的Webhooks來触发配置的更新,那具体是怎么实现的,我会通过图文形式介绍。SpringCloudBusSpringCloudBus将分布式系统的节点通过轻量级消息代理连接起来。用于在集群中传播状态更改(例如配置更改事件)或其他管理指令。SpringCloudBus的一个核心思想是通过分布式的启动器对SpringBoot应用进行扩展,也可以用来建立一个或多个应用之间的通信频道。目前唯一实现的方式是用AMQP消息代理作为通道,但是相同的基本功能集(还有一些取决于传输)在其他传输的路线图上消息总线消息总线是一种通信工具,可以在机器之
技术雷达之「微前端」- 将微服务理念扩展到前端开发
文章大纲本文共计约7k字,预计阅读时间15mins微前端的缘由:单体应用与微服务架构微服务架构带来了哪些好处?那么前端的现状呢?——臃肿的前端微前端的定义-将微服务理念扩展到前端开发拆分微前端所带来的好处微前端的可选实践方案(4种+)创建更小的Apps(而不是Components)如何组合微前端的App模块?Option1:使用后端模板引擎插入HTMLOption1.1:渐进式从后端进行加载Option2:使用IFrame隔离运行时Option3:客户端JavaScript异步加载Option4:WebComponents整合所有功能模块不同App模块之间如何交互?微前端的页面优化与实例多模块页面加载问题与优化建议微前端在AEM(CMS)项目的应用现成解决方案:Single-SPA“metaframework”总结与思考:微前端的优缺点微前端的缘由:单体应用与微服务架构在传统的软件开发当中,大多数软件都是单体式应用架构的。在瞬息万变的商业时代背景下,企业必须学会适应我们这
我所了解的微服务架构 ,是如何实践的
上篇文章给大家介绍了什么是微服务架构,本文将会讲到如何实践微服务。不知道微服务架构的,可以看我上一篇文章微服务听上去好像不错,具体怎么落地啊?这需要回答下面几个问题:1、客户端如何访问这些服务?2、服务之间如何通信?3、这么多服务,怎么找?4、服务挂了怎么办?5、客户端如何访问这些服务?原来的Monolithic方式开发,所有的服务都是本地的,UI可以直接调用,现在按功能拆分成独立的服务,跑在独立的一般都在独立的虚拟机上的Java进程了。客户端UI如何访问他的?后台有N个服务,前台就需要记住管理N个服务,一个服务下线/更新/升级,前台就要重新部署,这明显不服务我们拆分的理念,特别当前台是移动应用的时候,通常业务变化的节奏更快。另外,N个小服务的调用也是一个不小的网络开销。还有一般微服务在系统内部,通常是无状态的,用户登录信息和权限管理最好有一个统一的地方维护管理(OAuth)。所以,一般在后台N个服务和UI之间一般会一个代理或者叫APIGateway,他的作用包括提供统一服务入口,让微服务对前台透明
「mysql优化专题」什么是慢查询?如何通过慢查询日志优化?(10)
在小伙伴们开发的项目中,对于MySQL排查问题找出性能瓶颈来说,最容易发现并解决的问题就是MYSQL的慢查询以及没有用索引的查询。日志就跟人们写的日记一样,记录着过往的事情。但是人的日记是主观的(记自己想记的内容),而数据库的日志是客观的,根据记录内容分为以下好几种日志(技术文):a、错误日志:记录启动、运行或停止mysqld时出现的问题。b、通用日志:记录建立的客户端连接和执行的语句。c、更新日志:记录更改数据的语句。该日志在MySQL5.1中已不再使用。d、二进制日志:记录所有更改数据的语句。还用于复制。e、慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。f、Innodb日志:innodbredolog缺省情况下,所有日志创建于mysqld数据目录中。可以通过刷新日志,来强制mysqld来关闭和重新打开日志文件(或者在某些情况下切换到一个新的日志)。当你执行一个FLUSHLOGS语句或执行mysqladminflush-logs或mysqladmi
前端基础-CSS-2
上篇我们介绍了css的的由来和编写语法,并展示了一个基本的例子,这篇继续向大家展示一些例子来说明如何使用css来美化我们的页面展示,css包含非常多的样式设置,在这里我会把最基础和常用的样式设置展示给大家,上篇我们了解了div这个块元素的使用,因为div内部可以写其它标签,但如果我们像上篇一样设置,整个块里的元素都会生效,那如果我只想设置div中某个标签呢,或者我们想通过div的id或class来设置样式,另外我们常见的就是表单,那如何给表单设置样式,以及如何给一个超链接设置样式,这就是今天我们要讲的内容,首先还是跟之前一样,我们先给出我们基本的html代码和截图:
这是一个特别的网站
首先感谢您的访问
基于 HTML5 Canvas 的 3D 机房创建
基于HTML5Canvas的3D机房创建对于3D机房来说,监控已经不是什么难事,不同的人有不同的做法,今天试着用HT写了一个基于HTML5的机房,发现果然HT简单好用。本例是将灯光、雾化以及eye的最大最小距离等等功能在3D机房中进行的一个综合性的例子。接下来我将对这个例子的实现进行解析,算是自己对这个例子的一个总结吧。整个例子因为没有设计师的参与,所以样式上可能比较简陋,但是在一些细节的地方,比如墙上的贴图、门框嵌入以及灭火器等等,都是尽可能地还原真实的场景,也是花了些心思做这个例子的!本例地址:http://www.hightopo.com/guide/guide/core/3d/examples/example_3droom.html本例动态图:从最基础的开始,场景的布置,照HTML的思路,这个场景就是将整个页面放在一个div中,再向这个div中添加一个顶部的div以及一个中间部分的div,说实在,如果用HTML实现这个步骤,我们要写的代码不多,但是如果要写几次这段代码
老牌直播软件OBS-Studio编译环境生成&&在VS2017添加QtWebEngine
直播元年早已过去。。。介绍老牌直播软件OBS-Studio编译的环境生成和Qt使用遇到的一些麻烦事。很多网上的编译教程其实已经过时了。当然这篇最后也是会过时的,只能起到一个参考的作用。现在已经没有网上教程那么复杂。还是参考官方的最简单。我的环境:Win1064位VS2017还在使用VS2010?,需要先去下载VS2013以上版本的IDE。Stuckonanoldertoolsetversion?MovetoVisualStudio2017withoutupgradingyourtoolsetOBS官方构建教程首先是环境Qt最新版没有提供msvc2017_32位版本所以在网上找个别人编译好的。当然也可以直接使用VS2015版本的,因为安装VS2017时也可以安装VS2015的平台集,然后你就需要参考这篇文章进行调整VS2017自带VS2015编译器等在命令行下无法使用问题。Qt5.9.1msvc2017_32位版本(里面有32和64位的):http://pan.baidu.com/s/
Java程序员,最常用的20%技术有哪些?
两个月,这让我想到了我当年第一份工作,也是两个月从零学JAVA。当时就买了3本书,强啃了6周。记住一点,时间有限,别听网上很多大牛的,他们说的太杂。你要抓重点,你只要让人家知道,你足够初级开发就可以了,学了长长一个列表,个个不精,被面试官随便问起来,就糟了。倒不如抓住最基本的,反正你就是初级人员,只懂最基本的,是最正常的情况。首先,学会一个J2EE服务器,tomcat+(Nginx或者httpd等web服务),学会的标准是,会下载,能启动,知道什么文件部署在什么地方,能看到启动画面,能知道最直接,最关键的配置文件名字和位置。你要了解下其他的服务器的名字,就足够了。有人叫你去学weblogic?那是坑你,2个月weblogic,你最多也只能懂十分之一。太重。其次,学一个框架,以前SSH,现在SSM,这些都多余,你就只看springMVC,因为所有的mvc框架都类似,你只要坚持你了解MVC,其他的我觉得是容易借鉴类推的,H和M,你就直接说,我没有项目经验,我是没有实际接触过的,我只了解一点点原理,这个不要花时间,最后去看几眼
[译] 别人家的程序员:如何克服骗子综合症,避开自我怀疑的陷阱
骗子综合症(ImpostorSyndrome)困扰着很多人,即使他们在某些方面取得了成功,却把成功归因于外部因素,否定了自身做出的努力。对于程序员来说,他们该如何克服骗子综合症,避开自我怀疑的陷阱,让自己变成一个自信的大神?你是否会有这样的感觉,总担心自己不够好?抬头看看周围的人,他们好像都比你强。他们的代码写得比你好,他们的调式速度比你快,他们只要瞄上一眼文档就能理解其中的内容。他们自信,他们享受写代码的过程。再回头看看自己,担心自己对某某框架不够了解,担心对某一门编程语言掌握得不够熟练,担心写代码出现bug。你担心赶不上新的技术潮流,担心自己没有技术天分。于是你开始怀疑自己:“或许命中注定我成为不了一个好的程序员”。“你不是一个人在战斗”如果你也有过类似的疑虑,那么我可以告诉你:“你不是一个人在战斗”。曾经有一段时间,我也经常怀疑自己。在大学毕业找工作那段时间,我为面试做准备,那些算法题给我带来了无尽的挫败感。所幸的是,我的努力最终还是让我获得了回报,我拿到了几家大公司的offer。从这一段经历当中,我学会了如何从不同的角
Parallax Scrolling – 橫向捲動視差
在Web應用中,尤其是「一頁式」網站裡我們常常會看到捲動視差的例子。之前用UICollectionView實作過豎直的捲動視差,這次換UIScrollView來實作水平的捲動視差。ParallaxScrolling–捲動視差當使用者拖動畫面的時候,前後兩張圖片都會在各自的View中移動。HomeViewController在Viewcontroller中放置一個UIScrollView並將準備好的5張圖片平鋪在scrollView的subview中。而scrollView的contentSize也很好計算,就是5個滿屏的大小。另外會給放入的ParallaxView設置tag方便後面調用。privatefuncsetupView(){//setupimagesimages.append(UIImage(named:"img-1")!)images.append(UIImage(named:"img-2")!)imag
跨越:迈过成长阶梯的断层
在旧文《程序员的成长阶梯和级别定义》中定义了一个程序员的成长阶梯,大概有下面几个阶段:初级中级高级资深专家很遗憾,当时到了专家这个阶段,我就没法给出很明确的答案了。只说了,职业成长就像爬楼,每一个级别就像一个楼层。但到了一定阶段(每个人的阶段不会一样)会发现上面似乎还有几层但却看不见下一层的楼梯了。这就是本文想探讨的,关于成长阶梯的断层。定义因为之前我已经走到了资深阶段,并停留了一段时间,所以我的断层出现在从资深到专家之间。旧文中,我用一种模糊怀疑的语气表达过关于专家的定义——专家可能就是这个领域内你绕不过去的人吧。如今看来,这个定义太大。比如,若你处在物理学领域,牛顿就是你绕不过去的人,之后是爱因斯坦。而在计算机领域,图灵定义了计算机的边界,也是这个领域绕不过去的人。但这样的天才人物,百年来才出一个,那么这样的定义也就失去了指导意义。这个定义中包含两个点,一是领域、另一个是绕不过去。第一点表达了某个范围,第二个则模糊的表达了这个范围的大小,绕不过去其实就是一个很大的范围了。如今反思,其实用这两点来定义专家也是可以的,只是
**关于mysql5.7版本新特性介绍 ------数据类型 JSON**
关于mysql5.7版本新特性介绍------数据类型JSON测试环境:Win10、mysql5.7.14内容简介:随着mysql5.7版本的到来,大家对其的热情也越来越高涨,身为mysql圈子里的一员,我本身也对mysql5.7的一些新特性有所了解,通过学习了解到了很多新的特性,今天给大家介绍一下它在灵活性方面的一个新的功能:提供对JSON的支持JSON介绍首先介绍一下什么是JSON:>JSON(JavaScriptObjectNotation,JS对象标记)是一种轻>量级的数据交换格式。它基于ECMAScript(w3c制定的js规范)的一>个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简>洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人>阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。>通俗的讲就是,JSON数据类型可以存储一些复杂的数据类型,例如字符串、数字、对象、数组等。将一些平时比较复杂的数据存储,简单化,便于人们存储与阅读。JSON
理解vuex的状态管理模式架构
理解vuex的状态管理模式架构2017-12-2416:57by龙恩0707,...阅读,...评论,收藏,编辑理解vuex的状态管理模式架构一:什么是vuex?官方解释如下:vuex是一个专为vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证以一种可预测的方式发生变化。使用方式有如下2种:1.如果直接在浏览器下引用包的话;如下:
真真假假 JavaScript
!![]===true[]==false[]==0[]==-0[]==""上文介绍列举了所有的falsy值和一些容易搞错的truthy值,也给出了将一个变量显式转换为布尔类型的方法,这些在日常开发中都属于基础知识。除此之外,也给出了一些truthy值,falsy值之间的相互比较的结果,这些内容在日常开发中用到的可能稍少一些,但是有了这些相应的了解之后,在处理一些奇怪特别的bug时,可能会带来一些帮助。扩展阅读JSComparisonTableTruthyandFalsy:WhenAllisNotEqualinJavaScriptTruthy·TypeScriptDeepDive参考文档Boolean-JavaScript|MDN
Material使用05 自定义主题、黑夜模式\白天模式切换
//引入material自定义主题支持@import'~@angular/material/theming';//引入material公用的主题风格@includemat-core();//自定义颜色$my-app-primary:mat-palette($mat-blue);$my-app-accent:mat-palette($mat-teal,A200,A100,A400);$my-app-warn:mat-palette($mat-red);//利用自定义颜色组装自定义主题$my-app-theme:mat-light-theme($my-app-primary,$my-app-accent,$my-app-warn);//设置自定义主题,使其生效@includeangular-material-theme($my-app-theme);ViewCode1.1.1引入material主题支持和material公用的主题风格//引入material自定义主题支持@import'~@angular/m