0%

基本概念

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。 数据库服务器、数据库和表的关系如下:

mark

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品,只是存储引擎不同!

进程是操作系统虚拟出来的概念,用来组织计算机中的任务。它从诞生到随着CPU时间执行,直到最终消失。不过,进程的生命都得到了操作系统内核的关照。就好像疲于照顾几个孩子的母亲内核必须做出决定,如何在进程间分配有限的计算资源,最终让用户获得最佳的使用体验。内核中安排进程执行的模块称为调度器(scheduler)。这里将介绍调度器的工作方式。

结构体和指针是数据结构的根基,所以这篇博客这算是对结构体有一个重新的认识,主要内容包括:匿名结构体、结构体的自引用、结构体的不完整声明、结构体内存对齐、位段的使用、联合体的应用场景等等。

先说说函数栈帧的概念,函数栈帧又叫函数运行时堆栈,栈帧也叫过程活动记录,是编译器用来实现函数调用的一种数据结构。这个该概念说起来比较抽象,简单的说就是函数在被调用时的一块空间,这个空间由esp寄存器和ebp寄存器共同维护。首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(低地址)。

mark 可以使用 file 命令,并添加 -i--mime 参数来查看一个文件的字符编码,但是这种查看编码的方式并不是准确,比如我在CentOS7.3 测试的时候它把GBK编码的文件识别成了ISO8859-1,所以最好是自己明白文件的原始编码。

监听器 listener

其中 servlet规范包括三个技术点:servlet listener filter

什么是监听器?

监听器就是监听某个对象的的状态变化的组件

监听器的相关概念: 事件源:被监听的对象 —– 三个域对象 request、session、servletContext 监听器:监听事件源对象 事件源对象的状态的变化都会触发监听器 —6+2 注册监听器:将监听器与事件源进行绑定 响应行为:监听器监听到事件源的状态变化时 所涉及的功能代码 —程序员编写代码

监听器有哪些?

第一维度:按照被监听的对象划分:ServletRequest域 HttpSession域 ServletContext域 第二维度:监听的内容分:监听域对象的创建与销毁的 监听域对象的属性变化的

mark

变量的定义位置

先上一段看来比较正常的代码:

 1#include<stdio.h>
 2#include<stdlib.h>
 3
 4int main(void){
 5	printf("Tim\n");
 6	int a = 10;
 7	printf("a = %d\n",a);
 8	system("pause");
 9	return 0;
10}

由于我的环境是VisualStudio2013,所以上述程序可以完美执行,并且是编译0警告通过,但是在VisualStudio2008的环境下这样写是完全错误的,C89规定,在任何执行语句之前,在块的开头声明所有局部变量。但是在C99以及C++中则没有这个限制,即在首次使用之前,可在块的任何位置都可以声明变量。例如下面的写法对于C89标准才是正确的:

 1#include<stdio.h>
 2#include<stdlib.h>
 3
 4int main(void){
 5	printf("sssssssss\n"); 
 6	{
 7		int a = 10;
 8		printf("a = %d\n", a);
 9	}
10
11	system("pause");
12	return 0;
13}

当然为了达到更好兼容性,建议都把局部变量写在代码块的开始位置!!

mark 这是几个由二维数组构成的迷宫,简单的迷宫,多通路不带环的迷宫,多通路带环的迷宫!对于简单迷宫我们需要判断是否有出口!对于多通路不带环的迷宫我们需要确定出口并且判断最短路径,对于通路间带环的迷宫我们需要找出最短路径!