自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(152)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

转载 数据库SQL优化总结 - 百万级数据库优化方案

本文参考:https://www.cnblogs.com/yunfeifei/p/3850440.htmlhttps://www.cnblogs.com/szw906689771/p/14719186.html首先,对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。索引失效的几种情况:①避免在 where 子句中对字段进行 null 值判断,否则将引擎放弃使用索引而进行全表扫描。比如:select id from t wh.

2021-07-15 17:26:22 135

原创 springboot自定义starter

springboot中starter是一种非常重要的机制,原理是基于SpringBoot自动装配原理。

2021-05-28 17:32:38 216

原创 tomcat部署的三种方式及优缺点对比

Tomcat的三种部署方式:war包方式,sever.xml方式,项目名.xml方式为了演示需要,简单创建了一个web项目tomcat_deploy,编写了 index.jsp 作为欢迎页部署方法一:将编译成功的web项目直接放到webapps目录中(注意是编译成功的web项目,也可以是war包);部署方式二:修改tomcat安装目录下的conf/server.xml文件,修改方式如下:为了不引起歧义,首先删除部署在webapps下面的 tomcat_d...

2021-05-26 17:30:38 885 1

原创 银行业务相关常识

什么是银行的内部账和外部账?外部账,就是跟客户或其他同业的账户,如存款、贷款、同业存放、同业拆借等;内部账,就是银行内部核算所需要的账户,如现金、固定资产、损益类、其他应收应付等。内账是老板看的,外账是税务看的。既然有内账和外账,且有区别,所以就要做两本账。...

2021-05-24 15:29:45 374

原创 一致性哈希算法原理

首先给个总结:一致性哈希算法是通过将哈希空间分为1-2^32-1的圆环,我们把cache节点和我们的object对象数据hash运算以后分别映射到圆环上,然后会把对象的数据按照顺时针绑定到最近的一个cache节点,实现数据与节点的绑定,这样做的好处就是如果节点发生增删,都只影响临近的那个数据变更,可以最大程度上抑制了键的重新分布(生产中也就是指服务器缓存的重新分布)。 当然一致性哈希会存在哈希倾斜性的问题,可能会导致数据倾斜和缓存雪崩,我们可以引入虚拟节点,让虚拟节点哈希后得到真实节点,来解决这个问题

2021-05-19 17:25:30 1875

原创 队列实现栈 java

