聚合文章列表
18 浏览

Nodejs进阶:crypto模块中你需要掌握的安全基础知识

一、文章概述互联网时代,网络上的数据量每天都在以惊人的速度增长。同时,各类网络安全问题层出不穷。在信息安全重要性日益凸显的今天,作为一名开发者,需要加强对安全的认识,并通过技术手段增强服务的安全性。crypto模块是nodejs的核心模块之一,它提供了安全相关的功能,如摘要运算、加密、电子签名等。很多初学者对着长长的API列表,不知如何上手,因此它背后涉及了大量安全领域的知识。本文重点讲解API背后的理论知识,主要包括如下内容:摘要(hash)、基于摘要的消息验证码(HMAC)对称加密、非对称加密、电子签名分组加密模式二、摘要(hash)摘要(digest):将长度不固定的消息作为输入,通过运行hash函数,生成固定长度的输出,这段输出就叫做摘要。通常用来验证消息完整、未被篡改。摘要运算是不可逆的。也就是说,输入固定的情况下,产生固定的输出。但知道输出的情况下,无法反推出输入。伪代码如下。digest=Hash(message)常见的摘要算法与对应的输出位数如下:MD5:128位SHA-1:160位SHA

JavaScript 2018-01-03 发布
19 浏览

号称“编程语言年”的 2017 ,都发生了哪些大事?

Infoworld消息,2017年,Java、JavaScript、Kotlin、TypeScript、C++等编程语言的特性都迎来了较大变化。总的来说,这一年不管是老牌的语言,还是新兴语言,都有了不同程度的改进。Java期待已久的JDK9在9月正式发布了,作为Java标准的最新实现,曾因为其模块化技术引起争议。尽管模块化系统旨在提供可伸缩性,性能和安全性方面的优势,但包括RedHat和IBM在内的关键参与者却不同意Oracle实施它。他们对应用的兼容性表示担忧,并对最初的建议投了反对票。直到最后的再次修改,才让反对方感到满意,通过了复审提案,为迟迟不能发布的版本扫清了道路。下一个版本JDK10计划将在2018年3月迅速推出,具有局部变量的类型推导和垃圾收集器接口等特性。而JavaEE,甲骨文已将其交由Eclipse基金会管理。同时,Oracle在发布Java9的同时也发布了JavaEE8。JavaEE8包含云、HTML5和HTTP

JavaScript 2018-01-03 发布
23 浏览

PathJs ——化繁为简的响应式 JavaScript UI 框架

(首先,声明一点,PathJs-UI和PathJs没有一点关系)最新版本:1.1【更新内容:修改了iframe和code的兼容性,更好地适应浏览器,pathjsShow和pathjsHide方法新增animation参数,可以控制显示或隐藏控件时动画的显示和样式】简介:PathJs是一款响应式JavaScriptUI框架,他有着出色的能力,帮助你化繁为简。有了他,你大可不必担心繁杂的UI设计工作,只需2行代码,轻松胜任工作里的一切事物。PathJs由Skyogo工作室于2017/12/30日推出,你可以叫他完成许多繁杂的响应式动态效果,只需两行代码,轻松胜任!PathJs有多达156种简约图标,全部来自阿里官方图标库,和谷歌官方图标库,放在了PathJs包的img/icon文件夹中,同时还有许多内置颜色,随时等待你的使用当然,PathJs的兼容性也是没有问题的,你完全可以在一个小警告框内输入巨多内容,还不会破坏它的样式哦!还有的是!PathJs完全支持自定义UI控件样式和创建属于你自己的UI控件,这些教程我们完全公开

JavaScript 2018-01-03 发布
AD 友情赞助
18 浏览

JavaScript正则表达式

JavaScript正则表达式正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。JavaScript通过RegExp来支持正则表达式。正则表达式创建方式varreg=/pattern/flags。其中pattern可以是任何简单或者复杂的正则表达式,可以包含字符串、分组、限定符、向前查找以及方向引用。每个正则表达式可以带有一个或者多个标记,用以表达正则表达式的行为。正则表达式匹配模式包含3个标记:g:表示全局模式,模式应用于所有字符串,而非发现第一个匹配项立即停止。i:表示不区分大小写,在确定匹配项时忽略模式与字符串的大小写。m:多行模式,在到达一行末尾时,还会继续查找下一行中是否存在于模式匹配的项。因此,一个正在表达式就是一个模式与3个标记的组合体,不同的组合

JavaScript 2018-01-03 发布
20 浏览

原生js做h5小游戏之打砖块

