不成文的,我这两天学习Expression的零散心得

2024大模型学习路线图:从零到一掌握LLM原理与应用开发 大语言模型(LLM)作为人工智能领域的核心突破,其底层基于Transformer架构,通过自注意力机制和海量数据预训练,实现了强大的自然语言理解和生成能力。这一技术范式革新了传统的人机交互模式,催生了以提示工程(Prompt Engineering)和智能体(Agent)为代表的新型应用开发方式。对于开发者和技术从业者而言,掌握LLM的应用开发已成为构建下一代AI驱动软件的关键技能。本文聚焦于大模型学习路径,系统梳理了从基础认知、核心API调用、深入原理与微调,到前沿智能体开发的完整知识体系,旨在帮助学习者 阅读详情

对于Expression总感觉那么深奥,虽然现在也是。但是终究是略窥门径了。

一,先说我这两天遇到的问题:

条件:

1. 一个Patient有多个Case,一个Case有多个Sample。

2. 一个Patient有多个PatientCustomTableRecord,一个Case有多个CaseCustomTableRecord,一个Sample有多个SampleCustomTableRecord。

3. CustomTable的结构是:一个CustomTableIndex有多个CustomTableColumn。每一个CustomTableRecord对应一个Column,值类型有5种,int, double, string, datetime, 数据字典。如果值来源于数据字典的话还要记录数据字典ID。

4. 每个CustomTableRecord有个属性是RecordIndex,表明该值是第几条记录。

所以唯一确定一条CustomRecord的方法是,锁定该Record所在的Column,根据该Column的值类型,锁定值。

5. 具体条件:有个CustomTableIndex叫IHC,属于Sample的。其中有两列:IHC指标名称,IHC指标结果

期待查询:

1. 具有IHC指标名称=IHC1 且IHC指标结果=20%的Sample

2. 具有条件1那样Sample的Case

3. 具有条件2那样的Patient

 三、动态排序

            ParameterExpression customerParam = Expression.Parameter(typeof(tb_goods), "c");
            Expression<Func<tb_goods, int>> outerKeySelector = Expression.Lambda<Func<tb_goods, int>>(
            Expression.Convert(Expression.PropertyOrField(customerParam, "id"), typeof(int)), customerParam);

            int outTotal = 0;
            var pagelist = EPcms.Models.LinqHelper<EPDbContext>.Select_Where_Page<tb_goods, int>(ex, 20, 1, ref outTotal,outerKeySelector);


二,解决方法。

采用动态拼接查询语句的方式。利用Expression.Call, Expression.Lambda等等利用Queryable的Any,Where,Select,Contains等等方法

三,阐述一下自己理解的Expression的一些用法:

1. Expression.Call: msdn上有。还总是看不明白。现在拿个例子来解释:

比如我想Call,Queryable的Any方法:去这个类里面看,有两种定义:

[csharp]  view plain copy
  1. public static bool Any<TSource>(this IQueryable<TSource> source);  
  2.   
  3. public static bool Any<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);  

首先说,如果方法是带T的泛型,那么在call的时候必须指定Type[],如果有多个Type,那么那个Type[]里的成员就有多少个。

Expression.Call(typeof(Queryable), "Any", new Type[] { typeof(SampleCustomTableRecord) }, leftwhere)  

这个语句返回的是一个bool型的Expression。其中leftwhere是一个IQueryable<SampleCustomTableRecord>类型的Expression。没有任何predicate。就是要找出满足任意leftwhere里面条件的SampleCustomTableRecord。然后用在我之后要用的Where里。

我调用第二种Any的时候会这么写:

Expression temp = Expression.Convert(Expression.PropertyOrField(Expression.PropertyOrField(Expression.PropertyOrField(pe_Sample, "ParentCase"), "ParentPatient"), "CustomTableRecords"), typeof(IQueryable<PatientCustomTableRecord>));  

Expression.Call(typeof(Queryable), "Any", new Type[] { typeof(PatientCustomTableRecord) }, temp, result)  

