傻猫网络日志 Samool's blog - 二十年老博客 - 方法
type: channel
link: https://samool.com/tag/%E6%96%B9%E6%B3%95/
items: 波特五力模型 是什么？
items: yum update更新遇到错误
items: SQL Server 2008 评估期已过的解决办法
items: 马云最新演讲全文2020-9-30
items: 关于px、em、rem、rpx、upx的知识
items: Golang 汇编入门知识总结
items: 远程桌面连接报【由于CredSSP 加密数据库修正】错误解决办法
items: 如何学习一门新的语言
items: attachEvent 的用法
items: 无窗体无界面exe怎么做？

波特五力模型 是什么？
type: item
date: 2025-08-23T09:31:14+08:00
description: AI摘要 波特五力模型是迈克尔·波特于1979年提出的战略分析工具，用于评估行业竞争强度和盈利潜力。模型包括五种力量：现有企业竞争、潜在进入者威胁、替代品威胁、供应商议价能力和购买者议价能力。通过分析这些力量，企业可以判断行业的盈利潜力并制定相应战略。然而，模型存在局限性，如忽略合作关系、难以应对数字化冲击和静态分析为主。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); “波特五力模型”（Porter's Five Forces Model）是由哈佛商学院教授迈克尔·波特（Michael E. Porter） 于1979年提出的经典战略分析工具，核心作用是帮助企业评估所处行业的竞争强度和盈利潜力，为战略制定（如差异化、成本领先、聚焦等）提供依据。该模型认为，一个行业的竞争格局并非仅由“现有企业间的竞争”决定，而是由5种相互关联的竞争力量共同塑造，这5种力量的强弱直接影响行业内企业的定价权、市场份额和利润空间。一、波特五力的核心构成（5种力量详解）以下是5种力量的具体定义、影响因素及典型案例，帮助理解其对行业的实际作用：1. 现有企业间的竞争强度（Intensity of Rivalry Among Existing Competitors）这是最直观的竞争力量，指行业内现有企业为争夺市场份额、客户资源而展开的竞争程度。影响竞争强度的关键因素：行业内企业数量：企业越多（如餐饮、零售），竞争越激烈；企业越少（如高端白酒、航空），竞争相对缓和。产品同质化程度：产品越相似（如瓶装水、基础化工品），企业越容易陷入“价格战”；产品差异化强（如奢侈品、定制软件），竞争更聚焦于品牌或功能。行业增长速度：行业增长慢（如传统家电），企业只能通过“抢对手客户”实现增长，竞争加剧；行业增长快（如早期新能源汽车），企业可共享增量市场，竞争相对温和。退出壁垒：退出成本高（如重化工、核电，设备专用性强、员工安置成本高），即使亏损企业也会继续经营，导致产能过剩、竞争恶化。案例：中国智能手机行业（华为、苹果、小米等），企业数量多、产品功能同质化较高，且行业增长放缓，因此常出现“新品降价”“配置竞赛”等激烈竞争行为。2. 潜在进入者的威胁（Threat of New Entrants）指新企业进入该行业时，对现有企业市场份额和利润造成的冲击风险。潜在进入者的威胁越强，行业竞争越容易加剧。影响威胁程度的关键因素（“进入壁垒”）：规模经济：需要大量投入才能实现低成本（如汽车制造、芯片代工），新企业若无法快速达到规模，成本高于现有企业，难以竞争。资金门槛：行业前期投资大（如新能源车企、半导体），新企业需雄厚资金支撑，进入难度高。品牌与客户忠诚度：现有企业品牌认知度高（如可口可乐、星巴克），新企业需长期投入建立信任，短期内难以抢占市场。政策/技术壁垒：需特定资质（如医药行业的GMP认证、金融行业的牌照）或核心技术（如专利保护的创新药），新企业难以突破。案例：中国新能源汽车行业早期（2015-2020年），政策补贴、技术门槛较低，大量新势力（如蔚来、理想、威马）涌入；但2021年后，行业资金需求、技术研发要求提升，新进入者（如小米汽车）需投入数百亿，进入壁垒显著提高。3. 替代品的威胁（Threat of Substitute Products or Services）指其他行业的产品/服务能满足消费者“相同需求”，从而替代本行业产品的风险。替代品的性价比越高，对本行业的冲击越大。影响威胁程度的关键因素：替代品的功能相似度：替代品能完全替代本产品功能（如电子书替代纸质书、网约车替代出租车），威胁强；仅部分替代（如自行车替代汽车短途出行），威胁弱。替代品的转换成本：消费者切换到替代品的成本低（如从“短信”切换到“微信消息”，几乎无成本），威胁强；转换成本高（如从“iOS系统”切换到“安卓系统”，需适应操作、迁移数据），威胁弱。替代品的价格优势：替代品价格更低（如人造肉替代牛肉，若成本下降后价格更低），威胁强。案例：传统胶片行业（如柯达），因数码相机（替代品）的成像效果更好、使用成本更低，且转换成本低，最终导致胶片行业几乎被淘汰。4. 供应商的议价能力（Bargaining Power of Suppliers）指行业上游供应商（如原材料、零部件提供商）通过提价、减少供应等方式，影响下游企业成本和利润的能力。供应商议价能力越强，下游企业的盈利空间越受…

