macad.bingding,commands,common

1.

using System.Windows;
using System.Windows.Data;namespace Macad.Presentation
{// 定义了一个辅助类 BindingHelperpublic static class BindingHelper{// 创建绑定的静态方法,接受源对象、路径和绑定模式,并返回一个绑定实例public static Binding Create(object source, string path, BindingMode mode){return new Binding(){Source = source,Path = new PropertyPath(path),Mode = mode};}// 创建带有转换器的绑定的静态方法,接受源对象、路径、绑定模式、值转换器和转换器参数,并返回一个绑定实例public static Binding Create(object source, string path, BindingMode mode, IValueConverter converter, object converterParameter=null){return new Binding(){Source = source,Path = new PropertyPath(path),Mode = mode,Converter = converter,ConverterParameter = converterParameter};}}
}

这段代码定义了一个静态辅助类 BindingHelper,其中包含两个静态方法用于创建绑定。第一个方法 Create 接受源对象、路径和绑定模式,并返回一个绑定实例,用于创建简单的绑定。第二个方法 Create 接受源对象、路径、绑定模式、值转换器和转换器参数,并返回一个绑定实例,用于创建带有值转换器的绑定。这些方法提供了便捷的方式来创建不同类型的绑定,简化了代码编写过程。

2.

using System.Windows;namespace Macad.Presentation
{// 定义了一个 BindingProxy 类,继承自 Freezable 类public class BindingProxy : Freezable{// 重写 CreateInstanceCore 方法,用于创建 BindingProxy 实例protected override Freezable CreateInstanceCore(){return new BindingProxy();}// 定义了名为 Data 的依赖属性,用于存储绑定数据public object Data{get { return (object)GetValue(DataProperty); }set { SetValue(DataProperty, value); }}// 使用 DependencyProperty 注册了 Data 依赖属性,用于支持数据绑定public static readonly DependencyProperty DataProperty =DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));}
}

这段代码定义了一个名为 BindingProxy 的类,继承自 Freezable 类。它的作用是提供一个中间对象,用于在 XAML 中传递数据。它包含一个名为 Data 的依赖属性,用于存储要传递的数据。通过将数据绑定到 BindingProxyData 属性,可以在 XAML 中实现数据传递,这对于某些场景下的数据绑定非常有用。

3.

using System.Windows;namespace Macad.Presentation
{// 定义了一个抽象类 DependencyCallbackObject,继承自 DependencyObject 类public abstract class DependencyCallbackObject : DependencyObject{// 静态方法,用于处理依赖属性的静态 PropertyChanged 回调protected static void PropertyChangedStaticCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs eventArgs){// 将依赖属性的变化事件委托给派生类的 PropertyChangedCallback 方法处理var instance = dependencyObject as DependencyCallbackObject;if (instance != null){instance.PropertyChangedCallback(eventArgs);}}// 抽象方法,派生类需要实现此方法来处理依赖属性的变化事件public abstract void PropertyChangedCallback(DependencyPropertyChangedEventArgs eventArgs);}
}

4.

using System;
using System.Globalization;
using System.Reflection;
using System.Windows.Data;namespace Macad.Presentation
{// 定义了一个名为 MethodBinding 的继承自 Binding 的类public class MethodBinding : Binding{// 内部私有类 MethodConverter 实现了 IValueConverter 接口class MethodConverter : IValueConverter{readonly string _MethodName;// MethodConverter 类的构造函数,接收一个 methodName 参数public MethodConverter(string methodName){this._MethodName = methodName;}// Convert 方法用于将源数据转换为绑定目标对象public object Convert(object value, Type targetType, object parameter, CultureInfo culture){// 使用反射查找源数据类型中的指定方法var mi = value.GetType().GetMethod(_MethodName, BindingFlags.Public | BindingFlags.Instance);if (mi == null){// 如果找不到指定方法,则抛出异常throw new InvalidOperationException("Could not find method with name '" + _MethodName + "' on type '" + value.GetType() + "'.");}// 根据目标类型选择合适的委托类型并返回对应的委托实例if (targetType == typeof(Func<object, bool>)){return new Func<object, bool>(x => (bool)mi.Invoke(value, new object[] { x }));}else if (targetType == typeof(Func<int, object, bool>)){return new Func<int, object, bool>((i, x) => (bool)mi.Invoke(value, new object[] { i, x }));}else if (targetType == typeof(Func<string, bool>)){return new Func<string, bool>(s => (bool)mi.Invoke(value, new object[] { s }));}else if (targetType == typeof(Func<int, string, bool>)){return new Func<int, string, bool>((i, s) => (bool)mi.Invoke(value, new object[] { i, s }));}else if (targetType == typeof(Action<object>)){return new Action<object>(x => mi.Invoke(value, new object[] { x }));}else if (targetType == typeof(Action<int, object>)){return new Action<int, object>((i, x) => mi.Invoke(value, new object[] { i, x }));}else if (targetType == typeof(Func<bool>)){return new Func<bool>(() => (bool)mi.Invoke(value, new object[] { }));}else if (targetType == typeof(Func<object>)){return new Func<object>(() => mi.Invoke(value, null));}return null;}// ConvertBack 方法,因为这是单向绑定,因此不需要实现此方法public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotImplementedException();}}// MethodBinding 类的构造函数,接收一个 methodName 参数,并创建 MethodConverter 的实例作为 Converterpublic MethodBinding(string methodName){Converter = new MethodConverter(methodName);}}
}