这里的temp代表含有当前sample的case的patient的PatientCustomTableRecord集合。Result代表一个lambdaExpression,就是:Expression<Func<TSource, bool>> predicate。定义Lambda的时候,如果泛型,要指定ParameterExpression作为TSource。比如实现这个Lambda:

SCTR => ((SCTR.CHTI.ID == 131) And (SCTR.Column.ID == 73))

SCTR就是那个ParameterExpression:

public static ParameterExpression pe = Expression.Parameter(typeof(SampleCustomTableRecord), "SCTR");  

自我理解:这里的SCTR类似于SQL里面的AS后面的别称,我就叫他 委托对象名 。
//首先找到SCTR.Column.ID属性  
  
Expression cCIDExp = Expression.Property(Expression.Property(pe, "Column"), "ID");  
  
Expression findCCExp = Expression.Equal(cCIDExp, Expression.Constant(73));  
  
//然后锁定数据字典外键  
  
Expression left = Expression.PropertyOrField(Expression.Property(pe, "CHTI"), "ID");  
  
left = Expression.Equal(left, Expression.Constant(131));  
  
//最后实现Lambda委托. 这个委托的最终类型是://Expression<Func<SampleCustomRecord, bool>>  
  
Expression rv = Expression.Lambda(Expression.And(left, findCCExp), pe);  

这样就完成了两个Any的调用。

2. 想做join。实现题中查询

为此在论坛上发帖:http://topic.youkuaiyun.com/u/20120101/18/a73b5d2f-5d31-4434-aae7-503b0aa25691.html
到现在位置虽没有解决,但是开阔了我的思路。目前我想要的Linq是这样的:

var query=from ain SampleCustomTableRecordsjoin bin SampleCustomTableRecordson a.RecordIndexequalsb.RecordIndexwhere a.FK1==73&& a.FK2==131&& b.FK1==74&& b.FK2=163select a;

可惜这里的join我必须用Queryable的join才能实现,关于这个Join的使用,我google到了一篇文章,现在给他贴过来:

OK - let's say you want to build the following query:

from c in Customers  
 join p in Purchases on c.ID equals p.CustomerID  
 select c.Name + " bought a " + p.Description  

The first step is to translate this into lambda/method syntax. We can do this with LINQPad:(linqpad是个好东东。我得找找)
Customers  
 .Join (  
    Purchases,   
    c => (Int32?)(c.ID),   
    p => p.CustomerID,   
    (c, p) => ((c.Name + " bought a ") + p.Description)  
 )  

动态排序:

ParameterExpression customerParam = Expression.Parameter (typeof (Customer), "c");  
   
 Expression<Func<Customer, int?>> outerKeySelector = Expression.Lambda<Func<Customer, int?>> (  
     Expression.Convert (Expression.PropertyOrField (customerParam, "ID"), typeof (int?)),   
     customerParam);  
       
 ParameterExpression purchaseParam = Expression.Parameter (typeof (Purchase), "p");      
   
 Expression<Func<Purchase, int?>> innerKeySelector = Expression.Lambda<Func<Purchase, int?>> (  
     Expression.PropertyOrField (purchaseParam, "CustomerID"),   
     purchaseParam);      

MethodInfo concatThreeItems = typeof (string).GetMethod ("Concat", Enumerable.Repeat (typeof (object), 3).ToArray());  
        
  Expression<Func<Customer, Purchase, string>> resultSelector = Expression.Lambda<Func<Customer, Purchase, string>> (  
      Expression.Call (  
          concatThreeItems,  
          new Expression[]  
          {  
              Expression.PropertyOrField (customerParam, "Name"),   // c.Name  
              Expression.Constant (" bought a "),  
              Expression.PropertyOrField (purchaseParam, "Description")  // p.Description  
          }),  
      customerParam,  
      purchaseParam);  

We can test this as follows:

[csharp]  view plain copy
  1. Expression.Lambda<Func<IQueryable<string>>> (join).Compile()().Dump();  

 

