屏幕的尺寸

2016-1-19 chenhui 绘图

一块屏幕有三个参数: 寸,屏幕的物理大小。 分辨率,即一块屏幕上有几个像素点。 PPI(DPI),对角线的像素点数 / 屏幕大小。 由于分辨率的不同,这会导致以像素为单位的长度,会在不同分辨率的屏幕上显示不同的长度,这是因为相同长度的屏幕,高分辨率的屏幕包含了更多的像素点。也这是因为如此,Andro...

阅读全文>>

评论(0) 浏览(160)

数据的检索和排序

2016-1-18 chenhui SQL

我们可以使用 SELECT 语句来从数据库的一个或多个表中检索数据,我们需要提供给 SELECT 的必要参数有两个:数据源和检索规则。 SELECT 的语法并不复杂,下面给出一个概括了多数使用情况的语法:         SELECT <需要搜索的字段列表> FROM <数据来源> [W...

阅读全文>>

评论(0) 浏览(184)

Makefile 的 VPATH 和 vpath

2016-1-18 chenhui Makefile

有时候我们的项目中有多个子目录,如下: root-     Makefile     src-         main.c     header-     ...

阅读全文>>

评论(0) 浏览(235)

Makefie 隐含规则

2016-1-18 chenhui Makefile

所谓的隐含规则,就是一些惯例,比如说 .c 文件编译成 .o 文件就不需要我们自己编写 gcc 命令,Make 会自动执行。隐含规则是为了方便编写 Makefile 而出现的。我个人认为,隐含规则没有存在的必要,其增加学习成本,而又少写不了几个字母,更何况现在还有自动生成 Makefile 的工具,徒增复杂度而已。 隐含规则的使用如下: foo.o:foo.c 这...

阅读全文>>

评论(0) 浏览(159)

Makefile 变量和宏

2016-1-18 chenhui Makefile

Makefile 和其他脚本语言一样,也可以定义变量,其定义和使用方法如下: .PHONY: clean obj := main.c hello: $(obj) gcc -o hello $(obj) clean: rm -rf hello 有时候我们能看到一些不一样的变量定义符号,有 ' := '、' = '、' += '、' ?= ' 这四种。 ...

阅读全文>>

评论(0) 浏览(201)

Makefile 伪目标

2016-1-18 chenhui Makefile

在 freehui.com/post/213 中我们讲到了一种 Makefile 的形式,那就是只有目标和命令,但不存在依赖,如下: clean: rm -rf *.o 一般来说,这种形式表示 clean 这个目标的目的是为了执行一些命令,看起来这么写没有太大的问题。但是,上文又说过,Make 会检查是否存在和目标同名的文件,如果存在,那么他就不会被执行。所以如果刚好目录里...

阅读全文>>

评论(0) 浏览(164)

Makefile 的组成

2016-1-17 chenhui Makefile

Makefile 的文件名一般是 "Makefile" 或者 "makefile",一个最简单的 Makefile 如下: hello: main.c gcc main.c -o hello 上面这个 Makefile 是一个最为简单的 Makefile,我们可以使用下面的命令来启动他。 make 他先检查当前文件下有没有 main.c 这个文件,如果有,就执行 gcc main...

阅读全文>>

评论(0) 浏览(216)

反向代理和负载均衡

2016-1-16 chenhui Nginx

所谓的反向代理,就是Nginx服务器作为主服务器,客户端把请求发送给 Nginx,然后 Nginx 把请求转发给其他服务器。 配置反向代理很简单,如下设置即可: location / { proxy_pass http://192.168.1.101 } 这样他就把请求转发给 192.168.1.101 这个服务器了。 而所谓的负载均衡,其实就是...

阅读全文>>

评论(0) 浏览(11)

根文件系统和 Busybox

2016-1-15 chenhui 移植

系统启动到最后时,会挂载根文件系统到系统中,该文件系统的根目录成为 init 内核线程的工作目录和根目录,然后内核会从该文件系统中读出 init 可执行文件,并让 init 内核线程去执行他,执行成功后,init 内核线程转身一变,变成了正宗的一号进程。 在这个流程中,我们要考虑两个大的问题: 我们知道根文件系统的挂载原理,但是根文件系统本身是怎么做出来的? ...

阅读全文>>

评论(0) 浏览(257)

虚拟主机和URL重写

2016-1-15 chenhui Nginx

Nginx 的配置文件路径为 /usr/local/nginx/conf/nginx.conf  如果我们需要对 Nginx 路径进行重写,那么就要编辑这个配置文件。 这个配置文件下有如下这种格式的内容: http{ #虚拟主机1 server{ listen 81; server_name ww...

阅读全文>>

评论(0) 浏览(11)

处理连接请求

2016-1-14 chenhui Nginx

首先 Nginx 要知道监听的 IP 和 Port,这两个是在配置文件中定义的,并在 ngx_http_core_listen() 中解析,最后调用 ngx_http_add_listen() 把这些信息保存在 http 核心配置的 ngx_http_core_main_conf_t 的 ports 数组字段内。 如果不进行配置,那么他会使用默认的 80 端口和主机上的任意IP地...

阅读全文>>

评论(0) 浏览(178)

Linux 内核移植之流程

2016-1-14 chenhui 移植

当我们为某一块单板移植 Linux 内核时,最先需要考虑的是 Linux 是否已包含了单板上使用的处理器的驱动,也就是 BSP。 如果没有包含,那也可以看一下相近的处理器,当然这必须是有继承关系的处理器,因为这样的话我们可以直接修改这个处理器的 BSP 来实现移植。 如果存在,那就好办了,我们直接使用这个处理器的配置进行编译然后烧写到单板里运行,一般是 machine_de...

阅读全文>>

评论(0) 浏览(172)

Nginx 的模块

2016-1-13 chenhui Nginx

Nginx 有四种模块: handler,完成客户端的请求,并产生响应数据。 filters,对 handler 产生的数据进行过滤(增/删/改)。 upstream,如果存在其他后端服务器(如PHP),那么 Nginx 则使用这种模块进行转发。 load-balance,负载均衡。 ...

阅读全文>>

评论(0) 浏览(149)

Linux 内核移植之 BSP

2016-1-13 chenhui 移植

本文通过 S3C2440 的 BSP 的部分实现来介绍 Linux 内核移植的 BSP 部分,S3C2440 是 ARM 初学者大多会经历的一个芯片,所以通过他来学习是比较好的 。 U-Boot 在启动内核时,会传入几个参数,其中一个是存放在 R1 寄存器的 " 机器代码 ",这个机器代码非常重要,他告诉内核当前主板应该使用哪个 BSP。Linux 启动后(汇编),会在...

阅读全文>>

评论(1) 浏览(871)

SLAB分配器

2016-1-12 chenhui 内存管理

Linux 根据内存的访问速度把不同的内存按照节点进行分类,而一个节点的内存又通过内存管理区分成 DMA 内存和 NORMAL 内存,每个内存管理区又通过伙伴系统把自己的内存分为各种大小的内存块,伙伴系统的这些内存块大小不一,由一个或多个页框组成。一个页框的大小是 4K,这个大小是不可改变的,这就会导致一个问题,那就是如果我需要分配 10 个字节的内存,难道你也要给我一个页框(4K)吗?这很显然是...

阅读全文>>

评论(0) 浏览(201)

master 进程和工作进程的交互

2016-1-12 chenhui Nginx

master 进程和工作进程使用 socketpair 创建的套接字来进行通信。这个 socketpair 相当于全双工管道,父进程在创建子进程前调用这个函数并传入两个 fd,然后子进程继承父进程的 fd 后,就可以使用其中一个和父进程进行通信了(父进程使用另一个)。 工作进程的创建是在 ngx_spawn_process() 函数中实现的: ...

阅读全文>>

评论(0) 浏览(170)

Nginx 的工作进程

2016-1-11 chenhui Nginx

Nginx 的进程分为监控进程和工作进程以及缓存进程,监控进程是 Nginx 的主进程,主要是作为用户和工作进程的中转站,并维护工作进程的数量,如果有工作进程被杀死,则重新建立一个。工作进程则往往有多个,是被监控进程 fork() 出来的,用于处理实际的业务逻辑。而缓存进程,自然就是处理缓存工作的。 当然,Nginx 也可以单进程运行,此时主进程作为工作进程。 ...

阅读全文>>

评论(0) 浏览(276)

Nginx 的编译安装

2016-1-11 chenhui Nginx

可以在 nginx.org/download 下载适合的 Nginx 版本,下载后解压,能看到下列目录结构(前六个是目录): auto //编译时用到的环境检测代码 conf //默认配置文件 contrib //一些脚本 html //两个静态页面 man //Man手册 src //源代码 CHA...

阅读全文>>

评论(0) 浏览(147)

定时器

2016-1-7 chenhui 零散笔记

有三种方法实现定时器。 方法一,Handler+Thread。其实就是线程运行的时候,睡眠自己以达到定时效果。 public class HanderDemoActivity extends Activity { TextView tvShow; @Override public void onCreate(B...

阅读全文>>

评论(0) 浏览(148)

得到当前位置

2016-1-6 chenhui 零散笔记

Android 为 GPS 提供了一个 LocaltionManager 类,GPS 定位相关的服务、对象都由该对象来生成。 可以调用以下代码来得到一个 LocaltionManager 对象。 LocaltionManager lm =  getSystemService(Context.LOCATION_SERVICE); 一旦得到了 Locati...

阅读全文>>

评论(0) 浏览(134)

Copyright ©2015-2016 freehui All rights reserved