操作系统复习题
第一章操作系统概述
基本概念
操作系统的接口
进程与线程进程的引入
进程的状态及转换
进程的描述
进程的控制
线程
import multiprocessingimport timeimport osdef child_process(char): print(f"Child process {char} (PID {os.getpid()}) is running.") time.sleep(2) print(f"Child process {char} (PID {os.getpid()} ...
byteDance
一、Java基础面试题
String 能被继承吗?为什么?
不可以,因为 String 类有 final 修饰符,而 final 修饰的类是不能被继承的。实现细节不允许改变。平常我们定义的 String str=”abc”(直接赋一个字面量)和 String str=new String(“abc”)(通过构造器构造)还是有差异的。String str=“abc” 和 String str=new String(“abc”); 产生几个对象?
前者 1 或 0,后者 2 或 1。先看字符串常量池,如果字符串常量池中没有,都在常量池中创建一个。如果有,前者直接引用,后者在堆内存中还需创建一个“abc”实例对象。
对于基础类型的变量和常量:变量和引用存储在栈中,常量存储在常量池中。
为了提升 JVM(Java 虚拟机)性能和减少内存开销,避免字符的重复创建,项目中最好不要使用 new String 去创建字符串,最好使用 String 直接赋值。
String,StringBuffer,StringBuilder 的区别。
String: 字符串常量(final 修饰,不可 ...
paicoding
Knif4j作用
但有了 Swagger、Knife4j 后,可以通过简单的配置生成接口的展示页面,把接口的请求参数、返回结果通过可视化的形式展示出来,并且提供便捷的测试服务。访问地址是在后面加上doc.html。
http://127.0.0.1:8080/doc.html#/home
导包不需要再引入 Swagger 了,因为这个库里面包含了。
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi2-spring-boot-starter</artifactId> <version>slknife4i.versionl</version></dependency>
需要在 yml 文件里面进行配置
group-name: 分组名称。
api-rule:分组规则,这里使用的是包规则
api-rule-resources:指定包名,Knife4j将扫描此包下的所有APl接口并将它们 ...
paicoding
MVC
paicoding
数据库的使用CRUD
paicoding
基础篇讲解该项目的基础部分
MVC 和三层架构的区别
MVC 流程
用户通过 View 页面向服务端提出请求,可以是表单请求、超链接请求、AJAX 请求等。
服务端的 Controller 控制器接收到请求后对请求进行解析,找到相应的 Model,对用户请求进行处理。
处理结果再交给 Controller(控制器其实只是起到了承上启下的作用)。
根据处理结果找到要作为向客户端发回的响应 View 页面,页面渲染后发送给客户端。
全局架构├── paicoding-api│ └── context // 请求上下文│ └── entity // 通用实体│ └── enums // 枚举值│ └── exception // 异常类│ └── vo // 返回值├── paicoding-core│ └── cache // 缓存│ └── common // 通用常量│ └── config // 配置文件│ └── permission // 权限│ ...
缓存优化
缓存优化环境配置
配置yml文件中的redis
maven导入redis
缓存菜品数据
先从redis获取数据,如果有直接返回;没有的话从数据库中找,把数据放入到redis中。
更新菜品数据时(或者数据库中的数据变化时),需要清理缓存数据。
Spring Cache
在启动类中添加 @EnableCaching 注解,以开启缓存注解功能。这样可以在应用程序中使用缓存相关的注解。
@Cacheable 会在方法执行前先检查缓存中是否有数据,如果有,则直接返回缓存中的数据;如果没有,则执行方法,并将方法返回值放入缓存中。
@CachePut 可以将方法的返回值放入缓存中。该注解通常用于更新缓存数据的场景。
@CacheEvict 可以从缓存中删除一条或多条数据。可以在需要删除缓存数据的方法上添加该注解,并指定要删除的缓存数据的键。
其它在Spring缓存注解中,key是一个SpEL(Spring表达式语言)表达式,你可以使用#root和#result在SpEL表达式中获取上下文数据。
#root:这是根对象,可以通过它访问到方法的各种元信息,如方法的名称(#root.met ...
redis
Redis启动服务 Linux: ./redis-serve
Linux的redis如何允许windows连接
找到conf 配置文件
查找bind关键字,选择后面的ip地址,把该行注释掉
注意防火墙问题
windows: redis-cli -h localhost -p 6379 auth 密码
普通命令
连接远程redis命令 .redis-cli.exe -h 虚拟机ip -p 端口 -a redis密码 keys 检查所有的key
数据类型(是指value的数据类型)字符串
set key value 设置指定key的值
get key 获取值
setex key seconds value 设置指定key的值,把超时时间设为second秒
setnx key value 只有在key不存在时设置key值
哈希
存储对象
hset key field value 把hash表中的key字段的field值设为value hget key field 获取指定字段的值 hdel key field ...
nginx
Nginx介绍Nginx是一个开源的、高性能的HTTP服务器和反向代理服务器。Nginx也可以作为一个IMAP/POP3/SMTP代理服务器。由于其稳定性、丰富的模块库、简洁的配置和低资源消耗,Nginx在全球范围内广受欢迎。
以下是Nginx的一些主要特性:
作为Web服务器:Nginx可以作为一个静态文件的Web服务器,也可以作为反向代理服务动态HTTP内容。
负载均衡:Nginx可以作为反向代理实现负载均衡,将接收到的请求分发到后端的多个服务器,从而提高网站的可用性和性能。
HTTP和HTTPS支持:Nginx支持HTTP和HTTPS,能够实现安全的网络传输。
反向代理和缓存:Nginx能够作为反向代理,处理来自客户端的请求并将其转发到适当的服务器,并且可以缓存这些服务器的响应以提高性能。
灵活的配置:Nginx提供了灵活和强大的配置选项,使得开发者可以根据自己的需求定制Nginx服务器。
高并发连接:Nginx使用事件驱动的架构,能够处理大量并发连接,这使得Nginx在处理高流量的网站时表现出高效性。
安装配置虚拟机环境
命令
tree:树形 ...