笔记_1

---

C++先输入n然后输入元素个数为n的数组的值

int main()
{
    int n;
    while (cin>>n)
    {
        int* arr = new int[n];
        for (int i = 0; i < n; i++)
        {
            cin >> arr[i];
        }
    }
}

Java先输入n然后输入两个元素个数为n的数组的值


public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] li = new int[n];
        for(int i=0; i<n; i++){
            li[i] = scanner.nextInt();
        }
        int[] di = new int[n];
        for(int i=0; i<n; i++){
            di[i] = scanner.nextInt();
        }
    }
}

-----

文件传送FTP,电子邮件SMTP(simple mail transport protocol),远程终端接入Telnet,万维网HTTP这四个用的是TCP

-----

索引关键字的选取原则

1、   表的某个字段值得离散度越高,该字段越适合选作索引的关键字。主键字段以及唯一性约束字段适合选作索引的关键字,原因就是这些字段的值非常离散。尤其是在主键字段创建索引时, cardinality (基数,集的势)的值就等于该表的行数。 MySQL 在处理主键约束以及唯一性约束时,考虑周全。数据库用户创建主键约束的同时, MySQL 自动创建主索引( primary index ),且索引名称为 Primary ;数据库用户创建唯一性索引时, MySQL 自动创建唯一性索引( unique index ),默认情况下,索引名为唯一性索引的字段名。

2、   占用存储空间少的字段更适合选作索引的关键字。例如,与字符串相比,整数字段占用的存储空间较少,因此,较为适合选作索引关键字。

3、   存储空间固定的字段更适合选作索引的关键字。与 text 类型的字段相比, char 类型的字段较为适合选作索引关键字。

4、   Where 子句中经常使用的字段应该创建索引,分组字段或者排序字段应该创建索引,两个表的连接字段应该创建索引。

5、   更新频繁的字段不适合创建索引,不会出现在 where 子句中的字段不应该创建索引。

6、   最左前缀原则。

7、   尽量使用前缀索引。

-------

C++

#include<iostream>
using namespace std;

void func(char *p)
{
    p=p+1;
}
int main()
{
    char s[]={'1','2','3','4'};
    func(s);
    cout << *s << endl;
    return 0;
}

输出的是1

原因:

我们知道,s中存储的值是一个地址,即数组首元素'1'所在存储单元的地址,执行func函数时,将这个地址值传给p,然后,在函数体中,对p执行加1操作,使p指向数组的第1个元素(从0算起),即s[1]。但是,这只是对p的修改,跟s毫无关系!在传参时,将s的值拷贝给p,之后,s与p就毫无关系了。 func函数结束后,p超出作用域被释放掉了,此时打印s指向的内容(即*s),仍然是s[0]的值,而不是s[1]的值。

具体可看下面四个swap函数:

void swap1(int a, int b){
	int t = a;
	a = b;
	b = t;
}

void swap2(int &a, int &b){
	int t = a;
	a = b;
	b = t;
}

void swap3(int *a, int *b){
	int *t = a;
	a = b;
	b = t;
}

void swap4(int *a, int *b){
	int t = *a;
	*a = *b;
	*b = t;
}
发现,1和3不会交换,2和4会交换

其实只需要明白只有&是直接将引用传进去之外,其他的其实都是拷贝过去了一份。

对于1来说,将a和b分别向括号里拷贝了一份,在函数体里,局部变量a和b确实交换了,但是并没有影响外部真实的a和b

对于3来说,将a和b的地址(或者说是指向地址的指针)分别向括号里拷贝了一份,在函数体里,局部变量a和b(都是地址值)确实交换了(相当于指针换指了一下),但是并没有影响外部真实的a和b

对于2来说,将a和b的引用传进括号里,那么函数体里直接操作的就是a和b本身,所以会交换。

对于4来说,将a和b的地址(或者说是指向地址的指针)分别向括号里拷贝了一份,然后函数体中分别将两个地址处的值进行了调换,而外部的a和b依然用的是自己原来的地址,所以会交换。

-----------

this指针

this指针保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
---------

Java

构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(5)构造方法可以重载,以参数的个数,类型,顺序。

-----

java

简单记忆线程安全的集合类: 喂!SHE!  喂是指  vector,S是指 stack, H是指    hashtable,E是指:Eenumeration

集合中线程安全的类有:vector,stack,hashtable,enumeration,除此之外均是非线程安全的类与接口

---

Java

方法的重写(override)两同两小一大原则
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。

-----

Linux

1>首先什么是链接?
      链接操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的 访问权限 ,以控制对信息的共享和安全性的问题。 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名。而且,即使我们删除这个链接,也不会破坏原来的目录。
2>硬链接
      硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。
3>软链接(符号链接)
      软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。软连接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系,但删除原来的文件,则相应的软连接不可用(cat那个软链接文件,则提示“没有该文件或目录“)。
4> 硬链接与软链接的区别;

硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。相反都是软连接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软连接将变得毫无意义。而硬链接删除的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。

硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。

软链接可以跨文件系统,硬链接不可以;软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在);软链接可以对目录进行连接,硬链接不可以。两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建软链接。

----

中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。
(简单来说,中间件并不能提高内核的效率,一般只是负责网络信息的分发处理)
----

OS

常见的调度算法:
1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。 因此选A;

2.短作业优先调度算法 (SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值。  

3.最高响应比优先算法(HRN):FCFS可能造成短作业用户不满,SPF可能使得长作业用户不满,于是提出HRN,选择响应比最高的作业运行。响应比=1+作业等待时间/作业处理时间。

4. 基于优先数调度算法(HPF):每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。

----


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值