- 博客(43)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 详解优化sql的过程(看完可以跟面试官正面对线)
详解优化sql的过程在我们平时的面试中,如果面试官问起数据库的问题时,一般都逃不开数据库引擎的区别和如何优化sql的问题,关于数据库引擎的区别,我上一篇文章就很详细的写了有兴趣的可以去学习学习(Mysql引擎之间的区别),下面我们就一起来学习学习如何在面试中关于Sql优化问题与面试官进行对线。1.很多人面试中,当面试官问起你在实际开发中,你是怎么处理一些sql执行很慢的,很多面试者可能想都不想就说直接加索引,这虽然很笼统的说出了如何优化sql 的一种方式,但是这样的答案,在面试官看来是不合格的,不出众的
2021-10-19 13:43:44
5732
16
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Netty的介绍与使用--第三天(Netty的介绍与简单的使用)
Netty的介绍与使用--第三天(Netty的介绍与简单的使用)1.Netty说明2.Netty的优点3.Netty版本说明4.Netty的工作原理5.代码实现1.Netty说明1.Netty是由JBOSS提供的一个java开源框架,Netty提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠的网络IO程序;2.Netty是目前最流行的NIO框架,Netty在互联网领域中,大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,Dubbo框架内部都采用了Netty;Nett
2020-10-28 19:05:13
1134
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Netty的介绍与使用--第一天(NIO中Channel的介绍与简单的使用)
Netty的介绍与使用--第一天Netty介绍通道(Channel)Netty介绍Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke’s Choice Award,见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户社区,像大型公司 Facebook 和 Instagram 以及流行 开源项
2020-10-26 17:12:03
676
4
原创 通过反射方式把ResultSet映射到实体Vo上
由于在老项目中没有使用一些持久层的框架,每次查询数据时都是要通过手动的方式取一行一行的赋值,研究了一些持久层框架的代码后,我用了自己的方式去把ResultSet的结果集映射到对应的实体上,这样可以减少写业务是对查询结果处理的繁杂工作在没写我自己的映射方式时每次查询都要一下的操作String sql = "select t.DIM_VALUE_CODE, t.DIM_VALUE_NAME from SP_DIM_VALUE_INFO t where t.dim_code = '0E0001' and t.
2021-12-16 17:16:38
808
1
原创 深入理解MySql中Innodb引擎和MyIsam引擎的区别
深入理解MySql中Innodb引擎和MyIsam引擎的区别Innodb引擎和MyIsam引擎主要有一下的区别1 最开始Mysql是没有Innodb引擎的,而MyIsam是Mysql数据的自带的引擎,但是由于MyIsam引擎没有事务的,而Innodb引擎是另一个公司以以插件的方式引入MySql的。下面我们通过案例来证明MyIsam引擎没有事务,Innodb引擎具有事务。我建了两个表,innodb_table的表是使用Innodb引擎的,myisam_table是使用MyIsam引擎的。我先关闭了
2021-10-11 13:30:39
2406
3
原创 redis分布式锁详解(优化redis分布式锁的过程及Redisson使用)
redis分布式锁详解(优化redis分布式锁的过程及Redisson使用)1. redis在实际的应用中,不仅可以用来缓存数据,在分布式应用开发中,经常被用来当作分布式锁的使用,为什么要用到分布式锁呢?在分布式的开发中,以电商库存的更新功能进行讲解,在实际的应用中相同功能的消费者是有多个的,假如多个消费者同一时刻要去消费一条数据,假如业务逻辑处理逻辑是查询出redis中的商品库存,而如果第一个进来的消费的消费者获取到库存了,还没进行减库存操作,相对晚来的消费者就获取了商品的库存,这样就导致数据会出错,
2021-09-02 15:00:32
2910
8
原创 Mysql索引失效的几种情况分析
Mysql索引失效的几种情况分析1. 首先我们使用Mysql中explain的功能对每条数据库引擎执行SQL时过程进行分析explain的用法就是在我们所需要执行的sql前面加上explain这个单词 ,既 explain +SQL;例如:explain select * from user where 1=1;本次我们对explain的分析结果只要分析的是 possible_keys和key,possible_key 是表示该sql语句执行时可能会使用到索引,而key是表示sql实际执行中所用
2021-08-15 23:28:46
745
原创 手写JDK1.7 HashMap(超详细,新手看完就懂)
手写JDK1.7 HashMap(超详细,新手看完就懂)创建Map接口,HashMap实现Map接口package HashMap;public interface Map<K, V> { public abstract int size(); public abstract boolean isEmpty(); public abstract Object get(K obj); public abstract Object put(K
2021-08-06 16:12:37
292
2
原创 最详细HashMap集合源码讲解(resize()方法)
最详细HashMap集合源码讲解(resize()方法)1 HashMap中resize()的作用resize()是HashMap中扩容的方法,当HashMap中存的数据量大于threshold时或进行初始化HashMap的时候会进行扩容的操作,即执行resize()方法进行扩容1.1 执行resize()方法两种情况分析1.1.1 在HashMap的putVal()方法中,会先判断table是否为空,如果为空的话,会执行resize(),然后就初始化table,代码如下 if ((tab =
2021-08-04 19:54:46
906
1
原创 最详细HashMap集合源码讲解(get() 方法)
最详细HashMap集合源码讲解(get(key) 方法)1.1 HashMap中的get()方法在HashMap中是通过get(key)方法去获取value的值,其代码如下 // 通过key去获取value public V get(Object key) { java.util.HashMap.Node<K,V> e; //通过getNode(int hash,Object key)的方法去得到该key对应的node节
2021-08-04 19:13:02
1168
1
原创 最详细HashMap集合源码讲解(putVal()方法)
最详细HashMap集合源码讲解(putVal()方法)1. HashMap的结构讲解代码前,先熟悉几个常量的意义DEFAULT_INITIAL_CAPACITY :默认HashMap初始化桶(数组)大小,一般为1>>4即16loadFactor:负载因子,一般初始化为0.75threshold :是指HashMap存储数据的数据个数大于thrashlod时要进行扩容,threshold=HashMap桶的大小*负载因子Node<K,V>[] table:table是
2021-08-03 19:16:07
712
5
原创 深究ReentrantLock源码及其使用方法(一)
深究ReentrantLock源码及其使用方法1.先附上ReentrantLock类的源码,然后再进行一行一行分析/*jadclipse*/// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.// Jad home page: http://www.kpdus.com/jad.html// Decompiler options: packimports(3) radix(10) lradix(10) package java
2021-07-27 11:28:27
143
原创 快速手写Spring框架的IOC笔记(1)
快速手写Spring框架的IOC笔记(1)快速手写Spring框架的IOC(1)1. 快速事项一个简单的bean容器快速手写Spring框架的IOC(1)1. 快速事项一个简单的bean容器(1)用来装配bean的容器public class BeanDefinition { private Object beanName; public BeanDefinition(Object beanName) { this.beanName= beanName;
2021-07-01 20:19:00
70
原创 org.springframework.beans.factory.NoUniqueBeanDefinitionException报错解决方法
org.springframework.beans.factory.NoUniqueBeanDefinitionException报错解决方法nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘org.springframework.transaction.PlatformTransactionManager’ available
2021-05-24 20:17:35
4173
原创 Cannot load JDBC driver class ‘com.mysql.cj.jdbc.Driver‘报错 的解决方法
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class ‘com.mysql.cj.jdbc.Driver’如果出现这种错误的话,需要把你的mysql-connector-java-xxx.jar 放在tomcat文件中的lib文件夹下,如下图所示:
2021-03-13 21:53:22
4783
原创 Spring Cloud整合阿里云OSS存储上传图片(详细过程)
Spring Cloud整合阿里云OSS存储上传图片(详细过程)1.申请阿里云OSS账号2.引入pom.xml依赖3.配置application.properties4.编写工具类和Service、Controller代码1.申请阿里云OSS账号2.引入pom.xml依赖 <!-- 阿里云oss依赖 --> <dependency> <groupId>com.aliyun.oss</groupId>
2021-01-13 23:24:09
1168
原创 nginx配置详解及设置代理服务器(1)
nginx配置详解及设置代理服务器1. nginx简单介绍2. nginx安装3. nginx 配置文件详解3.1 nginx.conf文件配置属性详解3.2 配置服务代理:4. 配置过程的注意事项:4.1 nginx启动等命令4.2 location 详解4.2.1 location介绍4.2.2 location匹配原则**特别强调一点1. nginx简单介绍Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作
2021-01-06 15:21:39
14244
原创 最详细的Spring Boot 使用redis缓存(二级外置缓存)
Spring Boot 使用redis缓存(二级外置缓存)1.配置redis的Maven依赖2. 启动类加入缓存注解3. 实体类实现系列化接口(Serializable)4. 使用注解对缓存进行配置1.配置redis的Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-s
2020-12-31 00:32:18
1787
1
原创 Spring Boot整合EasyExcel(完整版包含上传解析excel和下载模板)
Spring Boot整合EasyExcel(完整版包含上传解析excel和下载模板)1. 加入依赖2. 对读取excel内容(批量添加)3. 模板下载:1. 加入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2
2020-12-29 11:03:27
7656
15
原创 使用redis模拟手机验证码发送及验证(验证码过期)
使用redis模拟手机验证码发送及验证(验证码过期)1.关于redis的配置和一些简单APi使用的请看上方链接的内容上一期redis的配置简单使用代码案例:service层代码package liz.com.springtest.redis;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import liz.com.springtest.entity.User;import org.spri
2020-12-24 17:22:48
1072
1
原创 Spring Boot整合Redis
SpringBoot整合Redis1. redis介绍2. 安装Redis3. Spring Boot整合Redis3.1 依赖导入3.2 在Application.yml配置redis3.3 redis常用APi介绍1. redis介绍Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware
2020-12-23 16:12:04
7770
14
原创 Spring Boot中使用监听器(笔记)
Spring Boot中使用监听器(笔记)1.监听器介绍2. Spring Boot中监听器的使用web 监听器的使用场景很多,比如监听 servlet 上下文用来初始化一些数据、监听 http session 用来获2.1 监听Servlet上下文对象监听 servlet 上下文对象可以用来初始化数据,用于缓存。什么意思呢?我举一个很常见的场景,比如2.3 监听客户端请求Servlet Request对象1.监听器介绍什么是 web 监听器?web 监听器是一种 Servlet 中特殊的类,它们能帮助
2020-12-22 11:22:00
524
原创 Spring Boot中的切面AOP笔记
Spring Boot中的切面AOP1. 什么是AOP?2. 在Spring Boot中然后使用AOP2.1先导入依赖2.2 实现AOP切面1. 什么是AOP?AOP是OOP的延续,是Aspect Oriented Programming的缩bai写,意思du是面向切面编程。可以通过预zhi编译方式dao和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。2
2020-12-22 10:10:34
340
原创 Jackson中对NULL的处理
Jackson中对NULL的处理在实际开发,我们难免会遇到一些为null的值json,但是由于在转为json时,是不希望有些null值的出现,如下图出现的结果:我请求的代码如下:@RestController@RequestMapping("user")public class getUserController { @RequestMapping("getuser") public User getUser(){ User user = new User();
2020-12-21 23:37:33
1938
原创 java虚拟机中JVM的GC垃圾收集器
JDK中JVM的GC垃圾收集器1. 年轻代垃圾收集器1.1 Serial垃圾收集器(单线程、复制算法)1.2 ParNew垃圾收集器(Serial+多线程)1.3 Parallel Scavenger收集器(多线程赋值算法、高效)2. 年老代垃圾收集器2.1 Serial Old收集器(单线程标记整理算法)2.2 Parallel Old收集器(多线程标记整理算法)2.3 CMS收集器(多线程标记清楚算法)2.3.1 初始标记2.3.2 并发标记2.3.3 重新标记2.3.4 并发清除2.4 G1收集器J
2020-12-15 12:23:17
300
原创 SpringBoot整合Swagger,生成API接口文档
SpringCloud整合Swagger,生成API接口文档1.Swagger2介绍2.配置Swagger23.创建swagger的配置类然后创建一个java类,并且在这个类加入@Configuration和@EnableSwagger2注解4.使用Swagger2功能5.在需要Swagger2模块的启动类中加入包扫描的注解6.定义接口说明和参数说明1.Swagger2介绍前后端分离开发模式中,api文档是最好的沟通方式。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTf
2020-12-11 10:37:06
421
原创 Mybatis-Plus自动生成代码
Mybatis-Plus自动生成代码在pom.xml文件中加入依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.1</version></dependency>public class CodeGenerator {
2020-12-10 00:28:39
740
原创 快速入门Mybatis-Plus(2)
快速入门Mybatis-Plus(2)1.主键策略2.自动填充3.乐观锁4.分页5.逻辑删除1.主键策略(1)ID_WORKERMyBatis-Plus默认的主键策略是:ID_WORKER 全局唯一ID(2)自增策略要想主键自增需要配置如下主键策略需要在创建数据表的时候设置主键自增实体字段中配置 @TableId(type = IdType.AUTO)@TableId(type = IdType.AUTO) private Long id;其它主键策略:@Getterpu
2020-12-09 21:18:29
325
原创 Nacos的简单使用-第三天(Nacos服务发现快速入门)
Nacos服务发现快速入门1.1Spring Cloud服务协作流程1.2 搭建Nacos服务发现1.2.1创建父工程导入pom.xml1.2.2 创建服务提供者1.2.3 创建消费者我们将演示如何使用Spring Cloud Alibaba Nacos Discovery为Spring cloud 应用程序与 Nacos 的无 缝集成。 通过一些原生的spring cloud注解,我们可以快速来实现Spring cloud微服务的服务发现机制,并使用 Nacos Server作为服务发现中心,统一管理所
2020-12-02 22:29:06
388
原创 SpringCould 整合 Alibaba Nacos 出现报错com.netflix.client.config.IClientConfig‘ that could not be found问题
2020-12-02 21:03:22.953 INFO 28392 — [ main] com.NacosProviderApp : No active profile set, falling back to default profiles: default2020-12-02 21:03:25.473 INFO 28392 — [ main] o.s.cloud.context.scope.GenericScope
2020-12-02 21:19:41
2460
1
原创 解决Could not find artifact org.springframework.boot:spring-boot-maven-plugin的问题
Could not find artifact org.springframework.boot:spring-boot-maven-plugin:pom: in alimaven因为 我一开始时这些加入pom.xml的<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactI
2020-12-02 11:41:29
35738
5
原创 解决Cannot resolve org.springframework.boot中一些jar下载不成功的方法
解决Cannot resolve org.springframework.boot比如我遇到了Cannot resolve org.springframework.boot:spring-boot-starter-web:2.2.6.RELEAS一直下载不成功的,我一开始以为是网络太慢的原因,然后看了测试了网速没有问题,然后看一下Maven仓库E:\Maven\apache-maven-3.6.3\conf\settings.xml然后我打开setting.xml发现我之前一开始安装时,没有用到阿里
2020-12-02 11:30:07
14700
2
原创 解决The following has evaluated to null or missing的问题
解决The following has evaluated to null or missing的问题今天早上遇到了访问页面是,抛出的一个问题The following has evaluated to null or missing: ==> optionItem[’’+parameters.listValue] [in template “template/haiyisoft/drop/drop.ftl” at line 112, column 58] ---- Tip: It’s the f
2020-11-27 15:28:57
15318
原创 Nacos的简单使用-第二天
Nacos配置管理模型配置集(Data ID)命名空间实战配置中心配置集(Data ID)在系统中,一个配置文件通常就是一个配置集,一个配置集可以包含了系统的各种配置信息,例如:一个配置集可能包含了数据源、线程池、日志级别等配置项。每个配置集都可以包含一个有意义的名称,就是配置集的ID即Data ID配置集中包含的一个个配置内容就是配置项,他代表一个具体的可配置的参数于其值域,通常key=value的形式存在。例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR)就是一
2020-11-27 15:16:43
336
原创 Nacos的简单使用-第一天
Nacos的简单使用-第一天1.Nacso介绍2.Nacos的特性3.启动Nacos的方式4.通过java 的方式获取配置中心的数据1.Nacso介绍Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台
2020-11-27 11:11:41
367
原创 JDBC查询数据后对数据进行封装
JDBC查询数据后对数据进行封装1. 实体类代码2.数据库链接3.操作类4.运行结果1. 实体类代码package user;public class user { private int uid ; private int age; private String name; public user() { } public int getUid() { return uid; }
2020-11-10 17:33:43
562
原创 Netty的介绍与使用--第六天(Netty核心模块组件介绍)
Netty的介绍与使用--第六天(Netty核心模块组件介绍)1. Netty模型2. Bootstrap、ServerBootstrap3. Future、ChannelFuture4.Channel5.Selector6.ChannelHandler7.Pipeline 和 ChannelPipeline8.ChannelHandlerContext9.ChannelOption10.EventLoopGroup 和其实现类 NioEventLoopGroup1. Netty模型Netty 抽象出
2020-11-04 16:23:29
493
原创 Netty的介绍与使用--第五天(使用Netty创建网页版聊天群)
Netty的介绍与使用--第五天(使用Netty创建网页版聊天群)客户端代码自己定义的handler前端html页面客户端代码package Netty.WebSocketGroupChat;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.Channe
2020-11-02 11:55:11
663
1
原创 Netty的介绍与使用--第四天(使用Netty实现多人聊天室)
Netty的介绍与使用--第四天(使用Netty实现多人聊天室)1.准备工作2.实现功能的说明3.代码实现1.准备工作下载好Netty的jar包,下面介绍通过Maven的方式进行下载jar包(关于Maven没有安装的同学先安装,也可以通过其他方式下载jar包,然后再添加)输入:io.netty:netty-all,然后选择4.1.XX的版本,因为比较稳定这种是通过官网下载的方式进行添加的. 关于JDK的话最好使用1.8以上的,因为要使用到了Java Lambda 表达式,所以最好使用1.
2020-10-30 16:49:31
703
1
原创 Netty的介绍与使用--第二天(NIO中Selector的介绍与多人聊天室实现)
Netty的介绍与使用--第一天(NIO中Netty的介绍与多人聊天室实现)1.Selector(选择器)1.1 Selector基本介绍1.2 Selector类相关方法1.2.1 Selector类是一个抽象类,常用方法和说明如下:1.2.2 Selector相关方法说明1.2.3 SelectionKey说明SelectionKey相关的方法1.3 Selector的使用2.1 Selector代码示例2.1.1 实现服务器与客户端连接2.1.2 多人聊天室实现1.Selector(选择器)1.1
2020-10-27 14:53:24
481
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人