也许对于Expression Linq达人来讲这算不了什么,可对于我来说真的很神奇。现在就差一步了:Join后怎么加Where?Join里肯定有两个委托对象名,我怎么保证这两个对象名还能在Where里面用?这里的Where可不再是Linq里的where了啊。有个哥们跟我一样的问题,给了我思路启发:http://stackoverflow.com/questions/485398/how-to-create-a-join-in-an-expression-tree-for-linq。我何必非得在Join后加Where呢?直接在Join的左右先做Where不就行了?不断join只需要不停滴更换右边的委托对象名就行了

懒得说过程了,直接上代码:这个是想找出满足SampleCustomTableRecord条件的Sample

[csharp]  view plain copy
  1. else if (item.peRecordType == pe_SampleCustomTableRecord)  
  2.                             {  
  3.                                 //handle the first one, the very beginning on left hand  
  4.                                 string[] firstsplit = item.SearchConditions[0].FieldTitle.Split(new char[]{'-'});  
  5.                                 Expression left = GetCustomPredict(pe_SampleCustomTableRecord, "样本信息", mtype, firstsplit[1], firstsplit[2], item.SearchConditions[0].Condition, item.SearchConditions[0].Value);//子函数用于得到应用于Where条件的Lambda表达式  
  6.                                 Expression leftwhere = Expression.Call(typeof(Queryable), "Where", new Type[] { typeof(SampleCustomTableRecord) }, sampleCR, left);  
  7.                                 for (int i = 1; i < item.SearchConditions.Count; i++)  
  8.                                 {  
  9.                                     ParameterExpression rightpe = Expression.Parameter(typeof(SampleCustomTableRecord), "SCTR"+i);//由于是同表Join,所以右边的委托对象名需要不停更换  
  10.                                     string[] secondsplit = item.SearchConditions[i].FieldTitle.Split(new char[]{'-'});  
  11.                                     Expression right = GetCustomPredict(rightpe, "样本信息", mtype, secondsplit[1], secondsplit[2], item.SearchConditions[i].Condition, item.SearchConditions[i].Value);  
  12.                                     Expression rightwhere = Expression.Call(typeof(Queryable),"Where",new Type[]{typeof(SampleCustomTableRecord)},sampleCR,right);  
  13.                                     Expression OuterKeySelector = Expression.Lambda<Func<SampleCustomTableRecord, int>>(Expression.Convert(Expression.PropertyOrField(pe_SampleCustomTableRecord, "RecordIndex"), typeof(int)), pe_SampleCustomTableRecord);  
  14.                                     Expression InnerKeySelector = Expression.Lambda<Func<SampleCustomTableRecord, int>>(Expression.Convert(Expression.PropertyOrField(rightpe, "RecordIndex"), typeof(int)), rightpe);  
  15.                                     Expression<Func<SampleCustomTableRecord,SampleCustomTableRecord,SampleCustomTableRecord>> resultSelector = Expression.Lambda<Func<SampleCustomTableRecord,SampleCustomTableRecord,SampleCustomTableRecord>>(pe_SampleCustomTableRecord,new ParameterExpression[]{pe_SampleCustomTableRecord,rightpe});  
  16.                                     Expression test = Expression.Call(typeof(Queryable), "Join",  
  17.                                            new Type[]  
  18.                                         {  
  19.                                             typeof(SampleCustomTableRecord),//TOuter  
  20.                                             typeof(SampleCustomTableRecord),//TInner  
  21.                                             typeof(int),//TKey  
  22.                                             typeof(SampleCustomTableRecord)//TResult  
  23.                                         },  
  24.                                            new Expression[]  
  25.                                         {  
  26.                                             leftwhere,  
  27.                                             rightwhere,  
  28.                                             OuterKeySelector,//outerkey  
  29.                                             InnerKeySelector,//innerkey  
  30.                                             resultSelector//result????  
  31.                                         });  
  32.                                     leftwhere = test;  
  33.                                 }  
  34.                                 CombinationExpressions.Add(Expression.Call(typeof(Queryable), "Any", new Type[] { typeof(SampleCustomTableRecord) }, leftwhere));  
  35. }  


