linux下取出两个文本文件中相同的行或不同的行,计算行数,排除重复行等

 linux  linux下取出两个文本文件中相同的行或不同的行,计算行数,排除重复行等已关闭评论
3月 302021
 

1.  两个文本文件,现在想取出其中的相同的行或不同的行,可以以下操作:(比如文件a.txt和文件b.txt)

grep -wf a.txt b.txt   (取出相同的行)

grep -wvf a.txt b.txt   (取出不相同的行)

 

2.  如果要计算取出的行一共多少行? 如下:

grep -wf a.txt b.txt  | wc -l   (相同的行一共有多少行)

 

3. 如果a.txt有重复行数据,可以使用下面命令过滤并产生新文件a1.txt,然后再用上面的方法比较

sort a.txt | uniq -c | sort -rn | cut -c 9-  > a1.txt  (sort先排序,uniq再计数,sort -rn再按重复数量倒序, cut再截取,后导出)

 

 

“此版本…不能安装在这台电脑上”问题解决,旧/老Mac如何安装通过patch包安装不兼容的High Sierra, Mojave,Catalina系统

 mac, macpro  “此版本…不能安装在这台电脑上”问题解决,旧/老Mac如何安装通过patch包安装不兼容的High Sierra, Mojave,Catalina系统已关闭评论
3月 282021
 

老版的macpro , 比如2011年的版本正常升级系统只能支持到High Sierra, 而无法安装Mojave,Catalina系统, 但实际老硬件支持这些系统毫无压力,如果还换过固态硬盘的话,运行新操作系统更是绰绰有余,那如何升级呢?

老外做了一些补丁包,可以从以下址http://dosdude1.com/software.html下载到对应的包。

 

