自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 go遇到的问题

一、类型转换             a = 100.0  //c/c++使用100.0f                fmt.Printf("%f\n",a/4) //可以得到浮点数             fmt.Printf("%f\n",a/4.0) //也可以得到浮点数     二、mysql出现的字符集             针对目前出现的utf8mb4,mysq

2017-09-04 09:43:13 381

原创 toml使用中容易遇到的问题

1、成员变量、类型、toml中的名字的一致性        go语言中的结构定义              server struct {                                   Debug                    bool    `toml:debug`                 Log                        log

2017-09-02 15:48:51 1670

原创 go的protobuf环境搭建

go的protobuf环境搭建

2017-08-30 08:21:08 723

原创 go开发中遇到的问题

go入门

2017-08-22 07:58:14 678

原创 redis日常学习

redis

2017-08-18 19:57:18 322

原创 go开发中容易犯的错

go入门

2017-08-18 16:25:17 294

原创 go语言入门必备

go语言入门

2017-08-13 19:14:50 437

原创 go的html模板替换

go入门

2017-08-09 21:57:54 2317

原创 go的反射机制和interface

go反射机制的摸索

2017-08-09 21:31:23 366

原创 go语言开发必备

go入门必备

2017-08-09 21:13:41 5713

原创 文件系统中的io请求的传递

块设备的io请求类型在不同层次有不同的表示      page cache=>buffer head=>bio=>request IO请求在内核的传递过程中,并未发生实际的拷贝,而是引用部分数据 在request对象中还是有bio对象的,在转化的时候,bio对象并未消失 这是一种系统设计的方法,对象的有效性通过引用计数来实现 在整个io请求处理过程中page,buffer

2016-08-15 17:18:48 558

原创 文件系统中数据读取的详细过程

一直在困惑文件系统sys_read、bio、io调度、硬中断、软中断、io完成通知之间的过程是怎么样的,通过代码的跟踪大致明白过程了 内核态的系统调用与bio的交界处的函数mpage_bio_submit(fs/mpage.c) bio与io调度的交界处的函数__make_request(block/blk-core.c) io调度与驱动层的交界函数__generic_unplug_devi

2016-08-14 22:32:41 1892

原创 缓存的理解

CPU体系结构中有L1,L2,L3缓存 L1是CPU相关的,L2,L3则是所有CPU共享的 L1分指令和数据的Cache,Cache line是缓存的最小单位 想象CPU在执行指令的时候,引用的大部分的数据都是L1,L2,L3中,只有部分是使用内存中的数据 可以想象这里存在一个L1,L2,L3与内存数据同步的问题,类似内存与磁盘的同步 这个时候Cache与内存就存在映射关系了,书

2016-08-14 00:04:36 654

原创 文件系统中的疑惑

1、inode之间有逻辑关系,在持久化的时候保存这种关系吗?       逻辑关系就是一个文件使用的块的链表编号       逻辑关系还包括就是目录的树结构,需要在内存中构建出来 2、dentry需要持久化吗?       树形结构不需要持久化       通过file_system_type,file_system和root dentry以及inode构建出来       目

2016-08-12 15:00:21 750

原创 Qdisc数据发送

Qdisc中的实现方式大致如下 struct Qdisc { int (*enqueue)(struct sk_buff *skb, struct Qdisc *dev); struct sk_buff * (*dequeue)(struct Qdisc *dev); unsigned flags; int padded; struct Qdisc_ops *ops; s

2016-08-11 10:07:34 2973

原创 数据收发的软中断以及数据从网卡发送

注册软中断 static int __init net_dev_init(void) { ...... open_softirq(NET_TX_SOFTIRQ, net_tx_action); open_softirq(NET_RX_SOFTIRQ, net_rx_action); ...... } static void net_tx_acti

2016-08-11 01:00:26 922

原创 协议栈数据发送

数据发送 tcp_write_xmit() {   while ((skb = tcp_send_head(sk)))    {      tcp_event_new_data_sent(sk, skb);//重新获取首部   } } 数据发送经过ip层路由和邻居协议后 发送队列关联了Qdisc net/core/Dev.c int dev_queue_xmit(struct s

2016-08-11 00:36:39 1109

原创 网络包处理的中断下半部

中断下半部处理    中断下半部将网卡中的DMA-ring中的skb取出来,经过ip层处理,主要是netfilter    最后决定是否传递到本地传输层    如果交给本地传输层ip的最后处理ip_local_deliver_finish 中断的下半部的结束位置是哪里? 何时出中断上下文?    中断下半部的结束是把这个从DMA-ring中的skb找到归宿(传输层的队列或者转发出去)

2016-08-10 15:21:12 615

原创 tcp拥塞控制

查看当前正在使用的拥塞算法    sysctl net.ipv4.tcp_available_congestion_control    /proc/sys/net/ipv4/tcp_congestion_control  常见的拥塞算法   cubic(RTT隔离,但有流量突发)   reno   hybla   vegas   illinois   hstcp(RTT不公平性

2016-08-10 15:17:07 713

原创 客户端状态机如何进入ESTABLISHED

结论      tcp客户端connect发起之后,协议栈就会发送SYN给服务器,协议栈收到来自服务器的响应后,发出Ack后,就进入了established    tcp服务器在收到SYN后,发送SYN+ACK后就进入SYN_RECVD,再次收到客户端的Ack时,也进入established    established状态连接的双方进入的时机是有先后的,客户端是先进入的,服务器是后进入的

2016-08-09 23:55:03 1248

原创 tcp_ip网络中的名词语义

选择重传与分片的概念    选择重传不是指分片中的某个部分丢了,选择某个分片   选择重传的粒度不是分片而是滑动窗口中的单元 TCP协议中的seq表示的是字节数还是包序号?    seq其实就是连接的字节数 TCP中发送数据后,基本就是已经异步过程了    数据仅仅是拷贝到了发送队列中,之后的数据发送就是交给ip层了,需要做路由选择     数据发送tcp_sendmsg中

2016-08-09 23:29:04 633

原创 epoll机制代码核对

epoll工作机理        epoll_wait检查epoll句柄中的rdllist不为空退出循环        遍历所有的epitem,把各种ready的fd收集起来返回 这里有一个疑问        谁来影响rdllist不为空,一般的说法是文件的fd的状态发生改变,就能有某个方法将fd加入到rdllist中,并通知调用epoll_wait的进程         答案是

2016-08-09 22:39:11 464

原创 信号机制一窥

if (signal_pending(current))   {      ret = -ERESTARTSYS;      return ret;  }     -ERESTARTSYS表示信号函数处理完毕后重新执行信号函数前的某个系统调用. 也就是说,如果信号函数前有发生系统调用,在调度用户信号函数之前 内核会检查系统调用的返回值,看看是不是因为这个信号而中断了系统调用. 如果

2016-08-09 22:23:43 608

原创 网卡驱动中的疑惑

网卡发送和接收缓冲区是实际有空间,还是一个数字而已?     这个只是一个逻辑值,并不实际分配内存     这是网卡的级别的限制,超过了阀值,数据就不收发了   网卡的发送和接收缓冲区是所有连接共享?     是的,也有连接级别的发送和接收缓冲区的大小限制     通过sock_setopt来设置,这是tcp,udp中的队列的大小     网卡驱动初始化的时候,会从内核中割出一块

2016-08-09 22:03:50 374

原创 内核中的机制的困惑

处理器总处于以下状态中的一种 1、内核态,运行于进程上下文,内核代表进程运行于内核空间;     回旋锁是解决多个CPU可重入问题   2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;     回旋锁是解决多个CPU可重入问题     中断有CPU亲和性   3、用户态,运行于用户空间。     线程锁是解决多个线程的可重入问题     有没有程序完全运行在用户态,压

2016-08-09 22:02:24 490

原创 linux socket收包错误码

1、ENOTCONN ---当前状态为TCP_LISTEN 2、flags为带外数据tcp_recv_urg    ENOTCONN ---当前状态为TCP_CLOSE    EINVAL   ---TCP_URG_READ    EFAULT   ---拷贝失败    EAGIN    ---TCP_URG_NOTYET      返回len  ---TCP_URG_VALID 3

2016-08-09 21:06:03 1188 1

原创 linux 发数据包的错误码

1、EBADF---找不到对应的文件对象 2、连接并未建立,等待直到进入TCPF_ESTABLISHED或者TCPF_CLOSE_WAIT    1、ERESTARTSYS ---当前套接字上有事件,调度时间到了    2、EINTR--当前套接字上有事件,被中断    3、EPIPE --连接状体没不是TCPF_SYN_SENT | TCPF_SYN_RECV,直接返回    4、EA

2016-08-09 21:01:01 791

原创 半连接

半连接    未完成3次握手,但是已经发送了SYN,Peer也发了SYN+ACK,但是不再发送ACK 半开连接    一方已经关闭连接,另一方尚不知道     比如:        客户端崩溃、死机,服务器怎么能知道呢        使用SO_KEEPALIVE,超时最长是2小时        故此应用层来实现KEEP_ALIVE,来确定对方的存活与否     客户端此时的

2016-08-09 20:59:06 1090

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除