过滤器模式 rust和java的实现

本体防火墙:用OWL+Rust构建AI代理语义边界控制系统 本体(Ontology)是知识工程中定义概念、关系与逻辑约束的形式化模型,区别于JSON Schema的语法校验和规则引擎的命题逻辑,它基于描述逻辑(Description Logic)实现动态语义推理。其核心价值在于将领域知识转化为可执行的语义边界,支撑AI代理在医疗、金融等强合规场景中安全决策。技术上需融合OWL建模、Rust高性能运行时与SPARQL查询验证,兼顾类型安全、低延迟与可解释性。OntoGuard正是这一思想的工程落地——把本体编译为嵌入Agent执行链的轻量级守卫模块,实现从‘模型会不会 阅读详情

过滤器模式

过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。

实现

我们将创建一个 Person 对象、Criteria 接口和实现了该接口的实体类,来过滤 Person 对象的列表。CriteriaPatternDemo 类使用 Criteria 对象,基于各种标准和它们的结合来过滤 Person 对象的列表。
我们制作一个Person实体类,Criteria为标准条件,CriteriaMale等为实现的具体判断器,是需要为person类使用meetCriteria方法便可以进行不同条件的判断。
过滤器模式的 UML 图

过滤器模式

过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。

实现

我们将创建一个 Person 对象、Criteria 接口和实现了该接口的实体类,来过滤 Person 对象的列表。CriteriaPatternDemo 类使用 Criteria 对象,基于各种标准和它们的结合来过滤 Person 对象的列表。
我们制作一个Person实体类,Criteria为标准条件,CriteriaMale等为实现的具体判断器,是需要为person类使用meetCriteria方法便可以进行不同条件的判断。
过滤器模式的 UML 图
yVjbbH1Z-1699690395036)

java

步骤 1
创建一个类,在该类上应用标准。

Person.java

public class Person {
   
   private String name;
   private String gender;
   private String maritalStatus;
 
   public Person(String name,String gender,String maritalStatus){
      this.name = name;
      this.gender = gender;
      this.maritalStatus = maritalStatus;    
   }
 
   public String getName() {
      return name;
   }
   public String getGender() {
      return gender;
   }
   public String getMaritalStatus() {
      return maritalStatus;
   }  
}

步骤 2
为标准(Criteria)创建一个接口。

Criteria.java

import java.util.List;
 
public interface Criteria {
   public List<Person> meetCriteria(List<Person> persons);
}

步骤 3
创建实现了 Criteria 接口的实体类。

CriteriaMale.java

import java.util.ArrayList;
import java.util.List;
 
public class CriteriaMale implements Criteria {
 
   @Override
   public List<Person> meetCriteria(List<Person> persons) {
      List<Person> malePersons = new ArrayList<Person>(); 
      for (Person person : persons) {
         if(person.getGender().equalsIgnoreCase("MALE")){
            malePersons.add(person);
         }
      }
      return malePersons;
   }
}

CriteriaFemale.java

import java.util.ArrayList;
import java.util.List;
 
public class CriteriaFemale implements Criteria {
 
   @Override
   public List<Person> meetCriteria(List<Person> persons) {
      List<Person> femalePersons = new ArrayList<Person>(); 
      for (Person person : persons) {
         if(person.getGender().equalsIgnoreCase("FEMALE")){
            femalePersons.add(person);
         }
      }
      return femalePersons;
   }
}

CriteriaSingle.java

import java.util.ArrayList;
import java.util.List;
 
public class CriteriaSingle implements Criteria {
 
   @Override
   public List<Person> meetCriteria(List<Person> persons) {
      List<Person> singlePersons = new ArrayList<Person>(); 
      for (Person person : persons) {
         if(person.getMaritalStatus().equalsIgnoreCase("SINGLE")){
            singlePersons.add(person);
         }
      }
      return singlePersons;
   }
}

AndCriteria.java

import java.util.List;
 
public class AndCriteria implements Criteria {
 
   private Criteria criteria;
   private Criteria otherCriteria;
 
   public AndCriteria(Criteria criteria, Criteria otherCriteria) {
      this.criteria = criteria;
      this.otherCriteria = otherCriteria; 
   }
 
   @Override
   public List<Person> meetCriteria(List<Person> persons) {
      List<Person> firstCriteriaPersons = criteria.meetCriteria(persons);     
      return otherCriteria.meetCriteria(firstCriteriaPersons);
   }
}

OrCriteria.java

import java.util.List;
 