我们以安装mojave patch为例,以下所有的内容都可以在它的网页上找到(http://dosdude1.com/mojave/),我只是翻译成了中文,便于大家阅读:

 

具体步骤如下:

一、前提条件:

  1. 下载好对应的 mojave patch.
  2. 准备一个U盘,最好16G以上,
  3. macOS Mojave安装程序应用程序的副本。可以使用支持Mojave的机器从Mac App Store获得此信息,也可以使用mojave patch该工具的内置下载功能获得该信息。在菜单栏中,只需选择“工具>下载macOS Mojave …”http://dosdude1.com/mojave/tutorialimages/downloadMacOS.png

 

二、使用方法:

重要说明: 如果您有一台本机支持High Sierra的计算机,则要从APFS卷启动,必须​​确保安装了系统的最新版本的BootROM。如果您以前未安装High Sierra,您可以下载并安装这个软件包以安装最新的BootROM版本。安装时,请确保系统已接通电源,否则将不会安装更新。

1.插入所需的USB驱动器,打开“磁盘工具”,然后将其格式化为OS X扩展(日志式)。

2.打开“ macOS Mojave Patcher”工具,然后浏览以找到macOS Mojave Installer应用程序的副本。

*确保该工具成功验证了应用程序。

3.接下来,在“目标卷”列表中选择您的USB驱动器,然后单击“开始操作”。

4.操作完成后,通过在打开计算机电源的同时按住Option键并选择驱动器,从刚创建的USB驱动器上启动目标不受支持的Mac。


注意:如果要进行全新安装,请仅执行步骤5和6。否则,您只需跳过这些步骤并安装到包含OS X早期版本的卷中,它将进行就地升级。

5.安装程序启动后,从“实用工具”菜单中打开“磁盘实用工具”,或者在屏幕左下角的“实用工具”窗口中双击它。

6.选择要安装在其上的磁盘或分区,然后将其擦除,以确保使用Mac OS Extended(日志式)或APFS作为文件系统类型。如果格式化整个驱动器,请确保已选择GUID。

重要的提示:  Mojave中要求使用APFS,以便通过常规软件更新方法接收系统更新。如果您选择继续使用macOS Extended(Journaled)作为文件系统类型,则不会通过系统偏好设置接收系统更新。

•在2009年末及以后的计算机上使用APFS的工作方式与High Sierra相同。
•如果您的机器本身不支持High Sierra(因此无法自然启动APFS卷),请注意以下几点:

—如果使用APFS,将没有可启动的恢复分区。
—如果您决定使用APFS,则安装后的工具将安装自定义启动方法,因为这些不受支持的计算机的固件本身不支持从APFS卷启动。它不像本机启动那样干净,但是在运行Mojave时不会引起任何问题。修改后的启动过程的演示可以在这里查看。

7.将macOS正常安装到所需的卷上。

8.安装完成后,重新引导回安装程序驱动器。这次,打开“ macOS Post Install”应用程序。

9.在应用程序中,选择您正在使用的Mac型号(如果不清楚型号的,可以点击mac左上角苹果图标,点击 “关于本机”  –> “概览” –> “系统报告……” –> “硬件”, 在“硬件概览”下的“型号标识符“就是我们要找的信息)。将根据您选择的模型为您选择最佳的补丁。您还可以选择其他补丁。

10.选择刚刚在其上安装了macOS Mojave的卷,然后单击“修补程序”。完成修补后,单击“重新启动”。在重新启动之前,它可能会坐在那里片刻来重建缓存。
•如果由于某种原因,系统在重新引导后无法正常运行,请重新引导至安装程序驱动器,再次运行安装后修补程序,然后在重新引导之前选择“强制缓存重建”。在大多数情况下,这不是必需的。

11.重新启动后,它现在应该启动到macOS Mojave的完全正常工作的副本中。

附加信息:

•如果在macOS后期安装工具中选择了Mojave,则您的Mojave安装将在/ Applications / Utilities文件夹中有一个名为“ Patch Updater”的程序。当您的计算机有可用的补丁程序新更新时,此程序将提醒您,并提示您安装它们。如果您没有安装补丁更新程序,但是想要安装它,则可以下载并运行此处找到的脚本。

•在系统更新期间,某些补丁可能会被覆盖。使用补丁更新程序工具,可以一键式重新安装这些补丁。为此,请打开Patch Updater应用程序,然后选择“查看已安装的更新”,或使用菜单栏中的“查看>显示已安装的更新”菜单。
•要重新安装补丁,只需在列表中右键单击它,然后选择“重新安装”。您也可以选择“全部重新安装”按钮,以立即重新安装所有当前已安装的修补程序。

更新

重要说明:

    • Mojave中要求使用APFS,以便通过常规软件更新方法接收系统更新。如果您选择继续使用macOS Extended(Journaled)作为文件系统类型,则不会通过系统偏好设置接收系统更新。如果您不使用APFS,则可以按照以下10.14.1的安装步骤进行操作。

 

  • 通过软件更新应用任何系统更新后,很有可能需要使用Mojave Patcher安装程序卷重新应用安装后补丁。如果您安装软件更新,但系统随后无法启动,则需要执行此操作。

 

macOS 10.15 系统任何来源已打开,软件显示损坏解决方案(转)

 mac  macOS 10.15 系统任何来源已打开,软件显示损坏解决方案(转)已关闭评论
3月 262021
 

更新 macOS 10.15 Catalina 系统后,许多在 10.14 上可以使用的 App 都会提示【 xxx 已损坏,无法打开,你应该将它移到废纸篓解决办法 】,哪怕你在【安全与隐私 > 通用】中已经开启了【任何来源】,但还是会出现这样提示,接下来小编为大家带来详细的修复的方法,感兴趣的朋友快跟着小编一起来看看吧!

准备工作:检查是否已开启【任何来源】,已开启的请忽略准备工作

先打开系统偏好设置,检查 【安全与隐私】 -> 【通用选项卡】下是否已经启用了任何来源选项:

如果没有打开【任何来源】选项,请参考教程:https://www.kkmac.com/help-mac-888.html

重要提示:首先你要先打开【任何来源】选项,再进行接下来的操作!

现在教程正式开始:

1、打开 「Launchpad」 – 「实用工具」 – 「终端」;

2.将下面这段代码复制,在终端窗口粘贴。

sudo xattr -d com.apple.quarantine 

注意 代码的 quarantine 后面有个空格,要一起复制进终端

打开 Finder(访达),点击左侧的应用程序,将应用拖进终端中按下回车

然后按键盘的回车键(return),输入密码,再按回车键,完成。

回车后会看见个 password 后面还有个钥匙图标,在钥匙图标后面输入你自己电脑解锁密码

输入的时候不显示你输入的密码,感觉就是输入不了东西一样,也不用管,凭感觉输入完正确解锁密码后按回车键。

好了再看一下是不是可以打开 APP 了!

最后补充

如果以上方法都不能解决,就只能关闭 SIP 系统完整性保护了!!!

详细请参考:https://www.kkmac.com/macos-gb-sip.html

 

转自: https://www.kkmac.com/mac-81112.html

nginx自定义变量与内置预定义变量(获取GET参数值,HEADER参数值等)

 nginx  nginx自定义变量与内置预定义变量(获取GET参数值,HEADER参数值等)已关闭评论
3月 242021
 

总览
nginx可以使用变量简化配置与提高配置的灵活性,所有的变量值都可以通过这种方式引用:

$变量名

而nginx中的变量分为两种,自定义变量与内置预定义变量

内置变量
声明
可以在sever,http,location等标签中使用set命令(非唯一)声明变量,语法如下

set $变量名 变量值

注意nginx中的变量必须都以$开头。

可见性
nginx的配置文件中所有使用的变量都必须是声明过的,否则nginx会无法启动并打印相关异常日志

nginx变量的一个有趣的特性就是nginx中没一个变量都是全局可见的,而他们又不是全局变量。比如下面这个例子

location a/ {
return 200 $a
}

location b/ {
set $a hello nginx
return 200 $a
}

由于变量是全局可见的所以nginx启动不会报错,而第一个location中并不知道$a的具体值因此返回的响应结果为一个空字符串。

在不同层级的标签中声明的变量性的可见性规则如下:

location标签中声明的变量中对这个location块可见
server标签中声明的变量对server块以及server块中的所有子块可见
http标签中声明的变量对http块以及http块中的所有子块可见
内置预定义变量
内置预定义变量即无需声明就可以使用的变量,通常包括一个http请求或响应中一部分内容的值,以下为一些常用的内置预定义变量

变量名 定义
$arg_PARAMETER GET请求中变量名PARAMETER参数的值。
$args 这个变量等于GET请求中的参数。例如,foo=123&bar=blahblah;这个变量只可以被修改
$binary_remote_addr 二进制码形式的客户端地址。
$body_bytes_sent 传送页面的字节数
$content_length 请求头中的Content-length字段。
$content_type 请求头中的Content-Type字段。
$cookie_COOKIE cookie COOKIE的值。
$document_root 当前请求在root指令中指定的值。
$document_uri 与$uri相同。
$host 请求中的主机头(Host)字段,如果请求中的主机头不可用或者空,则为处理请求的server名称(处理请求的server的server_name指令的值)。值为小写,不包含端口。
$hostname 机器名使用 gethostname系统调用的值
$http_HEADER HTTP请求头中的内容,HEADER为HTTP请求中的内容转为小写,-变为_(破折号变为下划线),例如:$http_user_agent(Uaer-Agent的值);
$sent_http_HEADER HTTP响应头中的内容,HEADER为HTTP响应中的内容转为小写,-变为_(破折号变为下划线),例如: $sent_http_cache_control, $sent_http_content_type…;
$is_args 如果$args设置,值为”?”,否则为””。
$limit_rate 这个变量可以限制连接速率。
$nginx_version 当前运行的nginx版本号。
$query_string 与$args相同。
$remote_addr 客户端的IP地址。
$remote_port 客户端的端口。
$remote_user 已经经过Auth Basic Module验证的用户名。
$request_filename 当前连接请求的文件路径,由root或alias指令与URI请求生成。
$request_body 这个变量(0.7.58+)包含请求的主要信息。在使用proxy_pass或fastcgi_pass指令的location中比较有意义。
$request_body_file 客户端请求主体信息的临时文件名。
$request_completion 如果请求成功,设为”OK”;如果请求未完成或者不是一系列请求中最后一部分则设为空。
$request_method 这个变量是客户端请求的动作,通常为GET或POST。包括0.8.20及之前的版本中,这个变量总为main request中的动作,如果当前请求是一个子请求,并不使用这个当前请求的动作。
$request_uri 这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI。
$scheme 所用的协议,比如http或者是https,比如rewrite ^(.+)$ $scheme://example.com$1 redirect;
$server_addr 服务器地址,在完成一次系统调用后可以确定这个值,如果要绕开系统调用,则必须在listen中指定地址并且使用bind参数。
$server_name 服务器名称。
$server_port 请求到达服务器的端口号。
$server_protocol 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$uri 请求中的当前URI(不带请求参数,参数位于a r g s ) , 不 同 于 浏 览 器 传 递 的 args),不同于浏览器传递的args),不同于浏览器传递的request_uri的值,它可以通过内部重定向,或者使用index指令进行修改。不包括协议和主机名,例如/foo/bar.html

