2025年3月11日星期二

谷歌浏览器现在点击任何文本都会出现光标是什么情况

这个问题难受了好几天了,各种扩展禁用都不行,最后发现下面的解决办法

chrome://settings/accessibility

使用文本光标浏览网页

使用F7可以关闭  

https://www.v2ex.com/amp/t/722897

2025年2月19日星期三

Docker save与load的坑

 使用docker save -o tar包名称 镜像名称:tag导出镜像,然后使用docker laod -i tar包名称导入镜像。而不要使用docker save -o tar名称 镜像id进行镜像导出,因为这样再使用docker laod -i tar包名称进行镜像导入的时候,会形成悬浮镜像。也就是导入的镜像没有名称和tag,需要我们自己使用docker tag 镜像id 新镜像名称:新tag进行命名。

2024年6月13日星期四

[转贴]干货!微信支付有优惠金币全网最强攻略,简单操作领每周15个金币

 原帖:https://post.smzdm.com/p/an9ooe77/


最近平安银行信用卡立减金来袭,

让大家平时没注意的微信金币突然变的珍贵了。

但是还有很多朋友不知道金币的具体玩法用处等,

接下来卡卡将为大家送上全网最强金币教程。

微信支付金币攻略

01-金币获取

在:微信支付有优惠 微信小程序完成任务可以获取金币,任务是固定的,以周为单位,单笔满1元为一次,一周上限15金币一个号。

累计1次得1金币

累计2次得2金币

累计3次得3金币

累计6次得4金币

累计10次得5金币

02-金币用处

平时可以在“微信支付有优惠”小程序里面,点击:兑换好礼-今日好礼兑换不错的物品,好比打车券、单车券、视频会员、立减金等。

最合适的就是用来兑换各大银行的信用卡、储蓄卡的微信立减金

03-金币简单获取攻略

每周需花4天才能达标10笔领取15个金币。

第一种方法:

每天花1分钟不到的时间从零钱转到零钱通,每次1元,每天3次即可。具体操作如下:

微信-我-服务-钱包-零钱-充值10元或零钱通转到零钱10元

然后每天任意时间在上面路径点击【零钱通】-转入,选择从零钱转入1元,转3笔即可,一周内操作4天,前面三天每天转3次,第四天转入1笔即可达标10笔领取15金币。

不建议大家设置定时选择储蓄卡转入的方式,因为这样的金额很容易因为风控可能被非柜,如果被非柜了得不偿失,并且要解除也很麻烦,建议花一两分钟动下手也很简单!

干货!微信支付有优惠金币全网最强攻略,简单操作领每周15个金币

第二种方法:

可以通过充话费或生活缴费和还信用卡自定义每笔1元,每天3次。

1)充话费:三大运营商APP都可以自定义充值选择微信支付即可

2)生活缴费:例如南方电网或网上国网等,具体大家按照自己所在地的来,在没欠费的情况下选择自定义1元充值即可

3)还信用卡:在“惠用卡专区”领取免费还款额度,然后在“信用卡还款”微信小程序给任意信用卡还款1元,付款方式选云闪付,到云闪付付款,每次1元,每天还3笔。【大家也可以选择每天还的3笔里面其中一笔是5元,因为在云闪付APP-会员中心-小额优惠里面每天可换1张5-1元的优惠券。】

总结:如果只有1-2个号的就选择第一种方法,简单省事,4天加起来的时间可能也就两三分钟。【没记错的话一个人可以开通3或4个号零钱通】,多个号没办法开通零钱通的再参考第二种方法里面的任意一种。当然愿意花时间的每天用一张云闪付的5-1优惠券也是不错的。

04-其他方式

正常通过上述方式一周最低获得15个金币

如果是实名了5个号的则可以获得75个金币

如通过以上方式还不够可以看看下面这几种

1、通过各种群、朋友之间有偿或无偿获得

2、通过海鲜市场进行购买获得

3、跟家里人或父母一起生活的,可以每天用家里人的微信通过【零钱转零钱通】获得金币的方式获得。

