大小堆 排序 From:Binary Min — Max Heap andexample of heapSortA binary heap is a heap data structure created using a binary tree.binary tree has two rules -Binary Heap has to be complete bi
归并排序 WIKI definition:Conceptually, a merge sort works as follows:Divide the unsorted list into n sublists, each containing 1 element (a list of 1 element is considered sorted).Repeatedly merge su
外部排序 External sorting is required when the data being sorted do not fit into themain memory of a computing device (usuallyRAM) and instead they must reside in the slowerexternal memory (usually a
Content-Type Header Field The purpose of the Content-Type field is todescribe the data contained in the body fully enough that the receiving user agent can pick an appropriate agent or mechanism topresent the data to the
python 面试( interview ) 总结面试中关于python 的问题,包括 python 数据结构,python 第三方库, python 算法,python 性能:1. 闭包(closure):we have a closure in Python when a nested function references a value in its enclosing scope.The criteria
Javascript运行环境异步机制 在C#,Java中,异步方法,通常是伴随多线程,并发等术语一起出现的,比如C#中的async方法,是运行在一个线程池线程上,并且在异步方法运行完成后,有一个回调函数通知主线程。那么由于Javascript是单线程的,它的异步又是怎么解释的?首先对异步方法给一个定义,什么样的方法算是异步方法。我认为异步方法最主要有2点,一个是不阻塞当前代码的执行,另一个是有回调方法。即异步方法运行完
Http header Etag From:ETAG此文详细说明了ETAG的作用。我发现网上很多人都在询问ETAG的对于优化网站的作用,有些人直接建议关闭ETAG。这篇博文可以完整的说明ETAG的作用,是否关闭,或者如何配置,要根据自己网站的情况而定。开始ETAG测试首先在浏览器输入以下访问地址比如我们访问某网站:http://xxxxxxxx/第一次的http请求代码如下(只包含头部信息)——
Linux memory performance analysis Memory metrics: 1.Free memoryCompared to most other operating systems, the free memory value in Linux should not bea cause for concern.“The Linux kernel allocates most unused memory as file sys
Generate high cpuload on specified cpu core Purpose : generate CPU load on CPU cores to test server thoughput related to cpu switch.Step: 1. Set affinity mask to include cpu and only cpupthread_setaffinity_np(pthread_self(), sizeof(cpu_
hash table and hash algorithm Good explaination from geeker:Usage and Lingo:Hash tables are used to quickly store and retrieve data (or records).Records are stored in buckets using hash keysHash keys are calculated by applyi
linux seq 锁实现 seq lock: 2.6版本内核引入Application: 用于读写共享数据;Benifit: 读者不影响写锁,单一的写者与多个读者并发执行;Implement: 利用序列计数器,写锁获取或释放都会使序列值加1,读取数据前和后检查序列号: 1.值为偶数,则没有写者持有锁; 2.利用异或 检查序列值是否发生改变,改变了则期间写者对其加1了。#i
threadPool example Thread Pools are useful when you need to limit the number of threads running in your application at the same time. There is aperformance overhead associated with starting a new thread, and each thre
WSGI Answer 1:SCGI (like FastCGI) is a (serialized) protocol suitable for inter-process communication between a web-server and a web-application.WSGI is a Python API, connecting two (or more) Pytho
kernel space and user space 1.What's the difference between kernel stack and user stack ?In short, nothing - apart from using a different location in memory(and hence a different value for the stackpointer register), and
Linux schedule introduction In Linux kernel, the scheduler is invoked by periodic timer interrupt. This iscalled periodic scheduling which is essential for preempting tasks that have consumed more CPU cycles in order tooffer
Introduction to the Python Web Server Gateway Interface (WSGI) In breif WSGI is a specification, laid out in PEP 333, for astandardized interface between Web servers and Python Web frameworks/applications.The goal is to provide a relatively simple yet com
connect nonblock mode 非阻塞connect(non-block mode connect)套接字执行I/O操作有阻塞和非阻塞两种模式。在阻塞模式下,在I/O操作完成前,执行操作的函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。客户端调用connect()发起对服务端的socket连接,如果客户端的socket
Non blocking IO web server Many IO related system calls, like read(2), will block, that is not return, until there is activity. A socket can be placed in "non-blocking mode" which means that these system calls will return im
Real time system The most common designs are:Event-driven – switches tasks only when an event of higher priority needs servicing; called preemptive priority, or priority scheduling.Time-sharing – switches tasks
Apache thrift RPC (Remote Procedure Call) is likecalling a function, only that it is present remotely on a different serveras a service. A service exposes many such functions/procedure to its client. And client
linux_for_each_entry 在Linux内核源码中,经常要对链表进行操作,其中一个很重要的宏是list_for_each_entry:意思大体如下: 假设下面几个结点,则第一个member代表head,list_for_each_entry的作用就是循环遍历每一个pos中的member子项。list_for_each_entry应用: 它实际上是一个 for 循
Linux 双链表 list_for_each_entry 实现 们知道list_for_each_entry会用到list_entry,而list_entry用到container_of,所以首先讲讲container_of。在讲container_of之前我们不得不提到offsetof,因为在container_of中会使用到它,所以我们看下来,把list_for_each_entry函数的用法理顺我们对整个Linux中经常用到的一些函数就会比较
内核双链表 list_entry实现 list_entry(ptr, type, member)语句理解 list_entry(ptr, type, member)语句定义在文件include/linux/list.h中。00342: /**00343: *list_entry-getthestructforthisentry00344: *@ptr:the&structlist_headpointer.00
write 操作文件注意事项 多线程同时写文件可能存在的问题:1.文件被另一个线程占用,fd不可写,导致write失败;2.write 拷贝大量数据到文件时,一次操作不能全部写入,需要循环检测,重复写入才能保证数据完整性。/* record the tty information */typedef struct LocoTty_s{ U32 tid; /**< the tty
TCP 流协议和消息分帧的理解 TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接。应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据长度将保持不变。由TCP传递给IP的信息单位称为报文段或段(segment)。两个应用程序通过TCP连接交换8bit字节构成的字节流。TCP不
arp resolution Origin:点击打开链接ARP协议的报文格式结构ether_header定义了以太网帧首部;结构arphdr定义了其后的5个字段,其信息用于在任何类型的介质上传送ARP请求和回答;ether_arp结构除了包含arphdr结构外,还包含源主机和目的主机的地址。定义常量#define EPT_IP 0x0800 /* type: I
C Macro UG /** set a bit in bit32. loc from 0~31 */#define BIT_SET(bit32, loc) ((bit32) |= (0x1 /** clear a bit in bit32. loc from 0~31 */#define BIT_CLEAR(bit32,loc) ((bit32) &= ~(0x1 /**
C 左移 右移 opration 先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用int i = 1;i = i 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成 000...0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下
同步 异步 阻塞 非阻塞机制 知乎:阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就
getchar and getch 1.从缓冲区读走一个字符,相当于清除缓冲区2.前面的scanf()在读取输入时会在缓冲区中留下一个字符''(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误3.getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和Tab)getcha
JAVA中CLASS.FORNAME的含义 Class.forName(xxx.xx.xx) 返回的是一个类, .newInstance() 后才创建一个对象 Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段Class aClass = Class.forName(xxx.xx.xx); Object anInstance = aClass.newInstance(
big O notation 大O符号是一种算法复杂度的相对表示方式。这个句子里有一些重要而严谨的用词:相对(relative):你只能比较相同的事物。你不能把一个做算数乘法的算法和排序整数列表的算法进行比较。但是,比较2个算法所做的算术操作(一个做乘法,一个做加法)将会告诉你一些有意义的东西;表示(representation):大O(用它最简单的形式)把算法间的比较简化为了一个单一变量。这个变量的选
数字签名 1 引言 为了确保数据传输的安全性,不得不采取一系列的安全技术,如加密技术、数字签名、身份认证、密钥管理、防火墙、安全协议等。其中数字签名就是实现网上交易安全的核心技术之一,它可以保证信息传输的保密性、数据交换的完整性、发送信息的不可否认性、交易者身份的确定性等。 2 数字签名的概念 数字签名在ISO7498—2标准中定义为:“附加在数据单元上的一些数据,或是对数据单
How To "arp -a" In IPv6 原文:ipv6 ndpI am seeing a lot of searches for "arp -a" "IPv6". So, you want to know how to perform "arp -a" in IPv6? Well, I'll show you. The equivalent of ARP (Address Resolution Protocol) in
IPV6 get mac(NDP) You want to use the neigh function of the ip command to show IPv6 neighbours, like so:$ ip -6 neighfe80::200:ff:fe00:0 dev eth0 lladdr 00:0e:54:24:23:21 router REACHABLEfe80::202:b0ff:fe01:2ab
IPv6邻居发现协议 IPv6邻居发现协议NDP(Neighbor Discovery Protocol,邻居发现协议)是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进。作为IPv6的基础性协议,NDP还提供了前缀发现、邻居不可达检测、重复地址监测、地址自动配置等功能。1.地址解析:地址解析是一种确定目的节点的链路层地址的方法。NDP中的地址解析功
shell awk 用法总结 关于NR和FNR的典型应用:现在有两个文件格式如下:#cat account张三|000001李四|000002#cat cdr000001|10000001|20000002|30000002|15想要得到的结果是将用户名,帐号和金额在同一行打印出来,如下:张三|000001|10张三|000001|20李四|000002|30
shell 进制转换 shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值。如:以 0 开头就是 8 进制.以0x 开头就是16 进制数.使用方法:其它进制转为10进制八进制转十进制:[chengmo@centos5 ~]$ ((num=0123));[chengmo@centos5 ~]$ echo $num
taskset- CPU affinity Nametaskset - retrieve or set a process's CPU affinitySynopsistaskset [options] mask command [arg]...taskset [options] -p [mask] pidDescriptionTaskset is used to set or retrieve th
/proc/sys description 一、前言本文档针对OOP8生产环境,具体优化策略需要根据实际情况进行调整;本文档将在以下几个方面来阐述如何针对RedHat Enterprise Linux进行性能优化。1) Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的。2) Linux性能诊断工具,介绍如何使用Linux自带的诊断工具进行性能诊断。加粗斜体表示可以直接运行的
10Gb Ethernet performance, tuning and functionality The default configuration of Linux is not tuned to run 10G bit/s traffic.performance:Multiple processorsFast memory(DDR31600 MHZ)PCIe2.0 X8 at leastMSI-Xinterrupts SR-IOV(Server,
linux vlan 配置 1.安装vlan(vconfig)和加载8021q模块 #aptitude install vlan #modprobe 8021q 2.使用linux vconfig命令配置vlan #vconfig add eth0 100 #vconfig add eth0 200 在eth0接口上配置两个VLAN #vconfig set_flag eth0.100 1 1
IRQ Affinity 硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能。现在的服务器上动不动就是多 CPU 多核、多网卡、多硬盘,如果能让网卡中断独占1个 CPU (core)、磁盘 IO 中断独占1个 CPU 的话将会大大减轻单一 CPU 的负担、提高整体处理效率。VPSee 前天收到一位网友的邮件提到了 SM
linux(SUSE) service 自启动服务 1.what is rc_statusThe commands from rc.status are actually SuSe specific I think. AFAICT they handle two things: output to the user and the final return status of the script. rc_status checks i
Shell 处理命令cmdline 选项 处理命令行参数是一个相似而又复杂的事情,为此,C提供了getopt/getopt_long等函数,C++的boost提供了Options库,在shell中,处理此事的是getopts和getopt.getopts和getopt功能相似但又不完全相同,其中getopt是独立的可执行文件,而getopts是由Bash内置的。先来看看参数传递的典型用法: * ./tes
akw获取外部变量 这里提到awk,相信写shell的朋友都会接触到。AWK 是一种用于处理文本的编程语言工具。AWK 提供了极其强大的功能:可以进行正则表达式的匹配样式装入流控制数学运算符进程控制语句内置的变量和函数可以把awk看作一门完全的程序设计语言,它处理文本的速度是快得惊人的。现在很多基于shell 日志分析工具都可以用它完成。设计简单,速度表现很好。 涉及到以上六个方面内容,我会在以后文章
Maven 实战 坐标是什么?为什么要规划?坐标是Maven最基本的概念,它就像每个构件的身份证号码,有了它我们就可以在数以千万计的构件中定位任何一个我们感兴趣的构件。举个最简单的例子,如果没有坐标,使用JUnit的时候,用户就需要去下载依赖jar包,用依赖的方式,简单配置使用如junit:junit:4.8.2就可以了。这里第一个junit是groupId,第二个junit是artifactId,4.8.
git error 1.按步骤执行git cmd:git clone ssh:..git checkout developscp -p -P 29418 egjkkog@gerrit.ericsson.se:hooks/commit-msg .git/hooks/git pullgit add .git commit git push origin HEAD:refs/for/deve
bash 与 csh 区别 BASH中的算术运算表达式定义变量:Var=2Var1=3Var2=4可用的写法:1、Var=$[$Var1 + $Var2] 或 Var=$[$Var1 + 1]2、Var=$[Var1 + Var2] 或 Var=$[Var1 + 1]3、Var=$(($Var1 + $Var2)) 或 Var=$(($Var1 + 1))
Xargs用法详解 1. 简介 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:find /sbin -perm +700 |ls -l 这个命令是错误的find /sbin -perm +700 |xargs ls -l 这样才是正确的xargs 可以读入 stdin 的资料,并且以空白字元或
tr 删除控制字符 tr(translate缩写)主要用于删除文件中的控制字符,或进行字符转换。语法:tr [–c/d/s/t] [SET1] [SET2]SET1: 字符集1SET2:字符集2-c:complement,用SET2替换SET1中没有包含的字符-d:delete,删除SET1中所有的字符,不转换-s: squeeze-repeats,压缩SET1中重复的字符-t: trun
AWK 循环 循环awk有三种循环:while循环;for循环;special for循环。$ awk '{ i = 1; while ( i <= NF ) { print NF,$i; i++}}' test通过while语句实现循环$ awk '{for (i = 1; i test 通过for语句实现循环变量的初始值为1,若i小于可等于NF
sed N与n 用法说明 echo -e "1234"的结果是:1234echo -e "1234" | sed -n 'N;s// /;p'sed先读入第一行到pattern space,然后执行N命令,将第二行追加进pattern space这时pattern space里面就是12,然后执行s// /,将换行符替换成空格,最后打印。echo -e
累积流图 CFD 如果你负责向你的客户交付结果,并且你还没有使用过累积流图(cumulative flow diagram - CFD)管理项目或者服务的开发,那么请你仔细看看这个 工具。你很快就会每天都希望看到它。一项工作何时才算完成?只有被交付到客户手中,才算完成,因为只有这时我们才能从中收取费用。正因如此,敏捷团队用交付给客户的功能/用户故事的数量来度量项目进度。最初,Scrum开始使用燃尽图
字符数组 与 字符指针(使用前分配内存) 1.字符指针可以指向一个字符串。我们可以用字符串常量对字符指针进行初始化。例如,有说明语句:char *str = "This is a string.";是对字符指针进行初始化。此时,字符指针指向的是一个字符串常量的首地址,即指向字符串的首地址。这里要注意字符指针与字符数组之间的区别。例如,有说明语句:char string[ ]="This is a string.";
C++ unnion 摘自C++ PRIMER & C PROGRAMING:1.缺省情况下 union 的成员都是公有成员 union 的名字可以被用在任何类名可以被使用的地方 例如:// TokenValue类型的对象TokenValue last_token;// TokenValue 类型对象的指针TokenValue *pt = new TokenValue;
Basic Concept 1.ADT抽象数据类型(Abstract Data Type)是指一个数学模型以及定义在该模型上的一组操作。ADT包括数据数据元素,数据关系以及相关的操作。即ADT{数据对象:(数据元素集合)数据关系:(数据关系二元组结合)基本操作:(操作函数的罗列)}抽象数据类型(ADT)是一个实现包括储存数据元素的存储结构以及实现基本操作
Agile Programing Agile——敏捷开发,作为CMM神话崩溃后被引入的一套新的软件开发模式,这几年来被广泛引起关注,并被寄予厚望。敏捷开发在其他业界的应用是否理想不得而知,但以下总结了我所在公司的敏捷开发试验,希望可以达到管中窥豹的目的。敏捷开发宣言——个体和交互 胜过 过程和工具可以工作的软件 胜过 面面俱到的文档客户合作 胜过 合同谈判响应变化 胜过 遵循计划虽然右项也有价值,但
Pair Programming 在敏捷软件开发的各种实践中,结对编程(Pair Programming,下文简称Pair)是特别有争议的。Pair有一个特点,那就是还没有进行过任何Pair实践前,你很可能对它已经有了“喜欢” 或者是“讨厌”的印象。如果有人问你,你喜欢持续集成吗?你多半会回答:不是很肯定,需要试试看。但如果有人问你,你喜欢Pair吗?我猜你会马上给予明 确的肯定或否定的回答。喜欢它的人会觉得好处多多而成本低低,不
Agile software Development 敏捷软件开发 敏捷开发是一种软件开发方法,基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作。 敏捷宣言的诞生: 2001年2月11日到13日,17位软件开发领域的领军人物聚集在美国犹他州的滑雪胜地雪鸟(Snowbird)雪场。经过两天的讨论,“敏捷”(Agile)这个词为全体聚会者所接受,用以概括一套全新的软件开发价值观。这套价值观,通过一份简明扼要的《敏捷
Develop Model 敏捷开发模式是以人为核心,迭代,循序渐进的开发方法。 主要的开发方法: 1.极限编程(XP):降低需求变化的成本; 2.Scrum; 3.精益开发(Lean Development):不断完善开发过程; 4.动态系统开发方法(DSDM); 5.特征驱动开发(Feature Driver Development); 6.水晶开发(
Linux LMA AND VMA 浅析 对于ROM来说,CPU 也是可以直接从ROM里面读取代码,然后运行的。为何还要前面提到的,弄个LMA 和VMA不同,搬来搬去的呢?因为ROM,顾名思义,是只读的,只能读取,不能写入的。而程序中的代码段,由于只是被读取,不涉及到修改写入,是没有问题的。但是对于数据段和bss位初始化段来说,里面的所有的程序的变量,多数都是在运行的时候,不仅要读取,而且要被修改成新的值,然后写入新的值的,所以,如果
排序算法稳定性分析 定排序这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保
C++ 对象内存布局 (下) 重复继承 下面我们再来看看,发生重复继承的情况。所谓重复继承,也就是某个基类被间接地重复继承了多次。 下图是一个继承图,我们重载了父类的f()函数。 其类继承的源代码如下所示。其中,每个类都有两个变量,一个是整形(4字节),一个是字符(1字节),而且还有自己的虚函数,自己overwrite父类的虚函数。如子类D中,f()覆盖了超类的函数, f1()和f2() 覆盖
C++ 虚函数表解析 前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法
ENUM C++ ENUM概况enum枚举类型是C/C++中的一种数据类型,与struct和class一样是用户自定义的类型,其特点在于enum类型的变量取值是有限的,是可以一一列举出来的。 ENUM定义C++ enum枚举格式:enum {};enum {}; 第一个C++ enum枚举值对应着一个整型数,通常情况下如果其中的枚举常量没有定义数值,
atoi 函数实现 #define INT_MAX ((int)0x7FFFFFFF) #define INT_MIN ((int)0x80000000)//#define INT_MAX (~(unsigned int)0/2)bool valid = true;int myatoi(const * str){ int num = 0; valid = false; if(NULL != st
C的二进制表示 对于有符号整型数的简单认识就是,最高位为符号位,0为正,1为负,那么剩下几位应该如何表示呢?理所当然的认为,既然是1表示为0000 0001(假设为8位整型数,下同),那么-1就应该表示为1000 0001了。但是,在C语言里,-1的正确表示应该是1111 1111,即0xFF。因为C语言里,对整型数是采用Two’s complement表示法,而前面我的理解则是Sign-Magnitude表
内存分配方式 内存分配方式有三种:(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3) 从堆上分配,亦称动态内存分配。程序在运
(嵌入式)位(bit)操作 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。 对这个问题有三种基本的反应:1)不知道如何下手。该被面者从没做过任何嵌入式系统的工作。2) 用bit fields。Bit fields是被扔到C语言死角的东西,它保证你的代码在不同编译器之间是
strlen()实现 一个10分的strlen函数了,完美的版本为:int strlen( const char *str ) //输入参数const,2分{ assert( strt != NULL ); //断言字符串地址非0,3分 int len; while( (*str++) != '\0' ) // 3分 { len++; }
C++静态成员变量和静态成员函数 数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员. 非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以
python lambda Small anonymous functions can be created with the lambda keyword. This function returns the sum of its two arguments:lambda a,b: a+b. Lambda functions can be used wherever function objects a
C基本数据类型 速查表:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65536 (2 Bytes)int -2147483648 ~ +2147483647 (4 Bytes)unsigned int 0 ~ 4294967295 (4 Bytes)long == int
c big endian OR little endian 【大端(Big Endian)与小端(Little Endian)简介】Byte Endian是指字节在内存中的组织,所以也称它为Byte Ordering,或Byte Order。 对于数据中跨越多个字节的对象, 我们必须为它建立这样的约定:(1) 它的地址是多少?(2) 它的字节在内存中是如何组织的? 针对第一个问题,有这样的解释: 对
数据结构对齐 对齐的算法: 由于各个平台和编译器的不同,现以本人使用的gcc version 3.2.2编译器(32位x86平台)为例子,来讨论编译器对struct数据结构中的各成员如何进行对齐的。 在相同的对齐方式下,结构体内部数据定义的顺序不同,结构体整体占据内存空间也不同,如下: 设结构体如下定义: struct A { int a;
算法分析 常用的排序算法的时间复杂度和空间复杂度排序法最差时间分析平均时间复杂度稳定度空间复杂度冒泡排序O(n2)O(n2)稳定O(1)快速排序O(n2)O(n*log2n)不稳定O(log2n)~O(n)选择排序O(n2)O(n2)稳定O(1)二叉树排序O(n
编辑器 很多场合下我们会用到纯文本编辑器,Windows自带的记事本功能很简陋,因此我们从网友的投票提名中选取了前五个最佳的文本编辑器(实际上有六个)。这些编辑器实际上主要适合程序员使用,他们的清单如下。 Notepad++ (Windows) 优于Windows记事本的一个文本编辑器,完全免费且开源,对于不同的编程语言可以实现语法高亮,代码折叠以及宏,起可定制性非常强。
python list排序 1.先说一下iterable,中文意思是迭代器。Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象。iterable主要包括3类:第一类是所有的序列类型,比如list(列表)、str(字符串)、tuple(元组)。第二类是一些非序列类型,比如dict(字典)、file(文件)。第三类是你定义的任何包含__iter__()或__getitem__
JS eval() eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。 需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值,简单示例如下:var code1='"a" + 2'; //表达式varcode2='{a:2}'; //语句alert(eval(code1)); //->'
SQL case when Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case
会话技术 一、什么是会话技术简单的说:客户开一个浏览,点击多个超链接,访问服务器多个Web资源,然后关闭浏览器,整个过程称之为一个会话。问:若多个用户访问服务器产生了各自的数据需要保存,那么就可以用会话技术来保存了。二、Cookie技术1. 概念:cookie技术是客户端的技术,代表数据会保存在客户端中。服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。这样当用户使用
session与cookie概念详解 在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是request.COOKIES[XXX]和request.session[XXX],其中XXX是您想要取得的东西的key,但是这两者的原理和实现方式确是非常的不同。 首先介绍Cookie,只要是HTTP协议,就会有COOKIE这个东西; 只要您的浏览器没有禁用Cookie,就 可是使用它。而且是不
python os.path os.path模块basename('文件路径') 去掉目录路径,返回fname文件名 1 import os 2 os.path.basename('/Volumes/1.mp4') #输出('1.mp4')dirname('文件路径') 去掉文件名,返回目录路径 1 import os 2 os.path.dirname('/Volumes/1.mp4'
浏览器文件下载及文件名编码问题 Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。当 Internet Explorer 接收到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名。(请注意,这是设计导致的;无法使用此功能将文档保存到用户的计算机上,而不向用户询问保存位置。)Content-Disposition就是当用户想把请求所得的
SVN svn-base 系统找不到指定的文件 svn服务器架设在linux系统上,svn客户端在windows上,在update的时候可能会出现“Can't open file. XXXX/tmp/text-base/XX.svn-base 系统找不到指定的文件”的错误。 这是由于Linux服务器上的目标文件中存在两个相同文件名的文件。因为linux系统的文件名区分大小写,windows系统不区分文件名的大小写,例如re
C/S架构和B/S架构的概念和区别 C/S 架构C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。C/S 架构也可以看做是胖客户端架构。因为客户端需要实现绝大多数的业务逻辑和界面
python 目录操作 判断是否为目录在Python中可以使用os.path.isdir()函数判断某一路径是否为目录。其函数原型如下所示:os.path.isdir(path)其参数 path为 要进行判断的路径。如果是则返回TRUE,否则返回FALSE。判断是否为文件在Python中可以使用os.path.isfile()函数判断某一路径是否为文件。其函数原型如下所示。os.path.is
python uuid uuid是一种唯一标识,在许多领域作为标识用途。python的uuid模块就是用来生成它的。闲话不说,python提供的生成uuid的方法一共有4种,分别是:1.从硬件地址和时间生成2.从md5算法生成3.随机生成4.从SHA-1算法生成他们在uuid模块里对应uuid1, uuid3, uuid4, uuid5这几个方法,注意没有uuid2。下面是示例:
SNMP 监控 SNMP的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB:体系结构,改进后的协议就是著名的SNMP。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。现在SNMP已经出到第三个版本的协议,其功能较以前已经大大地加强和