centOS 安装配置Jenkins
我是在阿里云的ECS上部署Jenkins的,ECS无法提供图形界面的显示,这带来了几个问题:
文件下载和传输不方便
采用Xftp等ftp工具。配置Jenkins要访问localhost,ECS上没办法使用浏览器
利用公网IP,在其他机器上访问和控制。
在看一些c语言代码时经常突然冒出一些宏,比如__FILE__
、__TIME__
等。前面也没有出现相关的定义,一直都没想着弄清楚是什么。这次又看到了这些宏,花了一点时间看了下是什么。
发现这些其实都是编译器内置的宏定义,所以代码中没有给出定义就能直接使用。这样的宏还不少,列出几个常见的,例如:
1 | #include <stdio.h> |
输出结果是:
关键字__attribute__
可以用来声明变量、函数参数、结构体、共用体或者C++中类成员的特殊属性。使用方法是在关键字__attribute__
后跟着用两个小括号包起来的属性声明。例如:
1 | struct a { |
这个例子中声明结构体a
的特殊属性——字节对齐,((packed))
这个属性声明是指最小的对齐方式,即1Byte对齐。
1 | #define PGSIZE 1024 |
这个例子也是字节对齐,但是这次是我们自定义的对其方式:按照1024Byte进行字节对齐。
这个题目是MIT 6.006算法课中提到的第一个问题,也就是一维数组的Peak Finder问题。如果感兴趣看一看一下我的MIT 6.006 Lecture 1-b 笔记。
在对比不同解题思路的同时,我还对比了不同语言(c、C++、Python)。能够非常明显的看出在效率方面:c > C++ > Python;时间复杂度最高的简单算法用c语言写的效率也要大于C++写的低时间复杂度的算法,更不用说Python。当然如果看简洁程度,Python还是更优。详细情况请看具体实现。
A peak element is an element that is greater than its neighbors.
峰值元素是指比相邻元素大的元素
Given an input array
nums
, where nums[i] $\neq$ nums[i+1], find a peak element and return its index.给定输入数组
nums
,规定nums[i]$\neq$nums[i+1]。从该数组中找到一个峰值元素并返回它的索引值。The array may contain multiple peaks, in that case return the index to any one of the peaks is fine.
给定的数组中可能含有多个峰值,只需找到其中任意一个即可。
You may imagine that nums[-1] = nums[n] = $-\infty$.
你可以假设nums[-1] = nums[n] = $-\infty$。
Python丰富的库是它的优势之一,但是对于我这样的强迫症来说却多少有些不太友好。安装的库越来越多,加上各种库之间的依赖关系。即使能够方便地查看,也会觉得混乱。更不要说还有安装失败的时候,强迫症心里表示很不舒服。
如果你在使用Python,也像我一样是个强迫症,那么救星来了。