c#
文章平均质量分 55
NetFrameWork,WinForm,WebForm,类库等
code2roc
当你老了,回顾一生,就会发觉:什么时候出国读书、什么时候决定做第一份职业、何时选定了对象而恋爱、什么时候结婚,其实都是命运的巨变。只是当时站在三岔路口,眼见风云千樯,你作出抉择的那一日,在日记上,相当沉闷和平凡,当时还以为是生命中普通的一天。
展开
-
c#打印机脱机检查及阻塞打印
在使用winform编写自动打印服务的过程中,发现只要进行了打印命令的调用,文档就会进入到打印等待队列,如果打印机无法正常工作,则会影响到相关业务数据的正确转换,所以需要检查打印机的状态来保障每次打印时打印机处于空闲状态,打印时队列中也只能有一个文档,本文是通过引用System.Management来实现对打印机状态的查询打印机状态获取 enum PrinterStatus { 其他 = 1, 未知 = 2,原创 2021-05-09 17:11:56 · 920 阅读 · 0 评论 -
c#使用Aspose打印文件
最近在研究winform打印文件,需要支持word,excel,ppt,pdf,图片这几种格式,不能依赖相关软件环境,研究后决定使用Aspose套件将相关文件全部转换成pdf后打印WrodToPDF使用Aspose.Word //去水印 string licenseFile = "Aspose.Words.lic"; if (File.Exists(licenseFile)) {原创 2021-05-04 17:48:48 · 1198 阅读 · 0 评论 -
winform键盘全局与线程Hook
定义数据结构 /// <summary> /// 声明键盘钩子的封送结构类型 /// </summary> [StructLayout(LayoutKind.Sequential)] public class KeyboardHookStruct { public int vkCode;//表示一个1到254间的虚拟键盘码 public原创 2021-03-30 20:54:51 · 608 阅读 · 0 评论 -
c#与js的rsa加密互通
ASN.1抽象语法表示(标记)ASN.1(Abstract Syntax Notation One )一种数据定义语言,描述了对数据进行表示、编码、传输和解码的数据格式。网络管理系统中的管理信息库(MIB)、应用程序的数据结构、协议数据单元(PDU)都是用ASN.1定义的。可以理解为ASN.1是对密钥结构定义的一种规范密钥结构类型PKCS#1RSAPublicKey ::= SEQUENCE { modulus INTEGER, -- n pub.原创 2021-03-20 14:29:56 · 990 阅读 · 1 评论 -
NVelocity实现代码生成
在框架开发过程中,通用代码生成是一项必不可少的功能,c#在这后端模板引擎这方面第三方组件较少,我这里选择的是NVelocity,现在升级到了NetStandard2.0,可以用于NetCore项目添加引用初始化模板引擎及设置模板读取路径 vltEngine = new VelocityEngine(); vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");原创 2021-01-24 13:06:01 · 356 阅读 · 0 评论 -
c#使用Aspose实现Word域套打
前言在项目开发过程中我们经常会使用word书签替换功能导出一些模板类的文档,可能很多人都不知道word还有一个域替换的功能。可以实现和书签同样的效果,对比word书签,word域还可以用于一些对于格式要求严格的文档导出(将域建立在模板图片上),本文使用c#基于Aspose.Word实现word。创建域以word2013为例,插入-文本-文档部件-域,选择MergeField下图示例就是插入域完毕的文档使用Aspose.Word注册Aspose.Words 去水印原创 2020-11-01 16:27:26 · 1189 阅读 · 1 评论 -
在Asp.Net Core MVC 3.0 视图运行时编译
在使用vs2019通过ctrl+f5运行项目进行开发过程中,每次修改cshtml页面都会再刷新就会整个项目自动进行编译等待一会,极大影响了开发效率,所以决定解决一下先通过nuget 包控制台安装:Install-Package Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation -Version 3.0.0然后在Startup.cs文件,...转载 2020-05-04 15:53:07 · 979 阅读 · 0 评论 -
ADO.NET事务封装
在数据库工具类编写的过程中,对事务的处理操作想避免各个原子操作的事务对象赋值重复操作,想对外暴露的方法为如下形式 public bool ExecuteTransition(Action TransitionAction, out string ExceptionStr)外部传入的数据库操作都使用委托统一打包,内部进行事务操作。我们首先需要明白的是,数据库事务操作在ADO.NET的...原创 2020-01-12 20:30:45 · 599 阅读 · 0 评论 -
ASP.NET MVC快速开发框架FastExecutor开发全过程感受及总结
困境追溯到2018年5月份,是个炎热的夏天,毕业后1年7个月我提出了离职,原因是受不了原来公司过度的封装框架感觉一年多毫无进步与实施天天轰炸般的电话,偶然间出去面试了一次发现自己知识真的是比较局限,决定换个环境提升自己,5月份出去面试屡屡碰壁,还好在老同事的介绍下进了个相关行业的公司,尽管还是一样的框架一样的味道,但是还是下定决心不管工作再忙都要不断的提升自己,哪怕每天进步一点点,我相信老天不...原创 2019-11-18 22:16:19 · 445 阅读 · 0 评论 -
c#使用CefSharp开发winform——环境搭建
因为nuget在线下载有时候很慢,所以下载nuget包,进行本地安装登陆nuget官网https://www.nuget.org/下载相关资源选择对应版本进行下载,同时需要下载相关依赖的包最终下载的共4个包,cef.redist64,cef.redist86,cefsharp.common,cefsharp.winforms打开visual studio(这里用v...原创 2019-10-24 10:18:15 · 1173 阅读 · 1 评论 -
c#通过Redis实现轻量级消息组件
最近在开发一个轻量级ASP.NET MVC开发框架,需要加入日志记录,邮件发送,短信发送等功能,为了保持模块的独立性,所以需要通过消息通信的方式进行处理,为了保持框架在部署,使用,二次开发过程中的简易便捷性,所以没有选择传统的MQ,而是基于Redis的订阅发布实现一个系统内部消息组件,话不多说,上码!数据结构定义消息实体包含几个部分,订阅通道名称,信息头,信息体,信息差异化额外信息字典,信...原创 2019-09-28 17:00:44 · 1013 阅读 · 0 评论 -
c#通过Emit方式实现动态代理
之前自己在写一个IOC小轮子的时候,临时想加一个动态代理拦截功能,考虑到实用性方面,使用了Emit动态生成的方式代替RealProxy加反射的实现,网上查找过不少版本,但是都存在一些缺陷,所以决定自己实现一个。首先了解一下动态代理的原理,在编码过程中,如果对原有代码不想做改动,且对操作前操作后加入一些迭代代码,我们会使用静态代理,也就是新建一个类,持有原实现类的引用,写一个同名方法并在其中调用...原创 2019-04-13 17:31:48 · 5123 阅读 · 0 评论 -
ASP.NET MVC实现依赖注入
在java的spring中有自动注入功能,使得代码变得更加简洁灵活,所以想把这个功能移植到c#中,接下来逐步分析实现过程1.使用自动注入场景分析在asp.net mvc中,无论是什么代码逻辑分层,最终的表现层为Controller层,所以我们注入点就是在Controller中,这里我们需要替换默认的ControllerFactory,扫描代码中标记需要注入的对象,进行实例化注入 pu...原创 2019-07-21 21:04:53 · 2326 阅读 · 0 评论 -
bilibili弹幕爬取与比对分析
最近受人之托研究了下b站的数据爬取做个小工具,最后朋友说不需要了,本着开源共享的原则,将研究成果与大家分享一波,话不多说直接上干货需求分析给定up主uid和用户uid,爬取用户在该up主所有视频中发的所有弹幕需求拆解获取up主所有视频打开b站,随便搜索一个up主,打开所有视频页面,f12看异步请求就一目了然了接口地址:https://space.bilibili.com/a...原创 2019-08-26 22:11:21 · 1999 阅读 · 3 评论 -
ASP.NET MVC模块化开发——动态挂载外部项目
最近在开发一个MVC框架,开发过程中考虑到以后开发依托于框架的项目,为了框架的维护更新升级,代码肯定要和具体的业务工程分割开来,所以需要解决业务工程挂载在框架工程的问题,MVC与传统的ASP.NET不同,WebForm项目只需要挂在虚拟目录拷贝dll就可以访问,但是MVC不可能去引用工程项目的dll重新编译,从而产生了开发一个动态挂在MVC项目功能的想法,MVC项目挂载主要有几个问题,接下来进行详...原创 2019-08-06 22:31:34 · 708 阅读 · 0 评论 -
c#树型分类结构统计表格的通用实现方式
在开发过程中,经常会遇到树型的分类结构,而项目后期会根据分类对数据进行统计,不管是后台拼接table还是前后台分离开发方式,总是不能避免对树型结构的表头创建及同项单元格的合并问题,而后面的计算统计列也可能因为分类层级的参差不齐而需要加许多冗长复杂的条件判断,不论是逻辑阅读与后期代码维护的复杂性,复用性都是非常糟糕可怕的,所以想了一个相对通用的解决方式来简化统计列表的实现,使得复用性增强,逻辑代码清...原创 2018-05-21 21:26:44 · 3988 阅读 · 0 评论 -
Selenium+PhantomJS抓取数据
Selenium在前面的一篇文章中说过是一种浏览器自动化测试的工具,可以利用浏览器的驱动去控制浏览器访问网站,从而模拟浏览行为抓取数据,这种方式可以抓到更多的数据,但是效率不是很高,而且浏览器的页面必须一直开着,比较吃资源。最近看到了一个无页面的浏览器PhantomJS,访问网站效率高,速度快,无页面全后台抓取数据,而且可以和Selenium结合使用个性化定制网站的数据抓取,下面会详细原创 2016-11-19 20:47:47 · 1272 阅读 · 0 评论 -
C#中CA加密与DES加密的混合使用
这段时间搞了个接口加密的重写,感觉信息的加密在数据传输中还是比较重要的,小小的研究了下,做点笔记,以备查阅。在信息加密的过程中,有两个最为重要的问题,安全与效率,什么是安全的关键,秘钥!所以在加密过程中使用了CA加密来保证加密的安全,所谓的CA加密就是由证书机构提供秘钥的RSA算法,秘钥长度为1024位,RSA加密算法的原理就不赘述了,可以简单的理解为解密是加密的数学逆运算,但是通过数学手段的原创 2016-10-03 11:20:42 · 2158 阅读 · 0 评论 -
Asp.net使用Table标签填充数据库数据
在网站的开发过程中,将数据以表格的形式填充至页面中时一般会选择Asp.net自带的GridView控件,但如果我们需要简介的框线表格填充数据时(如打印预览),最简单的方法就是使用html中的Table标签来自己绘制一个表格,这样的好处是简单明了,可以自由调整数据的分类,进行表盒横向与纵向的单元格合并,下面就为大家讲解一下将数据库数据填充至Table标签构成的表格的具体过程。首先在数据库中创建一原创 2016-07-30 13:22:30 · 10527 阅读 · 8 评论