关系逻辑

【微信小程序项目实践总结】30分钟从陌生到熟悉

纵饮孤独 提交于 2020-01-12 04:51:28
前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05-日历组件的实现 4. 微信小程序开发04-打造自己的UI库 5. 微信小程序开发03-这是一个组件 6. 微信小程序开发02-小程序基本介绍 7. 微信小程序开发01-小程序的执行流程是怎么样的? 阅读本文之前,如果大家想对小程序有更深入的了解,或者一些细节的了解可以先阅读上述文章, 本文后面点需要对着代码调试阅读 对应的github地址是: https://github.com/yexiaochai/wxdemo 首先我们来一言以蔽之,什么是微信小程序?PS:这个问题问得好像有些扯:) 小程序是一个不需要下载安装就可使用的应用,它实现了应用触手可及的梦想,用户扫一扫或者搜一下即可打开应用。也体现了用完即走的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。从字面上看小程序具有类似Web应用的热部署能力,在功能上又接近于原生APP。 所以说, 其实微信小程序是一套超级Hybrid的解决方案,现在看来,小程序应该是应用场景最广,也最为复杂的解决方案了 。 很多公司都会有自己的Hybrid平台,我这里了解到比较不错的是携程的Hybrid平台、阿里的Weex、百度的糯米

Linux 内核中的 Device Mapper 机制

核能气质少年 提交于 2020-01-11 22:14:05
本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍。Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,当前比较流行的 Linux 下的逻辑卷管理器如 LVM2(Linux Volume Manager 2 version)、EVMS(Enterprise Volume Management System)、dmraid(Device Mapper Raid Tool)等都是基于该机制实现的。理解该机制是进一步分析、理解这些卷管理器的实现及设计的基础。通过本文也可以进一步理解 Linux 系统块一级 IO的设计和实现。 Device Mapper 是 Linux2.6 内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构,如图 1。 图1 Device Mapper的内核体系架构 在 内核中它通过一个一个模块化的 target driver 插件实现对 IO 请求的过滤或者重新定向等工作,当前已经实现的 target driver 插件包括软 raid、软加密、逻辑卷条带、多路径、镜像、快照等,图中 linear、mirror、snapshot、multipath

从源码角度了解SpringMVC的执行流程

戏子无情 提交于 2020-01-11 18:53:35
目录 从源码角度了解SpringMVC的执行流程 SpringMVC介绍 源码分析思路 源码解读 几个关键接口和类 前端控制器 DispatcherServlet 结语 从源码角度了解SpringMVC的执行流程   SpringMVC的执行流程网上有很多帖子都有讲解,流程图和文字描述都很详细,但是你如果没有通过具体源码自己走一遍流程,其实只是死记硬背。所以想开个帖子从源码角度再梳理一遍SpringMVC的执行流程,加深印象。 SpringMVC介绍   SpringMVC采用的是 前端控制器(Front Controller) + 各个业务处理器(Controller)来处理请求的。前端控制器来响应所有请求,通过一定的调度规则找到具体负责处理的业务处理器,并将请求委派给具体的业务处理器去执行业务逻辑,业务处理器返回给前端控制器模型数据model,最后前端控制器将model交给视图View进行渲染。 源码分析思路   看源码的同学可能往往会陷入一个怪圈,刚开始看可能还能看懂,等到一层一层点进去会越来越晕,让自己陷入了太多的细节中,而这些细节其实对主要流程并没有多大影响,然后就埋头研究。之后不得不又从头开始看,又让自己陷入了另一个细节。其实看源码开始时只是需要看一个大致的框架和思路,了解代码的大致执行流程,千万不要让自己陷入到细节的泥潭中

Semantic Parsing(语义分析) Knowledge base(知识图谱) 对用户的问题进行语义理解 信息检索方法