public class OrCriteria implements Criteria {
 
   private Criteria criteria;
   private Criteria otherCriteria;
 
   public OrCriteria(Criteria criteria, Criteria otherCriteria) {
      this.criteria = criteria;
      this.otherCriteria = otherCriteria; 
   }
 
   @Override
   public List<Person> meetCriteria(List<Person> persons) {
      List<Person> firstCriteriaItems = criteria.meetCriteria(persons);
      List<Person> otherCriteriaItems = otherCriteria.meetCriteria(persons);
 
      for (Person person : otherCriteriaItems) {
         if(!firstCriteriaItems.contains(person)){
           firstCriteriaItems.add(person);
         }
      }  
      return firstCriteriaItems;
   }
}

步骤4
使用不同的标准(Criteria)和它们的结合来过滤 Person 对象的列表。
CriteriaPatternDemo.java

import java.util.ArrayList; 
import java.util.List;
 
public class CriteriaPatternDemo {
   public static void main(String[] args) {
      List<Person> persons = new ArrayList<Person>();
 
      persons.add(new Person("Robert","Male", "Single"));
      persons.add(new Person("John","Male", "Married"));
      persons.add(new Person("Laura","Female", "Married"));
      persons.add(new Person("Diana","Female", "Single"));
      persons.add(new Person("Mike","Male", "Single"));
      persons.add(new Person("Bobby","Male", "Single"));
 
      Criteria male = new CriteriaMale();
      Criteria female = new CriteriaFemale();
      Criteria single = new CriteriaSingle();
      Criteria singleMale = new AndCriteria(single, male);
      Criteria singleOrFemale = new OrCriteria(single, female);
 
      System.out.println("Males: ");
      printPersons(male.meetCriteria(persons));
 
      System.out.println("\nFemales: ");
      printPersons(female.meetCriteria(persons));
 
      System.out.println("\nSingle Males: ");
      printPersons(singleMale.meetCriteria(persons));
 
      System.out.println("\nSingle Or Females: ");
      printPersons(singleOrFemale.meetCriteria(persons));
   }
 
   public static void printPersons(List<Person> persons){
      for (Person person : persons) {
         System.out.println("Person : [ Name : " + person.getName() 
            +", Gender : " + person.getGender() 
            +", Marital Status : " + person.getMaritalStatus()
            +" ]");
      }
   }      
}

步骤 5
执行程序,输出结果:

Males: 
Person : [ Name : Robert, Gender : Male, Marital Status : Single ]
Person : [ Name : John, Gender : Male, Marital Status : Married ]
Person : [ Name : Mike, Gender : Male, Marital Status : Single ]
Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]

Females: 
Person : [ Name : Laura, Gender : Female, Marital Status : Married ]
Person : [ Name : Diana, Gender : Female, Marital Status : Single ]

Single Males: 
Person : [ Name : Robert, Gender : Male, Marital Status : Single ]
Person : [ Name : Mike, Gender : Male, Marital Status : Single ]
Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]

Single Or Females: 
Person : [ Name : Robert, Gender : Male, Marital Status : Single ]
Person : [ Name : Diana, Gender : Female, Marital Status : Single ]
Person : [ Name : Mike, Gender : Male, Marital Status : Single ]
Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]
Person : [ Name : Laura, Gender : Female, Marital Status : Married ]

rust

由于时间关系,并没有实现or条件,大家有兴趣可以自行补充

// 设置人类实体类
#[derive(Clone)]
struct Person{
    name:String,
    gender:String,
    marital_status:String
}
impl Person {
 
    fn get_gender(&self)->&str {
        self.gender.as_ref()
    }
    fn get_marital_status(&self)->&str {
        self.marital_status.as_ref()
    }
}
// 设置过滤标准特征
trait Criteria {
  fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person>; 
}
// 设置男性
struct CriteriaMale{}
// 重写男性评判标准
impl   Criteria for CriteriaMale {
    fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person>{
        persons.into_iter().filter(|x| x.get_gender().eq_ignore_ascii_case("MALE")).collect()
    }
}
// 设置女性
struct CriteriaFemale{}
// 设置女性标准
impl   Criteria for CriteriaFemale{
    fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person>{
        persons.into_iter().filter(|x| x.get_gender().eq_ignore_ascii_case("FEMALE")).collect()
    }
}
// 设置单身标准
struct CriteriaSingle{}