yum update更新遇到错误
type: item
date: 2020-12-25T16:00:23+08:00
description: AI摘要 本文介绍了解决yum更新时遇到的错误的方法。首先，如果出现未完成的yum事务，可以通过安装yum-utils、清理缓存和运行yum-complete-transaction来解决。其次，如果发现RPM数据库问题，可以尝试运行package-cleanup --cleandupes命令，或者使用yum -y update --skip-broken来跳过错误。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); yum安装东西的时候,老是报:There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.意思是:有未完成的yum事务,建议先运行yum-complete-transaction命令清除解决方法：这是强制结束yum引起的安装 yum-complete-transaction（这是一个能发现未完成或被中断的yum事务的程序）yum -y install yum-utils清除yum缓存yum clean all运行 yum-complete-transaction,清理未完成事务yum-complete-transaction --cleanup-only发现 29 个已存在的 RPM 数据库问题， 'yum check' 输出如下：解决办法运行package-cleanup --cleandupes如若依然报错：yum -y update --skip-broken

SQL Server 2008 评估期已过的解决办法
type: item
date: 2020-10-26T15:08:00+08:00
description: AI摘要 本文介绍了如何解决SQL Server 2008评估期已过的问题。首先，通过输入相应的产品密钥进行版本升级。如果升级后仍提示评估期已过，可以通过修改注册表中的“CommonFiles”值来解决。此外，文章还提供了解决SQL Server 2008安装需要一直重启的问题的方法，即删除注册表中的PendingFileRenameOperations键值。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 今天上班一打开SQL Server，就报了下面这个问题很显然，SQL Server 试用期到了，微软提醒我们购买。大家经济允许的话，还是要买正版。对于我们这些暂时无力承担正版费用的屌丝群体怎么办呢？显然，重装不是一个好的办法。SQL Server软件装起来很麻烦，还需要一段时间。况且光卸载老版本就是个问题，很难卸载干净。卸载加安装，半天就过去了。通过百度，找到了一些解决方案，通过自身的具体实践，终于把问题解决了，特将问题与解决方法记录下来，给遇到同样问题的伙伴提供一种解决方式，也方便自己日后查看。1.开始-->所有程序-->MicrosoftSQL Server 2008-->配置工具-->SQL Server 安装中心2.打开SQL Server安装中心(64位) 点击维护-->版本升级，如果提示失败1，电脑没有重启，这个时候就需要我们手动进行重启，重新打开电脑后，从步骤1开始；接着按照提示一直点下一步，到产品密钥的时候输入Microsoft SQL Server 2008 R2序列号密钥开发版32位：MC46H-JQR3C-2JRHY-XYRKY-QWPVM开发版64位：FTMGC-B2J97-PJ4QG-V84YB-MTXX8工组版：XQ4CB-VK9P3-4WYYH-4HQX3-K2R6QWEB版：FP4P7-YKG22-WGRVK-MKGMX-V9MTM数据中心版32位：PTTFM-X467G-P7RH2-3Q6CG-4DMYB数据中心版64位：DDT3B-8W62X-P9JD6-8MX7M-HWK38企业版32位：R88PF-GMCFT-KM2KR-4R7GB-43K4B企业版64位：GYF3T-H2V88-GRPPH-HWRJP-QRTYB标准版32位：CXTFT-74V4Y-9D48T-2DMFW-TX7CY标准版64位：B68Q6-KK2R7-89WGB-6Q9KR-QHFDW输入密钥之后进行升级，升级完成后，再次打开SQL Server。如果还是提示评估期已过，进行如下操作：修改注册表： win键 + r 打开运行界面 输入regedit 就能打开注册表页面找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQL Server\100\ConfigurationState里的“CommonFiles”值改成3，在重新执行上面的操作。sql server 2008安装需要一直重启的解决办法：同样打开注册表找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置然后在右边窗口右击PendingFileRenameOperations，选择删除，然后确认

