虚拟机怎么用洗面奶(Golang协程和Java线程)?生活中难免会有各种各样的问题,如果你对这个不了解,一起来学习。
Golang协程和Java线程,下面一起来看看本站小编KevinYangYYz给大家精心整理的答案,希望对您有帮助
虚拟机怎么用洗面奶1
前言
最近刚读完Java并发编程实战、深入理解Java虚拟机。打算写一篇总结性文章,思来想去文章的内容,最后决定还是不要限定于Java这门语言,应该从提升性能的整体出发,所以就有了这篇文章。
一、什么是串行程序?
串行程序就是一次只能做一件事情。拿一个早上起床去上班的例子来说,它分为以下几个步骤,这些步骤跟串行程序的语义是一样的。它们必须一件一件来完成。
二、什么是并发程序
现在假设人的需求变了,需要在刷牙的时候煮个鸡蛋、热个牛奶当早餐吃。如果完全按照串行程序的语义来执行,事情就会变成这样:我在煮鸡蛋的过程中什么都不能做,必须等鸡蛋煮好后才能走开去热牛奶。显然在现实生活中,鸡蛋放在锅里煮的时候我就可以去刷牙洗脸了,不必一直在这里无意义的等待
,所以,在程序世界中也必须能够支持这些符合现实世界的行为。
等待鸡蛋煮好、牛奶热好的动作,在程序里有一个名词叫“IO等待”。处于IO等待时进程(或线程)将处于一种叫“阻塞”的状态,此时是不消耗CPU时间的,所以可以用来做其他事情。这就叫并发程序。
三、摩尔定律
摩尔定律是由Intel公司创始人之一Gordon Moore发现的规律,意思是随着芯片制造技术的发展,晶体管的体积越来越小,从而有可能将越来越多的晶体管放入一个芯片中(引自Andrew S.Tanenbaum和Herbert Bos的《现代操作系统》)。这种基于经验的法则揭示了CPU运行指令(可比喻现实世界的某个事件)的速度会越来越快,但是实际上并非CPU越快程序就越快了,这中间存在着沟通问题。
比如有个程序员,ta的编程能力很强,但是编程这个动作是需要需求来驱动,如果沟通过程中不够顺畅,很片段化,那么整个开发进度就会被沟通成本拖慢。同样,在计算器系统中也存在这样的问题。假如有一个程序是打印一个“hello world”,hello程序的机器指令最初是存放在磁盘上,当程序加载时,它们被复制到主存,当处理器要运行程序时,指令又被复制到处理器。这其中,CPU从主存读取到寄存器的速度大概是从磁盘读取到主存的1000万倍,从寄存器读取的速度大概是主存的100倍。所以就有了后来的多核处理器,也就是多个cpu组合在一起,这样才能同时做更多的事情。
四、什么是并行程序
1. 进程
进程是处理器对自己的抽象,它由程序加数据两部分组成,进程在创建时候会在寄存器、CPU高速缓存(如果有的话)、主存中加载需要的数据和程序本身(指令集合),主存的数据是每个进程独有的,程序是可以多个进程共享的。在单核处理器系统中,同一时刻只能有一个进程在运行,但是CPU切换进程的速度特别快,导致大家以为程序都是同时执行的,这个叫做伪并发。
人们通常能够感知到的时间大概是以秒为单位的,但现在CPU的时钟周期已经远远超过了人们的感知尺度,比如一个1GHZ的CPU在一秒内能有10的9次方个时钟周期,如果三个时钟周期能运行一个指令,那么在一秒内CPU就能运行大约3亿个指令,很显然在这种速度下人们就会误以为程序是同时执行的了。
2. 线程
线程是在进程之上的抽象,一个进程可以有多个线程,一个线程必须属于某个进程。线程可以共享进程的数据,可以把进程理解为一个主线程。当主线程被譬如磁盘IO之类的进入阻塞状态后,可以再创建一个线程来做其他的操作,这就是上面所说的并发。特别是在互联网服务器的进程上,线程发挥了很大的作用,因为很多的请求都不是CPU密集型的,都是IO密集型的。
3. 超线程技术
为了让单核CPU能够并行执行程序,CPU制造厂商发明了超线程技术。顾名思义,并行就是同一时间做很多事情。比如人在听音乐(是指耳朵)的同时可以摆动身体(手脚等),因为它们都是我们身体的不同部分,所以可以同时运行(暂且用这个词表达。手动狗头)。CPU也是一样,它可以分析指令用到了哪些执行单元,比如一条指令用到了加法器另一条用到了浮点数计算器,那么就可以同时让这两条指令执行。所以大家在买CPU的时候要小心了,需要区分什么是两核四线程和四核CPU。
4. 多核处理器系统
多核CPU大家应该通过上文可以猜到了,它就是将多个CPU集成到一起的一个“CPU”。拥有多核CPU的操作系统就会有并行的能力了。并行就是同时能处理多个任务,比如盖房子的时候,CPU的一个核心就代表一个工人,增加工人就代表着并行搬砖或砌砖的能力。
只有多核处理器才能同时运行多个进程,同时运行进程数等于核心数。多核处理器系统特别适合软件算法中的分治法,将一个规模很大的问题分解为若干个小问题,通过并行解决这些小问题,来解决大问题。随着现在互联网用户越来越多,高并发的场景也就越密集,多核cpu能支撑单核cpu所不能承载的高并发访问。而且多核处理器可以避免一些线程的上下文切换开销,在第六节会讲到。
五、阿姆达尔定律
从摩尔定律提升cpu运算能力的时代,到多核高并发的时代,出来了一个新的概念,叫阿姆达尔定律(Amdahl's law,由 Gene Amdahl 于1967年提出)。它揭示了一个问题和一个预测公式,问题就是:有些程序并不是增加cpu核心数就可以让它的运行速度成比例增长的,有时甚至是完全没有作用的。就比如,你可以通过增加工人来加快造房子的速度,但你无法通过增加设计师来加快设计房屋图纸的速度。因为很多程序在本质上还是串行的,如果不把串行这部分改为并行程序,将无法利用多核处理器的优势。
预测公式是指:在增加CPU核心的情况下,程序在理论上能够达到的加速比,它的公式如下:
Speedup= 1/(F+(1−F)/N)
其中Speedup代表加速比,F代表程序的串行部分,N代表CPU核心数。在N接近于无穷大时,最大加速比接近于1/F,假设F为50%,那么加速比最多为2(不管多少个CPU核心)。因此需要将程序中串行的部分减少,来利用多处理器的优势。
在阿姆达尔定律的作用下,程序要不仅要提升单线程程序的性能,还要提高程序的可伸缩性,可伸缩性就是指程序在提升计算机资源(CPU核心数、内存、IO带宽等)的情况下,吞吐量或者处理能力能否相应的增加。可伸缩性在并发编程中尤为重要,因为很多程序都还是串行的。
不仅要优化逻辑上的串行,还要尽量避免在访问共享区域时使用同步,将同步锁分解、分段,如果可以的话应该使用CAS(compare and swap)。这些技术能有效地降低线程在访问共享区域时的串行动作。
有一个最快衡量程序并行度的方法,那就是查看服务器的CPU利用率,如果不是你们业务量特别低的话,CPU的利用率应该长期处于接近于满载的状态才是最好的并行程序(虽然并不能由此得出你们的应用程序效率有多低,但是至少知道CPU能力没有被完整开发)。
六、线程实现的模型
实现线程有两种方式,一种是内核线程、一种是用户线程。
1、内核线程
内核线程就是在操作系统内核态实现的线程,是受操作系统直接管理的线程模型。Java的Hot spot虚拟机就是用的这种线程模型,一个轻量级线程(轻量级线程(lightweight process)是专门用来对应内核线程的用户态线程)对应一个内核线程,1:1的关系。在这种模型下,线程调度、上下文切换都是由内核来完成的,Hot spot虚拟机只需要调用操作系统原语即可。
它的缺点就在于线程上下文切换。由于线程是跟进程共享数据的,所以没有虚拟内存的数据需要保存。线程上下文的内容就是:程序计数器: 指令序列中下一条指令的位置、寄存器中的操作数:运算中的变量的值。
通常中断一个线程并运行另一个线程时,需要将当前线程上下文存在主存,然后把下一个要执行的线程的上下文恢复到cpu的寄存器中,并且让cpu从程序计数器处继续执行。这些过程会让CPU重复无效劳动,如果过于频繁的话,就会降低程序的吞吐量。
只要线程的数量超过了CPU的核心数,就会发生上下文切换。有些线程池比如Java的ForkJoinPool,就会默认线程数为CPU可用核心数,防止线程上下文切换的开销。
2、用户线程
用户线程是指在用户态的进程自己实现线程的管理、调度算法等。它采用1:M的模式,即一个轻量级线程多个用户线程。因为内核不知道用户线程的存在,所以内核只能调度内核线程。这种实现模式就是灵活,但缺点也很明显,调度算法实现很复杂,并且这种模型无法利用多核CPU的优势。
七、Golang的线程模型-协程
Golang作为专为并发而生的编程语言,它原生支持并发编程,最大限度的使易于编写和高并发性融合在一起。第六节我们讲到,内核线程和用户线程的实现模型分别是1:1和1:M,它们各有优缺点。而Golang使用的是M:N模型,也就是多个内核线程对应多个用户线程,如下图所示(LWP是轻量级线程的简写)
Go会使用M个内核线程来支撑N的名叫goroutine的协程,由于内核线程可以由内核调度,就充分利用了多核CPU的优势,而且goroutine的调度算法是由Go来实现的,所以能够减少内核线程在高并发时频繁的上下文切换问题。
Goroutine非常轻量级,linux操作系统线程的上限是1024个,用满时会占用内存1个G。一个线程大概需要1MB的栈,而协程可能只需要不到1kb,如果按1G的内存算的话,goroutine能创建大约10万个。最重要的是goroutine的调度完全是GO自己实现的机制,它可以在某个goroutine被IO阻塞时,将CPU资源分配给其他协程,再加上用户态的上下文切换,CPU浪费被大大优化。
八. Java的解决方案
golang的协程主要解决了两个大问题,一是:IO等待让CPU处于闲置状态不作为,二是:内核线程频繁的上下文切换导致CPU做无用功。对于这两个问题,Java早就有了自己的解决方案。这些解决方案有些是受到操作系统、Java虚拟机甚至是硬件级别支持的。
1. NIO
NIO(Non-blocking-I/O)就跟它的名字一样,非阻塞IO。跟BIO(Blocking I/O)不同的是,它在接收数据的Buffer处不会发生阻塞,而是通过一个select的系统调用来等待某些Buffer里数据的到来,当数据到来时select会通知等待的线程来处理,也不用线程一直轮询调用系统函数来查询有没有数据,属于多路复用I/O。这样实现的效果就是,线程不会因为某个客户端不发送消息就阻塞在那里不做其他的工作,还可以接收其他客户端发来的数据,从而提高并发性。
2. 自旋锁
除了内核调度算法强制拿走CPU执行权,Java并发程序性能受影响的部分主要就是线程在访问内存共享区的同步操作了。所以Java引入了CAS这种处理器级别的原子操作原语,使用这个原语修改共享数据时不会发生阻塞,而是以测试的方式来判断是否可修改,不能修改就循环尝试,直到可修改为止。
在Java的java.util.concurrent.atomic下有很多原子变量类,可以实现原子的共享数据访问。而且不止是在编码层面,在虚拟机层面也会统计获取锁的时间,如果很短的话也会优化成自旋操作。这么做好处就是不会频繁的上下文切换,但是会占用CPU时间片。
3. 锁消除、锁粗化
Hot spot虚拟机的JIT编译器会自动优化一些不必要的锁获取操作,比如一个引用没有逃逸出方法的StringBuffer的连续append操作,实际上可以不用锁。锁粗化就是指有些地方连续不必要的加锁解锁,就算不存在线程竞争,这种操作会导致性能更低下。于是虚拟机就会把这些锁粗化到包含它们。
4. 锁升级
Jdk1.6后增加新的锁优化机制,分别是偏向锁、轻量级锁。也就是说,在某个需要同步的对象上,被第一个线程加锁时,会使用偏向锁模式,如果后面没有其他线程竞争过这个对象上的锁,第一个线程下次再进入临界区的时候就不会再加锁。当虚拟机发现有其他线程竞争时,就会升级为轻量级锁。轻量级锁是用CAS操作来尝试进入临界区的,如果线程获取锁的操作是断断续续的,轻量级锁就会继续下去。但是如果某个线程在持有锁时,被其他线程发现了,就会升级成重量级锁。重量级锁就会在每次拿不到锁时阻塞并导致上下文切换了。
5. 纤程
纤程(Fiber)是一个实验中的项目,目的也是要做到和Golang的协程一样做自己调度的混合型线程,它属于OpenJDK在2018年开始的Loom项目。
总结
软件开发没有银弹,这是软件界有名的书《人月神话》的作者说的。所谓的没有银弹是指没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍。Golang在近几年的开发者和金融领域的应用确实越来越多,但是Java的整个生态和多年的优化还是不可替代的,特别是还在实验室的一些项目比如Graal VM、Graal编译器、Loom项目都非常有潜力。不管是软件优化还是架构,都没有一套完整而又高性能的框架,是需要一步一步迭代出来,没有最适合的只有更适合的。最后,编写完这篇文章的时间正好是2021年10月24日,1024程序员节,祝各位程序员朋友节日快乐!
虚拟机怎么用洗面奶2
实际情况是这样的,最近一段时间,在国外的技术社群里刮起了一股风,不少人在讨论Java做为C语言替代者而成为最主流的基础软件编程语言的可能性。从大部分人发表的观点来看,对于Java替代C的趋势还是支持的。
基础软件是指这样一类软件,其主要任务是把计算机的潜能充分发挥出来,面向上层应用软件提供一个高效、可靠的功能集。这些软件会被密集地调用,性能上的一点点滞后都会在实践中被成百上千倍的放大。所以对于基础软件来说,性能至少与可靠性一样重要。我们在一些基础软件的源代码里,常常看到一些丑陋的设计,看到一些变态的黑客技巧,在其他的领域里,这是不被鼓励的,但是在基础软件中,这就是合理的,可以接受的。
C语言目前仍在一些领域里坚挺,在操作系统、虚拟机和设备驱动程序开发方面,它可能是永远的王者。但是在其他的基础软件领域,比如数据库、网络服务器、图形图像处理等,C语言继续占据霸主地位的原因其实只有两个,一是快,二是熟悉的人多,而且经验丰富。
欢迎工作一到五年的Java工程师朋友们加入Java技术交流:585550789
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
但是这两点现在都遭到了挑战。
首先是速度。Java的执行速度在JDK1.4的时候达到了这样一个水平,就是对于一个一般水平的开发者来说,他写的C++程序已经不再比对等的Java程序跑得更快了。随后的JDK 5.0和6.0进一步提高了执行性能,由不同的组织举行的多项评测结果表明,Java与C语言的整体执行效率差距在一倍以内,也就是说,素以速度著称、并且为了速度放弃了很多东西的C语言,现在比装备齐全的Java只快不到一倍了。这还不算,如果考虑到新的计算环境,C语言的速度优势有可能仅仅是一个错觉。因为,世界上只有很少的人有能力在多CPU计算平台上用C语言写出又快又正确的大程序,在这些人中间,又只有很少很少的人有能力用C语言写出一个在大型的、异构的网络环境下能够充分发挥各节点计算能力的大规模并行程序。也就是说,你也许有能力把程序效能提高一倍,从而充分发挥一台价值6000元人民币的PC的计算潜力,为客户节省1000元钱。但如果是在一个由1000台机器组成的大型异构网络并行计算的环境下,你写的C程序恐怕性能还会远远低于对应的Java程序,更不要说巨大的后期维护成本,而由此带来的损失可能是1000万或者更多。
其次是经验。很多人都宣称自己的C功力如何如何了得,但是实际上,即使是真正的C高手也不得不花相当可观的时间来寻找并且调试错误,尤其是内存方面的错误。大部分用C写的上规模的软件都存在一些内存方面的错误,需要花费大量的精力和时间把产品稳定下来。这还没有把安全方面的缺陷考虑在内,现在大部分的开发者在代码安全方面的知识都很薄弱,安全漏洞在代码中相当普遍,而在C语言中,这一不足暴露得格外明显。最大的挑战或许得说是并发问题了,并发是一个很复杂的问题,需要在相当高的抽象层面上解决,而C语言的抽象机制过于简单,提供不了高层的抽象,因此在开发者只能从一些“并发原语”出发去构造并发程序,这跟用铅笔刀锯大树没什么分别,直截了当地说,大部分C程序员根本没有能力编写高效无缺陷的并发程序。
所以残酷的事实是,当一个人说自己的C语言如何了得,经验如何丰富时,非常可能他说的是,自己在用C语言写单机、单线程的,不会遭到外界攻击的,在时间预算上没有什么压力,而且用户能够忍受一个很长的产品稳定期的应用程序方面非常有经验。遗憾的是,市场环境和计算环境已经完全变化。面对更复杂的计算环境,用C语言来编写高质量的大规模软件,是只有真正的专家团队才能完成的工作。如果你曾经有过连续数日苦苦追踪和调试一个内存泄露、或者线程错误的经历,你就会明白,你可能不是这样的专家。
相比之下,Java在抽象机制、基础设施、安全和并发方面,与C语言比起来,就好像是马克沁重机枪对弓箭。比如并发,Java 5.0加入的java.util.concurrent包,可能是目前主流语言中对于并发问题最强有力的支持库。Java的内存管理和安全机制,也已经被实践证明确实能够有效地减少程序的缺陷。这也就是那篇诅咒文章的原文的意图。
所以,我的态度明确的,我认为Java替代C是一个进步的想法,不过世界上进步的想法很多,能够美梦成真的却寥寥无几。Java是否真的能够在基础软件领域强有力地替代C语言呢?我看至少短期内还做不到,原因如下:
1、人的问题。能够用C语言写出优秀基础软件的人固然不多,能用Java写出来的人恐怕更少。Java有好几百万开发者,但是他们在干什么?大部分是去搞企业级开发、Web开发了,有多少人真的理解Java的内存模型?有多少人能够熟练使用concurrent包中提供的那些工具?很多使用Java多年的人没有写过socket程序,不了解Java多线程的开销,不清楚如何进行性能诊断和调优,而这些在写基础软件的时候是必备的技能。大部分Java程序员在刚刚学会Java之后就转向Web开发,把主要精力花费在掌握一个又一个大型的、复杂的、具有厚厚的抽象层和华丽结构的frameworks上,不但对真实计算机体系结构不清楚,对于Java虚拟出来的那个计算环境也不清楚。因此,要把Java社群编程转变成能够担负起下一代基础软件开发工作的尖兵,不但难度很大,而且必须花费足够的时间。
2、Java的内存消耗太大。对于系统级程序来说,内存消耗大,就意味着cache命中率降低,与磁盘交换数据的可能性增大,对性能的影响还是比较严重的。现在很多人还是觉得Java慢,主要的原因已经不是Java跑得慢,而是由于内存消耗过大导致的综合性能下降。这个问题不解决,Java就只能用来做一些比较上层的基础软件。也许随着计算机硬件的发展,这个问题会逐步得到解决?
3、风格的问题。这个问题我认为是最严重的。基础软件开发崇尚的是自由、直接、透明、简单、高效,要像匕首一样锋利,像战士一样勇猛,像农夫一样朴实,反对繁琐华丽的设计,反对架床迭屋的层层抽象,反对复杂的结构和不必要的灵活性。而Java社群多年来形成的设计风格与此格格不入,甚至可以说是对立的。Java在意识形态上是要面向企业应用软件的开发,所以特别强调架构,强调设计模式,强调标准,强调规规矩矩,强调高姿态,强调一种华贵的宫廷气质。在C中,你吃饭就是吃饭,捧起碗来喝酒,放下筷子骂娘,甩开膀子抓肉,撸起袖子抹油。而在Java中,你经常为了要干某件事,先new一个对象,然后以这个对象为参数new另一个对象,如此这般重复n遍,得到真正需要的对象,最后就是为了调用那个对象的一个方法,就好比吃饭时焚香洗面,漱口净手,战战兢兢,毕恭毕敬。在C中,遇到问题要像亡命徒,像流氓版程咬金,管你三七二十一,冲上去就是三板斧,还怕劈不死你丫的。在Java里,遇到问题要像宋襄公,要张榜檄文,要名正言顺,要礼仪之邦,要把架子拉开了,把谱儿摆足了。Java的口号是,不管劈不劈的死,先把你小子感动了再说。 这套繁琐的东西,对于基础软件开发来说,既不必要,也很难习惯。需要说明的是,这不是Java语言的问题,其实Java本身不必如此复杂、如此巴洛克。从语言本身来看,Java也可以是轻快直接的,也可是酣畅淋漓的。只不过十多年来几乎没有人这样用过,所以大家已经不知道:如果不来个一步三叩首,那么该怎么用Java写程序?
正是因为上面的这种种原因(可能还不全面),直到最近,第一流的基础软件几乎都还是C语言编写的,或者至少其核心部分还是以C为主。而且我认为,在短期内,这种局面不会有大的改变。当然,如果Java社群能够克服上面的这些问题,充分发挥出Java本身的优势,在基础领域开发出一大批一流的支撑软件,那么局面是可以改变的,而且这种改变也是进步的,值得欢迎的。
最后,如果你想学C/C++可以私信小编“01”获取素材资料以及开发工具和听课权限哦!
虚拟机怎么用洗面奶3
ABOUT ROOM
房屋信息
户型:三室两厅两卫
使用面积:125平米
房屋位置:上海
装修花费:大约42万元
FOREWORD
说在前面
从两房换到三房,入住新家也2年多了,之前在“好好住”平台发表过一篇整屋案例的分享,今天也在这里分享下吧,欢迎有共同爱好或兴趣的朋友一起交流,也希望能给大家提供一点帮助。
<全屋特点> 1、谈不上具体单一的风格,硬要贴个标签,勉强算类北欧风格吧,原则是简单、实用,温暖舒适,有生活品质; 2、重实用,轻软装,当然必要的颜值和装饰还是要的;全屋偏亮色系强化地板(除了阳台和卫生间外),客厅灰色墙面,卧室靠背墙浅绿色;双层中空隔音玻璃。 3、全屋中央空调、全屋地暖、全屋软水、全屋新风、全屋5G无线网络满速覆盖、全屋智能家居及影音设备齐全。
欢迎关注、点赞、评论及转发,谢谢!:)
另外,精力有限,恕不开放微信交流,还请见谅。
ROOM SHOW
空间展示
- 户型图 -
南北通透的标准房型,三房两厅两卫双阳台,建筑面积125平,实际使用面积96平左右。
- 玄关 -
进门右手边,上方是二黑木作家的黄铜挂钩,黑胡桃+黄铜的材质,很有质感,用于挂些购物袋和钥匙等小物件;下方是换鞋凳及收纳柜;顺便说下,进户门安装的是指纹密码锁,配有门窗感应器,当夜晚回家时,会自动打开玄关照明,超过两分钟后无人移动则自动关闭照明;进户门上装有莹石的电子猫眼,可以监控及远程视频通话,人不在家收快递也是很使用方便的。
继续走进来,定做的柜子,上方是书柜,下方是鞋柜,其中右侧一扇门里是弱电箱;中间镂空处,放置家用NAS(网络存储器)及人体传感器、门铃及小物件等,并配有隐藏式照明灯带;旁边的墙上是电表箱,不过我定制了两幅画,一幅用来遮挡电表箱。
家用NAS(群晖四盘位网络存储器,型号ds416j),配置有4*4T硬盘,用于重要文件、照片、电影及音乐的存储,也是家庭娱乐影音设备最关键的存储中枢,最好是能PT下载,这样高清资源源源不断。其实之前是放在客厅电视柜上的,为了尽量缩短与弱电箱路由器的距离,特意放置在此。
#装饰画 总觉得家里玄关处的配电箱漏在外面有点丑,最近想着要遮住,想到了用住址的坐标经纬度定做了一幅布艺装饰画,另外配了幅上海城市简图,装上去感觉效果不错啊,实物很有质感!
进门左手边,是两层储物柜,其中靠次卧门的一个柜子是工具柜,放置常用工具及清洁设备,包括戴森吸尘器及百得多功能蒸汽拖把。
试用了几天BLACK+DECKER(百得)新出的六合一多功能蒸汽拖把,简直太好用了,配合不同的刷头,在140度高温蒸汽的作用下,可以很方便地除了把地板拖得很干净之外,还可以清洁沙发、厨房油烟机、燃气灶等重油污设备,以及美缝处,还有玻璃门窗等等,真是一物多用,非常值得购买。
- 书房 -
书柜其实在玄关处(前面有介绍),进来玄关左侧,是我的卧室,也是在家办公的地方,简单但应有尽有,线盒书桌很好用,线都藏在线盒里,再配上磁性线夹,干净利落,线盒下两个抽屉放置常用小物件方便取用。桌上有包括M1 Mac mini 2020LG 、LG 27UL850-W显示器、惠普gen 10 plus服务器、Macbook pro、PreSonus Eris E3.5蓝牙音箱、米家屏幕灯等。(我发布的西瓜视频里可点击观看,:我的极简主义电脑桌面)其中HomPod,配合siri,累了听会音乐,还有控制智能家居开灯关灯等,都是一句话的事。
其中HP gen 10 plus服务器里的1Tssd固态硬盘底层装了EXSI系统,里面装了几个虚拟机和一个群晖NAS,分别是:两个win10系统(其中一个作为云电脑,可以远程实用,另外一个通过加配的显卡,可以点亮4K的LG显示器),两个苹果macOS系统,以及一个群晖ds918+(3个4T硬盘), 可根据需要随时开启或关闭虚拟机,以满足日常使用场景及需求。
- 客厅 -
客厅里有绿植与窗外的绿树浑然天成,春意盎然!
这是以前的书桌摆放位置,后来挪到书房去了
用过了很多路由器,发现都不太完美,直到用上了ubnt的这款企业级ap,双频信号覆盖125平方的房子(不过我还是每个房间放置了一个,一共有四个)带动几十个终端设备,毫无压力,贼稳!关键颜值也高!本来是要吸顶安装最好,有点小遗憾的是装修的时候没考虑在天花板上预留网线。
客厅配置有5.1声道木质音箱及功放,功放上放置的是APPLE TV 4K版和英伟达的shield tv,它们分别是苹果版和安卓版中最强悍的播放器,前者它独有的infuse播放器是播放各种视频的神器,各种蓝光原盘的格式,都是秒杀,还有精美的海报墙,配合65寸的4K超高清索尼电视或者120寸的投影以及NAS里的几百部高清电影和美剧、演唱会、纪录片等,让视觉和听觉得到最美的享受;后者更是在国内视频平台和扩充性上更有优势。另外,它们都可以玩高清的游戏,我一般也就玩玩赛车之类的。
infuse客户端中呈现出来的精美的电影海报墙
观看蓝光原盘高清音乐会,雅尼的几场经典现场音乐会,真是棒呆了!过瘾!
偶尔放松下,玩玩赛车,一不小心就是第一名。:)
APPLE TV 的屏保是各地的超高清动态夜景,不看电视的时候,看璀璨夺目的流动夜景,也是一种身临其境的享受。除了夜景,还有和NASA合作的太空景色。
除了65寸的索尼4K电视机外,120寸的高清投影也是家庭影院必不可少的,尤其是看球赛的时候。
客厅120寸高清投影+5.1声道环绕音响+CCTV5高清频道,就是在家看世界杯的最佳配置。
客厅一角的穿衣镜
- 餐厅 -
把饮水吧台又挪回到了餐桌旁边,客厅看起来宽敞些…天气晴朗的日子,地板在自然光下显得很有质感。
墙面上的各种开关(包含新风、中央空调、地暖、照明等)。冬天来了,重度空气污染,理直气壮地要开一晚上新风和空气净化器了!
餐边柜上的咖啡机(原本想升级咖啡机,现在不怎么做了,也就作罢)和云米饮水吧等。
偶尔周末闲暇时亲手做杯咖啡,简单拉个花儿
餐桌上的绿植
从旧房子搬过来的博世冰箱,用了几年还很新,就放在餐厅了,主要用于存放水果及饮料;还有一个冰箱放在厨房,用于存放食材。
- 厨房 -
锅炉下方的几段金属管路露在外面总觉得难看,灵感突现,把塑料餐垫悬挂在上面,完美遮住!
把杯子碟子装满,开启快洗加烘干,35分钟后,一片铮亮,拿在手里暖暖的,感觉很棒!
开始订购的是可以洗13套的那款,无奈尺寸偏高放不下,加了两千多换成8套的这款,不过这款功能更强大丰富。型号为:SC76M540TI
宜家定做的整体橱柜
方太的蒸微一体机,方便实用!
第一次用蒸微一体机做的清蒸鲈鱼
美国产vitamix 多功能料理机以及奶泡壶,前者主要是夏天制作各种果汁,后者用于冬天晚上热牛奶。
ACA烤箱,偶尔做点烘焙或烤鸡
- 阳台 -
傍晚的阳台与客厅
#花花草草监测仪#绿植 #琴叶榕 #龟背竹 买了两个花花草草监测仪,分别插在琴叶榕和龟背竹的盆里,这下可以直观地监测并查看植物的生长环境了,希望对养护绿植有用!
乔布斯生前唯一推崇的家电品牌--美诺(Miele),号称洗衣机可以洗玫瑰花而不损坏。上面是干衣机(型号:TKG440WPC),下面是洗衣机(型号:WKH121 C WPS),叠放在一起,方便使用。
用了4种美诺原配洗涤液,用时将近4小时,总该能把沙发套洗得干干净净吧!
干衣机控制面板,功能丰富,可以设定时间自动启动。
选用美诺家独有的不同气味的香氛,烘干衣服后就有各种好闻的香味。
烘干衣服后析出的灰尘及毛绒等,这些是晾晒根本不可能达到的效果。
全屋软水机,2吨容量
北边小阳台,有一面顶天立地的储物柜,下方安置了给全屋提供软水的2吨软水机,流通到厨房的洗碗机、两个卫生间的坐便器及洗浴设备,以及阳台的洗衣机。软水的效果,一方面是保护相关设备不受腐蚀,另外就是对人体肌肤的呵护,用软水洗脸洗澡,开始总有滑溜溜的感觉,慢慢就习惯了。不过软水盐也是一大耗材,平均三个月要用掉20公斤,费用150元左右。
- 卫生间 -
主卫生间:1.2米长的洗浴台,镜子面板柜可以收纳物品,顶部有暖色隐藏光源,下方柜子里有小厨宝;1.6米长的浴缸,冬天听着音乐、来点红酒,泡澡最惬意啦;TOTO马桶及松下智能马桶盖,原本配有TOTO的智能马桶盖,但松下的这款带WIFI控制功能,还是换上了这个。
松下智能马桶盖面板
手机app操作主界面,懒得连伸手按面板都不想动:)其实一个不错的应用场景是,当你在卧室里甚至在外面,准备一会儿要去用的时候,可以提前在手机端打开,这样就不用一直开着,更节能。
手机app温度操作界面及耗电量统计
洗脸台下方的小厨宝,由于锅炉在厨房离卫生间有点远,还是加装了小厨宝,通过智能插座联网控制,设定每天固定时段的加热时间,方便又节能。
天花板上装有奥普智能浴霸及照明,取暖、照明、换气三合一,是风暖的,个人感觉比灯泡的舒服也不刺眼;可以通过面板控制,也可以通过手机app控制。(目前不同的智能家居设备,各自为政,还不能很好地统一到一个平台上操作)
主卫洗浴台右边的常用小家电,电动剃须刀、电动牙刷、负离子吹风机(线有点乱,但图方便);人体及光线感应灯,夜晚进卫生间自动开启,人离开后不久即关闭。
次卫空间比较小,配置了一个0.9米宽的洗脸台,一个摩恩花洒套件+浴帘,一只TOTO马桶及智能马桶盖。
摩恩花洒套件
TOTO原配智能马桶盖,虽然没有WIFI功能,不过面板操作触感不错。
- 卧室 -
之前这个小卧室,一直当杂物间用,最近才开始整理了下,添置了全套8H的床及床垫,无印良品的浅灰色床单和这浅绿色的靠墙,还有窗外的绿树,似乎还有点配。
家里很多小米的智能家居设备,现在连床上用品也是了。前不久买了一套小米有品上的8H床品一套,含实木床、M5床垫及床头柜,质量还是很不错的,床体无一颗螺丝,一分钟安装完毕,床垫双面睡感,冬暖夏凉。
书报柜上的绿植
小米新出的床头灯,一个圆桶玻璃罐造型,带触摸条控制,除了接入米家智能控制之外,也可以接入苹果的homekit了。不错!
每个卧室都配置了一个SONOS的play:1 播放器,通过wifi连接,使用方便音质也很棒。
SONOS的最大亮点之一就是它集成了多家音乐平台于一身,还可以共享播放家中NAS里下载的几千首歌曲。
除了听音乐外,还可以收藏自己喜欢的电台。
用SONOS设置自己喜欢的音乐,每天早晨当闹钟用,在舒缓的音乐中开启美好的一天。
- 网络布局 -
家庭网络拓扑图
电信光猫+软路由+4个AP,实现125平全屋2.4G+5G(双频)信号满速全覆盖及快速无缝漫游,无死角,彻底抛弃传统硬路由的信号覆盖不全及网速慢的弊端。
这是弱电箱的内部,尽管看上去比较乱, 但关上百叶门后就清净了。其中有三大部分:1、有一进四出的有线电视,尽管如今每年看有线电视不到十次;2、一进四出的电话线,尽管几乎不用固定电话;3、一进四出的6类带屏蔽网络线,分别到每个卧室及客厅,开通的是电信500M光纤宽带,从电信光猫出来后,接上的是软路由(可以理解为是一台小电脑,配置8G的金士顿内存、240G的金士顿固态硬盘,有6个千兆LAN网口),它的作用是负责网络拨号及路由功能,系统里安装了网络流控相关软件,从每个LAN口出来,到每个房间配置有无线AP,为全屋提供5G信号无死角覆盖提供了有力保障,也得以保障在家高速网络冲浪及全屋智能家居的稳定运行,这方面会在后面重点介绍。另外,在弱电箱里放置了温湿度传感器,并在下方配备有可调速静音风扇板。
ubnt的UAP-AC-PRO双频无线AP,千兆企业级应用,性能稳定,功能强大!每个房间扔一个,信号无死角,并且功率可自行调整大小。
4个AP,通过unifi云控制器网页界面,可以看到信号覆盖的范围。
在300M带宽下(每月流量用完1T后,上海电信带宽从500M降为300M),实际测试,可以满速。
- 环境设备 -
日立一拖五中央空调,当初从大金、格力、日立等品牌中选择考虑了很久,最后综合评估下来,还是选择了日立,目前用下来还算满意,不足的是冬天特别冷的时候,制热效果一般,不过我有地暖,也就无所谓了。
客厅和餐厅的室内机
威能锅炉,提供热水和全屋地暖。
地暖水流控制系统
全屋地暖全覆盖,卫生间和阳台都埋设有,无死角。
松下新风交换器
新风主机装在厨房吊顶里,开启后有点嗡嗡的声音。
配合新风系统,在雾霾严重的时候,室内需开启空气净化器,这款霍尼韦尔的是带Wi-Fi智能控制的,方便操作。
- 智能家居 -
智能家居,分两块简单分享下。首先是硬件,除了网关就是智能设备终端及各种传感器等,在这里分享下常用的一些设备。图中是aqara智能网关,接入苹果的homekit,需要它。
米家的多功能网关,接入米家系统
米家的万能遥控器,射频红外类的遥控器需要它连接。
米家和aqara的温度及人体传感器,在需要的地方布置上,满足自动化场景的实现。
aqara 的双键智能无线开关,把之前的普通开关都换掉了。
米家的门窗感应器,满足回家及离家的相关自动化场景的实现。
小爱同学mini版,语音控制米家系统上的设备,有了HomePod后用得少了。
苹果的HomePod,除了日常听歌问天气等之外,最大的用处就是通过“嘿,siri“来语音控制智能家居,准确率和便捷性远超过小爱同学。
前面大致分享了些硬件,接下来分享下软件部分,也就是控制智能家居的系统。我主要用的是米家和苹果的homekit两大系统,其它的部分设备系统就不赘述了。目前智能家居市场其实还不是很成熟,就国内环境来说,选择米家系列产品是最经济也是可玩性相对比较高的,尤其是有了aqara网关支持大部分产品能接入homekit后,可玩性就更好了。常规的控制方式主要是:1、米家或homekit的手机客户端手动操作;2、“小爱同学”和“嘿,siri"的语音控制;3、配合各种传感器实现场景自动化控制和人机交互方式;
iPhone或iPad的“家庭”客户端控制界面
MacBook上的“家庭”控制界面。通过将homepod或apple tv 甚至闲置在家的iPad设置为中枢,上述所有的控制都可以远程控制,即人在外面,一样控制家中的所有设备;当然,米家的系统本身就支持远程控制的。
另外,也可以通过Apple watch随时随地进行远程语音控制
动图演示一个回家后自动开启客厅灯光、窗帘等的场景动作
- 监控系统 -
车停在楼下,一直想装个监控看车以及房屋周边情况,只是装修时没在室外预留线路,只能隔着窗户玻璃,但带来的问题首先是影响清晰度,再就是夜晚窗户玻璃反光根本看不清,试了几款摄像头效果都不理想,后来买了萤石的这款CT6C,终于解决了。首先,在高级设置里,将模式都设为白天,夜晚隔着窗户玻璃就不会反光了,再调整视频前端参数,基本就可以达到理想的夜间效果了;其次,这款摄像头通过一定的设置,可以与家中的NAS里的监控软件联通,从而可以实现一直不停的实时录像并存储在NAS的硬盘上,进而可以随时回看。我设置的是7*24小时录像存储,满了自动删除最早的录像。另外,这款摄像头支持360度云台控制,手机端可以方便地控制转动查看四周,还有实时语音通话等。
电脑端回看之夜晚效果
客厅里的米家小白智能摄像头,360度云台控制,人在外面,也可以随时随地查看家中的情况。
QUESTION & ANSWER
Q & A
Q:简单介绍一下自己吧!你最庆幸,这次装修做的哪个决定?A:理工男,科技宅。做了全屋中央空调、地暖、软水及新风,并安装了将近九十个开关插座,至少几年内不用大动干戈了。
Q:家里有哪些地方是你感到不满意,需要改进的?A:装修时没想到楼层隔音比较差,没有做楼层隔音,有机会需要重新做隔音;没有在天花板内预留网线,造成现在无线AP没办法吸顶安装,有点小遗憾。
Q:家里有哪些单品特别想推荐给大家?A:美诺干衣机和烘干机、Vitamix料理机,ubnt的无线AP等。
Q:作为过来人,你有什么装修心得或教训想跟大家分享?A:多借鉴别人的建议,但不可跟风,了解自己的真实需求,尽量考虑周全,适合自己的才是最好的!