- 博客(43)
- 收藏
- 关注
原创 字符串数组
1、截取、增加、获得concat将两个或多个字符的文本组合起来,返回一个新的字符串。substring截取一个子串,起始位置和结束位置;substr截取一个子串,起始位置和长度 ;slice提取字符串的一部分,并返回一个新字符串(与 substring 相同)。indexOf返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1 。var a = "he...
2018-07-24 17:13:59
330
原创 js-函数属性和方法
特:函数实际参数:Arguments对象callee属性:引用当前正在执行函数; 1、属性lengtharguments数组的length属性指定了传递给该函数的实际参数数目;函数length属性返回该函数形式参数数目;只读属性;function check(args){ var actual = args.length; var ex...
2018-07-24 13:38:30
1897
原创 关于继承
1、静态方法(属于整个类)特点:成员属于某个类。对其他成员访问仍可以通过public、protected或private保留字来控制。创建:声明前加保留字static,分配内存(在类声明的外部写出静态属性的类型和名字就行了)。*特别:1)静态成员是在所有对象之间共享的,不能在静态方法里访问非静态元素2)class Pet{public: static int
2017-03-07 19:33:33
271
原创 网络
网络层次:应用层:包含应用间、服务器间的交流语言——通常时一种高级协议传输层:用于规定应用层的数据传输形式。包括数据完整性的检查、端口功能以及将数据分包(如果应用层未分包)网络层:规定如何识别源主机和目的主机物理层:规定如何通过物理中介(如以太网、调制解调器)发送原始数据。网络层:1、查看IP:$ ifconfig2、划分子网,假如建立一个包含10.
2016-12-22 11:43:34
426
原创 数据类型(基本内置类型)——枚举(枚举类型)、结构体(构造类型)、联合体(构造类型)
一、枚举与#define宏的区别1、#define宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值2、一般在编译器里,可以调试枚举常量,但是不能调试宏常量。3、枚举可以一次定义大量相关的常量,而#define宏一次只能定义一个 二、联合体在结构中各成员有各自内容的内存空间,一个结构变量的总长度是各成员长度之和;而在联合中,各成员共享一段内存空间,一个联合变
2016-12-21 16:11:31
744
原创 数据类型(对数据的操作)——奇葩关键字
一、乱世枭雄:static和extern:改变数据类型在内存中的位置或者改变作用域,作用在数据类型上1、解释:在C的世界里,不同代码“国度”以.c文件为国界分隔开来,在单个国家里有不同函数占山为王,每个C程序世界里只有一个君主(MAIN),main通过下传指令(参数),调用各种军阀(函数),来掌控。某军阀(函数)心怀叵测,不想单纯听从于main的指挥调度,树立了自己的政权旗帜static。
2016-12-20 20:41:21
476
原创 数据类型(基本内置类型)——指针和指针孩子(指针变量(指针类型)、数组(构造类型)、字符串、函数指针、空指针等)
一指针1、指针是变量:系统为指针分配内存空间;指针有自己的地址;指针能够存值,是地址;2、指针的类型:指针本身具有的类型:把指针生命语句里的指针名字去掉,剩下的部分就是这个指针类型int *ptr; //指针类型int *char *ptr; //指针类型char *int **ptr;
2016-12-19 16:38:02
779
原创 进程(特别概念四)
进程创建进程创建时都会被分配一个数据结构,称为进程控制块(PCB)进程ID:进程标识符,在PCB中进程分类交互进程、批处理进程、守护进程守护进程:由系统在开机时,通过脚本自动激活启动或超级管理用户root来启动,如/etc/init.d/httpd就是httpd服务器的守护进程,/etc/init.d/httpd文件:定义httpd服务器的启动脚本运行级别进
2016-12-02 11:31:50
335
原创 Linux文件描述符(特别概念三)
1、某个程序打开文件时,操作系统返回相应的文件描述符,程序为了处理该文件必须引用此描述符2、一个进程启动时,都会打开三个文件,标准输入、标准输出、标准出错处理。3、三个文件所对应的文件描述符分别为0、1、2,也就是宏替换STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO。4、函数scanf()使用stdin,函数printf()使用stdout5、用不
2016-12-01 15:13:37
445
原创 系统调用(特别概念二)
系统调用:指操作系统提供给用户程序调用的一组“特殊”接口。如,用户可以通过进程控制相关的系统调用来创建进程、实现进程调度、进程管理1、系统调用跟函数在C语言中,操作系统的系统调用是通过函数调用的形式完成,这些函数封装了系统调用的细节,将系统调用的入口、参数和返回值用C语言的函数调用过程实现在Linux系统中,系统调用函数定义在glibc中1)系统调用函数通常在成功时候返回0
2016-12-01 14:48:45
349
原创 系统的种种杂七杂八(顺序阅读六)
一、系统库为获得服务和用户信息而访问的配置文件(一)系统日志1、大多数系统程序将它们的日志信息输出到syslog服务。2、rsyslog的基础配置文件时/etc/rsyslog.conf,还会在其他地方发现。内容是:传统规则 和rsyslog扩展(以$开头的都时扩展),配置文件需要正确配置设施或优先级。3、故障排除:测试系统日志使用logger命令手动发送日志消息$ logge
2016-11-23 16:12:53
353
原创 用户进程init(顺序阅读五)
一、initinit主要负责启动和终止系统中的基础服务进程二、systemed1、systemed是面向目标的,定义一个要实现的目标以及它的依赖条件,systemd负责满足所有依赖条件以及执行目标。2、systemed的一个重要特性:它可以延迟一些服务和操作系统功能的开启,直到需要他么的时候再开启。3、systemed运行步骤:加载配置信息,判定启动目标,判定启动目标的
2016-11-22 16:58:36
405
原创 Linux内核的启动(顺序阅读四)
(一)引导装载程序工作1、工作一:将内核加载到内存,工作二:使用一系列内核参数启动内核。完成工作一:1)引导装载程序使用,基本(输入输出系统)(BIOS)或者,(统一可扩展固件接口)(UEFI),来访问磁盘。2)几乎所有磁盘设备都都有固件系统供BIOS通过(线性块寻址)访问硬件。2、完成工作二:1)引导装载程序会向内核传递一系列文本形式的内核参数来设定内核启动方式2)查
2016-11-22 10:58:17
481
原创 硬盘和文件系统(顺序阅读三)
一、分区1、分区工具:parted(文本命令工具,支持MBR和GPT)、gparted(图形版本)、fdisk(支持MBR)、gdisk(支持GPT)2、查看分区表:# parted -l3、更改分区表:两种方式:fdisk:更改分区表之后,fdisk向内核发送一个磁盘系统调用,告诉内核需要重新读取分区表,内核会显示一些调试信息供你使用dmesg查看parted:没有使用
2016-11-21 20:05:55
414
原创 内核管理设备(顺序阅读二)
一、设备的概括(一)1、设备就是文件发人员操作设备就像操作文件。普通用户也可以操作设备。如,Unix标准命令(如cat)可以访问设备。然而件接口对文所能执行的操作是有限制的。2、设备的某一种分类块设备(b)1、:程序从块设备中按固定的块大小读取数据。2、进程能够通过内核访问磁盘上的任意区块。因为磁盘的容量是固定的,索引起来也很方便。字符设备(c)1、:字符设备处理流数据,只
2016-11-21 12:05:30
866
原创 Linux文件结构(特别概念一)
1、在现代操作系统中,要利用大量的程序和数据,由于内存容量有限,且不能长期保存,于是人们想出了把这些数据以文件的形式放在外存中,需要时候将它们调入内存,从此就有了文件系统,它负责管理在外存上的文件,并把存取、共享和保护等手段提供给用户。1)从系统的角度看,文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统;从用户角度看,文件系统的主要目的是实现了对文
2016-11-04 15:41:30
460
原创 shell编程(特别概念五)
1、什么是shell当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell的程序。那么shell是什么呢?确切的说,shell是一个命令行解释器,它为用户提供一个像Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止,甚至编写一些程序。用户使用Linux时是通过命令来完成所需要工作的。一个命令就是用户和shell之
2016-11-04 09:12:27
346
原创 函数
函数声明与定义不同函数的声明就是声称一个函数的名字,只是说明函数的名字,不涉及函数的实现,即没有函数体,所以函数的声明只包括前三个部分。函数定义就是确定一个函数的意义,即让函数具有某项功能,但是这里可不是只有函数体,总要指明这个函数体是那个函数的吧,所以函数的定义包含了一个函数的所有部分。下面以一个名为fun的函数为例来说明函数的声明与定义,fun函数的声明如下:int fun(i
2016-11-03 19:30:08
228
原创 预编译——关于#和##
1、在C语言宏中,#的功能是将器后面的宏参数进行字符串化操作,对它所引用的宏变量通过替换后在其左右各加上一个双引号#define WARN_IF(EXP) \do{ if (EXP) \ fprintf (stderr,"Warning:"#EXP"\n");} \while(0)那么实际使用中会出现下面所示的替换过程:WARN_IF (divider == 0);被
2016-11-03 17:04:33
1829
原创 预编译——老二文件包含和老三条件编译
预处理程序提供了条件编译的功能,可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。条件编译有三种形式,下面分别介绍。1、第一种形式#ifdef 标识符 程序段1#else 程序段2#endif它的功能是,如果表示符已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为
2016-11-03 15:13:53
316
原创 预处理——老大宏定义和使用技巧
所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成的。对当一个源文件进行编译时,系统将自动引用预处理程序中的预处理部分进行处理,处理完毕自动进入对源程序的编译。C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等,合理地使用预处理功能编写的程序便于阅读、修改、移植和调试,也有利于模块程序设计。宏定义是由源程序
2016-11-03 14:27:37
430
原创 内存管理——常见内存错误及对策
发生内存错误是 件麻烦事,编译器不能自动的发现这些错误,通常是在程序运行时才能捕捉到,而这些错误大多没有明显症状,时隐时现增加了改错的难度。1)内存被分配成功,却使用了它。如果指针p是函数的参数,那么在函数的入口处用“assert(p != NULL)"进行检查;如果用malloc或new来申请内存,应该用”if(p == NULL)"或“if (p!=NULL)"进行预防处理。2)内存分
2016-11-02 20:08:25
764
原创 内存管理——数据存放位置和野指针
一、1、未初始化的全局变量(.bss段)bss段用来存放那些没有初始化和初始化为0的全局变量int bass_array[1024 * 1024];int main(int argc, char* argv[]){ return 0;}#gcc -g bss.c -o bss.exe#ls -l bss.exe-rwxrwxr-x 1 root root 597
2016-11-02 16:19:34
483
原创 语句——循环语句的效率
1、在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环的次数。for (col=0; col<5; col++ ){ for (row=0; row<100; row++) { sum = sum + a[row][col]; }}2、如果循环体内存在逻辑判断,并且循环次数很大,宜将
2016-11-02 09:46:36
297
原创 语句——if语句中各种值和零值比较
1、布尔变量和零值比较:if(flag)if(!flag)2、整型变量和零值比较:if (value == 0)if (value != 0)3、浮点变量和零值比较:if ( (x>=-EPSINON) && (x4、指针变量和零值比较:if (p == NULL)if ( p != NULL)
2016-11-02 09:32:28
619
原创 数据类型——变量常量和声明与定义
在C的世界里,不同代码“国度”以.c文件为国界分隔开来,在单个国家里有不同函数占山为王,每个C程序世界里只有一个君主(MAIN),main通过下传指令(参数),调用各种军阀(函数),来掌控。某军阀(函数)心怀叵测,不想单纯听从于main的指挥调度,树立了自己的政权旗帜static。static不同听从于main的调度,自己做主,私藏金库(空间)。不同的国家(不同的.c文件)之间通过exte
2016-11-01 14:21:46
817
原创 终于清晰啦!offsetHeight、scrollHeight、clientHeight和offsetTop、scrollTop、clientTop
一、offsetHeight、scrollHeight、clientHeight l你好ll白布a隐隐约约隐隐约约隐隐约约 var tDiv = document.getElementById('div2'); console.log("clientHeight:
2016-10-17 20:06:42
2697
原创 div.style的属性
一、常用属性:1、Height:设置DIV的高度。2、Width:设置DIV的宽度。3、margin:用于设置DIV的外延边距,也就是到父容器的距离。margin-left、margin-right、margin-top、margin-bottom。4、padding:用于设置DIV的内边距。padding-left、padding-right、padding-to
2016-10-17 14:20:09
2923
原创 php上传文件的准备工作
一,上传一个文件的过程涉及两个方面。首先,必须显示HTML表单,并且编写正确的代码以允许上传。然后,在提交表单时,PHP脚本必须把上传的文件复制到其最终目的地。二,为了让这个过程工作,必须做好以下几件事必须设置正确PHP 必须有一个临时存储目录,它具有正确的权限;必须有一个最终存储目录,它具有正确的权限;三,则必须建立某些设置
2016-10-09 16:24:39
232
原创 DOM的一些方法和属性
一1、getElementById()方法2、getElementsByTagName()方法3、getAttribute()方法4、setAttribute()方法二1、childNodes属性:返回一个数组,这个数组包含给定元素节点的全体子元素。空格和换行符都会被解释为节点,而它们也全部包含childNodes属性所返回的数组中。2、nodeType属性:元素节点—
2016-09-11 17:20:35
567
原创 JavaScript数据类型——数据类型的一些特点
1、八进制字面量在严格模式下是无效的,会导致支持的JavaScript引擎抛出错误。2、如果某次计算结果得到了一个超出JavaScript数值范围的值,那么这个值将自动转换成特殊的Infinity值。 确定一个数值是不是有穷的(是不是位于最小和最大的数值之间),可以使用isFinite()函数。3、isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会确定这
2016-09-11 14:33:33
482
原创 对象——对象三个特性(第二层)
原型属性:在ECMAScript5中,Object.getPrototypeOf():将对象作为参数传入,可以查询它的原型。在ECMAScript3中,o.constructor.prototype来检测一个对象的原型。isPrototypeOf()方法:要检测一个对象是否是另一个对象的原型。var p = {x:1};
2016-08-31 13:46:14
395
原创 对象——对象的属性一些操作(第二层)
一、属性访问错误和设置错误属性访问错误: 查询一个不存在的属性并不会报错,如果在对象o自身的属性或继承的属性均未找到属性x,属性访问表达式o.x返回undefined。 如果对象不存在,那么查询不存在对象的属性就会报错。null和undefined值都没有属性。因此会报错。设置错
2016-08-30 16:08:22
491
原创 对象——创建对象的三种方法第二层
创建对象:三种方法1、对象直接量方法:对象直接量是由若干名值对组成的映射表。2、通过new创建对象: new运算符创建并初始化一个新对象。关键字new后跟随一个函数调用。 这里的函数称作构造函数,构造函数用以初始化一个新创建的对象。 Javascript语言核心中的原始类型都包含内置构造函数。例如,var o = new Object();
2016-08-30 15:16:34
258
原创 对象——基础概念第一层
对象的第一层:1、对象:属性的无序集合2、每个属性:都是一个名值对。 属性名:是包含空字符串在内的任意字符串。值:可以是任意JavaScript值,或者可以是一个getter或setter函数(或两者都有)。3、每个属性还有一些与之相关的值,称为属性特性:可写(是否可以配置该属性的值)。可枚举(是否可以通过for/in循环返
2016-08-30 14:33:58
407
原创 事件——第四层
鼠标事件: 事件类型: click:当用户按下并释放鼠标按键或其他方式‘激活’元素触发。 dbclick:当用户双击时触发。 mousedown:当用户按下鼠标按键时触发。 mouseup:当用户释放鼠标按键时触发。
2016-08-28 19:16:46
316
原创 事件类型——事件第三层
第三层:事件类型: 传统事件类型 Window事件 鼠标事件 键盘事件 DOM事件 HTML5事件 触摸屏和移动设备事件注册事件处理程序:
2016-08-27 08:32:01
491
原创 javascript数组的一些方法(二)
一、方法概述:1、方法第一个参数:A、接受一个函数, B、 对数组的每个元素调用该函数 C、如果是稀疏数组,对不存在的元素不调用传递的函数。
2016-08-26 16:47:17
470
原创 javascript数组的一些方法
1、 删除、添加数组元素的一些方法,改变数组,并返回值 push()和pop():push()在数组尾部添加一个或多个元素,返回数组长度。 pop()删除数组最后一个元素,返回删除的值var stack =[];stack.push(1,2); //stack:[1,2]
2016-08-25 21:15:38
171
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人