首页 文章 精选 留言 我的

精选列表

搜索[工具库],共10000篇文章
优秀的个人博客,低调大师

ILSpy 5.0 发布,.NET 反编译工具

ILSpy 5.0发布,该版本更新内容如下: 新特征 新的 BAML反编译器 MSIX for Microsoft Store:@onovotny 添加了构建支持 如果方法标识为 Windows Forms InitializeComponent,则生成 VS Windows Forms Designer兼容性代码 添加新选项RemoveDeadStores和 AlwaysShowEnumMemberValues 反编译引擎的改进与修复 改进了无效元数据标记上反编译器和反汇编程序的稳定性 添加对 ReadOnlySpan<T> 初始化模式的支持 改进ref readonly授权和返回类型的编译 改进 LINQ 查询的反编译 PDB 生成器现在可以发出异步的“method stepping information” 改进UI 支持treeview 和搜索中的模糊名称 使反编译代码的缩进可配置 如果无法分析实体而导致崩溃,则显示错误消息 添加匹配括号高亮显示 改进了反编译视图中的链接 更多改进见发布说明: https://github.com/icsharpcode/ILSpy/releases/tag/v5.0

优秀的个人博客,低调大师

并发编程工具之一:CountDownLatch 用法

CountDownLatch 用法CountDownLatch是java.util.concurrent包中一个类,CountDownLatch只要提供的机制是多个(具体数量等于初始化CountDownLatch时count的值)线程都达到了预期状态或者完成了预期工作时触发事件,其他线程可以等待这个事件来触发自己后续的工作。等待的线程可以是多个,即CountDownLatch可以唤醒多个等待的线程。到达自己预期状态的线程会调用CountDownLatch的countDown方法,而等待的线程会调用CountDownLatch的await方法。 每次调用countDown方法时,计数都会减1,直到0为止,此时因调用await方法的阻塞线程被唤醒 代码例子: public static void main(String[] args) throws InterruptedException { CountDownLatch countDown = new CountDownLatch(1); CountDownLatch await = new CountDownLatch(5); // 依次创建并启动处于等待状态的5个MyRunnable线程 for (int i = 0; i < 5; ++i) { new Thread(new MyRunnable(countDown, await)).start(); } System.out.println("用于触发处于等待状态的线程开始工作......"); System.out.println("用于触发处于等待状态的线程工作完成,等待状态线程开始工作......"); countDown.countDown(); await.await(); System.out.println("Bingo!"); } public class MyRunnable implements Runnable { private final CountDownLatch countDown; private final CountDownLatch await; public MyRunnable(CountDownLatch countDown, CountDownLatch await) { this.countDown = countDown; this.await = await; } public void run() { try { countDown.await();//等待主线程执行完毕,获得开始执行信号... System.out.println("处于等待的线程开始自己预期工作......"); await.countDown();//完成预期工作,发出完成信号... } catch (InterruptedException e) { e.printStackTrace(); } } } 运行结果: 用于触发处于等待状态的线程开始工作...... 用于触发处于等待状态的线程工作完成,等待状态线程开始工作...... 处于等待的线程开始自己预期工作...... 处于等待的线程开始自己预期工作...... 处于等待的线程开始自己预期工作...... 处于等待的线程开始自己预期工作...... 处于等待的线程开始自己预期工作...... Bingo!

优秀的个人博客,低调大师

ownCloud/Nextcloud OCC命令行工具

列出所有用户 sudo -u apache php /var/www/html/occ user:list 扫描所有用户的所有文件 sudo -u apache php /var/www/html/occ files:scan --all 为用户user1扫描文件: sudo -u apache php /var/www/html/occ files:scan user1 扫描指定用户user1的Photos文件夹 sudo -u apache php /var/www/html/occ files:scan --path="/user1/files/Photos" 格式: files:scan [-p|--path="..."] [-q|--quiet] [-v|vv|vvv --verbose] [--all] [user_id1] ... [user_idN] 参数: user_id #扫描所指定的用户(一个或多个,多个用户ID之间要使用空格分开)的所有文件 选项: --path #限制扫描路径 --all #扫描所有已知用户的所有文件 --quiet #不输出统计信息 --verbose #在扫描过程中显示正在处理的文件和目录 --unscanned #仅扫描以前未扫描过的文件 使用OCC 新建用户 sudo -u apache php /var/www/html/occ user:add test1 Enter password: Confirm password: The user "test1" was created successfully 使用OCC 更改密码 sudo -u apache php /var/www/html/occ user:resetpassword user1 Enter a new password: Confirm the new password: Successfully reset password for user1 用户间文件迁移 sudo -u apache php /var/www/html/occ files:transfer-ownership <来源用户> <目标用户> 进入维护模式 sudo -u apache php /var/www/html/occ maintenance:mode --on sudo -u apache php /var/www/html/occ maintenance:mode --off

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册