在开发 XAML(WPF/UWP) 应用程序中,有时候,我们需要创建自定义控件 (Custom Control) 来满足实际需求.而在自定义控件中,我们一般会用到一些原生的控件(如 Button.TextBox 等)来辅助以完成自定义控件的功能. 自定义控件并不像用户控件 (User Control) 一样,使用 Code-Behind(UI 与逻辑在一起)技术.相反,它通过把 UI 与逻辑分离而将两者解耦.因此,创建一个自定义控件会产生两个文件,一个是 Generic.xaml,在它里面定义其…
NET中异常处理的最佳实践 本文翻译自CodeProject上的一篇文章,原文地址. 目录 介绍 做最坏的打算 提前检查 不要信任外部数据 可信任的设备:摄像头.鼠标以及键盘 “写操作”同样可能失效 安全编程 不要抛出“new Exception()” 不要将重要的异常信息存储在Message属性中 每个线程要包含一个try/catch块 捕获异常后要记录下来 不要只记录Exception.Message的值,还需要记录Exception.ToString() 要捕获具体的异常 不要中止异常上抛…
.NET Core 2.1中的HttpClientFactory最佳实践 ASP.NET Core 2.1中出现一个新的HttpClientFactory功能, 它有助于解决开发人员在使用HttpClient实例从其应用程序发出外部Web请求时可能遇到的一些常见问题. 介绍 在.NETCore平台的2.1新增了HttpClientFactory,虽然HttpClient这个类实现了disposable,但使用它的时候用声明using包装块的方式通常不是最好的选择.处理HttpClient,底层s…
ASP.NET Core 2.1中出现一个新的HttpClientFactory功能, 它有助于解决开发人员在使用HttpClient实例从其应用程序发出外部Web请求时可能遇到的一些常见问题. 介绍 在.NETCore平台的2.1新增了HttpClientFactory,虽然HttpClient这个类实现了disposable,但使用它的时候用声明using包装块的方式通常不是最好的选择.处理HttpClient,底层socket套接字不会立即释放.该HttpClient类是专为多个请求重复使…
Vue风格指南中介绍了单文件组件中的Style是必须要有作用域的,否则组件之间可能相互影响,造成难以调试. 在Vue Loader Scope CSS和Vue Loader CSS Modules两节中介绍了Vue实现CSS模块化的两种方式. 下面对scoped和CSS Modules两种方式分别进行介绍,然而这两种方式均非最佳实践. 一.scoped 使用scoped会为组件中HTML树的每个元素都添加data-xxxx属性,其中xxxx是哈希值.转换之后的CSS变成 mySelector[d…
网上已经有非常多讲怎样连接VMware的文章.可是针对一些可能遇到的细节没有讲全. 这里会有一个非常 实际的样例,附带全部软件的链接,保证成功. 最佳实践什么的都是骗人的. 1.安装VirtualBox 其实VMware会有更全面的虚拟化支持,比方cuda,这里选择VirtualBox更easy上手一些,对一个开发环境来说够用. VirtualBox直接去官网下载最新版,然后记得下载VirtualBox Extension Pack.当前版本号的VirtualBox相应的VirtualBox E…
这种方法主要在你拿到别人的代码时候很多activity一时半会儿看不懂,用了这个方法以后就可以边实践操作就能够知道具体哪个activity是干什么用的 1.新建一个BaseActivity的类,让他继承自AppCompatActivity public class BaseActivity extends AppCompatActivity{ @Override protected void onCreate(@Nullable Bundle savedInstanceState) { supe…
本文翻译自CodeProject上的一篇文章,原文地址. 目录 介绍 做最坏的打算 提前检查 不要信任外部数据 可信任的设备:摄像头.鼠标以及键盘 “写操作”同样可能失效 安全编程 不要抛出“new Exception()” 不要将重要的异常信息存储在Message属性中 每个线程要包含一个try/catch块 捕获异常后要记录下来 不要只记录Exception.Message的值,还需要记录Exception.ToString() 要捕获具体的异常 不要中止异常上抛 清理代码要放在finall…
原文出处: CodeProject   译文出处:周见智的博客   欢迎分享原创到伯乐头条 介绍 “我的软件程序从来都不会出错”.你们相信吗?我几乎可以肯定所有人都会大喊我是个骗子.“软件程序几乎不可能没有bug!” 事实上,开发一个可信任.健全的软件程序并不是不可能的事情.注意我这里并不是指那些用于控制核电站的软件,而是指一些常见的商业软件,这些软件可 能运行在服务器上,又或者PC机上,它们可以连续工作几个星期甚至几个月都不会出现重大问题.可以猜到,我刚才的意思是指软件有一个比较低的出错率,你…
平时开发中经常需要记录时间,比如用于记录某条记录的创建时间以及修改时间.在数据库中存储时间的方式有很多种,比如 MySQL 本身就提供了日期类型,比如 DATETIME,TIMESTAMEP 等,我们也可以直接存储时间戳为 INT 类型,也有人直接将时间存储为字符串类型. 那么到底哪种存储时间的方式更好呢? 不要使用字符串存储时间类型 这是初学者很容易犯的错误,容易直接将字段设置为 VARCHAR 类型,存储"2021-01-01 00:00:00"这样的字符串.当然这样做的优点是比较…