这段代码定义了一个名为 MethodBinding 的类,用于创建绑定到指定方法的绑定。它包含了一个内部私有类 MethodConverter,实现了 IValueConverter 接口,用于将方法转换为委托以供绑定使用。MethodBinding 的构造函数接收一个 methodName 参数,并创建 MethodConverter 的实例作为 Converter,从而将指定方法绑定到目标对象。该类通过反射查找源数据类型中的指定方法,并根据目标类型选择合适的委托类型进行转换,最终返回对应的委托实例,以便在绑定中执行指定方法。

5.

namespace Macad.Presentation
{using System;using System.Windows.Controls;using System.Windows.Markup;using System.Xaml;// 标记扩展类型 RootObject,继承自 MarkupExtension[MarkupExtensionReturnType(typeof(ContentControl))]public class RootObject : MarkupExtension{// 实现 ProvideValue 方法,返回根对象public override object ProvideValue(IServiceProvider serviceProvider){// 从 IServiceProvider 获取 IRootObjectProvider 接口的实例var rootObjectProvider = (IRootObjectProvider)serviceProvider.GetService(typeof(IRootObjectProvider));// 返回根对象,如果未找到则返回 nullreturn rootObjectProvider != null ? rootObjectProvider.RootObject : null;}}
}

这段代码定义了一个名为 RootObject 的类,它是一个标记扩展,用于在 XAML 中获取根对象。它重写了 ProvideValue 方法,该方法返回当前 XAML 上下文中的根对象。通过在 XAML 中使用 RootObject 标记扩展,可以在代码中获取到根对象,从而实现在 XAML 与代码之间的数据传递和交互。

