Hprose 提供了一套自己的序列化格式用来实现高效的跨语言跨平台的数据存储和交换。该序列化格式,在 hprose for javascript 中被实现为以下几个对象: hprose.Tags hprose.ClassManager hprose.BinaryString hprose.Writer hprose.Reader hprose.Formatter 其中 hprose.Tags 对象
性能优化 软件层面的优化 PHP 开启OPCache Apache 根据服务器的操作系统,进行MPM的参数调优 CDN 静态资源采用CDN,推荐使用七牛,利用其镜像功能能快速把资源目录d/放置到CDN上 MySQL 参数调优 采用缓存 把不经常变化的内容缓存起来 content 标签设置cache时间 position 标签设置cache时间 页面预生成 生成首页
什么是索引? 数据库的索引与书籍的索引类似,有了索引就不需要翻转整本书。数据库的索引跟这个原理一样,首先在索引中找,在索引中找到条目以后,就可以直接跳转到目标文档的位置,从而使查询速度提高几个数据量级。 不使用索引的查询称为全表扫描(这个术语来源于关系型数据库),也就是说,服务器必须查找完一整本书才能找到查询结果。这个过程跟我们在一本没有索引(目录)的书中查找信息很像:从第一页开始一直读完整本书。
YOG2 是基于 fis 构建的 Node.js UI中间层解决方案,因此整个框架都深度契合 fis 的前端工程化概念。在 YOG2 中你可以享受到完整的 fis 解决方案的前端优势。 目录规范 在 YOG2 中我们提供了一套固定的目录规范方便开发者快速开发,在了解了 fis 的配置原理后,也可以方便的调整这套目录规范。 ├─client # 前端代码 │ ├─p
即便是同一個專案,有時候我們也會希望可以傳遞一些不同的變數來當做該次的建置參數。這時候我們就可以利用 Jenkins 的參數化建置來幫我們增加彈性。 專案組態設定 建立一個新的 Free-Style 專案作為練習,任意命名完後進入專案組態。接著,在 General 的設定下勾選參數化建置的選項,如下圖所示,可以看到在這裡我們可以自由選擇各種不同的參數型態。 無論選擇哪一種參數型態,Jenkins
编辑器扩展系统中内置的多语言方案允许你配置多份语言的键值映射,并根据编辑器当前的语言设置在插件界面显示不同语言的文字。 要启用多语言功能(以下简称 i18n),请在扩展包的目录下新建一个名叫 i18n 的文件夹,并为每种语言添加一个相应的 JavaScript 文件,作为键值映射数据。数据文件名应该和语言的代号一致,如 en.js 对应英语映射数据。 下面是键值映射数据源的例子: // en.js
泛接口实现方式主要用于服务器端没有API接口及模型类元的情况,参数及返回值中的所有POJO均用Map表示,通常用于框架集成,比如:实现一个通用的远程服务Mock框架,可通过实现GenericService接口处理所有服务请求。 在 Java 代码中实现 GenericService 接口: package com.foo; public class MyGenericService impleme
泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参数及返回值中的所有 POJO 均用 Map 表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过 GenericService 调用所有服务实现。 通过 Spring 使用泛化调用 在 Spring 配置申明 generic="true": <dubbo:reference id="barService" interf
你已经有了基本的页面布局和需要用的CSS以及JS文件。现在我们需要初始化我们的应用,比如在 my-app.js中 var myApp = new Framework7(); 上面这个例子中我们使用了 myApp 作为变量名存储 Framework7 初始化之后的实例。 这样初始化非常简单,但是Framework7 也提供了更多个性化的定制,只需要在初始化的时候传入一个配置对象即可。 var myA
在app开发中,若要使用HTML5+扩展api,必须等plusready事件发生后才能正常使用,mui将该事件封装成了mui.plusReady()方法,涉及到HTML5+的api,建议都写在mui.plusReady方法中。如下为打印当前页面URL的示例: mui.plusReady(function(){ console.log("当前页面URL:"+plus.webview.cu
自动版本化 因为Subversion客户端不是完整的DeltaV客户端,Subversion服务器也不是完整的DeltaV服务器,但仍有值得高兴的交互特性:叫做自动版本化。 自动版本化是DeltaV标准中的可选特性,一个典型的DeltaV服务器会拒绝一个对版本控制之下文件的PUT操作,为了修改一个版本控制下的文件,服务器只会接受一系列正确的版本请求:例如MKACTIVITY、CHECKOUT、PU
初始化检出 大多数时候,你会使用checkout从版本库取出一个新拷贝开始使用Subversion,这样会在本机创建一个项目的“本地拷贝”,这个拷贝包括了命令行指定版本库中的HEAD(最新的)版本: $ svn checkout http://svn.collab.net/repos/svn/trunk A trunk/Makefile.in A trunk/ac-helpers A
自动化测试 如果你想构建可靠的高质量的软件,自动化测试将是你工具箱里面非常关键的一个部分,它帮助你减少手工测试的代价,提高你的开发小组重构已有代码的能力。 自动化测试的类型 并非所有的自动化测试都是相似的,他们通常在作用域、实现方式和执行时间上有所差异,我把他们分成三种类型的测试:单元测试、集成测试和功能测试。 单元测试用于测试你代码的最小单元,在基于java的项目中这个单元就是一个方法(met
项目模块化 在企业项目中,包层次和类关系比较负责,把代码拆分成模块是一个比较困难的任务,因为这需要你清晰的划分功能的边界,比如把业务逻辑和数据持久化拆分开来。 解耦和聚合 但你的项目符合高内聚低耦合时,模块化就变得很容易,这是一条非常好的软件开发实践。一个很好的模块化的例子就是Spring框架,spring框架提供了很多服务,比如MVC web框架、事务管理器、JDBC数据库连接等,下图展示了Sp
想象一下没有自动化构建工具的场景 大部分的软件开发者都会面临下面的情形: 让IDE完成所有的工作. 用IDE来编码,导航到源代码、实现新特性、编译代码、重构代码、运行单元测试,一旦代码写完了,就按下编译按钮。一旦IDE提示没有编译错误测试通过,然后就把代码放入版本控制系统中以便与其他人分享。IDE是非常强大的工具,但是每个人都要安装一套标准的版本来执行上面介绍的任务,当你需要使用一个只有新版IDE