win10剪切板内容被替换 1CopZeypHcpbuerDSNGYT8ryNJE3izi3Uu
记录一个奇怪的…病毒?
表现症状为复制1或者3开头,连续27位的数字混英文的字符串,会被整段替换为
1CopZeypHcpbuerDSNGYT8ryNJE3izi3Uu
经过排查后,确认是一个名为 serviceUpdate.exe 的进程在干扰
而这段代码其实是比特币钱包地址
怀疑是补丁包或者封装工具被下毒了,事实上火绒也确实能扫出来
关闭进程,清除相关文件,剪切板恢复正常。
记录一个奇怪的…病毒?
表现症状为复制1或者3开头,连续27位的数字混英文的字符串,会被整段替换为
1CopZeypHcpbuerDSNGYT8ryNJE3izi3Uu
经过排查后,确认是一个名为 serviceUpdate.exe 的进程在干扰
而这段代码其实是比特币钱包地址
怀疑是补丁包或者封装工具被下毒了,事实上火绒也确实能扫出来
关闭进程,清除相关文件,剪切板恢复正常。
vue编译时提示
error:03000086:digital envelope routines::initialization error
node版本更新导致
可降版本或者命令行输入 $env:NODE_OPTIONS="--openssl-legacy-provider"
或者在 package.json 中替换 scripts 中的增加对应内容
"scripts": {
"serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
"build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
},
"editor.formatOnSave": false
语言php,使用扩展phpfmt
即使关闭了formatOnSave,在保存时依然会触发格式化
检查设置->扩展->php-cs-fixer,确认是否开启了 runs fix command on save
装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象添加功能。通常有两种方式可以实现给一个类或对象增加行为:
显然,为了扩展对象功能频繁修改父类或者派生子类这种方式并不可取。在面向对象的设计中,我们应该尽量使用对象组合,而不是对象继承来扩展和复用功能。装饰器模式就是基于对象组合的方式,可以很灵活的给对象添加所需要的功能。装饰器模式的本质就是动态组合。动态是手段,组合才是目的。总之,装饰模式是通过把复杂的功能简单化,分散化,然后在运行期间,根据需要来动态组合的这样一个模式。
原文地址:观察者模式
Laravel的Event事件系统提供了一个简单的观察者模式实现,能够订阅和监听应用中发生的各种事件,在PHP的标准库(SPL)里甚至提供了三个接口SplSubject
, SplObserver
, SplObjectStorage
来让开发者更容易地实现观察者模式,不过我还是想脱离SPL提供的接口和特定编程语言来说一下如何通过面向对象程序设计来实现观察者模式,示例是PHP代码不过用其他面向对象语言实现起来也是一样的。
观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。
观察者模式的核心在于Subject和Observer接口,Subject(主题目标)包含一个给定的状态,观察者“订阅”这个主题,将主题的当前状态通知观察者,每次给定状态改变时所有观察者都会得到通知。
发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。