XOR
设计模式(十五)----结构型模式之外观模式
1 概述 有些人可能炒过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯定都会想,如果有个懂行的帮帮手就好,其实基金就是个好帮手,支付宝里就有许多的基金,它将投资者分散的资金集中起来,交由专业的经理人进行管理,投资于股票、债券、外汇等领域,而基金投资的 ......
设计模式(十四)----结构型模式之组合模式
1 概述 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以 ......
设计模式(十六)----结构型模式之代理享元模式
1 概述 定义: 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。 2 结构 享元(Flyweight )模式中存在以下两种状态: 内部状态,即不会随着环境的改变而改变的可共享部分。 外部状态,指 ......
AD域安全攻防实践(附攻防矩阵图)
以域控为基础架构,通过域控实现对用户和计算机资源的统一管理,带来便利的同时也成为了最受攻击者重点攻击的集权系统。 01、攻击篇 针对域控的攻击技术,在Windows通用攻击技术的基础上自成一套技术体系,将AD域攻防分为信息收集、权限提升、凭证窃取、横向移动、权限维持等攻击阶段,把域环境下众多且繁杂的 ......
k8s HPA(HorizontalPodAutoscaler)--自动水平伸缩
写在前面 我们平时部署web服务,当服务压力大撑不住的时候,我们会加机器(加钱);一般没有上容器编排是手动加的,临时加的机器,临时部署的服务还要改Nginx的配置,最后回收机器的时候,也是手动回收,手动修改Nginx的,挺麻烦的其实; 而K8s是支持这整个流程的自动化的,也就是HPA; HPA介 ......
ASP.NET Core - 配置系统之配置添加
2. 配置添加 配置系统可以读取到配置文件中的信息,那必然有某个地方可以将配置文件添加到配置系统中。之前的文章中讲到 ASP.NET Core 入口文件中,builder(WebApplicationBuilder 对象) 中有一个 Configuration 属性,这里就是我们扩展添加额外的配置的 ......
ASP.NET Core - 配置系统之配置提供程序
3. 配置提供程序 上面提到,通过 IConfigurationBuilder 的实现类对象,我们可以自由地往配置系统中添加不同的配置提供程序,从而获取不同来源的配置信息。.NET Core 中,微软提供了以下这些内置的配置提供程序: 文件配置提供程序 环境变量配置提供程序 命令行配置提供程序 Az ......
ASP.NET Core - 配置系统之自定义配置提供程序
#4. 自定义配置提供程序 在 .NET Core 配置系统中封装一个配置提供程序关键在于提供相应的 IconfigurationSource 实现和 IConfigurationProvider 接口实现,这两个接口在上一章 ASP.NET Core - 配置系统之配置提供程序 中也有提到了。 I ......
ASP.NET Core - 选项系统之选项配置
1. 选项 前面讲完了.NET Core 下的配置系统,我们可以通过 IConfiguration 服务从各种来源的配置中读取到配置信息,但是每次要用的时候都通过 Iconfiguration 读取配置文件会比较不方便,而且效率低。.NET Core 体系下提供了一个选项系统,该功能用于实现以强类型 ......
Zip Slip漏洞审计实战
前言 最近看到许少的推有说到Zip Slip这个漏洞导致的RCE,其实我在代码审计的时候确实发现有不少功能模块都是使用ZIP来解压,其实还是在真实系统中经常见到的。 于是想着好久没有写过博客了,想借着这次机会更新一下吧,免得读者以为我在偷懒没学习了~ Zip Slip是什么漏洞 Zip Slip是一 ......
AOP中的一些重要术语简介
AOP的定义:AOP(Aspect Oriented Progamming)利用称为"横切"的技术,剖解开封装的对象内部,把多个类的公共行为封装到一个可重用模块中,便于减少重复代码,降低模块之间的耦合度,符合“开闭原则”。 上面这段关于AOP的定义是从网上抄的,是不是很拗口,我们就结合实际开发来先简 ......
C++重载底层原理
好吧,承认是自己浅薄了 当被问起C++重载时,嘴角不自觉的微微上扬,然后脱口而出,C++重载的原则: 函数名相同,函数参数列表不同(类型、个数、顺序) 匹配原则1:严格匹配,找到再调用 匹配原则2:通过隐式类型转换寻求一个匹配,找到则调用 注:返回类型不构成重载条件 C++编译时多态也是由重载函数来 ......
C++11 thread_local关键字
这是一篇科普文--关于thread_local关键字 首先,C++11之前并没有对并发进行任何的支持,C++11首次提供了以下的支持: 语言核心定义了一个内存模型,保证当更改"被两个不同线程使用"的两个object时,他们彼此独立,而引用thread_local关键字 标准库支持启动多线程,包括传递 ......
博客园美化教程
博客园美化教程 前言: 没啥时间写博客,不过最进将博客美化了一遍现在,选了好几款不错的主题,感觉都很喜欢,选择困难症犯了,决定写一个完整详细的教程,将几款博客都试一遍,现在先介绍这款SimpleMemory博客主题的效果美化教程吧,接下来开始我们的教程p 一、后台设置 点击“管理 > 设置 > 基本 ......
.Net DI(Dependency Injection)依赖注入机制
1、简介 DI:Dependency Injection,即依赖注入,他是IOC的具体实现。 在DI中,底层服务对象不再负责依赖关系的创建,而是交由顶端调用进行管理注入 好处:降低组件之间的耦合度,使代码更加灵活 2、实例 我们举个例子,有个User Login的功能,Login需要通过DB验证,D ......
Net6 EFcore框架介绍
1、简介 EFcore,可用使得开发人员不需要再去关注数据库的实现,全都由代码进行生成 这样有利于减少工作量、数据库快速迁移... 2、上手搭建架构 (这个图是做完本章内容的完整图,我们一步步深入即可) 在写EF之前,先安装好数据库,我选择在本地安装Sqlserver 我们先执行最核心的两步,将EF ......
FAQ docker运行tomcat提示找不到文件
docker运行tomcat提示找不到文件 问题描述 docker课程中,老师是用tomcat镜像来演示docker的一些操作 但同样的操作有的同学是ok的,有的同学就会遇到如下错误 核心信息 Exited(1) Cannot find /usr/local/tomcat/bin/setclassp ......
漫谈Python魔术方法,见过的没见过的都在这里了
漫谈Python魔术方法,见过的没见过的都在这里了 就说一下,不深入 假的一览 提到魔术方法,学过python都应该知道一些。至少你得会__init__吧。 在我之前写的博文中有很多都涉及魔术方法。比如 浅谈Python中的if,可能有你不知道的,涉及__bool__和__len__ 浅谈Pytho ......
谈谈Selenium中浏览器驱动的日志
谈谈Selenium中浏览器驱动的日志 来源于一位同学,“老师为啥firefox执行后会有日志文件,chrome没有呢?” 比对 你打开chrome浏览器 from selenium import webdriver driver = webdriver.Chrome() 这样是没有日志的 同样的代 ......
我的十年编程路 2014年篇
2014年,对我来说意义非凡。除了前一篇提到的写作之路正式启航外,还有一些其它的种子,也是在这一年播撒下去的,且听我慢慢道来。 那是在1月3日,我收到了本地一家国企的面试邀请,当然前提是我投了简历。为什么这个日期能如此准确呢?为了写这篇文章,我特意查了一遍2014年的邮件收件箱,才发现当年还真的做了 ......
我的十年编程路 2015年篇
如果说2014是我编程之路狂飙的开始,那么2015年则是更加将其发扬光大。 2014年底,我获得了公司的先进奖,这在前一篇已经说过了。这个奖是我工作以来第一次获得的荣誉,所以格外珍惜。虽然有说法是这种奖,大家轮流得。但我还是很珍惜,以至于后来面试的简历上一直写着它。 有了这个奖的鼓励,2015年我就 ......
我的十年编程路 2016年篇
时光匆匆,2016年来了,此时的我已经工作了3年有余。过去的三年,虽有坎坷,但总体顺利,是个逐渐上升的线。 进入2016年后,我不再做那些技术探索方面的App了。部门的拳头产品——加密通信要添加IM即时消息功能,类似微信的样子,这个大功能由我来设计实现。 有了前面几年的技术积累和探索,我们在众多服务 ......
我的十年编程路 2017年篇
2016和2017,这两年是我飞速发展的两年。一方面是技术、工作能力,另一方面是对人生的思考。 随着技术能力的不断提升,博客也随之更新。在2017年伊始,我收到了CSDN学院的讲师邀请函。没错,那个时候我就有机会做视频课了,只是一直在产出图文内容,也就没想着做视频教程。 现在回想起来,当时应该是觉得 ......
我的十年编程路 2018篇
记不得是在什么地方,我看过一个调查。调查的问题就是请大家选出最近几年里,自认为光景最好的一年。统计结果显示:大部分人会选择2018。这一年疫情还没来,世界基本没有大战的新闻,也基本 没有什么天灾。可以说是很安稳的一年。但这一年对于我来说,不仅发生了翻天覆地的变化,这些变化更影响了我的一生。这一切要从 ......
我的十年编程路 2019年篇
随着2018年,三星天津研究院的裁撤,我选择了到广州的三星研究院工作,与最心爱的她开始一起生活。 这一年的开始,我注册了博客园。和2014年类似,在刚注册不久,我写了一篇题为《全新开始,全心出发》的文章。在这篇文章里,我又一次刨析自己,深入内心。 从网站的风格样式上看,博客园并无优势,甚至在某些地方 ......
我的十年编程路 2020年篇
我出生在1990年,2020年到来的时候,我完成了一项成就:奔三。同时,也开启了新的征程:奔四。 2020年的春节是在广州的丈母娘家度过的,春节后大概是初五,或者是初六,我和媳妇就返回天津的家了。 那个时候,大家应该都有印象,疫情刚刚爆发,全国在封高速路。本来想开车回去的,结果怕有风险,还是选择了飞 ......
我的十年编程路 2021年篇
慢慢地,时光走过了8个年头,来到2021年。 站在2021年,回望8年的过往,没有大的起伏和波澜。或许是上天的眷顾,我的事业发展一直都很顺利。当然,弯路也走过一些,而且工作其实挺辗转的,如果看过我前几年的文章就会知道。但这都没关系,我的Plan B,也就是写作,提供了能力和经济上的支撑。甚至,现在, ......
我的十年编程路 2022年篇
2022年,是我工作的第10个年头。我的工作内容主要是由编程和写作构成的,正如前一篇所描述的那样,刚开始是编程为主,写作为辅。后来慢慢地,编程就成为了写作题材的“源泉”,为写作造血。到现在,我已经分不清编程和写作,到底哪一个是主,谁又是辅,似乎写作对我来说更重要一些。 这一年的开端,新冠的形势异常严 ......
我的十年编程路 尾声
终于走到了尾声。不过总体来说,这十年的回忆录,写起来还挺轻松的。 算上序和尾声,其实是有12篇文章,每篇文章大概3000字左右。印象中只有两篇文章是低于3000字,这大概是写掘金小册的后遗症之一。 这12篇文章是我在多个平台一起分发的,算是一次测试,看看各平台不同的读者对这类八卦文章都有何反应。 我 ......
ASP.NET Core - 依赖注入(三)
4. 容器中的服务创建与释放 我们使用了 IoC 容器之后,服务实例的创建和销毁的工作就交给了容器去处理,前面也讲到了服务的生命周期,那三种生命周期中对象的创建和销毁分别在什么时候呢。以下面的例子演示以下: 首先是新增三个类,用于注册三种不同的生命周期: public class Service1 ......