关系逻辑

收益 or 挑战?Serverless 究竟给前端带来了什么

十年热恋 提交于 2019-12-02 02:34:08
作者 | 黄子毅(紫益) 阿里前端技术专家 导读: 前端开发者是最早享受到 “Serverless” 好处的群体,因为浏览器就是一个开箱即用、甚至无需为计算付费的环境!Serverless 把前端开发体验带入了后端,利用 FaaS 与 BaaS 打造一套开箱即用的后端开发环境。本文作者将从前端角度出发,为你讲述 Serverless 带来的收益及挑战。 引言 Serverless 是一种 “无服务器架构”,让用户无需关心程序运行环境、资源及数量,只要将精力 Focus 到业务逻辑上的技术。 现在公司已经实现 DevOps 化,正在向 Serverless 迈进,而为什么前端要关注 Serverless? 对业务前端同学: 会改变前后端接口定义规范; 一定会改变前后端联调方式,让前端参与服务器逻辑开发,甚至 Node Java 混部; 大大降低 Nodejs 服务器维护门槛,只要会写 JS 代码就可以维护 Node 服务,无需学习 DevOps 相关知识。 对一个自由开发者: 未来服务器部署更弹性,更省钱; 部署速度更快,更不易出错。 前端框架总是带入后端思维,而 Serverless 则是把前端思维带入了后端运维。 ** 前端开发者其实是最早享受到 “Serverless” 好处的群体。他们不需要拥有自己的服务,甚至不需要自己的浏览器,就可以让自己的 JS 代码均匀

数据结构导论1

感情迁移 提交于 2019-12-02 00:44:24
数据结构(Data structure) 是计算机组织数据和存储数据的方式; 是指一组相互之间存在一种或多种特定关系的数据的组织方式和他们在计算机里面存储的方式以及定义在该组数据上的一组操作。 计算机解决问题的步骤 1. 数据的逻辑结构 是指数据及其数据的组织方式。 2.数据结构、算法和程序的关系 算法+数据结构 = 程序 (1976年瑞士计算机科学家尼克劳斯·维尔特[Niklaus Wirth]提出) 1.简单来说,数据结构是计算机组织数据和存储数据的方式。 2.1976年瑞士计算机科学家Niklaus Wirth曾提出一个著名公式 程序 = 算法+数据结构 基本概念和术语 数据(Data):所有能被计算机处理的符号的集合。 数据元素(Data Element):是数据这个集合中的一个个体即数据的基本单位。 数据项(Data Item):数据元素常常还可以分为若干的数据项,数据项是数据具有意义的最小单位。 数据,数据元素,数据项构成了数据组织的3个层次。 数据库中,数据项又称为字段/域。 它是数据得不可分割得最小标识单位。 实际问题中的数据称为原始数据。 逻辑结构 指数据元素之间的结构关系。 物理结构/存储结构 指数据结构在机内的表示 物理结构/存储结构 物理结构(Physical Structure)/存储结构 指数据结构在机内的表示,数据的逻辑结构在计算机中的实现。

宜信微服务任务调度平台建设实践|分享实录

旧巷老猫 提交于 2019-12-01 22:44:49
本文主要围绕SIA平台展开,包括研发背景设计思路和技术架构,以及如何支持业务方。 内容来源:宜信技术学院第4期技术沙龙-线上直播|宜信微服务任务调度平台建设实践 主讲人:宜信高级架构师&开发平台负责人 梁鑫 导读:如今,无论是互联网应用还是企业级应用,都充斥着大量的批处理任务,常常需要一些任务调度系统帮助我们解决问题。随着微服务化架构的逐步演进,单体架构逐渐演变为分布式、微服务架构。 在此背景下,很多之前的任务调度平台已经不能满足业务系统的需求,于是出现了一些基于分布式的任务调度平台。这些平台各有其特点,但也各有不足之处,比如不支持任务编排、与业务高耦合、不支持跨平台等问题,不是非常符合公司的需求,因此我们开发了微服务任务调度平台(SIA-TASK)。本次分享主要围绕SIA平台展开,包括研发背景设计思路和技术架构,以及如何支持业务方。 一、SIA-TASK的产生 1.1 背景 无论是互联网应用还是企业级应用,都充斥着大量的批处理任务,常常需要一些任务调度系统帮助我们解决问题。随着微服务化架构的逐步演进,单体架构逐渐演变为分布式、微服务架构。 在这样的背景下,很多之前的任务调度平台或组件已经不能满足业务系统的需求,于是出现了一些基于分布式的任务调度平台。这些平台各有其特点,但也各有不足之处,比如不支持任务编排、与业务高耦合、不支持跨平台等问题。 1.2 种类 按照任务与时间的关系

Django开篇 - Web应用

