06 2020 档案
什么是分布式锁?实现分布式锁的三种方式
摘要:本文目录 一 为什么要使用分布式锁 二、分布式锁应该具备哪些条件 三、分布式锁的三种实现方式 四、基于数据库的实现方式 五、基于Redis的实现方式 六、基于ZooKeeper的实现方式 七、总结 在很多场景中,我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。那具 阅读全文
posted @ 2020-06-30 16:37 Code2020 阅读(374) 评论(0) 推荐(0) 编辑
@Consumes @Produces的作用
摘要:consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html; produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回; 起限制作用类似于filter @Consumes 阅读全文
posted @ 2020-06-30 14:51 Code2020 阅读(1357) 评论(0) 推荐(0) 编辑
pro、pre、test、dev环境
摘要:今天给大家介绍一下开发过程中,四个环境以及各自的功能特点,四个环境分别是:pro、pre、test、dev环境,中文名字:生产环境、灰度环境、测试环境、开发环境,其实大家看英文应该就差不多可以看出来对应的是什么环境。 环境介绍: pro环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环 阅读全文
posted @ 2020-06-28 16:12 Code2020 阅读(621) 评论(0) 推荐(0) 编辑
Java中的isEmpty方法、null以及""的区别
摘要:public class TestNull { public static void main(String[] args) { String a = new String(); String b = ""; String c = null; if (a.isEmpty()) { System.ou 阅读全文
posted @ 2020-06-28 15:22 Code2020 阅读(820) 评论(0) 推荐(0) 编辑
Mybatis 开启控制台打印sql语句
摘要:springboot+mybatis整合过程中,开启控制台sql语句打印的多种方式:附:mybatis官方文档 方法一: 1.在mybatis的配置文件中添加: <settings> <!-- 打印sql日志 --> <setting name="logImpl" value="STDOUT_LOG 阅读全文
posted @ 2020-06-27 21:33 Code2020 阅读(15542) 评论(0) 推荐(1) 编辑
Mybatis执行sql(insert、update、delete)返回值问题
摘要:数据库:Mysql 在使用mybatis的过程中对执行sql的返回值产生疑问,顺手记录一下。 结论: insert: 插入n条记录,返回影响行数n。(n>=1,n为0时实际为插入失败) update:更新n条记录,返回影响行数n。(n>=0) delete: 删除n条记录,返回影响行数n。(n>=0 阅读全文
posted @ 2020-06-27 21:29 Code2020 阅读(1989) 评论(0) 推荐(0) 编辑
mybatis 插入数据返回 -1
摘要:通常使用mybatis对数据进行增删改会进行返回值的判断, 返回值不为1时说明该条语句执行失败,不过今天遇到程序报错返回值不为1,去数据库查看却发现插入成功了,后来知道原来是因为mybatis一次对多条数据进行操作成功后返回值为 -1,而我是通过调用存储过程对数据进行的操作,同时插入了多条数据。 一 阅读全文
posted @ 2020-06-27 20:45 Code2020 阅读(508) 评论(0) 推荐(0) 编辑
Java 之 JUC
摘要:1. JUC 简介 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类,用于定义类似于线程的自定义子系统,包括线程池,异步 IO 和轻量级任务框架;还提供了设计用于多线程上下文中的 Collection 实现等; 2. v 阅读全文
posted @ 2020-06-26 20:00 Code2020 阅读(201) 评论(0) 推荐(0) 编辑
JAVA序列化:implements Serializable
摘要:什么是序列化: 序列化的过程,就是一个“freeze”的过程,它将一个对象freeze住,然后进行存储,等到再次需要的时候,再将这个对象de-freeze就可以立即使用。 什么情况下需要序列化: 原文:https://blog.csdn.net/dinghqalex/article/details/ 阅读全文
posted @ 2020-06-26 16:23 Code2020 阅读(451) 评论(0) 推荐(0) 编辑
花了一个星期,我终于把RPC框架整明白了!(深度好文)
摘要:RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。 RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有: 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spr 阅读全文
posted @ 2020-06-26 16:21 Code2020 阅读(3787) 评论(0) 推荐(5) 编辑
<%@ include file=""%>与<jsp:include page=""/>区别
摘要:我们都知道在jsp中include有两种形式,分别是Include指令:<%@ include file=""%>和include动作:<jsp:include page="" flush="true"/> 前者是指令元素、后者是行为元素。具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看 阅读全文
posted @ 2020-06-24 18:53 Code2020 阅读(365) 评论(0) 推荐(0) 编辑
Java互联网架构-Mysql分库分表订单生成系统实战分析
摘要:概述 分库分表的必要性 首先我们来了解一下为什么要做分库分表。在我们的业务(web应用)中,关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。那么在我们的业务中,是否真的有必要进行分库分表,就可以 阅读全文
posted @ 2020-06-17 14:23 Code2020 阅读(398) 评论(0) 推荐(0) 编辑
Mybatis配置useGeneratedKeys="true" keyProperty="id"的作用
摘要:有时候在开发中需要向表中插入自增ID,这个时候领域模型如果想要获取该ID的值,就需要在相应的mapper文件中添加useGeneratedKeys="true" keyProperty="id"。 MyBatis如何获取插入记录的自增长字段值: 第一步: 在Mybatis Mapper文件中添加属性 阅读全文
posted @ 2020-06-16 17:02 Code2020 阅读(5495) 评论(0) 推荐(1) 编辑
iBatis SQL 各种标签用法
摘要:1、动态SQL片段 通过SQL片段达到代码复用 <!-- 动态条件分页查询 --> <sql id="sql_count"> select count(*) </sql> <sql id="sql_select"> select * </sql> <sql id="sql_where"> from 阅读全文
posted @ 2020-06-14 21:52 Code2020 阅读(1476) 评论(0) 推荐(0) 编辑
如此通俗的分布式锁讲解,如果还搞不定那就...
摘要:首先,分布式锁和我们平常讲到的锁原理基本一样,目的就是确保在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。 在一个进程中,也就是一个jvm或者说应用中,我们很容易去处理控制,在jdk java.util并发包中已经为我们提供了这些方法去加锁,比如synchronized关键字或者 阅读全文
posted @ 2020-06-14 19:27 Code2020 阅读(307) 评论(0) 推荐(0) 编辑
ibatis iterate VS mybatis foreach
摘要:Iterate作用:遍历入参属性: prepend > 拼接sql条件,一般放在sql执行之前 property > 接收传入参数(List时不填) open > 标识遍历开始的字符串,常用于定义括号 close > 标识遍历结束的字符串,常用于定义括号 conjunction > 标识每遍历完一次 阅读全文
posted @ 2020-06-14 17:47 Code2020 阅读(1108) 评论(0) 推荐(0) 编辑
MySQL中concat函数
摘要:一. concat()函数 1. 含义: 将多个字符串连接成一个字符串。 2. 语法: concat(str1, str2,...) 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。 3. 演示: select concat (id, name) as info f 阅读全文
posted @ 2020-06-14 17:42 Code2020 阅读(430) 评论(0) 推荐(0) 编辑
ibatIS中的isNotNull、isEqual、isEmpty
摘要:isNull判断property字段是否是null,用isEmpty更方便,包含了null和空字符串 例子一:isEqual相当于equals,数字用得多些,一般都是判断状态值<isEqual property="state" compareValue="0">< /isEqual>或<isEqua 阅读全文
posted @ 2020-06-14 17:40 Code2020 阅读(518) 评论(0) 推荐(0) 编辑
mybatis中<![CDATA[]]>的作用
摘要:在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]>来解决。 <![CDATA[ ]]> 是什么,这是XML语法。在CDATA内部的所有内容都会被解析器忽略。 阅读全文
posted @ 2020-06-14 17:20 Code2020 阅读(271) 评论(0) 推荐(0) 编辑
在Spring中用select last_insert_id()时遇到问题
摘要:今天在使用MySQL时却不知如何处理,插入记录后不知怎样获得刚刚插入的id,查过文档后发现了select last_insert_id(),在插入之后执行此查询,即可获得自增id,喜出望外。可用到自己的程序中之后却得不到想要的结果,于是就怀疑到了Spring头上,因为通过基本JDBC测试是没有任何问 阅读全文
posted @ 2020-06-14 17:17 Code2020 阅读(607) 评论(0) 推荐(0) 编辑
RabbitMQ实战教程
摘要:RabbitMQ实战教程 1.什么是MQ消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。其主要用途:不同进程Process/线程Thread之间通信。为什么会产生消息队列?有几个原因: 不同进程(proce 阅读全文
posted @ 2020-06-13 21:13 Code2020 阅读(1304) 评论(0) 推荐(2) 编辑
RabbitMQ的应用场景以及基本原理介绍
摘要:1.背景RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。 2.应用场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式(1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送 阅读全文
posted @ 2020-06-13 20:24 Code2020 阅读(105) 评论(0) 推荐(0) 编辑
四种常见的 POST 提交数据方式 专题
摘要:定义和用法 enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。 阅读全文
posted @ 2020-06-11 19:09 Code2020 阅读(664) 评论(0) 推荐(0) 编辑
谈谈我对服务熔断、服务降级的理解
摘要:伴随着微服务架构被宣传得如火如荼,一些概念也被推到了我们面前(管你接受不接受),其实大多数概念以前就有,但很少被提的这么频繁(现在好像不提及都不好意思交流了)。想起有人总结的一句话,微服务架构的特点就是:“一解释就懂,一问就不知,一讨论就吵架”。其实对老外的总结能力一直特别崇拜,Kevin Kell 阅读全文
posted @ 2020-06-11 19:06 Code2020 阅读(652) 评论(0) 推荐(0) 编辑
Dubbo学习
摘要:目录 前言为什么要学Dubbo什么是RPCDubbo的产生背景单一应用架构垂直应用架构分布式服务架构流动计算架构Dubbo面临的需求Dubbo的架构Demo time新建一个maven项目提供服务的API提供服务的provider消费服务的consumer参考 前言 互联网技术到今天已经非常成熟和稳 阅读全文
posted @ 2020-06-11 19:01 Code2020 阅读(204) 评论(0) 推荐(0) 编辑