马云最新演讲全文2020-9-30
type: item
date: 2020-09-30T12:04:48+08:00
description: AI摘要 马云在2020年的演讲中强调了2020年作为历史分水岭的重要性，并认为海南自贸港的建设是历史性的选择。他提出，新的全球化正在开始，将由发展中国家和中小企业主导，科技和数据流动将成为主力。马云还强调了中国内需对新一轮全球化的驱动作用，以及全球化是一种服务世界的能力。他鼓励企业家面向未来，用未来的方法解决今天的问题，并强调数字化是确定的趋势，将全面改造所有行业。马云还提到，企业家应有担当，为世界变得更好而努力。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 2020年非常特殊，未来一定是一段历史的分水岭；海南成为自贸港，也必定是一个历史性的选择；我希望我们CEC这次的海南会议，也能成为一个跨越时代的会议，在疫情之后，新的全球化开始之后，在整个数字时代到来的时候，我们CEC的企业家能够在这段历史中创造独特的价值。我昨天还在武汉，也和我们CEC的三十几位理事一起，到武汉去了一趟。几个月前在电视里看武汉，确实非常之难，这次到武汉，真的感到武汉是一座英雄的城市，有英雄气质。疫情是结束了，我们该考虑如何让经济重生。经济重生不是为了回到昨天、回到以前，而是在更高的水平上面，从疫情中看到未来，看到趋势，把握机会。这次从武汉来到海南，这里面我觉得是巧合，好像也有一种必然的东西。两年前，习主席宣布了建设海南自贸港，全面开放的战略，两年过去了，世界格局发生了巨大的变化。但是我依然相信，我们必须要坚持开放，必须要坚持全球化，特别是疫情之后，我相信全世界所有的门都是要靠自己去打开的，没有门是天然开着的，这时候坚持全球化比什么时候都重要、都有意义。现在海南就站在一个新的历史的起点上，自贸港建设不是简单的海南发展的机遇，更不仅仅是中国经济发展的一个机遇，而是要担当起为世界探索新的全球化的历史责任。我自己觉得，国际化和全球化是两个不同的概念，国际化更偏向于中国人跟外国人做生意，是双边为主。而全球化是世界各国的大事情，是一个全局的问题。今天很多人觉得全球化出现了这样那样的问题，而我并不这么认为：第一，我认为今天是真正全球化开始的时候。昨天的、原来的、传统的、工业时代的全球化正在终结。新的、真正的、数字时代的全球化才刚刚打开。以前，全球化是发达国家和大企业主导，未来，全球化应该是发展中国家、中小企业走向世界；以前贸易是全球化的主力，未来科技将是全球化的主力；以前是人在流动、货在流动，未来是数据在流动、服务在流动；以前是传统企业的全球化，未来是用好互联网技术的企业的全球化；未来，任何一个人，只要有一部手机就可以做全球生意，未来所有的中小企业都是跨国公司，过去三十年是6000家大企业决定了全球化，未来应该是6000万家中小企业决定全球化。地域的扩大就是业务的扩张，这是世界给予我们的巨大机会。第二， 这是由中国内需驱动的新一轮全球化。新一轮的全球化，中国将会从“卖卖卖”，变成“买买买”。海南自由贸易港有自己的历史使命，海南未来留在历史中将会成为一个非常重要的角色。假设我们对贸易游戏规则不满意，今天给了我们一次机会，我们是否有这种胸怀、有这种格局、有这种担当为世界未来数字的全球化，为更多企业、更多国家、更多发展中国家的全球化，来制定一个更加公平、可持续、绿色的贸易规则？大家其实不用害怕从“卖卖卖”变成“买买买”。中国每一次大门打开，都是中国进步的象征，每一次大门打开，中国都进步了。我们要不断地走出去。我记得我们以前的人走出去是找差距，我们觉得人家这个做得好、那个做得好。今天我们很多中国企业走出去，或者很多中国人走出去，是在找感觉。当我们在找感觉的时候，其实我们正在退步。上一次全球化，是美国3亿人消费驱动的；中国这次的全球化是14亿人的内需，会驱动下一轮真正的全球化，带动世界经济。进口不是终点，进口最终是要倒逼中国产业提升、消费升级，促进现代服务业的发展。对于企业家来说，未来的机会在中国那些百万人口的小城镇。我不知道大家是否知道中国有多少城市过100万人口，我在2014年初步做了一个统计，美国大概有不到12个城市过100万人口，中国有167个城市过100万人口。而100万人口的基础建设、100万人口所诞生的巨大产业，我们远远没有发展好。这些近百万城市的人口，也许我们将来会有三百个，这些地方会迸发出巨大的消费潜力。内需绝对不是有钱人的拉动，内需应该是满足每一个普通百姓的需求，普通人的内需拉动，才是真正可以持续发展的内需价值。第三，新的全球…

