摘要:
很多应用需要客户首先进行注册,然后使用用户名、密码进行验证,之前在为一个分布式系统添加认证模块的时候,遇到一个问题,这里进行简要的分析。认证的两种主要形式:1. 单机登录认证:如windows、linux系统用户登录,这种应用的程序代码通常是不公开的,用户要正常的使用系统,必须越过这一障碍。2. 网络登录认证:如QQ、飞信等聊天软件的用户登录,这种应用的代码可以是开源的,因为即使即使代码开源,hacker去掉了客户认证的代码,重新编译运行,服务器发现记录客户端的登录状态为未登录,客户端还是不能继续工作。项目中遇到的问题:客户端通过挂载后,像使用本地文件系统一样使用远程文件系统。登录认证在挂载的 阅读全文
摘要:
对于很多服务来说,在同一个服务器上只能运行一个实例,那么通过什么方法来保证程序同一时刻只有一个实例运行呢?通过编写shell脚本来管理程序的启动、停止是个不错的方法。在启动时,shell脚本会创建进程标识文件(存储正在运行实例的pid)以表明已经有实例在运行,如果文件已存在,则说明已有实例在运行,不需要做任何事;在退出时,shell脚本会删除进程标识文件,表明没有实例运行。shell脚本管理方法在应用程序之上再包了一层,那么能不能直接在程序开始运行时自己判断是否有实例在运行呢,答案是肯定的。原理其实差不多,还是要借助公用资源---文件,当然不仅仅是文件而已,还需要文件锁的支持。大致思路是这样的 阅读全文
摘要:
实现linux登录验证的程序,要考虑两个部分,第一是用户名、密码的输入;第二是用户、密码的验证,关于第二部分的机制已经在http://blog168.chinaunix.net/space.php?uid=20196318&do=blog&id=94771中讲到。而第一部分的难点则在于如何在输入密码时不回显输入的字符,这就需要更改终端的属性,涉及终端IO的编程,主要用到tcgetattr和setattr两个函数,通过取消终端的ECHO标记,即可禁用终端回显,在密码输入处理之后,要记得恢复终端原来的属性,避免影响到其它的进程。终端IO处理大致过程如下:structtermios 阅读全文
摘要:
在linux系统下创建守护进程的原理及步骤在文章(链接如下)中介绍过。http://blog168.chinaunix.net/space.php?uid=20196318&do=blog&id=28738其实,linux提供了daemon函数用于创建守护进程,实现原理与上文中介绍的是一样的。#include <unistd.h>int daemon(int nochdir, int noclose);1.daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。2.当nochdir为0时,daemon将更改进城的根目录为root(“/”)。3.当 阅读全文
摘要:
本文更正http://blog168.chinaunix.net/space.php?uid=20196318&do=blog&id=28742中出现的几个错误。错误1:对salt的描述;错误2:密码验证方式。花了点时间研究了一下linux的密码认证机制,当系统启动出现login时,用户登录的过程是如何得到验证的。首先linux系统里管理用户及密码的两个重要的文件,/etc/passwd, /etc/shadow。/etc/passwd包含各个用户的信息,linux平台包含七个字段,各个字段间用冒号隔开,分别是:用户名:密码:用户id:组id:用户描述:用户家目录:用户的登录s 阅读全文
摘要:
ldd查看应用程序链接了哪些动态库。 nm列出目标文件中包含的符号信息。size列出各个段的大小及总的大小。strings列出文件中的字符串。readelf读取elf文件的完整结构。objdump导出目标文件的相关信息(elf文件相关工具的源头)。gdb对文件的执行过程进行调试分析,设置断点(b)、单步执行(n)、函数调用追踪(bt)、反汇编(disassemble)。strace跟踪程序中的系统调用及信号处理信息。LD_DEBUG通过设置这个环境变量,可以方便的看到 loader 的加载过程(包括库的加载,符号解析等过程),使用【LD_DEBUG=help 可执行文件路径】可查看使用帮助。L 阅读全文
摘要:
上周在做测试的时候,我的VirtualBox的磁盘文件不幸损坏,不能打开了,又没有做备份,所以只好放弃VB。改用以前用的VMware,结果用了两天除了意想不到的问题,VMware产生的文件居然占据了整个分区,每次都提示系统没有足够的空间,VMware不能启动,分区有40+G,被占满主要是做了多次快照(后来删除了快照,相关的文件没有清理掉,VMware一直卡在那里),额外建立了几个磁盘(配置MD时新建的,并且所有的磁盘的空间都是创建时分配的,而不是动态增长)。在解决问题时误删了一些文件,系统提示找不到启动必须的文件xxx,其实应该删除后来新建的磁盘的,可惜当时有点急,那是已经是周三了,周四有事, 阅读全文
摘要:
Man page of xargs
xargs reads items from the standard input, delimited by blanks (which can be protected with double or single quotes or a backslash) or newlines, and executes the command (default is... 阅读全文
摘要:
以前在做项目的时候简单的研究过一致性hash,后来看Dynamo的实现原理时,对里面的虚拟节点不是很理解,也一直没有找到好的资料解释这个问题,昨天在光谷书城偶然看到一本讲网络爬虫的书上分析了这个问题,今天再在网上找了些资料,加深了对这个问题的认识。 一致性hash原理:http://blog.csdn.net/sparkliang/archive/2010/02/02/5279393.aspx
... 阅读全文
摘要:
最近几天看了些搜索引擎方面的书,主要阅读了《自己动手写搜索引擎》、《自己动手写网络爬虫》、《搜索引擎技术实践》、《搜索模式》、《瞬间之美》等书,都很不错,也学到了不少知识,本文谈一下我对构建搜索引擎的认识。 要构建一个搜索引擎,首先要确定搜索源,也即被搜索的对象。被搜索的对象可以是一堆文档,用户需要确定包含某关键字的文档集合;可以是一系列网页,用户需要确定跟关键字内容相关的网页;或是一系列的图片... 阅读全文