- 论坛徽章:
- 0
|
面向对象的优点是什么?
1 有了属性。 属性就是参数,比字符串粒度更小。在没有属性之前,我们就要用【烧脑正则】过滤,筛选字符串,简称【扣字符串】。有了属性就不用了。
2 有了方法。 方法就是程序,就是代码。无需自己重复编写。bat肯定是不行,没有方法,有也是个人写的,不可靠,不敢用。
方法可以是自己编写的ps函数,自己编写的ps类中的方法。
自己编写的方法,可以临时【并入】到第三方类中。
自己编写的方法,可以临时【并入】到.net类中。
问:面向对象的缺点是什么?
答:
1我在向用winxp的人传授powershell时。那人说,powershell不好,对象太占内存,他说的是对的。
cmd中我用dir返回100个文件名(字符串)。powershell中我用dir返回100个文件对象,powershell占用的内存多。
但今时不同往日:
1.1不必要的内容不要存在变量中。或者用完立马销毁,减少内存占用。
例如:
$a = dir 存放100个文件的目录 #返回100个文件对象,太占内存。
$a = (dir 存放100个文件的目录).name #返回100个字符串,虽然省内存,但文件的属性方法也没了。
1.2内存大大滴够用了。因为cpu性能已经上不去了,我们正在疯狂加大内存,企图以空间换时间。
1.3我们更想要强大的功能,这年头面向对象是最基本的。py,php,java,.net,c++哪个不是面向对象的?
2.net虚拟机,运行慢的情况。
2.1 第一次运行慢。
2.2 刚开机运行慢。
这个问题在win7中存在,在win10中基本不存在了。
有计划任务,在计算机空闲时,定时循环优化虚拟机。
就好像大热天,你去饭店吃饭,叫瓶凉啤酒。python说我现给你冰镇。.net说我把一小时前冰镇的拿给你。
.net预先建立了线程池,用于加速代码。提前整理好了堆、栈、内存,用于加速数据。
这种优化是系统级别的,这种优化导致python永远达不到的性能。除非py也搞这么一个服务。
总结:
1对象比字符串粒度更大,更占内存。
2面向对象多了方法,功能更强。
3属性比字符串粒度更小,用起来极其方便。避免了【狂用烧脑正则去过滤】字符串!
===狂用烧脑正则去过滤例子,bat版的ping默认网关===
- <p>@echo off&setlocal enabledelayedexpansion
- echo 正在查找默认网关...</p><p>for /f "usebackq delims=" %%i in (`ipconfig /all`) do (
- echo %%i|find /i "gateway">nul||echo %%i|find "默认网关">nul
- if "!errorlevel!"=="0" (
- for /f "tokens=2 delims=:" %%a in ("%%i") do for /f "delims= " %%m in ("%%a") do set ipgate=%%m
- )
- )</p><p>echo 默认网关是:!ipgate!</p>
复制代码
===========ping默认网关.ps1============
- <p>$默认网关 = (get-netroute -DestinationPrefix 0.0.0.0/0).NextHop
- & ping.exe $默认网关 </p><p># Test-Connection $默认网关</p>
复制代码
=======================
问:即然面向对象这么好,那么这些对象都是从哪里来的?
答:从.net库中来。
问:.net兼容库都在哪里??
答:
http://www.nuget.org/
|
|