面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。 面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。 SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/Web Service技术之后的自然延伸。 SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。 Soa系统是一种企业通用性架构。 from:https://baike.baidu.com/item/SOA/2140650?fr=aladdin
View Details全称:可扩展通讯和表示协议 简介:可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议。XMPP is the IETF’s formalization of the base XML streaming protocols for instant messaging and presence developed within the Jabber open-source community in 1999 XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。 XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分; 核心的XML流传输协议 基于XMLFreeEIM流传输的即时通讯扩展应用 XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。 XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。 XMPP的扩展协议Jingle使得其支持语音和视频。 XMPP的官方文档是RFC 3920. from:https://baike.baidu.com/item/XMPP/3430617?fr=aladdin
View Details使用NGINX+Openresty实现WAF功能 一、了解WAF 1.1 什么是WAF Web应用防护系统(也称:网站应用级入侵防御系统 。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用 防火墙 是通过执行一系列针对HTTP/HTTPS的 安全策略 来专门为Web应用提供保护的一款产品。 1.2 WAF的功能 支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝。 支持URL白名单,将不需要过滤的URL进行定义。 支持User-Agent的过滤,匹配自定义规则中的条目,然后进行处理(返回403)。 支持CC攻击防护,单个URL指定时间的访问次数,超过设定值,直接返回403。 支持Cookie过滤,匹配自定义规则中的条目,然后进行处理(返回403)。 支持URL过滤,匹配自定义规则中的条目,如果用户请求的URL包含这些,返回403。 支持URL参数过滤,原理同上。 支持日志记录,将所有拒绝的操作,记录到日志中去 1.3 WAF的特点 异常检测协议 Web应用防火墙会对HTTP的请求进行异常检测,拒绝不符合HTTP标准的请求。并且,它也可以只允许HTTP协议的部分选项通过,从而减少攻击的影响范围。甚至,一些Web应用防火墙还可以严格限定HTTP协议中那些过于松散或未被完全制定的选项。 增强的输入验证 增强输入验证,可以有效防止网页篡改、信息泄露、木马植入等恶意网络入侵行为。从而减小Web服务器被攻击的可能性。 及时补丁 修补Web安全漏洞,是Web应用开发者最头痛的问题,没人会知道下一秒有什么样的漏洞出现,会为Web应用带来什么样的危害。WAF可以为我们做这项工作了——只要有全面的漏洞信息WAF能在不到一个小时的时间内屏蔽掉这个漏洞。当然,这种屏蔽掉漏洞的方式不是非常完美的,并且没有安装对应的补丁本身就是一种安全威胁,但我们在没有选择的情况下,任何保护措施都比没有保护措施更好。 基于规则的保护和基于异常的保护 基于规则的保护可以提供各种Web应用的安全规则,WAF生产商会维护这个规则库,并时时为其更新。用户可以按照这些规则对应用进行全方面检测。还有的产品可以基于合法应用数据建立模型,并以此为依据判断应用数据的异常。但这需要对用户企业的应用具有十分透彻的了解才可能做到,可现实中这是十分困难的一件事情。 状态管理 WAF能够判断用户是否是第一次访问并且将请求重定向到默认登录页面并且记录事件。通过检测用户的整个操作行为我们可以更容易识别攻击。状态管理模式还能检测出异常事件(比如登陆失败),并且在达到极限值时进行处理。这对暴力攻击的识别和响应是十分有利的。 其他防护技术 WAF还有一些安全增强的功能,可以用来解决WEB程序员过分信任输入数据带来的问题。比如:隐藏表单域保护、抗入侵规避技术、响应监视和信息泄露保护。 1.3WAF与网络防火墙的区别 网络防火墙作为访问控制设备,主要工作在OSI模型三、四层,基于IP报文进行检测。只是对端口做限制,对TCP协议做封堵。其产品设计无需理解HTTP会话,也就决定了无法理解Web应用程序语言如HTML、SQL语言。因此,它不可能对HTTP通讯进行输入验证或攻击规则分析。针对Web网站的恶意攻击绝大部分都将封装为HTTP请求,从80或443端口顺利通过防火墙检测。 一些定位比较综合、提供丰富功能的防火墙,也具备一定程度的应用层防御能力,如能根据TCP会话异常性及攻击特征阻止网络层的攻击,通过IP分拆和组合也能判断是否有攻击隐藏在多个数据包中,但从根本上说他仍然无法理解HTTP会话,难以应对如SQL注入、跨站脚本、cookie窃取、网页篡改等应用层攻击。 web应用防火墙能在应用层理解分析HTTP会话,因此能有效的防止各类应用层攻击,同时他向下兼容,具备网络防火墙的功能。 二、使用nginx配置简单实现403和404 2.1 小试身手之rerurn 403 修改nginx配置文件在server中加入以下内容 set $block_user_agent 0; if ($http_user_agent ~ "Wget|AgentBench"){ # 注意if 和(之间要有空格,否则会报错 set $block_user_agent 1; } if ($block_user_agent = 1){ return 403; } 通过其他机器去wget,结果如下 [root@mini1 ~]# wget http://192.168.3.140 --2017-05-05 14:14:53-- http://192.168.3.140/ Connecting to 192.168.3.140:80… connected. HTTP request sent, awaiting response… 403 Forbidden 2017-05-05 14:14:53 […]
View DetailsNetty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。 也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。 “快速”和“简单”并不用产生维护性或性能上的问题。Netty 是一个吸收了多种协议(包括FTP、SMTP、HTTP等各种二进制文本协议)的实现经验,并经过相当精心设计的项目。最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。
View DetailsPRAGMA foreign_keys = 0; CREATE TABLE sqlitestudio_temp_table AS SELECT * FROM Websites; DROP TABLE Websites; CREATE TABLE Websites ( WebsiteId INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, WebsiteName VARCHAR (255), WebsiteDirectory VARCHAR (255), DbType INT DEFAULT (0), DbName VARCHAR (100), DbUid VARCHAR (50), DbPwd VARCHAR (30), BackupDirectory VARCHAR (255), BackupDateTime DATETIME, AddDateTime DATETIME ); INSERT INTO Websites ( WebsiteId, WebsiteName, WebsiteDirectory, DbType, DbName, DbUid, DbPwd, BackupDirectory, BackupDateTime, AddDateTime ) SELECT WebsiteId, WebsiteName, WebsiteDirectory, DbType, DbName, DbUid, DbPwd, BackupDirectory, BackupDateTime, AddDateTime FROM sqlitestudio_temp_table; DROP TABLE sqlitestudio_temp_table; PRAGMA foreign_keys = 1;
View DetailsDevOps 目前非常热门,我认识的大多数朋友,同事和高级开发者都在努力成为 DevOps 工程师,并将自己作为组织中的 DevOps 拥护者。 虽然我承认 DevOps 的好处,它与改进的软件开发和部署直接相关,但从我有限的经验来看,我可以说这不是一件容易的事。在如此多的工具和实践中选择正确的路径是非常困难的。 作为一个 Java 博主,我的读者经常会问到一些问题,例如:如何成为 DevOps 工程师,我应该学些什么?我应该进行什么样的训练?学习 Maven 和 Jenkins 一定是为了成为 DevOps 工程师吗?Dcoker 和 Kubernetes 怎么样?DevOps 如何建设基础的自动化流程?我是否应该学习 Chef、Puppet 或者 Ansible?读者们不断向我提出各种各样的问题,这些只是其中的一部分。 我在自己有限的经验中搜索答案,尽已所能回答那些问题。我不能使用一种简单、有效、可复用的方式把回答记录下来,不过没关系。 今天我将与大家分享一个很棒的资源,它将帮助你成为你一直想成为的 DevOps 工程师,2018年 DevOps 路线图。 昨天我在网上闲逛的时候,偶然发现了 Kamranahmedse 的 GitHub 页面,上面有一些有用的路线图,可以帮助我成为前端开发人员、后端开发人员、全栈 web 开发人员,最后也是最重要的,DevOps 工程师。 这个路线图在任何意义上都是非常棒的,因为它不仅强调了 DevOps 工程师的角色,而且还告诉了你需要学习哪些工具和技术来涵盖这个领域。 最重要的是,它在视觉上很吸引人(你喜欢黄色和奶油色的蓝色线条吗?),所以你可以打印出来并粘在桌子上以便于参考。 虽然路线图很好,但它告诉你要学什么,但它没有告诉你如何学习和在哪里学习。 为了完成路线图,我分享了一些有用的在线课程,包括免费和付费,以便你可以学习和改进你想要的工具或领域。 开发人员 2018 年的 DevOps 路线图 我谈到 2018 DevOps 路线图是这个: Kamran Ahmed (kamranahmedse) 制图 (https://github.com/kamranahmedse/developer-roadmap) 现在,我们按照路线图逐步了解在 2018 年该如何掌握 DevOps 的基本技能: 1. 学习一门编程语言 Java、Python 和 JavaScript 是三种主要的编程语言,我相信你们至少知道一种。 如果你一种都不知道,也没关系。你可以通过下面的介绍的教程来选择一种语言。但我仍然强烈建议你至少学会上述三种通用的主流编程语言中的一种。 Java 如果你想学习 Java,Java 大师养成是门不错的教程,最近它刚针对 Java 10 时行了更新。 Python 如果你想学习 Python,我推荐一门自己最喜欢的课程:完全 Python 训练营。它能教会你 Python 3 这个最流行的 Python 版本。 JavaScript 如果你想学 JavaScript,那千万不要错过 Mosh Hamdani 在 Udemy 上的 JavaScript 基础入门。 如果你需要更多选择,而且愿意通过免费的资源来学习,那么你可以在我列出的清单中找到免费的 Java、Python 和 JavaScript 教程。 2. 了解不同的操作系统概念 这是 Ops 部分开始的地方,早些时候它只是由知道操作系统和硬件的系统管理员支持,但是对于 DevOps,现在开发人员也需要了解它们了。 您至少需要了解路线图中建议的流程管理、线程和并发、套接字、I/O管理、虚拟化、内存存储和文件系统。 由于我们大多数人都在 Linux 工作,我建议你通过 Udemy 上的 Linux Administration BootCamp 课程来更好地学习和理解 Linux 操作系统。 如果您需要更多选择并且不介意从可用资源中学习,那么您还可以查看此 免费的 Linux 课程。 3. 掌握终端生存大法 作为 DevOps 人,能在命令行终端中熟练的使用命令那必须要掌握的,尤其是在 Linux 环境中。必须要了解,Linux 的 shell,如 Bash、或者 Ksh;一些小工具比如 find、grep、awk、sed、lsof;还有网络命令像 nslookup […]
View Details代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能。代码审查程序以各种形式,如结对编程,代码抽查等。在这个列表中,我们编制了15个最好的代码审查工具,这将有助于开发者节省代码审查时间。 您可能感兴趣的相关文章 Web 前端开发人员和设计师必读精华文章推荐 精心挑选的优秀jQuery Ajax分页插件和教程 12个让人惊叹的的创意的 404 错误页面设计 让网站动起来!12款优秀的 jQuery 动画插件 8个前沿 HTML5 & CSS3 效果【附源码下载】 1. Gerrit Gerrit is a web based code review system, facilitating online code reviews for projects using the Git version control system. Gerrit makes reviews easier by showing changes in a side-by-side display, and allowing inline comments to be added by any reviewer. Gerrit simplifies Git based project maintainership by permitting any authorized user to submit changes to the master Git repository, rather than requiring all approved changes to be […]
View Details最近在学习ES6,在B站上看了一些视频再结合阮一峰老师的《ES6标准入门》基本上对ES6的各特性过了一遍,那就开始动手练项目咯,在找到视频对应的代码后,下载并运行出现了几个问题,通过百度又没查到相关的解决思路,这不还得科学上网,毕竟你询问的人群是全世界,总有适合的哪一个。话不说,开始叙述问题,并一步步的解决问题。项目的源代码在我的github上:https://github.com/sun2013126370/es6-lottery-master,视频的话去B站找咯。 先说一下我的相关配置吧
|
1 2 3 4 |
nodejs版本: v10.13.0 npm版本:6.4.1 gulp版本:CLI version 3.9.1(全局安装-npm install -g gulp) |
1 2 3 第一个问题: Failed to load external module @babel/register 网上说gulp的版本变成3.9.0(命令:npm install -g gulp@3.9.0)就可以,可以解决这个问题,但是至今还没找到出现这个问题的原因。还好,这个问题并不影响项目的运行,因此选择忽略这个错误或者将gulp的版本换成3.9.0都可以。 第二个问题:TypeError: require.extensions.hasOwnProperty is not a function 这个问题是由版本造成的,打开项目中的package.json,将0.3.1版本改成0.3.2即可,并执行npm install 命令。 重新执行gulp --watch命令,又发现了如下错误,go on! 第三个问题:gulp[13772]: src\node_contextify.cc:628: Assertion `args[1]->IsString()’ failed. 具体什么原因,还没有搞明白,后续再补充。解决这个问题的办法就是npm install natives,再次运行 gulp --watch,OK啦,项目起来了。在浏览器输入localhost:3000,就看到效果了。那接下来就是敲敲项目代码,把出现问题的原因找出来。 from:https://blog.csdn.net/a2013126370/article/details/84102343
View Details背景: 这个问题不是一天两天了,有时候是网速不行,有时候是被墙了,有时候是github把node-sass的包转移目录导致下载失败。 Cannot download "https://github.com/sass/node-sass/releases/download/xxx/binding.node的问题 另附node-sass的binding.node各个版本的安装包,哪里少,就单独下载哪个,下载完了之后,跟着我,一起把文件放在指定位置即可解决这个问题 https://github.com/sass/node-sass/releases/tag/v4.7.2 1.本机位置 C:\Users\Administrator\AppData\Roaming\npm-cache\node-sass\ 这个里面是各种版本,报错提示你哪个版本下载失败,你就塞到哪个版本的文件夹里,如图所示 2.删除项目的node_moduls目录 3.重新npm install 4.另附全局安装命令
|
1 2 3 |
npm i sass-loader node-sass webpack <span class="hljs-comment">--g</span> npm i style-loader css-loader <span class="hljs-comment">--g</span> |
qq 43163707 落雨 本文地址:http://www.cnblogs.com/ae6623/p/8711853.html
View DetailsOracle has two products that implement Java Platform Standard Edition (Java SE) 8: Java SE Development Kit (JDK) 8 and Java SE Runtime Environment (JRE) 8. JDK 8 is a superset of JRE 8, and contains everything that is in JRE 8, plus tools such as the compilers and debuggers necessary for developing applets and applications. JRE 8 provides the libraries, the Java Virtual Machine (JVM), and other components to run applets and applications written in the Java programming language. Note that the JRE includes components not required […]
View Details