- 博客(29)
- 资源 (9)
- 收藏
- 关注
原创 Python - Decorator(装饰器) - Cell和Free Variable
谈到装饰器(decorator),离不开闭包(closure)!谈到闭包(closure),离不开Cell和Free Variable!只要理解了Cell和Free Variable,那才算是真正地理解了闭包和装饰器!什么是Cell和Free Variable我们先来看Free Variable。我们知道Python的变量(variable)都是在某个作用域中的。这4个作用域你一定了解,local, nonlocal, global(module) 和 built-in。某个变量名的查找
2021-07-08 15:38:58
449
原创 Python - Decorator(装饰器) - 带参数的
我们通过以示例来看看带参数的装饰器到底怎么回事。from time import perf_counterfrom functools import wrapsdef repeated(times): def outer(fn): @wraps(fn) def inner(*args, **kwargs): for i in range(0, times): result = fn(*args, *
2021-07-08 14:32:36
539
原创 Python - 装饰器(Decorator) - 可调用的(Callable)
其实这个是个大家都已比较熟悉的话题,Callable,也就是可调用的。但当接触到装饰器(decorator)的时候,表现形式复杂些时,我发现还是有必要理清一下的。什么是Callable任何可以使用括号操作符的目标都是可调用的。如果我们在Python使用某个目标具有以下特点,我们就说这个目标是可调用的。目标名在Python中目标名往往都是绑定某个目标的内存地址。我们就是通过目标名最终引用到目标本身。括号当标签名后面跟着括号时,那就是说有代码被执行了输入和输出输入:也就实参,在
2021-07-08 12:53:05
593
原创 C#通过树莓派(3B+)蓝牙来扫描设备
最近用C#写个一个通过树莓派(RaspberryPi)3B+的蓝牙模块来扫描那些电子设备。当时实现的时候也是花了些时间。现在把代码整理一下,给需要的人参考一下!NuGet Packages首先从NuGet上装几个packagelog4net -用来记录日志,实在太好用了! SSH.NET -用这个来实现通过SSH和树莓派进行通讯 System.ValueTuple -这个是...
2020-03-13 10:47:54
885
原创 【编程辅助工具】RegexBuddy
正则表达式用来分析字符串实在太强大了,但正则表达式的规则实在无法保证一直不会记错。RegexBuddy就会用一种可视化的方式用来帮助你构建正确的正则表达式。肯定也有其他类似的软件,但这个一直是自己使用的。...
2020-01-19 14:05:41
971
转载 痛恨LabVIEW!
以下在国外网站看到的~~~~本人也比较同意LabVIEW只合适比较简单的程序,如果程序稍微复杂一些,你会发现软件工程中好多好的理念和实践都是不可以用到LabVIEW中。不能理解为什么好多公司还在用LabVIEW开发?why I hate, despise, detest, and loatheLabViewInability to write descriptive comme...
2019-09-10 16:33:16
2728
1
原创 【C# AT Lib】4:AT Response
AT Response相对来说比较简单,就是包含一些数据,没有包含什么行为(也就是方法)。 public class AtResponse { public AtCommand AtCommand { get; set; } public string RawResponse { get; set; } public bool...
2019-04-17 15:43:23
374
原创 【C# AT Lib】3:AT Command
我们在设计AT Command,需要把期望AT Response是什么样的信息放进去,这样在底层进行AT通讯的时候就可以自动加入Retry功能。定义ResultCode枚举变量 public enum ResultCode { OK, ERROR }定义ResponseExpectation类告知AT Respon...
2019-04-17 15:35:51
449
原创 【C# AT Lib】2:Lib设计的一些考虑
我们先来谈一谈设计AT Lib的一些考虑。Sync和Async毕竟和串口通讯这样的硬件打交道,我们需要支持异步调用吗?我觉得一般在软件的高层会去实现异步调用(一般通过开启一个单独线程),所以AT Lib在设计的时候只支持同步调用。Response Timeout发送AT Command后,等待Modem的Response肯定需要超时管理。例如Modem死掉了,这样AT ...
2019-04-16 11:01:50
261
原创 【C# AT Lib】1:AT命令简介
AT命令是普遍用来和Modem设备进行通讯。各种设备有自己支持的AT命令集,可以参考各自的技术文档查看所有详细的AT命令用法。我们先来看一些技术术语AT命令技术术语 术语 描述 AT Command 就是发送给Modem的字符串形式的命令 Result Code 会立即回复给发送方。 大多数会包含“OK”或者“ERROR”这两种中的其中...
2019-04-16 10:28:05
1266
原创 【C#】拷贝数据到网络映射盘时遇到找不到共享路径的问题
问题在Windows系统中(引入UAC之后),成功映射网络盘后,如果以Administrator去运行CMD.exe,根本找不到网络共享路径。那通过程序也无法自动传数据到网络共享路径中去。 解决方法一(这个没有成功):添加HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\En...
2019-01-29 14:46:44
3118
1
原创 深入浅出Head First设计模式配套视频
O'Reilly的Head First(深入浅出)系列教程可谓是大名鼎鼎。最近拜读了Design Pattern(设计模式),写得真是不错。可以从以下地址下载其中两位作者Elisabeth Robson和Eric Freeman录制的配套视频。【Part 1/2】https://download.youkuaiyun.com/download/zbbfb2001/10680196【Part 2...
2018-09-21 08:35:03
520
2
原创 【Testability】怎样整合log4net不影响代码的可测试性?
根据DDIY(Don't Do It Yourself)原则,如果程序需要日志功能,log4net是一个很好的选择。但在整合log4net的过程中,我们该怎么做不影响代码的可测试性。第一种整合f...
2018-07-11 11:15:20
231
原创 【Practical C#】C#中的迭代器 Iterator(IEnumerable和IEnumerator)
网上关于C#的迭代器教程也很多,但很多例程只是简单的封装一个可以迭代的实例变量,然后直接返回此实例变量的迭代器或者使用yield return语句。这样的例程没有触及到真正迭代器的实现。问题域描述:给定一个整数序列,统计连续的奇数或者偶数的个数。例如对于以下整数序列1, 2, 4, 10, 10, 8, 25, 13, 5, 7输出:IsOdd = True, Count = 1 (根据 1 中统...
2018-07-04 10:41:02
497
原创 C#中异步匿名委托和Lambda表达式
C#中async/await真的是大大简化了异步程序的编写,但往往我们可能忽略了异步匿名委托和Lambda表达式。直接上代码:class Program{ static void Main(string[] args) { Func<Task> asyncFunc1 = async delegate { Cons...
2018-05-17 14:35:19
1428
原创 WPF中Grid(网格)的GridSplitter(网格分割)
如果在WPF中的Grid中加入GridSplitter(网格分割条),以下是最佳实践。分配整个一行或者一列给分割条,并把行高或者列宽设置为Auto使用Grid.RowSpan或者Grid.ColumnSpan以让它撑满这个网格的全高或者全宽为了使分割条看得更能清楚设定它的宽度或者高度为一些足以看到的值,例如5设置这个GridSplitter的Background属性为更显眼的颜色设置这个GridS...
2018-05-10 16:38:55
2605
原创 C#在Win 7/8/10 OS下删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB子项
从Win XP到Win 7/8/10,OS(Operating System)有些安全特性改变了,所以不能向以前Win XP那样直接可以删除Windows Registry中的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB下面的子项。我们可以通过以下方法。生成的exe需要运行在Administrator模式下。这点是关于UAC(User C...
2018-04-24 08:47:13
8110
原创 【Vtt2Srt】IoC, DI, DIP
IoC: Inversion of ControlDIP: Dependency Inversion Principle (SOLID当中的D)DI: Dependency Injection每当看到这些词,总觉得它们是差不多的。但它们之间应该还是有些细微的差别的。以下只是根据自己的理解,如果哪里错了,还望指正。IoC:每当我们提到IoC,一般就是指IoC Container。例如Autofac。...
2018-04-03 16:47:29
277
原创 【Vtt2Srt】Console主程序
Vtt2Srt工具最终会有一个console和WPF主程序,所以共用的部分会放到一个单独的程序集里面。以下是Console程序的最顶端using System;using Autofac;using Vtt2Srt.Core; namespace Vtt2Srt.Console{ class Program { static void Main(strin...
2018-04-03 16:02:57
475
原创 【Vtt2Srt】VTT转SRT工具 Vtt2Srt
工具可以从以下地址下载https://download.youkuaiyun.com/download/zbbfb2001/106621431. 打开软件2. 选择文件夹目录可以在文本框中直接输入文件夹目录 或者点击“浏览(B)...”按钮选择目录3. 点击“开始转换(C)...”按钮 4. 等待软件完成5. 查看目录下的SRT文件迅雷影音播放时就可以看到字...
2018-04-03 15:54:53
7076
4
转载 【Testable Code】Unit Tests, How to Write Testable Code and Why it Matters
单元测试和TDD (Test-Driven Development)的好处就不多说了。为什么这么好的软件开发实践却往往很少有人去实践?- 被测试的代码需要留心可测试性- 好的单元测试也需要花时间去学习如果Production Code不是Testable Code,那单元测试会很难实施。今天转发一篇文章,关于Testable Code的,写得非常好!在把一些原则和最佳实践讲得浅
2018-01-17 11:15:36
344
原创 Delegate(委托)中的Covariance(协变)和Contravariance(逆变)
在Delegate当中,Variance(变异)是比较简单的理念,但不能深入理解的话,还是感觉比较疑惑的。Covariance(协变)Return types are compatibleA delegate variable can be used with a method that retures a type that is derived from the del
2017-11-21 13:01:03
403
原创 测试驱动开发(TDD)的一些思考
最近在学习测试驱动开发(TestDriven Development,简称TDD)。我的感受可以用这句来形容比较贴切,“理想总是饱满的,现实都是骨感的”。 当我说“理想总是饱满的”时,那是因为TDD所致力于的目标所带来的好处,确实很诱人。代码松耦合、不惧代码重构等等,这些都是极具价值的。 当我说“现实都是骨感的”时,那是因为想用TDD去开发项目,需要了解的东西确实
2017-11-21 10:07:02
555
原创 WPF中的ComboBox
ComboBox是常用的一种控件。Combox中选项往往和枚举(enum)想对应。在WPF中,ComboBox有SelectedIndex, SelectedItem, SelectedValue, SelectedValuePath和SelectionBoxItem。这么多和Select相关是不是有点晕?接下来,我们运行一些code来看看他们直接的区别。创建WeekDay枚举类型
2017-10-11 11:26:08
2169
原创 C#枚举所有串口COM
在实际项目中,如需都COM进行操作,往往需要枚举当前电脑中可用的所有串口COM。我们第一想到的就是SerialPort.GetPortNames()方法。但这种方法有个缺陷那就是不能罗列那些通过USB连接虚拟出来的COM口。public abstract class PortInfoBase { public string PortName { get; set;...
2017-09-05 12:35:19
3814
原创 一些关于怎样把log4net信息输出到UI界面的思路
如果需要C#程序加入日志功能,那log4net绝对是一个不错的选择。- 经过一些简单的配置,就能实现各种不同需求的日志功能了- 保持你的code尽量的简洁了,也不影响单元测试- 不需要考虑多线程- ...我用了之后,再也回不去那些没有log4net的日子了。在使用过程中,想把log4net的信息同步显示到UI某个控件中。以下是我的做法。首先定义一个EventAr
2017-09-05 08:51:21
3961
1
原创 C#的相等性(值类型和引用类型)
关于C#的相等性,还是Microsoft写的文章最好 (https://msdn.microsoft.com/zh-cn/library/dd183755(v=vs.120).aspx)。1. 重载operator ==的时候,代码可以在简洁一点return ReferenceEquals(left, null) ? ReferenceEquals(right, null)
2017-08-18 12:19:53
344
原创 C# XML Serialization序列化成字符串含有65279
遇到C# XML Serialization序列化成字符串含有65279问题。解决方案如下...这行是最重要的Encoding = new UTF8Encoding(false), // Disable to provide a Unicode byte order mark附完整代码:public static class XmlSerializationHelpe
2017-07-12 17:04:04
703
【视频教程】Lynda - Foundations of Programming - Design Patterns.zip.002【Part 2/2】
2018-09-21
【视频教程】Lynda - Foundations of Programming - Design Patterns.zip.001【Part 1/2】
2018-09-21
【串口工具】Eltima.Virtual.Serial.Port.Driver.8.0.412.Incl.Crack
2018-09-13
【串口工具】Eltima.Serial.Port.Monitor.v5.0.125.Cracked-SND
2018-09-13
【串口工具】Eltima.Advanced.Serial.Port.Terminal.v6.0.382.cracked-SND
2018-09-13
NCrunch.3.18.0.2.for.Visual.Studio.2008-2017.Incl.Key
2018-09-12
【VTT转换SRT工具】Vtt2Srt 1.0.0.0
2018-09-12
Whole Tomato Visual Assist X 10.9.2118.0 破解版
2017-02-19
PRO .NET Design Pattern Framework 4.5 (C#)
2017-02-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人