C++之基于正倒排索引的Boost搜索引擎项目日志+server代码及详解

C++之基于正倒排索引的Boost搜索引擎项目日志+server代码及详解
首先为了更好的查看自己的项目状况,日志是我们做项目可以说必须要写的一部分。而server部分我们可以理解为写了这么多的类就是为了在这里使用。

1. 日志

__FILE____LINE__是 C/C++ 编译器预定义的特殊宏

__FILE__

它会被编译器自动替换为当前代码所在源文件的路径或文件名(字符串类型)。

在日志函数中,它的作用是记录 “这条日志是从哪个文件输出的”。

例如:如果在 test.cpp 中调用 LOG1 宏,__FILE__ 就会被替换为 "test.cpp"(具体可能包含路径,取决于编译器),最终日志中会显示 [test.cpp : ...]

__LINE__

它会被编译器自动替换为当前代码所在的行号(整数类型)。

在日志函数中,它的作用是记录 “这条日志是从文件的哪一行输出的”。

例如:如果 LOG1 宏调用写在 test.cpp 的第 25 行,__LINE__ 就会被替换为 25,最终日志中会显示 [test.cpp : 25]

然后创建一个log1函数,一个一个打印出外面想要看到的信息。

#pragma once #include <iostream> #include <string> #include <ctime> #define NORMAL 1 #define WARNING 2 #define DEBUG 3 #define FATAL 4 #define LOG1(LEVEL, MESSAGE) log1(#LEVEL, MESSAGE, __FILE__, __LINE__) void log1(std::string level, std::string message, std::string file, int line) { std::cout << "[" << level << "]" << "[" << time(nullptr) << "]" << "[" << message << "]" << "[" << file << " : " << line << "]" << std::endl; } 

2.server.cc

"data/raw_html/raw.txt这个路径下存的是我们的数据源,./wwwroot/可以理解为前段网页的代码。

queue是要搜索的关键字,json_string是返回给用户的搜索结果。

接下来就是先实例化一个Searcher类,然后调用InitSearcher函数。这边使用fgets而不用cin是因为cin会忽略空格,而fgets可以整行读取。

 buffer[strlen(buffer)-1]=0;是因为用户在输入的时候会有换行符,我们要去掉这个。然后把处理后的结果交给query,然后调用Search函数,把经过处理后的结果交给json_string,然后输出。

#include"searcher.hpp" #include<iostream> #include<string> #include<cstdio> const std::string input="data/raw_html/raw.txt"; const std::string root_path = "./wwwroot"; int main() { ns_searcher::Searcher* search=new ns_searcher::Searcher(); search->InitSearcher(input); std::string query; std::string json_string; char buffer[1024]; while(1) { std::cout<<"Enter Search Query: "; //std::cin>>query; fgets(buffer,sizeof(buffer)-1,stdin); buffer[strlen(buffer)-1]=0; query=buffer; search->Search(query,&json_string); std::cout<<json_string<<std::endl; } return 0; }

Read more

AgentScope Java多智能体框架

1. 技术架构与功能介绍 AgentScope Java 的核心设计理念是 “Agent-Oriented Programming” (面向智能体编程)。 核心功能 * ReAct 范式驱动:内置推理-行动(Reasoning-Acting)循环,智能体能自主规划步骤并调用工具。 * 响应式内核:基于 Project Reactor (Mono/Flux),天然支持非阻塞 I/O,适合处理高并发的 Agent 请求。 * 人类在环 (HITL):支持随时暂停 Agent 执行,接入人工干预后再恢复,这在企业级应用中至关重要。 * 多协议集成:支持 MCP (Model Context Protocol) 协议,可以无缝调用外部各种工具服务。 架构图示 源码级组件解析 从源码结构看,agentscope-java 主要由以下四大基石组成: 1. Msg (消息对象)

By Ne0inhk
Java毕设项目推荐-基于springboot的某农业公司基地种植管理系统基于SpringBoot+Vue的种植基地农业信息管理系统【附源码+文档,调试定制服务】

Java毕设项目推荐-基于springboot的某农业公司基地种植管理系统基于SpringBoot+Vue的种植基地农业信息管理系统【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围::小程序、SpringBoot、SSM、JSP、Vue、PHP、Java、python、爬虫、数据可视化、大数据、物联网、机器学习等设计与开发。 主要内容:免费开题报告、任务书、全bao定制+中期检查PPT、代码编写、🚢文编写和辅导、🚢文降重、长期答辩答疑辅导、一对一专业代码讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。 特色服务内容:答辩必过班 (全程一对一技术交流,帮助大家顺利完成答辩,小白必选) 全网粉丝50W+,累计帮助2000+完成优秀毕设 🍅文末获取源码🍅 感兴趣的可以先收藏起来,还有大家在毕设选题,

By Ne0inhk

基于Spring Cloud的Java毕设入门实战:从单体到微服务的平滑迁移指南

最近在帮学弟学妹们看Java毕业设计,发现一个挺普遍的现象:很多同学的项目还是传统的单体架构,一个Spring Boot应用包打天下。答辩时老师一问“为什么不用微服务?”,往往就答不上来了。其实,对于Java方向的毕设来说,引入Spring Cloud实现一个简单的微服务架构,不仅能显著提升项目的技术含量和答辩印象分,更是一次非常好的学习实践。 今天,我就结合自己带项目的经验,聊聊如何从零开始,把一个单体应用平滑迁移成基于Spring Cloud的微服务毕设项目。我们会避开复杂的理论,聚焦于“跑起来”和“用明白”。 1. 为什么毕设需要从单体走向微服务? 你可能觉得,一个毕业设计,业务逻辑简单,用户量几乎为零,用单体应用不是更省事吗?这话没错,但毕设的目的不仅仅是“完成功能”,更是“展示能力”和“学习新知”。 单体应用的局限性在毕设中主要体现在: * 技术栈单一:难以体现你对分布式系统、服务治理等现代后端架构的理解。 * 扩展性差:答辩时如果被问到“如果用户量激增,你的系统如何扩展?”,单体架构很难给出有说服力的答案。 * 耦合度高:所有功能模块在一起,修改一处可能影响

By Ne0inhk
Java中的随机数生成:从范围字符串到动态区间应用

Java中的随机数生成:从范围字符串到动态区间应用

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[[email protected]] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? * 专栏导航: 码农阿豪系列专栏导航 面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️ Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻 Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡 全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀 目录 * Java中的随机数生成:从范围字符串到动态区间应用 * 引言 * 目录 * 1. Java中的随机数生成基础 * 基本随机数生成示例 * 2. 案例1:解析范围字符串并生成随机数 * 需求分析 * 代码实现 * 关键点解析

By Ne0inhk