6.commands

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Data;
using System.Windows.Input;namespace Macad.Presentation
{// 定义接口 IActionCommand,继承自 ICommand 和 INotifyPropertyChangedpublic interface IActionCommand : ICommand, INotifyPropertyChanged{string GetHeader(object parameter); // 获取命令的标题string GetTitle(object parameter); // 获取命令的标题string GetIcon(object parameter); // 获取命令的图标string GetDescription(object parameter); // 获取命令的描述string GetHelpTopic(object parameter); // 获取命令的帮助主题string Shortcut { get; set; } // 获取或设置命令的快捷键(object Object, string Path) GetBindingSource(object parameter); // 获取命令的绑定源Binding GetIsCheckedBinding(object parameter); // 获取命令的 IsChecked 绑定}//--------------------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------------------// 实现 IActionCommand 接口的 ActionCommand 类,继承自 RelayCommandpublic sealed class ActionCommand : RelayCommand, IActionCommand{public Func<string> Header { get; set; } // 获取或设置命令的标题public string GetHeader(object parameter) => Header?.Invoke(); // 获取命令的标题public Func<string> Title { get; set; } // 获取或设置命令的标题public string GetTitle(object parameter) => Title?.Invoke(); // 获取命令的标题public Func<string> Icon { get; set; } // 获取或设置命令的图标public string GetIcon(object parameter) => Icon?.Invoke(); // 获取命令的图标public Func<string> Description { get; set; } // 获取或设置命令的描述public string GetDescription(object parameter) => Description?.Invoke(); // 获取命令的描述public (object Object, string Path) BindingSource { get; set; } // 获取或设置命令的绑定源public (object Object, string Path) GetBindingSource(object parameter) => BindingSource; // 获取命令的绑定源public Binding IsCheckedBinding { get; set; } // 获取或设置命令的 IsChecked 绑定public Binding GetIsCheckedBinding(object parameter) => IsCheckedBinding; // 获取命令的 IsChecked 绑定public string HelpTopic { get; set; } // 获取或设置命令的帮助主题public string GetHelpTopic(object parameter) => HelpTopic; // 获取命令的帮助主题public string Shortcut // 获取或设置命令的快捷键{get { return _Shortcut; }set { _Shortcut = value; RaisePropertyChanged(); }}string _Shortcut;//--------------------------------------------------------------------------------------------------// 构造函数,接收执行操作的 Actionpublic ActionCommand(Action execute) : base(execute){}// 构造函数,接收执行操作的 Action 和判断是否可执行的 Func<bool>public ActionCommand(Action execute, Func<bool> canExecute) : base(execute, canExecute){}//--------------------------------------------------------------------------------------------------// PropertyChanged 事件public event PropertyChangedEventHandler PropertyChanged;// 触发 PropertyChanged 事件void RaisePropertyChanged([CallerMemberName] string propertyName = null){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}}//--------------------------------------------------------------------------------------------------//--------------------------------------------------------------------------------------------------// 泛型类 ActionCommand<T>,实现 IActionCommand 接口,继承自 RelayCommand<T>public class ActionCommand<T> : RelayCommand<T>, IActionCommand{public Func<T, string> Header { get; set; } // 获取或设置命令的标题public string GetHeader(object parameter) => Header?.Invoke(ConvertParameter(parameter)); // 获取命令的标题public Func<T, string> Title { get; set; } // 获取或设置命令的标题public string GetTitle(object parameter) => Title?.Invoke(ConvertParameter(parameter)); // 获取命令的标题public Func<T, string> Icon { get; set; } // 获取或设置命令的图标public string GetIcon(object parameter) => Icon?.Invoke(ConvertParameter(parameter)); // 获取命令的图标public Func<T, (object Object, string Path)> BindingSource { get; set; } // 获取或设置命令的绑定源public (object Object, string Path) GetBindingSource(object parameter) => BindingSource?.Invoke(ConvertParameter(parameter)) ?? (null, null); // 获取命令的绑定源public Func<T, string> Description { get; set; } // 获取或设置命令的描述public string GetDescription(object parameter) => Description?.Invoke(ConvertParameter(parameter)); // 获取命令的描述public Func<T, Binding> IsCheckedBinding { get; set; } // 获取或设置命令的 IsChecked 绑定public Binding GetIsCheckedBinding(object parameter) => IsCheckedBinding?.Invoke(ConvertParameter(parameter)); // 获取命令的 IsChecked 绑定public Func<T, string> HelpTopic { get; set; } // 获取或设置命令的帮助主题public string GetHelpTopic(object parameter) => HelpTopic?.Invoke(ConvertParameter(parameter)); // 获取命令的帮助主题public string Shortcut // 获取或设置命令的快捷键{get { return _Shortcut; }set { _Shortcut = value; RaisePropertyChanged(); }}string _Shortcut;//--------------------------------------------------------------------------------------------------// 构造函数,接收执行操作的 Action<T>public ActionCommand(Action<T> execute) : base(execute){}// 构造函数,接收执行操作的 Action<T> 和判断是否可执行的 Predicate<T>public ActionCommand(Action<T> execute, Predicate<T> canExecute) : base(execute, canExecute){}// 构造函数,接收执行操作的 Action<T> 和判断是否可执行的 Func<bool>public ActionCommand(Action<T> execute, Func<bool> canExecute) : base(execute, canExecute){}//--------------------------------------------------------------------------------------------------// PropertyChanged 事件public event PropertyChangedEventHandler PropertyChanged;// 触发 PropertyChanged 事件void RaisePropertyChanged([CallerMemberName] string propertyName = null){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));}}
}

