- 博客(562)
- 资源 (24)
- 收藏
- 关注
转载 MySQL索引背后的数据结构及算法原理
下面是一位牛人写得关于数据库索引的精品之作,因为很好,不敢修饰,转载至此与博友共享。原文链接:MySQL索引背后的数据结构及算法原理本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree...
2018-04-13 13:50:42 191
转载 glib scanner
Re: [gtk-list] Glib Lexical ScannerFrom: Tim Janik <timj gtk org>To: Gtk List <gtk-list redhat com>cc: Emmanuel DELOGET <logout free fr>, Trog <trog gtk org>Subject: Re: [gtk-l...
2018-04-04 16:02:02 431
转载 在Linux下使用IO通道(IO Channels)
由于BlueZ里面使用到了IO Channel,所以找了一点资料阅读。IO Channels是Glib库的一个特性,让便携设备IO变得简单和高效。Linux Glib库的IO Channels提供了几种有用的特性:缓冲IO:它提供了用户进程所有的缓冲,这减少了通过系统调用而使用系统缓冲的次数,提供了IO效率;可移植性:由于库的可移植性,这种工作机制可以在不同的UNIX平台和Windows平台上运行...
2018-04-02 14:31:56 5046
转载 怎样诊断SLAB泄露问题
Slab allocator是Linux kernel的内存分配机制,各内核子系统、模块、驱动程序都可以使用,但用完应该记得释放,忘记释放就会造成“内存泄露”(memory leak)。如果导致泄露的代码使用率很低倒也罢了,若是使用率很高的话,系统的内存会被迅速耗尽。在以下案例中,132 GB 内存,仅剩21 GB空闲,还有16 GB的交换区被用掉了,显然内存使用相当紧张,而内存的主要去向是sla...
2018-03-23 09:55:45 2228
转载 关于线程池的“惊群效应”
什么是惊群 举一个很简单的例子,当你往一群鸽子中间扔一块食物,虽然最终只有一个鸽子抢到食物,但所有鸽子都会被惊动来争夺,没有抢到食物的鸽子只好回去继续睡觉, 等待下一块食物到来。这样,每扔一块食物,都会惊动所有的鸽子,即为惊群。对于操作系统来说,多个进程/线程在等待同一资源是,也会产生类似的效果,其结 果就是每当资源可用,所有的进程/线程都来竞争资源,造成的后果:1)系统对用户进程/...
2018-03-20 11:04:55 531
转载 常见开源产品epoll网络事件模型分析
摘要:redis、thrift-noblocking-server、memcached、nginx等开源产品 四种不同场景下不同网络模型 分析最近利用业余时间对基于epoll的网络服务模型做了一些调研和测试,既是复习也是一次再学习。在调研过程中,结合现有的开源产品的方案做了一些分析,看了很多源码也看了很多资料。大概有所了解,遂做一下总结和分享,如果不对,欢迎指正。原文链接: http://blog...
2018-03-20 09:54:38 275
转载 如何使用 epoll? 一个 C 语言实例
通常的网络服务器实现, 是对每一个连接使用一个单独的线程或进程。对高性能应用而言,由于需要同时处理非常多的客户请求, 所以这种方式并不能工作得很好,因为诸如资源使用和上下文切换所需的时间影响了在一时间内对多个客户端进行处理。另一个可选的途径是在一个单独的线程里采用非阻塞的I/O, 这样当可以从一个socket中读取或写入更多数据时,由一些已经准备就绪的通知方式来告知我们。这篇文章介绍Linux 的...
2018-03-20 09:36:07 784
转载 HTTP 2.0的那些事
作者:victor yu链接:https://www.zhihu.com/question/34074946/answer/108588042来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。在我们所处的互联网世界中,HTTP协议算得上是使用最广泛的网络协议。最近http2.0的诞生使得它再次互联网技术圈关注的焦点。任何事物的消退和新生都有其背后推动的力量。对于HTTP...
2018-03-08 10:43:37 564
转载 保证分布式系统数据一致性的6种方案
在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性?具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。在分布式系统来说,如果不想牺牲一致性,CAP 理论告诉我们只能放弃可用性,这显然不能接受。为了便于讨论问题,先简单介绍下数据一致性的基
2018-01-26 14:45:32 252
转载 Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
本文将演示如何利用namespace创建一个完整的容器,并在里面运行busybox。如果对namespace不是很熟悉,请先参考前面几遍介绍不同类型namespace的文章。busybox是一个Linux下的可执行程序,采用静态链接,不依赖于其他任何动态库。他里面实现了一些Linux下常用的命令,如ls,hostname,date,ps,mount等等,详细的介绍请参考它的官网。本
2018-01-26 14:34:26 1377
转载 Linux Namespace系列(08):user namespace (CLONE_NEWUSER) (第二部分)
本篇将主要介绍user namespace和其他类型的namespace的关系。权限涉及的范围非常广,所以导致user namespace比其他的namespace要复杂; 同时权限也是容器安全的基础,所以user namespace非常重要。本篇所有例子都在ubuntu-server-x86_64 16.04下执行通过和其他类型的namespace一起使用除了
2018-01-26 14:32:38 660
转载 Linux Namespace系列(07):user namespace (CLONE_NEWUSER) (第一部分)
User namespace用来隔离user权限相关的Linux资源,包括user IDs and group IDs,keys , 和capabilities.这是目前实现的namespace中最复杂的一个,因为user和权限息息相关,而权限又事关容器的安全,所以稍有不慎,就会出安全问题。user namespace可以嵌套(目前内核控制最多32层),除了系统默认的use
2018-01-26 14:31:51 1063
转载 Linux Namespace系列(06):network namespace (CLONE_NEWNET)
network namespace用来隔离网络设备, IP地址, 端口等. 每个namespace将会有自己独立的网络栈,路由表,防火墙规则,socket等。每个新的network namespace默认有一个本地环回接口,除了lo接口外,所有的其他网络设备(物理/虚拟网络接口,网桥等)只能属于一个network namespace。每个socket也只能属于一个network names
2018-01-26 14:31:01 678
转载 Linux Namespace系列(05):pid namespace (CLONE_NEWPID)
PID namespaces用来隔离进程的ID空间,使得不同pid namespace里的进程ID可以重复且相互之间不影响。PID namespace可以嵌套,也就是说有父子关系,在当前namespace里面创建的所有新的namespace都是当前namespace的子namespace。父namespace里面可以看到所有子孙后代namespace里的进程信息,而子namespace里看
2018-01-26 14:30:22 805
转载 Linux Namespace系列(04):mount namespaces (CLONE_NEWNS)
Mount namespace用来隔离文件系统的挂载点, 使得不同的mount namespace拥有自己独立的挂载点信息,不同的namespace之间不会相互影响,这对于构建用户或者容器自己的文件系统目录非常有用。当前进程所在mount namespace里的所有挂载信息可以在/proc/[pid]/mounts、/proc/[pid]/mountinfo和/proc/[pid]/mou
2018-01-26 14:27:35 540
转载 Linux Namespace系列(03):IPC namespace (CLONE_NEWIPC)
https://segmentfault.com/a/1190000006908729IPC namespace用来隔离System V IPC objects和POSIX message queues。其中System V IPC objects包含Message queues、Semaphore sets和Shared memory segments.对于其他几种I
2018-01-25 20:52:21 809
转载 Linux Namespace系列(02):UTS namespace (CLONE_NEWUTS)
https://segmentfault.com/a/1190000006908598UTS namespace用来隔离系统的hostname以及NIS domain name。这两个资源可以通过sethostname(2)和setdomainname(2)函数来设置,以及通过uname(2), gethostname(2)和getdomainname(2)函数来获取.(这里括
2018-01-25 20:51:25 1068
转载 Linux Namespace系列(01):Namespace概述
https://segmentfault.com/a/1190000006908272Namespace是对全局系统资源的一种封装隔离,使得处于不同namespace的进程拥有独立的全局系统资源,改变一个namespace中的系统资源只会影响当前namespace里的进程,对其他namespace中的进程没有影响。下面的所有例子都在ubuntu-server-x86_64 16
2018-01-25 15:26:38 3186
转载 Linux TTY/PTS概述
https://segmentfault.com/a/1190000009082089当我们在键盘上敲下一个字母的时候,到底是怎么发送到相应的进程的呢?我们通过ps、who等命令看到的类似tty1、pts/0这样的输出,它们的作用和区别是什么呢?TTY历史支持多任务的计算机出现之前在计算机出来以前,人们就已经在使用一种叫teletype的设备,用来相互之间传递信
2018-01-25 15:21:41 419
转载 Linux下的虚拟Bridge实现-3.0内核
http://www.cnblogs.com/zmkeil/archive/2013/04/21/3034733.html Linux下的Bridge也是一种虚拟设备,这多少和vlan有点相似,它依赖于一个或多个从设备。与VLAN不同的是,它不是虚拟出和从设备同一层次的镜像设备,而是虚拟出一个高一层次的设备,并把从设备虚拟化为端口port,且同时处理各个从设备的数据收发及转发,再加上
2018-01-25 14:12:22 560
转载 netif_receive_skb 函数解析
int netif_receive_skb(struct sk_buff *skb){ //略去一些代码 rcu_read_lock(); //第一步:先处理 ptype_all 上所有的 packet_type->func() //所有包都会调func,对性能影响严重!内核默认没挂任何钩子函数 list_for_each_
2018-01-17 11:27:30 568
转载 Linux内核分析 - 网络[四]:路由表
路由表 在内核中存在路由表fib_table_hash和路由缓存表rt_hash_table。路由缓存表主要是为了加速路由的查找,每次路由查询都会先查找路由缓存,再查找路由表。这和cache是一个道理,缓存存储最近使用过的路由项,容量小,查找快速;路由表存储所有路由项,容量大,查找慢。首先,应该先了解路由表的意义,下面是route命令查看到的路由表:Desti
2018-01-17 11:24:04 254
转载 Linux内核分析 - 网络[三]:从netif_receive_skb()说起
在netif_receive_skb()函数中,可以看出处理的是像ARP、IP这些链路层以上的协议,那么,链路层报头是在哪里去掉的呢?答案是网卡驱动中,在调用netif_receive_skb()前, 相关阅读:Linux内核分析 - 网络[一]:收发数据包的调用 http://www.linuxidc.com/Linux/2011-05/36063.htmLinux内核分析 -
2018-01-17 11:23:24 563
转载 Linux内核分析 - 网络[二]:网卡驱动接收报文
纠结了好多天,终于弄懂了B440X的处理。上篇讲到通过中断,最终网卡调用了b44_rx()来接收报文相关阅读:Linux内核分析 - 网络[一]:收发数据包的调用 http://www.linuxidc.com/Linux/2011-05/36063.htmLinux内核分析 - 网络[二]:网卡驱动接收报文 http://www.linuxidc.com/Linux/2011-0
2018-01-17 11:22:02 643
转载 Linux内核分析 - 网络[一]:收发数据包的调用
内核版本:Linux-2.6.34网卡驱动:B4401什么是NAPINAPI是linux一套最新的处理网口数据的API,linux 2.5引入的,所以很多驱动并不支持这种操作方式。简单来说,NAPI是综合中断方式与轮询方式的技术。数据量很低与很高时,NAPI可以发挥中断方式与轮询方式的优点,性能较好。如果数据量不稳定,且说高不高说低不低,则NAPI会在两种方式切换上消耗不少时间,效率反
2018-01-17 11:21:02 411
转载 GCC typeof在kernel中的使用——C语言的“编译时多态”
大家都知道,C语言本身没有多态的概念,函数没有重载的概念。然而随着C语言编写的软件逐渐庞大,越来越多地需要引入一些其他语言中的特性,来帮助更高效地进行开发,Linux kernel是一个典型例子。在动态类型的语言里面,往往有typeof这种语法,来获取变量的数据类型,比如JavaScript当中,typeof以字符串型式返回了这个变量的数据类型,借由这种特性,往往可以根据传入参数的类型不同
2017-12-19 16:14:54 331
转载 使用 SCTP 优化网络
SCTP 是在 IP 网络上使用的一种可靠的通用传输层协议。尽管 SCTP 协议最初是为发送电话信号而设计的(RFC 2960),但带来了一个意外的收获:它通过借鉴 UDP 的优点解决了 TCP 的某些局限。SCTP 提供的特性使套接字初始化的可用性、可靠性和安全性都得以提高。(图 1 给出了 IP 堆栈的层次化架构。)图 1. IP 栈的层次化架构本文简要介绍了 Linux
2017-12-19 15:05:11 655
转载 26-LTE IP Address Allocation II - A Case for Two Cities
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=7257I. Introduction在之前的文档我们已经覆盖了基本IP地址分配过程,解释了在用户同一个地点不同时间接入网络时LTE网络是怎么分配IP地址的。这个文档有一点不同,学习用户在不同物理位置上接入网络时的分配IP过程。和之前的文档意一样,要讨论两种分配方式:静态
2017-11-22 13:18:14 728
转载 25-IP Address Allocation I - Basic
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=7246I. Introductionlte是全IP网络。这就意味着交付所有用户流量时都是以IP数据包的形式,提供给用户always on IP connectivity的服务。当UE加入LTE网络,会给UE分配一个PDN地址让UE连接这个PDN,并建立默认承载。默认承载
2017-11-22 13:17:34 1733 1
转载 23-LTE Charging I_Offline
原文链接: http://www.netmanias.com/en/?m=view&id=techdocs&no=7179I. Introduction之前的PCC文档,我们的焦点在讨论关于QoS规则的PCC策略。现在我们的焦点是付费策略,特别是离线付费策略。在LTE网络中,服务是按照承载(eg,EPC)/子系统(eg.IMS)/服务级别(eg MMS)或者是在线和离线来付
2017-11-22 13:14:23 1086
转载 22-LTE Policy and Charging Control (PCC)
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=6562I. introduction为了使用LTE服务,用户必须购买一个LTE设备,和运营商签署一个账户,并选择服务类型和想要的计划。为了支持和管理这些选择的服务,运营商根据用户的签约信息来配置签约文件。当用户使用LTE服务时,对每一个和不同服务相关的APN建立EPS会
2017-11-22 13:13:45 2513
转载 21-EMM Procedure - 10 & 11. Move to Another City and Attach
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=6354I. introduction随着UE的移动当服务小区的信号强度变弱时UE试图进行切换或者小区重选。如果在UE移动的周边没有邻区,信号强度将会逐步减弱直到UE最终从网络detach。接着一旦达到LTE覆盖区域,UE重选通过小区选择初始注册到网络。这篇文档讨
2017-11-22 13:12:47 817
转载 20-EMM Procedure 8&9. Handover & Cell Reselection with TAU
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=6324I. Introduction当UE接入网络时,MME通过TAI列表分配一组TA。UE在这些TA中移动不需要给网络报告自己的位置。网络不知道UE驻留在哪个小区,但是知道在哪个TA。所以如果idle状态的UE有电话或者数据包到达,网络在UE注册的这些TA中发起寻呼。
2017-11-21 09:39:44 773
转载 19-EMM Procedure 7. Cell Reselection without TAU
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=6322I. Introduction通过前面三篇文档,我们学习了EMM case-6 handover without TAU。这篇文档我们描述在idle模式下的UE是怎么重选小区的。 切换控制的是连接态的UE的移动性,小区重选是控制idle状态下UE的移动性。在切
2017-11-21 09:39:01 527
转载 18-EMM Procedure 6. Handover without TAU - Part 3. S1 Handover
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=6286I. Introduction之前的文档,我们讨论了X2切换,这篇文档我们关注在EPC干预下的S1切换。这里,我们假设source和target eNB连接在同一个MME/SGW,并且位于UE的TAI列表中的同一个TA下。第二章我们描述S1切换的概念,第三章我们详
2017-11-21 09:38:16 1100
转载 17-EMM Procedure 6. Handover without TAU - Part 2. X2 Handover
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=6257I. Introduction在前一篇文档中我们讨论了LTE切换相关的过程,并学习了LTE切换是一个 UEassisted / network - controlled 的过程,即UE报告,eNB决定。这篇文档将讨论X2切换。所以我们假设源和目的eNB都连接到同一
2017-11-21 09:37:34 818
转载 16-EMM Procedure 6. Handover without TAU - Part 1. Overview of LTE Handover
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=6224I. Introduction这篇文档描述EMM case-6。这个过程是当UE移动到在TAI列表中的TA的一个小区时执行的。在handover过程中,并不发起TAU过程。我们定义这种过称为“Handover without TAU”。这个过程通过接下来的三篇文档
2017-11-21 09:36:55 696
转载 15-EMM Procedure 5. Periodic TAU
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=6193I. Introduction这篇文档描述EMM case-5 周期性TAU过程。这个过程是在ecm-idle rrc-idle状态下的UE因为没有数据传输而需要周期性的更新MME的位置信息。 当UE进入一个不在TAI列表中的TA时发起TAU,或者当TAU定时
2017-11-21 09:36:06 756
转载 14-EMM Procedure 4. Service Requet
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=6134I. Introduction这篇文档描述EMM case-4:service request过程。这个过程是当有新流量时,在idle状态不活动的UE想激活来处理流量时执行的。新用户流量可以是从UE开始的上行流量,也可以是从网络到UE的下行流量。UE的E-
2017-11-21 09:35:28 760
转载 13-EMM Procedure 3. S1 Release
原文链接:http://www.netmanias.com/en/?m=view&id=techdocs&no=6110I. Introduction这个文档 描述了EMM case-3,当UE不活动状态时释放S1连接。当注册到网络的UE处于不活动状态,没有使用任何服务(并不意味着不适用eNB分配的无线资源)。所以网络需要释放这些相关的无线接入相关的资源,并删除相关的信息(ID
2017-11-21 09:33:47 1293
Oran V0.8规范文档
2022-04-12
confd-basic-7.6.linux.x86_64
2022-03-31
IEEE-802.11i
2014-12-24
ipv6相关文档
2014-12-24
Ethernet vendor codes and well-known MAC addresses
2014-11-05
C++ Hackers Guide.pdf
2010-12-10
ebtables-iptables interaction on a Linux-based bridge.mht
2010-12-10
深入浅出MFC.pdf
2008-11-21
在 C/C++ 中调用 Java
2008-10-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人