得到的Expression是类似于这样的:

test:
{Convert(Sample.CustomTableRecords).Where(SampleCustomTableRecord => ((SampleCustomTableRecord.CHTI.ID == 131) And

(SampleCustomTableRecord.Column.ID == 73)))
.Join(Convert(Sample.CustomTableRecords).Where(SCTR1 => ((SCTR1.CHTI.ID == 163) And (SCTR1.Column.ID == 74))),

SampleCustomTableRecord => Convert(SampleCustomTableRecord.RecordIndex), 
SCTR1 => Convert(SCTR1.RecordIndex), 
(SampleCustomTableRecord, SCTR1) => SampleCustomTableRecord)}

 

到此为止,成功已有90%。剩下的就是利用Where,Select,Contains,拼接最终步骤,来实现命题的查询了。

就写到这吧,免的日后忘了。记性越来越差了。

helpful link:

http://msdn.microsoft.com/en-us/library/bb896266.aspx

http://msdn.microsoft.com/en-us/library/bb397676.aspx

http://msdn.microsoft.com/en-us/library/bb534644.aspx

http://msdn.microsoft.com/en-us/library/bb882637.aspx

 http://blogs.msdn.com/b/mattwar/archive/2007/09/04/linq-building-an-iqueryable-provider-part-vii.aspx 两种方法实现join

 

 

2012-2-29补充:

速成的果然不行,时隔不到两个月,我居然看不懂自己的代码了。盯了一个小时又悟出点以前知道但没写到的内容:

1. 我的一个ResultSelector是这样写的:

[csharp]  view plain copy
  1. Expression<Func<SampleCustomTableRecord, SampleCustomTableRecord, SampleCustomTableRecord>> resultSelector = Expression.Lambda<Func<SampleCustomTableRecord, SampleCustomTableRecord, SampleCustomTableRecord>>(pe_SampleCustomTableRecord, new ParameterExpression[] { pe_SampleCustomTableRecord, rightpe });  

此处Lambda的定义为:

[csharp]  view plain copy
  1. //  
  2.         // Summary:  
  3.         //     Creates an System.Linq.Expressions.Expression<TDelegate> where the delegate  
  4.         //     type is known at compile time.  
  5.         //  
  6.         // Parameters:  
  7.         //   body:  
  8.         //     An System.Linq.Expressions.Expression to set the System.Linq.Expressions.LambdaExpression.Body  
  9.         //     property equal to.  
  10.         //  
  11.         //   parameters:  
  12.         //     An array of System.Linq.Expressions.ParameterExpression objects to use to  
  13.         //     populate the System.Linq.Expressions.LambdaExpression.Parameters collection.  
  14.         //  
  15.         // Type parameters:  
  16.         //   TDelegate:  
  17.         //     A delegate type.  
  18.         //  
  19.         // Returns:  
  20.         //     An System.Linq.Expressions.Expression<TDelegate> that has the System.Linq.Expressions.Expression.NodeType  
  21.         //     property equal to System.Linq.Expressions.ExpressionType.Lambda and the System.Linq.Expressions.LambdaExpression.Body  
  22.         //     and System.Linq.Expressions.LambdaExpression.Parameters properties set to  
  23.         //     the specified values.  
  24.         //  
  25.         // Exceptions:  
  26.         //   System.ArgumentNullException:  
  27.         //     body is null.-or-One or more elements in parameters are null.  
  28.         //  
  29.         //   System.ArgumentException:  
  30.         //     TDelegate is not a delegate type.-or-body.Type represents a type that is  
  31.         //     not assignable to the return type of TDelegate.-or-parameters does not contain  
  32.         //     the same number of elements as the list of parameters for TDelegate.-or-The  
  33.         //     System.Linq.Expressions.Expression.Type property of an element of parameters  
  34.         //     is not assignable from the type of the corresponding parameter type of TDelegate.  
  35.         public static Expression<TDelegate> Lambda<TDelegate>(Expression body, params ParameterExpression[] parameters);  

 

