mybatis防止SQL注入
摘要:1、首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterType="java.util.Map" resultMap="BaseResultMap"> select id, username, password, role
阅读全文
posted @
2020-05-28 16:33
Code2020
阅读(189)
推荐(0) 编辑
记一次CPU 100%
摘要:一般CPU100%疯狂GC,都是死循环的锅,那怎么排查呢? 先进服务器,用top -c 命令找出当前进程的运行列表 按一下 P 可以按照CPU使用率进行排序 显示Java进程 PID 为 2609 的java进程消耗最高 然后我们需要根据PID 查出CPU里面消耗最高的进程 使用命令 top -Hp
阅读全文
posted @
2020-05-24 16:18
Code2020
阅读(172)
推荐(0) 编辑
Volatile详解,太详细了
摘要:Volatile可能是面试里面必问的一个话题吧,对他的认知很多朋友也仅限于会用阶段,今天我们换个角度去看看。 先来跟着丙丙来看一段demo的代码: 你会发现,永远都不会输出有点东西这一段代码,按道理线程改了flag变量,主线程也能访问到的呀? 为会出现这个情况呢?那我们就需要聊一下另外一个东西了。
阅读全文
posted @
2020-05-24 16:15
Code2020
阅读(31215)
推荐(19) 编辑
记一次线上CPU100%排查过程
摘要:引言 不知道在大家面试中,有没有遇到这个问题: 生产服务器上部署了几个java程序,突然出现了CPU100%的异常告警,你如何定位出问题呢? 这个问题分为两版回答!高调版对不起,我是做研发的,这个问题在生产上是不可能遇见的!因为研发是不可能直接操作生产服务器,如果贵公司能出现这个问题,应该要反思一下
阅读全文
posted @
2020-05-24 16:03
Code2020
阅读(298)
推荐(0) 编辑
MySQL的MVCC机制,详细解答
摘要:目录 1.1 MVCC是什么? 1.2 MVCC是为了解决什么? 1.3 MVCC实现 2.1简单的小例子 1、MVCC简介 回到顶部 1.1 MVCC是什么? MVCC,Multi-Version Concurrency Control,多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库
阅读全文
posted @
2020-05-24 15:49
Code2020
阅读(457)
推荐(0) 编辑
Java分布式锁看这篇就够了,太详细了
摘要:原文出自:https://blog.csdn.net/seesun2012 什么是锁? 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。 而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一
阅读全文
posted @
2020-05-24 15:43
Code2020
阅读(929)
推荐(0) 编辑
常见的手机扫码登录是如何实现的?
摘要:作者 | 精品唯居 来源 | https://www.cnblogs.com/liyasong 需求介绍 首先,介绍下什么是扫码登录。现在,大部分同学手机上都装有qq和淘宝,天猫等这一类的软件。而开发这些app的企业,都有他们相对应的网站。为了让用户在使用他们的网站时,登录更加方便和安全。这些企业提
阅读全文
posted @
2020-05-22 15:19
Code2020
阅读(1156)
推荐(0) 编辑
分布式唯一ID的几种生成方案
摘要:在业务开发中,大量场景需要唯一ID来进行标识:用户需要唯一身份标识、商品需要唯一标识、消息需要唯一标识、事件需要唯一标识等,都需要全局唯一ID,尤其是复杂的分布式业务场景中全局唯一ID更为重要。 那么,分布式唯一ID有哪些特性或要求呢?① 唯一性:生成的ID全局唯一,在特定范围内冲突概率极小。② 有
阅读全文
posted @
2020-05-21 17:49
Code2020
阅读(974)
推荐(0) 编辑
redis主从复制和集群实现原理
摘要:redis主从复制redis主从配置比较简单,基本就是在从节点配置文件加上:slaveof 192.168.33.130 6379主要是通过master server持久化的rdb文件实现的。master server 先dump出内存快照文件,然后将rdb文件传给slave server,slav
阅读全文
posted @
2020-05-21 08:20
Code2020
阅读(267)
推荐(0) 编辑
分布式ID生成方式,9种一个一个谈
摘要:一、为什么要用分布式ID? 在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征? 1、什么是分布式ID? 拿MySQL数据库举个栗子: 在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。 但随着数
阅读全文
posted @
2020-05-20 23:12
Code2020
阅读(490)
推荐(0) 编辑
谈谈你了解的前后端分离
摘要:前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。 这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口
阅读全文
posted @
2020-05-20 18:23
Code2020
阅读(1151)
推荐(0) 编辑
谈谈你对Restful Api的知识
摘要:前言:restful出现的环境,什么是rest?以及出现的意义 1.REST的由来 全称:REST,全称是Resource Representational State Transfer,即:资源在网络中以某种形式进行状态转移。————所谓状态的转移,它首次出现在2000年Roy Fielding的
阅读全文
posted @
2020-05-20 18:20
Code2020
阅读(618)
推荐(1) 编辑
使用Redis——拳打南山敬老院,脚踩北斗幼儿园
摘要:拳打南山敬老院,脚踩北斗幼儿园 Redis 你说你用过对吧,你们怎么用的? 面试官您好,因为传统的关系型数据库如Mysql已经不能适用所有的场景了,比如秒杀的库存扣减,APP首页的访问流量高峰等等,都很容易把数据库打崩,所以引入了缓存中间件,目前市面上比较常用的缓存中间件有Redis和Memcach
阅读全文
posted @
2020-05-20 17:55
Code2020
阅读(264)
推荐(1) 编辑
微服务相关的问题
摘要:文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和SpringCloud的理解5、分布式系统面临的问题6、什么是服务熔断,什么是服务降级7、微服务的优缺点分别是什么?说下你在项目开发中碰到的坑?8、你所知道的
阅读全文
posted @
2020-05-19 09:46
Code2020
阅读(164)
推荐(0) 编辑
转:Jenkins自动化部署入门详细教程
摘要:大纲 【推荐】我凭这三招轻松拿到offer.pdf(吐血整理) >>> 1.背景 在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试; 或者前后端分离后,经常会修改接口,然后重新部署; 这些情况都会涉及到频繁的打包部
阅读全文
posted @
2020-05-19 09:18
Code2020
阅读(366)
推荐(0) 编辑
详解MySQL锁
摘要:一、概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,
阅读全文
posted @
2020-05-18 08:44
Code2020
阅读(176)
推荐(0) 编辑
常见的内存溢出与解决办法
摘要:引起内存溢出的原因有很多种,常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3.代码中存在死循环或循环产生过多重复的对象实体; 4.使用的第三方软件中的BUG; 5.启动参数内存值设定的过小; 1 2
阅读全文
posted @
2020-05-17 13:59
Code2020
阅读(794)
推荐(0) 编辑
关于docker容器和镜像的区别
摘要:docker的整个生命周期有三部分组成:镜像(image)+容器(container)+仓库(repository); 如下图所示,容器是由镜像实例化而来,这和我们学习的面向对象的概念十分相似,我们可以把镜像看作类,把容器看作类实例化后的对象。 也可以说镜像是文件, 容器是进程。 容器是基于镜像创建
阅读全文
posted @
2020-05-17 07:59
Code2020
阅读(313)
推荐(0) 编辑
MySQL explain详解
摘要:Explain简介 本文主要讲述如何通过 explain 命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。 下面是使用 explain 的例子:
阅读全文
posted @
2020-05-15 16:49
Code2020
阅读(189)
推荐(0) 编辑
BIO,NIO,AIO
摘要:目录: 1. BIO (Blocking I/O) 1.1 传统 BIO 1.2 伪异步 IO 1.3 代码示例 1.4 总结 2. NIO (New I/O) 2.1 NIO 简介 2.2 NIO的特性/NIO与IO区别 1)Non-blocking IO(非阻塞IO) 2)Buffer(缓冲区)
阅读全文
posted @
2020-05-12 18:35
Code2020
阅读(129)
推荐(0) 编辑
如何避免下重复订单
摘要:电子交易的一个很基本的问题,就是避免用户下重复订单。用户明明想买一次,结果一看下了两个单。如果没有及时发现,就会带来额外的物流成本和扯皮。对商家的信誉也不好看。 从技术上看,这是一个分布式一致性问题;但实际上,技术无法100%解决这类问题,得结合多种手段综合处理。这里就来说道说道。 为啥会下重了呢?
阅读全文
posted @
2020-05-12 14:13
Code2020
阅读(373)
推荐(1) 编辑
SpringBoot启动流程解析
摘要:写在前面: 由于该系统是底层系统,以微服务形式对外暴露dubbo服务,所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务,而是以执行程序方式启动来发布(参考下图keepRunning方法)。 本文以调试一个实际的SpringBoot启动程序为例,参考流程中主要类类
阅读全文
posted @
2020-05-12 11:01
Code2020
阅读(473)
推荐(0) 编辑
Spring中Bean的生命周期
摘要:前言 这其实是一道面试题,是我在面试百度的时候被问到的,当时没有答出来(因为自己真的很菜),后来在网上寻找答案,看到也是一头雾水,直到看到了《Spring in action》这本书,书上有对Bean声明周期的大致解释,但是没有代码分析,所以就自己上网寻找资料,一定要把这个Bean生命周期弄明白!
阅读全文
posted @
2020-05-12 09:40
Code2020
阅读(200)
推荐(0) 编辑
Spring常用的三种注入方式
摘要:Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:构造方法注入,setter注入,基于注解的注入。 构造方法注入 先简单了解一下测试项目的结构,用maven构建的,四个包: entity:存储实体,里面只有一个User类 dao:数据访问,一个接口,两个实现类 ser
阅读全文
posted @
2020-05-12 09:33
Code2020
阅读(576)
推荐(0) 编辑
数据库——MySQL分库分表
摘要:1、了解几个问题?1、分库分表相关术语 读写分离: 不同的数据库,同步相同的数据,分别只负责数据的读和写;分区: 指定分区列表达式,把记录拆分到不同的区域中(必须是同一服务器,可以是不同硬盘),应用看来还是同一张表,没有变化;分库:一个系统的多张数据表,存储到多个数据库实例中;分表: 对于一张多行(
阅读全文
posted @
2020-05-12 09:10
Code2020
阅读(574)
推荐(0) 编辑
mysql锁
摘要:【前言】数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场
阅读全文
posted @
2020-05-12 08:49
Code2020
阅读(154)
推荐(0) 编辑
Java面试题
摘要:1 Java基础知识面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/1043906122 Java集合容器面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/1
阅读全文
posted @
2020-05-12 07:55
Code2020
阅读(191)
推荐(0) 编辑
教你如何迅速秒杀掉:99%的海量数据处理面试题
摘要:前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名 :-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。 毕竟受文章和理论之限,本文将
阅读全文
posted @
2020-05-12 07:45
Code2020
阅读(160)
推荐(0) 编辑
Linux常用命令大全
摘要:最近都在和Linux打交道,这方面基础比较薄弱的我只好买了本鸟哥的书看看,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。为了方便大家查找linux的相关命令,我就将我了解到的命令列举一下,仅供大家参
阅读全文
posted @
2020-05-11 18:44
Code2020
阅读(220)
推荐(0) 编辑
Spring中的@Transactional(rollbackFor = Exception.class)属性详解
摘要:序言 今天我在写代码的时候,看到了。一个注解@Transactional(rollbackFor = Exception.class),今天就和大家分享一下,这个注解的用法; 异常 如下图所示,我们都知道Exception分为运行时异常RuntimeException和非运行时异常 error是一定
阅读全文
posted @
2020-05-11 11:08
Code2020
阅读(275)
推荐(0) 编辑
Mysql实现分页
摘要:1、Mysql的limit用法 limit分页公式 (1)limit分页公式:curPage是当前第几页;pageSize是一页多少条记录 limit (curPage-1)*pageSize,pageSize (2)用的地方:sql语句中 select * from student limit(c
阅读全文
posted @
2020-05-11 09:00
Code2020
阅读(1393)
推荐(0) 编辑
多线程问题团灭
摘要:目标 理解线程安全? synchronized用法 死锁 Java内存模型 Vlolatile ThreadLock 什么是线程安全? 为什么有线程安全问题? 当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。
阅读全文
posted @
2020-05-11 08:17
Code2020
阅读(116)
推荐(0) 编辑
位运算(&、|、^、~、>>、<<)
摘要:1.位运算概述 从现代计算机中所有的数据二进制的形式存储在设备中。即0、1两种状态,计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。 口说无凭,举一个简单的例子来看下CPU是如何进行计算的,比如这行代码: int a = 35; int b = 47; in
阅读全文
posted @
2020-05-11 08:15
Code2020
阅读(358)
推荐(0) 编辑
为什么要前后端分离?有什么优缺点?
摘要:一、前戏 前后端分离已经成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个node.js)有效的进行解耦,并且前后端分离会为以后的大型分布式架构,弹性计算架构,微服务架构,多端化服务(多种客户端:例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步
阅读全文
posted @
2020-05-11 08:14
Code2020
阅读(1017)
推荐(2) 编辑
事务的四种隔离级别
摘要:数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。 Read uncommitte
阅读全文
posted @
2020-05-11 08:13
Code2020
阅读(580)
推荐(0) 编辑
消息中间件的使用场景
摘要:一般认为,采用消息传送机制/消息队列 的中间件技术,进行数据交流,用在分布式系统的集成。 为什么使用消息中间件解决分布式系统之间消息的传递。 电商场景:用户下单减库存,调用物流系统,系统扩充后服务化和业务拆分。系统交互,y一般用RPC(远程过程调用)。如果系统扩充到有几十个接口,消息中间件来解决问题
阅读全文
posted @
2020-05-11 07:55
Code2020
阅读(405)
推荐(0) 编辑
一维数组的创建及使用
摘要:1. 创建一维数组 数组作为对象允许使用new关键字进行内存分配。在使用数组之前,必须首先定义数组变量所属的类型。一维数组的创建有两种形式。 a. 先声明,再用new运算符进行内存分配 声明一维数组有以下两种方式: 数组元素类型 数组名字[]; 数组元素类型[] 数组名字; 数组元素类型决定了数组的
阅读全文
posted @
2020-05-10 18:21
Code2020
阅读(2257)
推荐(0) 编辑
缓存雪崩
摘要:缓存雪崩,是指在某一个时间段,缓存集中过期失效。 产生雪崩的原因之一,比如在写本文的时候,马上就要到双十二零点,很快就会迎来一波抢购,这波商品时间比较集中的放入了缓存,假设缓存一个小时。那么到了凌晨一点钟的时候,这批商品的缓存就都过期了。而对这批商品的访问查询,都落到了数据库上,对于数据库而言,就会
阅读全文
posted @
2020-05-10 18:08
Code2020
阅读(165)
推荐(0) 编辑
归并排序
摘要:基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 分而治之 可以看到
阅读全文
posted @
2020-05-10 15:53
Code2020
阅读(91)
推荐(0) 编辑
快速排序
摘要:快速排序(QuickSort)划分的关键是要求出基准记录所在的位置pivotpos,编程时候的关键点 快速排序: 既然能把冒泡KO掉,马上就激起我们的兴趣,tnd快排咋这么快,一定要好好研究一下。 首先上图: 从图中我们可以看到: left指针,right指针,base参照数。 其实思想是蛮简单的,
阅读全文
posted @
2020-05-10 15:50
Code2020
阅读(183)
推荐(0) 编辑
Java Exception 和Error有什么区别?
摘要:① Exception 和Error 都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本类型。 ② Exception和Error体现了Java平台设计者对不同异常情况的分类。 ⑴Exception是程序正常运行中,可以预料的意外
阅读全文
posted @
2020-05-10 13:58
Code2020
阅读(273)
推荐(0) 编辑
关于redis,学会这8点就够了
摘要:1,redis是什么 redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。 2,支持的语言 3,redis的应用场景有哪些 1,会话
阅读全文
posted @
2020-05-08 22:49
Code2020
阅读(120)
推荐(0) 编辑
如何理解BIO NIO AIO?
摘要:先说结论 今天阅读了很多关于BIO NIO AIO的文章,举了各种奇怪的例子,都没把问题讲清楚,简单问题复杂化。我先下结论,最后再把那些博客的例子来品一品。 这里只考虑两个实体(客户端、服务端),一个事件(客户端向服务端请求数据) 同步、异步描述的是:客户端在请求数据的过程中,能否做其他事情。 阻塞
阅读全文
posted @
2020-05-08 22:41
Code2020
阅读(279)
推荐(0) 编辑
java BIO/NIO/AIO 学习
摘要:一、了解Unix网络编程5种I/O模型 1.1、阻塞式I/O模型 阻塞I/O(blocking I/O)模型,进程调用recvfrom,其系统调用直到数据报到达且被拷贝到应用进程的缓冲区中或者发生错误才返回。进程从调用recvfrom开始到它返回的整段时间内是被阻塞的。 1.2、非阻塞式I/O模型
阅读全文
posted @
2020-05-02 22:12
Code2020
阅读(154)
推荐(0) 编辑
缓存同步、如何保证缓存一致性、缓存误用!
摘要:缓存误用 缓存,是互联网分层架构中,非常重要的一个部分,通常用它来降低数据库压力,提升系统整体性能,缩短访问时间。 有架构师说“缓存是万金油,哪里有问题,加个缓存,就能优化”,缓存的滥用,可能会导致一些错误用法。 缓存,你真的用对了么? 误用一:把缓存作为服务与服务之间传递数据的媒介 如上图:服务1
阅读全文
posted @
2020-05-01 17:03
Code2020
阅读(1620)
推荐(1) 编辑
如何解决秒杀的性能问题和超卖的讨论?
摘要:最近业务试水电商,接了一个秒杀的活。之前经常看到淘宝的同行们讨论秒杀,讨论电商,这次终于轮到我们自己理论结合实际一次了。 ps:进入正文前先说一点个人感受,之前看淘宝的ppt感觉都懂了,等到自己出解决方案的时候发现还是有很多想不到的地方其实都没懂,再次验证了“细节是魔鬼”的理论。并且一个人的能力有限
阅读全文
posted @
2020-05-01 17:01
Code2020
阅读(305)
推荐(0) 编辑