solr的增量更新和全文检索

solr6定时增量更新 solr6定时增量更新jar包 立即下载

1 接着上一节往下介绍
将apache-solr-dataimportscheduler.src.jar包导入apache-tomcat-7.0.90\webapps\solr\WEB-INF\lib下
2 在solr_home新建文件夹conf,新建文件dataimport.properties,将下列代码复制其中。

#################################################  
#                                               #  
#       dataimport scheduler properties         #  
#                                               #  
#################################################  
   
#  to sync or not to sync  
#  1 - active; anything else - inactive  
syncEnabled=1
#  which cores to schedule  
#  in a multi-core environment you can decide which cores you want syncronized  
#  leave empty or comment it out if using single-core deployment  
syncCores=test,hotel
#  solr server name or IP address  
#  [defaults to localhost if empty]  
server=localhost
#  solr server port  
#  [defaults to 80 if empty]  
port=8080
#  application name/context  
#  [defaults to current ServletContextListener's context (app) name]  
webapp=solr
#  增量索引的参数   
#  URL params [mandatory]  
#  remainder of URL  
params=/dataimport?command=delta-import&clean=false&commit=true
#  重做增量索引的时间间隔  
#  schedule interval  
#  number of minutes between two runs  
#  [defaults to 30 if empty]  
interval=1
#  重做全量索引的时间间隔,单位分钟,默认7200,即5天;  
#  为空,为0,或者注释掉:表示永不重做索引  
#reBuildIndexInterval=7200
#  重做索引的参数  
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
#  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;  
#  两种格式:2012-04-11 03:10:00 或者  03:10:00,后一种会自动补全日期部分为服务启动时的日期  
reBuildIndexBeginTime=03:10:00  

3 进行如上代码后就完成了一分钟一更新的状态
4 进入apache-tomcat-7.0.90\webapps\solr\WEB-INF,打开web.xml,添加个监听器。

<listener>  
		<listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>  
   </listener> 

5 进入 solr_home\news\conf ,打开data-config.xml,设置增量更新。

  <entity name="new"  pk="id"
  query="SELECT id,title,content,imgurl FROM new_detail" 
  
  deltaImportQuery="SELECT id,title,content,imgurl FROM new_detail where id='${dih.delta.id}'"
  
    deltaQuery="SELECT id,title,content,imgurl FROM new_detail where modifyDate > '${dih.last_index_time}'">

query和 deltaQuery属性的意思是,如果修改时间大于最后一次的时间就查询来此id,之后在根据此id查出信息。
6 此时在进入浏览器查看信息,就会发现如果mysql数据库的信息改变后,solr也会进行增量更新。
7 全文检索 :https://blog.youkuaiyun.com/menghuannvxia/article/details/41984445 这个博客介绍的安装分词器非常详细。
不同的是在solr_home\news\conf下的schema.xml下加入

  <fieldType name="text_ik" class="solr.TextField">  
    <analyzer type="index" isMaxWordLength="false"
	class="org.wltea.analyzer.lucene.IKAnalyzer"/> 
      <analyzer type="query" isMaxWordLength="true"
	class="org.wltea.analyzer.lucene.IKAnalyzer"/> 	
  </fieldType>  
  接下来将与mysql数据库中指定的字段中的type由string改为text_ ik.

更改为:

  <field name="id" type="int" indexed="true" stored="true"/> 
    <field name="title" type="text_ik" indexed="true" stored="true"/>
    <field name="content" type="text_ik" indexed="true" stored="true"/>
	<field name="imgurl" type="text_ik" indexed="true" stored="true"/>
    <field name="text" type="text_general" indexed="true" stored="false"

全文检索如下:将词汇进行拆分:一如百度推广,输入几个词汇的话,就会出现很多相关的广告,原理就是用分词器检索实现的。
在这里插入图片描述
sole查询语法:
1 q:用于查询关键词
2 fq:用于对q查询的过滤;如下图,查询北京,过滤查询id等于3或者id等于1的,当和下面的id等于3是and的关系,相当于只查询id=3;
在这里插入图片描述

3 fq,在solr,执行完成后,会对数据进行缓存,查询数据比较快。

在这里插入图片描述

在这里插入图片描述

solr增量导入更新索引包 立即下载

相关推荐

apache-solr-dataimportscheduler.jar

solr solr solr solr solr solr solr solr solr solr solr solr

Solr入门到熟练

2. 需求分析 2.1. 实现方法 在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 2.1.1. 使用Lucene实现 单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优

jk19951215的博客 2449

apache-solr-dataimportscheduler-1.4

solr6.1.0版本jar已经不再提供读取自动索引配置文件路径的方法,因此apache-solr-dataimportscheduler-1.0内调用该方法的所有操作都无法实现。于是需要下载apache-solr-dataimportscheduler-1.0-with-source.jar并修改源码重新编译生成符合我们需求的apache-solr-dataimportscheduler-1.4

solr全量更新和增量更新

