---
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
-----
索引关键字的选取原则
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
-----
java
简单记忆线程安全的集合类: 喂!SHE! 喂是指 vector,S是指 stack, H是指 hashtable,E是指:Eenumeration
集合中线程安全的类有:vector,stack,hashtable,enumeration,除此之外均是非线程安全的类与接口
---
Java
-----
Linux
硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。相反都是软连接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软连接将变得毫无意义。而硬链接删除的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。
硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。
软链接可以跨文件系统,硬链接不可以;软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在);软链接可以对目录进行连接,硬链接不可以。两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建软链接。
OS
2.短作业优先调度算法 (SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值。
3.最高响应比优先算法(HRN):FCFS可能造成短作业用户不满,SPF可能使得长作业用户不满,于是提出HRN,选择响应比最高的作业运行。响应比=1+作业等待时间/作业处理时间。
4. 基于优先数调度算法(HPF):每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。