栈的特性是后进先出。栈的主要操作是出栈入栈。队列的特性是先进先出。队列的主要操作是队尾追加元素,是队首取出元素。要用队列实现栈,那么需要两个队列,一个正式队列,一个预备队列。正式队列相当于栈,用来存储入栈的元素;预备队列用来在出栈的时候,将队首到队尾前一个元素进行临时存储,待出栈操作完成后,再将预备队列中的元素取出放到正式队列中。public class StackByQueue { public static void main(String[] args) {..

2021-05-19 17:24:21 114

转载 JDK1.8_HashMap为什么是不安全的

1.HashMap不安全造成的影响在JDK1.8中,在多线程环境下,会发生数据覆盖的情况。JDK1.8在进行元素插入时使用的是尾插法。2. HashMap的putVal()方法源码分析在JDK1.8中对HashMap进行了优化,在发生hash碰撞,不再采用头插法方式,而是直接插入链表尾部,因此不会出现环形链表的情况,但是在多线程的情况下仍然不安全,这里我们看JDK1.8中HashMap的put操作源码:** final V putVal(int hash, K key, V value,

2021-05-17 15:45:31 1360

原创 项目中遇到的一些问题

1、There is no getter for property named '*' in 'class*’意思是mapper的参数没有getter方法能接收,歧视问题主要是sql里写了动态if,参与动态sql时,mybatis会以OGNL对象树的形式即String.personName取值,导致异常抛出。我给入参xxxVo添加了@Param("p")注解后,在sql里的属性都取为q.xxx就可以了。具体参考:https://blog.csdn.net/qq_40925189/arti...

2021-04-23 09:34:46 491

转载 MySQL优化从执行计划开始(explain超详细)

前言小伙伴一定遇到过这样反馈:这页面加载数据太慢啦,甚至有的超时了,用户体验极差,需要赶紧优化;反馈等同于投诉啊,多有几次,估计领导要找你谈话啦。于是不得不停下手里头的活,赶紧进行排查,最终可能是程序处理的问题、也可能是并发量大导致排队问题、也可能是SQL查询性能导致等;而在很多时候,SQL查询缓慢是最直接拖慢系统的罪魁祸首,同样是实现一个功能,有的小伙伴毫秒级呈现效果,有的却要好几秒,而调优需要的花费时间不容小觑,最终可能就体现到个人业务能力上和形象上:哇,真牛逼,分分钟搞定; 菜鸟,居然写出

2021-04-12 10:44:40 562

原创 数据库中为什么使用md5对密码进行编码

首先要知道,MD5全称Message-Digest Algorithm 5,MD5的实际应用是对一段Message(字节串)产生fingerprint(指纹),可以防止被“篡改”。md5是一个hash函数,并不是一个加密函数,得到的字符串,反向还原密码的可能性低。即使2个人的密码一致,若是将手机号和密码参与计算,最后得到的字符串也会完全不一样。进一步可以加入其他的信息提升安全性,md5可以保证相同的字符串计算的结果一致。MD5加密为了是MD5密码被别人看到了也不知道用户的实际密码是什么,起到安全

2021-04-06 09:04:32 701

原创 初识API网关 / API Gateway

API网关是什么?在日常工作中,不同的场合下,我们可能听说过很多次网关这个名称,这里说的网关特指API网关(API Gataway)。字面意思是指将所有API的调用统一接入API网关层,由网关层负责接入和输出。那么在什么情况下需要一个API网关呢?下面从单体应用到微服务演变的过程去阐述,回顾单体应用时代,在业务简单、团队组织规模很小的时候,我们常常把功能都几种与一个应用中,统一部署,统一测试,如下图:随着业务的迅速发展,组织成员日益增多。将所有的功能几种在一个Tomcat中的时候..

2021-04-02 08:34:59 454 1

原创 实现mysql主从复制、读写分离

目录1.1 为什么要做主从复制?1.2 主从复制的原理是什么?1.3 复制的基本原则1.4 复制的最大问题2. 实战MySQL主从复制2.1 环境说明2.2 MySQL主从复制的复制方式2.2.1 SBR方式的优缺点2.2.2 RBR方式的优缺点2.2.3 混合方式2.2.4 全局事务标识符 GTID2.3 实现MySQL主从复制需要进行的配置2.4 修改master配置2.5 在主机上建立账户并授权slave2.6 告知从服务器二进制文件名.

2021-03-30 11:00:40 464 1

原创 【正确解决办法】grep `temporary password` /var/log/mysqld.log 中找不到临时密码

按照网上的步骤在centos装mysql启动服务后发现找不到临时密码,百度了很久都说什么清除以前的文件。。。其实如果你找不到,根本原因是mysql没有设置临时密码。。。如图直接进去,输入密码的时候回车即可...

2021-03-30 09:22:59 6722 9

原创 关于vm安装的centos之间可以ping通,但ping不通主机和外网的问题

环境:vm14、centsos7、NAT模式原因:因为VM默认将NAT的网关设置为x.x.x.2的,而我刚开始设置的是x.x.x.1。所以把网关和DNS设置为xxx.xxx.xxx.2即可。这里的地址可以看一下主机的ip。//修改网络配置,ens33是我这个系统名称vi /etc/sysconfig/network-scripts/ifcfg-ens33 //修改网关和DNS为为xxx.xxx.xxx.2后,重启网络服务systemctl restart network.servi.

2021-03-29 17:04:25 327

转载 阻塞、非阻塞、同步、异步

“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者*主动等待这个*调用*的结果。而异步则是相反,*调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说

2021-03-29 15:21:03 128

原创 hashmap.put()解析(jdk1.7)

先上源码 public V put(K key, V value) { if (table == EMPTY_TABLE) { inflateTable(threshold); //threshold--阈值,也就是容量*加载因子0.75,比如 16*0.75=12 } if (key == null) return putForNullKey(value); /

2021-03-26 16:40:30 221

原创 SpringBoot自动装配原理

面试官:谈谈你对Springboot自动装配的了解叭回答:在编写SpringBoot项目时,@SpringBootApplication是最常见的注解了,我们可以看一下里面的源代码:这里面包含了:@SpringBootConfiguration 我们点进去通过源码得知他是一个@Configuration,所以也就是对spring原生注解的封装 @EnableAutoConfiguration @ComponentScan 默认扫描的是与该类同级的类或者同级包下的所有类,.

2021-03-26 13:59:45 172

转载 MySQL锁总结

目录锁机制MyISAM 表锁InnoDB行级锁和表级锁死锁(Deadlock Free)MyISAM避免死锁:InnoDB避免死锁:一些优化锁性能的建议乐观锁、悲观锁锁是计算机协调多个进程或线程并发访问某一资源的机制。锁保证数据并发访问的一致性、有效性;锁冲突也是影响数据库并发访问性能的一个重要因素。锁是Mysql在服务器层和存储引擎层的的并发控制。加锁是消耗资源的,锁的各种操作,包括获得锁、检测锁是否是否已解除、释放锁等。锁机制共享锁与排他锁共享锁.

2021-03-25 14:45:58 122

原创 Mysql默认隔离级别为什么是可重复读?

知识点总结1、数据库默认隔离级别:mysql — 可重复读; oracle — 已提交读2、mysql binlog的格式三种:statement,row,mixed3、为什么mysql用的是可重复读而不是read committed:在 5.0之前只有statement一种格式,而主从复制存在了大量的不一致,故选用repeatable4、为什么默认的隔离级别都会选用read commited原因有三:repeatable存在间隙锁会使死锁的概率增大;在可重复读隔离级别下,条

2021-03-25 10:31:10 1672 2

转载 springboot项目简单介绍、启动、部署、@Configuration和@Bean注解

目录1、springboot介绍2、springboot启动3、springboot项目部署4、@Configuration和@Bean的用法和理解@Configuation加载Spring方法 1.1、@Configuration配置spring并启动spring容器 1.2、@Configuration启动容器+@Bean注册Bean,@Bean下管理bean的生命周期 1.3、@Configuration启动容器+@Component注册Bean...

2021-03-24 10:27:22 1289

原创 事务的特性、隔离级别、并发问题级别、@transaction注解

事务的特性、隔离级别、并发问题级别、@transaction注解

2021-03-24 09:22:52 461 1

原创 第三方支付接口响应超时处理方法

问题:调用第三方支付接口超时怎么办?解决方法:调用接口时设置超时时间,当接口超过60秒未返回结果,自动将改订单设置为处理中,然后后由定时任务调用查询接口,同时如果用户下拉刷新页面也会发起单笔交易查询。这样就把,一个实时返回结果的接口,当成一个异步的接口来用了,总比一大堆失败订单等着财务来找好。这类问题应该很多,在分布式中接口响应超时的问题,尤其重要。很多时候,一个请求,会调用很多service服务,如果service之间是串行的话,那么一个service超时,很可能会引起连锁反应,所以在调用别.

2021-03-23 09:25:44 4555

原创 Spring AOP四种实现方式Demo详解与相关知识探究

一、前言二、AOP相关概念三、使用AOP的几种方式四、Demo详解五、AOP实现原理一、前言在网络上看到一篇博客Spring实现AOP的4种方式,博主写的很通俗易懂,但排版实在抓狂,对于我这么一个对排版、代码格式有强迫症的人来说,实在是不能忍受~~~~(>_<)~~~~。我亲手实现了一遍,重新整理,加上了一些不易关注到的细节、漏掉的知识,以及自己对AOP的一些理解,写成这篇博客。二、AOP相关概念(1)AOP是什么?AOP与拦截...

2021-03-22 17:06:21 671

原创 dubbo入门 - idea搭建一个简单Demo

个人理解,即通过xml配置文件把provider的服务暴露给dubbo,同时在zookeeper注册登记。在consumer订阅 provider 的地址,调用定义好的 demoService 接口。一、创建Maven多模块项目1. 创建root项目Dubbo_demos,把一些通用的依赖全部放置到这里,子模块通过new module创建:root项目创建三个子模块2. 把root项目的src目录删除掉,只留下pom.xml模块介绍:dubbo-api ...

2021-03-17 16:47:53 540

原创 Java注解二:实现自定义注解

前言 上一篇文章介绍了注解的一些基本知识,这次来介绍下如何实现自定义注解及注解如何使用。正文注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。注解的基本元素声明一个注解要用到的东西修饰符访问修饰符必须为public,不写默认为pubic;关键字关键字为@interface;注......

2021-03-11 15:36:07 636 3

原创 Java 注解一:注解浅析

前言前段时间一直想了解下java的自定义注解,包括面试的时候也遇到过类似问题,今天总算有时间来学习下。正文注解(Annotation)概念注解是Java SE 5.0版本开始引入的概念,它是对java源代码的说明,是一种元数据(描述数据的数据)。注解和注释的不同注释注释是对代码的说明,给代码的读者看,便于帮读者梳理业务逻辑;注解注解也是对代码的说明,需要配合工具(解析它的代码)使用,参与代码的编译,给应用程序看的;为什么出现注解?在频繁...

2021-03-11 15:25:57 142

原创 java中的Class.forName()、newInstance()、new对比小结

(一)首先要明白在java中任何class都要装载在虚拟机上才能运行1、Class.forName()就是装载类用的(new是根据加载到内存中的类创建一个实例),如果给你一个包名和类名,可以通过Class.forName("package.A").newInstance()来实例化它,其效果和new A()是一样的。2、JVM在装载类的时候会执行类的静态代码段,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码,而以后就不会再执行这段静态代码了。Class.forName()的

2021-03-11 14:45:07 546

原创 springboot入门--第一个springboot程序

环境配置  环境约束:  -jdk1.8:Spring Boot 建议jdk1.7以上;java -versionjava version "1.8.0_131"  -maven3.x:maven3.3以上版本;Apache Maven 3.6.1SpringBoot HelloWorld  一个功能:浏览器发送hello请求,服务器接收请求并相应,响应Hello World 字符串;1、创建一个maven工程;(jar)...

2021-03-11 09:56:21 678 3

原创 一篇搞定Java过滤器:Filter

目录引言(一) 过滤器概述(二) 第一个过滤器程序(三) filter配置第一种:web.xml配置第二种:使用注解配置(四) 过滤器的生命周期(五) Filter的应用(1) 登录权限验证(2) 敏感词过滤引言我们可以通过使用前面的技术,做出一些简单的登陆注册以及配合数据库实现对数据增删改查的Demo,程序是基本运行起来了,但是却存在着一个重大的安全问题,那就登陆权限验证,一般来说登陆的正确流程是这样的:用户在客户端发出请求 -> 后台判..

2021-03-10 15:05:12 415

原创 【经典数据结构】B树与B+树的对比区别

维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。与自平衡二叉查找树不同,B-树为系统最优化大块数据的读和写操作。B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度。普遍运用在数据库和文件系统。”定义B 树可以看作是对2-3查找树的一种扩展,即他允许每个节点有M-1个子节点。根节点至少

2021-03-09 16:41:45 22776 1

原创 前后端分离项目中前端如何调用后端接口?

前端主页:http://localhost:8088/dist/view/index.html后端地址:http://localhost:8089/mall_war/*.do前后端启动项目,无法访问接口。这个问题是跨域引起的这里我只推荐这两种方式跨域,其它的跨域方式都还有很多但都不推荐,真心主流的也就这两种方式。 开发环境 生产环境 方案一 cors cors 方案二 proxy nginx 方案一:cors全称为 Cross ...

2021-03-09 16:10:16 14953

原创 电商开发,SKU与SPU是什么?

SPU 属性(不会影响到库存和价格的属性, 又叫关键属性)Oppo R17这是商品的SPU,但Oppo R17只是一个名词,单纯的理解这个名词是没有意义的。这里的SPU是一组商品的属性组合。如下所示【硬件参数】:CPU 型号:高通骁龙™ 670CPU 频率:2.0GHz核心数:八核处理器位数:64 位GPU 型号:Adreno™ 615电池容量:3500mAh(典型值)*【尺寸】:长:约 157.5mm宽:约 74.9mm厚:约 7.5mm重:约 1

2021-03-08 13:54:34 382

原创 Java实现分页功能常见的几种方法

目录一、limit关键字二、hibernate分页三、截取List查询结果分页(简单粗暴)四、mybatis框架pageHelper插件分页五、springData分页一、limit关键字service层@Service@Transactionalpublic class ImplStudentService implements StudentService { @Resourceprivate StudentDao studentDao...

2021-03-04 15:47:54 12154 2

原创 pagehelper分页原理

public ServerResponse<PageInfo> getProductList(int pageNum,int pageSize){ //startPage--start //填充自己的sql查询逻辑 PageHelper.startPage(pageNum,pageSize); List<Product> productList = productMapper.selectList();...

2021-03-04 14:24:45 2159 1

原创 优酷kux怎么转码mp4

2021年3月3日实测可行。可以借助优酷自带的解码器进行kux转码成mp4,以下方法能转1080P及4K非独播的剧,大家可以新建一个文本文档然后把以下文字复制进去然后另存为bat,这个bat只要在kux所在目录运行就可以将所有kux自动转换成mp4,1G视频基本上几秒转好,完全无损。@echo offsetlocal enabledelayedexpansionset ffmpeg="C:\Program Files (x86)\YouKu\YoukuClient\nplayer\ffm.

2021-03-03 22:12:05 6135 8

原创 IDEA里面的Artifact是什么?

我表示,我在刚刚整这个web开发的时候,在配置tomcat的时候,我也是很好奇,这个东西是什么?一般会见到如下的图。Artifact 是maven中的一个概念,表示某个module要如何打包。这又多个模块的概念,不懂的就先当他是个web项目吧,例如war exploded、war、jar、ear等等这种打包形式;一个module有了 Artifacts 就可以部署到应用服务器中了!那么带不带exploded的区别是什么?这个是不带exploded的。和下图的框框对..

2021-02-24 15:47:11 1516

原创 JZ33 丑数

题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。示例1输入7返回值8丑数能够分解成2^x3^y5^z,所以只需要把得到的丑数不断地乘以2、3、5之后并放入他们应该放置的位置即可,而此题的难点就在于如何有序的放在合适的位置。1乘以 (2、3、5)=2、3、5;2乘以(2、3、5)=4、6、10;3乘以(2、3、5)=6,9,

2021-02-22 10:01:20 193

原创 JZ37 数字在升序数组中出现的次数 Java

题目描述统计一个数字在升序数组中出现的次数。示例1输入[1,2,3,3,3,3,4,5],3返回值4先二叉搜索找一下这个元素的位置,然后再前后遍历计数一下import java.util.*;public class Solution { public int GetNumberOfK(int [] array , int k) { int index = Arrays.binarySearch(array, k); ..

2021-02-22 09:26:13 179

原创 JZ36 两个链表的第一个公共结点

题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)说明:本题目包含复杂数据结构ListNode题解题目抽象:给定两个单链表A,B,假设一定含有公共结点,返回第一个公共结点的指针。方法:双指针法假如例子如下:显然第一个公共结点为8,但是链表A头结点到8的长度为2,链表B头结点到8的长度为3,显然不好办?如果我们能够制造一种理想情况,如下:这里先假设链表A头结点与结点8的长.

2021-02-18 11:12:48 97

原创 JZ34 第一个只出现一次的字符

题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)示例1输入"google"返回值4public class Solution { public int FirstNotRepeatingChar(String str) { if(str == null || str.length() == 0)ret.

2021-02-18 09:48:36 108

中华石杉的架构笔记,Java工程师面试突击 - 已解锁可做笔记.pdf

中华石杉的架构笔记,Java工程师面试突击

2021-04-14

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除