debug时看到resultSelector变成:

{(SampleCustomTableRecord, SCTR1) => SampleCustomTableRecord}

此时:Lambda的两个Parameter就是

pe_SampleCustomTableRecord=Expression.Parameter(typeof(SampleCustomTableRecord), "SampleCustomTableRecord");

rightpe=Expression.Parameter(typeof(SampleCustomTableRecord), "SCTR" + i);


这里的Func做如下解释:Func<Tin1, Tin2, Tout>. 显然两个In,对应两个委托对象名,即两个ParameterExpression.

Lambda就是(委托对象名)=>{Body真正的函数体}

http://blog.youkuaiyun.com/hoken2020856/article/details/7173066
用Grafana+Prometheus搭建机器学习模型健康监控看板 机器学习模型上线后性能衰减(如数据漂移、概念漂移)是MLOps中高频痛点,其本质是模型在生产环境中的‘健康状态’缺乏可观测性。Prometheus凭借多维标签、原生直方图与轻量Pull架构,成为指标采集的事实标准;Grafana则通过多源同屏、模板变量与下钻分析能力,将原始指标转化为业务可读的健康信号。二者组合构成低成本、高扩展、易落地的模型可观测性基座,支撑从延迟监控、置信度漂移识别到自动重训练的闭环实践,特别适用于FastAPI/Triton等服务化场景。 阅读详情

相关推荐

C++学习项目路线图:从基础到进阶的实战指南

C++作为一门强调实践的系统级编程语言,其核心价值在于将语法知识转化为解决实际问题的工程能力。理解指针、内存管理、类与对象等基础概念是第一步,而掌握标准模板库(STL)容器、算法及面向对象设计原理,则是构建复杂应用的基石。通过动手实现项目,开发者能深入体会C++在性能控制、资源管理方面的技术优势,特别是在系统编程、高性能计算和底层工具开发等场景中。本文围绕C++学习的热门需求,提供一套涵盖控制台应用、系统编程、轮子实现到综合实战的渐进式项目路线图,并以中缀表达式求值器等经典案例,详解数据结构应用与多线程编程

weixin_34204722的博客 398

pocsuite3 YAML PoC实战:兼容Nuclei模板与自动化漏洞检测

在安全测试领域,概念验证(PoC)脚本是验证漏洞的核心工具。其原理在于模拟攻击者行为,向目标系统发送特定请求,并根据响应判断漏洞是否存在,技术价值在于实现自动化、标准化的漏洞验证,提升测试效率与准确性。应用场景广泛覆盖渗透测试、红蓝对抗及安全监控。本文聚焦于pocsuite3框架引入的YAML格式PoC,该格式通过声明式配置降低了编写门槛,并实现了与Nuclei模板生态的兼容。这意味着安全工程师可以复用海量的Nuclei社区漏洞模板,利用pocsuite3强大的Python执行引擎和流量处理能力进行检测,从

weixin_33847182的博客 372

大模型研发转型实战:从RAG原理到工程部署的30天学习路线

检索增强生成(RAG)作为连接大语言模型与外部知识库的关键技术,其核心原理是通过检索相关文档片段来增强生成过程的准确性与可控性。该技术架构通常包含文档分块、向量化、相似度检索及上下文增强生成等环节,能有效缓解大模型的幻觉问题并降低知识更新成本。在工程实践中,RAG的价值体现在构建企业级知识问答、智能客服及文档分析等场景时,能平衡效果与实施复杂度。本文聚焦转型工程师如何通过项目驱动,系统掌握从Transformer注意力机制、LoRA微调到LangChain工具链应用的全栈技能,并深入探讨流式输出接口设计、多

weixin_34109408的博客 435

C# Expression 树转化为SQL与语句(二)--解决参数问题