前言首先,先说明一下做这个系列的目的:其实主要源于博主希望熟练使用canvas的相关api,同时对小游戏的实现逻辑比较感兴趣,所以希望通过这一系列的小游戏来提升自身编程能力;关于es6语法,个人认为以后es6语法会越来越普及,所以算是提前熟悉语法使用技巧。小游戏的实现逻辑上可能并不完善,也许会有一些bug,但是毕竟只是为了提升编程能力与技巧,希望大家不要太较真作为第一次分享,我选择打砖块这个逻辑不算太复杂的小游戏。同时,为了接近真实游戏效果,在游戏中也添加了关卡,砖块血量,以及物理碰撞模型的简略实现。其实关注游戏实现逻辑就好了线上演示地址:https://yangyunhe369.github.io/h5-game-blockBreaker/github地址:https://github.com/yangyunhe369/h5-game-blockBreaker备用地址ps:github地址有代码演示,以及源码可供参考,线上演示地址可供预览先上一个游戏完成后的截图游戏工程目录如下.├─in

JavaScript 2018-01-03 发布
26 浏览

随手记Android JS与Native交互实践

在移动开发中,开发的需求和节奏都越来越快,而NativeApp在这种节奏中略显笨拙,开发周期长、用户升级慢、应用市场审核时间长都深受开发者弊病。而这时候很多开发者都提出了HybridApp的概念,这种开发模式有着迭代灵活、多端统一、开发周期短、快速上线等优势。但是HybridApp也有其不足的地方,在性能很难到达NativeApp的水平,在访问设备上的硬件时也不是那么得心应手。对于这些问题,现在已经有较多的解决方案,比较重的框架有Facebook的ReactNative,轻量级别也有ionic。如果是已经成熟的产品,Web页面较多迁移比较困难,也可以使用VasSonic来提升WebView体验,然后通过JS调用Native。目前公司项目中由于历史原因采用后者的方式来实现,但是在使用过程中由于没有统一的管理,存在了通讯方式多样、调用混乱和安全性差等几个问题。下文主要讲述如何通过重新设计JS调用框架来解决以上问题。AndroidWebViewJS交互首先介绍一下WebView中JS和Native相互调用的方式、相互之间的差异。A

JavaScript 2018-01-03 发布
AD 友情赞助
25 浏览

2018 我所了解的 Vue 知识大全

年初第一个flag就是掌握vue,哈哈Vue,React,Angular三大主流框架,最后我选择学习Vue,接触过React,自己感觉学习曲线有些陡峭,进而我选择了学习Vue,他的学习曲线平稳很多;不管选择什么框架,除了对基础的知识有一定的了解掌握,还应该对ES6有一定的了解;这就是我脑海中的Vue知识体系;一句话概况了Vue通过尽可能简单的API实现响应的数据绑定和组合的视图组件;Vue的创建一个简单的Vue实例只需要四步即可我们的学习目的肯定不止于创建简单的Vue实例;而是用它去实现更加多变的功能需求;那我们需要进一步去学习Vue-router和Vuex以及Vue-cli;先说说基础的Vue吧,在创建了一个简单Vue实例之后,我们是否还能在实例中添加更加完善的数据选项,去完成我们多变的功能需求;答案是肯定能的;指令下面是我用上述指令写的一个小案例,刚好所有的指令都上了用场详细请看demo源码自定义指令

JavaScript 2018-01-03 发布
25 浏览

Design System 中的 Design Token

