
技术积累
文章平均质量分 64
oria2006
这个作者很懒,什么都没留下…
展开
-
一种能够提升CS架构中服务端性能的方法
服务端并发处理数据目前基本都是在数据处理阶段采用并发技术,这主要有两个原因:第一,一般情况下瓶颈都卡在数据处理阶段,比如磁盘读写;第二,实现不了并发接收数据,因为服务端口,比如WEB服务80端口,只能绑定到一个socket上。对于有些使用场景,比如客户端向服务端推送大量数据包,这时候如果接收端不能并发处理可能会存在丢包丢数据的情况。为了能够实现并发接收数据,可以为服务端绑定多个服务器端口。但是标准的端口号只有一个,比如WEB服务80端口,绑定的其它扩展端口,网络中的其它客户端是不知道的,客户端只原创 2020-11-23 16:36:16 · 556 阅读 · 0 评论 -
Libevent 源码阅读--典型应用中的函数调用关系
一次典型应用的函数调用struct event ev;struct event_base *base;struct event_base *base = event_base_new();event_set(&ev, fd, EV_READ|EV_PERSIST, callback_fn, (void *)arg); | |__> event_assign(ev,...原创 2020-01-20 16:17:40 · 257 阅读 · 0 评论 -
Libevent使用范例及代码说明
利用libevent实现有数据来时,执行ReadBuffer函数,支持多线程。static EventApiParameter parameter;memset((void *)¶meter, 0, sizeof(parameter));parameter.agent_socket.port = port;//parameter.write_function_point...原创 2020-01-17 18:09:28 · 422 阅读 · 0 评论 -
大厂面试题汇总(附GIT链接)
https://github.com/0voice/interview_internal_reference华为篇static有什么用途?(请至少说明两种)引用与指针有什么区别?描述实时系统的基本特性全局变量和局部变量在内存中是否有区别?如果有,是什么区别?什么是平衡二叉树?堆栈溢出一般是由什么原因导致的?什么函数不能声明为虚函数?冒泡排序算法的时间复杂度是什么?写出floa...转载 2019-12-18 10:07:20 · 335 阅读 · 0 评论 -
几个常用的Linux操作系统监控脚本
本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等方面的自动监控与报警。根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell转载 2014-04-17 17:26:25 · 441 阅读 · 0 评论 -
linux tc
tc 介绍 在linux中,tc 有二种控制方法 CBQ 和 HTB.HTB 是设计用来替换 CBQ 的.HTB比CBQ更加灵活,但是CPU 开销也更大,通常高速的链路会使用CBQ,一般而言HTB使用的更加广泛。HTB 的规则本质上是一个树形结构,包括三个基本的构成块:队列规定 qdisc(queueing discipline) ,类(class)和分类器(Classi转载 2014-01-26 13:02:29 · 1190 阅读 · 0 评论 -
FEDORA下SVN的安装以及配置
step 1安装subversionyum install subversionstep 2安装apache的svn模块yum install mod_dav_svnstep 3建立svn仓库文件mkdir /var/svnstep 4建立SVN库并修改/var/svn用户组和用户svnadmin create /var/svn/repos/chow转载 2012-12-04 09:41:52 · 586 阅读 · 0 评论 -
openwrt X86固件编译、启动盘制作
下载源码OpenWrt-Dreambox目前仍处于trunk开发版,还没发布稳定版,同时含有针对嵌入式开发板的SUN分支。1 获取OpenWrt-Dreambox Dreambox旧版SVN代码库 $svn co svn://svn.openwrt.org.cn/dreambox/branches/dreambox-EOL openwrt-dreambox 2 获取!Dream...原创 2019-02-28 14:09:29 · 5701 阅读 · 0 评论 -
linux timer(2)
struct timer { struct timeval timeout; void(*handler)(void *); void *handler_arg; int id; int in_use; int cancelled; tl_timer_t *next; tl_timer_t *prev;};原创 2013-11-12 10:17:22 · 669 阅读 · 0 评论 -
多线程函数汇总
common_thread_mutex thread_mutex;typedef void* (*COMMON_THREAD_FUNCTION)(void*);COMMON_THREAD_FUNCTION threadFunc;Void *arg;common_thread thread;pthread_cond_t cond; /原创 2012-11-30 15:20:49 · 410 阅读 · 0 评论 -
提高TCP/IP 栈的性能
给出了几个可调节的参数,它们可以帮助您提高 Linux TCP/IP 栈的性能。表 1. TCP/IP 栈性能使用的可调节内核参数可调节的参数默认值选项说明/proc/sys/net/core/rmem_default"110592"定义默认的接收窗口大小;对于更大的 BDP 来说,这个大小也应该更大。/proc/sys/net/core转载 2014-10-22 16:59:34 · 777 阅读 · 0 评论 -
TCP传输协议抓包经验
TCP传输通信时的几个状态TCP Window UpdateTCP Previous segment lostTCP Dup ACK XXXX#X;TCP RetransmissionTCP Previous segment lost,它告诉发送方数据段丢失;TCP Dup ACK XXXX#X 则代表了数据段丢失TCP状态,XXXX转载 2014-10-24 10:02:05 · 4894 阅读 · 0 评论 -
Redis
一、编译1.make2.make test二、启动1.启动服务./src/redis-server ./redis.conf2.通过客户端访问./src/redis-cli127.0.0.1:6379> PINGPONG3.访问远程redis服务端redis-cli -h host -p port -a passwordredis-cli...原创 2019-09-07 14:40:35 · 190 阅读 · 0 评论 -
最小二乘法,线性回归
线性回归的目的就是根据一组给定的数据,找出一个线性方程,这个线性方程要满足的条件是:由该方程算出的值与给定的实际值的方差和最小,即下图公式中的Q值最小线性方程:线性回归就是用给定的数据yi和xi算出参数w和b...原创 2018-06-05 18:09:34 · 309 阅读 · 0 评论 -
Android应用中如何调用系统设置项
1. android中调用系统的设置项,比较简单,只需要new一个对应设置的Intent,并调用startActivity(intent)即可。如下方法中,调用时传入相应的action:public void processActionSetting(String action) {Intent intent = new Intent(action);startActivity(i转载 2016-10-11 18:31:45 · 807 阅读 · 0 评论 -
网络协议栈的缩放
网络协议栈的缩放(Scaling in the Linux Networking Stack) 简介============这个文档介绍了Linux网络协议栈中一系列互补的技术。这些技术用来增加多处理器系统的并行性和改善性能。这些技术包括:RSS: Receive Side Scaling (接收侧的缩放) RPS: Receive Pa转载 2016-10-09 10:25:26 · 663 阅读 · 0 评论 -
Android知识点汇总
1.Android 服务器服务名称参数都是Context类中的常量:传入的Name 返回的对象 说明WINDOW_SERVICE WindowManager 管理打开的窗口程序LAYOUT_INFLATER_SE原创 2016-06-12 13:55:08 · 286 阅读 · 0 评论 -
帧接收流程
1.网卡驱动会调用netif_rx、netif_receive_skb函数原创 2016-03-08 14:46:35 · 898 阅读 · 1 评论 -
linux timer(1)
1、alarm------------------------------------------- 如果不要求很精确的话,用alarm()和signal()就够了 unsigned int alarm(unsigned int seconds) 函数说明: alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数se转载 2013-11-05 18:52:57 · 638 阅读 · 0 评论 -
Linux 2.4.x 网络协议栈QoS模块(TC)的设计与实现
在传统的TCP/IP网络的路由器中,所有的IP数据包的传输都是采用FIFO(先进先出),尽最大努力传输的处理机制。在早期网络数据量和关键业务数据不多的时候,并没有体现出非常大的缺点,路由器简单的把数据报丢弃来处理拥塞。但是随着计算机网络的发展, 数据量的急剧增长,以及多媒体,VOIP数据等对延时要求高的应用的增加。路由器简单丢弃数据包的处理方法已经不再适合当前的网络。单纯的增加网络带宽也不能从根本转载 2013-11-21 15:06:22 · 978 阅读 · 0 评论 -
pfifo_fast
pfifo_fast是Linux内核默认的无类队列规范,例如:[root@Kendo ~]# tc qdisc show dev eth0qdisc pfifo_fast 0: bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1它并非单纯意义上的“先进先出”,而是具有优先级调度的,“bands 3”,事实上指明它有3个优先级转载 2013-11-21 15:05:13 · 2976 阅读 · 0 评论 -
RCU 机制-1
概述Read-copy update (RCU) 是一种 2002 年 10 月被引入到内核当中的同步机制。通过允许在更新的同时读数据,RCU 提高了同步机制的可伸缩性(scalability)。相对于传统的在并发线程间不区分是读者还是写者的简单互斥性锁机制,或者是哪些允许并发读但同时不 允许写的读写锁,RCU 支持同时一个更新线程和多个读线程的并发。RCU 通过保存对象的多个副本来保障读操作转载 2012-12-14 11:35:04 · 908 阅读 · 0 评论 -
Linux 2.6内核中新的锁机制--RCU
一、 引言众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍地增加,原因很简单,CPU的速度与访问内存的速度差距越来越大,而这种锁使用了原子操作指令,它需要原子地访问内存,也就转载 2012-12-13 10:25:43 · 388 阅读 · 0 评论 -
exit和_exit函数,atexit函数 abort函数
#include exit和_exit函数用于正常终止一个程序: _exit立即进入内核,exit则先执行一些清除处理(包括调用执行各终止处理程序,关闭所有标准I / O流等),然后进入内核。使用不同头文件的原因是:exit是由ANSI C说明的,而_exit则是由POSIX.1说明的。 由于历史原因,exit函数总是执行一个标准I/O库的清除关闭操作:对于所有打开流调用 f转载 2012-12-07 15:22:43 · 571 阅读 · 0 评论 -
linux 文件权限命令
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。 文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需转载 2012-12-04 17:33:48 · 387 阅读 · 0 评论 -
Linux文件系统启动过程及login的实现
1. busybox简介busybox是一个集成了一百多个最常用linux命令和工具的软件,它将许多常用的LINUX命令和工具结合到了一个单独的可执行程序中。虽然与相应的GNU工具比较起来,busybox所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中,已经足够了。 busybox在设计上就充分考虑了硬件资源受限的特殊工作环境。它采用一种很巧妙的办法减少自己的体转载 2012-12-04 09:43:46 · 1863 阅读 · 0 评论 -
多线程-资源回收
linux线程执行和windows不同,pthread有两种状态joinable状态和unjoinable状态,如果线程是joinable状态,当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符(总计8K多)。只有当你调用了pthread_join之后这些资源才会被释放。若是unjoinable状态的线程,这些资源在线程函数退出时或pthread_ex转载 2012-11-30 15:24:30 · 573 阅读 · 0 评论 -
backtrace-----打印进程异常退出时的堆栈信息
#include #include "debug_trace.h"#define TRACE_SIZE 1024static void trace_print(int signal_type){ int trace_id = -1; void *buffer[100]; char **info = NULL; trace_id = backtra原创 2012-11-30 10:36:50 · 925 阅读 · 0 评论 -
RCU-2
读-拷贝-更新(RCU)是为了保护在多数情况下被多个CPU读的数据结构而设计的另一种同步技术。RCU允许多个读者和写者并发执行(相对于只允许一个写者执行的顺序锁有了改进)。而且,RCU是不使用锁的,就是说,它不使用被所有CPU共享的锁或计数器,在这一点上与读/写自旋锁和顺序锁(由于高速缓存行窃用和失效而有很高的开销)相比RCU具有更大的优势。RCU是如何不使用共享数据结构而令人惊讶地实现多转载 2012-12-14 11:36:14 · 418 阅读 · 0 评论 -
Valgrind
Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析。你可以在它的环境中运行你的程序来监视内存的使用情况,比如C 语言中的malloc和free或者 C++中的new和 delete。使用Valgrind的工具包,你可以自动的检测许多内存管理和线程的bug,避免花费太多的时间在bug寻找上,使得你的程序更加稳固。Va转载 2013-08-06 17:08:34 · 531 阅读 · 0 评论 -
PATH
Linux系统下各种环境变量都通过修改/etc/profile文件来实现。由于是系统文件,修改此文件需要root权限。因此实现以下功能都需要用户拥有root权限。另:不要轻易修改profile文件中的现有内容。应在保证原有内容不变的前提下,在文件的最后插入新的一行。1.路径变量PATH当用户在某工作目录执行一个命令或者可执行程序时,若当前路径下不存在该程序,则系统将从PAT转载 2013-08-01 16:37:21 · 733 阅读 · 1 评论 -
提高 Linux 上 socket 性能
在开发 socket 应用程序时,首要任务通常是确保可靠性并满足一些特定的需求。利用本文中给出的 4 个提示,您就可以从头开始为实现最佳性能来设计并开发 socket 程序。本文内容包括对于 Sockets API 的使用、两个可以提高性能的 socket 选项以及 GNU/Linux 优化。为了能够开发性能卓越的应用程序,请遵循以下技巧:最小化报文传输的延时。 最小化系统调用的负载。转载 2013-03-20 09:53:44 · 630 阅读 · 0 评论 -
ASCII对照表
ASCII控制字符二进制十进制十六进制缩写可以显示的表示法名称/意义0000 0000000NUL␀空字符(Null)0000 0001101SOH␁标题开始0000 0010202STX␂本文开始0000 0011303ETX␃转载 2013-03-18 10:00:17 · 706 阅读 · 0 评论 -
Linux动态链接库.so文件的创建与使用
1. 介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。 程序函数库可分为3种类型:静态函数库(static libraries)、共享函数库(shared librar转载 2012-12-14 13:47:54 · 592 阅读 · 0 评论 -
linux_gcc_编译时头文件和库文件搜索路径.txt
一、头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始 ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH ※再找内定目录 /usr/include /usr/local/include /usr/lib/gcc-lib/i386-linux/转载 2012-11-30 14:23:48 · 373 阅读 · 0 评论