这段代码定义了两个类 ActionCommandActionCommand<T>,它们实现了 IActionCommand 接口,其中:

  • ActionCommand 类用于表示没有参数的命令,而 ActionCommand<T> 类用于表示带有一个参数的命令。
  • 这两个类都继承自 RelayCommand,它们充当了命令的执行器,提供了执行操作和判断是否可执行的功能。
  • 接口 IActionCommand 定义了获取命令各种属性的方法,如标题、图标、描述、快捷键等。
  • 这些命令类还实现了 INotifyPropertyChanged 接口,以便在属性值改变时通知其他对象。
  • 通过这些类,可以在 WPF 应用程序中方便地定义和使用命令,并且支持命令属性的动态绑定和更新。

7.

using System;
using System.Windows.Input;namespace Macad.Presentation
{/// <summary>/// 定义一个将命令转发到预定义委托处理程序的命令。/// </summary>public class RelayCommand : ICommand{readonly Action _execute; // 要执行的方法readonly Func<bool> _canExecute; // 决定命令是否可以执行的方法/// <summary>/// 初始化 <see cref="RelayCommand"/> 类的新实例。/// </summary>/// <param name="execute">命令触发时要执行的方法。</param>public RelayCommand(Action execute): this(execute, null){}/// <summary>/// 初始化 <see cref="RelayCommand"/> 类的新实例。/// </summary>/// <param name="execute">命令触发时要执行的方法。</param>/// <param name="canExecute">用于确定命令是否可以执行的方法。</param>public RelayCommand(Action execute, Func<bool> canExecute){if (execute == null)throw new ArgumentNullException(nameof(execute));_execute = execute;_canExecute = canExecute;}/// <summary>/// 定义确定命令在其当前状态下是否可以执行的方法。/// </summary>/// <param name="parameter">命令使用的数据。如果命令不需要传递数据,则此对象可以设置为 null。</param>/// <returns>/// 如果此命令可以执行,则为 true;否则为 false。/// </returns>[System.Diagnostics.DebuggerStepThrough]public bool CanExecute(object parameter){return (_canExecute is null) || _canExecute.Invoke();}[System.Diagnostics.DebuggerStepThrough]public bool CanExecute(){return (_canExecute is null) || _canExecute.Invoke();}/// <summary>/// 当影响命令是否应执行的更改发生时发生。/// </summary>public event EventHandler CanExecuteChanged{add { CommandManager.RequerySuggested += value; } // 当 CommandManager 提示重新查询时,添加事件处理程序remove { CommandManager.RequerySuggested -= value; } // 移除事件处理程序}/// <summary>/// 定义在调用命令时要调用的方法。/// </summary>/// <param name="parameter">命令使用的数据。如果命令不需要传递数据,则此对象可以设置为 null。</param>public void Execute(object parameter){_execute(); // 执行命令}public void Execute(){_execute(); // 执行命令}}
}

这段代码定义了一个名为 RelayCommand 的类,用于表示一个将命令转发到预定义委托处理程序的命令。它实现了 ICommand 接口,其中:

  • _execute 字段保存要执行的方法,_canExecute 字段保存确定命令是否可执行的方法。
  • 通过构造函数可以指定要执行的方法和确定是否可执行的方法。
  • CanExecute 方法确定命令在当前状态下是否可以执行,如果 _canExecute 方法为 null 或者返回 true,则认为命令可以执行。
  • CanExecuteChanged 事件在影响命令是否应执行的更改发生时触发。
  • Execute 方法定义在调用命令时要调用的方法,它执行 _execute 中保存的方法。

这个 RelayCommand 类可以用于在 WPF 应用程序中定义和使用命令,使得视图和视图模型之间的交互更加灵活和简洁。

8.

