- 博客(20)
- 资源 (1)
- 收藏
- 关注
原创 如何理解TCP端口
如何理解TCP端口问题:一台主机配置多张网卡,假设同时配置了2张网卡,这个时候这台主机有多少个TCP Port可用?Port这个问题让我重新思考TCP Port的作用,它是用来标识应用层的网络服务的!原来的理解认为,一台主机只会有65536个端口,并且是0-65535,每个都惟一的。并且在学socket编程的时候,有一个SO_Reuse_Addr的问题,更是坚定了Tcp Port惟一的想法。但是现在
2017-09-01 15:10:00
3657
1
原创 如何理解Redis集群的Slot映射
Redis在单机模式时,使用数据结构dict来实现数据库。 Redis在集群模式时,也是使用数据结构dict来实现数据库,但是集群模式对于数据库有其他需求,包括数据的节点无关性、内部操作对客户端需要屏蔽、冗余备份等,并且在一定的情况,数据还需要在不同的节点间实现迁移。 在所有模式下,Redis的节点数据的备份都是使用备份来实现的。这个暂时不深入。Redis引入的slot来解决如何实现集群模式下部
2017-08-17 13:47:45
12101
原创 Redis服务器如何发送回复内容给客户端
Redis采用了事件驱动框架,根据文件事件及时间事件来处理逻辑。读事件的逻辑好理解:客户端连接上服务器后,服务器调用accepttcphandle创建一个client,同时使用该client注册一个将该fd的可读事件与readQuery处理器绑定起来。当客户端发布命令后通过网络传输到redis-server后,内核向用户空间抛出可读事件,readQuery被调用。问题来了,readQuery执行后,
2017-08-15 16:50:07
788
原创 关于6.828实验中的bootloader链接地址与加载地址的思考
bootloader的链接地址与加载地址不致会引起什么问题?这个问题是我们所关心的,涉及到的其他相关知识读者可以自己去了解,不多解释了。1、bootloader如何进内存这个工作由BIOS来完成,我们也可以根据这个过程来了解加载地址是如何确定的。 明确:BIOS根据事先确定好的地址来加载bootloader。2、bootloader链接地址与加载地址不一致情况下第一条指令如何执行需要明确的是,什么
2017-07-18 11:27:16
571
原创 Redis数据对象及底层编码实现
最近在研究redis,稍微看了一下huanggz的《redis设计与实现》及源码中的相关实现,感觉作者对于redis确实有一定程序的了解,把问题说明很很清楚。本文算是对下午的学习的一个记录。作为内存数据库,由于其采用的c语言没有内置相关的数据结构,redis自己实现了几个底层的数据结构,具体包括如下: 1. 简单动态字符串 Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的
2016-07-14 19:34:38
1760
原创 平台设备与平台驱动注册过程platform_driver_register与platform_device_register
1、platform_device_regisger2、platform_driver_regisgerplatform_driver_register driver_register bus_add_driver driver_attach __driver_attach driver_probe_device really_
2015-08-21 15:10:06
2313
原创 module_init的调用顺序
module_init()这个接口应该是驱动开发人员常用的一个接口了,在内核源码里也可以看到无数。 下午详细跟了一下内核代码,顺便分享一下,也算是自己做个记录。源代码:MTK ALPS 4.4首先是宏module_init的原始定义:#define module_init(x) __initcall(x);定义成了__initcall(),再看__initcall():#define __init
2015-08-20 17:08:52
3232
原创 Mtk ALPS Led驱动的加载过程
最近在研究led驱动,顺便记录一下,下面将从两个方面来介绍Led的驱动。一、Led驱动加载过程 //待写二、Led驱动调用流程 //待写
2015-08-20 15:54:16
1076
原创 如何在Linux创建安全的临时文件
最近在做项目的时候需要用到一个临时文件,但是又不希望这个文件会被其他进程访问到,网上查了一下,发现有一个很简单的做法,但是需要使用POSIX的IO函数来进行。 首先需要明确两点: 1、我们需要的是临时文件; 2、不希望其他进程可以访问具体做法如下: 1、使用open创建一个文件,获取文件的描述符; 2、确认文件建成功后,使用unlink函数将文件删除,效果是在相应目录下该文件被删除了,使用
2015-08-19 14:44:57
587
原创 Android Led驱动[Linux Led子系统]
Android Led驱动[Linux Led子系统] 头文件:kernel/include/linux/leds.h关于led的相关定义如下:enum led_brightness {//定义了led的亮度控制值 LED_OFF = 0,//不亮 LED_HALF = 127,//半亮 LED_FULL = 255,//全亮};剩下的比较重要的结构就
2015-08-18 10:44:46
751
原创 Android的CPP代码都加了namespace android
在AOSP的源码里面我们经常可以看到这样的代码:namespace android { //源码//源码};// namespace androidnamespace是CPP的关键字,用于声明代码块所属的命名空间,AOSP底层的本地代码把声明了命令空间“android”,把所有的“android”代码都看成一个工程了,这样做的好处是把自己的代码与第三方开源的
2015-08-17 10:18:43
1009
原创 Java中JNI的使用方法
由于项目需要,最近在看jni的东西,刚碰这个东西说起来还是挺复杂的,但是过一遍就明了了,都是数据类型在映射来映射去的,其实是一个很简单的东西。但是如果涉及到了数据的同步及锁的东西,就会比较复杂,这边主要是说一下自己今天看的一些小东西。编译环境:ubuntu 1204 x64编译器:jdk1.6.0_45不多说,直接入主题,下面用一下helloworld.java的示例来说明如何
2014-11-26 22:22:09
527
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人