- 博客(59)
- 资源 (1)
- 收藏
- 关注
原创 C# 结构型设计模式----外观模式
在软件系统中可以有一个或者多个子系统角色,每一个子系统可以不是一个单独的类,而是一个类的集合,它实现子系统的功能;外观模式,顾名思义肯定是描述外在的一种表现,在人与人之间,外观的好坏体现在各自的长相以及穿着,气质等表现,而在系统设计之间,外观则是表现在系统的接口调用,调用接口的代码越简洁,需要调用的接口越少是不是看起来和用起来更舒服?使用外观模式时,创建一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部子系统中方法。1、外一个复杂的子系统提供一个简单的接口。
2024-11-01 18:01:52
938
原创 C# 结构型设计模式----组合模式
组合模式允许将对象组合成树形结构以表示“整体/部分”层次结构。使用此模式,客户端可以,而。组合对象本身也可以作为容器,包含其他组合对象,形成更复杂的树形结构。在C#中,组合模式是一种的设计模式,通常需要使用抽象类或接口表示“整体”和“部分”之间的关系,并中。通过将容器中的部件继续使用相同的方式处理,客户端代码可以逐级访问嵌套对象,而不必知道每个对象的具体类型或是否是叶子节点。可以方便地处理树状结构,具有一致性和可维护性。组合对象可以递归嵌套,允许动态的添加和删除节点和树形结构。
2024-11-01 15:01:58
828
1
原创 C# 结构型设计模式----装饰器模式
简要说明就是动态地给一个对象添加一些额外的职责。适用于需要扩展一个类的功能,或给一个类添加多个变化的情况。装饰器,顾名思义就是在原有基础上添加一些功能。装饰器模式中各个角色有::定义一个对象接口,可以给这些对象动态地添加一些职责。:定义了一个具体的对象,也可以给这个对象添加一些职责。:持有一个构件(Component)对象的引用,并定义一个与抽象构件接口一致的接口。:负责给构件对象“贴上”一些附加的职责。
2024-10-30 18:01:14
746
原创 C# 结构型设计模式----桥接模式
定义抽象类的接口,一般为抽象类,规范RefinedAbstraction,并保存一个对实现化对象(Implementor)的引用。主要靠这个类进行桥接。
2024-10-30 11:12:33
1003
原创 C# 结构型设计模式----适配器模式
由例子可以看出类适配与对象适配在于一个继承被适配者,一个实例化被适配者。类适配器采用“多继承”的实现方式,在C#语言中,如果被适配角色是类,Target的实现只能是接口,因为C#语言只支持接口的多继承的特性。在C#语言中类适配器也很难支持适配多个对象的情况,同时也会带来了不良的高耦合和违反类的职责单一的原则,所以一般不推荐使用。
2024-10-28 17:55:57
1144
原创 C# 创建型设计模式----建造者模式
建造者模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。通俗点说就是将一个复杂的对象拆分成一个一个零件,然后按照既定顺序和规则进行组装,最终形成这个相对复杂的对象。相当于组装。:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。建造者模式的使用需要考虑其复杂性,如果产品结构较简单,使用此模式可能会增加系统的复杂性。客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦。
2024-10-25 18:00:01
850
原创 C# 创建型设计模式----工厂模式
简单来说就是由一个对象去生成不同的对象,工厂模式是用工厂方法代替new操作的一种模式。工厂方法封装了多个相关联类的new方法,每次实例化这些类的时候不需要new多次,只需要调用工厂类的对应方法即可实例化这些类,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式主要有三种类型:简单工厂(不介绍)、工厂方法和抽象工厂。在创建对象时必然需要new该对象,当需要更改对象时,需要把项目中所有地方都修改一遍,这显然违背了软件设计的开闭原则。如果使用工厂来生成对象,那么我们只需要跟工厂打交道就可以了。如果要更新对象
2024-10-25 10:59:40
1797
原创 C# 创建型设计模式之----单例模式
单例模式是一种确保一个类只有一个实例的设计模式。适用于需要频繁实例化然后销毁的对象,创建对象消耗资源过多,但又经常用到的对象。或者全局有且仅能有一个实例化的对象。其本质就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个。特性和功能:确保一个类只有一个实例,并提供一个全局访问点。使用环境:当类只需要一个实例,且易于访问,且实例应在整个应用程序中共享时。注意事项:需要注意线程安全问题。优点:可以确保一个类只有一个实例,减少了内存开销。缺点:没有接口,扩展困难。
2024-10-24 15:38:32
922
原创 C# 委托简述
使用关键字delegate声明委托除了使用delegate定义 委托以外C#提供两个定义好的泛型委托Action与Func) (当然你也可以使用delegate自定义泛型委托)这里先介绍两个C#定义的委托,相信很多人都在使用,不管你清不清楚什么是委托Action:是无返回值的泛型委托。下面action 表示无参,无返回值的委托//定义委托action();//使用方式1//使用方式2Console.WriteLine("我是传入的无参无返回值的委托方法");
2024-10-24 10:06:26
1459
原创 C# 使用S7netplus读取西门子PLC的DB块-S7协议
2、添加帮助类(读写数据就研究该类即可,具体的理论就不多说了)在工业的设备监控领域,S7协议使用比较普遍下面简单教大家使用。
2024-10-14 17:25:37
2590
原创 .NET 6.0 使用log4net配置日志记录方法
3.替换 log4net.config的内容(3.1与3.2选择一个就好,只是创建日志文件有所区别)2.添加Log4net文件夹和log4net.config配置文件(配置文件属性设为始终复制)。1.包管理器引入相关包。
2024-09-26 11:36:14
900
原创 .NET 6.0 WebAPI 使用JWT生成Token的验证授权
4.相关配置结束后,我们得生成Token,这时我们创建一个专门生成Token的类里面有两个生成Token的方法,想用哪个用哪个。6.既然可以生成Token了,那么就该给控制器授权了,总不能让每个携带Token的用户能访问系统所以的API吧,那样会出现垂直越权的情况,渗透测试过不了哦。2.配置文件appsettings.json写相关配置参数(也可不写,写在程序里面,数据库读取也是一样的)此处着重说Policy方式,对Role方法感兴趣的可以看我前面的Cookie方式验证。3.在Program配置相关服务。
2024-09-23 17:48:53
1432
原创 .NET 6.0 解决 接口返回的Json数据的Key全是小写,与定义的字段不一样的问题。以及定义系统的时间格式
很简单,仅需在Program下添加下面服务即可。
2024-09-23 15:55:07
314
原创 .NET 6.0 MVC使用Cookie进行身份验证
2.在用户登录时给添加身份(LoginModel 只是我的接收参数的类,此处改为自己的即可)一般而言MVC 是不与其他系统发生数据交互,所以使用Cookie验证即可,无需安装拓展。1.Program里面注册服务。
2024-09-23 15:27:05
577
原创 WPF DataGrid 单元格居中,头部居中,点击行改变背景色。
DataGrid样式和点击改变行背景色的触发器(BasedOn继承的是UI框架的样式,若无则删除,触发器还有鼠标移动事件等,按需自行修改添加)头部样式和单元格样式写在DataGrid样式下Setter设置其相应的属性无效的原因知道的麻烦留一下言。我得全局样式都写在了App.XAML文件下的ResourceDictionary里,方便全局引用。
2024-09-19 11:50:10
1133
原创 WPF自定义Dialog模板,内容用不同的Page填充
因为审美的不同,就总有些奇奇怪怪的需求,使用框架自带的对话框已经无法满足了,这里记录一下我这边初步设计的对话框。别问为啥要用模板嵌套Page来做对话框,问就是不想写太多的窗体。Page(XAML,引用了materialDesign库,没有的话用你自己定义的page就好)模板窗体(XAML)
2024-09-18 15:44:31
715
原创 WPF 的TreeView的TreeViewItem下动态生成TreeViewItem
最终效果,我这没有用其自带的属性事件去判断是否选中,而是采用对象类中的IsSelect的值来判断的,仅供参考。树形结构仅部分需要动态生成TreeViewItem的可以参考本文。
2024-09-18 15:15:44
654
原创 WPF利用Path自定义画头部导航条(TOP)样式
两种图形中的"ColorZone"是Path的父控件,materialDesign:ColorZone是WPF的UI框架materialDesign下的控件,可替换为你自己的控件作为父控件只是注意父控件名称修改下即可。PointConverter 主要用来动态确定X轴,和Y轴。但当前Y轴是上一个点的X轴。用于闭合图形填充颜色的Path类型。EndPointConverter 该转换器主要用来动态确定X轴,和Y轴。新建两个多值转换器,都有用处,用来动态确定PATH的X,Y州坐标的。
2024-09-11 10:56:30
670
原创 Java+vue3+element-plus+ts上传图片到服务器并返回图片可访问链接
以上两部分是直接在element-plus官网拷贝的,根据自己需求改下即可。后台(JAVA MVC)
2024-08-16 16:05:24
291
原创 Java 使用WebScoket实现消息实时推送
记录这篇文章主要是因为一直报200的错误,后来才发现是被拦截的,修改后已成功通讯。我只是给JAVA大佬打下手的,有不足之处请参考顶部链接。刚接触java如何引入包不太懂,请参考上面的链接。WebsocketConfig类(这好像是用注解启动服务的,不需要再配置什么启动啥的)//使WebScoket不会被拦截。
2024-08-09 17:25:34
667
原创 WPF MaterialDesign 颜色选择器自定义模板颜色
最后注意一点:若想要控件颜色随选择变化,不能给控件设置固定颜色,并且得使用属性Mode="PrimaryDark"或者materialDesign:ColorZoneAssist.Mode。这两个属性有三个可变化的值皆是Primary***。控件能使用哪个用哪个。也可根据该UI的Demo查看详情。首先得确保程序UI使用的是MaterialDesign。
2024-07-31 14:25:23
673
2
原创 VSCODE创建vue项目及其文件简介
创建:在VsCode 的终端输入:npm create vite@latest命令即可。环境准备:VsCode, npm, node.js, Vue - Official..vscode文件:VSCode工具的配置文件夹(跟项目无关,跟使用的工具有关)node_modules:Vue运行项目的依赖文件夹。vite.config.js:Vue配置文件。public:资源文件夹(浏览器图标)package.json:信息描诉文件。.gitignore:git忽略文件。
2024-07-12 13:46:02
291
原创 WPF在MVVM模式下的消息提示功能。
在网上那版的基础上做的后台样式拓展,使其不依赖样式模板。网上那版太多出处,我就不贴链接了。下面是装饰器代码类。样式主要在这上面修改,图标用到了控件库,可使用原生图标替换即可。使用方法:Msg.MsgShow("哇!
2024-05-21 16:23:19
396
原创 .NET CORE 6.0 MVC网站发布后CSS文件引用失败,样式没了
如果本地启动正常,查看项目里wwwroot下的css文件的属性,注意"生成的操作"这个属性。把 "无" 改为"内容"或"嵌入的资源"。
2024-05-13 10:29:00
267
原创 .NET6.0下的EFCORE的DBfirst
Initial Catalog=数据库名称;在Program类中注入上下文对象并从appsettings.json文件中读取连接字符串。当数据库中表发生更改时,可以直接使用下面命令在Nuget控制台中输入下面命令。在appsettings.json文件中配置连接字符串。
2024-03-21 17:23:46
266
原创 如何使用自己申请的域名绑定内网IP
1.第一步拥有自己花小钱钱买来的域名。本次测试所申请网站(nat123免费的域名也支持首位自定义。2.注册一个nat123(之所以用这个是因为,冲值要求最低且更容易上手。注:最开始还是用https的应用类型。3.在nat123上绑定自己的域名。按照教程绑定好后即可使用域名访问了。该域名应该也是在阿里那倒卖的。
2024-02-26 17:09:21
1167
1
原创 接上文,内网环境下OWIN如何使用IIS的SSL证书。http变https
3.找到证书文件,双击安装->选择本地计算机->手动选择路径(放到中间证书机构,如果是个人生成的证书,请放到个人(不想被提示私密链接可以放在受信任的根目录下))->导入。首先CDM进入证书所在的目录,然后执行下面命令:生成pfx文件就可以导入IIS,按上文方法就可在Windows环境下让OWIN使用https了。2.在控制台1[控制台根节点]->文件->添加/删除....->选择证书->添加-选择计算机账户->完成->确认。上面虽然产生的证书,但无法让我们导入到IIS上。5.在命令行中写入命令。
2024-01-25 09:56:28
592
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人