代码改变世界

ARM的栈指令

2016-03-07 13:09 by Florian, 275 阅读, 收藏, 编辑
摘要: ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向 :ARM将向高地址增长的栈称为 递增栈 (Descendent Stack),将向低地址增长的栈称为 递减栈 (Acendant Stack) 栈指针的指向位置 :ARM将栈指针指向栈顶阅读全文

nginx常用代理配置

2016-02-17 11:55 by Florian, 799 阅读, 收藏, 编辑
摘要: 因为业务系统需求,需要对web服务作nginx代理,在不断的尝试过程中,简单总结了一下常见的nginx代理配置。 1. 最简反向代理配置 在http节点下,使用upstream配置服务地址,使用server的location配置代理映射。 upstream my_server { server 10阅读全文

使用shell/python获取hostname/fqdn释疑

2016-01-24 00:42 by Florian, 427 阅读, 收藏, 编辑
摘要: 一直以来被Linux的hostname和fqdn(Fully Qualified Domain Name)困惑了好久,今天专门抽时间把它们的使用细节弄清了。 一、设置hostname/fqdn 在Linux系统内设置hostname很简单,如: $ hostname florian 如果...阅读全文

提问的智慧

2015-10-15 14:43 by Florian, 96 阅读, 收藏, 编辑
摘要: 提问的智慧英文原文:Eric S. Raymond,翻译:王 刚引言在黑客的世界里,你所提技术问题的解答很大程度上取决于你提问的方式与解决此问题的难度,本文将教你如何提问才更有可能得到满意的答复。开源程序的应用已经很广,你通常可以从其他更有经验的用户而不是黑客那里得到解答。这是好事,他们一般对新手常...阅读全文

ARM汇编指令调试方法

2015-10-09 23:45 by Florian, 1004 阅读, 收藏, 编辑
摘要: 学习ARM汇编时,少不了对ARM汇编指令的调试。作为支持多语言的调试器,gdb自然是较好的选择。调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控。为了在x86平台上执行ARM指令,可以使用qemu模拟器执行ARM汇编指令。 一、准备ARM汇编程序 首...阅读全文

高性能IO模型浅析

2014-11-14 23:39 by Florian, 23257 阅读, 收藏, 编辑
摘要: 高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(BlockingIO):即传统的IO模型。(2)同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的N...阅读全文

使用vbs脚本进行批量编码转换

2014-06-11 15:52 by Florian, 1430 阅读, 收藏, 编辑
摘要: 使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看分析在Linux系统下开发的项目代码,我们知道Linux系统中文本文件默认编码格式是UTF-8,而Windows中文系统中的默认编码格式是Gb2312。系统内的编码格式有所区别倒无伤大雅,关键的是SourceInsigh...阅读全文

Linux模块机制浅析

2014-05-15 21:47 by Florian, 4331 阅读, 收藏, 编辑
摘要: Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核的目的。一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析。 模块的Hello World! 我们通过创建一个简单的模块进行测试。首先是源文件main.c和Makefile。 f...阅读全文

源文件移动后gdb不显示代码的原因

2014-05-15 14:44 by Florian, 2132 阅读, 收藏, 编辑
摘要: 源文件移动后gdb不显示代码的原因 问题 我们从一个最简单的C语言程序开始。源文件main.c在用户目录gdb文件夹下。 florian@florian-pc:~/gdb$ cat main.c int main() { return 0; }; 然后将源文件编译为...阅读全文

Linux的原子操作与同步机制

2014-04-09 18:45 by Florian, 9111 阅读, 收藏, 编辑
摘要: Linux的原子操作与同步机制 并发问题 现代操作系统支持多任务的并发,并发在提高计算资源利用率的同时也带来了资源竞争的问题。例如C语言语句“count++;”在未经编译器优化时生成的汇编代码为。 当操作系统内存在多个进程同时执行这段代码时,就可能带来并发问题。 假设count变量初始值为0。进程1执行完“mov eax, [count]”后,寄存器eax内保存了count的值0。此时,进程2被调度执行,抢占了进程1的CPU的控制权。进程2执行“count++;”的汇编代码,将累加后的count值1写回到内存。然后,进程1再次被调度执行,CPU控制权回到进程1。进程1接着执行,...阅读全文