一般来说大家金币不会很缺,因为很少有活动会无限兑换,平安信用卡的1元立减金是个例外,最近几次都是有多个1元可以连续兑换好几天。

05-金币如何送人

当自己金币有多或自己金币不够需要别人送自己的时候。

先进入“微信支付有优惠”微信小程序后,

将手机倒过来,金币就会漏出来,

然后将手机拿正,点击:金币赠送 即可选择金币赠送了,但单次最多只能9个金币,送了后继续点金币赠送即可重复操作赠送。另外当你满200金币的时候,即使你赠送出去了,但是没被领取你也依然领不了别人送给人的金币。

干货!微信支付有优惠金币全网最强攻略,简单操作领每周15个金币

切记在每个礼拜天的时候把金币领了,否则周一将会清零重新开始。

2024年5月29日星期三

yt-dlp 下载bilibili 1080p 视频

 yt-dlp 要想下载bilibili 1080p的视频,就需要登录到bilibili才行,不然最高也就720p。需要使用到bilibili的cookie,下面的命令是从chrome导出cookie。

yt-dlp  --cookies-from-browser chrome --cookies cookie.txt

上面的命令需要chrome关闭的情况下运行。这个命令运行一次就可以了。下次

yt-dlp   --cookies cookie.txt   [url]   就好了。

另外bilibili的视频和音频是分开的,需要下载ffmpeg来合并,ffmpeg的放置位置和yt-dlp在一起,或者在系统的path中增加ffmpeg目录就好,验证是否放置正确,在命令行中,不管任何位置,打yt-dlp 和ffmpeg都可以正常输出就行。

2024年5月22日星期三

openwrt系统局域网SSH可以登录,通过zerotier ip 无法远程登录解决办法

SSH在本地可以正常访问,zerotier远程访问提示连接拒绝,connection refused。然后网上搜索一番,给zerotier网卡设置了一个新接口,也在防火墙自定义规则里对这个网口进行了放行,但依然无法访问。最后在恩山找到一个帖子解决了问题,zerotier openwrt 局域网可以访问ssh 通过zerotier地址+端口 无法访问。

需要在"系统"菜单,"管理权"下将接口设置为未指定,默认是lan,也就是通过lan口可以访问,其他接口都不行的。



2024年5月20日星期一

如何根据端口查找对应的docker容器名字

 服务器上跑了 一堆docker,docker里面很多java服务。网络使用的host模式,docker ps无法找到对应的端口。现在找到方法可以方便找对应的docker容器。


步骤1:查找使用特定端口的进程ID

lsof -i :8080

步骤2:查找该进程所在的Docker容器ID


docker ps -q | while read container_id; do if [ $(docker inspect --format '{{.State.Pid}}' $container_id) -eq 12345 ]; then echo $container_id fi done

这个脚本会遍历所有正在运行的容器,并检查每个容器的PID。如果容器的PID与步骤1中的PID匹配,就会输出容器ID。

步骤3:根据容器ID查找容器名

有了容器ID后,我们可以使用以下命令查找容器名:

假设找到的容器ID是 abcdef123456


docker inspect --format '{{.Name}}' abcdef123456




这个是一句话命令

docker inspect -f '{{.State.Pid}} {{.ID}}' $(docker ps -a -q) | grep 35512







2024年5月6日星期一

暗时间读书笔记

 