浪尽此生 提交于 2020-01-11 10:28:01
简单说一下所谓Knowledge base(知识图谱)有两条路走,一条是 对用户的问题进行语义理解 ,一般用Semantic Parsing(语义分析),语义分析有很多种,比如有用CCG、DCS,也有用机器翻译来做的。它得到了一个句子的逻辑表示,根据逻辑表示再到知识库里去查,查到这个结点是什么,关系是什么等,通过这种方式,自然而然就查到了。 还有一种办法就是最近几年流行的 信息检索方法 。比如,一个问题“where was Barack Obama born ?”这句话里出现的了一个实体——Obama,假设这个知识库是完备的,那么系统就会判断答案一定是跟Obama关联的某个结点,这样就可以到知识库里以Obama为半径,把跟它有关的词全部挖出来,然后系统要算相似度,相似度算的时候有一种办法,是把这个知识图谱的某一个知识单元用自然语言表征出来,也可以用词嵌入做一个多维向量表示。这时候做一个Ranker跟当前的问题算一个距离,距离近的就是它的答案。我们也将这些技术运用在了微软小冰里,比如小冰回答问题,跟你聊天等等。 作者:微软亚洲研究院 链接:https://www.zhihu.com/question/23952075/answer/161605738 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 来源: https://www.cnblogs

《敏捷软件开发》读书笔记(3)

倾然丶 夕夏残阳落幕 提交于 2020-01-11 04:04:07
《敏捷软件开发》读书笔记(3) 书中设计模式的汇总 命令类模式,分离执行和定义 CMD模式 其实是事件-事务绑定的模型: 可以用事件驱动,只要收到事件,执行绑定到事件对应的CMD对象.do方法就行,对于真正执行的事情无感知。解除了系统的逻辑互联关系和实际连接关系的设备之间的耦合。 事务型操作,把验证和执行分离,由执行框架完成验证和执行操作。解除了获取数据、验证数据、执行数据操作这种空间耦合,同时也可以在执行时间上进行解耦。扩展可以增加undo接口,系统把CMD对象压入堆栈,在进行回退的时候调用undo。 整体上就是把程序算法或者业务逻辑,和程序的实际控制执行解耦,有点像函数式编程。 ACTIVE OBJECT模式 这部分没看懂,似乎是多线程任务执行引擎,可以把CMD对象放回到引擎列表中。这种类型的线程任务是RTC线程。 复用算法,分离业务逻辑的模式 TEMPLATE METHOD模式 把算法的控制和逻辑分离,通用算法封装到基类,不需要理解的逻辑部分交给子类实现,比如冒泡排序。(其实不一定用继承,可以用组合),注意防止滥用。 STRATEGY模式 相比TEMPLATE METHOD,更好的解除了具体实现和算法的耦合,使用接口+组合,而不是继承,能提高具体实现的复用性,优先使用。 统一对外接口,隐藏策略的模式 FACADE模式 封装组件对外的策略和约束

项目管理之授权,拿什么信任你,我的兄弟!

做~自己de王妃 提交于 2020-01-11 00:08:25
项目管理之授权,拿什么信任你,我的兄弟 作者: 张子良 版权所有,转载请注明出处   刚刚遭遇一个失败的项目,在遭遇和经历两个词之间我有点犹豫,最后还是选择了遭遇。这是一个外包项目,是的,外包项目,不过我们是乙方(相对的甲方),而我就是这个悲催的乙方的项目经理。先介绍一下项目的情况,整个项目分为三个部分,界面子系统、业务子系统和数据子系统(专业名称替代品,有些东西不方便说),各系统之间采用SOA架构设计,采用通讯中间件作为连接的桥梁和纽带。原计划界面子系统由我们进行开发,业务子系统外包给第三方(丙方),数据子系统为我方现有系统,不做调整。说失败是因为,界面子系统在入场联调当天即被客户否定,然后两个周后被Pass,客户找了另外一家公司,另外两部分不做变化,吃到嘴里的肉被别人给抠了出来,这也是做项目以来的第一次。写此文,以做祭奠和反思。   一、输在起跑线,撒手的外包项目管理   三 月份确认项目由我负责跟进,业务子系统的外包已成定局,也已经启动,前期需求和分析都没有参与。得到高层明确的指示,完全外包出去,不要干涉具体的实施,现在看来这本身就已经是一个悲剧,后续的很多问题都是由此引起的。甲方和丙方直接沟通的结果,就是我被透明化处理,直接被无视,乐得清闲的懒惰和高层对外包方的盲目信任,成了一切罪恶的根源。期间4月份申请进入项目组,被高层以节约成本为由,婉拒。现在看来

mysql double write

