- Java开发笔记
zxg45
个人笔记#Javajavaspringbootjdk
Java开发笔记1、工具类1.1时间1.2JSON操作2、文件操作3、网络1、工具类1.1时间时间格式化publicstaticfinalDATE_PATTERN="yyyy-MM-ddHH:mm:ssSSS";Stringdate=newSimpleDateFormat(DATE_PATTERN).format(newDate());实体类注解时间格式化publicstaticfinalStri
- 【3-4】《Java面向对象高级知识》——继承、重写和重载、final关键字、抽象类、接口、多态、Object类、内部类、包装类、可变参数、递归
美少女降临人世间
【Java精华笔记】已完结抽象类final关键字重写和重载Java面向对象内部类
文章目录一、继承格式二、子类实例化内存分析三、super详解四、重写1、重写的概念2、重写和重载的区别五、final关键字六、抽象类1、抽象类的概念2、抽象类常见问题3、抽象类和普通类的区别七、接口1、面向接口编程思想2、接口的编写3、接口和抽象类的区别八、多态1、多态的体现2、instanceof九、Object类概述1、toString2、equals十、内部类概述1、成员内部类(了解)2、局
- mybatis xml sql
媤纹琴獣
mybatisxmlsql
1.mybatis根据某一个字段根据以及集合中的列表进行模糊匹配mapperListselectByLinkList(@Param("userId")StringuserId,@Param("messageName")StringmessageName,@Param("anJinGoodsNameList")ListanJinGoodsNameList,@Param("sjDate")Datesj
- JavaScript的那些不可不知的知识
遇见~未来
JavaScriptjavascript开发语言ecmascript
目录JavaScript基础JavaScript高级JavaScript基础数据类型:JavaScript的数据类型分为基本数据类型和引用数据类型。基本数据类型包含number(数字)、string(字符串)、boolean(布尔值)、null(空值)、undefined(未定义)。而像array(数组)、function(函数)等则属于引用数据类型。在内存存储方面,基本类型是按值存储在栈中,引用
- javamail发( 收)邮件
sageparadise
Javajavamailstringexception邮件服务器emailproperties
MyAuthenticator.javapackagecn.com.vetc.survey.mail;importjavax.mail.Authenticator;importjavax.mail.PasswordAuthentication;publicclassMyAuthenticatorextendsAuthenticator{privateStringuserName=null;priv
- JAVA基础语句整理
chengxuyuan66666
javapython开发语言
Java是一种广泛使用的面向对象编程语言,它具有简洁、强大、跨平台等特性。以下是Java中的一些基础语句和概念,适合初学者了解:1.类与对象Java是基于类的,程序的基本单位是类(class)。对象是类的实例。java复制代码//定义一个类publicclassPerson{//属性(成员变量)Stringname;intage;//方法(成员函数)voidintroduce(){System.o
- lombok常见注解概述,部分简单注解示例
小哇666
项目构建/代码管理lombok
Lombok常用的注解:注解描述@Getter/@Setter可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以使用该注解中的AccessLevel属性来指定Getter/Setter方法的访问级别。@ToString生成toString方法,默认情况下,会输出类名、所有
- C#操作Xml节点
我曾经是个程序员
常用代码片段xmlc#
见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看......1、增加节点publicstaticboolAppendChild(stringfilePath,stringxPath,XmlNodexmlNode){try{XmlDocumentdoc=newXmlDocument();doc.Load(filePath
- golang gorm 更新零值字段的方法
用户昵称不能为空
gogorm
坑使用golang的gorm更新0值的字段,总是失败。按照官方文档,如果字段值中有0值,不能再使用struct,而需要使用map[string]interface{},但实际上还是失败,比对了很久,才发现是在Updates方法不能传入map的指针,必须是map的值。错误的写法values:=map[string]interface{}{"status":0,"from":hash,
- golang gorm查询任意字段的组装方法
用户昵称不能为空
golang开发语言后端
查询指定未知长度字段的汇总方法packagemainimport("fmt""github.com/jinzhu/gorm"_"github.com/jinzhu/gorm/dialects/mysql""log""strings")typeFilterDostruct{}typeScanFieldsinterface{IsScanField()bool}typeSummarystruct{Num
- QWebEngineView之加载html打印PDF
学习,学习,在学习
笔记前端htmlqt5
QWebEngineView通过QWebEngineView加载html文件打印pdf相比自己手动绘制pdf简单的多,制作好对应的html文件,然后Qfile读取html文件模板,替换函数需要替换的value,存成html文件,然后QWebEngineView加载,就直接能够打印成对应格式的pdf了。//读取html文件QFileoutFile(QStringLiteral("C://Users/
- C++中的基本IO流
ITSOK_U
C++c++
IO流1.基本IO流1.1IO对象无拷贝无赋值1.2IO对象的条件状态1.3IO与缓冲2.文件IO流2.1使用ifstream读取文件内容2.1使用ofstream写文件3.stringIO类在C++中时不直接处理输入输出的,我们使用的是标准IO库来处理IO,这些库支持从文件、控制台窗口等读写数据,当然在C++中还有一些特殊的类型允许内存IO。比如我们就可以通过string进行读写数据。下面我们先
- 语句嵌套(for中for)、break(跳出)\continue(继续)
青木川崎
java
/*语句嵌套:就是语句中还有语句。现在要学的是循环嵌套。*/classForForDemo{publicstaticvoidmain(String[]args){for(intx=0;x<3;x++){for(inty=0;y<4;y++)//共打印12次ok。{System.out.println(“Ok”);}}}}打印星星1****2****3****4****classForForDemo
- 美图鉴赏-古风,OpenCV视频批量处理
图苑
java图像处理AIGCopencv
publicstaticvoidmixBatch(StringoutputPath,ListvideoList,intclipDuration,intnumber,intmergeDuration,ProgressCallbackcallback)throwsException{//临时裁剪文件夹StringclipTempDir=outputPath+File.separator+"_clipT
- 【LeetCode 刷题】字符串-反转字符串
Bran_Liu
LeetCodeleetcode算法
此博客为《代码随想录》字符串章节的学习笔记,主要内容为反转字符串相关的题目解析。文章目录344.反转字符串541.反转字符串II151.反转字符串中的单词344.反转字符串题目链接classSolution:defreverseString(self,s:List[str])->None:"""Donotreturnanything,modifysin-placeinstead."""left,r
- 融云 IM 干货丨私有云IMKit支持哪些国家的语言?
融云即时通讯im
私有云IMKit支持以下国家的语言:默认支持的语言简体中文(zh_CN)英语(en_US)阿拉伯语(ar)其他语言支持除了上述默认支持的语言外,IMKit还支持通过客户端单独适配其他语言。例如,可以通过以下步骤添加日语支持:创建Localizations:选择日语。创建Strings文件:命名必须和SDK的国际化文件一致,例如RongCloudKit。设置对应语言的文案:将IMKit内置的Rong
- Kotlin Bootcamp 自学(2):Kotlin基础
EdwardW@ng
kotlinjavaandroid
KotlinBootcamp自学(2):Kotlin基础目录KotlinBootcamp自学(2):Kotlin基础前言运算符与数据类型(OperatorsandTypes)数值类型(NumericalType)练习使用数据类型字符串(String)比较条件和布尔值(Boolean)比较符号if...else...关于空值(Nullability)关于array,list,和loopListArr
- 关于StringBuilder扩容机制的理解
司空怡瑾
java开发语言
一.为什么要用StringBuilder?在java中由于字符串的不可变性,即一旦创建就不能修改其内容,每次使用String类进行字符串拼接时,都会创建一个新的String对象,原有的String对象会被丢弃,为了解决这一问题,我们引入了StringBuilder类,StringBuilder是一个可变的字符序列,允许在原对象上进行修改,避免了创建大量的中间对象。二.StringBuilder的扩
- Java基础——String
白暮晚
Java八股java
Java基础——StringString是Java基础类型中较为特殊的一个类,我们这里着重探讨一下这个类。StringString底层使用一个char类型的数组来存储字符串,且该数组使用了private和final修饰为什么说String是不可变的final与private修饰该字符数组且未暴露修改方法,杜绝了从外部修改该对象的可能性由于final的使用导致子类无法继承该对象,进而导致子类不可能修
- vue3实现搜索关键字高亮
前后端都会点儿
javascriptvue.js前端
其实这个需求非常常见,平时用app、浏览网页时都能用到,那具体是怎么实现的?我做了小案例,先看下效果我们先梳理下这个需求获取搜索关键字,并过滤出符合条件的数据匹配出要高亮的关键字增加样式那其实关键点就在于怎么匹配,如何高亮?这里我们使用正则匹配,再用replace替换,replace的第二个参数也可以是函数,接受的值就是正则匹配到的值:constsearchKey=(val:string)=>{i
- JSON数据格式转换
百事老饼干
前端积累json
在前端Vue3中,处理JSON数据通常涉及到从API获取JSON、解析JSON数据、或者将JavaScript对象转换为JSON字符串。这里是几种常见的JSON转换操作一、从JSON字符串解析为JavaScript对象如果你从API或其他地方收到一个JSON字符串,可以使用JSON.parse()来将它转换为JavaScript对象。letjsonString='{"name":"John","a
- Python 删除文件与文件夹 - 奇客谷教程
八狐云|酷画册|二维码生成
pythonPython教程python
Python教程Python介绍Python开发环境搭建Python语法Python变量Python数值类型Python类型转换Python字符串(String)Python运算符Python列表(list)Python元组(Tuple)Python集合(Set)Python字典(Dictionary)PythonIf…ElsePythonWhile循环PythonFor循环Python函数Pyt
- 封装Redis工具类(解决击穿,穿透)
Li清水
Redisredis数据库缓存
基于StringRedisTemplate封装一个缓存工具类Redis实战篇|Kyle'sBlog(cyborg2077.github.io)目录方法1:将任意Java对象序列化为JSON,并存储到String类型的Key中,并可以设置TTL过期时间方法2:将任意Java对象序列化为JSON,并存储在String类型的Key中,并可以设置逻辑过期时间,用于处理缓存击穿问题方法3:根据指定的Key查
- 2.slf4j入口
uncleqiao
slf4jslf4j
文章目录一、故事引入二、原理探究三、SLF4JServiceProvider四、总结一、故事引入故事要从下面这段代码说起publicclassApp{privatestaticfinalLoggerlogger=LoggerFactory.getLogger(App.class);publicstaticvoidmain(String[]args)throwsException{logger.in
- 【Java数据结构】Java对象的比较
回响N
数据结构java
元素的比较基本类型比较在Java中基本类型比较可以直接比较大小,返回一个布尔类型(true或者false)。inta=10;intb=20;System.out.println(a>b);System.out.println(a=b);System.out.println(a{publicStringname;@OverridepublicintcompareTo(Studento){//重写co
- PHP xml 常用函数整理
請叫我菜鳥
php开发语言
————————-DOM函数————————————–1、DOMDocument->load()作用:加载xml文件用法:DOMDocument->load(stringfilename)参数:filename,xml文件;返回:如果成功则返回TRUE,失败则返回FALSE。2、DOMDocument->loadXML()作用:加载xml代码用法:DOMDocument->loadXML(stri
- 【Javascript Day11】数组的内置方法、添加获取、元素查询及练习、排序方法数组的内置方法
clp20031101
javascript前端开发语言
数组的内置方法//js语法中所有的数据类型都是从对象演变而来的varstr="abc";console.log(typeofstr,str.constructor);//stringconsole.log(typeofstr=="string");varuser={};console.log(typeofuser,user.constructor);vararr=[1,2];console.log
- python中判断字符串值是否为数字
上趣工作室
pythonpython开发语言
使用isdigit()方法:这个方法返回一个布尔值,如果字符串只包含数字字符,则返回True,否则返回False。string="12345"ifstring.isdigit():print("是数字")else:print("不是数字")使用isnumeric()方法:这个方法类似于isdigit()方法,但它还可以识别其他数字字符,例如Unicode数字字符。同样,它返回一个布尔值。strin
- leetcode 66 :加一【JavaScript/JS解法】
yuri.css
算法leetcode算法javascript
还是先上题给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整数不会以零开头。看完题之后感受就是join和split来回跳return(Number(digits.join(""))+1n).toString().split("");然后出现两个问题:1存在[0,0]这样的输入,如果直接转换为零
- C/C++中的strcmp函数的源代码
凌龍墨
C语言c语言中strcm的源代码strcmp函数
附上源代码,不懂得地方可以提问共同提高`#includeintmy_strcmp(constchar*string1,constchar*string2){intret=0;while(!(ret=*(unsignedchar*)string1-*(unsignedchar*)sting2)&&*string2){//从两个字符串的首字母开始比较,相等则进入循环,继续后面字符的比较++string
- windows下源码安装golang
616050468
golang安装golang环境windows
系统: 64位win7, 开发环境:sublime text 2, go版本: 1.4.1
1. 安装前准备(gcc, gdb, git)
golang在64位系
- redis批量删除带空格的key
bylijinnan
redis
redis批量删除的通常做法:
redis-cli keys "blacklist*" | xargs redis-cli del
上面的命令在key的前后没有空格时是可以的,但有空格就不行了:
$redis-cli keys "blacklist*"
1) "blacklist:12:
[email protected]
- oracle正则表达式的用法
0624chenhong
oracle正则表达式
方括号表达示
方括号表达式
描述
[[:alnum:]]
字母和数字混合的字符
[[:alpha:]]
字母字符
[[:cntrl:]]
控制字符
[[:digit:]]
数字字符
[[:graph:]]
图像字符
[[:lower:]]
小写字母字符
[[:print:]]
打印字符
[[:punct:]]
标点符号字符
[[:space:]]
- 2048源码(核心算法有,缺少几个anctionbar,以后补上)
不懂事的小屁孩
2048
2048游戏基本上有四部分组成,
1:主activity,包含游戏块的16个方格,上面统计分数的模块
2:底下的gridview,监听上下左右的滑动,进行事件处理,
3:每一个卡片,里面的内容很简单,只有一个text,记录显示的数字
4:Actionbar,是游戏用重新开始,设置等功能(这个在底下可以下载的代码里面还没有实现)
写代码的流程
1:设计游戏的布局,基本是两块,上面是分
- jquery内部链式调用机理
换个号韩国红果果
JavaScriptjquery
只需要在调用该对象合适(比如下列的setStyles)的方法后让该方法返回该对象(通过this 因为一旦一个函数称为一个对象方法的话那么在这个方法内部this(结合下面的setStyles)指向这个对象)
function create(type){
var element=document.createElement(type);
//this=element;
- 你订酒店时的每一次点击 背后都是NoSQL和云计算
蓝儿唯美
NoSQL
全球最大的在线旅游公司Expedia旗下的酒店预订公司,它运营着89个网站,跨越68个国家,三年前开始实验公有云,以求让客户在预订网站上查询假期酒店时得到更快的信息获取体验。
云端本身是用于驱动网站的部分小功能的,如搜索框的自动推荐功能,还能保证处理Hotels.com服务的季节性需求高峰整体储能。
Hotels.com的首席技术官Thierry Bedos上个月在伦敦参加“2015 Clou
- java笔记1
a-john
java
1,面向对象程序设计(Object-oriented Propramming,OOP):java就是一种面向对象程序设计。
2,对象:我们将问题空间中的元素及其在解空间中的表示称为“对象”。简单来说,对象是某个类型的实例。比如狗是一个类型,哈士奇可以是狗的一个实例,也就是对象。
3,面向对象程序设计方式的特性:
3.1 万物皆为对象。
- C语言 sizeof和strlen之间的那些事 C/C++软件开发求职面试题 必备考点(一)
aijuans
C/C++求职面试必备考点
找工作在即,以后决定每天至少写一个知识点,主要是记录,逼迫自己动手、总结加深印象。当然如果能有一言半语让他人收益,后学幸运之至也。如有错误,还希望大家帮忙指出来。感激不尽。
后学保证每个写出来的结果都是自己在电脑上亲自跑过的,咱人笨,以前学的也半吊子。很多时候只能靠运行出来的结果再反过来
- 程序员写代码时就不要管需求了吗?
asia007
程序员不能一味跟需求走
编程也有2年了,刚开始不懂的什么都跟需求走,需求是怎样就用代码实现就行,也不管这个需求是否合理,是否为较好的用户体验。当然刚开始编程都会这样,但是如果有了2年以上的工作经验的程序员只知道一味写代码,而不在写的过程中思考一下这个需求是否合理,那么,我想这个程序员就只能一辈写敲敲代码了。
我的技术不是很好,但是就不代
- Activity的四种启动模式
百合不是茶
android栈模式启动Activity的标准模式启动栈顶模式启动单例模式启动
android界面的操作就是很多个activity之间的切换,启动模式决定启动的activity的生命周期 ;
启动模式xml中配置
<activity android:name=".MainActivity" android:launchMode="standard&quo
- Spring中@Autowired标签与@Resource标签的区别
bijian1013
javaspring@Resource@Autowired@Qualifier
Spring不但支持自己定义的@Autowired注解,还支持由JSR-250规范定义的几个注解,如:@Resource、 @PostConstruct及@PreDestroy。
1. @Autowired @Autowired是Spring 提供的,需导入 Package:org.springframewo
- Changes Between SOAP 1.1 and SOAP 1.2
sunjing
ChangesEnableSOAP 1.1SOAP 1.2
JAX-WS
SOAP Version 1.2 Part 0: Primer (Second Edition)
SOAP Version 1.2 Part 1: Messaging Framework (Second Edition)
SOAP Version 1.2 Part 2: Adjuncts (Second Edition)
Which style of WSDL
- 【Hadoop二】Hadoop常用命令
bit1129
hadoop
以Hadoop运行Hadoop自带的wordcount为例,
hadoop脚本位于/home/hadoop/hadoop-2.5.2/bin/hadoop,需要说明的是,这些命令的使用必须在Hadoop已经运行的情况下才能执行
Hadoop HDFS相关命令
hadoop fs -ls
列出HDFS文件系统的第一级文件和第一级
- java异常处理(初级)
白糖_
javaDAOspring虚拟机Ajax
从学习到现在从事java开发一年多了,个人觉得对java只了解皮毛,很多东西都是用到再去慢慢学习,编程真的是一项艺术,要完成一段好的代码,需要懂得很多。
最近项目经理让我负责一个组件开发,框架都由自己搭建,最让我头疼的是异常处理,我看了一些网上的源码,发现他们对异常的处理不是很重视,研究了很久都没有找到很好的解决方案。后来有幸看到一个200W美元的项目部分源码,通过他们对异常处理的解决方案,我终
- 记录整理-工作问题
braveCS
工作
1)那位同学还是CSV文件默认Excel打开看不到全部结果。以为是没写进去。同学甲说文件应该不分大小。后来log一下原来是有写进去。只是Excel有行数限制。那位同学进步好快啊。
2)今天同学说写文件的时候提示jvm的内存溢出。我马上反应说那就改一下jvm的内存大小。同学说改用分批处理了。果然想问题还是有局限性。改jvm内存大小只能暂时地解决问题,以后要是写更大的文件还是得改内存。想问题要长远啊
- org.apache.tools.zip实现文件的压缩和解压,支持中文
bylijinnan
apache
刚开始用java.util.Zip,发现不支持中文(网上有修改的方法,但比较麻烦)
后改用org.apache.tools.zip
org.apache.tools.zip的使用网上有更简单的例子
下面的程序根据实际需求,实现了压缩指定目录下指定文件的方法
import java.io.BufferedReader;
import java.io.BufferedWrit
- 读书笔记-4
chengxuyuancsdn
读书笔记
1、JSTL 核心标签库标签
2、避免SQL注入
3、字符串逆转方法
4、字符串比较compareTo
5、字符串替换replace
6、分拆字符串
1、JSTL 核心标签库标签共有13个,
学习资料:http://www.cnblogs.com/lihuiyy/archive/2012/02/24/2366806.html
功能上分为4类:
(1)表达式控制标签:out
- [物理与电子]半导体教材的一个小问题
comsci
问题
各种模拟电子和数字电子教材中都有这个词汇-空穴
书中对这个词汇的解释是; 当电子脱离共价键的束缚成为自由电子之后,共价键中就留下一个空位,这个空位叫做空穴
我现在回过头翻大学时候的教材,觉得这个
- Flashback Database --闪回数据库
daizj
oracle闪回数据库
Flashback 技术是以Undo segment中的内容为基础的, 因此受限于UNDO_RETENTON参数。要使用flashback 的特性,必须启用自动撤销管理表空间。
在Oracle 10g中, Flash back家族分为以下成员: Flashback Database, Flashback Drop,Flashback Query(分Flashback Query,Flashbac
- 简单排序:插入排序
dieslrae
插入排序
public void insertSort(int[] array){
int temp;
for(int i=1;i<array.length;i++){
temp = array[i];
for(int k=i-1;k>=0;k--)
- C语言学习六指针小示例、一维数组名含义,定义一个函数输出数组的内容
dcj3sjt126com
c
# include <stdio.h>
int main(void)
{
int * p; //等价于 int *p 也等价于 int* p;
int i = 5;
char ch = 'A';
//p = 5; //error
//p = &ch; //error
//p = ch; //error
p = &i; //
- centos下php redis扩展的安装配置3种方法
dcj3sjt126com
redis
方法一
1.下载php redis扩展包 代码如下 复制代码
#wget http://redis.googlecode.com/files/redis-2.4.4.tar.gz
2 tar -zxvf 解压压缩包,cd /扩展包 (进入扩展包然后 运行phpize 一下是我环境中phpize的目录,/usr/local/php/bin/phpize (一定要
- 线程池(Executors)
shuizhaosi888
线程池
在java类库中,任务执行的主要抽象不是Thread,而是Executor,将任务的提交过程和执行过程解耦
public interface Executor {
void execute(Runnable command);
}
public class RunMain implements Executor{
@Override
pub
- openstack 快速安装笔记
haoningabc
openstack
前提是要配置好yum源
版本icehouse,操作系统redhat6.5
最简化安装,不要cinder和swift
三个节点
172 control节点keystone glance horizon
173 compute节点nova
173 network节点neutron
control
/etc/sysctl.conf
net.ipv4.ip_forward =
- 从c面向对象的实现理解c++的对象(二)
jimmee
C++面向对象虚函数
1. 类就可以看作一个struct,类的方法,可以理解为通过函数指针的方式实现的,类对象分配内存时,只分配成员变量的,函数指针并不需要分配额外的内存保存地址。
2. c++中类的构造函数,就是进行内存分配(malloc),调用构造函数
3. c++中类的析构函数,就时回收内存(free)
4. c++是基于栈和全局数据分配内存的,如果是一个方法内创建的对象,就直接在栈上分配内存了。
专门在
- 如何让那个一个div可以拖动
lingfeng520240
html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml
- 第10章 高级事件(中)
onestopweb
事件
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- 计算两个经纬度之间的距离
roadrunners
计算纬度LBS经度距离
要解决这个问题的时候,到网上查了很多方案,最后计算出来的都与百度计算出来的有出入。下面这个公式计算出来的距离和百度计算出来的距离是一致的。
/**
*
* @param longitudeA
* 经度A点
* @param latitudeA
* 纬度A点
* @param longitudeB
*
- 最具争议的10个Java话题
tomcat_oracle
java
1、Java8已经到来。什么!? Java8 支持lambda。哇哦,RIP Scala! 随着Java8 的发布,出现很多关于新发布的Java8是否有潜力干掉Scala的争论,最终的结论是远远没有那么简单。Java8可能已经在Scala的lambda的包围中突围,但Java并非是函数式编程王位的真正觊觎者。
2、Java 9 即将到来
Oracle早在8月份就发布
- zoj 3826 Hierarchical Notation(模拟)
阿尔萨斯
rar
题目链接:zoj 3826 Hierarchical Notation
题目大意:给定一些结构体,结构体有value值和key值,Q次询问,输出每个key值对应的value值。
解题思路:思路很简单,写个类词法的递归函数,每次将key值映射成一个hash值,用map映射每个key的value起始终止位置,预处理完了查询就很简单了。 这题是最后10分钟出的,因为没有考虑value为{}的情