惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyberwarzone
Cyberwarzone
F
Full Disclosure
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
J
Java Code Geeks
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
L
LINUX DO - 最新话题
T
Threatpost
S
SegmentFault 最新的问题
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
C
Cyber Attacks, Cyber Crime and Cyber Security
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
S
Schneier on Security
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
G
GRAHAM CLULEY
Latest news
Latest news
P
Privacy International News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
G
Google Developers Blog
L
LangChain Blog
MyScale Blog
MyScale Blog
Project Zero
Project Zero
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
N
News | PayPal Newsroom
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
SecWiki News
SecWiki News
T
Tor Project blog
C
Check Point Blog
Google Online Security Blog
Google Online Security Blog
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学

Chenxu's Blog

RAG检索优化:从 68% 到 82.2% 学习深度学习 北邮计算机研究生选课指北 学习机器学习 上海篇 提出一个好问题 写代码的环境 选购一台合适的设备 计算机的第零课 序言 内蒙古篇 山东篇 一篇对transformers的疑惑 浅析GPUStack 浅谈后端项目分层 浙江篇 河南篇 一些三端协同的开发工具记录 浅谈编程语言中的 GC 在 Windows 上安装 Rust 美化博客 消息队列 MyBatis 现代交换原理2024年题目 回忆版 北邮计科本科课程指北 ClkLog埋点用户分析系统研究报告 大数据梧桐实验分享 大数据HBase实验分享 国产向量数据库研究实践 —— 基于 Milvus 的电影推荐系统 服务器环境配置 大数据HDFS实验分享 SSE多服务之间推送数据 数据库系统原理 操作系统 编译原理 手把手教你gozero从开发到部署 (番外篇): 介绍 gtodolist 前端项目 天津篇 北京篇 手把手教你gozero从开发到部署 (5): gtodolist 之任务的删除 前端相关问题 vue3 + element-plus学习 git相关命令 人工智能原理 使用 MongoTemplate 时开启事务 MySQL Redis 力扣刷题笔记之动态规划 记录一次 VSCode 出现的各种奇怪的问题 手把手教你gozero从开发到部署 (4): 在 model 中自己编写函数实现数据库分页查询 记录平时用到的 windows 右键管理 记录平时使用的 linux 的指令 手把手教你gozero从开发到部署 (3): gtodolist 之任务的创建和修改 手把手教你gozero从开发到部署 (番外篇): 记录第一次部署 CI/CD 的流程 记录完成 gtodolist 中遇到的 bug 手把手教你gozero从开发到部署 (2): gtodolist 之 user 模块开发 手把手教你gozero从开发到部署 (1): gtodolist 项目说明和环境准备 快速入门 gozero 框架 vue部署在nginx上的相关问题 记一次安装scrapy的报错 将博客部署至服务器 Java CS143: Compliers 《MySQL必知必会》读书笔记(2) 初识 GORM 初识 gin 框架 Spring 《MySQL必知必会》读书笔记(1) 本地搭建博客 🤝友链 🙋🏻‍♂️关于 Browser and Device Check
安装 gstore 并使用 java api
Chenxu · 2023-09-04 · via Chenxu's Blog

本文中的代码在 这里

目录结构:

│  .gitignore
│  mvnw
│  mvnw.cmd
│  pom.xml
│  README.md
├─src
│  │
│  ├─main
│     ├─java
│     │  └─com
│     │      └─guochenxu
│     │          └─gstore
│     │              │  GstoreApplication.java
│     │              │
│     │              ├─config
│     │              │      GstoreConfiguration.java   // 数据库配置信息
│     │              │      WebMvcConfig.java
│     │              │
│     │              ├─controller
│     │              │      GstoreController.java   // 接口
│     │              │
│     │              ├─entity
│     │              │      GstoreResult.java   // gstore查询结果
│     │              │
│     │              ├─jgsc
│     │              │      GstoreConnector.java
│     │              │
│     │              ├─service
│     │              │  │  GstoreService.java   // 服务类
│     │              │  │
│     │              │  └─impl
│     │              │          GstoreServiceImpl.java
│     │              │
│     │              └─vo
│     │                      R.java
│     │
│     └─resources
│         │  application.properties
│         │  application.yml
│         │
│         ├─static
│         └─templates
├─test_scripts   // 测试脚本文件