using System;
using System.Globalization;
using System.Windows.Input;namespace Macad.Presentation
{/// <summary>/// 定义一个将命令转发到预定义委托处理程序的命令。/// </summary>public class RelayCommand<T> : ICommand{readonly Action<T> _execute; // 要执行的方法readonly Predicate<T> _canExecute; // 确定命令是否可以执行的方法readonly Func<bool> _canExecute2; // 用于确定命令是否可以执行的方法(另一种方式)/// <summary>/// 初始化 <see cref="RelayCommand"/> 类的新实例。/// </summary>/// <param name="execute">命令触发时要执行的方法。</param>public RelayCommand(Action<T> execute){_execute = execute ?? throw new ArgumentNullException(nameof(execute)); // 如果 execute 为 null,则抛出异常}/// <summary>/// 初始化 <see cref="RelayCommand"/> 类的新实例。/// </summary>/// <param name="execute">命令触发时要执行的方法。</param>/// <param name="canExecute">用于确定命令是否可以执行的方法。</param>public RelayCommand(Action<T> execute, Predicate<T> canExecute){_execute = execute ?? throw new ArgumentNullException(nameof(execute)); // 如果 execute 为 null,则抛出异常_canExecute = canExecute; // 保存确定命令是否可以执行的方法}/// <summary>/// 初始化 <see cref="RelayCommand"/> 类的新实例。/// </summary>/// <param name="execute">命令触发时要执行的方法。</param>/// <param name="canExecute">用于确定命令是否可以执行的方法。</param>public RelayCommand(Action<T> execute, Func<bool> canExecute){_execute = execute ?? throw new ArgumentNullException(nameof(execute)); // 如果 execute 为 null,则抛出异常_canExecute2 = canExecute; // 保存确定命令是否可以执行的方法(另一种方式)}/// <summary>/// 定义确定命令在其当前状态下是否可以执行的方法。/// </summary>/// <param name="parameter">命令使用的数据。如果命令不需要传递数据,则此对象可以设置为 null。</param>/// <returns>/// 如果此命令可以执行,则为 true;否则为 false。/// </returns>[System.Diagnostics.DebuggerStepThrough]public bool CanExecute(object parameter){if(_canExecute != null) // 如果 _canExecute 方法不为 nullreturn _canExecute.Invoke(ConvertParameter(parameter)); // 调用 _canExecute 方法判断命令是否可以执行if (_canExecute2 != null) // 如果 _canExecute2 方法不为 nullreturn _canExecute2.Invoke(); // 调用 _canExecute2 方法判断命令是否可以执行return true; // 默认情况下认为命令可以执行}/// <summary>/// 当影响命令是否应执行的更改发生时发生。/// </summary>public event EventHandler CanExecuteChanged{add { CommandManager.RequerySuggested += value; } // 当 CommandManager 提示重新查询时,添加事件处理程序remove { CommandManager.RequerySuggested -= value; } // 移除事件处理程序}/// <summary>/// 定义在调用命令时要调用的方法。/// </summary>/// <param name="parameter">命令使用的数据。如果命令不需要传递数据,则此对象可以设置为 null。</param>public void Execute(object parameter){_execute(ConvertParameter(parameter)); // 调用 _execute 方法执行命令}/// <summary>/// 定义在调用命令时要调用的方法。/// </summary>/// <param name="parameter">命令使用的数据。如果命令不需要传递数据,则此对象可以设置为 null。</param>public void Execute(T parameter){_execute(parameter); // 调用 _execute 方法执行命令}protected T ConvertParameter(object parameter){if (parameter is string) // 如果参数是字符串类型{if (typeof(T) == typeof(string)) // 如果 T 的类型是字符串类型return (T)parameter; // 直接转换返回var s = (string)parameter;if (string.IsNullOrEmpty(s)) // 如果字符串为空或 nullreturn default(T); // 返回默认值if (typeof(T).IsEnum) // 如果 T 的类型是枚举return (T)Enum.Parse(typeof(T), s, true); // 解析枚举并返回return (T)Convert.ChangeType(s, typeof(T), CultureInfo.InvariantCulture); // 使用 ChangeType 转换并返回}if (parameter is T) // 如果参数的类型与 T 相同{return (T)parameter; // 直接返回}if (parameter == null) // 如果参数为 null{if (typeof(T) == typeof(double)) // 如果 T 的类型是双精度浮点数return (T) (object) double.NaN; // 返回 NaNif (typeof(T) == typeof(float)) // 如果 T 的类型是单精度浮点数return (T) (object) float.NaN; // 返回 NaNif (typeof(T) == typeof(int)) // 如果 T 的类型是整数return (T) (object) int.MinValue; // 返回最小整数值}return default(T); // 返回默认值}}
}

这段代码定义了一个名为 RelayCommand<T> 的泛型类,用于表示一个将命令转发到预定义委托处理程序的命令。它实现了 ICommand 接口,其中:

  • _execute 字段保存要执行的方法,_canExecute 字段保存确定命令是否可执行的方法,_canExecute2 字段保存确定命令是否可执行的方法(另一种方式)。
  • 通过构造函数可以指定要执行的方法和确定是否可执行的方法。
  • CanExecute 方法确定命令在当前状态下是否可以执行,如果 _canExecute_canExecute2 方法不为 null,则分别调用它们来判断命令是否可以执行。
  • CanExecuteChanged 事件在影响命令是否应执行的更改发生时触发。
  • Execute 方法定义在调用命令时要调用的方法,它执行 _execute 中保存的方法,并通过 ConvertParameter 方法将传递的参数转换为指定类型。

