自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

资深全栈开发工程师

博客包括:.NET、Java、C#、C\C++、python、go、node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、小程序等相关使用及进阶知识。

  • 博客(251)
  • 收藏
  • 关注

原创 【Android】实现 MVVM 架构,创建 ViewModel、LiveData 和数据绑定等组件在 XML 中使用数据绑定

在 XML 布局文件中,我们使用了数据绑定来将 ViewModel 的数据和 EditText、TextView 绑定在一起。在 Activity 中,我们使用 DataBindingUtil 来设置数据绑定,并将 ViewModel 与 XML 布局文件进行绑定。在 Android 中实现 MVVM 架构,需要创建 ViewModel、LiveData 和数据绑定等组件,并在 XML 中使用数据绑定来将 ViewModel 的数据和 UI 绑定在一起。

2024-04-27 16:31:02 527

原创 Android 获取sha1的快速有效的简单方法

选择你要查看的apk,一键复制 sha1 值。把apk用鼠标左键拖动到命令行自动输入路径。

2024-04-24 19:21:21 276 1

原创 【C盘清理】哪些文件夹可以删除,哪些不能删除

WINDOWS.~BT 文件夹通常是 Windows 升级期间创建的临时文件夹,用于存储升级过程中的临时文件和备份数据。一般情况下,升级完成后这个文件夹应该会自动删除,但有时候可能会出现没有被自动删除的情况。在大多数情况下,$WINDOWS.~BT 文件夹可以安全删除,特别是在您确认已经完成了 Windows 升级并且系统正常运行的情况下。删除这个文件夹可以释放磁盘空间。

2024-03-16 11:08:03 1208

原创 【Android】使用ProGuard来进行代码混淆

在Android应用中,您可以使用ProGuard来进行代码混淆。代码混淆可以帮助减小APK文件的大小并加强应用的安全性,因为它会对代码进行压缩和混淆,使得反编译和逆向工程变得更加困难。要在Android应用中配置代码混淆,您需要在文件中定义混淆规则。该文件一般位于您的Android项目的/app目录下。

2024-03-10 13:15:46 481

原创 【 WPF】使用 System.Speech.Synthesis 命名空间中的 SpeechSynthesizer 类来朗读文本

在 WPF 中,你可以使用 System.Speech.Synthesis 命名空间中的 SpeechSynthesizer 类来朗读文本。在这个示例中,我们首先创建了一个 SpeechSynthesizer 对象。然后,在 Speak 方法中,我们调用 synthesizer.SpeakAsync() 方法并传入要朗读的文本。你可以在需要的时候调用 Speak 方法,并传入你想要朗读的文本。当调用 Speak 方法时,系统将会朗读传入的文本。

2024-03-09 18:07:58 464

原创 【Java】使用`LinkedList`类来实现一个队列,并通过继承`AbstractQueue`或者实现`Queue`接口来实现自定义队列

在构造函数中,我们传入了另一个List作为参考,以便保持队列大小与该List的容量一致。接口来实现自定义队列。方法用于添加元素,但在队列已满时返回。方法用于获取队列大小。在这个示例中,我们创建了一个名为。方法用于获取队首元素但不删除,类来实现一个队列,并通过继承。方法用于取出队首元素并删除,方法以支持遍历队列。

2024-03-09 17:42:00 710

原创 将 RxJava 的 Observable 转换为 Reactor 的 Flux流

如果您想将 RxJava 的 Observable 转换为 Reactor 的 Flux,可以使用 Reactor Adapter 库来实现这一转换。这个库提供了一些静态方法来将 RxJava 类型转换为 Reactor 类型。在这个示例中,我们使用了 RxJava2Adapter 中的 fluxToMono 静态方法,将 Observable 对象转换为 Flux 对象。这样就可以将 RxJava 的流转换为 Reactor 的流。

2024-01-14 17:31:09 279 1

原创 【VS】如何把wpf项目打包成exe文件

