.reIndex()
删除索引
db.COLLECTION_NAME.dropIndex("INDEX-NAME")
db.COLLECTION_NAME.dropIndexes()
_id 索引无法删除。
执行计划
参考:MongoDB干货系列2-MongoDB执行计划分析详解(1) | MongoDB中文社区、MongoDB - 执行计划 - 听雨危楼 - 博客园
for ( var i= 1 ; i< 10000000 ; i+ + ) { db. indexDemo. insert ( {_id:i , num:'index:' + i , address:'address:i%9999' }) }
默认的查询计划 queryPlanner
db. indexDemo. find( {num:'index:99999' }) . explain ( )
db. indexDemo. createIndex( { num: 1 } )
db. indexDemo. getIndexes( )
db. indexDemo. dropIndex( "num_1" )
{
"explainVersion" : "1" ,
"queryPlanner" : {
"namespace" : "study.goods" , 【查询的表】
"indexFilterSet" : false , 【是否有indexfilter】
"parsedQuery" : { 【查询过滤条件】
"qty" : {
"$gt" : 50
}
} ,
"queryHash" : "3DC2392F" ,
"planCacheKey" : "B7F8CFFA" ,
"maxIndexedOrSolutionsReached" : false ,
"maxIndexedAndSolutionsReached" : false ,
"maxScansToExplodeReached" : false ,
"winningPlan" : { 【最优执行计划详细内容】
"stage" : "FETCH" , 【FETCH :通过返回的index扫描。COLLSCAN :全表扫描】
"inputStage" : { 【子stage】
"stage" : "IXSCAN" , 【表示进行索引扫描】
"keyPattern" : { 【扫描的索引内容】
"qty" : 1
} ,
"indexName" : "qty_1" , 【使用的索引名称】
"isMultiKey" : false , 【是否多列索引。索引建立在array上时是true 】
"multiKeyPaths" : {
"qty" : [ ]
} ,
"isUnique" : false ,
"isSparse" : false ,
"isPartial" : false ,
"indexVersion" : 2 ,
"direction" : "forward" , 【查询的顺序:forward升序、backward降序】
"indexBounds" : { 【索引扫描范围,没有制定范围就是[ MaxKey, MinKey] 】
"qty" : [
"(50.0, inf.0]"
]
}
}
} ,
"rejectedPlans" : [ ] 【其它非最优的执行计划】
} ,
"command" : {
"find" : "goods" ,
"filter" : {
"qty" : {
"$gt" : 50
}
} ,
"sort" : {
"qty" : 1
} ,
"$db" : "study"
} ,
"serverInfo" : { 【服务器信息】
"host" : "fe9b0d04fcbd" ,
"port" : 27017 ,
"version" : "5.0.5" ,
"gitVersion" : "d65fd89df3fc039b5c55933c0f71d647a54510ae"
} ,
"serverParameters" : {
"internalQueryFacetBufferSizeBytes" : 104857600 ,
"internalQueryFacetMaxOutputDocSizeBytes" : 104857600 ,
"internalLookupStageIntermediateDocumentMaxSizeBytes" : 104857600 ,
"internalDocumentSourceGroupMaxMemoryBytes" : 104857600 ,
"internalQueryMaxBlockingSortMemoryUsageBytes" : 104857600 ,
"internalQueryProhibitBlockingMergeOnMongoS" : 0 ,
"internalQueryMaxAddToSetBytes" : 104857600 ,
"internalDocumentSourceSetWindowFieldsMaxMemoryBytes" : 104857600
} ,
"ok" : 1
}
附加执行状态 executionStats
db. indexDemo. find( {num:'index:99999' }) . explain ( "executionStats" )
{
"explainVersion" : "1" ,
"queryPlanner" : { ... } ,
"executionStats" : {
"executionSuccess" : true , 【是否执行成功】
"nReturned" : 1 , 【匹配到的文档数】
"executionTimeMillis" : 0 , 【选择和查询执行计划所需时间。毫秒】
"totalKeysExamined" : 1 , 【扫描的索引条目数】
"totalDocsExamined" : 1 , 【扫描文档数】
"executionStages" : { 【最优执行计划的完整信息】
"stage" : "FETCH" , 【FETCH :根据索引结果去扫描文档】
"nReturned" : 1 , 【stage= FETCH 时,跟上面的nReturned一样】
"executionTimeMillisEstimate" : 0 , 【检索文档获得数据的时间】
"works" : 2 , 【执行查询阶段的各个工作以“单元”划分,这里表示工作单元数】
"advanced" : 1 , 【返回到父阶段的结果数】
"needTime" : 0 , 【中间结果返回给父级的工作循环次数】
"needYield" : 0 ,
"saveState" : 0 ,
"restoreState" : 0 ,
"isEOF" : 1 ,
"docsExamined" : 1 ,
"alreadyHasObj" : 0 ,
"inputStage" : { ... }
}
} ,
"command" : {
"find" : "indexDemo" ,
"filter" : {
"num" : "index:99999"
} ,
"$db" : "study"
} ,
"serverInfo" : { ... } ,
"serverParameters" : {
"internalQueryFacetBufferSizeBytes" : 104857600 ,
"internalQueryFacetMaxOutputDocSizeBytes" : 104857600 ,
"internalLookupStageIntermediateDocumentMaxSizeBytes" : 104857600 ,
"internalDocumentSourceGroupMaxMemoryBytes" : 104857600 ,
"internalQueryMaxBlockingSortMemoryUsageBytes" : 104857600 ,
"internalQueryProhibitBlockingMergeOnMongoS" : 0 ,
"internalQueryMaxAddToSetBytes" : 104857600 ,
"internalDocumentSourceSetWindowFieldsMaxMemoryBytes" : 104857600
} ,
"ok" : 1
}
关键参数
耗时 executionTimeMillis
executionStats.executionTimeMillis:整体查询时间。
executionStats.executionStages.executionTimeMillisEstimate:检索Document获得数据的时间
executionStats.executionStages.inputStage.executionTimeMillisEstimate:扫描文档 Index所用时间
扫描数 nReturned
nReturned:查询结果返回的条目数
totalKeysExamined:总索引扫描的条目数
totalDocsExamined :总索引扫描的条目数
扫描数越少越好,理想情况: nReturned = totalKeysExamined = otalDocsExamined
stage 参数表
类型
描述
COLLSCAN
全表扫描
IXSCAN
索引扫描
FETCH
根据索引去检索指定document
SHARD_MERGE
将各分片的返回结果合并
SORT
在内存中进行了排序
LIMIT
限制返回数
SKIP
使用skip进行跳过
IDHACK
针对_id进行的查询
SHARDING_FILTER
通过mongos对分片数据进行查询
COUNT
利用db.coll.explain().count()之类进行count运算
TEXT
全文索引
PROJECTION
限定返回字段时候
返回最优与备选计划 allPlansExecution
db.indexDemo.find({num:'index:99999'}).explain("allPlansExecution")
慢查询分析
开启内置查询分析器
db. setProfilingLevel( [ 0 , 1 , 2 ] , m)
0 :不记录
1 :记录超过阈值m的记录
2 :记录所有读写操作
db. setProfilingLevel( 1 , 100 )
db. setProfilingLevel( 2 )
查看监听结果
db.system.profile.find().sort({millis:-1}).limit(3)
结果分析
慢查询常见于:
应用设计不合理;
数据模型不合理;
硬件配置;
缺少索引;
explain 分析是否跑索引
创建索引
测试数据
db. goods. insertMany( [
{ item: "canvas" , qty: 100 , size: { h: 28 , w: 35.5 , uom: "cm" }, status :
"A" },
{ item: "journal" , qty: 25 , size: { h: 14 , w: 21 , uom: "cm" }, status :
"A" },
{ item: "mat" , qty: 85 , size: { h: 27.9 , w: 35.5 , uom: "cm" }, status :
"A" },
{ item: "mousepad" , qty: 25 , size: { h: 19 , w: 22.85 , uom: "cm" },
status : "P" },
{ item: "notebook" , qty: 50 , size: { h: 8.5 , w: 11 , uom: "in" }, status :
"P" },
{ item: "paper" , qty: 100 , size: { h: 8.5 , w: 11 , uom: "in" }, status :
"D" },
{ item: "planner" , qty: 75 , size: { h: 22.85 , w: 30 , uom: "cm" }, status :
"D" },
{ item: "postcard" , qty: 45 , size: { h: 10 , w: 15.25 , uom: "cm" },
status : "A" },
{ item: "sketchbook" , qty: 80 , size: { h: 14 , w: 21 , uom: "cm" }, status :
"A" },
{ item: "sketch pad" , qty: 95 , size: { h: 22.85 , w: 30.5 , uom: "cm" },
status : "A" }
] ) ;
db. inventory. insertMany( [
{ _id: 1 , item: "abc" , stock: [ { size: "S" , color: "red" , quantity: 25 }, {
size: "S" , color: "blue" , quantity: 10 }, { size: "M" , color: "blue" ,
quantity: 50 }] },
{_id:2 , item:"def" , stock:[ {size:"S" , color:"blue" , quantity:20 },
{size:"M" , color:"blue" , quantity:5 }, {size:"M" , color:"black" , quantity:10 },
{size:"L" , color:"red" , quantity:2 }] },
{_id:3 , item:"ijk" , stock:[ {size:"M" , color:"blue" , quantity:15 },
{size:"L" , color:"blue" , quantity:100 }, {size:"L" , color:"red" , quantity:25 }] }
] )
单字段索引 Single Field
单列索引
db..createIndex(keys, options) options:
db. indexDemo. find( {num:"index:600" }) . explain ( )
db. indexDemo. createIndex( {num:1 })
db. indexDemo. find( {num:"index:600" }) . explain ( )
给嵌入式字段创建索引
{
"_id" : ObjectId( "570c04a4ad233577f97dc459" ) ,
"score" : 1034 ,
"location" : { state: "NY" , city: "New York" }
}
db. < table > . createIndex( { "location.state" : 1 } )
db. < table > . find( { "location.state" : "CA" } )
db. < table > . find( { "location.city" : "Albany" , "location.state" : "NY" } )
给整个内嵌文档创建索引
{
"_id" : ObjectId( "570c04a4ad233577f97dc459" ) ,
"score" : 1034 ,
"location" : { state: "NY" , city: "New York" }
}
db. < table > . createIndex( { location: 1 } )
db. records. find( { location: { city: "New York" , state: "NY" } } )
复合索引 Compound Index
db.collection.createIndex( { : , : , ... } )
⚠️不能 创建具有hashed索引类型的复合索引。如果试图创建包含hashed索引字段的复合索引,将收到一个错误。
{
"_id" : ObjectId( . . . ) ,
"item" : "Banana" ,
"category" : [ "food" , "produce" , "grocery" ] ,
"location" : "4th Street Store" ,
"stock" : 4 ,
"type" : "cases"
}
db. < table > . createIndex( { "item" : 1 , "stock" : 1 } )
db. < table > . find( { item: "Banana" } )
db. < table > . find( { item: "Banana" , stock: { $gt: 5 } } )
⚠️特别注意字段的顺序与排序。复合索引遵循最左匹配原则。
多键索引 Multikey indexes
支持对数组中每个元素创建索引。元素类型:string、number、 nested documents(嵌套文档) 。
number 类型数组
db. inventory. remove( {})
db. inventory. insertMany( [
{ _id: 5 , type : "food" , item: "aaa" , ratings: [ 5 , 8 , 9 ] },
{ _id: 6 , type : "food" , item: "bbb" , ratings: [ 5 , 9 ] },
{ _id: 7 , type : "food" , item: "ccc" , ratings: [ 9 , 5 , 8 ] },
{ _id: 8 , type : "food" , item: "ddd" , ratings: [ 9 , 5 ] },
{ _id: 9 , type : "food" , item: "eee" , ratings: [ 5 , 9 , 5 ] }
] )
db. inventory. find( {ratings:[ 5 , 9 ] }) . explain ( "executionStats" )
db. inventory. createIndex( { ratings: 1 } )
嵌套文档 类型数组
单列索引
db. inventory. dropIndexes( )
db. inventory. insertMany( [
{ type : "food" , item: "aaa" , ratings: [ 5 , 8 , 9 ] , size:[ {w:10 , h:165 }, {w:9 , h:158 }] },
{type : "food" , item: "aaa" , ratings: [ 5 , 8 , 9 ] , size:[ {w:11 , h:175 }, {w:7 , h:142 }] },
{type : "food" , item: "aaa" , ratings: [ 5 , 8 , 9 ] , size:[ {w:15 , h:163 }, {w:8 , h:157 }] }
] )
db. inventory. find( {"size.w" :10 }) . explain ( "executionStats" )
db. inventory. createIndex( {"size.w" :1 })
复合索引
db. inventory. createIndex( {"size.w" :1 , "size.h" :2 })
db. inventory. find( {"size.w" :10 }) . explain ( "executionStats" )
db. inventory. find( {"size.w" :10 }, {"size.h" :10 }) . explain ( "executionStats" )
地理空间索引 Geospatial Index
2dsphere索引,用于存储和查找球面上的点
2d索引,用于存储和查找平面上的点
db. company. insert (
{ loc : { type : "Point" , coordinates : [ 116.482451 , 39.914176 ] } , name : "来广营地铁站-叶青北园" , category : "Parks" }
)
# 2dsphere 或者 2d 。可以建立组合索引。
db. company. ensureIndex ( { loc : "2dsphere" } )
db. company. find ( {
"loc" : {
"$geoWithin" : {
"$center" : [ [ 116.482451 , 39.914176 ] , 0.05 ]
}
}
} )
全文索引 Text Index
一个集合最多一个全文索引,可以覆盖多个字段。中文分词支持不佳(推荐ES)。
db. < table> . createIndex ( { "fieldA" : "text" } )
db. < table> . createIndex (
{
fieldA : "text" ,
fieldB : "text"
}
)
db. store. insert ( [
{ _id : 1 , name : "Java Hut" , description : "Coffee and cakes" } ,
{ _id : 2 , name : "Burger Buns" , description : "Gourmet hamburgers" } ,
{ _id : 3 , name : "Coffee Shop" , description : "Just coffee" } ,
{ _id : 4 , name : "Clothes Clothes Clothes" , description : "Discountclothing" } ,
{ _id : 5 , name : "Java Shopping" , description : "Indonesian goods" }
] )
db. store. createIndex ( { name : "text" , description : "text" } )
db. store. find ( { $text : { $search : "java coffee shop" } } )
{ "_id" : 3 , "name" : "Coffee Shop" , "description" : "Just coffee" }
{ "_id" : 1 , "name" : "Java Hut" , "description" : "Coffee and cakes" }
{ "_id" : 5 , "name" : "Java Shopping" , "description" : "Indonesian goods" }
哈希索引 Hashed Index
只用于等值查询。
db. < table> . createIndex ( { "字段" : "hashed" } )
MongoDB 索引底层数据结构
文档类型数据库使用 BSON 格式保存数据,比 RDBMS 存储更方便。RDBMS 适合用于多表之间的关联的场景,而 BSON 可以把关联的数据存在一起。 比如MySQL使用 RDBMS 格式,数据的关联性强,范围查询普遍。所以底层使用B+树。 MongoDB使用B树,通过索引能更快访问,但不适合范围查询。 B树特点 :
多路搜索。
节点存储既存储索引又存储数据。
关键字在树中只出现一次。
跟B+树的区别:
你可能感兴趣的:(海量数据存储专栏,mongodb,数据库)
9、汇编语言编程入门:从环境搭建到简单程序实现
神经网络酱
汇编语言 MEPIS GNU工具链
汇编语言编程入门:从环境搭建到简单程序实现1.数据存储介质问题解决在处理数据存储时,若要使用MEPIS系统,需确保有其可访问的存储介质。目前,MEPIS无法向采用NTFS格式(常用于Windows2000和XP工作站)的硬盘写入数据。不过,若硬盘采用FAT32格式,MEPIS就能进行写入操作。此外,MEPIS还能将文件写入软盘和大多数USB闪存驱动器。若工作站连接到局域网,还可通过FTP协议或挂载
什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
daixin8848
缓存 redis java 开发语言
缓存雪崩:在一个时间段内,有大量的key过期,或者Redis服务宕机,导致大量的请求到达数据库,带来巨大压力-给key设置不同的TTL、利用Redis集群提高服务的高可用性、添加多级缓存、添加降级流策略缓存击穿:给某一个key设置了过期时间,当key过期的时间,恰好这个时间点有大量的并发请求访问这个key,可能会瞬间把数据库压垮-互斥锁:缓存失败时,只允许一个请求去加载数据并更新缓存,其他请求阻塞
Aop +反射 实现方法版本动态切换
需求分析在做技术选型的时候一直存在着两个声音,mongo作为数据库比较mysql好,mysql做为该数据比mongo好。当然不同数据库都有有着自己的优势,我们在做技术选型的时候无非就是做到对数据库的扬长避短。mysql最大的优势就是支持事务,事务的五大特性保证的业务可靠性,随之而来的就是事务会产生的问题:脏读、幻读、不可重复度,当然我们也会使用不同的隔离级别来解决。(最典型的业务问题:银行存取钱)
最新阿里四面面试真题46道:面试技巧+核心问题+面试心得
风平浪静如码
前言做技术的有一种资历,叫做通过了阿里的面试。这些阿里Java相关问题,都是之前通过不断优秀人才的铺垫总结的,先自己弄懂了再去阿里面试,不然就是去丢脸,被虐。希望对大家帮助,祝面试成功,有个更好的职业规划。一,阿里常见技术面1、微信红包怎么实现。2、海量数据分析。3、测试职位问的线程安全和非线程安全。4、HTTP2.0、thrift。5、面试电话沟通可能先让自我介绍。6、分布式事务一致性。7、ni
模拟退火(SA):如何“故意走错路”,才能找到最优解?
小瑞瑞acd
小瑞瑞学数模 模拟退火算法 python 启发式算法 算法
模拟退火(SA):如何“故意走错路”,才能找到最优解?图示模拟退火算法如何通过接受较差解(橙色虚线标注)从局部最优(绿色点)逃逸,最终找到全局最优解(紫色点),展示其跳出局部极小值的能力。大家好,我是小瑞瑞!欢迎回到我的专栏!想象一下,你站在一座连绵不绝的山脉中,目标是找到海拔最低的那个山谷。你手上只有一个高度计,视野被浓雾笼罩,只能看清脚下的一小片区域。如果你是一个“贪心”的登山者,你的策略会非
基于redis的Zset实现作者的轻量级排名
周童學
Java redis 数据库 缓存
基于redis的Zset实现轻量级作者排名系统在今天的技术架构中,Redis是一种广泛使用的内存数据存储系统,尤其在需要高效检索和排序的场景中表现优异。在本篇博客中,我们将深入探讨如何使用Redis的有序集合(ZSet)构建一个高效的笔记排行榜系统,并提供相关代码示例和详细的解析。1.功能背景与需求假设我们有一个笔记分享平台,用户可以发布各种笔记,系统需要根据用户发布的笔记数量来生成一个实时更新的
Java并发核心:线程池使用技巧与最佳实践! | 多线程篇(五)
bug菌¹
Java实战(进阶版) java Java零基础入门 Java并发 线程池 多线程篇
本文收录于「Java进阶实战」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!环境说明:Windows10+IntelliJIDEA2021.3.2+Jdk1.8本文目录前言摘要正文何为线程池?为什么需要线程池?线程池的好处线程池使用场景如何创建线程池?线程池的常见配置源码解析案例分享案例代码演示案例运行
Deepseek技术深化:驱动大数据时代颠覆性变革的未来引擎
荣华富贵8
spring boot 搜索引擎 后端 缓存 redis
在大数据时代,信息爆炸和数据驱动的决策逐渐重塑各行各业。作为一项前沿技术,Deepseek正在引领新一轮技术革新,颠覆传统数据处理与分析方式。本文将从理论原理、应用场景和前沿代码实践三个层面,深入剖析Deepseek技术如何为大数据时代提供颠覆性变革的解决方案。一、技术背景与核心思想1.1大数据挑战与机遇在数据量呈指数级增长的背景下,传统数据处理方法面临数据存储、计算效率和信息提取精度的诸多挑战。
MySQL复习题
一.填空题1.关系数据库的标准语言是SQL。2.数据库发展的3个阶段中,数据独立性最高的是阶段数据库系统。3.概念模型中的3种基本联系分别是一对一、一对多和多对多。4.MySQL配置文件的文件名是my.ini或my.cnf。5.在MySQL配置文件中,datadir用于指定数据库文件的保存目录。6.添加IFNOTEXISTS可在创建的数据库已存在时防止程序报错。7.MySQL提供的SHOWCREA
Android GreenDao介绍和Generator生成表对象代码
目录(?)[-]介绍创建工程转载请注明:http://blog.csdn.net/sinat_30276961/article/details/50052109最近无意中发现了GreenDao,然后查看了一些资料后,发现这个数据库框架很适合用,于是乎,查看了官网的api,并自己写了一个小应用总结一下它的使用方法。介绍按照国际惯例,在开篇,总要先介绍一下什么是GreenDao吧。首先需要说明的是Gr
Mac OSX 下的mysql数据库文件存放位置
Bruuuces
mysql mac osx 位置 存放
之前我的mysql的系统数据库里的表被我玩坏了,万般无奈之下只得删除所有mysql的东西重新构建数据库。按照网上搜到的内容删除后重装发现数据库没有什么变化。于是自己在每个可能存放数据库文件的目录查找,最终确认目录位置如下:使用HomeBrew安装为/usr/local/var/mysql使用官方下载的dmg镜像安装为/usr/local/mysql删除这个目录再重新安装mysql就会重新生成系统数
点淘邀请码是什么怎么输入,点淘邀请码推广(注意细节问题邀请方法)
e95cfad15310
性能优异:安装包体积小,高速下载,浏览更省流量,运行流畅快速点淘邀请码点淘邀请码LRM8XZH9或LRYTO3FS或LRYTO3FS,诚邀你的加入。借助番茄小说强大的精准客户群体,该应用采取了进一步细分市场的策略。现在,用户无论是阅读还是听小说,都可以赚取零花钱。点淘邀请码点淘邀请码:LRM8XZH9、LRYTO3FS或LRYTO3FS,它的主要特点是提供海量的小说和广播节目,同时也具备一些社交互
GDP经济社会人文民生栅格数据下载网站汇总
疯狂学习GIS
本文为“GIS数据获取整理”专栏(https://blog.csdn.net/zhebushibiaoshifu/category_10857546.html)中第八篇独立博客,因此本文全部标题均由“8”开头。本文对目前主要的GDP、社会与经济数据获取网站加以整理与介绍,若需其它GIS领域数据(如遥感影像数据、气象数据、土地土壤数据、农业数据等),大家可以点击上方专栏查看,也可以看这一篇汇总文
mac升级mysql_Mac OSX下的MySQL数据库升级
weixin_39801714
mac升级mysql
MacOSX下的数据库升级最麻烦的不过权限的问题.本文的MySQL的安装方式为OSX下DMG磁盘镜像的安装方式,MacPorts/Homebrew的方式大同小异.从5.6.17升级到5.7.18安装目录信息ls-al/usr/local|grepmysqllrwxr-xr-x1rootwheel30B52100:39mysql@->mysql-5.6.17-osx10.7-x86_64drwxr-
【MySQL】MySQL数据库如何改名
武昌库里写JAVA
面试题汇总与解析 spring boot vue.js sql java 学习
MySQL建库授权语句https://www.jianshu.com/p/2237a9649ceeMySQL数据库改名的三种方法https://www.cnblogs.com/gomysql/p/3584881.htmlMySQL安全修改数据库名几种方法https://blog.csdn.net/haiross/article/details/51282417MySQL重命名数据库https://
HikariCP调试日志深度解析:生产环境故障排查完全指南
HikariCP调试日志深度解析:生产环境故障排查完全指南更新时间:2025年7月4日|作者:资深架构师|适用版本:HikariCP5.x+|难度等级:中高级前言在生产环境中,数据库连接池往往是系统性能的关键瓶颈。HikariCP作为当前最流行的Java连接池,其调试日志包含了丰富的运行时信息,能够帮助我们快速定位和解决各种连接池相关问题。本文将深入解析HikariCP的日志体系,提供一套完整的故
大学社团管理系统(11831)
codercode2022
java spring boot spring echarts spring cloud sentinel java-rocketmq
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项目截图有需要的同学,源代码和配套文档领取,加文章最下方的名片哦!
前端数据库:IndexedDB从基础到高级使用指南
文章目录前端数据库:IndexedDB从基础到高级使用指南引言一、IndexedDB概述1.1什么是IndexedDB1.2与其他存储方案的比较二、基础使用2.1打开/创建数据库2.2基本CRUD操作添加数据读取数据更新数据删除数据三、高级特性3.1复杂查询与游标3.2事务高级用法3.3性能优化技巧四、实战案例:构建离线优先的待办事项应用4.1数据库设计4.2同步策略实现五、常见问题与解决方案5.
修改gitlab默认的语言
Victor刘
gitlab
文章目录网上的方法1.采用数据库触发器的方法2.登录pg库2.1查看表2.2创建function2.3创建触发器2.4修改历史数据网上的方法网上修改/opt/gitlab/embedded/service/gitlab-rails/config/application.rb的方法,我试了,没生效,没进一步研究1.采用数据库触发器的方法2.登录pg库su-gitlab-psqlpsql-h/var/
如何在 Ubuntu 24.04 或 22.04 Linux 上安装和运行 Redis 服务器
山岚的运维笔记
Linux 运维及使用 linux 服务器 ubuntu redis 数据库
Redis(RemoteDictionaryServer,远程字典服务器)是一种内存数据结构存储,通常用作NoSQL数据库、缓存和消息代理。它是开源的,因此用户可以免费安装,无需支付任何费用。Redis旨在为需要快速数据访问和低延迟的应用程序提供速度和效率。Redis支持多种数据类型,包括字符串(Strings)、列表(Lists)、集合(Sets)、哈希(Hashes)、有序集合(SortedS
数据库基础概念梳理
22:30Plane-Moon
数据库
1.数据存储类型表(Table):存储结构化数据的标准方式,数据以行和列的形式组织,具有固定的格式。非结构化数据(UnstructuredData):如音频、视频、图片、文本文档等,其格式不固定,不易直接用表存储。2.SQL的核心优势SQL尤其擅长处理和操作存储在表中的结构化数据。2.1数据类型约束(DataTypeConstraints):定义列可存储的数据种类。整数类型:TINYINT(1字节
SQL笔记纯干货
AI入门修炼
oracle 数据库 sql
软件:DataGrip2023.2.3,phpstudy_pro,MySQL8.0.12目录1.DDL语句(数据定义语句)1.1数据库操作语言1.2数据表操作语言2.DML语句(数据操作语言)2.1增删改2.2题2.3备份表3.DQL语句(数据查询语言)3.1查询操作3.2题一3.3题二4.多表详解4.1一对多4.2多对多5.多表查询6.窗口函数7.拓展:upsert8.sql注入攻击演示9.拆表
大数据精准获客并实现高转化的核心思路和实现方法
2401_88470328
大数据精准获客 数据分析 数据挖掘 大数据 需求分析 big data
大数据精准获客并实现高转化的核心思路和实现方法大数据精准获客并实现高转化的核心思路和实现方法在当今信息爆炸的时代,企业如何通过海量的数据精准获取潜在客户,并提高转化率,已经成为营销策略中的关键环节。大数据精准获客的核心思路在于数据驱动、多渠道触达以及优化转化路径,从而实现高效的市场推广和客户转化。数据驱动原理和机制数据驱动的核心在于通过分析用户行为数据,挖掘潜在客户的需求和喜好,从而制定更加精准的
分布式全局唯一ID生成:雪花算法 vs Redis Increment,怎么选?
雪花算法vsRedisIncrement:分布式全局唯一ID生成方案深度对比在分布式系统开发中,“全局唯一ID”是绕不开的核心问题。无论是分库分表的数据库设计、订单编号的唯一性保证,还是日志追踪的链路标识,都需要一套可靠的ID生成方案。今天我们就来聊聊两种主流方案——雪花算法(Snowflake)和RedisIncrement,并从原理、特性到适用场景,帮你理清如何选择。同时,我们还将对比其他常见
【Druid】学习笔记
fixAllenSun
学习 笔记 oracle
【Druid】学习笔记【一】简介【1】简介【2】数据库连接池(1)能解决的问题(2)使用数据库连接池的好处【3】监控(1)监控信息采集的StatFilter(2)监控不影响性能(3)SQL参数化合并监控(4)执行次数、返回行数、更新行数和并发监控(5)慢查监控(6)Exception监控(7)区间分布(8)内置监控DEMO【4】Druid基本配置参数介绍【5】Druid相比于其他数据库连接池的优点
构建高效的物流车辆定位管理系统
体制教科书
本文还有配套的精品资源,点击获取简介:物流车辆定位管理系统利用信息技术提高物流效率和安全性。通过集成GPS技术进行实时车辆追踪和监控,它提供及时的货物运送和异常处理。系统的关键技术包括GPS车辆定位、C#编程语言、数据库管理、车辆管理、在途情况监控、预警与通知、数据分析与报告、用户界面设计、安全性与隐私保护以及系统集成。这些要素共同保障物流流程的高效、安全和智能化。1.物流车辆定位管理系统的应用与
Spring AI Alibaba 快速入门指南(适合初学者)
会飞的架狗师
AI spring 人工智能 java
如果你是刚接触AI开发或Spring框架的初学者,不用担心,本指南会用简单易懂的语言带你一步步了解并使用SpringAIAlibaba。一、什么是SpringAIAlibaba(小白也能懂)简单来说,SpringAIAlibaba就是一个“工具包”,它把阿里巴巴的AI技术(比如通义千问大模型、向量数据库等)和大家常用的Spring框架“打包”到了一起。**打个比方:**就像你想做蛋糕(开发AI应用
Java朴实无华按天计划从入门到实战(强化速战版-66天)
岫珩
Java 后端 java 开发语言 学习 Java 时间安排 学习计划
致敬读者感谢阅读笑口常开生日快乐⬛早点睡觉博主相关博主信息博客首页专栏推荐活动信息文章目录Java朴实无华按天计划从入门到实战(强化速战版-66天)1.基础(18)1.1JavaSE核心(5天)1.2数据库与SQL(5天)1.3前端基础(8天)2.进阶(17天)2.1JavaWeb核心(5天)2.2Mybatis与Spring全家桶(6天)2.3中间件入门(4天)2.4实践项目(2天)3.高阶(1
企业级RAG的数据方案选择 - 向量数据库、图数据库和知识图谱
南七小僧
AI技术产品经理 网站开发 人工智能 数据库 知识图谱 人工智能
如何为企业RAG选择合适的数据存储方式摘要:本文讨论了矢量数据库、图数据库和知识图谱在解决信息检索挑战方面的重要性,特别是针对企业规模的检索增强生成(RAG)。看看海外人工智能企业Writer是如何利用知识图谱增强企业级RAG。要点概要:矢量数据库高效存储数据,但缺乏上下文和关联信息。图数据库优先考虑数据点之间的关系,受益于关系结构。知识图谱在语义存储方面表现出色,由于其能够编码丰富的上下文信息,
小白学习mysql
阿什么名字不会重复呢
mysql 数据库 大数据 人工智能
推荐自学网站不用下载本地环境带自测头歌https://www.educoder.net✅适合基础小白的MySQL简单实用学习计划总学习时间建议:10~14天,每天1小时左右即可最终目标:掌握基础SQL操作,能完成简单项目需求第1阶段:认识数据库与环境搭建(1~2天)你需要学会:•数据库是什么?SQL是什么?•安装MySQLServer+Navicat(推荐用Navicat可视化工具)✅推荐学习内容
遍历dom 并且存储(将每一层的DOM元素存在数组中)
换个号韩国红果果
JavaScript html
数组从0开始!!
var a=[],i=0;
for(var j=0;j<30;j++){
a[j]=[];//数组里套数组,且第i层存储在第a[i]中
}
function walkDOM(n){
do{
if(n.nodeType!==3)//筛选去除#text类型
a[i].push(n);
//con
Android+Jquery Mobile学习系列(9)-总结和代码分享
白糖_
JQuery Mobile
目录导航
经过一个多月的边学习边练手,学会了Android基于Web开发的毛皮,其实开发过程中用Android原生API不是很多,更多的是HTML/Javascript/Css。
个人觉得基于WebView的Jquery Mobile开发有以下优点:
1、对于刚从Java Web转型过来的同学非常适合,只要懂得HTML开发就可以上手做事。
2、jquerym
impala参考资料
dayutianfei
impala
记录一些有用的Impala资料
1. 入门资料
>>官网翻译:
http://my.oschina.net/weiqingbin/blog?catalog=423691
2. 实用进阶
>>代码&架构分析:
Impala/Hive现状分析与前景展望:http
JAVA 静态变量与非静态变量初始化顺序之新解
周凡杨
java 静态 非静态 顺序
今天和同事争论一问题,关于静态变量与非静态变量的初始化顺序,谁先谁后,最终想整理出来!测试代码:
import java.util.Map;
public class T {
public static T t = new T();
private Map map = new HashMap();
public T(){
System.out.println(&quo
跳出iframe返回外层页面
g21121
iframe
在web开发过程中难免要用到iframe,但当连接超时或跳转到公共页面时就会出现超时页面显示在iframe中,这时我们就需要跳出这个iframe到达一个公共页面去。
首先跳转到一个中间页,这个页面用于判断是否在iframe中,在页面加载的过程中调用如下代码:
<script type="text/javascript">
//<!--
function
JAVA多线程监听JMS、MQ队列
510888780
java多线程
背景:消息队列中有非常多的消息需要处理,并且监听器onMessage()方法中的业务逻辑也相对比较复杂,为了加快队列消息的读取、处理速度。可以通过加快读取速度和加快处理速度来考虑。因此从这两个方面都使用多线程来处理。对于消息处理的业务处理逻辑用线程池来做。对于加快消息监听读取速度可以使用1.使用多个监听器监听一个队列;2.使用一个监听器开启多线程监听。
对于上面提到的方法2使用一个监听器开启多线
第一个SpringMvc例子
布衣凌宇
spring mvc
第一步:导入需要的包;
第二步:配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi=
我的spring学习笔记15-容器扩展点之PropertyOverrideConfigurer
aijuans
Spring3
PropertyOverrideConfigurer类似于PropertyPlaceholderConfigurer,但是与后者相比,前者对于bean属性可以有缺省值或者根本没有值。也就是说如果properties文件中没有某个bean属性的内容,那么将使用上下文(配置的xml文件)中相应定义的值。如果properties文件中有bean属性的内容,那么就用properties文件中的值来代替上下
通过XSD验证XML
antlove
xml schema xsd validation SchemaFactory
1. XmlValidation.java
package xml.validation;
import java.io.InputStream;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schem
文本流与字符集
百合不是茶
PrintWrite()的使用 字符集名字 别名获取
文本数据的输入输出;
输入;数据流,缓冲流
输出;介绍向文本打印格式化的输出PrintWrite();
package 文本流;
import java.io.FileNotFound
ibatis模糊查询sqlmap-mapping-**.xml配置
bijian1013
ibatis
正常我们写ibatis的sqlmap-mapping-*.xml文件时,传入的参数都用##标识,如下所示:
<resultMap id="personInfo" class="com.bijian.study.dto.PersonDTO">
<res
java jvm常用命令工具——jdb命令(The Java Debugger)
bijian1013
java jvm jdb
用来对core文件和正在运行的Java进程进行实时地调试,里面包含了丰富的命令帮助您进行调试,它的功能和Sun studio里面所带的dbx非常相似,但 jdb是专门用来针对Java应用程序的。
现在应该说日常的开发中很少用到JDB了,因为现在的IDE已经帮我们封装好了,如使用ECLI
【Spring框架二】Spring常用注解之Component、Repository、Service和Controller注解
bit1129
controller
在Spring常用注解第一步部分【Spring框架一】Spring常用注解之Autowired和Resource注解(http://bit1129.iteye.com/blog/2114084)中介绍了Autowired和Resource两个注解的功能,它们用于将依赖根据名称或者类型进行自动的注入,这简化了在XML中,依赖注入部分的XML的编写,但是UserDao和UserService两个bea
cxf wsdl2java生成代码super出错,构造函数不匹配
bitray
super
由于过去对于soap协议的cxf接触的不是很多,所以遇到了也是迷糊了一会.后来经过查找资料才得以解决. 初始原因一般是由于jaxws2.2规范和jdk6及以上不兼容导致的.所以要强制降为jaxws2.1进行编译生成.我们需要少量的修改:
我们原来的代码
wsdl2java com.test.xxx -client http://.....
修改后的代
动态页面正文部分中文乱码排障一例
ronin47
公司网站一部分动态页面,早先使用apache+resin的架构运行,考虑到高并发访问下的响应性能问题,在前不久逐步开始用nginx替换掉了apache。 不过随后发现了一个问题,随意进入某一有分页的网页,第一页是正常的(因为静态化过了);点“下一页”,出来的页面两边正常,中间部分的标题、关键字等也正常,唯独每个标题下的正文无法正常显示。 因为有做过系统调整,所以第一反应就是新上
java-54- 调整数组顺序使奇数位于偶数前面
bylijinnan
java
import java.util.Arrays;
import java.util.Random;
import ljn.help.Helper;
public class OddBeforeEven {
/**
* Q 54 调整数组顺序使奇数位于偶数前面
* 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半
从100PV到1亿级PV网站架构演变
cfyme
网站架构
一个网站就像一个人,存在一个从小到大的过程。养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原则。本文结合我自已14年网站人的经历记录一些架构演变中的体会。 1:积累是必不可少的
架构师不是一天练成的。
1999年,我作了一个个人主页,在学校内的虚拟空间,参加了一次主页大赛,几个DREAMWEAVER的页面,几个TABLE作布局,一个DB连接,几行PHP的代码嵌入在HTM
[宇宙时代]宇宙时代的GIS是什么?
comsci
Gis
我们都知道一个事实,在行星内部的时候,因为地理信息的坐标都是相对固定的,所以我们获取一组GIS数据之后,就可以存储到硬盘中,长久使用。。。但是,请注意,这种经验在宇宙时代是不能够被继续使用的
宇宙是一个高维时空
详解create database命令
czmmiao
database
完整命令
CREATE DATABASE mynewdb USER SYS IDENTIFIED BY sys_password USER SYSTEM IDENTIFIED BY system_password LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/m
几句不中听却不得不认可的话
datageek
1、人丑就该多读书。
2、你不快乐是因为:你可以像猪一样懒,却无法像只猪一样懒得心安理得。
3、如果你太在意别人的看法,那么你的生活将变成一件裤衩,别人放什么屁,你都得接着。
4、你的问题主要在于:读书不多而买书太多,读书太少又特爱思考,还他妈话痨。
5、与禽兽搏斗的三种结局:(1)、赢了,比禽兽还禽兽。(2)、输了,禽兽不如。(3)、平了,跟禽兽没两样。结论:选择正确的对手很重要。
6
1 14:00 PHP中的“syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM”错误
dcj3sjt126com
PHP
原文地址:http://www.kafka0102.com/2010/08/281.html
因为需要,今天晚些在本机使用PHP做些测试,PHP脚本依赖了一堆我也不清楚做什么用的库。结果一跑起来,就报出类似下面的错误:“Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /home/kafka/test/
xcode6 Auto layout and size classes
dcj3sjt126com
ios
官方GUI
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html
iOS中使用自动布局(一)
http://www.cocoachina.com/ind
通过PreparedStatement批量执行sql语句【sql语句相同,值不同】
梦见x光
sql 事务 批量执行
比如说:我有一个List需要添加到数据库中,那么我该如何通过PreparedStatement来操作呢?
public void addCustomerByCommit(Connection conn , List<Customer> customerList)
{
String sql = "inseret into customer(id
程序员必知必会----linux常用命令之十【系统相关】
hanqunfeng
Linux常用命令
一.linux快捷键
Ctrl+C : 终止当前命令
Ctrl+S : 暂停屏幕输出
Ctrl+Q : 恢复屏幕输出
Ctrl+U : 删除当前行光标前的所有字符
Ctrl+Z : 挂起当前正在执行的进程
Ctrl+L : 清除终端屏幕,相当于clear
二.终端命令
clear : 清除终端屏幕
reset : 重置视窗,当屏幕编码混乱时使用
time com
NGINX
IXHONG
nginx
pcre 编译安装 nginx
conf/vhost/test.conf
upstream admin {
server 127.0.0.1:8080;
}
server {
listen 80;
&
设计模式--工厂模式
kerryg
设计模式
工厂方式模式分为三种:
1、普通工厂模式:建立一个工厂类,对实现了同一个接口的一些类进行实例的创建。
2、多个工厂方法的模式:就是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式就是提供多个工厂方法,分别创建对象。
3、静态工厂方法模式:就是将上面的多个工厂方法模式里的方法置为静态,
Spring InitializingBean/init-method和DisposableBean/destroy-method
mx_xiehd
java spring bean xml
1.initializingBean/init-method
实现org.springframework.beans.factory.InitializingBean接口允许一个bean在它的所有必须属性被BeanFactory设置后,来执行初始化的工作,InitialzingBean仅仅指定了一个方法。
通常InitializingBean接口的使用是能够被避免的,(不鼓励使用,因为没有必要
解决Centos下vim粘贴内容格式混乱问题
qindongliang1922
centos vim
有时候,我们在向vim打开的一个xml,或者任意文件中,拷贝粘贴的代码时,格式莫名其毛的就混乱了,然后自己一个个再重新,把格式排列好,非常耗时,而且很不爽,那么有没有办法避免呢? 答案是肯定的,设置下缩进格式就可以了,非常简单: 在用户的根目录下 直接vi ~/.vimrc文件 然后将set pastetoggle=<F9> 写入这个文件中,保存退出,重新登录,
netty大并发请求问题
tianzhihehe
netty
多线程并发使用同一个channel
java.nio.BufferOverflowException: null
at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:183) ~[na:1.7.0_60-ea]
at java.nio.ByteBuffer.put(ByteBuffer.java:832) ~[na:1.7.0_60-ea]
Hadoop NameNode单点问题解决方案之一 AvatarNode
wyz2009107220
NameNode
我们遇到的情况
Hadoop NameNode存在单点问题。这个问题会影响分布式平台24*7运行。先说说我们的情况吧。
我们的团队负责管理一个1200节点的集群(总大小12PB),目前是运行版本为Hadoop 0.20,transaction logs写入一个共享的NFS filer(注:NetApp NFS Filer)。
经常遇到需要中断服务的问题是给hadoop打补丁。 DataNod