impl   Criteria for CriteriaSingle{
    fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person>{
        persons.into_iter().filter(|x| x.get_marital_status().eq_ignore_ascii_case("SINGLE")).collect()
    }
}
// 设置and标准,求交集
struct AndCriteria  {
    criteria:Box<dyn Criteria>,
    other_criteria:Box<dyn Criteria>
}

impl Criteria for AndCriteria {
    fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person> {
        self.other_criteria.meet_criteria(self.criteria.meet_criteria(persons))
    }
}
// struct OrCriteria {
//     criteria:Box<dyn Criteria>,
//     other_criteria:Box<dyn Criteria>
// }

// impl Criteria for OrCriteria{
//     fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person> {
//         let mut first_criteria_items = self.criteria.meet_criteria(persons);
//         let other_criteria_items = self.other_criteria.meet_criteria(persons);
//         for o in other_criteria_items  {
//             if !other_criteria_items.contains(&o) {
//                 first_criteria_items.push(o);
//             }
//         }
//         first_criteria_items

//     }
// }
fn print_persons(persons:Vec<Person>) {
    persons.into_iter().for_each(|x| println!("Person : [NAME: {},Gender : {} ,Maeital Status : {} ]",x.name,x.gender,x.marital_status));
}
fn main() {
    let mut persons=Vec::new();
    persons.push(Person{name:String::from("Robert"),gender:String::from("Male"),marital_status:String::from("Single")});
    persons.push(Person{name:String::from("John"),gender:String::from("Male"),marital_status:String::from("Married")});
    persons.push(Person{name:String::from("Laura"),gender:String::from("Female"),marital_status:String::from("Married")});
    persons.push(Person{name:String::from("Diana"),gender:String::from("Female"),marital_status:String::from("Single")});

    let male=Box::new(CriteriaMale{});
    let female=Box::new(CriteriaFemale{});
    let single_male=AndCriteria{criteria:Box::new(CriteriaSingle{}),other_criteria:Box::new(CriteriaMale{})};
    // let single_or_female=OrCriteria{criteria:Box::new(CriteriaMale{}),other_criteria:Box::new(CriteriaFemale{})};
    println!("男士");
    print_persons(male.meet_criteria(persons.clone()));
    println!("女士");
    print_persons(female.meet_criteria(persons.clone()));
    println!("单身男士");
    print_persons(single_male.meet_criteria(persons))


}

java

步骤 1
创建一个类,在该类上应用标准。

Person.java

public class Person {
   
   private String name;
   private String gender;
   private String maritalStatus;
 
   public Person(String name,String gender,String maritalStatus){
      this.name = name;
      this.gender = gender;
      this.maritalStatus = maritalStatus;    
   }
 
   public String getName() {
      return name;
   }
   public String getGender() {
      return gender;
   }
   public String getMaritalStatus() {
      return maritalStatus;
   }  
}

步骤 2
为标准(Criteria)创建一个接口。

Criteria.java

import java.util.List;
 
public interface Criteria {
   public List<Person> meetCriteria(List<Person> persons);
}

步骤 3
创建实现了 Criteria 接口的实体类。

CriteriaMale.java

import java.util.ArrayList;
import java.util.List;
 
public class CriteriaMale implements Criteria {
 
   @Override
   public List<Person> meetCriteria(List<Person> persons) {
      List<Person> malePersons = new ArrayList<Person>(); 
      for (Person person : persons) {
         if(person.getGender().equalsIgnoreCase("MALE")){
            malePersons.add(person);
         }
      }
      return malePersons;
   }
}

CriteriaFemale.java

import java.util.ArrayList;
import java.util.List;
 
public class CriteriaFemale implements Criteria {
 
   @Override
   public List<Person> meetCriteria(List<Person> persons) {
      List<Person> femalePersons = new ArrayList<Person>(); 
      for (Person person : persons) {
         if(person.getGender().equalsIgnoreCase("FEMALE")){
            femalePersons.add(person);
         }
      }
      return femalePersons;
   }
}

CriteriaSingle.java

import java.util.ArrayList;
import java.util.List;
 
public class CriteriaSingle implements Criteria {
 
   @Override
   public List<Person> meetCriteria(List<Person> persons) {
      List<Person> singlePersons = new ArrayList<Person>(); 
      for (Person person : persons) {
         if(person.getMaritalStatus().equalsIgnoreCase("SINGLE")){
            singlePersons.add(person);
         }
      }
      return singlePersons;
   }
}

AndCriteria.java

import java.util.List;
 
public class AndCriteria implements Criteria {
 
   private Criteria criteria;
   private Criteria otherCriteria;
 