要将WPF项目打包为.exe文件,您可以使用Visual Studio的发布功能。这样,您就可以将WPF项目打包为可执行文件(.exe),可以在其他计算机上运行。请注意,生成的.exe文件可能需要依赖于特定的运行时环境,您可能需要在其他计算机上安装相关的.NET Framework版本或其他依赖项。

2023-12-25 14:26:06 2136

原创 【WPF】使用Settings文件来存储和读取持久化变量

在WPF中,可以使用Settings文件来存储和读取持久化变量。MyVariablestring在上述示例中,我们使用来访问Settings文件中的变量。要存储变量,我们将新值赋给MyVariable属性,并调用Save()方法来保存设置。要读取变量,我们可以通过访问MyVariable属性来获取其值。请注意,存储的变量在应用程序关闭后仍然可用,并且在下次打开应用程序时保持不变。但是,如果你需要在应用程序运行时动态更改变量的值,那么你需要在设置之前调用方法来重新加载设置。

2023-12-25 14:13:46 942

原创 Linux面试题分享

答:可以编辑网络接口的配置文件(如/etc/network/interfaces)来配置网络接口,或者使用命令如ifconfig或者ip来临时配置网络接口。答:可以使用命令如nice和renice来调整进程的优先级,nice命令可以启动进程并指定其优先级,renice命令可以修改已运行进程的优先级。答:可以使用命令如setfacl和getfacl来设置和查看文件的ACL,ACL可以为文件或者文件夹设置更详细的权限控制。

2023-12-18 17:16:10 637

原创 Ubuntu系统的基础操作和说明

【代码】Ubuntu系统的基础操作和说明。

2023-12-18 17:05:56 417

原创 【InsCode】新的代码管理工具inscode教程它和Git以及SVN的区别

InsCode 是一个面向团队开发的代码管理工具,它提供了一套完整的功能,包括版本控制、代码托管、协作编辑、代码审核等。与其他常见的代码管理工具相比,InsCode 更注重团队协作和代码质量的管理。InsCode 是一款功能强大的代码管理工具,它可以帮助团队更好地协同开发和管理代码。在本文中,我分享了我的 InsCode 实践经验和使用技巧,希望对你有所帮助。如果你还没有尝试过 InsCode,我鼓励你去体验一下,相信它会为你的团队带来更高效和更优质的代码管理体验。

2023-12-10 18:14:56 1250

原创 【Java】Editplus的安装与配置讲解

通过以上步骤,你已经成功安装并配置了 Editplus,可以开始使用它来编写和运行 Java 程序了。Editplus 提供了很多其他功能,例如语法高亮、代码折叠、自动完成等,你可以根据个人需求进行定制和配置。

2023-12-10 18:10:31 552

原创 【Android】Java NIO(New I/O)的`Selector`类来实现非阻塞的Socket监听

如果读取到的字节数为-1,表示客户端断开连接,我们关闭通道并在日志中打印出"设备已断开连接"。如果读取到有效的数据,我们可以在代码中处理这些数据,并通过通道向客户端发送回复。在迭代器循环中,我们根据键的类型判断通道是否可接受连接或可读取数据。如果你不想使用循环来监听客户端的连接和数据,你可以使用Java NIO(New I/O)的。如果没有就绪的通道,我们可以继续等待。类提供了一种选择一组已经就绪的通道的机制,这样你就不需要使用循环来等待连接和数据。方法中,我们首先读取客户端发送的数据,并将其存储在。

2023-12-08 21:48:11 629

原创 【Android】使用Netty库来实现Socket接收

在Android中使用Netty来实现Socket接收是可行的。Netty是一个高性能的网络通信框架,支持多种协议,包括原生的Socket通信。希望以上示例能帮助你在Android中使用Netty实现Socket接收。请注意适当处理网络通信的异常和关闭操作,以确保代码的稳定性和安全性。请注意,为了避免在主线程中执行耗时的操作,建议在后台线程中执行。是一个自定义的处理程序,用于处理接收到的数据。在上述示例中,我们创建了一个Netty的。接下来,在合适的时机创建Netty的。首先,在你的Android项目的。