暗时间

  • 设计自己的进度条

    • 不要过早的退出循环

    • 兴趣遍地都是,专注和持之以恒才是真正稀缺的

    • 靠专业技能的成功是最具可复制性

    • 反思是让人改进自己的最重要的思维品质

  • 如何有效的记忆和学习

    • 1、养成习惯,经常主动回顾一段时间学到的东西

    • 2、创造回忆的机会

      • 1)经常与别人讨论,或者讲给别人听

      • 2)整理笔记

      • 3)书写

    • 3、设身处地“虚拟经历”别人经历过的事情

    • 4、抽象和推广

    • 5、联系/比较自身的经历

  • 思维改变生活

    • 1 逃出你的肖申克

    • 2亲身经历才能明白?

    • 3 仁者见仁智者见智?从视觉错觉到偏见

    • 4 遇见20万年前的自己 (思考的快与慢)

    • 5 理智与情感

    • 6 书写是为了更好的思考

    • 7 为什么你从现在开始就应该写博客

    • 8 我不想与我不能

    • 9 遇到问题为什么应该自己动手

    • 10 什么才是你的不可替代性和核心竞争力

      • 1 专业领域技能

      • 2、跨领域的技能(解决问题的能力、创新思维、判断与决策能力、批判性思维,表达沟通能能力)

      • 3、学习能力

      • 4、性格要素。

      • 参考文章:技术路线的选择重要但不具有决定性

  • 学习密度和专注力

    • 专注力对学习效率影响很大

      • 1、专注于一件事情能让表层意识全功率运作,这事显式的效率

      • 2、最重要的,它话能够使你的潜意识进入一种专注于这个事情的状态。

      • 专注力训练,金出武雄的《像外行一样思考,像专家一样实践---科研成功之道》,思维体力

  • 一直以来伴随我的一些学习习惯

    • 学习与思考

      • 1、google && wiki

      • 2、看书挑剔,只看经典

      • 3、做读书笔记

      • 4、小习惯,利用走路和吃饭的时候思考,睡前弄 一个问题在大脑中

      • 5、多看心理学与思维的书,因为它们使跨学科的。领域知识&元知识

      • 6,学习一项知识,必须问自己三个重要问题:

        • 1)它的本质是什么

        • 2)它的第一原则是什么

        • 3)它的知识架构是什么

      • 7、学习和思考的过程中常问自己的几个问题

        • 1)你的问题到底是什么(提醒自己思考不要偏离问题)

        • 2、OK,到目前为止,我到底收获了什么?(提醒自己总结)

        • 3、设想自己正在将东西讲给别人听(有声思考;能否讲出来是判断是否真正理解的最佳办法)

        • 4、设想需要讲给一个不懂的人听(迫使自己去挖掘知识背后最本质、往往也是最简单的解释)

        • 5、时常反省和注意自己的思考过程

        • 6、养成反驳自己想法的习惯

        • 7、人的思维天生就是极易流于表面来理解食物的。

    • 时间和效率

      • 1、趁着对一件事情有热情的时候,一股脑儿把万世开头难那个最难的阶段熬过去

      • 2、重要的事情优先(高效能人士的七个习惯&要事优先)

      • 3、重要的事情要营造比较大的时间块来完成

      • 4、同时也要利用小块时间(奇特的一生中的时间脚料)

      • 5、重视知识的本质

      • 6、重视提前积累的强大力量

      • 7、抬起头来

      • 8|退订RSS

      • 9 有时间吗? 总结总结最近得到的新知识吧.

      • 10 有时间吗,看本书吧

      • 11 制定简要的阅读计划

      • 子主题 12

  • 跟波利亚学解题

2024年4月23日星期二

echarts for React 使用3D柱状图时需要注意的点。

1、series.bar3D not exists 
You need to install ECharts GL first and then import it in your project.
 https://github.com/xieziyu/ngx-echarts/issues/139#issuecomment-421881917
 1) npm install echarts-gl --save 
 2) import 'echarts-gl'; 

2、zr.painter.isSingleCanvas is not a function 
3D 图表必须要使用 canvas 模式
 https://github.com/apache/echarts/issues/13295#issuecomment-1041061744

上面就是自己搜到的,后来发现echarts for react 关于第一点是有FAQ的,有问题第一时间应该先翻下FAQ.


 

2024年4月18日星期四

适配WIN7的旧版Chrome最高版本109


今天需要在内网WIN7系统下更新chrome,查了下支持WIN7的最高版本chrome是109,网络搜罗了一圈总算找到官方的离线安装包了。分享出来给大家,也是给自己留个笔记,方便以后再次使用。 

