浏览 196 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
|
发表时间:2024-01-09
学习地址2:https://share.weiyun.com/8jy9udqc 密码:umevc3 众所周知,操作系统是计算机的基石,理解操作系统有助于写出正确的、性能更好、稳定性更高的程序,是技术各路大厂面试官重点考察的能力之一,成为越来越多程序员的必修课,因此,我在本文中将带领大家从0到1参透技术本质,快速补齐操作系统短板,来一次质的提升。 我将从以下三方面深度剖析操作系统入门理论与实战要点: 1、深刻理解计算机—掌握优秀编码能力 理解操作系统可以深刻理解自己所写的程序会对计算机系统产生的影响,有助于编写出正确的、质量更高的程序,同时可以充分利用系统资源来优化程序运行效率,编写出性能更高的程序,突破系统性能瓶颈。 2、直击本质—强化解决问题能力 理解操作系统有助于问题排查以及bug调试,比如利用多线程来优化程序性能、利用系统调用跟踪工具排查各种系统层面的疑难杂症、利用内存管理知识深刻理解程序与内存是怎样交互的等等,从此你不必再去求别人帮你排查问题。 3、突破职业天花板—提升搞钱能力 理解操作系统有助于问题排查以及bug调试,比如利用多线程来优化程序性能、利用系统调用跟踪工具排查各种系统层面的疑难杂症、利用内存管理知识深刻理解程序与内存是怎样交互的等等,从此你不必再去求别人帮你排查问题。 掌握操作系统对我们有什么帮助? 1、系统设计:了解处理器、内存、文件系统、设备驱动等方面的原理和交互方式。这种系统级的视角可以帮助程序员理解软件开发在底层系统上的运行和交互,从而更好的编写程序。 2、性能优化:学习操作系统可以让程序员了解系统性能的关键因素、利用多进程、多线程等充分利用多核从而提高程序性能。 3、问题排查:学习操作系统后在排查各类系统相关的问题时不再毫无章法 应对复杂系统:再复杂的系统都脱离不了进程、线程等概念,对操作系统的掌握可以让程序员刚好的应对复杂系统。 总的来说,学习操作系统对我们帮助很大,系统设计、并发编程、程序优化、内存管理、故障排查,这些都是狠关键的能力,会解决你99%的技术问题,任何软件,不管有多么复杂,其实都逃不过这里讲解的进程、线程、协程这些概念,扎实的掌握这些内容,你的技术水平领先很多“增删改查”的程序员。 下面我们开始代码实战,先看一个例子: package main import "log" func init() { log.setflags(log.lshortfile) } func main() { s := []int{1, 2, 3} log.printf("s-ptr:%p; s-cap:%d", s, cap(s)) s = append(s, 4) log.printf("s-ptr:%p; s-cap:%d", s, cap(s)) s = append(s, 5) log.printf("s-ptr:%p; s-cap:%d", s, cap(s)) } 上面的程序输出结果为: main.go:10: s-ptr:0xc0000aa060; s-cap:3 main.go:12: s-ptr:0xc0000be0c0; s-cap:6 main.go:14: s-ptr:0xc0000be0c0; s-cap:6 通过上面的例子,我们发现第一次对切片进行追加元素时,内存地址会发生变化,而再次追加元素时,内存地址却没有变化,同时在第二追加元素后,切片的容量从开始的3变成了6. 因为框架页面视图层很多地方都要关联模型层的变量,比如说文本框就需要和模型层的变量关联,所以我们先来把模型层简单定义了。模型层变量的用途,仅在视频中讲解,认真观看视频,不要对着手册猜测代码逻辑。 import router from '../../router/index'; import { reactive, ref, getcurrentinstance, onmounted } from 'vue'; const { proxy } = getcurrentinstance(); const header = reactive({ keyword: '', tags: [ { label: '入职体检', type: 'info' }, { label: '父母体检', type: 'info' }, { label: '女士体检', type: 'info' } ] }); 我们想要让内容区的高度实现适配,css这条路是走不通的,只能寻求于ts代码了。 //计算网页可见区域的高度 function resetdocumentclientheight() { //获取网页可见区域的高度 sitecontent.documentclientheight = document.documentelement.clientheight; } //计算内容区卡片控件高度 function loadsitecontentviewheight() { //卡片控件高度 = 网页可见区域高度 - 导航区高度 - 卡片控件上下外填充 - 上下边框 let height = sitecontent.documentclientheight - 50 - 30 - 2; if (route.meta.istab) { //如果引用的vue页面需要tab控件,卡片控件高度还要减去40 height -= 40; } //保存卡片控件高度 sitecontent.height = height //声明css样式 sitecontent.sitecontentviewheight = { minheight: height 'px' }; } //浏览器尺寸发生变化的回调函数 window.onresize = () => { //更新保存的网页可见区域高度 sitecontent.documentclientheight = document.documentelement.clientheight; //重新计算内容区的高度 loadsitecontentviewheight(); }; 我们给视图层中的卡片控件添加:body-style属性,把计算出来的高度设置到卡片控件上。 声明:iteye文章m6手机网页版登录的版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|