聚合文章列表
17 浏览

canvas实现圆形进度条动画

j进度条动画1.canvas的HTML部分很简单就一个canvas标签canvas画布的宽高是自身的属性,要在行间样式设置,若是在style设置宽高会使你画的图片变形。70%2.画布的js代码主要思路:效果图中是由三个圆组成的,最外层是一个有黑边的大圆,里面一个改变进度条进度的圆和一个现实百分比的圆。注意:每画一个圆都要新建一个图层,这样可以单独设置每个图层的样式,之间不相互影响,就像ps的图层一样,一个完整的设计稿都是很多图层组成的。varcanvas=document.getElementById("mycanvas");varcontext=canvas.getContext("2d");functiondraw(i){//大圆框context.beginPath();context.lineWidth=1;context.arc(50,50,46,0,Math.PI*2);context.strok

HTML5 1900-01-01 发布
20 浏览

HTML5 录音的踩坑之旅

原文出处:翁旺开篇闲扯前一段时间的一个案子是开发一个有声课件,大致就是通过导入文档、图片等资源后,页面变为类似PPT的布局,然后选中一张图片,可以插入音频,有单页编辑和全局编辑两种模式。其中音频的导入方式有两种,一种是从资源库中导入,还有一种就是要提到的录音。说实话,一开始都没接触过HTML5的AudioAPI,而且要基于在我们接手前的代码中进行优化。当然其中也踩了不少坑,这次也会围绕这几个坑来说说感受(会省略一些基本对象的初始化和获取,因为这些内容不是这次的重点,有兴趣的同学可以自行查找MDN上的文档):调用AudioAPI的兼容性写法获取录音声音的大小(应该是频率)暂停录音的兼容性写法获取当前录音时间录音前的准备开始录音前,要先获取当前设备是否支持AudioAPI。早期的方法navigator.getUserMedia已经被navigator.mediaDevices.getUserMedia所代替。正常来说现在大部分的现代浏览器都已经支持navigator.mediaDevices.g

HTML5 2017-12-25 发布
30 浏览

快速序列化组件MessagePack介绍

快速序列化组件MessagePack介绍简介MessagePackforC#(MessagePack-CSharp)是用于C#的极速MessagePack序列化程序,比MsgPack-Cli快10倍,与其他所有C#序列化程序相比,具有最好的性能。MessagePackforC#具有内置的LZ4压缩功能,可以实现超快速序列化和二进制占用空间小。性能永远是重要的!可用于游戏,分布式计算,微服务,数据存储到Redis等。支持.NET,.NETCore,Unity,Xamarin。从上图我们看出MessagePackforC#在性能测试中是最好的,这里解释一下第三个MsgPack-Cli是MessagePack官方实现的。第一和第二都是MessagePackforC#,第一项相比第二项具有稍快一点的序列化和反序列化速度,但是第二项采用了L4压缩功能,显著的减少了二进制的大小。在实际使用中推荐使用L4压缩功能。使用该组件已经发布在Nuget,使用命令加入项目。Install-PackageMessagePac

.Net 2017-12-25 发布
AD 友情赞助
16 浏览

你为什么还坚持.NET

C#换什么比较合适?从TIOBE来看,Java、C++、C、Python都好,对了,还不能忘了JS。SqlServer换什么比较合适?MySql挺好,Oracle也不错,也还有不少选择。都挺好,那问题来了,你为什么要换呢?最初踏进.NET的世界,很多人都是为了能够快速开发一个程序,解决一个问题。参观各大造船厂,巨硬造船厂给了一个近乎衣来伸手饭来张口的平台,通过这个,很快就能搞定了。随后你就上了一条巨硬造船厂的客轮,从水手干起,进入了这个行当,干了一年两年很多年,当了船长,船没沉,还能开。一天,船上有人要去北冰洋了,觉得破冰船更合适,就下船了,上了破冰船;又过一阵子,有人要运大型龙门吊了,半潜船合适,也下船了;过两天打仗了,有人去了战列舰。你还在原来的船上,船上的人越来越少,你怀疑,MDZZ,哥们是不是上了贼船?自己开始焦虑,我应该学点什么好,应该换条什么船。JS很火,Node.js,reactnative等技术把js从前端拉到的后端,移动端,感觉什么都能做。仿佛js的船就是航空母舰一样,匆匆上了js的船,开

.Net 2017-12-25 发布
19 浏览

软件工程师应该怎样了解 GDPR?

应该重新考虑软件构建方面的实践,比如记录日志。软件设计师应该在保证完成工作的同时独力避免成为数据处理者。也就是说,在确实准备完备之前,不要去访问不需要的个人识别数据。你是否打算在2018年创建新的软件解决方案?如果是,你最好看看这篇文章。欧盟通用数据保护法规(GDPR)正在完成其过渡期,并将于明年夏天开始执行。违反其条款可能会让你面临高达2000万欧元的罚款——尤其是对于大型组织来说。除了法规中所例的制裁之外,作为造成严重失责或数据泄漏的责任人,甚至会有牢狱之灾。显然,这听起来很严重。我见到过GDPR的两个极端做法:其一,当它不存在;其二,崩溃,开发中不再关注个人数据。这两种做法都是错误的,会造成误导并带来巨大的损失。RDPR不会终结个人数据,相反,这套法规是为了能透明地,安全地使用个人数据,警告并严厉制裁那些忽视正确处理个人数据的人。GDPR强调风险思维;您需要采取一切措施来缓解隐私风险,直到风险化解到您可以接受的程度。我很欣赏这个规定-有很多的软件在设计中完全没有考虑到安全或隐私的问题。这种软件及其违规行为

程序员 2017-12-25 发布
21 浏览

jamovi : 结合了R的魅力,且免费易用的统计软件

正如上图所示,jamovi具有非常直观的用户界面和一些便捷的特性:它可以实时计算你所需要的数据并向你呈现漂亮的图形和整洁的APA格式表格,同时,如若你对数据做出改动,它也可以及时更新数据与图表的结果。随后,这些结果均可便捷地复制粘贴到你的编辑软件中(如Word)。目前,大多数基本的数据分析功能如t-检验,方差分析,相关分析,列联表,比例检验都已可使用,不久后,将有更多的统计功能面世。此外,许多R语言里具有强大功能的数据包也都可以在jamovi直观便利的用户界面中得到使用。如此一来,便可让你即使不学R语言的语法,也可轻松使用到R语言的数据分析功能。而对于想学R语言的人而言,jamovi也可提供帮助,你只要点击一下鼠标,jamovi就会为你提供每个数据分析背后的R语句。jamovi的另外一个优势就是数据的实时管理,也就是说你可以在软件中直接编辑你的数据。若你对原始数据做出了调整,相应的统计结果也会在输出窗口处得到及时的更新。设想一下,这些数据上的变动会在SPSS软件的使用中增加多少工作量:修改一个数据,然后再次点击

程序员 2017-12-23 发布
AD 友情赞助
17 浏览

IT程序员重点收藏的java面试知识(二)

本人从事IT行业10余年,以下是本人在招java开发岗位时,会经常问到的一些知识点,希望给正在找工作或者准备跳槽的同学一点指导,希望看到此文章的同学都能找到一份理想的工作:1、反射获取字节码对象方式、创建对象的两种方式获取字节码方式三种:(1)类名.class,例如:System.class(2)对象.getClass(),例如:newDate().getClass();(3)Class.forName("类名"),例如:Class.forName("java.util.Date");创建对象的两种方式:(1)直接用字节码创建对象,只能调用默认的构造方法:字节码.newInstance();(2)获取构造方法Constructor,然后调用构造方法创建,可以通过参数不同调用不同的构造方式2、对匿名内部类的理解匿名内部类其实是内部类的简写形式。内部类是定义在类中的类,就好比我们人类,我们人类都有心脏,而心脏又有自己独特组成,可以把心脏也抽象成一个类。这个心脏类就是人类的内部类。如果要研究某一种心脏疾病,需要

程序员 2017-06-03 发布
23 浏览

献给还在为涨薪发愁的Java程序员们的一篇文章

最近有人主动私信问我“想利用业余时间学习第二种语言提升竞争力,没有方向能不能推荐?”,这个问题其实牵扯到如何扩展技术广度的问题,我个人建议是以深度为主以广度为辅,时间分配80%放在自己第一技术上面,20%可以选择扩展技术广度。今天来讲讲如何利用业余提升技术广度。你掉进了学习误区吗?技术广度很好理解,就是多学习一门或多门编程语言,横向扩展技术,不局限于目前所会的这一种。那这个时候有人肯定会想“技多不压身”,那就多学点,下班后有1.5个小时用来学习,半小时学习前端语言,半小时学习服务端语言,半小时学习脚本语言。这种学习方法最终会导致每天会很累,并且学习效果还不好。建议一段时间专注一种技术,这样学习起来会更加高效,要记住一句话“贪多嚼不烂”。如何选择语言?我们知道了自己的技术方向后,有人肯定这个时候会问了“我找到自己的学习方向了,比如学习服务端技术,但是很多语言都可以做服务端。如何定技术方向?选择对了合适的技术方向在打造竞争力这件事情上能够做到事半功倍。无论学习什么都是需要时间成本的,所以在这件事上我们需要慎重考虑。我说说自己的

程序员 2017-12-25 发布
20 浏览

基于sanic的微服务基础架构

使用python做web开发面临的一个最大的问题就是性能,在解决C10K问题上显的有点吃力。有些异步框架Tornado、Twisted、Gevent等就是为了解决性能问题。这些框架在性能上有些提升,但是也出现了各种古怪的问题难以解决。在python3.6中,官方的异步协程库asyncio正式成为标准。在保留便捷性的同时对性能有了很大的提升,已经出现许多的异步框架使用asyncio。使用较早的异步框架是aiohttp,它提供了server端和client端,对asyncio做了很好的封装。但是开发方式和最流行的微框架flask不同,flask开发简单,轻量,高效。微服务是最近最火开发模式,它解决了复杂性问题,提高开发效率,便于部署等优点。正是结合这些优点,以Sanic为基础,集成多个流行的库来搭建微服务。Sanic框架是和Flask相似的异步协程框架,简单轻量,并且性能很高。本项目就是以Sanic为基础搭建的微服务框架。特点使用sanic异步框架,简单,轻量,高效。使用uvloop为核心引擎,使sanic在很多情况下单

软件架构 2017-12-25 发布
AD 友情赞助
15 浏览

Spring Cloud和Docker的微服务架构

SpringCloud和Docker的微服务架构==原文地址==本文通过以SpringBoot,SpringCloud和Docker构建的一个应用程序为例,帮助大家理解微服务架构模式。本文的代码保存在github上,镜像文件保存在dockerhub上。可以通过一条命令启动整个系统。这个应用程序提供了:处理个人财务,组织收入和支出,管理储蓄,分析统计,并创建简单的预测等功能。功能服务整体应用被分解成三个核心的微服务。这些微服务是围绕某些业务功能进行组织,可独立部署的应用程序。

软件架构 1900-01-01 发布
12 浏览

云原生架构概述

1.什么是云原生1.1CNCF组织在讲云原生之前,我们先了解一下CNCF,即云原生计算基金会,2015年由谷歌牵头成立,基金会成员目前已有一百多企业与机构,包括亚马逊、微软。思科等巨头。目前CNCF所托管的应用已达14个,下图为其公布的CloudNativeLandscape,给出了云原生生态的参考体系。CloudNativeLandscape1.2云原生CNCF给出了云原生应用的三大特征:容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。动态管理:通过集中式的编排调度系统来动态的管理和调度。面向微服务:明确服务间的依赖,互相解耦。云原生包含了一组应用的模式,用于帮助企业快速,持续,可靠,规模化地交付业务软件。云原生由微服务架构,DevOps和以容器为代表的敏捷基础架构组成。这边引用网上关于云原生所需要的能力和特征总结,如下图。云原生所需要的能力和特征1.3TheTwel

软件架构 2017-12-25 发布
15 浏览

alter ignore table add unique key

背景经常遇到开发同事有加唯一索引的需求,但是加上唯一索引之前,比较麻烦的事情就是去除重复数据。MySQL提供了一个ALTERIGNORETABLExxxADDUNIQUEKEY的方式,来忽略掉加唯一索引时的duplicatekeyerrors。用法ALTERIGNORETABLExxxADDUNIQUEKEY语句在MySQL5.6.6之前的可用度都是不高的,有bug,会导致两种后果:ignore并不生效,加不上唯一索引主从数据不一致参考MySQL5.6官方文档,5.6.6修复了bug之后可以正常使用:但从官方文档里面,根本看出来,重复的记录到底哪一行被保留,哪些行被删掉了,保留的规则是什么?从我测试的结果来看,加唯一索引似乎是保留id最小的那一行:mysql>altertabletest1adduniquekeyuniq_notifyid_targetid_type(notify_id,target_id,target_type);ERROR1062(230

MySQL 2017-12-25 发布
AD 友情赞助
20 浏览

异步的JavaScript

引子前几天学校的交流群里面讨论JavaScript回调函数,有个同学提出了一个观点:回调函数就是异步执行的!看到这个观点,我想了想我使用回调函数的场景,还真都是异步的,一时竟觉得他说得很有道理。当然,这句话本身,当然是错的,在JavaScript中函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,基于这个基本事实,就可以写出高阶函数。接受或者返回一个函数的函数称为高阶函数常用的内置高阶函数例如Array对象的forEach,map等,函数组合,函数柯里化,回调模式都属于高阶函数。实际上,JavaScript是有能力进行函数式编程的(FED关于函数式编程的文章),这里就不深入讨论了。有点扯远了,回到刚刚那个同学观点,和明显,用forEach遍历一下数组,并不是异步的,那么为什么提到回调函数的时候,很容易和异步联系起来呢?这个问题引起了我的思考,回调和异步到底有什么样的渊源呢?单线程的JavaScript说起异步,就要先说说JavaScript运行机制。我们知道,JavaScri

JavaScript 2017-12-25 发布
17 浏览

当 SegmentFault 遇上双旦,首页有了新的模样

当你看到这篇文章的时候,首先送一句:MerryChristmas,圣诞快乐给你~.----------------------_._------------------------------------------.|d888b.*||.*_?888P_.||,-~~-'-/_~~~\.`-~:8o.*||,'.:8bv'.:88..||/.:88.:8b...||./

JavaScript 2017-12-25 发布
14 浏览

Ajax 学习总结

Ajax学习总结Ajax技术在JavaWeb应用中随处可见,比如购物车中根据商品数量及时更新等应用,那么我们今天就来说说Ajax的一些小应用!Ajax技术也就是允许浏览器与服务器通信而无需刷新当前页面,数据在客户端和服务端独立传输,而不是以前客户端向服务端发送一个请求,服务器返回整个页面,如此反复。完成Ajax请求就需要使用XMLHttpRequest类的方法,下面我们先开始介绍XMLHttpReqest的API一、XMLHttpRequestAPI1.1XMLHttpRequest方法1.open("method","url")----建立对服务器的调用,Method参数可以是get,也可以是post,url可以是相对的也可以是绝对的(准备发送请求)2.send("content")----向服务器发送请求(发送的内容)3.setRequestHeader(“header”,"value")----把指定的首部设置为

JavaScript 2017-12-04 发布
14 浏览

javascript变量和数据类型

1.JavaScript变量javascript的变量是松散类型的(弱类型),也就是说一个变量可以用来保存任何类型的数据,每个变量仅仅是用来保存值的占位符。变量的声明用var操作符来定义,如varmessage;也可以多个变量一起定义,如vara,b,c;用逗号隔开每个变量。varmessage;varmessage;//message为初始化,值为undefinedmessage=12;//message值为12;message="hello";//message值为hello;message=["hello",12];//message值为数组上面的代码解释了JavaScript变量为松散类型的,可以有不同类型的值。若在定义变量的时候不用关键字var,则该变量为全局变量,不建议使用太多的全局变量,不容易管理,造成代码混乱;同时太多的全局变量会占用大量内存,因为全局变量直到页面被销毁,全局变量才被销毁。a=12;//此时a为全局变量2.JavaScript数据类型undefined类型undefined类型

JavaScript 2017-12-25 发布
15 浏览

Vue组件实战

最近看了下Vue组件的相关知识,除了官网也推荐这篇博客www.cnblogs.com/keepfool/p/…,但是这篇博客中用的是v1.0.25,我就用最新的v2.4.4来模仿下文中的例子,也一起谈一谈下面几个方面:组件编译作用域父子组件传递数据非父子组件通信过滤器先看下最终的实现效果:1.整体代码先看下整体代码,首先是html部分,分成三部分1.id="app"的container部分2.id="grid-template"的表格部分3.id="dialog-template"的对话框部分总共涉及两个自定义组件,一个父组件;一个子组件.

JavaScript 2017-12-25 发布
21 浏览

2017 JavaScript 主流框架性能总结

作为一名JavaScript开发者,你也许已经接触到了众多框架,甚至在众多框架之中你已经熟练掌握了一两个。之前我偏爱框架,它降低了我的开发难度。但是在经历了那么多优秀的前端的概念变革,从Virtual-DOM到状态管理,我也在想,对于框架的本身,它们的性能到底如何,对于不同类型的操作的开销又是怎样的,本文将对主流框架进行性能比对,并且总结之间的性能差异。使用环境:MacBookPro15(2,5GHzi7,16GBRAM,OSX10.13.1,Chrome62.0.3202.94(64-bit))将要上场的框架们vanillajs-主神的存在,无处不在,无所不能的框架,大量运用于各种主流网站的开发react-脸书的儿子,对外一直宣称自己的没满岁,在大家认为它没希望长到一岁的时候,一下子长到了十五岁angular-谷歌爸爸的长子,虽然还在维护,但是因为弟弟们的诞生,热度大不如前angularJS-谷歌爸爸在生了长子后,觉得这届儿子不行,我要再造几个,现在编号第五的老四刚刚诞生vue-来

JavaScript 2017-12-25 发布
16 浏览

单例模式【javascript设计模式】

学而时习之,不亦说乎?——孔丘《论语•学而》单例模式的核心在于:确保一个实例,并提供全局访问。首先,单例模式要求只有一个实例,其次这个实例在全局都可以访问到。比如我在实习的时候写的这个页面:点击邮件获取最新安装包的时候会弹出这个框框,很显然,这个框框只需要被创建一次即可,所以我们可以写下如下的代码:btnvarpopup=(function(){vardiv=document.createElement('div');div.innerHTML='我是一个框框';div.style.display='none';document.body.appendChild(div);returndiv;})();document.getElementsByTagName('J-popup').onclick=function(){popup.style.display='block';}这种方式虽然符合单例模式的定义,但是也许我

JavaScript 2017-12-25 发布
30 浏览

点我达骑手Weex接入过程详述

一、概述截止11月底点我达骑手APP已完整的接入了13个weex页面,效果还不错,Weex化推进也比较顺利。现特分享一下Android端点我达骑手APP接入步骤及相关核心逻辑,以此作为记录,同时也希望能给后来者带来一些帮助。二、集成WeexAndroid集成有两种方式:-源码依赖:能够快速使用WEEX最新功能,可以根据自己项目的特性进行相关改进。-SDK依赖:WEEX会在jcenter定期发布稳定版本。由于业务关系点我达骑手APP接入了菜鸟SDK,而菜鸟SDK通过SDK依赖的方式在其中引入了Weex。1、新建Weexmodule新建一个AndroidLibrary类型的module,起名Weex。2、添加build.gradle依赖在Weexmodule下的build.gradle文件添加Weex依赖。compile'com.taobao.android:weex_sdk:0.11.0'compile'com.taobao.android:weex_inspector:0.12.1'3、实现Weex

JavaScript 2017-12-25 发布
AD 友情赞助