   public AndCriteria(Criteria criteria, Criteria otherCriteria) {
      this.criteria = criteria;
      this.otherCriteria = otherCriteria; 
   }
 
   @Override
   public List<Person> meetCriteria(List<Person> persons) {
      List<Person> firstCriteriaPersons = criteria.meetCriteria(persons);     
      return otherCriteria.meetCriteria(firstCriteriaPersons);
   }
}

OrCriteria.java

import java.util.List;
 
public class OrCriteria implements Criteria {
 
   private Criteria criteria;
   private Criteria otherCriteria;
 
   public OrCriteria(Criteria criteria, Criteria otherCriteria) {
      this.criteria = criteria;
      this.otherCriteria = otherCriteria; 
   }
 
   @Override
   public List<Person> meetCriteria(List<Person> persons) {
      List<Person> firstCriteriaItems = criteria.meetCriteria(persons);
      List<Person> otherCriteriaItems = otherCriteria.meetCriteria(persons);
 
      for (Person person : otherCriteriaItems) {
         if(!firstCriteriaItems.contains(person)){
           firstCriteriaItems.add(person);
         }
      }  
      return firstCriteriaItems;
   }
}

步骤4
使用不同的标准(Criteria)和它们的结合来过滤 Person 对象的列表。
CriteriaPatternDemo.java

import java.util.ArrayList; 
import java.util.List;
 
public class CriteriaPatternDemo {
   public static void main(String[] args) {
      List<Person> persons = new ArrayList<Person>();
 
      persons.add(new Person("Robert","Male", "Single"));
      persons.add(new Person("John","Male", "Married"));
      persons.add(new Person("Laura","Female", "Married"));
      persons.add(new Person("Diana","Female", "Single"));
      persons.add(new Person("Mike","Male", "Single"));
      persons.add(new Person("Bobby","Male", "Single"));
 
      Criteria male = new CriteriaMale();
      Criteria female = new CriteriaFemale();
      Criteria single = new CriteriaSingle();
      Criteria singleMale = new AndCriteria(single, male);
      Criteria singleOrFemale = new OrCriteria(single, female);
 
      System.out.println("Males: ");
      printPersons(male.meetCriteria(persons));
 
      System.out.println("\nFemales: ");
      printPersons(female.meetCriteria(persons));
 
      System.out.println("\nSingle Males: ");
      printPersons(singleMale.meetCriteria(persons));
 
      System.out.println("\nSingle Or Females: ");
      printPersons(singleOrFemale.meetCriteria(persons));
   }
 
   public static void printPersons(List<Person> persons){
      for (Person person : persons) {
         System.out.println("Person : [ Name : " + person.getName() 
            +", Gender : " + person.getGender() 
            +", Marital Status : " + person.getMaritalStatus()
            +" ]");
      }
   }      
}

步骤 5
执行程序,输出结果:

Males: 
Person : [ Name : Robert, Gender : Male, Marital Status : Single ]
Person : [ Name : John, Gender : Male, Marital Status : Married ]
Person : [ Name : Mike, Gender : Male, Marital Status : Single ]
Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]

Females: 
Person : [ Name : Laura, Gender : Female, Marital Status : Married ]
Person : [ Name : Diana, Gender : Female, Marital Status : Single ]

Single Males: 
Person : [ Name : Robert, Gender : Male, Marital Status : Single ]
Person : [ Name : Mike, Gender : Male, Marital Status : Single ]
Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]

Single Or Females: 
Person : [ Name : Robert, Gender : Male, Marital Status : Single ]
Person : [ Name : Diana, Gender : Female, Marital Status : Single ]
Person : [ Name : Mike, Gender : Male, Marital Status : Single ]
Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]
Person : [ Name : Laura, Gender : Female, Marital Status : Married ]

rust

由于时间关系,并没有实现or条件,大家有兴趣可以自行补充

// 设置人类实体类
#[derive(Clone)]
struct Person{
    name:String,
    gender:String,
    marital_status:String
}
impl Person {
 
    fn get_gender(&self)->&str {
        self.gender.as_ref()
    }
    fn get_marital_status(&self)->&str {
        self.marital_status.as_ref()
    }
}
// 设置过滤标准特征
trait Criteria {
  fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person>; 
}
// 设置男性
struct CriteriaMale{}
// 重写男性评判标准
impl   Criteria for CriteriaMale {
    fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person>{
        persons.into_iter().filter(|x| x.get_gender().eq_ignore_ascii_case("MALE")).collect()
    }
}
// 设置女性
struct CriteriaFemale{}
// 设置女性标准
impl   Criteria for CriteriaFemale{
    fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person>{
        persons.into_iter().filter(|x| x.get_gender().eq_ignore_ascii_case("FEMALE")).collect()
    }
}
// 设置单身标准
struct CriteriaSingle{}

