鼠标穿透问题分析
摘要:问题描述 表象 拾取元素时出现“穿透”,通过 WindowsAPI 拾取目标控件元素信息时,鼠标拾取元素的同时还执行了目标控件上的操作,这种情况是不允许的。(PS:通过单击进行拾取,常规情况下已做了屏蔽,不会执行目标控件的操作) 里象 经过分析和测试,得出结论。误操作的控件绑定的不是 Click事件
阅读全文
产品解析——验证码
摘要:前言 验证码作为一种有效的图灵测试,在我们的生活中随处可见。 正文 如图所示它也是我们常用的验证码类型之一。你能想象他用在什么场景吗?大平台注册,网上订票?都错,它仅是某个直播平台“订阅”功能的验证码。 首先对于“订阅”这个功能来说有必要用验证码吗?就算他的理由是充分的,这个验证码难度是否有些偏高了
阅读全文
Asp.Net Core启动类选择
摘要:AspNet Core 多环境的配置方式有一种基于Startup类的选择。 webBuilder.UseStartup() //显式注册、会靶定Startup.cs webBuilder.UseStartup(Assembly.GetExecutingAssembly().FullName); //
阅读全文
Asp.Net Core 应用配置
摘要:五种读取方式 五种读取方式依赖于 IConfiguration 和 IConfigurationRoot 对象 一、初级写法 //不区分大小写 string connectionString = _configuration["ConnectionString"]; 二、绑定配置模型 var con
阅读全文
GetService与GetServices对比
摘要:演示通过ServiceProvider得到一个包含多个服务实例的集合。 定义了一个服务接口IFoobar 添加服务接口的两个实现类Foo和Bar 将Foo和Bar的ServiceDescriptor添加到ServiceCollection中 这时ServiceDescriptor对象的Service
阅读全文
源码分析——服务提供之三种获取实例的区别
摘要:如果服务未注册则GetService()返回null,GetRequiredService()而是抛出异常。 public static T GetService<T>(this IServiceProvider provider) { if (provider == null) { throw n
阅读全文
ServiceProvider的获取
摘要:无法new 内部类无法直接创建 通过构建器创建 IServiceProvider serviceProvider = new ServiceCollection().BuildServiceProvider(); 通过ServiceProvider获取自身 static void Main(stri
阅读全文
谈资
摘要:边缘服务器 面向Internet的web服务器 短心跳 指的是某种情况或某种业务,它非常快,但调用的频次特别高 原逻辑代码 指的是程序员在编码时按照需求原本的的样子进行翻译,没有任何增加与改动的进行编码。 柔性事物,最终一致性 柔性事物,可以使用事物消息实现,但需要MQ支持事物消息。很多MQ中间件都
阅读全文
Asp.Net Core自行指定监听地址
摘要:一般有一下五种,优先级依次递增 调试器环境配置(launchSettings.json):"applicationUrl": "http://localhost:5000" 环境变量配置(launchSettings.json-environmentVariables):"ASPNETCORE_UR
阅读全文
产品解析——游戏环境净化
摘要:前言 今天想评价的是一款十多年前比较风靡的桌游,相信大部分人都玩过“三国杀”。由于人数的原因想组成桌游的机会不多,好在可以跟网络上的玩家一起玩。近些年游戏玩家不断减少,个人觉得其中一个重要原因就是存在大量无视规则的恶意玩家,导致游戏环境不适很好。游戏环境对于任何一个游戏来说都是比较重要的一环。 描述
阅读全文
颠覆三观的性能实验
摘要:用抽象接口来接收实现是我们代码中常用的一种手段 IBase base = new Child() ,从来没想过在.net Framework下会对性能造成如此影响。 具体代码如下 private static void Test() { Base a = new Base(); AbsBase b
阅读全文
意外输入现象
摘要:前言 我们设计程序时,会先拿到需求,然后在产品经理的带领下设计出一个完整的闭环,但无论考虑如何周全,现实总会给我们一个狠狠的巴掌,意外输入无法避免,既然无法避免那就应该引以为戒。为了让程序员不那么怀疑人生,就用此文记录下我的职业生涯中遇到的“意外输入”。 拿出拿入问题 场景同无人超市类似,但是属于人
阅读全文
.net冷知识
摘要:不常用的技术方案 如何在关系型数据库中保存长文本。 按照主从表的结构进行设计,将长文本进行拆解分开保存,使用时在进行主从查询。 注意事项 提防C#对象深拷贝,浅拷贝导致的BUG 对于需要关闭的资源放在using可以避免忘记关闭 概念常识 partial 可用于由代码生成器自动创建的代码,从而避免在添
阅读全文
角色、权限、授权
摘要:权限 页面权限 即用户登录后可以看到的页面,一般用菜单进行控制 功能权限 包含但不仅限于增删改查。 数据权限 数据权限具有一定的特殊性,一般不用同一套“角色”、“组织”进行控制,常伴随着“手动授权” 角色 角色本身没有意义,作为权限的代理,封装了一组权限,用于分配给用户。 互斥角色 两个角色不能同时
阅读全文
版本设计原则
摘要:完备性 每个版本的功能都能有完整的闭环,避免当前版本还依赖下一版本的功能,减少对当前版本无意义的预留功能 目的性 每个版本要达到什么使能的目的要明确。 周期性 定制好可执行的目标达成周期,并预留20%的突发情况处理时间。不拖沓也不跃进,周期制定的不合理后果不言而谕,周期太短一环接一环的被影响制定计划
阅读全文
随记应背
摘要:消息驱动和事件驱动的一点点区别 消息驱动 A发送一个消息到消息队列,B收到该消息。A很明确这个消息是发给B的。通常是点对点模式。 事件驱动 A发出一个事件,B或者C收到这个事件,或者没人收到这个事件,A只会产生一个事件,不会关心谁会处理这个事件 。通常是发布订阅模式。 汗:纯概念问题? 单点登录和唯
阅读全文
产品解析——手扶电梯
摘要:前言 本着万物皆可盘,道理都相通的心态,今天盘点一个非互联网产品。用具象的事物去研究抽象的设计,不失为一种明智的选择。 正文 手扶电梯是我们日常生活中比较常用的一个工具,商场、地铁、医院等很多地方都可以见到。随着环保意识的提升,一项功能应运而生:“无人停止”功能,即当电梯上没人时电梯自动停止。看上去
阅读全文
重构
摘要:如何进行重构 对象行为改变的因素一定要是直接受到影响,不要跨级影响。 添加完整的注释 重写非单一职责的类、方法 涉及到表级的改动影响比较大,需要特别慎重 全局变量有妙用,但需慎用 例 假定这样一个场景应用上显示前后两个数字,当个位上的值大于十就将前面的数字加一。初始场景只有一个“加十”按钮。于是对于
阅读全文