我只是一个虾纸丫 提交于 2019-12-01 19:16:00
一 Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返回相应的数据给浏览器,需要强调的一点是:S端由server和application两大部分构成,如图所示: 上图:Web应用组成 二 开发一个Web应用 我们无需开发浏览器(本质即套接字客户端),只需要开发S端即可,S端的本质就是用套接字实现的,如下 # S端 import socket def make_server(ip, port, app): # 代表server sock = socket.socket() sock.bind((ip, port)) sock.listen(5) print('Starting development server at http://%s:%s/' %(ip,port)) while True: conn, addr = sock.accept() # 1、接收浏览器发来的请求信息 recv_data = conn.recv(1024) # print(recv_data.decode('utf-8')) # 2、将请求信息直接转交给application res = app(recv_data) # 3、向浏览器返回消息(此处并没有按照http协议返回)

[转贴] 游戏服务器架构二

南笙酒味 提交于 2019-12-01 18:46:30
来自: http://www.libing.net.cn/read.php/1724.htm 服务器公共组件实现 -- 环形缓冲区   消息队列锁调用太频繁的问题算是解决了,另一个让人有些苦恼的大概是这太多的内存分配和释放操作了。频繁的内存分配不但增加了系统开销,更使得内存碎片不断增多,非常不利于我们的服务器长期稳定运行。也许我们可以使用内存池,比如SGI STL中附带的小内存分配器。但是对于这种按照严格的先进先出顺序处理的,块大小并不算小的,而且块大小也并不统一的内存分配情况来说,更多使用的是一种叫做环形缓冲区的方案,mangos的网络代码中也有这么一个东西,其原理也是比较简单的。   就好比两个人围着一张圆形的桌子在追逐,跑的人被网络IO线程所控制,当写入数据时,这个人就往前跑;追的人就是逻辑线程,会一直往前追直到追上跑的人。如果追上了怎么办?那就是没有数据可读了,先等会儿呗,等跑的人向前跑几步了再追,总不能让游戏没得玩了吧。那要是追的人跑的太慢,跑的人转了一圈过来反追上追的人了呢?那您也先歇会儿吧。要是一直这么反着追,估计您就只能换一个跑的更快的追逐者了,要不这游戏还真没法玩下去。   前面我们特别强调了,按照严格的先进先出顺序进行处理,这是环形缓冲区的使用必须遵守的一项要求。也就是,大家都得遵守规定,追的人不能从桌子上跨过去,跑的人当然也不允许反过来跑。至于为什么

SystemVerilog Assertion 设计、调试、测试总结(2)

谁都会走 提交于 2019-12-01 18:37:20
上一篇博客主要写了SVA的基本语法(详细),这一篇主要写SVA语法总结,以及如何查看SVA波形等。 断言assertion被放在verilog设计中,方便在仿真时查看异常情况。当异常出现时,断言会报警。一般在数字电路设计中都要加入断言,断言占整个设计的比例应不少于30%。以下是断言的语法: 1. 断言的位置 SVA的插入位置:在一个.v文件或者.sv的文件中: module ABC (); rtl 代码 SVA断言 endmodule 如: module inline( input logic clk , input logic a , input logic b , input logic [7:0] d1 , input logic [7:0] d2 , output logic [7:0] d ); always @(posedge clk) begin if(a) d <= d1; if(b) d <= d2; end property p_mutex; @(posedge clk) not (a && b); endproperty a_mutex: assert property (p_mutex); endmodule 注意:不要将SVA写在endmodule外面。 2. 断言格式 断言编写的一般格式是: 【例】断言名称1: assert property (事件1)

领域驱动设计在马蜂窝优惠中心重构中的实践

陌路散爱 提交于 2019-12-01 17:30:09
点击上方“马蜂窝技术”,关注订阅更多优质内容 前言 正如领域驱动设计之父 Eric Evans 所著一书的书名所述,领域驱动设计(Domain Driven Design)是一种软件核心复杂性应对之道。 在我们解决现实业务问题时,会面对非常复杂的业务逻辑。即使是同一个事物,在多个子业务单元下代表的意思也是不完全一样的。比如「商品」这个词,在商品详情页语境中,是指「商品基本信息」;在下单页语境中,是指「购买项」;而在物流页面语境中,又变成了「被运送的货物」。 DDD 的核心思想就是让正确的领域模型发挥作用。所谓「术业有专攻」,DDD 指导软件开发人员将不同的子业务单元划分为不同的子领域,在各个子领域内部分别对事物进行建模,来应对业务的复杂性。 Part 1 重构优惠中心的背景 我们在实际的开发过程中都遇到过这种情况,最初因为业务逻辑比较单一,为了快速实现功能, 以及对成本、风险等因素的综合考虑,我们会为业务统一创建一个大的模型,各个模块都使用这同一个模型。但随着业务的发展,各子领域的逻辑越来越复杂,对这个大模型的修改就会变成一种灾难,有时明明是要改一个 A 子领域的逻辑,却莫名其妙影响到了 B 或者 C 子领域的线上功能。 优惠中心就是一个例子。优惠中心主要负责马蜂窝各业务线商品的优惠活动管理,以及计算不同用户的优惠结果。 「 商品管理 」 和 「 优惠管理 」

