初始化

Hello China操作系统在Virtual PC上的安装和使用

别等时光非礼了梦想. 提交于 2020-03-07 08:19:59
本文介绍如何在Windows 7操作系统和Virtual PC 2007虚拟机上安装Hello China操作系统,Hello China的版本是V1.75。对于Windows XP等非Windows 7操作系统,由于不能直接支持虚拟硬盘,不能按照本文介绍的方法安装Hello China的GUI功能,但是可以安装内核和基于字符界面的shell。 HelloChina在Virtual PC上的启动过程 首先介绍一下Hello ChinaV1.75在Virtual PC上的启动过程。为了最大可能的降低安装和使用的复杂性,V1.75版本在Virtual PC上是通过虚拟软盘启动的。Hello China的内核和核心驱动程序(比如键盘驱动、鼠标驱动、IDE接口硬盘驱动、文件系统等)等文件都集成在了虚拟软盘中。这样通过虚拟软盘启动计算机,操作系统的核心模块就直接从虚拟软盘中加载到内存并执行。内核初始化完成之后,Hello China会进入字符shell模式,这时候用户就可以运行字符模式命令了。 在字符模式下,用户输入GUI命令,即可进入图形模式的shell。一旦用户输入gui命令,Hello China会在硬盘的第一个分区(用C:标识,与Windows类似)的PTHOUSE目录下,寻找hcngui.bin文件,这个文件即是Hello China图形模式模块的可执行二进制文件。一旦找到这个文件

Servlet系列学习(一)