C# Expression 树转化为SQL与语句(二)--解决参数问题 在用Expression解析的的时候碰到一些参数(不是具体的值),会出现这种情况。   在这里我们希望得到的是id=10,而不是id=m_id;那如何来解析这些参数? ====================================================================================================\   首先参数分为2中,一种是n.id,这种可以说是一种形

cxu123321的博客 819

JavaScript实战入门:从语法基础到工程思维的完整学习路径

JavaScript作为现代Web开发的核心语言,其学习路径往往需要从基础语法认知逐步过渡到工程实践思维。理解变量、数据类型、函数等基础概念是构建程序的基石,而数组与对象的操作则是处理结构化数据的关键。掌握异步编程原理,如事件循环和Promise机制,是开发高效、响应式应用的核心。在实际应用中,通过DOM操作与事件处理实现交互逻辑,并借助模块化、ESLint、Webpack等工程化工具提升代码的可维护性。本文围绕JavaScript语法、异步编程、DOM操作及工程化实践,系统梳理了从入门到实战的核心知识体系

weixin_34353714的博客 537

2026科研AI工具链:本地化深度学习与离线可审计的模块化实践

深度学习在科研中的应用正从云端API调用转向本地化、可验证的轻量推理——这既是数据安全与合规性的刚性需求,也是边缘算力普及后的自然演进。其核心原理在于利用LoRA微调、结构化PDF解析、小模型蒸馏等技术,在有限显存(如RTX 4090/3060)下实现高精度领域任务处理。技术价值体现在‘离线可运行、源码可审计、权重可验证’三原则,支撑真实科研闭环:文献精读、实验复现、出版级绘图、可调试代码生成与知识图谱构建。本文聚焦一套已落地于高校实验室与企业R&D的CLI+WebUI双模态工具链,深度融合LitParse

577

C# Expression学习笔记(一、表达式与表达式树的基本结构)

Expression作为表达式树的一个基类,其派生了许多不同的子类,根据这些子类,我们可以实现不同的逻辑(此前真是没考虑过这方面,我以为只能去当作数据库查询语句呢,真特么惭愧),那么问题随之而来,我们应该怎么去应用这些子类,或者在什么时候可以运用他们呢?不急,今天我们首先简单了解一下Expression的相关概念及结构

Sky的笔记本 1350

DeepSeek从聊天工具到生产力中枢:API集成、IDE插件与AI智能体实战指南

大语言模型作为人工智能的核心技术,通过深度学习架构实现了对自然语言的深度理解与生成。其原理基于Transformer架构,通过海量数据训练获得强大的语义理解和推理能力。这一技术价值在于将通用智能能力转化为具体生产力工具,显著提升工作效率。在应用场景上,大语言模型已广泛应用于代码生成、文档处理、数据分析等领域。本文聚焦于DeepSeek这一先进模型,详细解析如何通过API集成、IDE插件配置和AI智能体构建,将其从简单的聊天工具升级为深度嵌入工作流的生产力中枢。文章特别探讨了vscode接入deepseek和

weixin_30243533的博客 1122

(SQL)将 expression 转换为数据类型 int 时发生算术溢出错误 2种快速处理方法

(SQL)将 expression 转换为数据类型 int 时发生算术溢出错误 2种快速处理方法 1.CONVERT(bigint, 字段名); 2.Cast(字段名 as decimal(18,2));

qq_37800696的博客 2988

Stable Diffusion提示词工程:从基础原理到人物属性精准控制

提示词工程是AI绘画领域的核心技术,其本质是将自然语言指令转化为AI模型可处理的数学向量。基于CLIP等文本编码模型,系统通过理解词汇间的语义关联,在潜在空间中定位目标概念。这项技术的核心价值在于实现从随机生成到可控创作的关键跨越,广泛应用于角色设计、概念艺术、插画创作等场景。掌握提示词的结构化编写方法,特别是对人物属性维度的拆解与组合,能显著提升Stable Diffusion等扩散模型生成图像的质量与稳定性。本文深入解析了基础身份、神态气质、服饰装扮、环境光影四大核心维度,并结合权重调整、负面提示词等工

weixin_30675247的博客 573