2023-12-08 16:55:17 786

原创 【Python】pip命令及使用

pip list注意:上述表格中的示例均以"requests"包为例,实际使用时可根据需要替换为其他包的名称。pip是Python的包管理工具,它用于安装、卸载和管理Python包。它是Python标准库中的一个模块,提供了一个命令行界面,可以方便地搜索、安装和更新各种Python包。通过pip,你可以轻松地在Python环境中安装第三方库和工具,扩展Python的功能。它会自动解析包的依赖关系,并确保安装所需的依赖项。

2023-12-08 08:41:09 1070

原创 【WPF】应用程序和已知安卓设备的局域网IP之间进行通信

这只是一个基本的示例,实际应用中可能需要处理更多的错误和异常情况。同时,建议你在进行Socket通信时,考虑安全性和网络稳定性等因素。要在WPF应用程序和已知安卓设备的局域网IP之间进行通信,可以使用Socket通信。

2023-12-08 08:33:10 692

原创 鸿蒙操作系统架构

以上总结仅涵盖了Android和鸿蒙的一些主要区别,实际上两者在更多方面也存在其他差异,如系统性能、开发框架、应用生命周期等。具体的区别还需要深入了解每个系统的特点和功能。

2023-12-07 12:38:51 1748

原创 什么是https加密协议?

HTTPS(Hypertext Transfer Protocol Secure)是一种用于在计算机网络上安全传输数据的通信协议。它是HTTP的安全版本,通过使用加密和身份验证机制来保护数据传输的安全性和完整性。HTTPS使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来实现数据加密和身份验证。HTTPS的加密协议主要有以下几个重要的方面:数据加密:HTTPS使用对称加密和非对称加密相结合的方式来加密数据。

2023-12-07 12:33:40 962

原创 【C#】使用CancellationToken终止一个正在运行的Task

请注意,这种方法只能在任务的逻辑中进行取消操作,而不能直接终止正在执行的任务。任务逻辑需要在适当的位置检查取消标志,并根据需要执行取消操作。方法用于在新的线程上异步运行一个操作。任务的执行是异步的,一般情况下,我们无法直接终止一个正在执行的。方法创建了一个任务,并在任务逻辑中检查取消标志,并抛出异常。如果还有其他问题,请随时提问。方法检查取消标志,并在需要取消任务时抛出。是一种用于取消操作的机制,可以将其与。然后,在你的任务逻辑中,使用。在上面的示例中,我们创建了一个。首先,你需要创建一个。

2023-12-07 12:26:14 840

原创 【WPF】使用ObservableCollection解决:累积计数x与实际计数x不相同

类在集合发生变化时会触发通知,从而使绑定能够及时更新。在你的数据上下文类中,将。

2023-12-07 11:57:57 866

原创 【WPF】弹出一个弹窗并显示一个列表

请注意,这只是一个基本示例,你可以根据自己的需求进行更多的定制和样式设置。要在WPF中弹出一个弹窗并显示一个列表,你可以使用。定义了每个列表项的显示模板,这里使用了一个简单的。绑定到一个集合(在你的数据上下文中定义)。当点击按钮时,我们可以通过在代码中处理。属性,从而实现打开或关闭弹窗的效果。,这将使得弹窗相对于按钮进行定位。元素和一个包含列表的控件,如。在这个示例中,我们在。来显示列表项的文本。希望这可以帮助到你!

2023-12-07 11:09:32 1210

原创 【WPF】使用`Dispatcher.Invoke`方法将操作切换回UI线程,并在UI线程上更新对象的变量

时,要小心避免产生死锁或线程竞争的情况。确保你的代码逻辑和线程间同步是正确的,以避免潜在的问题。的委托中,我们可以访问UI线程上的对象,并给其变量赋值。方法用于在后台线程上执行耗时操作。在耗时操作完成后,我们使用。的实例,并且该对象是UI线程上的可访问对象。方法将操作切换回UI线程。来给调用对象的变量赋值。希望这能解答你的问题!