关于px、em、rem、rpx、upx的知识
type: item
date: 2020-09-30T11:11:48+08:00
description: AI摘要 本文介绍了CSS中常用的长度单位px、em、rem、rpx和upx。px是像素单位，与显示器分辨率相关；em是相对长度单位，相对于当前对象内文本的字体尺寸；rem是CSS3新增的单位，相对于HTML根元素；rpx是微信小程序的尺寸单位，根据屏幕宽度自适应；upx是uni-app的尺寸单位，也是根据屏幕宽度自适应。选择合适的单位取决于项目需求和浏览器兼容性。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); PXpx像素（Pixel）。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。PX特点IE无法调整那些使用px作为单位的字体大小；国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位；Firefox能够调整px和em，rem，但是96%以上的中国网民使用IE浏览器(或内核)。EMem是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置，则相对于浏览器的默认字体尺寸。EM特点em的值并不是固定的；em会继承父级元素的字体大小。注意：任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算，需要在css中的body选择器中声明Font-size=62.5%，这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10，然后换上em作为单位就行了。所以我们在写CSS的时候，需要注意两点：body选择器中声明Font-size=62.5%；将你的原来的px数值除以10，然后换上em作为单位；重新计算那些被放大的字体的em数值。避免字体大小的重复声明。也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em，那么在声明p的字体大小时就只能是1em，而不是1.2em, 因为此em非彼em，它因继承#content的字体高而变为了1em=12px。REMrem是CSS3新增的一个相对单位（root em，根em），这个单位引起了广泛关注。这个单位与em有什么区别呢？区别在于使用rem为元素设定字体大小时，仍然是相对大小，但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身，通过它既可以做到只修改根元素就成比例地调整所有字体大小，又可以避免字体大小逐层复合的连锁反应。目前，除了IE8及更早版本外，所有浏览器均已支持rem。对于不支持它的浏览器，应对方法也很简单，就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。下面就是一个例子：p {font-size:14px; font-size:.875rem;}注意： 选择使用什么字体单位主要由你的项目来决定，如果你的用户群都使用最新版的浏览器，那推荐使用rem，如果要考虑兼容性，那就使用px,或者两者同时使用。px 与 rem 的选择？对于只需要适配少部分手机设备，且分辨率对页面影响不大的，使用px即可 。对于需要适配各种移动设备，使用rem，例如只需要适配iPhone和iPad等分辨率差别比较挺大的设备。rpxrpx 是微信小程序解决自适应屏幕尺寸的尺寸单位。微信小程序规定屏幕的宽度为750rpx。无论是在iPhone6上面还是其他机型上面都是750rpx的屏幕宽度，拿iPhone6来讲，屏幕宽度为375px，把它分为750rpx后， 1rpx = 0.5px。微信小程序同时也支持rem尺寸单位， rem 规定屏幕的宽度为20rem, 所以 1rem = (750/20)rpx = 37.5 rpxUPXuni-app 使用 upx 作为默认尺寸单位， upx 是相对于基准宽度的单位，可以根据屏幕宽度进行自适应。uni-app 规定屏幕基准宽度750upx。开发者可以通过设计稿基准宽度计算页面元素 upx 值，设计稿 1px 与框架样式 1upx 转换公式如下：设计稿 1px / 设计稿基准宽度 = 框架样式 1upx / 750upxupx在2018年就推出了，其初衷是为了让微信的rpx机制可以跨全端使用。在普通css写法里，upx会被编译器编译。但动态绑定时，upx无法被准确编译，此时官方提出了使用uni.upx2px()方法，用来…

