- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 UML 类图关系及符号表达
UML 类图关系及符号表达UML 类图中有以下几种常见的关系,依赖(Dependency)、关联(Association)、聚合(Aggregation)、组合(Composition)、泛化(Generalization)和实现(Realization),下面对这几种关系及其表达方式做一个极简的介绍。依赖(Dependency)表示一个类对不在其实例作用域内的另一个类或对象的引用,通常有以...
2018-11-27 21:39:55 4158
原创 Windows 公共组件的完整性
Windows 公共组件的完整性今天和大家简单讨论一下 Windows 公共组件的完整性。所谓公共组件,指的是独立的、被其它应用程序引用的 PE 文件(程序集,DLL 或 EXE);所谓完整性,即除了实现功能方面的需求外,还需考虑状态监控、文件属性设置等,以提高组件的易维护性、部署的安全性等。具体的来讲,Windows 公共组件应该在完整性方面考虑如下几个方面:完善的日志系统版本信息和分发...
2018-11-27 21:21:50 4817 2
原创 Express 菜鸟笔记
Express 菜鸟笔记基于 Node.js 平台,快速、开放、极简的 Web 开发框架。使用 Express 可以快速地搭建一个完整功能的网站。Express 框架核心特性:可以设置中间件来响应 HTTP 请求定义了路由表用于执行不同的 HTTP 请求动作可以通过向模板传递参数来动态渲染 HTML 页面安装mkdir myappcd myappnpm initnpm ...
2018-11-27 21:20:36 1008
原创 曲线(笔迹)简化算法
曲线(笔迹)简化算法场景是这样的,在一端进行书写,另一端还原书写的笔迹。要实现笔迹的还原,就得记录笔迹经过的轨迹点,当然这些都是可以在书写过程获取到的。但是问题在于,笔迹中的轨迹点比较多,数据量比较大,不便于传输。因此,我们需要通过某种算法,剔除某些不重要的点,从而减少数据量。下面的代码是在 C#/WPF 框架下编写的,引用了 System.Windows.Media 命名空间中的一些类型。...
2018-11-16 08:29:41 4979 1
原创 Node.js 日志系统 log4js 介绍
Node.js 之 log4js 介绍关于 log4js ,此处不做过多介绍,你如果有关注过日志系统,那就应该听说过类似 log4cpp、log4net、log4j、log4p 等名词。是的,log4xxx 是 Apache 提供的开源日志框架,它可以将日志信息按指定的格式、分级不同的级别输出到多种介质(控制台、文件、数据库等),并且还支持日志文件的自动备份等功能。不同的编程语言有不同的 log...
2018-11-15 00:40:39 4163
转载 C# 8.0 新特性
C# 8.0 新特性作者:Rwinghttps://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0原文:https://blogs.msdn.microsoft.com/dotnet/2018/11/12/building-c-8-0译注:原文主标题如此,但内容大部分为新特性介绍,所以意译标题为 “C# 8.0 新特性...
2018-11-14 13:42:17 1060 2
原创 .NET 将 .config 文件嵌入到程序集
.NET 将 .config 文件嵌入到程序集最近,团队中的一位同事实现了一个小程序,供主程序调用。为了小程序分发的方便性,使用了 Costura.Fody 将其依赖的 dll 都嵌入到了 exe 中。但是,其中的 log4net.dll 又需要一个 *.config 文件才能正常工作,而 Costura.Fody 又不支持此类文件的嵌入。我们先来复现一下问题场景,关于 Costura.Fod...
2018-11-12 07:06:25 3426 3
原创 解决 http_404_webOC 下载提示
解决 http_404_webOC 下载提示最近,某个项目中使用了 System.Windows.Forms.WebBrowser 控件,这是一个 WinFomrs 上的 IE 浏览器控件。在某些计算机上通过该控件访问一个不存在的网址时,会弹出一个 http_404_webOC 下载提示。搜索了一下资料,如果要完全避免此提示的弹出,则需要修改一些注册表项。但是,作为一个应用程序,去修改计算机...
2018-11-12 07:03:13 7499 2
原创 .NET 合并程序集(将 dll 合并到 exe 中)
.NET 合并程序集(将 dll 合并到 exe 中)我们的应用程序通常都是由多个程序集组成,例如一个 exe 程序依赖于多个 dll 程序集。在某些情况下,我们希望程序的分发能够简单,单独一个 exe 就能正常运行。这种情况下,就需要将 dll 依赖项合并到 exe 主程序中。本文将给大家介绍一款能将 .NET 程序集进行合并的工具 Costura.Fody ,它是一个 NuGet 包,能在...
2018-11-11 19:27:19 5961 4
转载 log4net 详解
非常完善的 log4net 详细说明作者:未知(搜了很久,未能找到原创者)https://www.cnblogs.com/lzrabbit/archive/2012/03/23/2413180.html1、概述log4net 是 .Net 下一个非常优秀的开源日志记录组件。log4net 记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。本文主要是介绍如...
2018-11-11 17:15:14 992
原创 Git 修改历史提交中的用户名和邮箱
Git 修改历史提交中的用户名和邮箱最近几次贡献开源代码总是遇到一个问题,我将 GitHub 上的项目 clone 到本地,完成编码后直接 commit(提交) 。提交后才发现没有使用 git config 来为项目配置私人用户名和邮箱,因此提交中携带的是全局配置中的公司账户信息。为了避免回滚代码,只有寻找办法来修订提交中的信息。本文将要介绍的便是这类修改历史提交中的用户名和邮箱的方法,这些方法...
2018-11-05 12:32:39 17746 9
原创 C# Newtonsoft.Json 自定义
C# Newtonsoft.Json 自定义当你看到这篇文章时,你应该或多或少地了解 Newtonsoft.Json,它是一套流行的 .NET 高性能 JSON 框架,能够轻松地实现 .NET 对象和 JSON 字符串间的相互转换。本文将首先简介 Newtonsoft.Json 的基本使用,然后介绍如何实现序列化的自定义,即自定义 JsonConverter。基础使用先定义一个普通的类型,然...
2018-11-05 12:31:32 3862 1
原创 C# DateTIme 转时间戳
C# DateTIme 转时间戳时间戳是指格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒(北京时间 1970 年 01 月 01 日 08 时 00 分00 秒)起至现在的总秒数。在 C# 中将 DateTime 转换为时间戳时,需要注意如下两点:时区要统一,最好先使用 ToLocalTime() 或 ToUniversalTime() 方法来统一时区。在 U...
2018-11-05 12:29:01 9729 2
原创 托管程序的启动过程(.NET CLR 寄宿)
托管程序的启动过程(.NET CLR 寄宿)大家都知道 C# 等托管语言编写的代码都会被编译成托管程序集(*.exe 或 *.dll),这些托管程序集最终都会托管给 CLR(公共语言运行时)来执行。那么,托管程序的启动过程是怎样的?CLR 又是如何寄宿到宿主程序中的?为了回答以上问题,本文将首先介绍托管程序集的生成过程;然后介绍托管程序的启动过程,以及该过程中 CLR 的加载流程。一个托管应...
2018-10-29 13:22:59 1164
原创 .NET AppDomain
.NET AppDomain操作系统启动托管程序后,会调用 CLR 来托管该程序,CLR 在初始化时会默认创建一个 AppDomain 来运行托管代码。AppDomain 是为了隔离而设计的,它将程序集限定在某个域中执行,而不影响其它域的状态,它可以极大地提高托管程序的稳定性:支持动态卸载程序集:在插件架构中,不必等到进程结束时才释放,避免不必要的内存占用实现了程序集隔离:将一些容易引起...
2018-10-29 13:22:06 870
原创 WPF 后台创建 DateTemplate
WPF 后台创建 DateTemplate在 WPF 编程中,我们通常都是在前台 XAML 中通过标记语言来编写 DataTemplate 的。曾今有小伙伴在 Stack Overflow 上提问,如何在后台通过 C# 代码来创建 DataTemplate ?我搜索了一番,找到了 FrameworkElementFactory 类,它便是生成 DataTemplate 的核心功臣。先看一下 X...
2018-10-29 13:18:23 3129 3
转载 关于 Http 协议,你必须要知道的
关于Http协议,你必须要知道的作者:浪里行舟https://segmentfault.com/a/1190000016751071引言HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。HTTP 是基于 TCP/IP 协议通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。...
2018-10-28 11:57:39 455
原创 如何搭建 GitBook
如何搭建 GitBook程序员都喜欢使用 Markdown 来撰写文档,无论是开发用的技术文档,还是自己的学习总结文档,都离不开 Markdown ,今天给大家介绍一款高效管理、发布 Markdown 文档的工具 - GitBook 。关于 GitBook首先来看一下 官方 的定义:Modern documentation format and toolchain using Git a...
2018-10-22 07:39:42 9125
原创 C# 电子白板软件开发
C# 电子白板软件开发给大家介绍两个 C# 电子白板软件开源项目,其中一个是基于 WinForm 平台开发的,另一个是基于 WPF 平台开发的。这两个项目实现的功能类似,最初都是由 Alex Farber 发布在 CodeProject 开源平台之上的,其中 WinForm 版本发布于 2005 年,WPF 版本发布于 2008 年。遗憾的是这两个原始项目都已经从 CodeProject 移除了...
2018-10-22 07:37:32 5748 18
原创 初识 Docker
初识 DockerDocker 是近几年比较火的技术,每个技术栈的程序员对应该对其有所了解,本文是我学习 Docker 的一些笔记或总结。About Dcoker首先,通过官网的两句 Slogan 来感受一下:Docker is the world’s leading software containerization platformBuild, Ship and Run any A...
2018-10-22 07:35:43 537
原创 如何为你的模块添加日志
如何为你的模块添加日志日志对 应用程序 来说至关重要,当程序在 测试部 或 用户端 发生异常时,日志能协助 开发人员 快速地定位问题。对于刚刚上手团队项目的新人来说,可能会有许多疑惑。什么情况下需要添加日志?如何添加日志?主要内容什么情况下需要添加日志流程性的代码涉及到数据传输的代码捕获到异常或错误的代码如何添加日志日志文件存哪里本地存储上报后台日志文件的格式...
2018-10-15 02:08:09 2631
原创 WPF 获取系统 DPI 的多种方法
WPF 获取系统 DPI 的多种方法由于 WPF 的尺寸单位和系统的 DPI 相关,我们有时需要获取 DPI 值来进行一些界面布局的调整,本文汇总了一些 WPF 程序中获取系统 DPI 的方法。首先,定义如下结构体来分别保存 X 方向 和 Y 方向的分量值,通常情况下两个值是一致的。public struct Dpi{ public double X { get; set; }...
2018-10-15 01:08:44 5440
原创 WPF 高 DPI 下的 SizeToContent
WPF 高 DPI 下的 SizeToContent这两天解决了一个 WPF 界面方面的问题:某个窗体运行在 1366*768 分辨率的屏幕上,并且窗口设置了 SizeToContent="WidthAndHeight" 属性,即窗体的尺寸将随内容而变化。当系统的 DPI 为默认的 96 时,一切呈现正常;但是当设置系统的 DPI 为 144 时,界面右侧被截断。既然窗体的尺寸随内容而变化,DP...
2018-10-14 23:53:25 4429 4
原创 WPF 精确计算三维元素的投影范围
WPF 精确计算三维元素的投影范围在 WPF 程序中,二维元素可以使用 VisualTreeHelper.GetDescendantBounds(Visual reference) 来获取其内容的范围,三维元素可以使用 GetContentBounds(Visual3D reference) 来获取其在二维平面的投影范围。然而,当三维元素中的模型非正向(存在旋转或偏移)时,上面方法获取的范围并不...
2018-10-07 15:55:00 821
原创 一种简单的贝塞尔拟合算法
C# 一种简单的贝塞尔拟合算法前两天实现了一项功能,在一端进行书写,在另一端还原笔迹。由于两端的开发平台和绘图引擎不一致,书写端的笔迹很平滑,而另一端还原出来的笔迹为折线。为了使两端保持一致的效果,需要在还原端对笔迹进行贝塞尔拟合。本文将首先介绍贝塞尔曲线的基本原理及公式推导,然后提出一种简单的二次贝塞尔近似拟合算法,并用 C# 编程实现之。贝塞尔曲线相信大家都或多或少了解过贝塞尔曲线,...
2018-10-06 10:26:56 8919 7
原创 WPF UnhandledException
WPF UnhandledException在 WPF 程序中,通常可以通过 Application.DispatcherUnhandledException 或 AppDomain.UnhandledException 事件来处理全局 未处理异常,其中前者是由 WPF 框架提供的,后者是由 .NET Framework 提供的,后者能够捕获更多的未处理异常。对于 Task 中的未处理异常,这两...
2018-09-30 19:54:32 3030 3
原创 WPF 动画进阶编程
WPF动画进阶编程前端时间在实现某项业务需求时,涉及到元素状态的控制,较为深入地使用了 WPF Animation(动画)。原本对动画有所了解,但是本次前前后后还遇到不少问题,看似简简单单的 Animation/Storyboard,其中竟有如此多的猫腻。今天把动画相关的问题分享出来,扒一扒动画的原理,与大家一起探讨学习。主要内容动画的基本用法IAnimatable.BeginAnim...
2018-09-25 07:55:34 892
原创 WPF 巧用动画反转
WPF巧用动画反转在 WPF 程序中,假设有这么一个需求:界面上有个矩形,点击某个按钮后,矩形沿某条 复杂的路径 移动,并停在路径的终点处;此时点击另一个按钮,矩形沿刚才的路径反向移动,最终停在路径的起始位置。假设路径非常复杂,要单独构建如上的两个动画,需要很大的工作量。那么,能否仅构建一个动画,使其能暂停到一半的地方,并且可以反向回到初始状态呢?其实现方案为,设置 Storyboard 的 ...
2018-09-25 00:51:11 1593
原创 WPF Popup 中 IME 不跟随 TextBox
WPF Popup中IME不跟随TextBox在 WPF 程序中,如果一个 TextBox 被放置在 Popup 中,当在这个 TextBox 中进行输入时,输入法(IME) 的备选框不会显示在该 TextBox 旁边,而是显示在 Windows 右下角,如下动图所示。如果 TextBox 是直接放置在 Window(或其子控件)之上的,IME 会呈跟随 TextBox 呈现。此乃 W...
2018-09-24 19:17:20 1524 3
原创 C# 增删查防火墙例外
C#增删查防火墙例外通过 netsh advfirewall firewall 命令来对防火墙例外进行增、删、查。/// <summary>/// Provide methods to add\remove\check filewall exception./// </summary&
2018-09-17 08:55:59 2317
原创 C# 获取计算机 MAC 的方法
C#获取计算机MAC的方法软件在上报日志时,通常会带上一些硬件信息,以便于区分设备或用户,计算机物理地址(MAC)便是首当其冲的选择。本文将介绍 .NET/C# 获取计算 MAC 的方法:NetworkInterfaceWMI (Windows Management Instrumentation)ipconfig/allNetworkInterface使用 Syste...
2018-09-17 01:19:01 3662
原创 C# 后台调用 CMD 执行命令
C#后台调用CMD执行命令有时会在程序中调用系统的命令行工具 cmd.exe 来静默执行一些系统命令,然后获取返回值。本文将展示 .NET/C# 静默运行 cmd 并执行命令的方法,包括 有返回值 和 无返回值 两种。无返回值public static void Execute(string command){ var processInfo = new Proces...
2018-09-17 01:17:34 4035
原创 如何将 WPF 控件包装为 ActiveX 组件
如何将 WPF 控件包装为 ActiveX 组件前面的一篇文章中介绍了 如何将WPF控件嵌入Win32程序中,其要求 Win32 程序支持 C++/CLR(托管代码)。然而在我们实际工程中,要使现有的 Win32/MFC 项目支持 CLR,可能涉及到较大的改动。那么,能不能在 纯非托管程序 中嵌入 WPF 控件呢?答案当然是肯定的,那就是 COM/ActiveX 组件。 COM是 Co...
2018-09-10 20:12:42 1380
原创 Python 'gbk' codec can't decode byte 0x80
Python ‘gbk’ codec can’t decode byte 0x80前段时间,运行得好好的 Python 代码突然抛出如下错误:Traceback (most recent call last): File "C:\***\tools.py", line 367, in __get_key_from_sym line = file.readline() F...
2018-09-10 13:07:36 31634 3
原创 C# GUI 程序显示控制台
C# GUI 程序显示控制台我们在调试程序时,通常会将日志输出到 控制台,以监控其运行状态是否符合预期。对于一个 C# GUI 程序(如 WinForms 或 WPF)而言,如果在 IDE 中进行调试运行,Console.WriteLine() 方法会将内容输出到 IDE 的控制台中。然而在同一时间内,IDE 只能呈现单个程序的控制台输出,如果涉及到多个 GUI 程序的联合调试,应该如何将其它...
2018-09-10 00:24:29 3182 1
原创 如何将 WPF 控件嵌入 Win32 程序中
如何将WPF控件嵌入Win32程序中如标题所述,本文将介绍如何将 WPF控件 嵌入到 Win32程序 的窗体中,其中的 WPF控件 使用 C# 开发,Win32程序 使用 C++/CLI 开发。在 Win32 窗口上托管 WPF 控件的关键是 System::Windows::Interop::HwndSource 类,这个类将 WPF 内容封装在 Win32 窗口中,允许它作为子窗口合并到用...
2018-06-26 20:07:51 1543
原创 WinDbg DUMP 调试
WinDbg DUMP调试设置符号路径可以在命令行中通过 .sympath 命令来设置符号路径,也可通过 菜单项 来设置。 符号路径有两种,一是本地路径,例如:D:\MySymbols;二是远程服务器路径,例如 SRV*CachePath(本地缓存)*RomotePath(远程服务器)。 多个符号路径通过 “;” 连接。命令行.sympath D:\MySymb...
2018-04-23 12:17:03 562
原创 DUMP 文件
DUMP 文件什么是 DUMP 文件Dump 文件,也叫转储文件,是进程的内存镜像通过转换存储而成的 .dmp 格式的文件。DUMP 文件根据存储时的不同选项,会生成不同大小的文件,其中记录的信息也有所不同。DUMP 文件必须用专用工具软件才能查看,比如使用 Visual Studio、WinDbg 等对其进行调试。Windows 下 DUMP 文件分两大类,内核模式 Kernel...
2018-04-22 23:39:02 2883
原创 PDB 文件
PDB 文件什么是 PDB 文件PDB (Program Data Base) 即程序的基本数据,是 VS 编译链接时生成的文件,每个程序集(EXE 或 DLL)都有一个与之对应的 PDB 文件。DPB 文件主要存储了 VS 调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、对应的行号等等。因为存储的是调试信息,所以一般情况下 PDB 文件是在 Debug 模式下才会生成。...
2018-04-22 23:02:01 10819
原创 Python 入口函数(菜鸟入门)
Python入口函数(菜鸟入门)最近在组内研究专项项目,其中的一个现有工具是用 Python 开发的,我的目标是对这款工具的流程进行优化。虽然可以找到对应的开发者了解现有流程,然后结合我的研究提出优化方案,最后让 TA 去编码实现。但是程序员心理使然,什么东西都想自己琢磨明白,于是开启了摸索历程。 上网搜索资料,下载了 PyCharm 开发工具,进行了一些环境配置,于是乎就开工了。由...
2018-04-22 22:41:55 32413 14
C# 电子白板软件源码(WinForm & WPF)
2018-10-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人