1.CS61B Lab06笔记
2.Linux C/C++开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)
3.linux中/media/cdrom属于什么文件类型
4.linux系统根目录下各个目录用途说明
CS61B Lab06笔记
本文将探讨持久性概念,游戏源码游戏源码以及如何在Java程序中实现持久性。存储存储在之前的游戏源码游戏源码实验与项目中,编写的存储存储程序无法存储之前执行过的内容,例如在游戏中无法存档再恢复。游戏源码游戏源码但需要对程序运行过程中的存储存储触动插件源码内容进行存档,例如当使用git add时,游戏源码游戏源码git工具会存储需要添加的存储存储文件。程序的游戏源码游戏源码这种性质被称为持久性。
通过计算机的存储存储文件系统实现此类功能,将信息存储到硬盘之中,游戏源码游戏源码程序可供之后执行所使用。存储存储静态变量在Java中不会在执行之间保留在Java之中,游戏源码游戏源码当程序完成执行时,存储存储所有实例和静态变量都将完全丢失,游戏源码游戏源码唯一的方法就是将其存储在文件系统之中。
在实现Lab6和Proj2的命令行与文件系统内容时,需要了解Java与编译的概念,包括Java编译过程将文本内容转为机器码,得到Helloworld.class文件。得到机器码后,可以执行该机器码。对于Java程序,其本身也可以接受命令行参数,如在capers程序中通过命令行进行操作。在编译和运行capers程序时,需要先对该包进行编译,然后在指定目录下运行java命令。php 底层 源码如果在目录外运行java命令,需要使用特定的包名,如capers.Main来实现。
在Java中,源代码(.java文件)会被编译为包含Java字节码的.class文件。在实验中,使用javac命令编译所有文件,并在目录中生成多个.class文件。然后使用cat命令查看Main.class文件的内容,显示为包含大量字节的字节码。运行java命令时,需要使用正确的类名(如capers.Main)和参数(如story "this is a single argument")。参数间使用引号包裹以支持包含空格的情况。
Make命令用于通过命令行测试代码,而不是使用JUnit。这样做的原因是Capers与Gitlet程序都是持久的程序,每次运行时,都能够记住之前运行程序时的操作。在Gitlet中的status测试需要通过特定的操作来实现,因为Gitlet的输出复杂,需要解析程序的输出内容以确保文件包含正确的内容。使用Paul Hilfinger和B助教编写的自定义测试文件可以实现这一功能。通过Unix工具make来实现测试,通常包含安装make和Python的步骤。在lab6中任意子文件夹运行make命令,可以得到输出结果。通过make check命令启动测试并打印出通过和未通过的自助购物源码测试。
在Java中,文件和目录的管理是通过File类来实现的。当前工作目录(working directory)可以通过System.getProperty("user.dir")访问。文件和目录的路径可以是绝对路径或相对路径。文件和目录的创建和删除可以通过Java的File类方法完成。在实验中,需要学习如何在Java中实现文件和目录的操作,以完成Lab6和Proj2的特定任务。
在Java中实现序列化功能可以将对象转换为字节序列,存储在文件中,之后可以通过字节序列反序列化还原原始对象。要启用序列化功能,类需要实现java.io.Serializable接口。在实验中,通过序列化将对象保存到文件中,然后通过反序列化读取并还原对象。序列化过程通过Java的字节流实现,简化了序列化和反序列化代码的编写。
在Lab6实验中,编写一个使用文件操作和序列化的程序。实验包含了一系列的文件和特定的文件结构。编写程序时,应该关注如何存储数据、如何删除存储的数据,以及如何通过特定的文件结构来管理数据。实验中的文件结构和使用方法通过Util类中的函数来实现,确保程序的转转伪装源码正确性和高效性。在实验过程中,通过make命令编译代码,然后在编译的文件夹中运行程序。测试程序时,可以使用make check命令来运行测试。实验中包含的测试文件用于确保程序的正确性和完整性。
对于实验中的调试方法,使用IntelliJ的远程JVM调试功能,可以在没有JUnit测试的情况下调试代码。首先通过git checkout回到实验的初始代码版本。在实验中添加断点,然后通过运行程序进行调试。在调试过程中,关注测试失败的特定部分,理解测试的用意,以找出问题所在。完成调试后,通过make check命令确保所有的集成测试通过,然后提交修改的文件(如capers/Main.java、capers/Dog.java、capers/CapersRepository.java)到代码仓库。
实验过程中可能会遇到一些提示、常见问题和误解,需要关注并解答。例如,避免在make check后每次手动添加文本,可以通过编辑Makefile文件来自动化这一过程。java Launcher源码在实验中遵循正确的文件结构和使用方法,确保程序的稳定性和可维护性。通过实验学习Java中的文件、目录管理、序列化以及调试方法,为后续的项目开发奠定基础。
Linux C/C++开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)
C++后台开发,也称为C++/Linux服务器开发,在BAT公司中拥有众多职位,其中鹅厂对C++后台开发岗位的需求尤为迫切。尽管该岗位对技术要求较高,但追求大厂工作的朋友仍可积极争取。
对于具有C/C++语言基础的朋友来说,在面试后台岗位时,常常会疑问:面试大厂时,技术水平需达到何种程度才能入职?以下是针对校招和社招的不同要求。
对于校招,技术层面的要求相对较低。掌握C with STL以及常见的数据结构与算法,且能完成leetcode中等难度以下题目的笔试者,已有分。如果对STL、auto、lambda等用法熟练,还能加分。对于实习生来说,良好的表现即可被录用,之后会再进行网络编程和Linux方面的培训。
因此,校招更看重的是基础和学习能力。实习期间,会根据技术学习进度决定是否发放offer。当然,如果提前掌握Linux环境编程、网络编程等技术,更能加分,因为各个赛道都有内卷现象。
对于社招,C++后台开发岗位的核心技术点有三个:代码能力、架构能力、安全能力及工程素养。掌握这三方面的技术,面试通过的概率较高。至于在大厂的职级体系中确定自己的岗位,会有更加细化的标准。
不熟悉的朋友,可以先领取一份Linux c/c++开发新手学习资料包(入坑不亏):LinuxC++后台开发文档视频+代码资料学习路线免费领取
Linux C/C++开发1、精进基石专栏
(一)数据结构与算法
(二)设计模式
(三)c++新特性
(四)Linux工程管理
2、高性能网络设计专栏
(一)网络编程异步网络库zvnet
(二)网络原理
(三)自研框架:基于dpdk的用户态协议栈的实现(已开源)
3、基础组件设计专栏
(一)池式组件
(二)高性能组件
(三)开源组件
4、中间件开发专栏
(一)Redis
(二)MySQL
(三)Kafka
(四)Nginx
5、开源框架专栏
(一)游戏服务器开发skynet (录播答疑)
(二)分布式API网关
(三)SPDK助力MySQL数据落盘, 让性能腾飞(基础设施)
(四)高性能计算CUDA (录播答疑)
(五)并行计算与异步网络引擎workflow
(六)物联网通信协议mqtt的实现框架mosquitto
6、云原生专栏
(一)Docker
(二)Kubernetes
7、性能分析专栏
(一)性能与测试工具
(二)观测技术bpf与ebpf
(三)内核源码机制
8、分布式架构
(一)分布式数据库
(二)分布式文件系统(录播答疑)
(三)分布式协同
9、上线项目实战
(一)dkvstore实现(上线项目)
(二)图床共享云存储(上线项目)
(三)容器化docker部署
(四)零声教学AI助手一代(上线项目)
(五)魔兽世界后端TrinityCore (上线项目)
、适宜的工程师人群(共分为8大群体)
、配套书籍资料
以上是系统学习课程大纲,需要系统学习或者领取视频资料点下方腾讯文档领取
如果想在大厂快速提升C/C++开发方向的能力,这份学习体系是大家绕不过的具有参考意义的提升路线。通过学习路线,可以对Linuxc/c++开发方向的技术栈有清晰的认识。
linux中/media/cdrom属于什么文件类型
改正一下,选B,我看错题了,原来以为是问那个命令里的cdrom是什么,自习一看原来问的是/media/cdrom,不好意思~
选B
这个命令的用法
mount /dev/cdrom 挂载 dev目录下的cdrom设备到根目录下的media目录里
也可以指令挂载点 mount /dev/cdrom / 挂载dev目录下的cdrom设备到根目录下的目录中
LZ只要记住/dev是linux专门用来存放设备文件的目录就OK了~~
linux目录结构
目录树的主要部分有root(/)、/usr、/var、/home等等。下面是一个典型的linux目录结构如下:
/ 根目录
/bin 存放必要的命令
/boot 存放内核以及启动所需的文件等
/dev 存放设备文件
/etc 存放系统的配置文件
/home 用户文件的主目录,用户数据存放在其主目录中
/lib 存放必要的运行库
/mnt 存放临时的映射文件系统,我们常把软驱和光驱挂装在这里的floppy和cdrom子目录下。
/proc 存放存储进程和系统信息
/root 超级用户的主目录
/sbin 存放系统管理程序
/tmp 存放临时文件的目录
/usr 包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档。
/var 包含系统产生的经常变化的文件,例如打印机、邮件、新闻等假脱机目录、日志文件、格式化后的手册页以及一些应用程序的数据文件等等。建议单独的放在一个分区。
典型的/usr目录如下:
/XR6 存放X window系统
/bin 存放增加的用户程序
/dict 存放字典
/doc 存放追加的文档
/etc 存放设置文件
/games 存放游戏和教学文件
/include 存放C开发工具的头文件
/info 存放GNU信息文件
/lib 存放库文件
/local 存放本地产生的增加的应用程序
/man 存放在线帮助文件
/sbin 存放增加的管理程序
/share 存放结构独立的数据
/src 存放程序的源代码
由于/usr中的文件不和特定的计算机相关,也不会在通常使用中修改,因此可以通过网络共享这个目录(文件系统),这样,当管理员安装了新的软件之后,所有共享这一文件系统的计算机均可以使用新的软件。
linux系统根目录下各个目录用途说明
linux系统根目录下各个目录用途说明
1、/ 根目录 --------- 所有目录挂在其下 2、/boot --------- 存放Ubuntu内核和系统启动文件。系统启动时这些文件先被装载。 3、/etc --------- 系统的配置文件目录。密码文件、设置网卡信息、环境变量的设置等都在此目录中,许多网络配置文件也在其中。
4、/lib ---------根文件系统目录下程序和核心模块的共享库。这个目录里存放着系统最基本的动态链接共享库,类似于Windows下的system目录,几乎所有的应用程序都需要用到这些共享库。 5、/media --------- 主要用于挂载多媒体设备。ubuntu系统自动挂载的光驱、usb设备,存放临时读入的文件。 6、/proc --------- 这个目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。
7、/sbin ---------s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序,如系统管理、目录查询等关键命令文件。 8、/tmp ---------这个目录是用来存放一些临时文件的,所有用户对此目录都有读写权限。 9、/home --------- 用户的主目录。下面是自己定义的用户名的文件夹。每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。
、/mnt --------- 此目录主要是作为挂载点使用。通常包括系统引导后被挂载的文件系统的挂载点。如挂载Windows下的某个分区。 、/root --------- 系统管理员(超级用户),即根用户的主目录。 、/srv --------- 存储系统提供的服务数据。
、/usr --------- 包括与系统用户直接有关的文件和目录。 /usr/XR6 存放X-Windows的目录; /usr/games 存放着XteamLinux自带的小游戏; /usr/bin 用户和管理员的标准命令; /usr/sbin 存放root超级用户使用的管理程序; /usr/doc Linux技术文档; /usr/include 来存放Linux下开发和编译应用程序所需要的头 文件,for c 或者c++; /usr/lib 应用程序和程序包的连接库; /usr/local 系统管理员安装的应用程序目录; /usr/man 帮助文档所在的目录; /usr/src Linux开放的源代码; /usr/share 用于存放一些共享的数据,比如音乐文件或者图 标等等
、/var --------- 用于存放很多不断变化的文件,例如日志文件等。包含了日志文件、计划性任务和邮件等内容。 /var/cache 应用程序缓存目录; /var/crash 系统错误信息; /var/games游戏数据; /var/log 日志文件; /var/mail电子邮件; /var/tmp 临时文件目录;
、/bin---------bin是binary的缩写。这个目录沿袭了UNIX系统的结构,存放着使用者最经常使用的命令。例如cp、ls、cat,等等。