Golang 汇编入门知识总结
type: item
date: 2020-09-27T14:35:04+08:00
description: AI摘要 本文是一篇关于Golang汇编入门的知识总结，作者分享了自己在学习Golang底层实现机制时对Golang汇编的理解。文章首先解释了为什么需要汇编语言，然后介绍了程序与进程的概念，接着深入讲解了Go汇编的相关知识，包括核心寄存器、常用操作指令等。文章还提供了如何输出Go汇编的方法，并通过对一个简单Go函数的汇编代码进行分析，帮助读者理解Go汇编的实现过程。最后，文章还介绍了一些Go调试工具，如gdb和delve，并总结了学习Go汇编需要熟悉的几个方面。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 作者：ivansli，腾讯 IEG 运营开发工程师在深入学习 Golang 的 runtime 和标准库实现的时候发现，如果对 Golang 汇编没有一定了解的话，很难深入了解其底层实现机制。在这里整理总结了一份基础的 Golang 汇编入门知识，通过学习之后能够对其底层实现有一定的认识。0. 为什么写本文平时业务中一直使用 PHP 编写代码，但是一直对 Golang 比较感兴趣，闲暇、周末之余会看一些 Go 底层源码。近日在分析 go 的某些特性底层功能实现时发现：有些又跟 runtime 运行时有关，而要掌握这一部分的话，有一道坎是绕不过去的，那就是 Go 汇编。索性就查阅了很多大佬们写的资料，在阅读之余整理总结了一下，并在这里分享给大家。本文使用 Go 版本为 go1.14.11. 为什么需要汇编众所周知，在计算机的世界里，只有 2 种类型。那就是：0 和 1。计算机工作是由一系列的机器指令进行驱动的，这些指令又是一组二进制数字，其对应计算机的高低电平。而这些机器指令的集合就是机器语言，这些机器语言在最底层是与硬件一一对应的。显而易见，这样的机器指令有一个致命的缺点：可阅读性太差（恐怕也只有天才和疯子才有能力把控得了）。为了解决可读性的问题以及代码编辑的需求，于是就诞生了最接近机器的语言：汇编语言（在我看来，汇编语言更像一种助记符，这些人们容易记住的每一条助记符都映射着一条不容易记住的由 0、1 组成的机器指令。你觉得像不像域名与 IP 地址的关系呢？）。1.1 程序的编译过程以 C 语言为例来说，从 hello.c 的源码文件到 hello 可执行文件，经过编译器处理，大致分为几个阶段：编译器在不同的阶段会做不同的事情，但是有一步是可以确定的，那就是：源码会被编译成汇编，最后才是二进制。2. 程序与进程源码经过编译之后，得到一个二进制的可执行 文件。文件这两个字也就表明，目前得到的这个文件跟其他文件对比，除了是具有一定的格式（Linux 中是 ELF 格式，即：可运行可链接。executable linkable formate）的二进制组成，并没什么区别。在 Linux 中文件类型大致分为 7 种：b: 块设备文件c：字符设备文件d：目录-：普通文件l：链接s：socketp：管道通过上面可以看到，可执行文件 main 与源码文件 main.go，都是同一种类型，属于普通文件。（当然了，在 Unix 中有一句很经典的话：一切皆文件）。那么，问题来了：什么是程序？什么是进程？2.1 程序维基百科告诉我们：程序是指一组指示计算机或其他具有消息处理能力设备每一步动作的指令，通常用某种程序设计语言编写，运行于某种目标体系结构上。从某个层面来看，可以把程序分为静态程序、动态程序：静态程序：单纯的指具有一定格式的可执行二进制文件。动态程序：则是静态可执行程序文件被加载到内存之后的一种运行时模型（又称为进程）。2.2 进程首先，要知道的是，进程是分配系统资源的最小单位，线程(带有时间片的函数)是系统调度的最小单位。进程包含线程，线程所属于进程。创建进程一般使用 fork 方法(通常会有个拉起程序，先 fork 自身生成一个子进程。然后，在该子进程中通过 exec 函数把对应程序加载进来，进而启动目标进程。当然，实际上要复杂得多)，而创建线程则是使用 pthread 线程库。以 32 位 Linux 操作系统为例，进程经典的虚拟内存结构模型如下图所示：其中，有两处结构是静态程序所不具有的，那就是 运行时堆(heap)与 运行时栈(stack)。运行时堆从低地址向高地址增长，申请的内存空间需要程序员自己或者由 GC 释放。运行时栈从高地址向低地址增长，内存空间在当前栈桢调用结束之后自动释放(并不是清除其…

远程桌面连接报【由于CredSSP 加密数据库修正】错误解决办法
type: item
date: 2020-09-16T14:48:04+08:00
description: AI摘要 本文介绍了在连接远程服务器时遇到的“由于CredSSP加密数据库修正”错误的原因和解决办法。错误原因是由于CVE-2018-0886的CredSSP更新导致。解决办法有两种：1）修改策略组配置，在“计算机配置”->“管理模板”->“系统”->“凭据分配”中找到“加密数据库修正”项目，选择“已启用”，保护级别选“易受攻击”；2）修改注册表，在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters”下找到“AllowEncryptionOracle”并把值设置成“2”。建议优先使用组策略方式解决，因为注册表修改不当可能导致严重问题。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 今天连接远程服务器时，出现这个错误提示，其它服务器都是好好的，唯独这台新服务器就报错错误原因：查看微软CredSSP更新日志查看win10系统升级日志，果然找到了原因，是因为CVE-2018-0886 的 CredSSP 2018 年 5 月 8 日更新默认设置从“易受攻击”更改为“缓解”的更新。相关的 Microsoft 知识库编号已在 CVE-2018-0886 中列出。默认情况下，安装此更新后，修补的客户端无法与未修补的服务器进行通信。 使用本文中描述的互操作性矩阵和组策略设置来启用“允许的”配置。具体的内容请自行阅读：https://support.microsoft.com/zh-cn/help/4093492/credssp-updates-for-cve-2018-0886-march-13-2018解决办法1：修改策略组配置win+R 打开运行运行，然后输入“gpedit.msc”打开 如下图所示，在左侧窗口依次找到策略路径：“计算机配置”->“管理模板”->“系统”->“凭据分配” 然后右侧窗口设置名称中找到： 加密数据库修正 项目，选择”已启用“，保护级别选”易受攻击“，确定即可解决。解决办法2：修改注册表这里建议先使用上面组策略的方式进行解决，如果解决不了，再使用注册表方式，因为注册表方式没有组策略这种图形化界面的简单方便。win+R 打开运行菜单，然后输入“regedit” 按Enter键即可打开如下的注册表，按照图示，找到此路径“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters”然后在右侧窗口双击“AllowEncryptionOracle” 并把值设置成“2” （跟上面组策略设置效果一样）然后确定。如下图所示0表示强制更新的客户端1表示缓解2表示易受攻击 （跟上面组策略设置效果一样，有木有）总结今天主要是介绍下win10 mstsc远程遇到的坑“这可能是由于CredSSP 加密数据库修正”的两种解决方法。从微软官方更新日志入手，然后引出组策略以及注册表的解决方法。图文也更容易让新手朋友也能按照步骤进行解决！最后还是提醒下，新手朋友最好通过组策略的方式进行解决，因为微软也给出了警告： 如果使用注册表编辑器或其他方法修改注册表不当，可能会出现严重问题。 这些问题可能需要您重新安装操作系统。 Microsoft 不能保证可解决这些问题。 请自行承担修改注册表的风险。部分图文来源：https://blog.csdn.net/qin_yu_2010/article/details/81150741

如何学习一门新的语言
type: item
date: 2020-09-13T17:14:29+08:00
description: AI摘要 本文探讨了学习新编程语言的方法和常见问题。作者指出，仅阅读官方文档和查看开源项目代码对初学者来说并不足够，因为这些资料可能过于复杂或不全面。作者建议初学者从官方提供的Step-By-Step代码开始学习，这些代码由浅入深、有质量保证且更新及时。同时，作者强调了实践的重要性，建议初学者通过小项目逐步提高。最后，作者呼吁开发者社区中的老手和新手之间需要更多的耐心和理解，以减少信息不对称带来的矛盾。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 首先要说，这并不是一篇教你如何学习的文章，因为到今天为止我也没有找到一种通用的方法来解决如何学习的问题。但是在探索的道路上，我确实产生过一些思路，我想把这些思考的过程分享出来让大家探讨。如果这对你有帮助的话，那我会非常高兴。我最近在学习 Rust ，这是一门很酷但是相对冷门的语言（学习冷门语言可能是我的一大爱好，比如我就非常喜欢 CoffeeScript ，这是 JavaScript 的一门方言）。自从在某些语言的舒适区待久之后，经常会产生自己无所不能的错觉，这也是我不断想学习新语言的一大动力。而我的学习过程跟大多数人类似，就是先在网上找文档然后自学。而在看文档的过程中，我就发现了一些问题。手册的作用“去看文档喽。”这是老鸟在面对新手时最喜欢扔的一句话，我通常也是这么扔给自己的。但当你打开一门语言的手册，你会发现它除了教你语法外，几乎没有教你什么其它东西。于是你会陷入这样一个境地：“背下来了么？”“背不下来，太难懂了。”“再看一遍，给我背下来。”。。。“背下来了么？”“大部分背下来了。”“给我写个程序，实现个XX功能。”“不会。。。”“。。。”在一个高级开发者眼里，你会了语法理所当然就应该会写程序了，但实际情况并非如此。这让我想起前段时间跟一个朋友关于目前编程教育市场的一个讨论。我出于自己的经验提出一个想法：让大牛开发者来教新手入门。在我的设想中，大牛开发者拥有强大的实战经验，以及丰富的专业知识，更是自带光环，这不比现在市场上那些半吊子的讲师好多了。在我为自己“伟大”的想法得意的时候，朋友给我浇了一盆冷水。他告诉我这样根本行不通，大牛根本不知道菜鸟需要什么知识，你可能以为基础语法讲清楚就好了，人家却连编辑器是什么都不清楚。设想一下，让一个大学教授去教一群小学生，这对两者来说都是一种灾难吧。这些语言的创造者，或者文档的作者，无疑都是一些大神。它们在撰写一个语言手册的过程中，只能尽量负责地把这个语言的全貌准确地有组织地展现给你。然而这种全面的展现，对于一个没有任何引导的初学者来说并不完全是一件好事。简单来说就是，你会在一些次要的事情上浪费太多时间，而一些主要的概念又没有理解透彻。关于看真实代码当觉得文档满足不了你的时候，老鸟们往往会扔给你第二招：看代码。看什么代码呢？那还用说，当然是被业界奉为经典的，在 GitHub 上至少有一万颗星的知名开源项目代码啦。当你怀着崇敬的心情，打开扔给你的网址，看着满屏幕的代码时，你会对自己问出那三个经典的哲学问题。这是什么东西？它是怎么做到的？为什么要这么写？搞不好某些人还会因为惊吓过度，从而失去了学习下去的信心。那么让我们一起来看看这些代码里有什么鬼东西，会吓得新手信心不足。大段的注释说一件事你们不要笑，在我还是个萌新的时候，我曾经对这些穿插在代码中的神秘文字产生了深深的困惑，我还以为它们对代码有某种加成作用，以至于我还试验过把注释去掉会对代码执行产生什么影响。而现实中好的代码会让后面的维护者方便很多，但不好的甚至错误的注释会让人迷惑不已。语法糖语法糖是个好东西，它大大简化了我们的编程过程，高手用起语法糖写起代码来简直不要太爽，所以越强大的项目这玩意儿越多。但是对于初学者来说，语法糖隐藏了一些细节，而且让语法看起来很怪异。有些代码如果你用标准语法来写是很好懂的，但如果用语法糖来写的话很难让人一下子明白。初学者为了弄懂这些语法往往要花大量时间，但其实这些时间在这个阶段是没必要的浪费。你看不懂它觉得它是一个很重要的东西，其实它只是一个做工精巧的小玩意儿，离开了它这些代码照样能工作。而随着你的经验丰富，也可以随时随地用起来，用的方法可能也不尽相同。代码里的重点对于一个开源项目来说，往往 50% 的代码可能都是在适配各种不同的运行环境，将系统的 API 抽象成项目里通用的接口，这部分代码除非你自己要做类似的项目，要不然的话对初学者…

attachEvent 的用法
type: item
date: 2011-01-14T15:16:12+08:00
description: 本文介绍了attachEvent方法的用法，这是一种将指定函数绑定到对象事件的DHTML语法。当事件触发时，会调用该函数。attachEvent方法需要两个参数：sEvent（事件名称）和fpNotify（要调用的函数）。返回值是布尔类型，表示函数是否成功绑定到事件。attachEvent方法允许行...[...]

无窗体无界面exe怎么做？
type: item
date: 2007-11-08T15:16:00+08:00
description: AI摘要 在Delphi中创建无窗体EXE的方法有两种：一是创建控制台程序，通过选择File->new->other->Console Application来生成工程文件；二是隐藏窗体，通过在TForm1.FormCreate事件中设置application.ShowMainForm为false来实现。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 要做一个无窗体的EXE，在Delphi下有两种方法：console applicationHide all Foms(MainForm,esc.)1、做一个控制台程序，生成console application工程文件的办法是：File\new\other\Console Application2、隐藏窗体，跟无窗体差不多了吧，这样做最简单。procedure TForm1.FormCreate(Sender: TObject);beginapplication.ShowMainForm:=false;end;