impl   Criteria for CriteriaSingle{
    fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person>{
        persons.into_iter().filter(|x| x.get_marital_status().eq_ignore_ascii_case("SINGLE")).collect()
    }
}
// 设置and标准,求交集
struct AndCriteria  {
    criteria:Box<dyn Criteria>,
    other_criteria:Box<dyn Criteria>
}

impl Criteria for AndCriteria {
    fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person> {
        self.other_criteria.meet_criteria(self.criteria.meet_criteria(persons))
    }
}
// struct OrCriteria {
//     criteria:Box<dyn Criteria>,
//     other_criteria:Box<dyn Criteria>
// }

// impl Criteria for OrCriteria{
//     fn meet_criteria(&self,persons:Vec<Person>)->Vec<Person> {
//         let mut first_criteria_items = self.criteria.meet_criteria(persons);
//         let other_criteria_items = self.other_criteria.meet_criteria(persons);
//         for o in other_criteria_items  {
//             if !other_criteria_items.contains(&o) {
//                 first_criteria_items.push(o);
//             }
//         }
//         first_criteria_items

//     }
// }
fn print_persons(persons:Vec<Person>) {
    persons.into_iter().for_each(|x| println!("Person : [NAME: {},Gender : {} ,Maeital Status : {} ]",x.name,x.gender,x.marital_status));
}
fn main() {
    let mut persons=Vec::new();
    persons.push(Person{name:String::from("Robert"),gender:String::from("Male"),marital_status:String::from("Single")});
    persons.push(Person{name:String::from("John"),gender:String::from("Male"),marital_status:String::from("Married")});
    persons.push(Person{name:String::from("Laura"),gender:String::from("Female"),marital_status:String::from("Married")});
    persons.push(Person{name:String::from("Diana"),gender:String::from("Female"),marital_status:String::from("Single")});

    let male=Box::new(CriteriaMale{});
    let female=Box::new(CriteriaFemale{});
    let single_male=AndCriteria{criteria:Box::new(CriteriaSingle{}),other_criteria:Box::new(CriteriaMale{})};
    // let single_or_female=OrCriteria{criteria:Box::new(CriteriaMale{}),other_criteria:Box::new(CriteriaFemale{})};
    println!("男士");
    print_persons(male.meet_criteria(persons.clone()));
    println!("女士");
    print_persons(female.meet_criteria(persons.clone()));
    println!("单身男士");
    print_persons(single_male.meet_criteria(persons))


}

rust代码仓库

https://github.com/onenewcode/design.git
本教程项目在bin文件夹下的filtert.rs文件中

Rust 日志终极指南:Tracing 概念、架构、配置和全套示例代码 本文共1万7千字,12张配图,10个完整可执行的示例代码完整地解释了tokio-rs/tracing的核心概念,包括Span、Event和Subscriber,解释了整体架构和两套日志API的区别。示例代码演示了所有常见场景,并可复用于实际项目。 阅读详情

相关推荐

Mac用户解决WPS中的俄语显示红线问题(WPS添加外语拼写检查)

我所使用的WPS版本:AppleStore 下载的 MacOs版 3.3.0 首先,对于 在访达-应用程序中,找到WPS,右键-点击“显示包内容” 然后按照下图的索引目录(Contents\Resource\office6\dicts\spellcheck),最后进入一个叫“spellcheck”的文件夹 最后将下载好的字典包(例如上图中的 en_US就代表美式英语;ru_RU就代表俄语) 关于字典包资源下载,我在网上找到一个Google云盘,里面包含了法语,德语,西语,意大利语,葡萄牙.

qq_48159150的博客 7900

Rust语言进阶之filter用法实例(九十四)

本篇目的:Rust语言进阶之filter用法实例在Rust语言中,filter是一个非常实用的迭代器方法,它用于过滤集合中的元素。filter接收一个闭包作为参数,该闭包用于判断集合中每个元素是否满足指定条件。只有返回true的元素会被保留,false的元素会被丢弃。以下是filter《Android系统多媒体进阶实战》Audio工程师进阶系列多媒体系统工程师系列AAOS车载系统+AOSP14系统攻城狮入门视频实战课。

