BigNercCoding

macOS 跨进程渲染

去年接到一个研究项目:在 macOS 下实现跨进程渲染。背景现有的单进程应用已经不堪重负,我们希望能把底层 Video/Image 模块单独拆分到一个进程。 这样既能实现最大化利用处理器的性能,也能实现模块之间更好的拆分处理。 在 Window 平台中我们可以通过在进程间传递 HWND 的句柄实现跨进程渲染,这样就可以将不同进程的 UI 组织在一起,从表象上看起来和单进程几乎没有区别。...

如何动态调用 C 函数

动态语言和静态语言的区别 动态编程语言是高级编程语言的一个类别,在计算机科学领域已被广泛应用。它是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。 在编译时,变量的数据类型就可以确定的语言,大多数静态语言要求在使用变量之前必须声明数据类型。 如何实现 C 语言的动态调用 正常情况下的调用: //main.m voi...

Express 实战(八):利用 MongoDB 进行数据持久化

毫无疑问,几乎所有的应用都会涉及到数据存储。但是 Express 框架本身只能通过程序变量来保存数据,它并不提供数据持久化功能。而仅仅通过内存来保存数据是无法应对真实场景的。因为内存本身并不适用于大规模的数据储存而且服务停止后这些数据也会消失。虽然我们还可以通过文件的形式保存数据,但是文件中的数据对于查询操作明显不友好。所有,接下来我们将学习如何在 Express 中通过 MongoDB 数...

Express 实战(七):视图与模板:Pug 和 EJS

前面的内容大都是关于 Express 框架自身的内容,包括:Express 简介、工作原理、框架特点。在系列的最后,我们将把注意力放到 Express 框架周边工具链上。学习如果使用这些工具来拓展 Express 框架的功能。 首先,本文我们将会讨论视图模版引擎的使用。通过这些模版引擎我们能过动态的生成 HTML 内容。在前面我们已经使用过 EJS 并使用变量语法实现内容的注入。但是这些内...

Express 实战(六):构建 API 接口

在介绍了那么多 Express 核心概念之后,接下来的文章将会把注意力放在如何构建一个真实的应用上。这里我们先从构建应用 API 接口开始。从某种程度上来说几乎所有的软件应用其背后都是由一组强大的 API 驱动。 其实 API 就是一种代码之间交互的一种方式,它既可以是在程序内部也可以是通过网络的跨机器进行。例如,Express 中的 app.use 和 app.get 就属于在内部使用 ...

Express 实战(五):路由

作为 Express 中的最大特点之一,路由让你可以将不同的请求映射到不同的中间件中。这一章我们将会深入学习这部分的内容,另外还包括如何在 Express 使用 HTTPS 以及部分 Express 4 中的新特性等等。当然,学习过程还是通过示例应用和代码的形式进行展现的。 什么是路由? 假设,现在你尝试通过 example.com/someone 访问某人的推特或者微博主页,你会发现该...

Express 实战(四):中间件

原生 Node 的单一请求处理函数,随着功能的扩张势必会变的越来越难以维护。而 Express 框架则可以通过中间件的方式按照模块和功能对处理函数进行切割处理。这样拆分后的模块不仅逻辑清晰,更重要的是对后期维护和开发非常有利。 本文将会详细介绍 Express 的使用,其中主要内容包括: 中间件是什么? 中间件栈以及请求处理的工作流。 中间件的使用。 如何实现自己的中间...

Express 实战(三):Express 基础

Express 框架的初衷是为了拓展 Node 内置模块的功能提高开发效率。当你深入研究后就会发现,Express 其实是在 Node 内置的 HTTP 模块上构建了一层抽象。理论上所有 Express 实现的功能,同样可以使用纯 Node 实现。 在本文中,我们将基于前面的 Node 内容去探究 Express 和 Node 之间的关系,其中包括:中间件和路由等概念。当然,这里只会进行一...

Express 实战(二):Node.js 基础

在上一篇文章中,我们简单的介绍了 Node.js 。了解到它基于 JavaScript、天生异步、拥有大量的第三方类库。本文将会在之前的基础上,对 Node.js 进行更深入的介绍。其中主要内容包括: Node 的安装 如何使用第三方模块生态 第三方模块的安装 一些简单的使用示例 开发过程中的一些建议和技巧 在此之前,我假设你已经掌握了 JavaScript 基础...