2023-12-07 09:51:11 768

原创 【WPF】将xaml中的属性与变量进行绑定

使用WPF的数据绑定机制。首先,确保你的数据上下文(DataContext)具有一个名为。属性可用于数据绑定。你可能需要在窗口的构造函数或Load事件中设置数据上下文。指定了绑定的上下文为窗口(Window)的数据上下文。确保在窗口的代码中设置了正确的数据上下文,以使。进行绑定,以动态显示徽章的值。替换为你实际使用的视图模型类。的整型属性,该属性将用于绑定。的显示值也会自动更新。属性的值发生变化时,

2023-12-07 09:34:08 980

原创 【WPF】使用异步任务来执行耗时的操作,保持UI的响应性。

这些方法都可以实现后台执行耗时操作,并在操作完成后切换回UI线程以进行操作结果的处理。具体使用哪种方法,取决于你的需求和个人偏好。方法将操作切换回UI线程。这样可以避免在多个线程上同时访问UI元素而导致的线程安全问题。需要注意的是,在异步任务中访问UI元素时,应使用。WPF提供了多种方法来实现异步任务,包括使用。希望以上信息对你有所帮助!

2023-12-07 09:17:11 1348

原创 【WPF】解决无法对“xxx”类型的只读属性“xxx”进行TwoWay或OneWayToSource绑定

不能对set方法进行private修饰,否则该属性则会被定义为只读属性。

2023-12-06 22:31:01 950

原创 【WPF】扫描的方式发现局域网中的Android设备

检查每个IP地址是否可达上述代码使用Ping类对局域网中的IP地址进行逐个检查,如果某个IP地址能够成功响应则认为该IP地址上有设备存在,可以将其添加到设备列表中。一旦发现了局域网中的Android设备的IP地址,你可以使用Socket或者其他网络通信库来建立与设备的通信连接。

2023-12-06 21:47:40 698

原创 【WPF】隐藏一个XAML的view视图

控件来展示不同的视图,每个视图都具有不同的可见性。你可以根据需要在代码中动态地隐藏、显示或折叠视图。属性来访问和修改视图的可见性。要在WPF中隐藏一个XAML视图,你可以使用。如果你需要在代码中动态隐藏视图,你可以使用。在上面的代码示例中,我们使用。属性来控制该视图的可见性。在上面的示例中,我们使用。

2023-12-06 09:27:45 835

原创 【WPF】使用Hyperlink控件创建超链接并在点击时跳转到浏览器打开指定的网页

事件,以在点击超链接时打开浏览器。方法打开了一个新的进程,并将超链接的URL作为参数传递给它。控件来创建超链接并在点击时跳转到浏览器打开指定的网页。现在,当用户点击超链接时,将会跳转到默认的浏览器并打开指定的网页。事件用于处理超链接的点击事件。在C# WPF中,你可以使用。作为容器,并在其中嵌套了一个。在上面的代码中,我们通过使用。,以防止触发默认的导航行为。在上面的示例中,我们使用。属性设置为网页的URL,接下来,在代码中处理。

2023-12-05 20:13:48 1748

原创 【Yarn】清除Yarn的缓存,更新Yarn本身、更新项目的依赖项

这将检查项目中的依赖项,并更新到最新的兼容版本。这将下载并安装最新版本的Yarn。这将清除Yarn的缓存目录。替换为要更新的依赖项的名称。

2023-10-18 00:02:47 1688

原创 【JavaScript】let和const的区别,val和var的区别

声明的变量可以在其声明的函数内部访问,也可以在函数外部访问。不是JavaScript中的关键字,是kotlin的关键字。声明的变量的值不能被修改,一旦赋值后就不能再进行赋值操作。: 它是ES5中声明变量的关键字,具有函数级作用域。声明变量,它将成为该函数的局部变量。声明的变量可以被多次声明,而且在声明前使用也不会报错。声明的变量不允许被重复声明,而且在声明前使用会报错。: 它也是ES6中引入的新关键字,用于声明常量。声明的变量也具有块级作用域,不允许重复声明。声明的变量的作用域被限制在当前块内,例如。