Windows7可以用的最后版本(离线安装包“无更新组件”版) 离线安装包“无更新组件”版提取原生绿色版方法: 鼠标右键解压离线安装包,此时会解压出来一个chrome.7z,再对chrome.7z解压就是原生绿色版啦! 离线安装包“无更新组件”版不含在线更新升级功能,所以不会添加更新计划任务,也没有后台更新进程,更干净。 Google Chrome v109.0.5414.120 官方正式版 离线安装包(109的最后一个版本): 

1.Windows版(无更新组件)64位 

https://dl.google.com/release2/chrome/czao2hrvpk5wgqrkz4kks5r734_109.0.5414.120/109.0.5414.120_chrome_installer.exe https://www.google.com/dl/release2/chrome/czao2hrvpk5wgqrkz4kks5r734_109.0.5414.120/109.0.5414.120_chrome_installer.exe https://edgedl.me.gvt1.com/edgedl/release2/chrome/czao2hrvpk5wgqrkz4kks5r734_109.0.5414.120/109.0.5414.120_chrome_installer.exe

 2.Windows版(无更新组件)32位 https://dl.google.com/release2/chrome/acihtkcueyye3ymoj2afvv7ulzxa_109.0.5414.120/109.0.5414.120_chrome_installer.exe https://www.google.com/dl/release2/chrome/acihtkcueyye3ymoj2afvv7ulzxa_109.0.5414.120/109.0.5414.120_chrome_installer.exe https://edgedl.me.gvt1.com/edgedl/release2/chrome/acihtkcueyye3ymoj2afvv7ulzxa_109.0.5414.120/109.0.5414.120_chrome_installer.exe

2023年11月16日星期四

ceb转pdf(c2p) 1.6.0311绿色免费版

一个简单的ceb转pdf格式绿色小软件,可以转换未加密的ceb格式资料。CEB格式是由北大方正公司独立开发的电子书格式,由于在文档转换过程中采用了“高保真”技术,从而可以使CEB格式的电子书最大限度地保持原来的样式。方正Apabi Reader(阿帕比)是CEB格式的指定阅读软件,打开、浏览、打印CEB格式的文件,必须使用方正Apabi Reader。
下载页面

2019年6月5日星期三

Mysql的Root密码忘记,查看或修改的解决方法

首先启动命令行
1.在命令行运行:taskkill /f /im mysqld.exe (或者是mysqld-nt.exe)
下面的操作是操作MySQL中bin目录下的一些程序,如果没有配置环境变量的话,需要切换到mysql的bin 目录下执行如下语句。不然无效
2.继续在命令行运行:mysqld --skip-grant-tables  (跳过密码验证,直接使用数据库)
3.新开一个命令行运行:mysql -u root   (如果没有配置mysql的bin环境变量的话需要切换到bin目录下执行此语句)
如果不想改密码,只是想看原来的密码的话。可以在命令行执行这个语句
select host,user,password from mysql.user;//即可查看到用户和密码,此时密码为MD5加密,将密文复制到CMD5网站进行解密。如果查询不到,可以直接修改密码。
如果要修改密码的话,在命令行下执行下面的语句
update mysql.user set password='这里填写你要设置的密码'  where user='root';
这里我设置了空密码。
完成这些操作后,继续在命令行运行
taskkill /f /im mysqld.exe;//安全着想,先结束,因为现在这样是可以用mysql -u root 直接登录的
net start mysql;//启动mysql服务
至此,mysql的root密码遗忘解决方法就算弄完了。

如果出现 mysql :unknown  variable 'default-storage-engine=innodb'错误,请检查MY.INI文件中配制语句,删除即可

Chrome生成传统网页快捷方式

目前使用chrome浏览器,想生成一个快捷方式,方法是右上角三个点,然后more tools,接着是create shortcut.., 生成后,发现快捷方式是一个专供chrome浏览器使用的,不具备通用性,遂放狗搜了下,找到了通用快捷方式生成方法,具体见下图:


2017年6月14日星期三

在source insight中调用MSDN

source insight 中三个有用的帮助. 

Custom Commands 