9.common

namespace Macad.Presentation
{// 定义了一个名为 ValueUnits 的枚举public enum ValueUnits{None,           // 表示没有单位Length,         // 表示长度单位Degree,         // 表示角度单位Percent,        // 表示百分比单位DotsPerInch     // 表示每英寸的点数单位}
}

这段代码定义了一个名为 ValueUnits 的枚举,其中包含了一些表示不同单位的成员,包括 None(没有单位)、Length(长度单位)、Degree(角度单位)、Percent(百分比单位)和 DotsPerInch(每英寸的点数单位)。这个枚举可能用于表示各种测量值的单位,例如尺寸、角度、比例等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 数据输入输出

本文 我们来说 数据的输入与输出 及数据的运算 在程序的运算工程中 往往需要输入一些数据 而程序的运算 所得到的运算结果又需要输出给用户 因此 数据的输入与输出 就显得非常重要 在C语言中 不提供专门的输入输出语句 所有的输入输出 都是通过对标准库的调用 来实现的 一般 …

电池电量监测系统设计 单片机+LabVIEW+Matlab+Protues+Keil程序

目录 前言 提供 软件 系统展示 1.放电试验及其处理 2.硬件系统原理图 3.下位机程序 4.显示 5.上位机界面 6.上位机程序 7.文档 资料下载地址&#xff1a;电池电量监测系统设计 单片机LabVIEWMatlabProtuesKeil程序 前言 这套系统首先使用Matlab分析获得了电压…

KL散度的非负性证明

KL散度主要是用于衡量两个分布之间的差异。KL散度的公式如下&#xff1a; 其中&#xff0c;p&#xff0c;q分别是两个分布&#xff0c;且有&#xff1a; 证明KL散度的非负性&#xff0c;即证明&#xff1a; 即证明&#xff1a; 即证明&#xff1a; 由吉布斯不等式可知&#…

大模型(Large Models):探索人工智能领域的新边界

&#x1f31f;文章目录 &#x1f31f;大模型的定义与特点&#x1f31f;模型架构&#x1f31f;大模型的训练策略&#x1f31f;大模型的优化方法&#x1f31f;大模型的应用案例 随着人工智能技术的飞速发展&#xff0c;大模型&#xff08;Large Models&#xff09;成为了引领深度…

[C++]让C++的opencv库支持写出h264格式视频

当我们写下面测试代码时候&#xff1a; #include <opencv2/opencv.hpp>int main() {cv::VideoCapture cap("E:\\car.mp4"); // 打开默认摄像头if (!cap.isOpened()) {std::cout << "读取完毕!" << std::endl;return -1;}double fps ca…

Ja-netfilter(idea激活码破解原理)分析

Ja-netfilter&#xff08;idea破解&#xff09;分析 简介 ja-netfilter是一款可以破解jetbrainsIDE系列的javaagent jar 包。 原理简介 通过javaagent创造修改字节码的时机。通过asm修改相关类&#xff0c;达到hook特定方法的作用。主要依赖power&#xff08;rsa方法hook&a…

User nginx 写一个脚本,分析nginx的日志,自动将访问攻击路径的IP,放到nginx的黑名

要编写一个脚本分析 Nginx 日志并自动把特定路径访问者的 IP 地址加入黑名单&#xff0c;我们可以采用以下策略&#xff1a; 分析日志&#xff1a;定期分析 Nginx 日志文件以找到访问特定路径的 IP 地址。更新黑名单&#xff1a;将这些 IP 地址添加到 Nginx 的黑名单配置中。重…

在 Google Cloud 上轻松部署开放大语言模型

今天&#xff0c;“在 Google Cloud 上部署”功能正式上线&#xff01; 这是 Hugging Face Hub 上的一个新功能&#xff0c;让开发者可以轻松地将数千个基础模型使用 Vertex AI 或 Google Kubernetes Engine (GKE) 部署到 Google Cloud。 Model Garden (模型库) 是 Google Clou…

【LeetCode刷题记录】238. 除自身以外数组的乘积