Android系统攻城狮 2490

什么是 MDB-RS232,为什么需要 MDB-RS232适配器 ?

在您需要设计一个售货机,首先需要选择适合您机器的主板,比如安卓主板、树莓派、工控机或者PLC等,这些主板都是没有MDB接口的,而支付设备,比如你选择的纸币器,硬币器,都是MDB接口。那您就需要这个 MDB 适配器,来把MDB接口的支付设备连接到这些串口的主板上,进行通信和控制。MDB-RS232旨在将MDB 协议转换为 RS232 协议,并执行必要的电压转换以及数据路由工作。,能够让主板轻松执行其他任务,不需要考虑协议的具体软硬件的兼容和稳定性问题。专业的设计指导和协助协议分析,丰富的开发文档。

waferstar的博客 1382

Java 程序员的 Rust 进阶:用 Rust 重写 Spring Gateway 网关的核心过滤器,性能提升 300%

GC 抖动:高并发意味着海量临时对象(Request/Response/Context),Young GC 频繁,P99 延迟不可控。内存膨胀:Java 对象头、对齐填充,使得加载同样的数据,Java 内存占用是 C/Rust 的几倍。预热问题:JIT 需要时间编译热点代码,冷启动慢。Rust 通过所有权(Ownership)机制在编译期管理内存,没有运行时 GC。配合Tokio异步运行时,它能提供惊人的吞吐量和像心电图停搏一样平稳的延迟。从 Java 到 Rust,不仅是语言的切换,更是思维模式。

BUG猿的博客 685

相机基础知识讲解:CMOS和CCD

相机基础知识讲解:CMOS和CCD

Coppa的博客 5万+

实例讲解CANoe报文解析使用方法

在日常工作中,经常需要分析车辆产生故障的原因,在电动汽车中,分布式控制器及线束在其中某一个地方出现问题,就有可能造成车辆故障,但是由于电气零件无法直观的观察到哪个部位发生了故障,所以要借助工具测量电气变量或者采集报文信息通过分析,解析出故障原因,从而为车辆的开发,测试,维修提供支持。其中汽车行业最通用的通讯方式就是CAN通讯,本文针对使用CANoe对CAN报文离线分析的使用方法做详细介绍。

qq_43011586的博客 1万+

使用Rust构建高效过滤器:探索rust-cuckoofilter

使用Rust构建高效过滤器:探索rust-cuckoofilter 项目介绍 rust-cuckoofilter 是一个基于Rust编写的概率数据结构库,它实现了 Cuckoo Filter 算法。这种算法在空间效率和性能上优于传统的Bloom Filter,特别是在需要动态添加或删除元素且要求较低错误率(<3%)的应用场景中。Cuckoo Filter通过存储键的指纹来实现高效的成员资格测...

gitblog_00029的博客 549

MATLAB 论文复现——面向紧急需求响应的规模化灵活资源负荷管理快速决策方法

其次,对灵活资源参与EDR的功率分配模型进行了建模,并提出了基于分层分布式共识算法的快速决策方法,对功率分配模型进行快速求解,以满足EDR实时性的需求,在保证较高精度的前提下提高了决策速度。[1]孔祥玉,杨至端,孙裕策,等.面向紧急需求响应的规模化灵活资源负荷管理快速决策方法[J/OL].电力系统自动化,1-13[2024-07-29].http://kns.cnki.net/kcms/detail/32.1180.TP.20240709.1843.002.html.关键词: 规模化灵活资源;

sjr1478的博客 374

推荐开源项目:XORFILTER-RS —— Rust 实现的高效过滤器

推荐开源项目:XORFILTER-RS —— Rust 实现的高效过滤器 在数据处理和分布式系统中,过滤器是一种重要的工具,用于判断某个元素是否可能存在于大规模数据集中,而无需存储所有元素。本文要向您推荐的是一款名为 XORFILTER-RS 的 Rust 库,它实现了高效的 XOR 过滤器,并提供了出色的性能与内存效率。 1、项目介绍 XORFILTER-RS 是一个基于 Rust 语言实现的库...

gitblog_00025的博客 605

ESP32—C3实现网页跳转

用户点击HTML页面中的按钮。浏览器根据按钮的href属性向服务器发送HTTP GET请求。服务器根据请求的URL调用相应的回调函数。服务器发送包含新页面HTML内容的HTTP响应。浏览器解析并显示新的HTML页面。这个过程对于用户来说是无缝的,看起来就像是直接从一个页面跳转到另一个页面。实际上,背后发生了HTTP请求和响应的过程。