原文链接:https://blog.csdn.net/m0_37556444/article/details/84563520

sql server 分页sql高效写法(mysql limit替代写法)

 mysql, sqlserver  sql server 分页sql高效写法(mysql limit替代写法)已关闭评论
3月 182021
 

习惯了mysql, 切到sql server真TM不习惯,处处觉得sql server的使用太垃圾了, 完全是拉低开发人员效率的产品!

今天谈下sql server为人诟病的分页,OMG , 在mysql里使用 limit n,m就能解决的事情,在sql server里动作就大了,常见的使用 NOT in 语法(实在无法想象这样的查询效率),或者使用自己定义一个存储过程的方式(但这种方式条件又不够灵活), 推荐一个相对比较高效并且相对简单的写法如下

SELECT TOP 页大小 * FROM( SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1 )as A 
WHERE RowNumber > 页大小*(页数-1)

注解:

  • 首先利用Row_number()为table1表的每一行添加一个行号,给行号这一列取名’RowNumber’ ,在over()方法中将table1按’id’做了升序排列
  • 然后将’RowNumber’列 与table1表的所有列 形成一个表A
  • 重点在where条件。假如当前页(currentPage)是第2页,每页显示10个数据(pageSzie)。那么第一页的数据就是第11-20条

mysql的on duplicate key update语句在sql server中的替代写法

 sqlserver, 数据库  mysql的on duplicate key update语句在sql server中的替代写法已关闭评论
3月 162021
 

mysql在处理唯一主键记录时可以一个语句实现没有记录时插入有记录时更新, 只要使用“insert …… on duplicate key update …. ”,非常简洁高效,oracle 、 DB2 都有类似的语法可以实现相同的功能,但坑爹的是sql server没有对应的语句,但可以使用下面的语句实现相同的功能,但稍许复杂些:

  • 1. 对于sql server 2008及以后的版本,可以使用merge语法, 可以参考下面的实例用法:
CREATE TABLE #mytable(COL_A VARCHAR(10), COL_B VARCHAR(10), COL_C VARCHAR(10), COL_D VARCHAR(10))
INSERT INTO #mytable VALUES('1','0.1', '0.2', '0.3'); --<These are the values we'll be updating
SELECT * FROM #mytable --< Starting values (1 row)
--< 以上是测试数据,主要注意下面的MERGE语句用法
    MERGE #mytable AS target --< This is the target we want to merge into
    USING ( --< This is the source of your merge. Can me any select statement
        SELECT '1' AS VAL_A,'1.1' AS VAL_B, '1.2' AS VAL_C, '1.3' AS VAL_D --<These are the values we'll use for the update. (Assuming column COL_A = '1' = Primary Key)
        UNION
        SELECT '2' AS VAL_A,'2.1' AS VAL_B, '2.2' AS VAL_C, '2.3' AS VAL_D) --<These values will be inserted (cause no COL_A = '2' exists)
        AS source (VAL_A, VAL_B, VAL_C, VAL_D) --< Column Names of our virtual "Source" table
    ON (target.COL_A = source.VAL_A) --< This is what we'll use to find a match "JOIN source on Target" using the Primary Key
    WHEN MATCHED THEN --< This is what we'll do WHEN we find a match, in your example, UPDATE COL_D = VALUES(COL_D);
        UPDATE SET
            target.COL_B = source.VAL_B,
            target.COL_C = source.VAL_C,
            target.COL_D = source.VAL_D
    WHEN NOT MATCHED THEN --< This is what we'll do when we didn't find a match
    INSERT (COL_A, COL_B, COL_C, COL_D)
    VALUES (source.VAL_A, source.VAL_B, source.VAL_C, source.VAL_D)
    --OUTPUT deleted.*, $action, inserted.* --< Uncomment this if you want a summary of what was inserted on updated.
    --INTO #Output  --< Uncomment this if you want the results to be stored in another table. NOTE* The table must exists
    ;

--< MERGE后测试数据显示
SELECT * FROM #mytable --< Ending values (2 row, 1 new, 1 updated)
  • 2. 对于sql server 2008以前的版本可以参考下面语句的使用方法:
update mytable
  set col_d = 'val_d'
  where col_a = 'val_a'
    and col_b = 'val_b'
    and col_c = 'val_c';

insert into mytable (col_a, col_b, col_c, col_d)
  select 'val_a','val_b', 'val_c', 'val_d'
  where not exists (select * 
    from mytable with (serializable) 
    where col_a = 'val_a'
      and col_b = 'val_b'
      and col_c = 'val_c'
      );

参考:https://stackoverflow.com/questions/27076348/equivalent-of-mysql-on-duplicate-key-update-in-sql-server

excel查找某列里最长的行和行的值

 excel  excel查找某列里最长的行和行的值已关闭评论
3月 032021
 

需要查一个18万行excel文件里Y列哪行的列的值长度最长,有多长(第1行是列名,数据从第2行开始)? 如何查呢,可以使用下列方法:

  • 1. 查询这个Y中最长值所在行的这个Y列的值有多长?

选择一个空单元格, 输入=MAX(LEN(Y2:Y180000)) ,然后,输完公式后必须同时按下三个键(ctrl+shift+enter)结束输入

  • 2. 查询这个Y列最长值所在行在哪一行(索引)?

选择一个空单元格, 输入=MATCH(MAX(LEN(Y2:Y180000)),LEN(Y2:Y180000),0) ,然后,输完公式后必须同时按下三个键(ctrl+shift+enter)结束输入,此函数查找最大len在范围Y2:Y180000中的第一个单元格的索引

 

感谢万能的互联网,希望对需要的人有帮助!!

macOS安装过程中“应用副本已损坏,不能用来安装macOS….”的解决方案

 mac, macpro  macOS安装过程中“应用副本已损坏,不能用来安装macOS….”的解决方案已关闭评论
2月 262021
 

今天在给一个旧mac安装os时,使用u 盘启动安装时提示下面错误“应用副本已损坏,不能用来安装macOS….“ , 后来网上查到: 大部分原因是由于系统版本证书过期所致。我们可以这样操作,解决上述问题。

先点击“好”关闭窗口,我们先关闭网络,关闭网络,关闭网络(断开wifi,拔网线等),在准备安装界面中点击工具栏“实用工具”—“终端”,进入终端

进入终端后,我们输入以下命令行“date 062614102014.30”,注意,date后面是空格,输完之后按回车确定。(其他版本日期参照教程结尾)

命令行输完之后,关闭窗口,退出终端。

退出之后,我们点击“安装macOS”,看一下能否进下一步。

我们顺利得进入了安装界面。

其他事项

一、在桌面环境升级系统时,同样先关闭网络,打开“终端”,输入日期前加入”sudo”,例如“sudo date 062614102014.30”(不包括引号),按回车,关闭终端之后再执行升级操作。

二、如果上面的命令行不起作用。我们可以更改成其他日期再试一遍

date 0201010116(OS X El Capitan 10.11.6适用)

date 010514102017.30(macOS Sierra 10.12适用)

date 062614102014.30 (10.13、10.14适用)

date 121212122019 (10.15)

date 032208102015.20

date 112202022015

date 122014102015.30(10.10可用)

mac磁盘工具格式化时u盘时卡死问题解决方式

 mac, macpro  mac磁盘工具格式化时u盘时卡死问题解决方式已关闭评论
2月 262021
 