2019.10.17 业务逻辑详解

落花浮王杯 提交于 2019-12-01 16:02:02
不同的项目有不同的功能,不同的功能需要不同的实现,实现这些核心功能的代码就叫业务逻辑 比如让你实现一个功能,给你两个数,让你获取它的和,你所写的如何才能获得任意给定的两个数的和,这个程序实现过程即可成为业务逻辑处理。 “一个人了解的业务逻辑越多越细,他就是越好的需求分析师。” 难题:什么是业务逻辑? 业务是指一个实体单元向另一个实体单元提供的服务。 逻辑是指根据已有的信息推出合理的结论的规律。 业务逻辑是指一个实体单元为了向另一个实体单元提供服务,应该具备的规则与流程。 就像你家的规矩–“吃饭前必须洗手”“有客人来要起立”“睡觉前各自说晚安”-就是业务逻辑的生活化实例。 在软件系统架构中,软件一般分为三个层次:表示层、业务逻辑层和数据访问层: 表示层:负责界面和交互; 业务逻辑层:负责定义业务逻辑(规则、工作流、数据完整性等),接收来自表示层的数据请求,逻辑判断后,向数据访问层提交请求,并传递数据访问结果,业务逻辑层实际上是一个中间件,起着承上启下的重要作用; 数据访问层:负责数据读取。 业务逻辑的内容包括四个部分: 领域实体:定义了业务中的对象,对象有属性和行为; 业务规则:定义了需要完成一个动作,必须满足的条件; 数据完整性:某些数据不可少; 工作流:定义了领域实体之间的交互关系。 以大毛网购裤子为例 领域实体:大毛、资金账户、订单、裤子、发货单 业务规则

2019.10.17 MVC

时间秒杀一切 提交于 2019-12-01 16:01:47
MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性、可移植性,代码的可重用性。 MVC即Model、View、Controller即模型、视图、控制器。我在和同行讨论技术,阅读别人的代码时发现,很多程序员倾向于将软件的业务逻辑放在Controller里,将数据库访问操作的代码放在Model里。 最终软件(网站)的代码结构是,View层是界面,Controller层是业务逻辑,Model层是数据库访问。 不知道大家知不知道另外一种软件开发模式三层架构,它和MVC相似之处是也分为三层,分别是UI层表示用户界面,BLL层表示业务逻辑,DAL层表示数据访问。三层架构曾经红极一时,MVC大行其道之后它就销声匿迹了, 可现在看来, 它似乎只是改头换面, 装扮成MVC的样子,并且深受程序员们的欢迎,因为它的这种分层方式和前文描述的MVC如出一辙。 再说的直白点,很多程序员将MVC当成了三层架构在用,这看起来似乎没什么问题,毕竟三层架构也是一种和MVC齐名的架构模式。可问题在于用三成架构的思路写MVC,那么写出来的东西既不是三成架构也不是MVC,到是像一个什么都不是四不像。熟悉天龙八部的同学应该知道这样一段情节

《金字塔原理》的读后感作文3100字

久未见 提交于 2019-12-01 11:26:23
《金字塔原理》的读后感作文3100字: 在我们工作与生活中,不少人都会遇到这样的困扰:文章洋洋洒洒写了几千字,可是别人看了却说不知所云;会议发言说了一大堆,底下人一脸懵逼不明所以;沟通交流的时候,明明心里考虑了好久才说出的话,却发现还是鸡同鸭讲。似乎,我们总是很难将自己心里想要表达的意思准确地传达给别人。 简单来说,这应该是你思维的逻辑故障,是思维混乱引起了表达缺陷。那有没有什么方法可以帮助我们呢?有! 这就是今天想要给大家介绍的金字塔思维。我计划分多次将自己学习金字塔思维的理论与实操的笔记与心得分享出来。这么做,源于我自己曾经就是从这样一个矛盾混乱状态中走出来的,对逻辑思维短板带来的难堪与困扰感同身受。同时,在工作中,我也发现了周围很多人都缺乏对逻辑思维处理能力必要的重视和系统的训练,虽然我一再给大家推荐《金字塔原理》这本书,但是似乎收效甚微,这加重了我在工作上的负担。 《金字塔原理》一书是麦肯锡公司的第一位女咨询顾问芭芭拉·明托所著,她向我们传授了逻辑思考的底层逻辑——金字塔原理,这是一种通过突出重点,理清逻辑,分明主次的逻辑思路、表达方式和规范动作的理论。 我现在写的文章,在知识分享的同时,会加入了我的一些主观感受,如果看完文章觉得对你们有用处的话,想要了解原版思路,不妨去买这本书籍来研读,相信能给大家带来更多收获。 今天的文章要解决的是三个部分,分别是:为什么要用金字塔结构