自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 资源 (1)
  • 收藏
  • 关注

原创 Nginx简述及其使用

​ 一般小项目呢这种呢并发量小,适合项目初期这种项目到一定发展的阶段就无法支持接下来的使用了,因为用户量的增加导致并发增加,那么传统的单体服务器就无法支撑这个并发,那么此时我们就横向扩展,一个服务器不够那我们多增加几台,可是增加了之后用户在选择不同的服务器就要做选择,那么此时对用户来说体验也不好并且众所都知session是无法共享的!所以此时我们就需要在中间增加一个代理服务器。...

2022-08-19 09:44:40 950 2

原创 常用APi

获取路径:request.getRequestURL(): 获取完整路径 如:http://localhost:8080/bzbs/system/login.jsprequest.getServletPath():返回除去host和工程名部分的路径 如/system/login.jsprequest.getRequestURI():返回除去host(域名或者ip)部分的路径 如/bzbs/system/login.jsprequest.getContextPath():返回工程名部分,如果工程映射为

2021-05-16 19:55:30 713

转载 请求参数校验

我们在写http接口常常要对传递参数进行校验1.PathVariable校验@GetMapping("/path/{group:[a-zA-Z0-9_]+}/{userid}")@ResponseBodypublic String path(@PathVariable("group") String group, @PathVariable("userid") Integer userid) { return group + ":" + userid;}用法是:路径变量:正则表达式。当

2021-05-16 19:11:32 1435

原创 mybatis在xml中直接使用枚举