mac使用磁盘工具格式化u盘时出现卡死现象,apple官网建议使用以下各个方式尝试:

  1. 您的 Mac 已经更新至最新版本(重要:建议更新前备份您的 Mac。)(个人觉得这条是比较坑的,建议先使用后面的方式最后再尝试这条
  2. 前往“访达”>“应用程序”>“实用工具”>“磁盘工具”,尝试推出“外置”U 盘,并重新插拔您的 U 盘。(如果 Mac 有多个 USB 接口,尝试更换另一个接口。)
  3. 若仍然无法识别,建议重启您的 Mac,然后在“磁盘工具”中选择该外置存储设备,确保已经成功“装载”。
  4. 尝试重置非易失的随机访问存储器(NVRAM)
  5. 尝试重置 Mac 上的系统管理器(SMC)
  6. 尝试创建新的管理员帐户,使用新建的管理员帐户登录以便查看问题是否仍然存在。
  7. 建议将您的 U 盘连接其他 Mac,以确定问题是否局限于您的 Mac。
  8. 尝试将其他外置 USB 储存设备连接您的电脑,以查看问题是否局限于您的 U 盘。

如何重置 Mac 的 SMC系统管理器

 mac, macpro  如何重置 Mac 的 SMC系统管理器已关闭评论
2月 262021
 

如何重置 Mac 的 SMC系统管理器

重置系统管理控制器 (SMC) 可以解决某些与电源、电池、风扇和其他功能相关的问题。

在搭载 T2 芯片的电脑上重置 SMC

如果您的 Mac 配备 Apple T2 安全芯片,请按照以下步骤操作。如果您需要协助,请联系 Apple 支持

配备 T2 芯片的笔记本电脑

重置 SMC 之前,请尝试以下步骤:

  1. 将 Mac 关机。
  2. 按住电源按钮 10 秒钟,然后松开这个按钮。
  3. 等待几秒钟,然后按下电源按钮以将 Mac 开机。

如果问题仍然存在,请按照以下步骤重置 SMC:

  1. 将 Mac 关机。
  2. 在内建键盘上,按住以下所有按键。Mac 可能会开机。
    • 键盘左侧的 Control 
    • 键盘左侧的 Option (Alt) 
    • 键盘右侧的 Shift 
  3. 按住全部三个按键 7 秒钟,然后在不松开按键的情况下按住电源按钮。如果 Mac 处于开机状态,它将在您按住这些按键时关机。
  4. 继续按住全部四个按键 7 秒钟,然后松开这些按键。
  5. 等待几秒钟,然后按下电源按钮以将 Mac 开机。

配备 T2 芯片的台式电脑

  1. 将 Mac 关机,然后拔下电源线。
  2. 等待 15 秒钟,然后重新接回电源线。
  3. 等待 5 秒钟,然后按下电源按钮以将 Mac 开机。

 


在其他电脑上重置 SMC

如果您的 Mac 没有配备 Apple T2 安全芯片,请按照以下步骤操作。如果您需要协助,请联系 Apple 支持

装有不可拆卸电池的笔记本电脑

这类电脑包括 2009 年中至 2017 年推出的 MacBook Pro 机型、2017 年或之前推出的 MacBook Air 机型,以及所有 MacBook 机型,但 MacBook(13 英寸,2009 年中)除外。

  1. 将 Mac 关机。
  2. 在内建键盘上,按住以下所有按键:
    • 键盘左侧的 Shift 
    • 键盘左侧的 Control 
    • 键盘左侧的 Option (Alt) 
  3. 在按住全部三个按键的情况下,按住电源按钮
    全部 4 个按键已被按下的笔记本电脑键盘
  4. 按住全部四个按键 10 秒钟。
  5. 松开所有按键,然后按下电源按钮以将 Mac 开机。

装有可拆卸电池的笔记本电脑

这类电脑包括 2009 年初或之前推出的所有 MacBook Pro 和 MacBook 机型,以及 MacBook(13 英寸,2009 年中)。

  1. 将 Mac 关机。
  2. 拆下电池。(如果您需要拆卸电池方面的协助,请联系 Apple Store 商店或 Apple 授权服务提供商。)
  3. 按住电源按钮 5 秒钟。
  4. 重新安装电池。
  5. 按下电源按钮以将 Mac 开机。

台式电脑

  1. 将 Mac 关机,然后拔下电源线。
  2. 等待 15 秒钟,然后重新接回电源线。
  3. 等待 5 秒钟,然后按下电源按钮以将 Mac 开机。

 


关于 SMC

系统管理控制器 (SMC) 负责管理与以下功能相关的行为:

  • 电源,包括电源按钮和 USB 端口的电源
  • 电池和充电
  • 风扇和其他热能管理功能
  • 指示灯或感应器,例如状态指示灯(睡眠状态、电池充电状态等)、突发移动感应器、环境光传感器和键盘背光
  • 打开和合上笔记本电脑盖时的行为

重置 SMC 不会影响 NVRAM 或 PRAM 的内容。

重置 Mac 上的 NVRAM 或 PRAM

 mac, macpro  重置 Mac 上的 NVRAM 或 PRAM已关闭评论
2月 262021
 

如果 Mac 出现了与 NVRAM 或 PRAM 中储存的设置有关的问题,那么进行重置可能会有帮助。

NVRAM(非易失性随机访问存储器)是一小部分内存,Mac 使用这些内存来储存某些设置并对其进行快速访问。PRAM(参数 RAM)储存着类似的信息,且 NVRAM 和 PRAM 的重置步骤相同。

可储存在 NVRAM 中的设置包括音量、显示屏分辨率、启动磁盘选择、时区,以及最近的内核崩溃信息。储存在 NVRAM 中的设置取决于您的 Mac 以及与这台 Mac 搭配使用的设备。

如果您遇到与这些设置或其他设置有关的问题,那么重置 NVRAM 可能会有帮助。例如,如果 Mac 并非从“启动磁盘”偏好设置中选定的磁盘启动,或者在 Mac 启动前短暂地显示了一个问号图标,则可能需要重置 NVRAM。

如何重置 NVRAM

Option 键加Command 键加P 键加R 键

将 Mac 关机,然后开机并立即同时按住以下四个按键:Option、Command、P 和 R。您可以在大约 20 秒后松开这些按键,在此期间您的 Mac 可能看似在重新启动。

  • 如果 Mac 电脑发出启动声,您可以在第二次启动声过后松开这些按键。
  • 搭载 Apple T2 安全芯片的 Mac 电脑上,您可以在 Apple 标志第二次出现并消失后松开这些按键。

如果您的 Mac 使用了固件密码,这个组合键将不起任何作用或导致您的 Mac 从 macOS 恢复功能启动。要重置 NVRAM,请先关闭固件密码。

在您的 Mac 完成启动后,您可能需要打开“系统偏好设置”并调整已重置的任何设置,例如音量、显示屏分辨率、启动磁盘选择或时区。

进一步了解

  • 如果您使用的是 Mac 台式电脑而非笔记本电脑,并且每次关闭 Mac 并断开 Mac 电源时,音量或时区等设置均会重置,则您可能需要更换 Mac 中的电池。这个小电池位于电脑的主板上,用于在断开 Mac 电源连接时帮助 NVRAM 保存设置。您可以携 Mac 前往 Apple 服务提供商处来更换该电池。
  • 如果遇到了与睡眠、唤醒、电源、为 Mac 笔记本电脑电池充电有关的问题或其他与电源相关的症状,您可能需要重置 SMC(系统管理控制器)

Mac 的启动组合键

 mac, macpro  Mac 的启动组合键已关闭评论
2月 252021
 

Mac 的启动组合键

摘录自apple官网,这些组合键仅适用于搭载 Intel 处理器的 Mac 电脑

 

要使用这些组合键中的任何一个,请在按下电源按钮以开启 Mac 后或在 Mac 开始重新启动后,立即按住相应按键。请一直按住,直至电脑出现对应的行为。

  • Command (⌘)-R:从内建的 macOS 恢复系统启动。或者,您也可以使用 Option-Command-R Shift-Option-Command-R 以通过互联网从 macOS 恢复功能启动。macOS 恢复功能可以安装不同版本的 macOS,具体取决于您在电脑启动时使用的组合键。如果您的 Mac 使用了固件密码,系统将提示您输入这个密码。
  • Option (⌥) 或 Alt:启动进入“启动管理器”,您可以从中选取其他可用的启动磁盘或宗卷。如果您的 Mac 使用了固件密码,系统将提示您输入这个密码。
  • Option-Command-P-R:重置 NVRAM 或 PRAM。如果您的 Mac 使用了固件密码,电脑会忽略这个组合键或从 macOS 恢复功能启动。
  • Shift (⇧):安全模式启动。如果使用了固件密码,这个组合键将被停用。
  • D:启动进入“Apple 诊断”实用工具。或者,您也可以使用 Option-D 通过互联网启动进入这个实用工具。如果使用了固件密码,这个组合键将被停用。
  • N:从 NetBoot 服务器启动,前提是您的 Mac 支持网络启动宗卷。要使用服务器上默认的引导映像,请按住 Option-N。如果使用了固件密码,这个组合键将被停用。
  • Command-S:以单用户模式启动。如果运行的是 macOS Mojave 或更高版本,或者使用了固件密码,这个组合键将被停用。
  • T:目标磁盘模式启动。如果使用了固件密码,这个组合键将被停用。
  • Command-V:以详细模式启动。如果使用了固件密码,这个组合键将被停用。
  • 推出键 (⏏)、F12鼠标按钮触控板按钮:推出可移动介质,例如光盘。如果使用了固件密码,这个组合键将被停用。

 


如果组合键不起作用

如果某个组合键在启动时不起作用,以下解决方案之一可能会有所帮助:

  • 同时按住组合键中的所有按键,而不是一次只按住一个。
  • 将 Mac 关机。然后按下电源按钮以将 Mac 开机。接下来,在 Mac 启动时按住相应按键。
  • 在按下相应按键之前等待几秒钟,以便让 Mac 在启动时有更多时间来识别键盘。某些键盘上有一个指示灯会在启动时短暂闪烁,表明键盘已被识别并可供使用。
  • 如果您使用的是无线键盘,请在可能的情况下将这个键盘接入 Mac。或者使用您的内建键盘或有线键盘。如果您使用的是 PC 专用键盘,例如带有 Windows 标志的键盘,请尝试改用 Mac 专用键盘。
  • 如果您使用“启动转换”从 Microsoft Windows 进行启动,请对“启动磁盘”偏好设置进行相应设置,修改为从 macOS 启动。随后关机或重新启动,然后再试一次。

请记住,如果您的 Mac 使用了固件密码,则某些组合键将被停用。

 

Mac无法启动过程中出现的各类符号及处理方法(禁止,圆圈,问号,齿轮,空白,警告,地球等)

 mac, macpro  Mac无法启动过程中出现的各类符号及处理方法(禁止,圆圈,问号,齿轮,空白,警告,地球等)已关闭评论
2月 252021
 

Mac无法启动过程中出现的各类符号及处理方法,此文摘录自apple官网。

 

如果您的 Mac 无法顺利完成启动,或者在启动过程中需要您完成某项操作,可能会卡在以下某个屏幕上。

由直线穿过的圆圈

macOS 启动屏幕上显示了禁止符号和 URL:support.apple.com/mac/startup

了解如果您的 Mac 在启动时显示一个由直线穿过的圆圈(禁止符号),该怎么做。


问号


“选项”齿轮图标


空白屏幕

Mac 笔记本电脑空白灰屏

了解如果您的 Mac 在启动时出现空白屏幕(例如空白灰色、黑色或蓝色屏幕),该怎么做。



带有警告符号的地球

macOS 启动屏幕上显示了带有警告符号的地球和 URL:support.apple.com/mac/startup

如果显示带有感叹号的地球,则说明您的 Mac 曾尝试通过互联网从 macOS 恢复功能启动,但失败了。了解如果您的 Mac 无法从 macOS 恢复功能启动,该怎么做。


锁形图标

macOS 启动屏幕上显示了固件锁形图标和密码输入栏

如果您的 Mac 使用了固件密码,则当您尝试从另一个磁盘或宗卷(例如,外置驱动器或 macOS 恢复功能)启动时会出现锁形图标。请输入固件密码以继续。


锁定系统的 PIN 码

macOS 锁定系统的 PIN 码启动屏幕

如果您的 Mac 已通过“查找”功能进行了远程锁定,则系统将要求输入 PIN 码。请输入四位数或六位数密码以继续。


登录窗口

macOS Big Sur 用户登录屏幕

在登录窗口中,输入您的用户帐户密码,以登录您的 Mac。如果“文件保险箱”已打开,则这一操作还会解锁您的磁盘。您可能会在背景中看到默认的桌面图片,在您选择自己的帐户后,这个图片可能会更改为您选择的桌面图片。


雷雳、USB 或 FireWire 符号

如果屏幕上显示黑色背景和大的雷雳 、USB  或 FireWire  符号,则表示您的 Mac 处于目标磁盘模式

下载官网旧版 macOS, 老版OS X, macOS官网连接地址(Catalina,Mojave,Sierra,Capitan,Yosemite)

 mac  下载官网旧版 macOS, 老版OS X, macOS官网连接地址(Catalina,Mojave,Sierra,Capitan,Yosemite)已关闭评论
2月 252021
 
apple官网下载老版OS 系统的链接实在太难找了,而其它网站上下载要么不能用,那么这注册那注册, 我整理了下官网os网页上的内容,大家可以选择下载,纯正官网噢!!!

下载旧版 macOS

下载和安装 macOS 需要花费一些时间,因此请确保您已接入交流电源并具备可靠稳定的互联网连接。

以下来自 App Store 的安装器会在您下载后自动打开:

您的网页浏览器会以名为“InstallOS.dmg”或“InstallMacOSX.dmg”的磁盘映像的形式下载以下较早版本的安装器。请打开磁盘映像,再打开其中的 .pkg 安装器。它将安装一个名为“安装 [版本名称]”的 App。请从“应用程序”文件夹中打开这个 App,以开始安装操作系统。

附官网创建可引导盘链接:

文章二: 使用ssh实现内网穿透及SSH端口转发详解(转)

 ssh  文章二: 使用ssh实现内网穿透及SSH端口转发详解(转)已关闭评论
2月 202021
 

以下内容是关于SSH端口转发的详解使用,文章通俗易懂,比前面的文章一写的更好,强烈推荐!原文地址见文末。

 

SSH有三种端口转发模式,本地端口转发(Local Port Forwarding)远程端口转发(Remote Port Forwarding)以及动态端口转发(Dynamic Port Forwarding)。对于本地/远程端口转发,两者的方向恰好相反。动态端口转发则可以用于科学上网。

SSH端口转发也被称作SSH隧道(SSH Tunnel),因为它们都是通过SSH登陆之后,在SSH客户端SSH服务端之间建立了一个隧道,从而进行通信。SSH隧道是非常安全的,因为SSH是通过加密传输数据的(SSH全称为Secure Shell)。

在本文所有示例中,本地主机A1为SSH客户端,远程云主机B1为SSH服务端。从A1主机通过SSH登陆B1主机,指定不同的端口转发选项(-L、-R和-D),即可在A1与B1之间建立SSH隧道,从而进行不同的端口转发。

本地端口转发

应用场景:

远程云主机B1运行了一个服务,端口为3000,本地主机A1需要访问这个服务。

示例为一个简单的Node.js服务:

var http = require('http');

var server = http.createServer(function(request, response)
{
    response.writeHead(200,
    {
        "Content-Type": "text/plain"
    });
    response.end("Hello O-u-u.com\n");
});

server.listen(3000);

假设云主机B1的IP为103.59.22.17,则该服务的访问地址为:http://103.59.22.17:3000

为啥需要本地端口转发呢?

一般来讲,云主机的防火墙默认只打开了22端口,如果需要访问3000端口的话,需要修改防火墙。为了保证安全,防火墙需要配置允许访问的IP地址。但是,本地公网IP通常是网络提供商动态分配的,是不断变化的。这样的话,防火墙配置需要经常修改,就会很麻烦。

什么是本地端口转发?

所谓本地端口转发,就是将发送到本地端口的请求,转发到目标端口。这样,就可以通过访问本地端口,来访问目标端口的服务。使用-L属性,就可以指定需要转发的端口,语法是这样的:

-L 本地网卡地址:本地端口:目标地址:目标端口

通过本地端口转发,可以将发送到本地主机A1端口2000的请求,转发到远程云主机B1的3000端口。

# 在本地主机A1登陆远程云主机B1,并进行本地端口转发
ssh -L localhost:2000:localhost:3000 [email protected]

这样,在本地主机A1上可以通过访问http://localhost:2000来访问远程云主机B1上的Node.js服务。

# 在本地主机A1访问远程云主机B1上的Node.js服务
curl http://localhost:2000
Hello O-u-u.com

实际上,-L选项中的本地网卡地址是可以省略的,这时表示2000端口绑定了本地主机A1的所有网卡:

# 在本地主机A1登陆远程云主机B1,并进行本地端口转发。2000端口绑定本地所有网卡
ssh -L 2000:localhost:3000 [email protected]

若本地主机A2能够访问A1,则A2也可以通过A1访问远程远程云主机B1上的Node.js服务。

另外,-L选项中的目标地址也可以是其他主机的地址。假设远程云主机B2的局域网IP地址为192.168.59.100,则可以这样进行端口转发:

# 在本地主机A1登陆远程云主机B1,并进行本地端口转发。请求被转发到远程云主机B2上
ssh -L 2000:192.168.59.100:3000 [email protected]

若将Node.js服务运行在远程云主机B2上,则发送到A1主机2000端口的请求,都会被转发到B2主机上。

远程端口转发

应用场景:

本地主机A1运行了一个服务,端口为3000,远程云主机B1需要访问这个服务。

将前文的Node.js服务运行在本地,在本地就可以通过http://localhost:3000访问该服务。

为啥需要远程端口转发呢?

通常,本地主机是没有独立的公网IP的,它与同一网络中的主机共享一个IP。没有公网IP,云主机是无法访问本地主机上的服务的。

什么是远程端口转发?

所谓远程端口转发,就是将发送到远程端口的请求,转发到目标端口。这样,就可以通过访问远程端口,来访问目标端口的服务。使用-R属性,就可以指定需要转发的端口,语法是这样的:

-R 远程网卡地址:远程端口:目标地址:目标端口

这时,通过远程端口转发,可以将发送到远程云主机B1端口2000的请求,转发到本地主机A1端口3000。

# 在本地主机A1登陆远程云主机B1,并进行远程端口转发
ssh -R localhost:2000:localhost:3000 [email protected]

这样,在远程云主机A1可以通过访问http://localhost:2000来访问本地主机的服务。

# 在远程云主机B1访问本地主机A1上的Node.js服务
curl http://localhost:2000
Hello O-u-u.com

同理,远程网卡地址可以省略,目标地址也可以是其他主机地址。假设本地主机A2的局域网IP地址为192.168.0.100。

# 在本地主机A1登陆远程云主机B1,并进行远程端口转发
ssh -R 2000:192.168.0.100:3000 [email protected]

若将Node.js服务运行在本地主机A2上,则发送到远程云主机A1端口2000的请求,都会被转发到A2主机上。

动态端口转发

应用场景:

远程云主机B1运行了多个服务,分别使用了不同端口,本地主机A1需要访问这些服务。

为啥需要动态端口转发呢?

一方面,由于防火墙限制,本地主机A1并不能直接访问远程云主机B1上的服务,因此需要进行端口转发;另一方面,为每个端口分别创建本地端口转发非常麻烦。

什么是动态端口转发?

对于本地端口转发远程端口转发,都存在两个一一对应的端口,分别位于SSH的客户端和服务端,而动态端口转发则只是绑定了一个本地端口,而目标地址:目标端口则是不固定的。目标地址:目标端口是由发起的请求决定的,比如,请求地址为192.168.1.100:3000,则通过SSH转发的请求地址也是192.168.1.100:3000

-D 本地网卡地址:本地端口

这时,通过动态端口转发,可以将在本地主机A1发起的请求,转发到远程主机B1,而由B1去真正地发起请求。

# 在本地主机A1登陆远程云主机B1,并进行动态端口转发
ssh -D localhost:2000 [email protected]

而在本地发起的请求,需要由Socket代理(Socket Proxy)转发到SSH绑定的2000端口。以Firefox浏览器为例,配置Socket代理需要找到首选项>高级>网络>连接->设置:

这样的话,Firefox浏览器发起的请求都会转发到2000端口,然后通过SSH转发到真正地请求地址。若Node.js服务运行在远程云主机B1上,则在Firefox中访问localhost:3000即可以访问。如果主机B1能够访问外网的话,则可以科学上网……

链式端口转发

本地端口转发远程端口转发结合起来使用,可以进行链式转发。假设A主机在公司,B主机在家,C主机为远程云主机。A主机上运行了前文的Node.js服务,需要在B主机上访问该服务。由于A和B不在同一个网络,且A主机没有独立公共IP地址,所以无法直接访问服务。

通过本地端口转发,将发送到B主机3000端口的请求,转发到远程云主机C的2000端口。

# 在B主机登陆远程云主机C,并进行本地端口转发
ssh -L localhost:3000:localhost:2000 [email protected]

通过远程端口转发,将发送到远程云主机C端口2000的请求,转发到A主机的3000端口。

# 在A主机登陆远程云主机C,并进行远程端口转发
ssh -R localhost:2000:localhost:3000 [email protected]

这样,在主机B可以通过访问http://localhost:3000来访问主机A上的服务。

# 在主机B访问主机A上的服务
curl http://localhost:3000
Hello O-u-u.com

 

转自:https://blog.fundebug.com/2017/04/24/ssh-port-forwarding/