2023-09-27 09:55:47 350

原创 解决Failed to resolve ‘https:‘ [A(1)] after 2 queries ; nested exception is java.n

在代码中配置 SSL/TLS 相关参数可以确保你的代码能够正确处理 HTTPS 请求。下面是一个使用WebClient上述示例代码使用了类来发送 HTTPS 请求,同时通过自定义的HttpClient和来配置 SSLContext,以信任所有的证书。请注意,这只是一个示例,实际应用中应根据具体的需求和环境来配置 SSL/TLS 相关参数。

2023-09-24 11:34:37 903

原创 【docker】Linux查看\配置DNS

要查看或配置Docker的DNS服务器,你可以使用以下方法:dns。

2023-09-24 10:09:52 1138

原创 【 WebFlux】实现微信小程序的access_token请求接口

不存在或者已过期,我们使用 WebClient 发起一个 GET 请求到目标接口。在这个示例中,我们将返回的 access token 存入变量。方法将响应体转换为 TokenResponse 对象,然后使用。变量来保存获取到的 access token,使用一个。变量来保存 access token 的过期时间。是否存在并且未过期,如果是,则直接返回。在示例代码中,我们使用了一个。,并计算出过期时间后返回。接口中,我们首先检查。,并传递所需的查询参数。

2023-09-23 19:39:36 124

原创 【微信小程序】扫描外部二维码、小程序码进入并获得携带参数,使用参数跳转到指定页面