环境配置

  1. 检查 gcc/g++版本

    需要版本大于 5.4, 否则需要安装

    wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.4.0/gcc-5.4.0.tar.gz
    tar xvf gcc-5.4.0.tar.gz
    ./contrib/download_prerequisites
    cd ..
    mkdir gcc-build-5.4.0
    cd gcc-build-5.4.0
    ../gcc-5.4.0/configure --prefix=...(你的安装目录) --enable-checking=release --enable-languages=c,c++ --disable-multilib
    make -j4   #允许4个编译命令同时执行,加速编译过程
    make install
    
  2. 安装 readline

    wget -c ftp://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz
    tar -zxvf readline-7.0.tar.gz
    cd readline-7.0
    ./configure --prefix=/home/guochenxu/soft/readline # 指定软件安装路径
    make && make installl
    
  3. 安装 boost (1.56-1.59)

     wget http://sourceforge.net/projects/boost/files/boost/1.56.0/boost_1_56_0.tar.gz
     tar -xzvf boost_1_56_0.tar.gz
     cd boost_1_56_0
     ./bootstrap.sh --prefix=/home/guochenxu/soft/boost
     ./b2
     ./b2 install
    
  4. 安装 curl

    wget https://curl.haxx.se/download/curl-7.55.1.tar.gz
    tar -xzvf  curl-7.55.1.tar.gz
    cd curl-7.55.1
    ./configure --prefix=/home/guochenxu/soft/curl
    make
    make install
    
  5. 安装 cmake 检查版本

    若没有则需要安装

    wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz
    tar -xvf cmake-3.6.2.tar.gz && cd cmake-3.6.2/
    ./bootstrap --prefix=...
    make
    make install
    
  6. 安装 pkg-config 检查版本

    这个系统应该都有安装

  7. 安装 uuid 从这里 下载压缩包

    tar -zxvf libuuid-1.0.3.tar.gz
    cd libuuid-1.0.3
    ./configure --prefix=/home/guochenxu/soft/libuuid
    make
    make install
    
  8. 安装 jemalloc 从这里 下载 jemalloc

    tar -zxvf jemalloc-5.2.1.tar.gz
    cd jemalloc-5.2.1
    ./configure --prefix=/home/guochenxu/soft/jemalloc
    make
    make install
    
  9. 安装 openssl 从这里 下载 openssl

    tar -zxvf openssl-3.1.0.tar.gz
    cd openssl-3.1.0
    ./Configure --prefix=/home/guochenxu/soft/openssl
    make
    make install
    
  10. 安装 ncurses 从这里 下载 ncurses

    tar -zxvf ncurses.6.4.tar.gz
    cd ncurses.6.4
    ./configure --prefix=/home/guochenxu/soft/ncurses
    make
    make install
    

    ncurses 装完之后可能会缺一些动态编译文件, 需要从这里 下载后复制到/prefix/lib目录下

全部安装完后需要配置环境变量, 打开 ~/.bashrc, 添加以下环境变量配置 (路径要改成自己安装的路径)

export UUID_LIB_PATH=/home/guochenxu/soft/libuuid/lib/
export UUID_INCLUDE_PATH=/home/guochenxu/soft/libuuid/include/
export LD_LIBRARY_PATH=${UUID_LIB_PATH}:$LD_LIBRARY_PATH
export LIBRARY_PATH=${UUID_LIB_PATH}:$LIBRARY_PATH
export C_INCLUDE_PATH=${UUID_INCLUDE_PATH}:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${UUID_INCLUDE_PATH}:$CPLUS_INCLUDE_PATH
export PKG_CONFIG_PATH=/home/guochenxu/soft/libuuid/lib/pkgconfig/:$PKG_CONFIG_PATH

export READLINE_LIB_PATH=/home/guochenxu/soft/readline/lib/
export READLINE_INCLUDE_PATH=/home/guochenxu/soft/readline/include/
export LD_LIBRARY_PATH=${READLINE_LIB_PATH}:$LD_LIBRARY_PATH
export LIBRARY_PATH=${READLINE_LIB_PATH}:$LIBRARY_PATH
export C_INCLUDE_PATH=${READLINE_INCLUDE_PATH}:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${READLINE_INCLUDE_PATH}:$CPLUS_INCLUDE_PATH


export BOOST_LIB_PATH=/home/guochenxu/soft/boost/lib/
export BOOST_INCLUDE_PATH=/home/guochenxu/soft/boost/include/
export LD_LIBRARY_PATH=${BOOST_LIB_PATH}:$LD_LIBRARY_PATH
export LIBRARY_PATH=${BOOST_LIB_PATH}:$LIBRARY_PATH
export C_INCLUDE_PATH=${BOOST_INCLUDE_PATH}:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${BOOST_INCLUDE_PATH}:$CPLUS_INCLUDE_PATH

export CURL_LIB_PATH=/home/guochenxu/soft/curl/lib/
export CURL_INCLUDE_PATH=/home/guochenxu/soft/curl/include/
export LD_LIBRARY_PATH=${CURL_LIB_PATH}:$LD_LIBRARY_PATH
export LIBRARY_PATH=${CURL_LIB_PATH}:$LIBRARY_PATH
export C_INCLUDE_PATH=${CURL_INCLUDE_PATH}:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${CURL_INCLUDE_PATH}:$CPLUS_INCLUDE_PATH
export PKG_CONFIG_PATH=/home/guochenxu/soft/curl/lib/pkgconfig/:$PKG_CONFIG_PATH