qq_59527512的博客 1024

C++ (week6、7):Linux系统编程4:网络

Linux网络:计算机网络概述、TCP协议、Socket编程、IO多路复用机制(select、epoll)、HTTP协议、进程池、线程池、大文件网络传输问题

Edward2022的博客 1431

rust中bloom filter的使用

布隆过滤器 bloom filter

白小白的小白的博客 462

5套高颜值AI漫剧女主设定图!直接拿去做漫剧(附完整提示词)

左侧特写放大表现暖棕眼妆、豆沙唇、红宝石首饰、发丝与针织纹理,四个视图严格保持同一人物脸模、发色、服装、首饰和身体比例,柔和复古棚拍光,低饱和酒红与奶油色配色,真实布料、皮革、金属与宝石材质,高级精致角色资产设定图,高清8K。佩戴珍珠与透明水晶耳坠、纤细珍珠项链;左侧特写放大至胸部以上,清晰表现皮肤、眼妆、发丝、耳饰和针织材质,人物四个视图保持同一脸模、发型、服装、饰品和身体比例,柔和棚拍漫射光,轻微地面阴影,高级细腻材质,真实发丝,细腻皮肤,高精度角色资产设定图,高清8K质感。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1773

Rust构建高性能权限引擎的设计与优化实践

权限管理是现代分布式系统中的核心组件,尤其在ABAC(基于属性的访问控制)模型下,需要处理复杂的策略匹配与高并发校验。传统基于GC语言的实现在性能上面临内存分配与锁竞争等挑战,而Rust凭借所有权系统和零成本抽象特性,能够构建无锁且线程安全的高性能引擎。通过前缀树索引、布隆过滤器等技术优化策略匹配算法,结合Rust特有的并发模型,实测QPS可达传统方案的8-12倍。这种架构特别适用于电商秒杀、金融交易等高并发场景,为系统提供稳定可靠的权限保障。

weixin_33885676的博客 406

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Rust日报】Rust英雄小说

谷歌的 Diff Match Patch 库谷歌的 Diff Match Patch 库提供了三个算法用于对纯文本进行同步操作:Diff: 比较两段纯文本并高效地返回差异列表。Match: 给定一个搜索字符串,在一段纯文本中找到最佳模糊匹配,同时考虑精确度和位置。Patch: 将一系列补丁应用于纯文本,即使底层文本不匹配也会尽最大努力应用补丁。该库最初于2006年为 Google Docs 构建,...

Rust语言学习交流 835

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

从GPU到NPU:Qwen3-VL-2B-Instruct在Mobilint加速栈上的部署实战指南

📦 **Qwen3-VL-2B-Instruct** 是面向 **Mobilint NPU** 硬件编译优化的多模态视觉语言模型,本指南将带你完成 NPU 部署全流程:环境安装、模型加载、图文理解推理,只需 3 行核心代码即可跑通。 ## 快速读懂模型包:2个量化权重 + 1个自动加载配置 在动手部署前,先花 2 分钟了解仓库里有什么。这个模型包由 [README.md](https://l

gitblog_00567的博客 276

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[Rust开发]actix_web::middleware 中间件

例如我要定义一个预先获取请求中header里面的token,如果没有这个token则直接就返回错误。},res})" }))}).run().await这里的核心,是使用wrap_fn + 一个闭包来实现中间件。在示例代码中,wrap_fn 被用来创建一个中间件,这个中间件检查请求头中是否包含 token。如果没有 token,它会返回一个未经授权的错误。

2611

【Rust日报】 Apache Fory Rust:多功能高性能序列化框架

Apache Fory 项目下已经有 Java、 Python、 Golang、 JavaScript 等语言的实现了,现在 Fory Rust 的加入,更是让众多 Rust 开发者感到欣喜。这是一个极快的工具,可将一个目录的结构及其内容转换为单个格式清晰的文本文件,当使用大模型的时候,可以用单个文件提供完整的代码库上下文。工具,它具备结构感知能力,可以在限定的字数内,生成一个紧凑的预览,展示 JSON 文件所包含的数据结构以及代表性数据。headson 是用 Rust 开发的面向 JSON 的。

Rust语言学习交流 732

Rust重构生产级防火墙:性能与安全的完美结合