solr全量更新和增量更新 1.首先理解更新 数据库中的数据导入solr缓存中就是更新。 2.全量更新 全量更新,就是把数据库中的全部数据都导入solr缓存库中,一般会删除solr缓存库现有的数据。 全量的话,可以采用直接全部覆盖(使用“新”数据覆盖“旧”数据);或者走更新逻辑(覆盖前判断下,如果新旧不一致,就更新); 1.core/conf 目录下的 solrconfig.xml,新增如下配置 <requestHandler name="/dataimport" class="solr.DataIm

WeiLan_的博客 1455

脱壳--02.exe

程序开始 使用OD打开程序 发现无法利用esp定律 程序直接运行 查找模块间调用 随便找到一个函数的调用 发现是FF15方式调用 所以是vs的程序 vs程序大致分成两种 vs20xx (特征函数:GetSystemTimeAsFileTime)和 vc++6.0(特征函数:GetVersion) 通过链接器版本 发现是vc6.0 直接在GetVersion上下断点 重新运行程序 断点断下 返回到调用处 vc6.0和易语言的第一个CALL都是GetVers...

weixin_45012273的博客 1112

别再死磕NFP了!用Python+遗传算法搞定异形件自动排版(附完整代码)

本文介绍了如何利用Python和遗传算法实现异形件智能排版,解决传统NFP方法计算复杂的问题。通过Shapely库处理几何运算和DEAP库搭建遗传算法框架,结合模拟退火策略避免局部最优,显著提升材料利用率。附完整代码和优化技巧,适用于服装裁剪、金属加工等行业。

weixin_26965807的博客 235

Solr 全量更新和增量更新 配置方式

deltaImportQuery 指定的sql要求我们将满足PK的数据进行填充,需要配置在FieId中出现的属性,其作用和query类似,只不过该作用是将前面两个deltaQuery、deletedPkQuery过滤后进行了一次封装,以更新部分需更新的记录所对应的Solr的数据库索引。基于项目的特殊性,本项目将所有的文本类型记录的表全部读取进入Solr进行管理,但因文本记录的表比较多和复杂,导致了后面在使用solr自带功能增量更新时出现了问题。该配置在使用全量更新full-import显得尤为的突出;

猫步轻移,以学求知。余于此方寸之地,如猫观鼠,细察技艺所得,思维所悟。灵思如猫之警觉,日积月累,终成智海; 1479

北斗三号PPP-B2b信号实战指南:从接收机配置到精度验证全流程

本文提供了北斗三号PPP-B2b信号从硬件配置到数据处理的全流程实战指南。详细解析了信号特性、接收机关键参数设置,并以飞纳接收机和Mass软件为例,演示了数据解算与精度验证方法。通过覆盖中国多地区的联调测试案例,验证了PPP-B2b服务可实现分米级实时定位精度,为无网络地区高精度应用提供了可靠解决方案。

nn3456的博客 551

solr全量更新和增量更新,定时增量更新详解

这里写自定义目录标题一、全量更新(1)什么是全量更新?(2)全量更新的配置【1】核心目录下创建一个data-config.xml文件:【2】核心的conf文件夹下的solrconfig.xml文件,在第一个requestHandler标签上面添加:【3】核心的conf文件夹下的managed-schema文件,在第一个field标签上面添加:【4】到solr后台管理页面,选择全量更新的选项,点击Execute二、增量更新(1)什么是增量更新?(2)为什么需要增量更新?(3)增量更新的配置【1】首先要弄懂几个

JavadeSon的博客 3857

Visual Tracker Benchamark傻瓜式教程(二)

问题  1 1  在调用main.m跑TRE和SRE时,因为会生成相应的.mat数据文件,如果跑完以后发现自己算法生成的.mat文件有问题,那么要把该文件删除,待找到错误原因后,重新生成相应的.mat文件。因为程序中写的是如果已经存在了.mat文件,例如已经存在car4_STC.mat文件,即使该文件中的数据有错误,但是重新跑时会默认该文件中的数据写完,不会重新写入数据 问题  2  b

mingbujingren的专栏 9928

ESP8266-Arduino网络编程实例-异步TCP客户端

本次实例将使用ESPAsyncTCP库实现一个简单的客户端。

视觉与物联智能 1740

solr mysql 增量更新_solr 的全量更新与增量更新

1.solr 的全量更新1.core/conf 目录下的 solrconfig.xml,新增如下配置data-config.xml2 在core/conf 目录下的新建 data-config.xml 文件,新增如下配置3.修改core/conf 目录下 managed-schema.xml 的文件,新增需要索引的列,示例:4.进入solr 的后台管理,进行全量更新2. solr 的增量更新1.首...

weixin_34726945的博客 269

Spine骨骼动画查看器 - Skeleton Viewer