业务背景:在我们业务场景中有时就会出现在mybatis的xml文件中使用枚举值,是因为有些值不想写死想集中统一管理。枚举类:package com.test.constant; public enum AnimalEnum { DOG("dog"), CAT("cat"), private String type; AnimalEnum(String type) { this.type= type; } public

2021-05-16 16:09:33 7885

原创 对http重复发起请求

最近在做项目中遇到一个例子比较值得记录下来,业务场景:对请求AI接口请求过程中尝试请求三次以上。和如何对http服务发起请求目录1.发起Http请求1.1 发送Get请求:1.2 发起Post请求:2.重复发起请求2.1 利用for循环2.2 利用spring-retry方式1.发起Http请求 会用到hutool工具1.1 发送Get请求: aiEvents = HttpUtil.get("http://172.19.2.2:8002/ai/data_report/clue_report?o

2021-05-16 15:28:28 2269 2

原创 对Java中intern()方法的理解

先看源码API的解释:来看例子: String str1 = "todo"; String str2 = "todo"; String str3 = "to"; String str4 = "do"; String str5 = str3 + str4; String str6 = new String(str1); System.out.println("------普通String测试结果----

2021-05-03 10:36:51 470 1

原创 什么时候用!=null?

我们在程序中经常在代码中会使用!=null,为了避免程序返回空指针异常,但是这样的代码会显得丑陋繁冗!1.使用null的意义:往往我们判断某个返回是不是为空的时候,应该思考两种情况:(1):第一种null是一个有效有意义的返回值(2):第二种null是无效有误的,毫无意义的。2.第二种情况:null就是一个不合理的参数,就应该明确地中断程序,往外抛错误。这种情况常见于api方法。例如你开发了一个接口,id是一个必选的参数,如果调用方没传这个参数给你,当然不行。你要感知到这个情况,告诉调用.

2021-04-24 12:43:14 1169

原创

共享锁(S锁):又称为读锁,可以查看但无法修改和删除的一种数据锁。如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁。获准共享锁的事务只能读数据,不能修改数据。共享锁下其它用户可以并发读取,查询数据。但不能修改,增加,删除数据。资源共享.排它锁(X锁):又称为写锁、独占锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A互斥锁:在编程中,引入了对象互斥锁

2021-04-18 14:11:52 84

原创 mybatis分页造成total遇到过的问题

之前在做springBoot+mybatis的时候,遇到分页的问题一直困扰我最后还是别人解答出来告诉我的,先开始分页查询,然后查询出来之后我又循环组织数据添加到另一个List去然后开始返回。这里就破坏了原来分页查询出来的分页参数。我找到两种解决办法:1. 第一种解决办法public PageInfo<UserFromVO> listUser(User user, CommonQo commonQo) { //开始分页 PageHelper.startPage(comm

2021-04-18 10:41:09 1343

原创 mybatis传递参数的用法

本人也是工作之中总结的,写此博客总结。#{}跟${}区别首先#{}跟${}的区别我相信大家也心里知道什么意思网上一搜一大把的关于这方面知识。就我平时用到而言:#{}用的比较普遍(基本上用的都是这个),传入的参数会默认带有“”,而${}也能传入参数只不过说的是会造成SQL注入,什么是SQL注入: 就这样跟你讲吧就是#{}是针对具体的某个参数,而后者是原样输出。当然我有点总结不对反正就是个别场景用不同的,普通带参数查找就是#{}。而有的时候SQL需要比如in(),这个时候就需要后者了。如果用前者那么就是

2021-04-18 10:21:37 320 1

原创 java比较时间大小

我们做一些业务开发的时候,经常会遇到关于日期的条件的判断,我举个例子:在一次列表中会有一次对日期的筛选,这时如果用户选择时间2021-4-5~2021-4-4 这种格式的。这时我们就应该给他提示开始时间不能大于结束时间,这种就是逻辑错误!我在网上找了一些资料:1.before英文翻译就是 在xxx之前 意思就是前面的参数小后面参数大 那就是true格式: xx.before(xx)可以理解为以括号里的日期为准,表示以它之前的日期来比较2.after表示在xxx之后,前面大后面小 那就是tr

2021-04-05 15:07:36 10321

原创 SQL日期时间整理

因为经常在MySQL中遇到关于日期时间的问题经常不知道如何选择,今天就整理一下关于SQL日期的一些函数使用,遇到我没记录的我会更新的,所以请关注我吧!目录1.返回当前日期和时间1.1curdate()函数1.2 curtime()函数1.3 Now()函数1.4sysdate()函数 返回系统时间2.计算两个日期之间的相差天数3.获取日期其中部分3.1 day() 函数3.2 last_day()函数3.3 year()函数3.4 extract函数3.5 month()函数4.日期相加相减4.1 dat

2021-03-26 14:21:05 292 1

原创 MYSQL中where条件后写上1=1 是什么意思?

我们在实际的开发项目中经常会出现条件语句,但有些条件不是必须要传的而是可选的。就比如项目中出现模糊搜索,那么此时在mysql就会出现判断是否传值。来。直接看代码:例如String sql="select * from table_name where 1=1";if( conditon 1) { sql=sql+" and var2=value2";}if(conditon 2) { sql=sql+" and var3=value3";}这里的if是Java提供演示w

2021-03-25 22:17:02 6770 2

转载 23 种设计模式的通俗解释,虽然有点污,但是秒懂

工厂方法追 MM 少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是 MM 爱吃的东西,虽然口味有所不同,但不管你带 MM 去麦当劳或肯德基,只管向服务员说「来四个鸡翅」就行了。麦当劳和肯德基就是生产鸡翅的 Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。建造者模式MM 最爱听的就是「我爱你」这句话了,见到不同地方的 MM,要能够用她们的方言跟她说这句

2021-03-21 14:09:55 154

原创 斗鱼面试官:Thread.sleep(0) 到底有什么用?

我们可能经常会用到 Thread.Sleep 函数来吧使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候,这个线程会不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?我们先回顾一下操作系统原理。操作系统中

2021-03-13 19:01:10 108

原创 请谨慎使用Arrays.asList、ArrayList的subList

1. 使用Arrays.asList的注意事项1.1 可能会踩的坑先来看下Arrays.asList的使用:List<Integer> statusList = Arrays.asList(1, 2);System.out.println(statusList);System.out.println(statusList.contains(1));System.out.println(statusList.contains(3));输出结果如下图所示:然后,往statusLi

2021-03-13 18:20:57 81

原创 计算机基础进制转换(二进制、八进制、十进制、十六进制)

1.十进制转N进制1.1 十进制转二进制1.1.2 十进制整数转二进制十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。例题: 135D = ______ B**解析:**如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 0111B.1.1.3 十进制小数转二进制十进制小数转换成二进制小数采用 “乘2取整,顺序排列” 法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分

2021-03-07 16:43:42 3573

原创 String、StringBuffer、StringBuilder, StringJoiner 的区别

一、Java String 类——String字符串常量字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。我们来看一下这张对String操作时内存变化的图:我们可以看到,初始String值为“hello”,然后在这个字符串后面加上新的字符串“world”,这个过程是需要重新在栈堆内

2021-03-07 15:45:48 696 1

原创 卧槽!时间插入 MySQL 数据库,结果竟然少了 8 小时~

最近在用mybatis时发现,将LocalDateTime插入到数据库时时间少了8小时。用网上其他方法试了不少,比如修改mysql时区,都不能解决。最后发现是JDBC连接的参数写错了。经常在网上看到jdbc连接里边有这样一个参数&serverTimezone=UTC。这个UTC是协调世界时,我们中国在东八区,也就是UTC+8,和UTC差了8个小时。这就是为什么时间插入数据库后少了8小时的原因。那么中国的时区是多少呢?在java.time.ZoneId这个类的帮助文档和源码里写有:EST -

2021-03-07 15:34:21 663

原创 delete后加 limit是个好习惯么

在业务场景要求高的数据库中,对于单条删除和更新操作,在delete和update后面加limit 1绝对是个好习惯。比如,在删除执行中,第一条就命中了删除行,如果SQL中有limit 1;这时就return了,否则还会执行完全表扫描才return。效率不言而喻。那么,在日常执行delete时,我们是否需要养成加 limit 的习惯呢?是不是一个好习惯呢?在日常的SQL编写中,你写delete语句时是否用到过以下SQL?delete from t where sex = 1 limit 100;

2021-03-07 15:32:30 133

原创 @Autowire和@Resource注解使用的正确姿势,别再用错的了!!

介绍今天使用Idea写代码的时候,看到之前的项目中显示有warning的提示,去看了下,是如下代码?@Autowireprivate JdbcTemplate jdbcTemplate;提示的警告信息Field injection is not recommended Inspection info: Spring Teamrecommends: “Always use constructor based dependency injection in yourbeans. Always

2021-02-24 21:57:03 154

原创 MyBatis 的执行流程,写得太好了叭!

概要在MyBatis中,利用编程式进行数据查询,主要就是下面几行代码:SqlSession session = sqlSessionFactory.openSession();UserMapper userMapper = session.getMapper(UserMapper.class);List<LwUser> userList = userMapper.listUserByUserName("孤狼1号");第一行是获取一个SqlSession对象在上一篇文章分析过了,想要详

2021-02-24 21:26:49 121

原创 36 张图梳理 Intellij IDEA 常用设置

目录1. 显示工具条2.设置鼠标悬浮提示3.显示方法分隔符4.忽略大小写提示5.主题设置6.护眼主题设置7. 自动导入包8.单行显示多个Tabs9.设置字体10.配置类文档注释信息和方法注释模版11.水平或者垂直显示代码12. 更换快捷键13.注释去掉斜体14.代码检测警告提示等级设置15.项目目录相关–折叠空包16. 窗口复位17. 查看本地代码历史18. 快速补全分号19. 快速找到Controller方法20.大括号匹配1. 显示工具条(1)效果图(2)设置方法标注1:View–>T

2021-02-24 20:58:20 102

原创 事务的本质和死锁的原理

仅以MySQL和Spring为例,本文不介绍事务和锁的概念。本文使用伪代码表示方法代码,仅仅表达方法的意义及事务注解。事务的形状在我心中,事务一直是这个样子的x轴是上锁的资源,y轴是消耗的时间,事务方块随着时间的流逝向下移动,当碰触x轴时资源加锁,越过x轴时资源解锁上图是对于方法a的事务形状,我起名【 事务方块】。@Transactionalfunction a(){ 对A表修改,耗时五秒}一、多事务当一个方法调用多个被事务注解的子方法时情况是上图是对于方法abc调用

2021-02-24 20:33:47 328

原创 Tomcat 的连接数射多少?

前言在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件server.xml 中写到过:Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine(也就是Servlet容器)来处理这个请求,并把产生的Request和Response对象传给Engine。当Engine处理完请求后,也会通过Connector将

2021-02-24 20:28:00 684

原创 面试被问:Redis 内存满了怎么办?

目录Redis占用内存大小Redis的内存淘汰LRU算法LRU在Redis中的实现LFU算法问题Redis占用内存大小我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。1、通过配置文件配置通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小//设置Redis最大占用内存大小为100Mmaxmemory 100mbredis的配置文件不一定使用的是安装目录下面

2021-02-24 20:20:08 113

原创 线程和进程的区别是什么?看完秒懂!

线程和进程的区别是什么???类似”进程是资源分配的最小单位,线程是CPU调度的最小单位“这样的回答感觉太抽象,都不太容易让人理解。做个简单的比喻:进程=火车,线程=车厢线程在进程下行进(单纯的车厢无法运行)一个进程可以包含多个线程(一辆火车可以有多个车厢)不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)进程间不会相互影响,一个线程挂掉将导

2021-02-24 20:09:07 185

原创 坑,MySQL中 order by 与 limit 混用,分页有BUG!

在MySQL中我们常常用order by来进行排序,使用limit来进行分页,当需要先排序后分页时我们往往使用类似的写法select * from 表名 order by 排序字段 limt M,N。但是这种写法却隐藏着较深的使用陷阱。在排序字段有数据重复的情况下,会很容易出现排序结果与预期不一致的问题。比如现在有一张user表,表结构及数据如下:现在想根据创建时间升序查询user表,并且分页查询,每页2条,那很容易写出sql为:select * from user order by create

2021-02-24 20:04:29 195

原创 Navicat卡死动不了怎么办?show processlist 神器来救场!

今天在同步测试数据时,网突然断了,等到重连之后,发现表打不开了。可以看到表的数据长度已有112192kb,可惜打不开了。打不开,就准备删掉重来。事情往往没这么简单,果然删不掉,truncate也不行,然后navicat卡死,遂登上数据库,执行dorp操作,还是不行。估计是网络错误,导致了一些奇怪的事情发生。那么就一起看看,到底发生了什么吧。神器登场。show full processlist;show full processlist 返回的结果是实时变化的,是对mysql链接执行的现场

2021-02-24 19:57:52 6646

原创 总结一波 Redis 面试题,收藏起来

本文的面试题如下:Redis 持久化机制缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题热点数据和冷数据是什么Memcache与Redis的区别都有哪些?单线程的redis为什么这么快redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构redis的过期策略以及内存淘汰机制Redis 为什么是单线程的,优点如何解决redis的并发竞争key问题Redis 集群方案应该怎么做?都有哪些方案?有没有尝试进行多机redis 的部署?如何保证数据一致的?对于大量的请求

2021-02-20 17:11:49 173

原创 新来的妹纸问我 AJAX 请求为什么不安全?没有回答出来。。。

本文包含的内容较多,包括AJAX,CORS,XSS,CSRF等内容,要完整的看完并理解需要付出一定的时间。另外,见解有限,如有描述不当之处,请帮忙及时指出。正文开始…从入坑前端开始,一直到现在,AJAX请求都是以极高的频率重复出现,也解决过不少AJAX中遇到的问题,如跨域调试,错误调试等等。从这种,发现了一个共通现象:那就是每次和后台人员对接时,他们都会提到AJAX请求不安全,请用普通http请求!虽然很多时候,都是经过多翻口舌之争后,最终后台那边妥协,允许部分符合条件的AJAX请求。但是,我却很

2021-02-20 16:56:53 179

原创 快速提升性能的SQL语句,建议收藏

本文会提到 52 条 SQL 语句性能优化策略。1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引。2、应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,创建表时 NULL 是默认值,但大多数时候应该使用 NOT NULL,或者使用一个特殊的值,如 0,-1 作为默认值。3、应尽量避免在 WHERE 子句中使用 != 或 <> 操作符。MySQL 只有对以下操作符才使用索引:<,<=,=,>,>=,

2021-02-20 16:34:11 184

原创 JAVA中常见的经典报错类型

1.死循环2.数组下标越界异常3.算术运算异常4.类型不匹配5.空指针异常java.lang.NullPointerException存在原因:调用了未经初始化的对象或者是不存在的对象,6. 类找不到异常java.lang.ClassNotFoundException解决原因:类的路径和名称是否正确7.违法的访问异常java.lang.IllegalAccessException8. 类型强制转换异常ClassCastException9.堆栈溢出异常java.lang

2021-02-02 14:22:00 1476 3

原创 排名前 16 的 Java 工具类,你都用过哪些?

在Java中,实用程序类是定义一组执行通用功能的方法的类。这篇文章展示了最常用的Java实用工具类及其最常用的方法。类列表及其方法列表均按受欢迎程度排序。数据基于从GitHub随机选择的50,000个开源Java项目。希望您可以通过浏览列表来了解已经提供和流行的功能的一些想法,以使您知道不需要自己实现。这些方法的名称通常指示它们的作用。如果方法名称不够直观,您还可以查看其他开发人员如何在其开源项目中使用它们。1 org.apache.commons.io.IOUtilscloseQuietly()

2021-01-16 19:21:47 130

原创 为什么不建议把数据库部署在Docker容器内?

近2年Docker非常的火热,各位开发者恨不得把所有的应用、软件都部署在Docker容器中,但是您确定也要把数据库也部署的容器中吗?这个问题不是子虚乌有,因为在网上能够找到很多各种操作手册和视频教程,这里整理了一些数据库不适合容器化的原因供大家参考,同时也希望大家在使用时能够谨慎一点。目前为止将数据库容器化是非常不合理的,但是容器化的优点相信各位开发者都尝到了甜头,希望随着技术的发展能够更加完美的解决方案出现。Docker不适合部署数据库的7大原因1、数据安全问题不要将数据储存在容器中,这也是 Dock

2021-01-10 20:28:04 135

原创 IntelliJ IDEA 2020的15款 神级超级牛逼插件推荐

满满的都是干货 所有插件都是在 ctrl+alt+s 里的plugins 里进行搜索安装1、CodeGlance 代码迷你缩放图插件2、 Codota代码提示工具,扫描你的代码后,根据你的敲击完美提示Codota基于数百万个开源Java程序和您的上下文来完成代码行,从而帮助您以更少的错误更快地进行编码。安装:3、Material Theme UI那就顺便推荐一下这个吧,超多的主题插件,各种颜色,各种模式,感兴趣的可以试一下,图我就不截了4、Alibaba Java Coding Gu

2021-01-10 20:24:40 431

原创 Java 日志体系

1.概要本文的目的是搞清楚Java中各种日志Log之间是怎么的关系,如何作用、依赖,好让我们平时在工作中如果遇到“日志打不出”或者“日志jar包冲突”等之类的问题知道该如何入手解决,以及在各种场景下如何调整项目中的各个框架的日志输出,使得输出统一。2.Log日志体系在日常工作中我们可能看到项目中依赖的跟日志相关的jar包有很多,commons-logging.jar、log4j.jar、sl4j-api.jar、logback.jar等等,眼花缭乱。我们要正确的配置,使得jar包相互作用生效之前,就先

2021-01-10 20:04:19 121

原创 工作方法的使用

测试:1.xxx.findFirstByColumnsslOrderService.findFirstByColumns(Columns.create(SlOrder.C_ID, 1))结果:SELECT * FROM `my_recharge_log` WHERE `user_id` = 222.eqslOrderService.findFirstByColumns(Columns.create(SlOrder.C_ID, 1).eq(SlOrder.C_CATE,1))结果: SELE

2021-01-05 22:28:00 247 1

原创 SpringBoot,来实现MySQL读写分离技术

目录一. 前言二: 主从数据源的配置三:数据源上下文环境五:用法以及测试六:总结一. 前言首先思考一个问题:在高并发的场景中,关于数据库都有哪些优化的手段?常用的有以下的实现方法:读写分离、加缓存、主从架构集群、分库分表等,在互联网应用中,大部分都是读多写少的场景,设置两个库,主库和读库。主库的职能是负责写,从库主要是负责读,可以建立读库集群,通过读写职能在数据源上的隔离达到减少读写冲突、 释压数据库负载、保护数据库的目的。在实际的使用中,凡是涉及到写的部分直接切换到主库,读的部分直接切换到读库,这就

2021-01-03 20:38:41 116

原创 感受Lambda之美,推荐收藏,需要时查阅

一、引言java8最大的特性就是引入Lambda表达式,即函数式编程,可以将行为进行传递。总结就是:使用不可变值与函数,函数对不可变值进行处理,映射成另一个值。二、java重要的函数式接口1、什么是函数式接口函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型。使用@FunctionalInterface注解修饰的类,编译器会检测该类是否只有一个抽象方法或接口,否则,会报错。可以有多个默认方法,静态方法。1.1 java8自带的常用函数式接口。public class Test

2021-01-03 20:27:22 157

JFinal笔记.zip

这是最新的JFinal框架的笔记 个人认为还是蛮好的 内容除了是文档部份也加入了个人的一些理解 相配套的视频https://ke.qq.com/course/2839073#term_id=102949849腾讯课堂这

2020-10-31

空空如也

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

TA关注的人

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