Expression.Compile() , Parameter out of scope 执行Expression获取结果

Expression.Compile() , Parameter out of scope Ask Question Asked4 years, 9 months ago Active4 years, 9 months ago Viewed327 times 1 I am been messing with Expression Trees and I have hit a setback and can't find why or how to fix this : ...

cxu123321的博客 808

5分钟搞懂深度学习如何革新声源定位:从GCC-PHAT到DNN的实战对比

本文深入对比了深度学习与传统GCC-PHAT方法在声源定位领域的实战表现。通过具体实验数据,展示了DNN模型在强混响、低信噪比等复杂场景下,如何实现定位准确率的显著提升,并探讨了其数据驱动范式带来的鲁棒性优势与工程部署挑战。

3a9bq4r8t2y的博客 223

VRC-Gesture-Manager:图形化工具革新VRChat角色动画绑定流程

在Unity动画系统和VRChat内容创作中,Animator Controller是驱动角色动作与表情的核心组件,其通过状态机与参数控制实现动画逻辑。传统手动配置方式需在复杂的状态机视图中反复操作,流程繁琐且易出错,尤其在大规模手势与表情绑定时效率低下。VRC-Gesture-Manager作为第三方插件,通过提供集中、可视化的图形界面,将动画片段绑定、参数配置与按键映射整合于一体,实现了工作流的自动化与扁平化。该工具能自动生成并关联Expression Parameters与Animator参数,支持批

weixin_33694620的博客 324

ClickHouse的bitmap使用