骨骼动画是现代游戏和动画制作中常用的技术之一。Spine骨骼动画查看器(Skeleton Viewer)是一个官方提供的工具,用于查看和调试Spine骨骼动画。本文将介绍Skeleton Viewer的功能和使用方法,并提供相应的源代码示例。通过Skeleton Viewer,开发者可以直观地查看和调试Spine骨骼动画,包括骨骼结构、动画播放和事件触发等。这有助于提高骨骼动画的质量和效果,并加速开发过程。以上代码演示了如何使用Skeleton Viewer查看和播放Spine骨骼动画。

HsvvDatabase的博客 3459

Solr连接MySQL数据库实现 全量更新、增量更新、定时增量更新

Solr的增量更新与定时增量更新

dongyan3595的博客 2589

Opencv计算机视觉PPT-算法篇

01 02 03 04 05 06 07 08 09 010 011 012 013 014 015 016 017 018

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 203

【超详细】MIT 液态神经网络(LNNs)——深度学习新动向

输入可以是任何形式的时间序列数据,其中表示时间。例如传感器读数、金融市场数据、语音信号等。

allein_STR的博客 2611

springboot+solr 全文检索

1.把 solr-8.1.1.tgz 传到服务器 //把文件传到 /usr/local 目录下 cd /usr/local 2.解压 solr tar -xzf solr-8.1.1.tgz 3.启动 solr cd /usr/local/solr-8.1.1 # 不建议使用管理员启动 solr,加 -force 强制启动 bin/solr start -force # 开放 8983 端口 firewall-cmd --zone=public --add-port=8983/tcp --perma

weixin_49985669的博客 861

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

solr 的全量更新与增量更新

solr 的全量更新与增量更新solr 的全量更新简介详细过程solr 的增量更新简介详细配置最后感谢大家的观看! solr 的全量更新与增量更新solr 的全量更新简介详细过程solr 的增量更新简介详细配置最后感谢大家的观看!solr 的增量更新 solr 的全量更新与增量更新solr 的全量更新简介详细过程solr 的增量更新简介详细配置最后感谢大家的观看!olr 的全量更新与增量更新) solr 的全量更新 简介 当我们访问购物网站的时候,我们可以根据我们随意所想的内容输入关键字就可以查询出相关的内

xiang1186的博客 516

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

solr7集群 springboot_springboot Solr 史上最详细

Solr全文检索全文检索目录.png一、Solr1、下载 .zip 为windows版我下载的最新版本solr-8.2.0:内嵌jeety服务器,solr5之前的版本都需要放到自己的tomcat里.下载:solr-8.2.0.zip安装:下载完成之后放在的D:\solr-8.2.0目录下,然后解压到当前目录解压结构目录说明:​ 还有一个:server文件夹,图示比较老的,没有显...

weixin_33089993的博客 521

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Solr4.* Solr5.* 增量更新

前提: a、基于Solr 4.10.3的Solr-cloud,部署在linux操作系统,Tomcat 8容器中; b、在使用solr,对solr有了解。 最近在做一个基于Solr的全文检索的功能,在实现增量更新的时候碰到了一些问题,总结下来...

choulengfu8923的博客 180

Linux+Solr+Zookeeper-05:通过DataImport功能手动导入MySql的数据至Solr数据库

[超级连接:Linux+Solr+Zookeeper系列-序章] 本章以新闻搜索为例,对Solr开发进行记录,主要涉及以下两方面的知识: 如何通过修改配置文件完成Solr的Configsets的配置。 如何通过dataimport功能将MySql数据库中的数据导入到Solr数据库中。 1.场景说明 整体目标: 通过Solr Admin后台查询功能,查询出天气预报的相关新闻。 ...

韩超的博客 (hanchao5272) 993

solr 4.8 mysql_Apache Solr 4.8.1 基于MYSQL数据库的索引创建

1.添加dataimport:编辑${catalina_home}\solr_config\solr\collection1\conf\solrconfig.xml,在最后添加以下内容;data-config.xml2.在同一目录新建 data-config.xml内容如下:deltaQuery="select id,title,content from luyou where createdTi...

weixin_39744606的博客 95

SpringBoot Solr

文章目录Solr全文检索一、Solr1、下载 **.zip** 为windows版2、启动、关闭solr3、创建core文件夹创建core文件夹方式一(推荐):创建core文件夹方式二:4、创建springboot项目和测试代码其他问题:5.solr连接数据库1、添加驱动依赖包2、配置dataimporthandler相关包3、添加数据库配置4、创建data-config2.xml数据库连接配置5、配置managed-schema6、验证是否成功6.solr 安装中文分词器7.Solr 界面功能8.Solr

宇宙小神特别萌 908

solr的使用方式

solr的使用 本博客solr版本为7.7.2 下载地址: http://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.7.2/solr-7.7.2.zip 下载完压缩文件后解压到本地即可 打开 使用cmd进入控制台,然后进入solr-7.7.2\bin文件夹,在文件夹中输入 solr start 默认端口号是8983,注意窗口不要关闭 打开...

weixin_43787182的博客 192
上一篇: Solr技术配置,以及数据导入和分词器的使用
下一篇: 代码生成器的源码编写
javaChengXuY
博客等级 码龄8年 15粉丝 38原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值