数据库
文章平均质量分 71
数据库开发经验分享
guobinhui
一个IT青年的编程笔记
展开
-
基于Redis+Lua实现分布式锁模拟秒杀扣减库存业务(非常详细,良心解析)
最近和几个小伙伴聊了聊基于Redis的分布式锁实现秒杀扣减库存业务的一些技术细节,刚好最近钻研了一段时间,本篇内容通过1个详细的案例,把这个实现方案作个记录,当做自己对知识的总结积累,同时也欢迎广大开发者朋友一起交流,学习,大家可以留言讨论,原创写作不易,请勿喷,如果觉得有用,不要忘了关注点赞哦。前言首先我们可以讨论以下4个问题:1、什么是分布式锁 ?要说起分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一原创 2020-09-22 18:05:25 · 6735 阅读 · 8 评论 -
SpringBoot集成ElasticSearch以及通过ElasticSearch的Java API实现增删改查
一、简介ElasticSearch,简称ES, 是一个基于Lucene的分布式可扩展的实时搜索和分析引擎,是基于分词和分段的全文搜索引擎,具有分词,同义词,词干查询的功能,ES天生具有分布式和实时的属性。当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。Elast...原创 2019-12-16 15:16:08 · 1886 阅读 · 0 评论 -
Mybatis 版本问题引起的Parameter '0' not found. Available parameters are【0, 1, param1, param2】解决方案
按照mybatis,今天按照常规写法,在Dao层mapper接口的方法中,有多个参数,以0,1,2…的序列为keyName,填充参数结果运行时一直报下面这个错:Parameter '0' not found. Available parameters are【0, 1, param1, param2】最后查了相关资料,说是mybatis常规版本的jar包都是支持这种按照0,1,2索引填充参数,目前...原创 2018-04-09 17:38:28 · 1408 阅读 · 0 评论 -
数据库连接池原理之(二):数据库连接池处理并发,事务,配置以及维护
笔者个人博客地址:http://www.chenyunkeji.com,欢迎关注数据库连接池原理分析,点击这里:《通俗易懂的数据库连接池实现机制讲解》本节内容紧接着上篇的数据库连接池原理分析,继续讲解连接池需要考虑的其他重要问题1、并发问题 为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为java语言自身提供了对并发管理的...原创 2018-12-21 12:05:17 · 2026 阅读 · 2 评论 -
数据库连接池原理之(一):通俗易懂的数据库连接池原理以及实现机制讲解
本篇内容综合广大网友提供内容,笔者经过整理,对数据库连接池原理和实现过程做个很系统的并且通俗易懂的分析讲解,以及手写一个连接池实现过程作为演示。一、早期通过JDBC方式操作数据库我们先来看早期使用JDBC的方式操作数据库的过程,这里以mysql数据库为例讲解JDBC操作数据库原理:一般来说,java应用程序访问数据库的过程是: ①装载数据库驱动程序; ②通过jdbc...原创 2018-12-21 11:45:02 · 40081 阅读 · 23 评论 -
oracle最全面的分析函数over(Partition by...)及开窗函数详解
大型项目中通常会涉及到统计分析相关的功能,今天笔者把oracle常用的分析函数用法和区别通过详细的案例整理出来,希望对各位同学有帮助,也算是对自己的一个重新温故。常用的分析函数如下所列:row_number() over(partition by ... order by ...)rank() over(partition by ... order by ...)dense_rank() ov...原创 2018-07-09 09:30:28 · 61417 阅读 · 1 评论 -
Oracle+Mybatis的foreach insert批量插入这些坑的解决方案
最近做一个批量上传附件的需求,将多个附件的信息批量插入数据库中。解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数据库中,因为项目使用了MyBatis,所以打算使用MyBatis的foreach功能进行批量插入。期间遇到了“SQL 命令未正确结束 ”的错误,最终解决,记录下来供以后查阅和学习。 首先,有关Mybatis的foreach insert的,具体如下:...原创 2018-03-28 16:19:23 · 10108 阅读 · 1 评论 -
Mysql的常用操作命令
本人使用Mysql数据库,把一些常用操作命令归纳如下,希望能给大家带来收获。 启动:net start mySql; 进入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 列出数据库:show databases; 选择数据库:use databaseName; 列出表格:show tables; 显示表格列的属性原创 2016-09-04 18:51:25 · 263 阅读 · 0 评论 -
深度解析oracle的rownum
本人最近在使用oracle的rownum实现分页显示的时候,对rownum做了进一步的分析和研究。现归纳如下,希望能给大家带来收获。 对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。 举例说明: 例如表:student(学生)表原创 2016-09-04 18:16:16 · 335 阅读 · 0 评论 -
oracle中表查询需要注意的常见问题
1、当在select语句中,同时使用where、group by和having子句时,它们的作用和执行顺序如下: (1)where用于筛选由from指定的数据对象 (2)group by用于对where的结果进行分组 (3)having用于对group by分组后的数据进行过滤2、count(*)与count(columnName|columnIndex)的区别:co原创 2016-09-11 21:40:43 · 411 阅读 · 0 评论 -
Oracle中表空间和区
1、表空间:表空间是数据库的逻辑划分,一个表空间只属于一个数据库。每个表空间由一个或多个数据文件组成。 表空间中其他逻辑结构的数据存储在这些数据文件中。在Oracle安装完成后,会自动建立多个表空间, 主要有: (1)System表空间:该表空间用于存放Oracle系统内部表和数据字典的数据,如表名、列名、用户名等。 (2)undo表空间:该表空间是存储撤销信息的表空间。当用户对数据库表进行原创 2016-09-11 21:12:05 · 392 阅读 · 0 评论 -
Oracle常用系统内置函数
to_char();–转换为字符串 to_number();–转换为数值类型 to_date();–转换为日期类型1、常用数学运算函数 abs(value) : 返回value的绝对值 ceil(value) :返回大于或等于value的最小整数 cos(value) : 返回value的余弦值 floor(value) : 返回等于或小于value的最大整数 mod(value1,v原创 2016-09-11 20:48:45 · 448 阅读 · 0 评论 -
Oracle中decode函数对case when的简化
现假设我们有一个用户表t_user,其中拥有一个表示性别的字段gender,该字段对应的值可能为0、1或者空,其中0表示“男”,1表示“女”,空表示“未填”。现需要我们在查询t_user的gender时不是显示对应的0和1,而是显示对应的文本,“男”或“女”。很显然,我们可以使用case when else来实现,对应的SQL语句如下所示: Sql代码: select case t.gender原创 2016-09-11 17:05:18 · 1511 阅读 · 0 评论 -
Maven学习 (一) 搭建Maven环境
有两种方式可以配置maven的环境配置,本人推荐使用第二种,即使用本地的maven安装文件,个人感觉这样可以方便管理下载jar包的存放位置,错误信息的输出等,可以在dos窗口中可以清晰看到,虽然比较麻烦,每次都要敲dos命令,但可以写批处理文件来解决.方式一: 不使用本地的maven安装文件环境配置(也即使用的是m2eclipse插件的默认配置) settings.xml设置localRep原创 2016-07-30 22:18:49 · 287 阅读 · 0 评论