- 《CPython Internals》阅读笔记:p329-p335
codists
读书笔记python
《CPythonInternals》学习第16天,p329-p335总结,总计7页。一、技术总结1.debuggingp331,Therearetwotypesofdebugger,consoleandvisual——作者将debugger分为两类:(1)console:lldb(MAC系统使用),GDB(Linux系统使用))。(2)visual:VisualStudioDebugger,CLi
- 《CPython Internals》阅读笔记:p329-p335
python
《CPythonInternals》学习第16天,p329-p335总结,总计7页。一、技术总结1.debuggingp331,Therearetwotypesofdebugger,consoleandvisual——作者将debugger分为两类:(1)console:lldb(MAC系统使用),GDB(Linux系统使用))。(2)visual:VisualStudioDebugger,CLi
- Linux/MacOS中如何远程调试C/C++程序
捕鲸叉
软件调试和诊断linuxmacos软件调试
在Linux或macOS中远程调试C/C++程序,可以使用gdb(GNUDebugger)或lldb(LLVMDebugger)结合SSH或NAT/VPN来实现远程调试。以下是详细的步骤和方法:1.远程调试的需求和准备目标机器:运行需要调试的程序(通常是远程服务器)。调试机器:运行调试器(通常是本地开发机)。目标程序:必须是使用调试符号(-g选项)编译的C/C++程序。编译程序确保目标程序是用调试
- Python 多线程访问数据库正确使用dbutils PooledDB数据库连接池
weixin_41934979
数据库pythonDBUtilsPooledDB
1.安装DBUtilspipinstallDBUtils2.db_helper.py的代码如下importpymysqlfromdbutils.pooled_dbimportPooledDBfromconfigimportconfigclassDBHelper:def__init__(self):""":parammincached:连接池中空闲连接的初始数量:parammaxcached:连接池
- vscode结合docker配置c++开发环境
骊山道童
vscodedockerc++
工具链构建工具:cmake编译器:gcc/clang调试器:lldbLSP后端:clangd可选:代码格式化:clang-format静态检查:clang-tidy包管理:vcpkg/apt环境管理:docker/vcpkg(manifest)vscode有用插件:https://juejin.cn/post/7051434324565950501基础环境使用clang配置环境;https://d
- neo4j常用代码
静听山水
Neo4Jneo4j数据库
查版本:CALLdbms.components()YIELDname,versionsRETURNname,versions;清数据:MATCH()-[r]->()DELETEr;MATCH(n)DETACHDELETEn;
- Rust入门:如何在windows + vscode中关闭程序codelldb.exe
高精度计算机视觉
rust开发语言后端
在windows中用vscode单步调试rust程序的时候,发现无论是按下stop键,还是运行完程序,调试器codelldb.exe一直霸占着主程序不退出,如果此时对代码进行修改,后续就没法再编译调试了。目前我也不知道要怎么处理这个事,只好通过暴力指令taskkill关闭codelldb实现。具体怎么做呢?比如,你有一个程序main.rs,在第一次单步断点调试时,发现是没有问题的,可以在断点处停留
- Linux系统c/c++开发环境配置
UCASers
开发环境问题linuxc语言c++
安装LLVM全家桶及CMAKE输入以下命令,安装clang,clangd,lldb及cmake。sudoaptinstallclangclangdlldbcmakeyukeyang@DESKTOP-QFK2F47:~/myfiles/test$sudoaptinstallclangclangdlldbcmake[sudo]passwordforyukeyang:Readingpackagelist
- LLDB is likely reading from device memory to resolve symbols错误如何解决?
请叫我飞哥@
iOS开发swiftiosxcodeobjective-cswiftui
出现LLDBislikelyreadingfromdevicememorytoresolvesymbols.报错,截图如下时,使用如下解决方案.删除文件~/Library/Developer/Xcode/iOSDeviceSupport,然后重启Xcode
- iOS11上使用lldb调试APP
lichao890427
这里说的是使用Electra越狱的iOS11设备,使用平常的方式是无法用debugserver调试的。这是由于Electra本身的原因,使用unc0ver越狱iOS11则没有此问题1.获取一个签名的debugserver。如果手头没有,可以在iphone连接mac后,在iphone的/Developer/usr/bin/debugserver取到,将其放在/usr/bin/下。后面如果/usr/b
- Android逆向之旅-Android Studio的调用So文件极简教程
贺兰猪
Androidandroidandroidstudio
一、配置so需要的库环境高版本的AndroidStudio已经集成了LLDB调试库,所以说,大家不要在找为什么没有,该从哪里去找。现在很多教程都是老的,这个算是我用的这个版本的最新方法,踩坑版。File->setting二、创建so文件的工程直接选择最后一个File->Newproject配置自己按喜好配配置完成后在Project模式下查看是这样的。函数名:Java_com_example_myj
- vscode配置wsl ubuntu c++的环境
黑虎含珠
vscodeubuntuide
在ubuntu安装llvm/clangsudoaptinstallllvmclangclangdlldbvscode的调试器接口是按GDB开发的,所以需要一个适配器,lldb-mi就是这个适配器。lldb-mi原来是llvm项目的一部分,后面成为了一个单独的项目https://github.com/lldb-tools/lldb-mi。接下来安装lldb-misudoaptinstalllibll
- MachO与lldb (10)
为了自由的白菜
调试信息生成过程探究第一个工程clangtest.m-otest->.m生成可执行文件objdump--macho-dtest->查看代码段->汇编执行(虚拟内存地址+执行的指令)clang-ctest.m-otest.o->生成.o文件objdump--macho-dtest.o->查看.o文件->与可执行文件不同的是(偏移量+执行的执行)新增加test(),test_1()的函数,并在mian
- VSCode 安装LLDB调试器(OS X)并启动调试
liulilittle
Extensionvscodeide编辑器
插件:(LLDB插件安装)安装这个版本不好弄错了,CodeLLDB(名字)配置:(LLDB启动调试){//使用IntelliSense了解相关属性。//悬停以查看现有属性的描述。//欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387"version":"0.2.0","configurations":[{"name":"C++Lau
- macOS下所有必须插件都已正常安装但还是无法运行rust程序
Rock姜
rustmacos
问题macOS下vscode已安装ra和codelldb的情况下无法命中断点。解决方案删除~/.vscode/extensions/vadimcn.vscode-lldb-1.10.0/lldb/bin/debugserver文件。
- 保姆级教程——VSCode如何在Mac上配置C++的运行环境
SimpleLearing
Cppvscodemacosc++
vscode官方下载:点击官网链接,下载对应的pkg,安装打开;https://code.visualstudio.com/插件安装点击箭头所指插件商店按钮,yyds;下载C/C++插件;![外链图片转存下载CodeLLDB插件;!如果安装失败,可手动安装;打开Github:https://github.com/vadimcn/vscode-lldb/releases;如果是基于Intel的Mac
- Rust 第一个rust程序Hello Rust️
TE-茶叶蛋
Rustrust开发语言后端
文章目录前言一、vscode安装rust相关插件二、CargoNew三、vscode调试rustLLDB前言Rust学习系列。今天就让我们掌握第一个rust程序。HelloRust️。在上一篇文章我们在macOS成功安装了rust。一、vscode安装rust相关插件以下是一些常用的Rust开发插件:RustAnalyzer,社区提供,可以说是2024年最好用的rust插件。这个是官方的Rust(
- iOS开发LLDB终端命令
loongod
ClangClang:aClanguagefamilyfrontendforLLVMLLVM的C语言家族前端英文版中文版clang编译器提供的指令编译可执行文件clangHelloWorld.m-oHelloWorld-frameworkFoundation将OC代码转换成C++代码将OC代码转换成C++代码来剖析具体的底层实现。$xcrun-sdkiphoneosclang-archarm64-
- 音视频学习(一)JNI入门
主音King
前言Android平台从一开始就支持C/C++了,Android支持JNI编程方式第三方应用完全可以通过JNI调用自己的C动态库,于是NDK(NativeDevelopKit)就诞生了。介绍JNI是Java程序设计语言功能最强的特征,允许Java类的某些方法原生实现(C/C++)。环境配置安装AS+NDK+CMAKE+LLDBAS:AndroidStudio4.0NDK:允许Android使用C和
- iOS_Xcode_LLDB调试常用命令
反射圈
iOS开发iosxcodemacos
文章目录结构常用命令:1、流程控制:2、常用命令3、进程信息:4、寄存器:register5、镜像:image6、内存:memory7、符号断点:breakpoint8、内存断点:watchpoint9、Tips:结构命令结构://命令结构:[[...]][-options[optionvalue]][argument[argument...]]命令子命令命令操作命令选项命令参数常用命令:expr
- iOS lldb 连接 debugserver error: failed to get reply to handshake packet
linewon
ios
之前一直用的python的usbmuxwrapper端口转发工具。今天调试的时候,突然报错,并且观察到端口转发窗口,转发ssh的2222端口正常,但是转发1234端口的时候有问题。尝试重新插拔usb数据线,尝试卸载重装端口转发工具,都没有效果。最后用node.js的usbmux工具,解决了!https://www.npmjs.com/package/usbmuxnpminstall-gusbmux
- 调试器LLDB
红色海_
摘取自网络,自己有做整理,备自己偶尔健忘时复习使用!LLDB是LLVM的调试器。Xcode从4.0开始编译器改用LLVM(GCC--->LLVM)相应的调试器也从gdb改为LLDB。从Xcode5.0开始所有工程被自动设置为使用LLDB。LLDB基础知识LLDB控制台LLDB控制台.pngLLDB控制台平时会输出一些log信息。想输入命令调试必须让程序进入暂停状态。那么怎么让程序进入暂停状态呢?方
- VSCode离线安装 CodeLLDB 包
sscb0521
开发工具vscode
1、卸载CodeLLDB插件2、进入到VSCode安装目录,把codelldb-x86_64-windows.vsix放到该目录下,在该目录下按住shift+鼠标右键,打开powershell。3、输入以下命令code--install-extensioncodelldb-x86_64-windows.vsix安装成功如下图显示
- Linux非root用户安装DB2 V9.7
CodingCode
经验介绍在Linux上如何以非root用户身份安装DB2V9.7安装$tar-zxvfDB2_Connect_Svr_97_Linux_x86-64.tar.gz$cdconsv$db2_installDBI1244IDirectoryfornon-rootinstallationofDB2-/home/${UID}/sqllibSpecifyoneofthefollowingkeywordsto
- 教你配置windows上的windbg,linux上的lldb,打入clr内部这一篇就够了
一线码农上海
一:背景1.讲故事前几天公众号里有位兄弟看了几篇文章之后,也准备用windbg试试看,结果这一配就花了好几天,(づ╥﹏╥)づ,我想也有很多跃跃欲试的朋友在配置的时候肯定会遇到这样和那样的问题,所以我觉得有必要整理一下,让大家少走弯路。二:一些基础概念1.在哪下载现在安装windbg越来越麻烦,还要安装Windows10SDK,很多人就栽在这里,其实大家可以直接在网上找一键打包的windbg6.0版
- dbeaver
无我_a50f
sudoadd-apt-repositoryppa:serge-rider/dbeaver-cesudoapt-getupdatesudoapt-getinstalldbeaver-ce
- 【论文阅读】【基于隐蔽带宽的汽车控制网络鲁棒认证】中的一些顶会论文摘要
人工智能有点
CAN总线论文阅读汽车网络
读摘要,了解面貌文章目录[12][51][58][35][xx]原文:https://webofscience.clarivate.cn/wos/alldb/full-record/WOS:000387820900034Largenumbersofsmartconnecteddevices,alsonamedastheInternetofThings(IoT),arepermeatingouren
- 基于VSCode+Clangd+lldb搭建Linux C++环境
海里卖咸鱼
环境配置vscodelinuxc++
目录安装VSCode和WSL安装g++和cmake等基于clangd配置代码补全使用lldb调试代码测试集成(gtest)代码格式化和检查容器开发配置文件与插件推荐本篇博文主要介绍如何基于VSCode搭建Linux下的C++开发环境,包括代码补全、调试、测试、格式化与静态检查和容器中开发的相关内容,后续或许再写一篇在Windows下搭建的?安装VSCode和WSLVSCode直接在官网下载安装即可
- ClickHouse系列--1.ck调试最佳实践--VSCode+CodeLLDB+Clangd
xiaolei565
大数据vscodeclickhouse
gitclone源代码(非必要)首先forkClickHouse官方github的库到自己账号中gitclone代码
[email protected]:ClickHouse/ClickHouse.git#...alternatively,youcanusehttps://github.com/ClickHouse/ClickHouse.gitastherepoUR
- wsl2 + vscode + espidf + clangd + clang + lldb windows下最快的编译速度
weibiaohua007
windowsvscodeubuntu
前言这个我自己鼓捣了很多次,都是因为编译速度不满而放弃,最后融合了很多大咖的微博成功了,帮助一些初学者,放在这里帮助记录第一章:wsl2+ubuntu22.04参考博客:是参考这个博主的这个博主讲的很详细了,需要注意的是,安装ubuntu前先把wsl升级到wsl2,设置默认工具为wsl2,安装之前建议先下载一个终端,在微软的store中就能下载按下箭头,在按住ctrl点击powershell,就是
- 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为{}的情