ClickHouse的bitmap使用 bitmap的基本使用 在CK中bitmap有两种构建方式,在ClickHouse的官网有说明: (1)一个是由聚合函数groupBitmapState构造的, (2)另一个是由Array Object构造的。同时还可以将位图对象转化为数组对象。 bitmap实战 数据和基本数据表准备 创建一张基本表,一个用户表,有多个描述的维度,每个维度由该维度的唯一id。 CREATE TABLE test02(id UInt16, tag1 UInt8, tag2 UInt8,

zg_hover的专栏 5654

EtherCAT-7 从站代码移植-SPI

STM32F103 + AX58100,从站代码移植。

tianya_xuan的博客 3571

从零构建编译器:手写词法分析、语法解析与代码生成实践

编译器是计算机科学的核心基础设施,负责将高级编程语言转换为机器可执行的指令。其核心原理遵循一套严谨的翻译流程,本质上是将结构化源代码通过一系列规则转换为目标代码的引擎。这一过程的技术价值在于,它不仅实现了代码的翻译,更深刻影响了程序调试、性能优化以及领域特定语言的设计。理解编译器的内部机制,能帮助开发者洞察代码从书写到运行的完整生命周期,尤其在需要为特定场景定制小型语言时,掌握其构建方法至关重要。本文聚焦于编译器前端的核心环节,通过手写实现一个简化编译器,详细拆解了如何将字符流转换为有意义的单词,再组装成树

weixin_30247781的博客 309

VINS技术路线与代码详解

VINS技术路线 写在前面:本文整和自己的思路,希望对学习VINS或者VIO的同学有所帮助,如果你觉得文章写的对你的理解有一点帮助,可以推荐给周围的小伙伴们,当然,如果你有任何问题想要交流,欢迎随时探讨。话不多说,下面上正文。 VINS代码地址:https://github.com/HKUST-Aerial-Robotics/VINS-Mono 参考文档:1.VINS-Mono A R...

wangshuailpp的博客 7万+

Erlang杂记

 转载自 做笔记 一开始笔记软件做的不好的时候就发邮件给自己,然后不断的回顾更新笔记;后来用OneNote,由于这玩意当时不是云同步的,硬盘坏掉的时候丢了一些数据,打击还是挺大,好多事情要从头开始再后来用过一段时间Google Wave,还以和朋友分享讨论笔记,结果,你们知道关闭服务了,费力导出来现在转战Evernote和思维导图Conceptdraw      记忆是靠不

Sunface撩技术 1713

【libnice】meson + vs2022,生成win32工程

libnice

突围 947

从代码仓库到知识库:自动化构建与RAG技术实践

在软件工程领域,代码库的规模与复杂性日益增长,如何高效管理和利用其中的知识成为关键挑战。传统文档工具主要依赖注释提取API信息,而现代知识构建技术则通过抽象语法树(AST)解析、自然语言处理等手段,深入理解代码结构、调用关系和业务逻辑。其核心价值在于将非结构化代码转化为机器可理解、可检索的结构化知识,显著提升代码资产的可维护性和团队协作效率。这一过程通常涉及代码解析、信息提取、向量化表示和存储索引四个关键阶段,其中向量化技术将代码语义转化为高维向量,为语义搜索奠定基础。结合检索增强生成(RAG)架构,开发者

weixin_42545292的博客 416

C++语句全解析:从基础语法到实战避坑指南

在编程语言中,语句是构成程序执行流程的基本单元,它决定了代码的逻辑结构和控制流。从原理上讲,语句将表达式、变量和运算符组织成可执行的指令序列,实现顺序、分支和循环等核心编程范式。其技术价值在于赋予程序动态行为和决策能力,是算法实现和复杂逻辑构建的基石。在应用场景上,无论是数据处理、用户交互还是系统控制,都离不开条件判断、循环迭代和异常处理等语句机制。本文聚焦C++语言,深入探讨表达式语句、复合语句、控制流语句及异常处理等关键概念,并结合RAII资源管理、作用域控制等热词,解析实际开发中的常见陷阱与最佳实践,

weixin_33704591的博客 657

YOLOv13有效涨点改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

《YOLOv13改进专栏重磅更新》推出500+创新改进方案,涵盖卷积、主干网络、注意力机制、检测头等核心模块优化。专栏提供完整项目代码及答疑服务,包含YOLOv13网络结构解析、环境配置、模型训练全流程指导。内容分为八大模块:卷积优化、注意力机制、细节涨点、主干网络改进、特征融合、检测头优化、小目标检测及Mamba联合改进等,支持多种创新点组合应用,助力科研论文发表。现开放限时订阅,提供试读章节和详细技术解析。

Ai缝合怪、助力小伙伴高效发论文 3391

Agentic RAG实战:用LangChain+Ollama构建可推理、可调试的本地化智能问答系统

RAG(检索增强生成)是一种将外部知识库与大语言模型结合的基础技术,其核心原理是通过向量检索获取相关文档片段,再交由LLM生成答案。然而传统RAG缺乏任务分解、工具调度与闭环验证能力,导致在多跳查询、数值计算和跨源整合等场景中可靠性骤降。Agentic RAG通过引入具身智能体(Agentic)范式,将LLM转化为决策中枢,支持多步推理、安全工具调用与动态重试,显著提升结果可解释性与工程可控性。该技术特别适用于政策分析、财报解读、技术文档问答等需交叉验证与确定性运算的垂直场景。本文聚焦轻量级本地化落地,基于

weixin_33800463的博客 336

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C++多功能计算器项目实战:从中缀表达式到调度场算法

表达式求值是计算机科学中的基础问题,涉及如何将人类可读的数学表达式转换为机器可执行的计算指令。其核心原理在于利用栈这一数据结构,通过特定的算法消除运算符优先级和括号带来的歧义。在众多解决方案中,调度场算法因其清晰、高效而成为经典选择,它将中缀表达式转换为后缀表达式,从而简化求值过程。这一技术不仅体现了数据结构与算法的紧密结合,更是编译原理中语法分析的简化实践,具有极高的教学与工程价值。在开发工具、教学演示及需要公式解析的各类应用场景中,表达式求值都是不可或缺的模块。本文以C++实现多功能计算器为例,深入剖析

weixin_33938733的博客 414

jre9下载 jdk9

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

上一篇: Memcached windows 下安装与测试
下一篇: SQL Server自动化运维系列——关于邮件通知那点事
chengmodelong
博客等级 码龄18年 16粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值