在过去的两期周刊中,我们分别介绍了Components与Pattern的差别,同时也介绍了Pattern中非常重要的一个概念-PerceptualPattern(气质模式)。对于整个DesignSystem,Components和Pattern除了为产品开发效率、一致性、设计指导提供帮助之外,它还肩负着另一个重要使命:通过它们来表达我们在DesignSystem中创建的设计原则并参与到产品的建设中,从而为产品打造赋有情感的品牌认知。我们在前面的Principles部分曾提到,设计规则创建与执行同样都很重要。从目标达成的角度来说,我们期望参与产品的每一个角色都应该能记住这些原则,结合PerceptualPattern“脑补”出这些界面展示在用户面前的样子。这也就需要我们有一套控制性强且拓展的方法来维系产品的风格系统,也就是我们今天将要讨论的DesignToken。什么是DesignToken在真实的产品过程中,这个环节在开发过程中是完全断掉的。我们通常看到的style代码(如

HTML 2018-01-03 发布
30 浏览

layui 2.2.5 发布,常规更新

layui2.2.5发布了,主要改进内容包括:新增table的templet方法支持,即现在自定义模板可以采用方法的形式替代内容新增table的text参数,用于自定义各种默认提示文本新增layui.factory(modName)方法,用于获取模块对应的工厂,以便回收利用新增layui.sessionData(table,settings)方法,用于存储本地会话性数据新增用于定义按钮容器的class选择器:layui-btn-container新增用于定义流体按钮的class选择器:layui-btn-fluid优化table的分页栏,如果无数据则不显示优化layer的prompt层,初始赋值value时的光标会出现在最后(之前版本会在最前)优化layui.event()和layui.onevent()方法,处理自定义事件更加灵活优化layui.router()方法,新增返回拼接后的href修复table的异步数据在code为

CSS 2018-01-03 发布
AD 友情赞助
20 浏览

C#命令行解析工具

我将告诉大家两个方法去获取C#输入的命令行参数。第一个方法:林选臣大神写的,他的方法很简单。首先复制两个类到项目publicclassCommandLineArgumentParser{privatereadonlyList_arguments;publicCommandLineArgumentParser(string[]args){_arguments=newList();for(vari=0;i

C# 2018-01-03 发布
25 浏览

Prism for WPF再探(基于Prism事件的模块间通信)

上篇博文链接PrismforWPF初探(构建简单的模块化开发框架)一、简单介绍:在上一篇博文中初步搭建了Prism框架的各个模块,但那只是搭建了一个空壳,里面的内容基本是空的,在这一篇我将实现各个模块间的通信,在上一篇博文的基础上改的。先上效果图:初步介绍下,图中虚线分割为四个模块,每个模块可向另外三个模块发消息。这里还是基于模块化开发CS端程序的思路,模块之间低耦合,如果项目做大,好处自然体现出来了。图中的效果已经实现了一个模块朝其他三个模块发送消息。这里我使用的事Prism框架中的PubSubEvent事件,其优点是简单易用,直接Publish和Subscribe即可。二、基本思路项目结构图:四个模块间基础和共用的东西我放在Desktop.Infrastructure中。A、B、C、D四个模块都保持对Desktop.Infrastructure的引用,各自间无引用,相互独立,以后需要添加删除模块或者改动既有模块,都不影响其他模块的功能。1、事件与接口,代码很简单。接口代码:接

.Net 2018-01-03 发布
24 浏览

SkyWalking 源码分析 —— Agent 发送 Trace 数据

分布式链路追踪系统,链路的追踪大体流程如下:Agent收集Trace数据。Agent发送Trace数据给Collector。Collector接收Trace数据。Collector存储Trace数据到存储器,例如,数据库。本文主要分享【第二部分】SkyWalkingAgent发送Trace数据。考虑到减少外部组件的依赖,Agent收集到Trace数据后,不是写入外部消息队列(例如,Kafka)或者日志文件,而是Agent写入内存消息队列,后台线程【异步】发送给Collector。本文涉及的类非常少,如下图所示:2.TraceSegmentServiceClientorg.skywalking.apm.agent.core.remote.TraceSegmentServiceClient,TraceSegment发送服务客户端。它是一个服务,也是一个客户端,负责将TraceSegment异步发送到Collector。我们先来看看T

消息系统 2018-01-02 发布
AD 友情赞助
22 浏览

应对一线互联网公司的程序员面试,基本八种排序算法需掌握哪些?

一般而言,个人在面试的时候,会问面试者知道哪些排序算法,选一个自己熟悉排序算法。讲下它的主要特点(大部分人会选冒泡),比如时间复杂度/稳定性这些,再比如有个序列(1,4,2,3)要比较多少次。如果答的不好,就不继续。如果继续,一般会把重点放在快速排序和堆排,进一步可能会要求手写实现。比如快速排序,一般而言,肯定是会有bug的。其实能手写快排无bug,不管是不是提前背好的(记性好也是优点),都会有很好的印象。然后会讨论下在输入是特定序列的情况下,当前的算法有什么缺点或优点。如果这个过程可以一直持续下去,到最后得分都会比较高,但很少见。另外如果面试者比较熟悉基数排序这类算法,会问下一些偏理论的问题,比如比较排序算法的下界是多少,为什么基数排序可以突破这个下界等等。说那么多,主要是还是想表达,大致了解可能够,但是不够好,最好还是深入理解,如果能死记硬背更好,不然很大概率会被问住。这并不是挑刺。当然,工作中用到这些面试内容的可能性不高,但是这还是要问下,不然怎么拉开差距了^_^。『算法导论』的第二部

程序员 1900-01-01 发布
18 浏览

2018,如何从小白升级到大牛程序员呢?

写在前面2017已经悄悄的走了,2018也已经匆匆的来了,我们在总结过去的同时,也要展望一下未来。俗话说一年之计在于春,虽说距立春还有一个多月,我觉得我们如果想从小白升级到大牛,应该早做计划,规划一下今年要学哪些新的技能呢?我们来一一探讨一下。SpringBootSpringBoot:是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapidapplicationdevelopment)成为领导者。SpringBoot特点1.创建独立的Spring应用程序2.嵌入的Tomcat,无需部署WAR文件3.简化Maven配置4.自动配置Spring5.提供生产就绪型功能,如指标,健康检查和外部配置6.绝对没有代码生成和对XML没有要求配

程序员 1900-01-01 发布
18 浏览

vue.js之过滤器,自定义指令,自定义键盘信息以及监听数据变化

一、监听数据变化1、监听数据变化有两种,深度和浅度,形式如下:vm.$watch(name,fnCb);//浅度vm.$watch(name,fnCb,{deep:true});//深度监视2、实例用法2.1-1浅度监听:当点击页面,弹出发生变化了,a的值变为1,b的值变为101浅度监听1