二次信任 提交于 2020-03-07 04:32:11
Servlet程序(一) 一、Servlet是什么 Servlet程序是一个接口 Servlet是JavaWeb三大组件之一 Servlet程序是运行在web服务器上的java小程序,它可以用来接收客户端的请求,以及响应客户端。 Servlet程序是运行在web服务器上的java小程序,它可以用来接收客户端的请求,以及响应客户端。 二、手动实现一个Servlet程序 1、创建Java类去实现servlet接口 public class demo implements Servlet { @Override public void service ( ServletRequest arg0 , ServletResponse arg1 ) throws ServletException , IOException { System . out . println ( "hello word" ) ; } @Override public void destroy ( ) { } @Override public ServletConfig getServletConfig ( ) { // TODO Auto-generated method stub return null ; } @Override public String getServletInfo ( ) { //

C++ STL之vector用法总结

北战南征 提交于 2020-03-07 02:54:34
来源:https://www.cnblogs.com/zhonghuasong/p/5975979.html 介绍 vector是表示可变大小数组的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,vector并不会每次都重新分配大小。 vector分配空间策略:vector会分配一些额外的空间以适应可能的增长,因为存储空间比实际需要的存储空间更大。不同的库采用不同的策略权衡空间的使用和重新分配。但是无论如何,重新分配都应该是对数增长的间隔大小,以至于在末尾插入一个元素的时候是在常数时间的复杂度完成的。 因此,vector占用了更多的存储空间,为了获得管理存储空间的能力,并且以一种有效的方式动态增长。 与其它动态序列容器相比(deques, lists and forward_lists), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效

postgresql-12安装与异步热备份

若如初见. 提交于 2020-03-07 00:32:06
主备需要数据库版本一致 环境: 192.168.0.21:5432 (主库) 192.168.0.20:15432 ( 备份库) centos7 1 postgresql 安装 1.1 centOS 安装方式 yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm yum install postgresql12 -y yum install postgresql12-server -y 1.2 ubuntu18.04 安装方式 vim /etc/apt/sources.list.d/pgdg.list deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main 保存退出vim wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt-get update apt-get install postgresql-12 以下为 centos7 配置方式,ubuntu 大致相同 1.3 设置数据存放位置 mkdir

SpringMVC源码之DispatcherServlet

只愿长相守 提交于 2020-03-06 23:54:04
DispatcherServlet是SpringMVC的核心类,所有其他的组件如拦截器,适配器,视图解析器等都是在这个servlet中应用,所以明白DispatcherServlet的初始化流程以及执行请求的流程就很重了。基于自己看的源码和自己的理解,写一个关于SpringMVC的小系列,如有错误,望各位看官不吝赐教! 1.DispatcherServlet 的继承体系如下: 1.1 GenericServlet 实现了Servlet,ServletConfig 接口,它对ServletConfig里的所有方法提供了实现,在 nit(ServletConfig config)中调用了自定义的init()方法,这个方法便是整个初始化的开始 1.2 HttpServlet.这个类虽说继承自GenericServlet,但却没有实现任何接口方法,但实现了直接父类中的service方法,实现了如doGet,doPost等一系列可能用的请求类型,service方法负责分派具体的请求,我想这也是为什么叫Dispatcher的原因。 1.3 HttpServletBean 这个类实现了GenericServlet中的init()并将改方法定义为final,在方法内部调用了 initServletBean() 1.4 FrameworkServlet 实现里initServletBean()

STM32外部中断函数

岁酱吖の 提交于 2020-03-06 16:35:23
STM32外部中断函数 在外部中端的 exti.h 文件中 # ifndef _EXTI_H # define _EXTI_H # include "stm32f10x.h" void EXTIX_Init ( void ) ; # endif 在外部中端的 exti.c 文件中 # include "exti.h" # include "led.h" # include "key.h" # include "delay.h" # include "usart.h" # include "beep.h" //外部中断 0 服务程序 void EXTIX_Init ( void ) { EXTI_InitTypeDef EXTI_InitStructure ; NVIC_InitTypeDef NVIC_InitStructure ; KEY_Init ( ) ; //①按键端口初始化 RCC_APB2PeriphClockCmd ( RCC_APB2Periph_AFIO , ENABLE ) ; //②使能 AFIO 时钟 //GPIOE.3 中断线以及中断初始化配置,下降沿触发 GPIO_EXTILineConfig ( GPIO_PortSourceGPIOE , GPIO_PinSource3 ) ; //③ EXTI_InitStructure . EXTI_Line =

object-c 一些用法(转)

时光毁灭记忆、已成空白 提交于 2020-03-06 14:25:26
1. 设置实例变量值的方法通常称为设置函数 setter, 而用于检索实例变量值的方法叫做获取函数 getter.getter 一般为变量名 , 而 setter 一般为 set+ 变量名 ( 第一个字母大写 ). 2. 合成存取器方法 : 在接口定义部分使用 @property 指令标识属性 , 然后在实现部分使用 @synthesize 指令即可 . eg: @property int sum; @synthesize sum; 3. 创建方法名时 , 参数名实际上是可选的 . 如 -( int ) set: ( int )n :( int ) d; 这个方法名为 : set::, 要调用这个方法如下 : [ aFraction set: 1 : 3 ]; 4. 静态变量声明仍为 static 关键字修饰 , 如 : static int hiCount=; 5. 有一个名为 new 的方法可以将 alloc 和 init 的操作结合起来 . eg: Fraction *myFraction = [Fraction new ]; 6. id 类型可以存任何的对象 , 而且对于返回值和参数类型来说 , id 是默认的类型 , 如下声名了一个返回为 id 类型的方法 . eg: -allocInit; 7. 承继时方法的调用 : 首先检查该对象所属的类 , 如果有指定名称的方法 ,

数组初始化

余生长醉 提交于 2020-03-06 14:21:52
在c++中,一个变量或数组变量定义完成后,其值均为系统预设,不一定是我们想要的。一般情况下,全局变量或数组系统会自动初始化(整数一般为0,布尔型为false,字符型为\0),而局部变量则为随机。特别是数组变量,我们在使用中一定义可能就是很大数量的变量,系统预设的可能非我们想要的,那就存在数组变量的统一初始化了。如何初始化数组变量? 一、在数组定义时直接赋值   例1:int a[5]={1,2,3,4,5};这样数组的每一个值都确定了,a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5。 当然这种方法赋值很明确,但也很麻烦,特别是数组但很大时不太实用。   例2:在赋值时我们也可以采用省略形式。例1中写法也可以省略为int a[]={1,2,3,4,5}; 这种写法没指定元素个数,那系统将根据我们提供的值的个数来确定定义的元素个数。如上例中就定义了5个元素,并完成赋值。   例3:我们还可以采用部分赋值法。如int a[10]={1,2,3}; 我们定义了10个元素,但我们只给了三个值,这样得到的结果是a[0]=1,a[1]=2,a[3]=3,其余元素的值全为0。 当然,我们也可以有一个极限写法int a[10]={};一个值没指定,也可以理解为指定了0个元素的值,其余元素的值全为0,即是全部元素值为0。 其他类型数组省略部分数据的值请参照全局变量预设。 二