export OPENSSL_LIB_PATH=/home/guochenxu/soft/openssl/lib64/
export OPENSSL_INCLUDE_PATH=/home/guochenxu/soft/openssl/include/
export LD_LIBRARY_PATH=${OPENSSL_LIB_PATH}:$LD_LIBRARY_PATH
export LIBRARY_PATH=${OPENSSL_LIB_PATH}:$LIBRARY_PATH
export C_INCLUDE_PATH=${OPENSSL_INCLUDE_PATH}:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${OPENSSL_INCLUDE_PATH}:$CPLUS_INCLUDE_PATH
export PKG_CONFIG_PATH=/home/guochenxu/soft/openssl/lib64/pkgconfig/:$PKG_CONFIG_PATH

export NCURSES_LIB_PATH=/home/guochenxu/soft/ncurses/lib/
export NCURSES_INCLUDE_PATH=/home/guochenxu/soft/ncurses/include/
export LD_LIBRARY_PATH=${NCURSES_LIB_PATH}:$LD_LIBRARY_PATH
export LIBRARY_PATH=${NCURSES_LIB_PATH}:$LIBRARY_PATH
export C_INCLUDE_PATH=${NCURSES_INCLUDE_PATH}:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${NCURSES_INCLUDE_PATH}:$CPLUS_INCLUDE_PATH

export JEMALLOC_LIB_PATH=/home/guochenxu/soft/jemalloc/lib/
export JEMALLOC_INCLUDE_PATH=/home/guochenxu/soft/jemalloc/include/
export LD_PRELOAD=${JEMALLOC_LIB_PATH}/libjemalloc.so:$LD_PRELOAD
export LD_LIBRARY_PATH=${JEMALLOC_LIB_PATH}:$LD_LIBRARY_PATH
export LIBRARY_PATH=${JEMALLOC_LIB_PATH}:$LIBRARY_PATH
export C_INCLUDE_PATH=${JEMALLOC_INCLUDE_PATH}:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=${JEMALLOC_INCLUDE_PATH}:$CPLUS_INCLUDE_PATH

运行 source ~/.bashrc 让配置的环境变量生效

获取 gstore

这里 获取 gstore 并进入 gstore 目录

实测上面 github 中的代码有问题 (至少我用了各种方法都没有安装成功), 最后是直接向北大王选实验室 发邮件获取到最新版 (v1.2) 的 gstore 才安装成功

先改一个 bug, 在 makefile文件的第 59 行加一个 -lncurse 参数, 修改完以后应该是这样:

library = -L/usr/lib64 -L./lib -L/usr/local/lib -L/usr/lib -I/usr/local/include/boost -ljemalloc -lreadline -lncurses -lantlr4-runtime -lgcov -lboost_thread -lboost_system -lboost_regex -lpthread -lcurl -llog4cplus

然后开始编译

# 以下命令可以通过 -j4 加速
make pre # 等待漫长的时候后, 如果没有报错的话就是成功了
make # 若编译顺利完成,最后会出现 Compilation ends successfully! 结果

创建数据库

数据集从这里 下载

在 gstore 根目录下执行

./bin/gbuild -db dbname -f filename

参数含义:

dbname:数据库名称
filename:数据集文件名称

例如:

./bin/gbuild -db CCKS -f /home/guochenxu/CCKS/triple.txt

启动数据库

在 gstore 根目录下执行

./bin/gserver -s
nohup ./bin/ghttp -p 9030 > ghttp.log & #启动 ghttp 服务, 端口号为9030, 并将日志输出到 ghttp.log

启动之后注意看一下日志文件是否启动成功

启动 java 程序

环境配置: java 1.8

数据库配置: GstoreConfiuration 中的配置信息

字段名 含义
IP 服务器的 ip
PORT ghttp 启动的端口号
HTTP_TYPE 连接方式, 此处为ghttp
USER 用户名, 默认为 root
PASSWORD 密码, 默认为 123456

打包并启动:

mvn package
java -jar ./target/gstore-0.0.1-RELEASE.jar

程序执行流程

  1. 接收请求, 加载数据库, 若加载失败直接返回 null
  2. 在数据库中进行查询
    1. 若查询顺利返回格式为解析后的实体
    2. 若查询超时 (设定定时器为 30 秒), 则返回 null

返回状态码

状态码 含义
200 查询正常
500 数据库连接错误或查询出错
1001 查询结果为空

接口文档可以查看这里