Fenrier Lab

C语言编译与 intel MKL 连接

C语言编译过程 一段c语言源码最终编译成可执行程序要经历多个阶段,包括预处理阶段、编译阶段、汇编阶段以及链接阶段。比如将 hello.c 代码编译成可执行文件将经历如下图所示的过程: //hello.c #include <stdio.h> int main() { printf("Hello world"); } 其中,预处理阶段将源程序使用符号 # 依赖的内容直接复制到代码中,并生成以 .i 为后缀的新文件。对应的 gcc 命令为 gcc -E hello.c -o hello.i 编译阶段将文本文件 hello.i 翻译成汇编语言程序 hello.s ,这也是一个文本文件,其中的内容是汇编代码。 gcc -S hello.i -o hello.s...
点我阅读更多...

Jigsaw 项目--模块系统快速导引(中文翻译)

原文地址:Project Jigsaw: Module System Quick-Start Guide。 本文为了开发者快速入门 Java 模块化而介绍几个简单的例子。 在例子中,文件路径使用斜杠,且用冒号分隔不同的路径。对于 Windows 开发者,应该使用反斜杠标志文件路径,使用分号作为文件分隔符。 Greeting Greeting world 多模块编译 打包 缺失 requires 或者缺失 exports 服务 链接器 Greeting 第一个例子是一个打印出 “Greetings!” 的简单模块,这里命名为 com.greetings. 模块包含两个源文件,即模块声明(module-info.java)和主类。 根据惯例,源码...
点我阅读更多...

笔记--Java Logger

使用日志,首先就是要拿到日志对象,然后再指定日志文件存储路径嘛。不知道怎地,搞半天没在网上找到一篇关于怎么通过配置文件指定日志存储目录的文章。最后发现这篇博文 Java Logging: Handlers 才搞定这个问题。 首先获取 Logger 实例对象 Logger logger = Logger.getLogger("myLog"); 这里的参数为日志名称,在其他地方如果需要此日志对象,可以通过名称来获取。然后使用 LogManager 来读取配置文件 try { LogManager.getLogManager() .readConfiguration(new FileInputStream(new File("path/to/lo...
点我阅读更多...

Delaunay 网格划分算法

将一块区域进行网格化是计算几何中的一项重要议题,基于化繁为简的思想,任何复杂的模型都能分解成简单的几何元素。在应用上,整体的非线性行为,便可以由局部的线性拼接得到。 举个简单的例子,一段向上的楼梯,老远看去就是一条斜向上的直线,但实际上是由一段段水平和竖直的线段连成的。从某种意义上讲,将斜线表述成水平线和竖直线的组合降低了描述的层次,但代价是我们需要维护大量的低层次信息。或许对于一段斜直线来讲,这种代价并不值得,但对于更高层次的复杂信息,局部简化是我们目前唯一的办法。 定义 Delaunay 网格划分不是一种具体的算法,而是一种规范,它确保了网格中的三角形的形状处于可控的状态。这是网格划分中不得不考虑的问题,如果同一个单元中的节点离得老远,那么在插值的时候,其误差便没有保证,因为...
点我阅读更多...

SMO 算法介绍

根据前面对支持向量机的介绍,需要求解的优化问题为 \[\max\limits_\alpha \quad W(\alpha) = - \frac 1 2 \sum_{i,j = 1}^n \alpha_i \alpha_j y_i y_j<x^{(i)}, x^{(j)}>+ \sum_{i=1}^n \alpha_i\] \[\begin{aligned} s.t. \quad & \sum_{i = 1}^n \alpha_i y_i = 0\\ &y_i (\omega^T x^{(i)} + b) > 1 \quad \Rightarrow \quad \alpha_i = 0\\ &y_i (\omega^T x^{(i)} + b...
点我阅读更多...