自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (6)
  • 收藏
  • 关注

原创 Python 参数传递

Python 参数传递在C#中 调用函数有值传递和引用传递两种。而Python 没有栈结构,只有堆,那么Python中调用函数参数是怎么传递的呢?对此我进行了测试数字类型Demo代码:def test1(b): print(id(b)) b += b print(id(b)) print(b)a = 100print(id(a))test1(a)print(a)理解调用函数时,创建了临时变量b, 把a的引用赋值给b。因此,第一次a,b的id相同。执

2022-03-28 15:28:25 901

原创 WPF 性能优化-高刷新绘图

背景介绍笔者之前接到一个需求,需要在WPF上实时显示病人实时的生理信号(心电图等)。团队开发,需求很快做完了(Unit test 效果图如下)但是后来发布到产品上发现,资源占用比本机的要大。本地监控后,发现随着时间推移内存和Page Faults 都在增长,如果在产品上长期(几个月深知更长时间)运行可能会导致性能问题。那么就要做性能优化了。Page FaultsMSDN:The number of times that data had to be retrieved from disk for

2021-12-09 15:29:23 4105

原创 memory dump and Memory Leak

Memory Leak 定义内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费 ,导致程序运行速度减慢甚至系统崩溃等严重后果。Memory Leak 特性内存泄漏缺陷具有隐蔽性、积累性 的特征,比其他内存非法访问错误更难检测。因为内存泄漏的产生原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷 。此外,内存泄漏通常不会直接产生可观察的错误症状,而是逐渐积累,降低系统整体性能,极端的情况下可能使系统崩溃。静态变量静态存储变量是指在程序

2021-11-04 15:27:37 1307

转载 GET和POST两种基本请求方法的区别

get和post 区别的标准答案最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里,而POS

2021-05-31 10:37:43 135

转载 Windows注册表内容详解

注册表平时用到的不多,很容易忘记,需要使用的时候,又需要重新查资料,因此转载这一篇写的好的文章供自己查阅。原文地址:http://blog.sina.com.cn/s/blog_4d41e2690100q33v.html安装软件时 为什么会修改注册表?一般写入注册表的有,开机自启如安全软件,安装的版本号,有些甚至注册码,和一些系统关联的安装信息比如你卸载软件他怎么知道你装在哪里,还有文件关联比如(.txt用记事本还是用什么打开),有些必须在注册表才能实现的,有些没有必要,所以有些绿色软件还不是真真的绿

2021-05-26 16:38:20 5430 1

原创 HTTP通信 & HTTP客户端服务器的代码实现

HTTP 协议Http protocol :Request/Response based,and stateless protocol(基于请求和响应的无状态协议),http 基本TCP/IP,需要对socket通信有一些理解。HTTP通信的7步1) 建立TCP/IP连接(Http/ftp 都是TCP/ip的上层协议,必须先建立)2)Web browser 向Web Server 发送请求命令(例如:Get/sample/hello)3)Web browser 发送Http Request Hea

2021-05-25 15:03:31 618 4

转载 windows消息机制 & 句柄

作为一个非科班出生的程序员,对事件的一些理解总感觉有点欠缺,只能到浏览器级别或者应用程序级别。但是如果想深入一点这个级别是远远不够的,查了一些资料看了一些书记录我对消息机制和事件的理解,会持续更新和更正给自己参考。Windows事件驱动机制和Dos的过程驱动不同,Windows开启了事件驱动的时代,事件驱动围绕着消息的产生与处理展开,事件驱动是靠消息循环机制来实现的。也可以理解为消息是一种报告有关事件发生的通知,消息是Windows 操作系统的灵魂,掌握了消息运行机制就掌握了Windows 编程的神兵利

2021-05-20 11:11:05 784

原创 Javascript - 高阶函数 & 闭包经典案例

高阶函数定义高阶函数是对其他函数进行操作的函数,它接受函数作为参数或者将函数作为返回值输出。在后端语言中就是把委托作为参数或者返回值的函数了 ,原理类似。<script> //callback function function fn(callback) { //函数逻辑 callback && callback(); } //把function 作为返回值

2021-05-14 17:07:30 145 1

原创 Javascript - 函数分类 & this指向