您需要使用微信提供的跳转链接和相关参数。APPIDPATHQUERY生成二维码:使用生成的跳转链接生成二维码。您可以使用在线的二维码生成工具或通过编程方式生成二维码。扫描二维码:用户使用微信扫描生成的二维码。跳转到指定页面:当用户扫描二维码后,微信会自动打开小程序,并跳转到指定页面。在指定页面的onLoad生命周期函数中,可以通过options参数获取传递的参数。${${${请注意,为了能够生成跳转链接和打开小程序,您需要先在微信开放平台注册小程序并获取到 AppID。

2023-09-02 10:44:45 3422 1

原创 【Android】使用 adb 命令行工具结合 pm列出 Android 设备上已安装应用的应用名称和包名

要列出 Android 设备上已安装应用的应用名称和包名,你可以使用 adb 命令行工具结合 pm(PackageManager)命令来实现。首先,确保你已经安装了 Android SDK,并将 adb 工具添加到系统的环境变量中。通过以上的 adb 命令,你可以列出 Android 设备上已安装应用的应用名称和包名。上述命令将列出所有已安装应用的包名和应用名称。表示用户 ID 为 0 的用户(通常为设备的拥有者用户)。请注意,如果你的设备有多个用户,你可能需要使用。上述命令将仅列出包名,不包括应用名称。

2023-08-31 15:20:42 1874 1

原创 【Android】 No matching variant of com.android.tools.build:gradle:[版本号] was found

确保您的构建脚本中指定的Gradle插件版本与您要使用的com.android.tools.build:gradle版本是兼容的。您可以尝试更新Gradle插件版本或选择与您正在使用的Gradle插件版本兼容的com.android.tools.build:gradle版本。这个错误意味着在配置构建工具的Gradle插件时,没有找到与所需配置匹配的com.android.tools.build:gradle:8.1.1版本。确保您的构建脚本中的其他依赖项和配置与您正在使用的Gradle插件版本兼容。

2023-08-23 11:11:01 4453

原创 npm报错 Cannot find module ‘@vuepress\core\node_m

如果还是无法解决问题,可能是由于依赖包的版本不兼容导致的。您可以尝试将相关依赖包的版本进行调整,或者查看项目的文档或社区来了解是否有其他用户报告类似的问题以及解决方法。通常是由于缺少依赖包或者依赖包版本不兼容引起的。如果上述步骤都没有解决问题,可以尝试清除 npm 缓存,然后再次运行。如果更新依赖包后仍然有问题,可以尝试删除。确保您的项目的依赖包是最新的,可以运行。命令来重新安装依赖包。

2023-08-21 21:03:01 1037

原创 【微信小程序】通过调用 wx.navigateBack() 方法来退出当前界面并返回上一个界面

参数指定了要返回的界面数。如果你只想返回上一个界面,可以将。如果你想返回更多的界面,可以增加。

2023-08-12 18:39:15 5057

原创 【H5】多个页面共用头部和底部,复用相同的头部和底部代码实现

iframe>

2023-08-12 15:30:45 1087

Andro使用Data Binding将数据绑定到UI控件再使用RxBindings处理UI事件,实现双向数据流和响应式编程

以下是Android Architecture Components的优势: 1. 代码结构清晰 Android Architecture Components提供了一些架构组件,例如ViewModel、LiveData和Room等,可以帮助开发者更好地组织代码结构,将代码分解成易于维护和测试的单元。 2. 提高代码质量 Android Architecture Components提供了一些最佳实践,例如单一职责原则、依赖倒置原则和开闭原则等,可以帮助开发者编写高质量、可扩展和易于测试的代码。 3. 简化异步编程 Android Architecture Components中的LiveData和ViewModel等组件可以帮助开发者管理UI状态和异步任务,避免了手动处理生命周期和内存泄漏等问题,简化了异步编程。 4. 支持数据绑定 Android Architecture Components中的Data Binding库可以帮助开发者将数据绑定到UI控件上,以减少手动设置UI控件的代码量,提高开发效率。 5. 易于学习和使用

2023-06-17

androidRecyclerListView、RecyclerPagerSnapHelper、AsyncLayoutInf

【android】RecyclerListView、RecyclerPagerSnapHelper、AsyncLayoutInflater、setMaxRecycledViews的使用方法 Android 7.0(API 24):引入了 RecyclerListView,它允许将 RecyclerView 的视图缓存移出堆内存,并采用了更高效的视图绑定方式,以提高性能和减少内存使用。 Android 7.1(API 25):引入了 RecyclerPagerSnapHelper,它可以帮助 RecyclerView 实现类似 ViewPager 的滑动效果,并通过视图缓存等优化方式减少内存使用。 Android 8.1(API 27):引入了 AsyncLayoutInflater,它可以在后台线程中异步加载布局,从而减少主线程的工作量,提高页面的响应性和性能。 Android 9.0(API 28):引入了 RecyclerView.RecycledViewPool.setMaxRecycledViews() 方法,它可以设置 RecyclerView 的视图缓存池的最大大小,

2023-06-14

Handler对象中使用匿名内部类或非静态内部类正确地释放消息避免内存泄漏或增加Native内存

Handler对象中使用匿名内部类或非静态内部类正确地释放消息避免内存泄漏或增加Native内存,在Android中,Handler对象通常会被用来在主线程(UI线程)中处理消息,以更新UI界面。当我们在Handler对象中使用匿名内部类或非静态内部类时,如果没有正确地释放消息,就可能会导致内存泄漏或增加Native内存。 解决这个问题的方法有两种: 减少notifyItemChanged的调用次数,尽量在数据变化后一次性更新多个item,而不是频繁地更新单个item。 使用DiffUtil来计算RecyclerView中item数据的变化,然后批量更新变化的item。DiffUtil可以有效地减少notifyItemChanged的调用次数,从而降低内存的使用。 RecyclerView重新绘制前清除之前绘制产生的Native内存:

2023-06-14

源一个USB读写deomo,从多个USB设备中选择一个实现外设控制的通信

Android 开源一个USB读写deomo,从多个USB设备中选择一个实现外设控制的通信。 1.性能稳定,可从多个usb设备中选择指定设备。 2.测试通过,为公司项目重要的组件 3.做了指定设备的过滤,使用时请修改为自己的USB名称

2022-12-01

空空如也

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

TA关注的人

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