A command is a user-level operation that Source Insight performs when you select a menu item or type a keystroke. In addition to the commands that are built into Source Insight, you can define custom commands. Custom commands are similar to shell batch files. They execute external command-line programs and Windows GUI programs. Source Insight allows custom commands to execute in the background. The output of custom commands can be captured into a file for editing, or can be pasted into the current selection. To define or edit custom commands, select Tools > Custom Commands. Once defined, a custom command is like any other command. It can be assigned to a menu or a keystroke can be assigned to it. Custom com­mands are saved in the current configuration. Custom commands are useful for launching a compilation. By having a custom command that runs the com­piler or make program, you can capture the compiler error messages and have the errors parsed and have source links pointing to the erroneous source code automatically. You can also implement a variety of text filters using custom commands. For example, you could define a Sort custom command that runs a sort filter and pastes the output back over the current selection.

HTML Help

Looks up the currently selected word in the HTML Help file. The HTML Help file is the one specified in the Setup HTML Help command

Setup HTML Help

Use this command to locate the HTML Help file on your disk that will be used by the HTML Help command. If you have Microsoft® MSDN™ or Microsoft® Developer Studio™ tools installed, you will probably want to select the compiled HTML help "collection" file that is the main help file for the developer tools. The file has a .col extension. That will allow you to invoke HTML Help on Windows development APIs from within Source Insight.


1、首先通过Setup HTML Help将MSDN的.COL文件加载到系统中.
2、通过Custom command 调用HTML help 方法就可以使用MSDN了.

但是目前这种调用方法还是不太方便,鼠标点击关键字时,并没有MSDN的提示,还得自己手动去调用HTML Help才行.

2017年6月6日星期二

Microsoft的CL文件参数

CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。 注意,所有编译器选项都区分大小写。 若要编译但不链接,请使用 /c。 使用 NMAKE 生成输出文件。 使用 BSCMAKE 支持类浏览。 以下是一个完整的编译器选项分类列表。 优化 选项 作用 /O1 创建小代码 /O2 创建快速代码 /Oa 假设没有别名 /Ob 控制内联展开 /Od 禁用优化 /Og 使用全局优化 /Oi 生成内部函数 /Op 改善浮点数一致性 /Os 代码大小优先 /Ot 代码速度优先 /Ow 假定在函数调用中使用别名 /Ox 使用最大优化 (/Ob1gity /Gs) /Oy 省略框架指针 代码生成 选项 作用 /clr 启用 C++ 的托管扩展并产生在公共语言运行库上运行的输出文件 /EH 指定异常处理模型 /G3 优化代码以优选 386 处理器。在 Visual C++ 5.0 中已经停用,编译器将忽略此选项 /G4 优化代码以优选 486 处理器。在 Visual C++ 5.0 中已经停用,编译器将忽略此选项 /G5 优化代码以优选 Pentium /GB 与 /G6 等效;将 _M_IX86 的值设置为 600 /Gd 使用 __cdecl 调用约定 /Ge 激活堆栈探测 /GF /GF 启用字符串池 /GH 调用挂钩函数 _penter /GH 调用挂钩函数 _pexit /GL 启用全程序优化 /Gm 启用最小重新生成 /Gr 启用运行时类型信息 (RTTI) /Gr 使用 __fastcall 调用约定 /GS 控制堆栈探测 /GT 支持使用静态线程本地存储区分配的数据的纤程安全 /GX 启用同步异常处理 /Gy 启用函数级链接 /GZ 使用 __stdcall 调用约定 /MD 使用 MSVCRT.lib 创建多线程 DLL /MDd 使用 MSVCRTD.lib 创建调试多线程 DLL /ML 使用 LIBC.lib 创建单线程可执行文件 /MLd 使用 LIBCD.lib 创建调试单线程可执行文件 /MT 使用 LIBCMT.lib 创建多线程可执行文件 /MTd 使用 LIBCMTD.lib 创建调试多线程可执行文件 输出文件 选项 作用 /FA /FA 创建汇编文件 设置列表文件名 /Fd 重命名程序数据库文件 /Fe 重命名可执行文件 /Fm 创建映射文件 /Fo 创建对象文件 /Fp 指定预编译头文件名 /FR /FR 生成浏览器文件 /Fx 将插入的代码与源文件合并 调试 选项 作用 /GS 缓冲区安全检查 /GZ 与 /RTC1 相同 /RTC 启用运行时错误检查 /Wp64 检测 64 位可移植性问题 /Yd 将完整的调试信息放在所有对象文件中 /Yl 创建调试库时插入 PCH 引用 /Z7 生成与 C 7.0 兼容的调试信息 /Zd 生成行号 /Zi 生成完整的调试信息 预处理器 选项 作用 /AI 指定在解析传递到#using 指令的文件引用时搜索的目录 /c 在预处理期间保留注释 /D 定义常数和宏 /E 将预处理器输出复制到标准输出 /EP 将预处理器输出复制到标准输出 /Fl 预处理指定的包含文件 /FU 强制使用文件名,就像它已被传递到#using 指令一样 /I 在目录中搜索包含文件 /P 将预处理器输出写入文件 /U 移除预定义宏 /U 移除所有的预定义宏 /X 忽略标准包含目录 /ZI 将调试信息包含在与“编辑并继续”兼容的程序数据库中 语言 选项 作用 /noBool 取消 C++ bool、true 和 false 关键字 /vd 取消或启用隐藏的 vtordisp 类成员 /vmb 对指向成员的指针使用最佳的基 /vmg 对指向成员的指针使用完全一般性 /vmm 声明多重继承 /vms 声明单一继承 /vmv 声明虚拟继承 /Za 禁用语言扩展 /Zc 在 /Ze 下指定标准行为 /Ze 启用语言扩展 /Zg 生成函数原型 /Zl 从 .obj 文件中移除默认库名 /Zp n 封装结构成员 /Zs 只检查语法 链接 选项 作用 /F 设置堆栈大小 /LD 创建动态链接库 /LDd 创建调试动态链接库 /link 将指定的选项传递给 LINK /MD 使用 MSVCRT.lib 编译以创建多线程 DLL /MDd 使用 MSVCRTD.lib 编译以创建调试多线程 DLL /ML 使用 LIBC.lib 编译以创建单线程可执行文件 /MLd 使用 LIBCD.lib 编译以创建调试单线程可执行文件 /MT 使用 LIBCMT.lib 编译以创建多线程可执行文件 /MTd 使用 LIBCMTD.lib 编译以创建调试多线程可执行文件 预编译头 选项 作用 /Y- 忽略当前生成中的所有其他预编译头编译器选项 /Yc 创建预编译头文件 /Yd 将完整的调试信息放在所有对象文件中 /Yu 在生成期间使用预编译头文件 /YX 自动处理预编译头 杂项 选项 作用 @ 指定响应文件 /? 列出编译器选项 /c 编译但不链接 /H 限制外部(公共)名称的长度 /HELP 列出编译器选项 /J 更改默认的 char 类型 /NOLOGO 取消显示登录版权标志 /QI0f 确保 Pentium 0F 指令没有问题 /QIfdiv FDIV、FPREM、FPTAN 和 FPATAN 指令有缺陷的 Intel Pentium 微处理器的变通方法 QIfist 当需要从浮点类型转换为整型时取消 Helper 函数 _ftol 的调用 /showIncludes 在编译期间显示所有包含文件的列表 /Tc /Tc 指定 C 源文件 /Tp /Tp 指定 C++ 源文件 /V 设置版本字符串 /w 设置警告等级 /w 禁用所有警告 /Wall 启用所有警告,包括默认情况下禁用的警告 /WL 在从命令行编译 C++ 源代码时启用错误信息和警告消息的单行诊断 /Zm 设置编译器的内存分配限制 CL 命令行使用下列语法: CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...] 下表说明CL 命令的输入项意义 option 一个或多个 CL 选项。请注意,所有选项都应用于所有指定的源文件。选项是由一个正斜杠 (/) 或一个短划线 (–) 指定的。如果某个选项带有参数,则该选项的说明指定在选项和参数之间是否允许有空格。选项名(/HELP 选项除外)区分大小写。有关更多信息,请参阅 CL 选项的顺序。 file 一个或多个源文件、.obj 文件或库的名称。CL 编译源文件并将 .obj 文件和库的名称传递给链接器。有关更多信息,请参阅 CL 文件名语法。 lib 一个或多个库名。CL 将这些名称传递给链接器。 command-file 包含多个选项和文件名的文件。有关更多信息,请参阅 CL 命令文件。 link-opt 一个或多个链接器选项。CL 将这些选项传递给链接器。 您可以指定任意数目的选项、文件名和库名,条件是命令行上的字符数不超过 1024,该限制是操作系统指定的。 CL 命令文件请参见 设置编译器选项 | 编译器选项 命令文件是一个文本文件,它包含您另外在命令行上键入或使用 CL 环境变量指定的选项和文件名。CL 接受在 CL 环境变量中或命令行上用作参数的编译器命令文件。与命令行或 CL 环境变量不同,命令文件允许使用多行选项和文件名。 命 令文件中的选项和文件名将根据 CL 环境变量中或命令行上的命令文件名的位置被进行处理。但是,如果 /link 选项出现在命令文件中,则该行其余部分的所有选项将被传递给链接器。命令文件的后面几行中的选项和命令行上命令文件调用之后的选项仍被作为编译器选项接 受。 命令文件一定不能包含 CL 命令。每个选项必须在同一行上开始和结束;不能使用反斜杠 (") 跨行组合一个选项。 命令文件用一个 @ 符后接一个文件名指定;该文件名可指定绝对路径或相对路径。