在网络安全领域,防火墙作为关键基础设施,其性能与可靠性直接影响整体安全防护能力。传统防火墙多采用C/C++开发,虽性能优异,但内存安全和并发安全问题始终存在。Rust语言凭借其所有权模型和零成本抽象特性,成为解决这些问题的理想选择。Rust的所有权系统在编译期即可杜绝内存泄漏和数据竞争,特别适合需要7x24小时运行的防火墙服务。同时,Rust的生态成熟度已足以支持生产级应用,如tokio异步运行时和hyper HTTP库。在实际应用中,Rust版防火墙在内存占用、连接建立延迟和规则检测吞吐等方面均展现出显著

weixin_30697239的博客 360

XOR过滤器:比布隆过滤器更快更小的静态数据集成员查询方案

在计算机科学中,数据结构是优化系统性能的核心。面对海量数据成员查询(如判断一个元素是否属于某个集合)的需求,传统哈希表虽然精确但内存开销巨大。布隆过滤器(Bloom Filter)作为一种经典的概率数据结构,通过多个哈希函数和位数组,以可控的误判率为代价,实现了内存高效的近似成员查询,广泛应用于缓存穿透防护、网络爬虫去重等场景。其技术价值在于用极小的空间快速过滤掉大量绝对不存在的请求,保护后端存储。然而,布隆过滤器在查询时需要多次哈希和内存访问,仍有优化空间。XOR过滤器(XOR Filter)作为一种新兴

weixin_30838873的博客 406

性能提升300%!Rust + Warp构建超高速API服务的底层逻辑

掌握Rust后端开发核心技巧,提升API性能300%。本指南详解如何用Rust + Warp构建高并发、低延迟的Web服务,涵盖异步处理、零成本抽象等底层优化方法,适用于微服务与高性能后端场景,Rust后端开发指南值得收藏。

FastDebug的博客 645

DBX MCP Server 完全指南:用 Rust 原生 MCP 服务让 AI Agent 安全地操作数据库

DBX MCP Server 是 DBX 官方提供的 Model Context Protocol(MCP)服务,它以 Rust 实现核心逻辑,让 Claude Code、Cursor、Windsurf 等兼容 MCP 的 AI 客户端直接复用 DBX 中已经配置好的数据库连接,完成 Schema 查看、SQL 查询、Redis 命令、MongoDB 操作等任务。读完本文,你将掌握该服务的完整安装

gitblog_00709的博客 855

Bilibili-Evolved 性能优化实操手册:3 个场景解决 B 站播放掉帧与内存上涨

Bilibili-Evolved 性能优化按场景排查就行。这篇教程处理三个问题:播放掉帧、内存持续上涨、首次访问慢,每节都是可验证的步骤,做完你能拿到自己的前后对比数据,把帧率拉回 60fps 附近。 ## 一分钟自检:先判断卡顿出在哪一层 做完这一节,你能确定问题在浏览器、网络还是组件,后面不用瞎改。 - 打开浏览器设置页检查版本,不是最新就先升级,再回到卡顿页面复测一次。 - 在浏览器的

gitblog_00685的博客 465

DBX MCP Server 完全指南:用 AI Agent 安全查询 90+ 数据库的 Rust 原生 MCP 服务

DBX MCP Server 是 DBX 数据库客户端为 AI Agent 生态提供的一套 Model Context Protocol(MCP)服务:它让 Claude Code、Cursor、Windsurf 等兼容 MCP 的 AI 工具,直接复用 DBX 中已经配置好的数据库连接来发现 Schema、执行 SQL、操作 Redis、读取 MongoDB,并支持连接管理、Kafka 消息读取

gitblog_00584的博客 315

模式匹配性能优化十大误区,90%的开发者都踩过第3个坑

揭秘模式匹配性能优化的十大误区,助你提升系统响应速度。涵盖正则表达式、字符串处理等常见场景,解析编译缓存、回溯控制等关键优化方法,避免常见性能陷阱。掌握这些技巧,显著提升匹配效率,值得收藏。

LogicNest的博客 735

《Rust 云原生服务网格:Istio 集成与流量治理的深度探索》

通过深度集成 Rust 与 Istio,开发者可在保障内存安全的前提下,实现细粒度流量治理、毫秒级故障恢复和零信任安全体系,为云原生应用提供新一代基础设施支撑。

dfjhjbkklk的博客 709
上一篇: Hutool 笔记 日期工具类的使用
下一篇: 建造者模式 rust和java的实现
过去日记
过去日记 新星创作者: 后端开发技术领域 新星创作者: 后端开发技术领域
博客等级 码龄3年 5343粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过去日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值