1、进程通信方式:简单来说就是 管道、信号、信号量、队列、套接字、共享内存
2、linux命令相关:ps 查看进程: 杀死进程 kil -9(强制终止) 可以接进程pid或者进程名字
更改文件/文件夹拥有者:chown:-f 无法更改不显示错误信息
-R递归更改文件夹内所有
-v显示拥有者更改详细信息
-c确认更改时才显示更改动作
-h只对连接进行变更
chmod 修改权限:r w x对应4 2 1 其他的你懂不说了
touch 修改文件日期,文件本身不做变动
ln 建立连接文件 -s建立符号链接(又称软连接)不加则默认创建硬链接(详细看下边解释)
date 显示日期 cal 显示日历 id显示用户标识 users显示当前用户
head 显示文件头几行 tail显示文件尾几行 who显示都谁登录到机器
find寻找文件:-name -user -size 按名字,用户,大小查找
-perm 按权限 -type按类型 -atime按最后修改时间
grep搜索文件中匹配符:-i忽略大小写
wc统计文件字数:-l -w -c分别为统计行数,单词,字符数
df显示磁盘空间:-a全部使用情况 -t显示某个档案系统的所有分割区大小 -T显示每个分割区所属的档案系统名称 -i显示nodes的使用量 -h按GB、MB易读形式显示
du:档案或目录的使用空间:-a显示全部目录和其次目录下的每个档案所占的磁盘空间
-s:只显示各档案大小的总合
-x:只计算同属同一个档案系统的档案
-L:计算所有的档案大小
-h: 表示档案系统大小使用 GB、MB 等易读的格式。
ifconfig查看自己id netstart查看路由表 telnet远程登录ftp 文件传输 mailx查看自己邮箱 history回忆命令
都常用的就这吧
3、软硬连接区别:软连接相当于创建一个指向源文件/目录的文件,删除创建的软连接不会删除源文件,在软连接做的除删除操作外系统都会自动转变为对原文件的操作。就相当于window里的快捷方式。
硬链接相当于创建一个原文件的镜像,和源文件大小相同,删除硬链接(删除后连接为0时)源文件也会同时删除,文件夹不允许创建硬链接,只有在同一文件系统中的文件之间才能创建硬链接。删除源文件的话如果还有相应的硬链接存在源文件不会被删除。
4、进程,线程区别:线程属于进程,进程拥有空间地址,线程共享进程的空间地址,进程互相独立一个进程结束或者死掉不会影响其他进程,而一个线程结束则整个进程死掉。当一个进程结束时其下的所有线程结束。
一个程序至少一个进程,一个进程至少一个线程。
线程并发性高,不利于资源管理,执行开销小,进程开销大,利与资源管理。
切换进程开销大,切换线程开销小。
每个独立的线程有程序入口,顺序执行序列,程序出口,但不能独立执行,必须依存于程序
线程是进程的一个实体,线程是cpu调度和分派的基本单位。
5、大量数据访问服务器时的优化:
服务器多可以负载均衡;
其他的就可以:批处理,将大量数据分批处理。
使用缓存。
数据库优化:表结构优化,索引优化,分表以便于更小的范围查找,sql语句处理逻辑优化,分区。
分离数据库中活跃数据。
批量读取和修改延迟。
读写分离,一般采用主从实现,在主服务器修改删除数据,从服务器读取数据。
分布式部署服务器,将多个表放置于多个数据库中,然后再放到不同的服务器中,查询时多个服务器同时工作提高效率。
使用搜索引擎搜索数据库中的数据。
网站的话还可以页面静态话
6、ospf的七个状态:down(失效)、init(初始化)、2-way(双向通信)、exstart(信息交换初始化)、exchange(信息交换)、loading(信息加载)、full(完全邻接)。
7、spring设计模式:工厂、单例模式、适配器、包装器、代理、观察者、策略。
8、final修饰类不能被继承,修饰方法能被重载不能被重写
9、hashMap和ConcurrentHashMap的区别:hashMap不是线程安全的,ConcurrentHashMap是线程安全的。ConcurrentHashMap引入了分段锁的概念,把一个大的Map拆成多个hashTable,然后计算key的hashCode确定它在哪个hashTable中。
10、jvm介绍:jvm是一个虚拟出来的计算机,java编译程序只需生成在java虚拟机上运行的字节码,这使得java能够一次编译到处运行。
jvm的垃圾收集通过引用计数、可达性分析来判断对象是否存活,垃圾回收算法有基础的标记回收算法,先标记出所有的回收对象,标记完成后统一回收所有被标记的对象。复制算法,将可用内存按容量分为大小相等的两块,每次只使用一块,用完后将可用对象复制到另一块然后清理已使用的内存空间。标记压缩算法,标记方法和标记回收算法一样,标记后将所有可用对象向一端移动然后一次性清理端边界以外的内存。分代收集算法,对新生代采用复制算法,老年代使用标记清理或标记压缩算法。用垃圾收集器具体实现垃圾回收。
jvm内存结构由堆、栈、本地方法栈、方法区等组成。堆是jvm所管理内存中最大的一块;几乎所有的对象实例都在这里分配内存,堆是垃圾收集器管理的主要区域,分为老年代和新生代。方法区和堆一样是线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。jvm栈是线程私有的,他的生命周期与线程相同。本地方法栈为虚拟机使用到的native方法服务。
jvm类的加载:类的加载指的是将类的.class文件中的二进制数据读入内存,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.class对象,用来封装类在方法区内的数据结构。并提供访问方法区中数据结构的接口。
三个差不多了。
11、数组和链表的区别:在内存中数组是连续的存储区域,链表则不要求连续。
数组需要预留空间,使用前要先申请占用内存的大小,链表则为每个数据都保留了下一个数据的地址。
数组插入、删除效率低需要后移,链表增加和删除数据很容易。
数组随机读取效率很高,链表不宜于查找数据。
数组不易于扩展,链表方便扩展。
先这样吧,剩的接着总结。