最新 最热

ndk开发之native层访问java层

java层的成员变量可以分为实例变量和静态变量,不过他们的访问方法比较类似,可以分为以下三步:

2023-10-22
1

DataBinding的用法

我们知道,布局文件通常只负责UI控件的布局工作。页面通过setContentView()方法关联布局文件,再通过UI控件的id找到控件,接着在页面中通过代码对控件进行操作。可以说,页面承担了绝大部分的工作量,为了减轻页面的工作量,Goog...

2023-10-22
1

Room组件的用法

Android采用Sqlite作为数据库存储。但由于Sqlite代码写起来繁琐且容易出错,因此Google推出了Room,其实Room就是在Sqlite上面再封装了一层。下面是Room的架构图:...

2023-10-22
1

C# 的事件,一般你不需要担心它的线程安全问题!

时不时会有小伙伴跟我提到在 C# 写事件 += -= 以及 Invoke 时可能遇到线程安全问题。然而实际上这些操作并不会有线程安全问题,所以我特别写一篇博客来说明一下,从原理层面说说为什么不会有线程安全问题。...

2023-10-22
1

.NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)

垃圾回收机制有一些未定义部分,一般来说不要依赖于这些未定义部分编程,否则容易出现一些诡异的 bug 或者不稳定的现象。

2023-10-22
1

C# 8.0 如何在项目中开启可空引用类型的支持

C# 8.0 引入了可为空引用类型和不可为空引用类型。由于这是语法级别的支持,所以比传统的契约式编程具有更强的约束力。更容易帮助我们消灭 null 异常。...

2023-10-22
1

Linux Shell 中需要转义的字符

在 Linux Shell 中,有很多字符是有特殊含义的,如果期望把这个字符当作普通字符来处理,需要经过 的转义。

2023-10-22
1

在整个 Git 仓库的历史(包括所有分支和标签)中修改提交作者的信息(姓名和邮箱)

但是现在我计划开源我的一个项目,于是自己个人使用的姓名和邮箱就需要在开源的时候改为使用我公开的姓名和邮箱。对于旧仓库,我将废弃,将来所有的精力都将在开源版本的仓库中;而对于开源版本的新仓库,由于此前没有人克隆过...

2023-10-22
1

在 Visual Studio Code 中添加自定义的代码片段

你可以在 Visual Studio Code 的菜单中找到代码片段的设置入口,在 File -> Preferences -> User Snippets 中。

2023-10-22
1

在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试

在 WPF 开发时,有 Snoop 的帮助,UI 的调试将变得非常轻松。使用 Snoop,能轻松地查看 WPF 中控件的可视化树以及每一个 Visual 节点的各种属性,或者查看数据上下文,或者监听查看事件的引发。...

2023-10-22
1