JS中定义函数的三种方式通过实例来说明吧<script> //method1 function fn() { console.log('fn created '); } //method2 var fn2 = function () { console.log('fn2 created'); } //method3 v

2021-05-13 20:30:41 576 19

原创 Javascript继承

属性继承<script> function Father(uname, age) { this.uname = uname; this.age = age; } function Son(uname, age, gender) { Father.call(this, uname, age); this.gender = gender;

2021-05-10 20:53:48 74

原创 Javascript 对象原型& 原型链

Javascript 面向对象JS 中创建对象的几种方法JS 对象原型和原型对象JS构造函数创建对象的缺陷instance 上面的例子中 console.log(ldh.sing === zxy.sing);为false , 对于相同的方法,存储的地址不同 构造函数存在严重的内存浪费,如果想要所有的对象使用同一个函数需要使用到prototype. JS规定,每个构造函数都有一个prototype属性,指向另一个对象。我们可以把那些不变的方法,直接定义在prototype对象上 这样所有的对

2021-05-09 17:07:02 199 2

转载 JavaScript中捕获/阻止捕获、冒泡/阻止冒泡

事件冒泡即事件开始由最具体的元素接收,然后逐级向上传播到较为不具体的节点(文档)。 下面举一个简单的例子:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>bubble</title> <style> button{ background: red;

2021-04-19 16:55:25 679

原创 Javascript 事件&冒泡机制(下)

注册事件的方式-事件处理程序js事件处理程序按照种类来划分,大致可分为五大类:HTML事件处理程序,DOM0级事件处理程序,DOM2级事件处理程序,IE事件处理程序和跨浏览器事件处理程序。尤其是DOM0,DOM2和IE事件处理程序,利用它们之间的差异化有效地解决浏览器差异问题,从而实现跨浏览器的兼容性问题。html 事件处理<body> <div class="father"> <input type="button" onclick="han

2021-04-19 15:17:46 148 1

原创 Javascript 事件&冒泡机制(上)

Javascript 事件JS事件流三个阶段的流程图捕获阶段捕获阶段处于事件流的第一阶段,该阶段的主要作用是捕获截取事件。在DOM中,该阶段始于Document,结束于body(当然,在现在的很多高版本浏览器中,该过程结束于目标元素,只不过不执行目标元素而已,这也体现了目标元素具有双重范围)。目标阶段目标阶段处于事件流的第二阶段,该阶段的主要作用是执行绑定事件。一般地,该阶段具有双重范围,即捕获阶段的结束,冒泡阶段的开始。冒泡阶段冒泡阶段处于事件流的第三阶段,该阶段的主要作用是将目标元素

2021-04-18 20:21:53 478 5

原创 H5自定义属性经典实例&源码

概述在开发中,有时需要在标签上添加一些自定义属性用来存储数据或状态。自定义属性的操作很简单,但是什么场景下需要使用就需要练习和理解了,这里准备了典型案例以及源码,帮助更好的理解和应用。自定义属性操作回顾1.getAttribute(“自定义属性的名字”) 获取自定义属性的值2.setAttribute(“属性的名字”,“属性的值”); 设置自定义属性的值3.removeAttribute(“属性的名字”) 移除自定义属性自定义属性的应用场景如上图中的需求,选择不同的标签页,显示的内容

2021-04-18 14:25:28 400 3

转载 CSS中border属性为0与none的区别(display:none&Visibility:hidden)

概论在我们设置CSS的时候,对标签元素不设置边框属性或者取消边框属性一般设置为:border:none;或border:0;两种方法均可。border:none;与border:0;的区别体现有两点:一是理论上的性能差异;二是浏览器兼容性的差异。1.性能差异【border:0;】把border设为“0”像素虽然在页面上看不见,但按border默认值理解,浏览器依然对border-width/border-color进行了渲染,即已经占用了内存值。【border:none;】把border设为“no

2021-04-17 15:54:46 224

原创 CSS reset初始化&源码实例

CSSReset的目的为什么给页面设定样式的时候要进行CSS初始化?主要是市场上的浏览器差异性导致的,不同浏览器对一些标签的默认样式不同,导致同一页面用不同浏览器打开看到的效果有差异,为了消除这种影响,需要清除浏览器默认样式,因此每个网页都需要CSS初始化。比较好的CSS Reset代码可以去优秀网站查看源码获得,这里主要为了备份。CSS初始化源码模板/*清除所有标签的默认内外边距*/* { margin: 0; padding: 0

2021-04-10 13:56:01 288

原创 WPF Dispatcher管理线程工作队列

Dispatcher 作用不管是WinForm应用程序还是WPF应用程序,实际上都是一个进程,一个进程可以包含多个线程,其中有一个是主线程,其余的是子线程。在WPF或WinForm应用程序中,主线程负责接收输入、处理事件、绘制屏幕等工作,为了使主线程及时响应,防止假死,在开发过程中对一些耗时的操作、消耗资源比较多的操作,都会去创建一个或多个子线程去完成操作,比如大数据量的循环操作、后台下载。由于UI界面是主线程创建的,所以子线程不能直接更新由主线程维护的UI界面。Dispatcher的作用是用于管理

2021-04-02 19:40:49 520

原创 状态机深入理解&简单代码实现

目录什么是状态机?状态机的定义状态机的分类状态机的应用状态机理解&实例设计思路注意事项代码实现实现最简单的on/off什么是状态机?状态机在我们的程序设计中非常重要,查阅了一些资料写了这篇文章来梳理和复习。状态机的定义关于状态机的一个极度确切的描述是:它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。每个事件都在属于“当前”节点的转移函数的控制范围内,其中函数的范围是节点的一个子集

2021-04-02 11:24:24 6064

原创 VS Code使用技巧整理

VS Code 使用技巧列操作向VS中一样选中列操作方式:Shift+Alt+鼠标左键将自动高亮的变量,字符一次性替换双击变量,右键‘更改所有匹配项’。或者双击变量,Ctrl+F2删除当前字符串中当前光标之后的内容Ctrl + Delete跳转到定F12,这和VS中相同列出所有定义Shift+F12格式调整 代码行缩进Ctrl+[, Ctrl+] 折叠打开代码块 Ctrl+Shift+[, Ctrl+Shift+]Ctrl+C Ctrl+V如果不选中,默认复制或剪切一整

2021-02-27 11:35:42 753

原创 angular module lazy load

Lazy-Loading ModulesIt turns out, you can do more with modules, than just organizing your components. It is also possible to lazy-load modules. So what does that mean?Angular appears to be quite heavy in download size. Depending on your use case, that ca

2021-01-31 17:55:17 144

原创 浏览器多进程&渲染进程原理

浏览器中进程进程列表1.Browser进程:浏览器主进程,只有一个,负责协调、主控。负责浏览器界面显示,与用户交互。如前进,后退等。负责各个页面的管理,创建和销毁其他进程。将Renderer进程得到的内存中的Bitmap,绘制到用户界面上。网络资源的管理,下载等。当访问一个新的网站时 ,主进程会启动一个新的渲染进程。2.GPU进程用于硬件加速图形绘制3.渲染进程(也就是我们常说的浏览器内核Webkit等)内部是多线程的每个页面一个渲染进程互不影响(Chrome中

2021-01-25 14:52:21 774

原创 angular 管道使用实例及自定义管道

angular pipeangular中的管道(pipe)是用来数据进行处理,如大小写转换、数值和日期格式化等table of Contentsangular pipepipe instance1. 大小写2. date3. 位数4.json5. slice6. 管道链自定义管道pipe 定义pipe 使用pipe instance1. 大小写<p>{{str | uppercase}}</p>//转换成大写<p>{{str | lowercase}}<

2021-01-20 11:18:56 924

转载 WPF 3D开发实例和hedix应用

这里写目录标题3D开发基础知识坐标系 Coodinate System3D的世界都是三角形的王国WPF 3D的关键元素(Elements)相机(Camera)灯光3D模型材质(Material)WPF 中的3D变换动画常用辅助类实例3D开发基础知识坐标系 Coodinate SystemWPF中二维图形的坐标系将原点定位在呈现区域(通常是屏幕)的左上角。 在二维系统中,x 轴上的正值朝右,y 轴上的正值朝下。而在三维坐标系中,原点位于呈现区域的中心,x 轴上的正值朝右,但是 y 轴上的正值朝上,z 轴

2020-12-31 09:29:18 1875 1

转载 Unity 框架-依赖注入

目录二级目录三级目录Unity 定义Unity 使用API代码举例normal case单例模式注入注册时附带key注册已经存在的实例使用配置文件来实现关系映射Unity 在xml中配置的结构图:如何读取配置 并加载通过 Injection API 指定依赖嵌套式容器在MVC 中使用Unity注入Controller二级目录三级目录Unity 定义Unity是一个轻量级的可扩展的依赖注入容器,支持构造函数,属性和方法调用注入。Unity可以处理那些从事基于组件的软件工程的开发人员所面对的问题。构建一

2020-11-10 09:10:05 1125

转载 史上最全的StarUML使用教程

StarUML是一款很全面,很好用的UML画图工具。相比PlantUML那种使用代码画图方式,StarUML的拖拽式更简单易用。StarUML支持类图、时序图、用例图等十几种图形模式,备忘,请查看转载文章。

2020-09-24 11:18:37 2241

转载 HTTPS 以及 SSL & TLS 原理

目录SSL1.SSL overviewSSL/TLS协议的主要作用:2.密钥协商过程——TLS握手2.1 客户端发出请求(ClientHello)2.2 服务器回应(SeverHello)2.3 客户端回应(Certificate Verify)2.4 服务器的最后回应(Server Finish)3.应用数据传输4.总结SSL1.SSL overviewSSL:SSL(Secure Socket Layer,安全套接字层)是一个介于HTTP协议与TCP之间的一个可选层,为Netscape所研发,用以

2020-09-09 16:13:44 249

原创 WPF Command使用范围和写法

##为什么要使用Command?主要是在MVVM中 实现业务与UI分离,所以不想在Click事件里写东西,换成了一个CommandFor example:Click 方式一个Button,如下<WrapPanel> <Button Content="Button" Click="Button_Click" /></WrapPanel>private void Button_Click(object sender, RoutedEventArgs e)

2020-08-18 13:52:56 848

转载 C# 申请应用程序以管理员身份运行

添加manifest配置文件项目右键添加新建项,如下图所示:右键新建项-应用程序清单文件修改manifestUAC权限控制需要修改的部分: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <!-- UAC 清单选项

2020-08-13 10:12:43 552

转载 MEF-(Managed Extensibility Framework)托管可扩展框架

目录MEF简介:实例实例1例子2总结一下MEF框架的好处:Demo 下载MEF简介:今天学习了下MEF框架,MEF,全称Managed Extensibility Framework(托管可扩展框架)。MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明:Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库。 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置。 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆

2020-07-30 18:04:43 1167 1

原创 单元测试和单元测试框架(NUnit Test)

单元测试的意义验证代码是与设计及时发现Bug测试驱动开发TDD(test drive develop)提高对项目的信心单元测试的定义最简单的说法,单元测试就是以方法为单位的测试新建单元测试的步骤​​​​​​​​单元测试本身并不难,只是需要构造方法的运行环境Nunit 框架以及使用步骤配置Nunit点击vs2017菜单栏中的“工具”—》选中“拓展和更新”点击选项“联机”—》在右侧的搜索栏输入“Nunit”请分别选中NUnit 3 Test Adapter,NUnit

2020-07-29 10:21:53 457

转载 图像处理

功能需求:把一张图片(png bmp jpeg bmp gif)转换为byte数组存放到数据库把从数据库读取的byte数组转换为Image对象,赋值给相应的控件显示从图片byte数组得到对应图片的格式,生成一张图片保存到磁盘上添加//Get an image from fileImage image = Image.FromFile("D:\\test.jpg");Bitmap bitmap = new Bitmap("D:\\test.jpg");以下三个函数分别实现了上述三个需求:

2020-07-16 20:13:39 234

转载 Windows CMD findstr命令

findstr命令一、作用二、命令语法三、参数解释四、例子一、作用findstr是Window系统自带的命令,用于查找某路径下指定的一个或多个文件中包含某些特定字符串的行,并将该行完整的信息打印出来,或者打印查询字符串所在的文件名。其用途和用法类似Linux下的grep命令。findstr命令在MS-DOS下使用。二、命令语法findstr[/b] [/e][/l][/r][/s][/i][/x][/v][/n][/m][/o][/p][/offline][/g:file][/f:file][/c

2020-07-10 17:24:05 2168

原创 相对路径、绝对路径互相转换

路径(path)的表示方法:unix和linux中为/(正斜杠),windows中为\(反斜杠)。相对路径两者都可以1).\system32\.exe 一个 .表示当前目录(相对路径以当前在编辑的文档为出发点)2)..\表示父目录3)../../表示根目录...

2020-07-06 13:30:06 2744

转载 多线程学习-lock,Monitor,Mutex的异同

lock和Monitor的区别一、lock的底层本身是Monitor来实现的,所以Monitor可以实现lock的所有功能。二、Monitor有TryEnter的功能,可以防止出现死锁的问题,lock没有。Mutex和其他两者的区别个人测试三个都是在限制线程之外的互斥,线程之内,都不限制,同一个线程如果被lock两次。是不会出现死锁的。所以Mutex本身可以实现lock和Monitor所有的操作。至少从功能上讲是这样的。但是Mutex是内核级别的,消耗较大的资源,不适合频繁的操作..

2020-06-16 14:23:50 262

原创 WPF 路由事件和Javascript 事件

1、由WPF的性质决定,<XML>冒泡和隧道事件是成对出现的,隧道路由事件是冒泡路由事件前面+preview2、冒泡向上传递,隧道向下传递。ishandler 属性设置是否再次传递。...

2020-06-14 19:43:33 257

转载 性能优化之Lazy(懒加载)-实现延迟初始化

在.NET4.0中,可以使用Lazy<T> 来实现对象的延迟初始化,从而优化系统的性能。延迟初始化就是将对象的初始化延迟到第一次使用该对象时。延迟初始化是我们在写程序时经常会遇到的情形,例如创建某一对象时需要花费很大的开销,而这一对象在系统的运行过程中不一定会用到,这时就可以使用延迟初始化,在第一次使用该对象时再对其进行初始化,如果没有用到则不需要进行初始化,这样的话,使用延迟初始化就提高程序的效率,从而使程序占用更少的内存。  下面我们来看代码,新建一个控制台程序,首先创建一个Studen

2020-06-11 20:48:16 613

原创 Socket 客户端 服务端详解

异步侦听:客户端:

2020-06-04 09:41:16 2479

原创 JQuery详解:选择器过滤器和理解

JQuery是最流行的JavaScript 库之一,应用极为广泛,而JQuery的学习的关键在于控制器。因此,笔者对JQuery的主流选择器进行了分析和总结。JQuery如此好用的两大特性:1)链式编程:$('#p').text('Test').html('&lt;b&gt;Html&lt;/b&gt;').链式编程的原因是JQuery的大多数方法都有Return this,即把当前选择器...

2020-05-20 09:35:38 242

原创 构造函数使用要点以及重要用法

构造函数:C#所有类型除了Object都有父类,如果没写再编译时 ,编译器会默认继承ObjectBase关键字子类构造函数中,先调用父类的构造函数,只要先传递参数this关键字:先调用下面那个构造函数base this...

2020-05-18 14:20:19 254

SocketServer.rar

Socket server :基于多线程和MVVM模式的socket server,运行稳定,通用性高,可以直接使用,可以和我上传的socket client一起调试运行,查看效果

2020-06-04

SocketClient.rar

Socket Client :基于多线程和MVVM模式的socket client,运行稳定,通用性高,可以直接使用,可以和我上传的socket server一起调试运行,查看效果

2020-06-04

Log4Net 各种情况的代码实现+Log4Net.dll+文档详解.rar

Log4Net 框架的各种实例场景下的代码实现,可以直接调试,LoganNet.dll(dll放在了Lib文件夹下)以及详细的解释文档

2020-05-20

数据结构Demo.zip

基础数据结构的C#实现:线性表 栈 队列 链表 用C#代码来实现 加深理解

2020-04-23

WPF经典编程实例-课程大纲.docx

WPF重要的特性 以及用法汇总 学习中的个人总结!!

2020-04-09

spring.Net说明和所需Dll.rar

spring.Net 项目所需的dll和说明文档:按照说明文档可以搭建完整的spring.Net 项目,基础需要理解IOC和DC。如需讲解视频可以联系作者,dotnet 5.0在2020年将要发布,dotnet技术必将再次焕发新的生机,请打好基础

2019-12-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除