238 除自身以外数组的乘积 给你一个整数数组 nums&#xff0c;返回数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据保证数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位整数范围内。 请不要使用除法&#xff0c…

[Linux基础]ln硬链接和ln -s软链接的方法参数及区别

区别&#xff1a; 1、ln创建硬链接&#xff1b;ln -s 创建软链接 2、硬链接的两个文件指向同一个inode&#xff08;inode&#xff1a;存放着文件的目录、权限、block块编号等信息&#xff09;&#xff1b;软链接的目标文件指向源文件&#xff0c;目标文件内存储的是源文件的目…

2024认证杯数学建模C题思路模型代码

目录 2024认证杯数学建模C题思路模型代码&#xff1a;4.11开赛后第一时间更新&#xff0c;获取见文末名片 以下为2023年认证杯C题&#xff1a; 2024年认证杯数学建模C题思路模型代码见此 2024认证杯数学建模C题思路模型代码&#xff1a;4.11开赛后第一时间更新&#xff0c;获…

JavaScript进阶6之函数式编程与ES6ESNext规范

函数式编程 柯里化currycurrycompose示例&#xff1a;简化版展开写&#xff1a; debug示例一&#xff1a;示例二&#xff1a; 模板字符串css in js方案 箭头函数问题 生成器 generator应用场景 反射 Reflect 柯里化curry compose是curry的应用 在 lodash/fp underscore ramba …

53.网络游戏逆向分析与漏洞攻防-基础数据分析筛选-逆向分析寻找消息数据解压缩过程

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…

Spring Boot 整合 Apache Phoenix 进行 HBase 数据操作指南

在Spring Boot中集成Apache Phoenix以便执行SQL查询和表操作&#xff0c;你可以使用Phoenix的JDBC驱动。下面是一个简单的示例&#xff0c;展示了如何在Spring Boot应用中集成Phoenix&#xff0c;并执行基本的表操作和查询。 1. 添加依赖 首先&#xff0c;你需要在你的pom.xm…

C# Solidworks二次开发:访问BOM表特性相关API详解

大家好&#xff0c;今天要讲的文章是和BOM表特性相关的API。 下面为要介绍的API&#xff1a; &#xff08;1&#xff09;第一个为GetConfigurationCount&#xff0c;这个API的含义为获取此BOM表可用或在此BOM表中使用的配置数&#xff0c;下面是官方的具体解释&#xff1a; …

phpMyadmin 设置显示完整内容

额外选项这里&#xff0c;默认部分内容改成完整内容 方案&#xff1a; 版本>4.5.4.1&#xff0c;修改文件&#xff1a;config.inc.php&#xff0c;添加一行代码&#xff1a; if ( !isset($_REQUEST[pftext])) $_REQUEST[pftext] F;

什么是已检查异常和未检查异常?

在Java中&#xff0c;已检查异常&#xff08;Checked Exceptions&#xff09;和未检查异常&#xff08;Unchecked Exceptions&#xff09;是两种主要的异常类型。 已检查异常&#xff08;Checked Exceptions&#xff09;&#xff1a;这种类型的异常在编译期就会被检查&#xf…

浮点数的表示

王道考研ppt总结&#xff1a; 二、个人理解 浮点数解决的是定点数的位数局限&#xff0c;导致表示范围有限的问题 阶码&#xff1a;由阶符和数值部分组成&#xff0c;阶符为&#xff0c;小数点向左移动&#xff0c;否则向右移动&#xff1b;数值部分&#xff0c;是底数的几次幂…

【算法】标签算法及其运作流程

标签算法 1. 标签算法及其运作流程2. 标签算法主要有哪些&#xff1f;3.用python语言举例实现聚类 1. 标签算法及其运作流程 标签算法是一种用于自动为数据或文本内容添加标签或分类的算法。这些标签可以帮助组织、检索和理解数据&#xff0c;是信息管理和数据挖掘中的重要工具…

区块链媒体推广的8个成功案例解析-华媒舍

区块链领域作为一个新兴行业&#xff0c;媒体推广对于项目的成功发展起着至关重要的作用。本文将从八个成功案例中来分析区块链媒体推广的重要性和成功策略。 1. 媒体报道对于区块链项目的重要影响 媒体报道是提升区块链项目知名度和用户认可度的重要手段。对于区块链项目来说…