故事扮演 提交于 2020-01-10 18:00:30
转自: https://www.cnblogs.com/cchust/p/3961260.html mysql double write (二次写)是mysql innodb存储引擎的一个重要特性,本人这两天翻阅了相关的资料,结合自己已有的知识,说说自己对double write的理解,供各位看官参考。 页断裂(partial write) double write技术innodb为解决页断裂(partial write)问题而生,所谓页断裂是数据库宕机时(OS重启,或主机掉电重启),数据库页面只有部分写入磁盘,导致页面出现不一致的情况。数据库,OS和磁盘读写的基本单位是块,也可以称之为(page size)block size。我们知道数据库的块一般为8K,16K;而OS的块则一般为4K;IO块则更小,linux内核要求IO block size<=OS block size。磁盘IO除了IO block size,还有一个概念是扇区(IO sector),扇区是磁盘物理操作的基本单位,而IO 块是磁盘操作的逻辑单位,一个IO块对应一个或多个扇区,扇区大小一般为512个字节。所以各个块大小的关系可以梳理如下: DB block > OS block >= IO block > 磁盘 sector,而且他们之间保持了整数倍的关系。比如我的系统各个块的大小如下,DB以mysql为例

Mycat 核心配置详解

泪湿孤枕 提交于 2020-01-10 14:57:59
先上官方文档: Mycat-doc Mycat 权威指南 常用配置文件间的关系 由上图可以看到 Mycat 的核心配置文件均采用xml格式,这几个配置文件的用途如下: server.xml :用于配置系统参数、用户信息、访问权限及SQL防火墙和SQL拦截功能等 schema.xml :用于配置逻辑库、逻辑表相关信息 rule.xml :如果使用了水平切分,就需要使用该文件配置切分规则 log4j2.xml :Mycat日志相关的配置,例如日志输出格式、日志级别等 应用连接Mycat服务时,Mycat首先会通过 server.xml 中的配置信息进行用户认证。用户通过验证后,所看到的逻辑库、逻辑表都是 schema.xml 中所配置的。当使用了水平切分时,Mycat会通过 rule.xml 里配置的规则来定位具体的物理数据库位置,从而完成写入/读取数据。 server.xml 配置详解 1、 system 标签 用于配置 Mycat 的系统参数,其格式如下: <system> <!-- ${key}表示配置属性的名称,${value}表示该配置属性的值 --> <property name="${key}">${value}</property> </system> 配置 Mycat 服务端口示例: <system> <property name="serverPort">3306<

MVC和经典三层架构

时间秒杀一切 提交于 2020-01-08 11:53:13
浅析MVC模式与三层架构的区别     三层架构和MVC是有明显区别的,MVC应该是表现模式(三个加起来以后才是三层架构中的UI层)。三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。 1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。 2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。 3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。 MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的UI层,也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。 MVC可以是三层中的一个表现层框架,属于表现层。三层和MVC可以共存。 三层是基于业务逻辑来分的,而MVC是基于页面来分的。 MVC主要用于表现层,3层主要用于体系架构,3层一般是表现层、中间层、数据层,其中表现层又可以分成M、V、C,(Model View Controller)模型-视图-控制器

Oracle的逻辑存储结构

孤人 提交于 2020-01-08 07:13:21
1 :概述 逻辑存储结构主要描述Oracle数据库的内部存储结构,即从技术概念上描述在Oracle数据库种如何组织、管理数据. Oracle的逻辑存储结构如下图所示: 图4 逻辑结构 从逻辑上来看:   1> 数据库是由一个或者多个表空间等组成   2> 一个表空间(tablespace)由一组段组成   3> 一个段(segment)由一组区组成   4> 一个区(extent)由一批数据库块组成   5> 一个数据库块(block)对应一个或多个物理块   6> 表空间是最大的逻辑单位,块是最小的逻辑单位   因此,逻辑存储结构是和操作系统平台无关的,是由Oracle数据库创建和管理的. 1.1 数据库块 数据库块(Database Block)是数据库使用的I/O最小单元,又称逻辑块或ORACLE块。一个数据库块对应一个或多个物理块,块的大小由参数DB_BLOCK_SIZE确定。块的大小是操作系统块大小的整数倍。以Win2K为例,操作系统块(OS block)的大小为4kb,所以Oracle Block的大小可以是4kb,8kb,16kb等等。如果块的大小为4kb,某表每行的数据是100 bytes.,如果某查询语句只返回1行数据,那么,在将数据读入到数据高速缓存时,读取的数据量时4kb而不是100 bytes. 数据块由以下五部分组成 标题 :包括通用的块信息,如块地址