美女广场一支鬼步舞,全场脚步都停了!这是要飞起来了吗

这个应该算是一个测试视频,测试下Blogspot的视频功能.

2014年8月28日星期四

图解正向代理、反向代理、透明代理

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://z00w00.blog.51cto.com/515114/1031287
套 用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术。一般实现代理技术的方式就是在服务器上安装代理服务软件,让 其成为一个代理服务器,从而实现代理技术。常用的代理技术分为正向代理、反向代理和透明代理。本文就是针对这三种代理来讲解一些基本原理和具体的适用范 围,便于大家更深入理解代理服务技术。

一、正向代理(Forward Proxy)

   一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下:
正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。如下图1.1
(图1.1
从上面的概念中,我们看出,文中所谓的正向代理就是代理服务器替代访问方【用户A】去访问目标服务器【服务器B
这就是正向代理的意义所在。而为什么要用代理服务器去代替访问方【用户A】去访问服务器B呢?这就要从代理服务器使用的意义说起。
使用正向代理服务器作用主要有以下几点:

1、访问本无法访问的服务器B,如下图1.2

(图1.2

 

我们抛除复杂的网络路由情节来看图1.2,假设图中路由器从左到右命名为R1,R2

假设最初用户A要访问服务器B需要经过R1R2路由器这样一个路由节点,如果路由器R1或者路由器R2发生故障,那么就无法访问服务器B了。但是如果用户A让代理服务器Z去代替自己访问服务器B,由于代理服务器Z没有在路由器R1R2节点中,而是通过其它的路由节点访问服务器B,那么用户A就可以得到服务器B的数据了。

现实中的例子就是“翻墙”。不过自从VPN技术被广泛应用外,“翻墙”不但使用了传统的正向代理技术,有的还使用了VPN技术

 

2、加速访问服务器B

这种说法目前不像以前那么流行了,主要是带宽流量的飞速发展。早期的正向代理中,很多人使用正向代理就是提速。还是如图1.2
假设用户A到服务器B,经过R1路由器和R2路由器,而R1R2路由器的链路是一个低带宽链路。而用户A到代理服务器Z,从代理服务器Z到服务器B都是高带宽链路。那么很显然就可以加速访问服务器B了。
 

3Cache作用

Cache(缓存)技术和代理服务技术是紧密联系的(不光是正向代理,反向代理也使用了Cache(缓存)技术。还如上图所示,如果在用户A访问服务器B某数据J之前,已经有人通过代理服务器Z访问过服务器B上得数据J,那么代理服务器Z会把数据J保存一段时间,如果有人正好取该数据J,那么代理服务器Z不再访问服务器B,而把缓存的数据J直接发给用户A。这一技术在Cache中术语就叫Cache命中。如果有更多的像用户A的用户来访问代理服务器Z,那么这些用户都可以直接从代理服务器Z中取得数据J,而不用千里迢迢的去服务器B下载数据了。
 

4、客户端访问授权

这方面的内容现今使用的还是比较多的,例如一些公司采用ISA SERVER做为正向代理服务器来授权用户是否有权限访问互联网,挼下图1.3

(图1.3

1.3防火墙作为网关,用来过滤外网对其的访问。假设用户A和用户B都设置了代理服务器,用户A允许访问互联网,而用户B不允许访问互联网(这个在代理服务器Z上做限制)这样用户A因为授权,可以通过代理服务器访问到服务器B,而用户B因为没有被代理服务器Z授权,所以访问服务器B时,数据包会被直接丢弃。

5、隐藏访问者的行踪

如下图1.4 我们可以看出服务器B并不知道访问自己的实际是用户A,因为代理服务器Z代替用户A去直接与服务器B进行交互。如果代理服务器Z被用户A完全控制(或不完全控制),会惯以“肉鸡”术语称呼。

(图1.4)

 

我们总结一下 正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。

 

二、反向代理(reverse proxy

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。

使用反向代理服务器的作用如下:

1、  保护和隐藏原始资源服务器

如下图2.1

(图2.1
用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。由于防火墙的作用,只允许代理服务器Z访问原始资源服务器B。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器B,但用户A并不知情。

2、  负载均衡

如下图2.2
(图2.2
 
   当反向代理服务器不止一个的时候,我们甚至可以把它们做成集群,当更多的用户访问资源服务器B的时候,让不同的代理服务器Zx)去应答不同的用户,然后发送不同用户需要的资源。
当然反向代理服务器像正向代理服务器一样拥有CACHE的作用,它可以缓存原始资源服务器B的资源,而不是每次都要向原始资源服务器B请求数据,特别是一些静态的数据,比如图片和文件,如果这些反向代理服务器能够做到和用户X来自同一个网络,那么用户X访问反向代理服务器X,就会得到很高质量的速度。这正是CDN技术的核心。如下图2.3
(图2.3
 
我们并不是讲解CDN,所以去掉了CDN最关键的核心技术智能DNS。只是展示CDN技术实际上利用的正是反向代理原理这块。
反向代理结论与正向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
基本上,网上做正反向代理的程序很多,能做正向代理的软件大部分也可以做反向代理。开源软件中最流行的就是squid,既可以做正向代理,也有很多人用来做反向代理的前端服务器。另外MS ISA也可以用来在WINDOWS平台下做正向代理。反向代理中最主要的实践就是WEB服务,近些年来最火的就是Nginx了。网上有人说NGINX不能做正向代理,其实是不对的。NGINX也可以做正向代理,不过用的人比较少了。
 

三、透明代理

    如果把正向代理、反向代理和透明代理按照人类血缘关系来划分的话。那么正向代理和透明代理是很明显堂亲关系,而正向代理和反向代理就是表亲关系了

透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的request fields(报文),并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。

透明代理实践的例子就是时下很多公司使用的行为管理软件。如下图3.1

(图3.1

 

 

用户A和用户B并不知道行为管理设备充当透明代理行为,当用户A或用户B向服务器A或服务器B提交请求的时候,透明代理设备根据自身策略拦截并修改用户AB的报文,并作为实际的请求方,向服务器AB发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户AB,如上图,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据。
 

本文出自 “丁胖胖的BLOG” 博客,请务必保留此出处http://z00w00.blog.51cto.com/515114/1031287

WorldTimeServer Clock

New York

搜索此博客