
Java
文章平均质量分 83
bgn190215
这个作者很懒,什么都没留下…
展开
-
spring注解
@Resource与@Autowired注解的区别踩坑者入一、写本博文的原因有些童鞋搞不为什么要用@Resource或者@Autowired,咱们一起研究下@Resource默认按照名称方式进行bean匹配,@Autowired默认按照类型方式进行bean匹配@Resource(import javax.annotation.Resource;)是J2EE的注解,@Autowired( import org.springframework.beans.factory.annotation.Autow原创 2021-01-03 22:10:43 · 198 阅读 · 3 评论 -
mysql查询是否存在优化写法
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count目前多数人的写法多次REVIEW代码时,发现如现现象:业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下SQL写法:SELECT count(*) FROM table WHERE a = 1 AND b = 2Java写法:int nu原创 2020-12-27 20:35:09 · 1054 阅读 · 1 评论 -
mysql注意事项
建表规约【强制】: ① 存储引擎必须使用 InnoDB解读: InnoDB 支持事物、行级锁、并发性能更好,CPU 及内存缓存页优化使得资源利用率更高。【强制】:②每张表必须设置一个主键 ID,且这个主键 ID 使用自增主键(在满足需要的情况下尽量短),除非在分库分表环境下解读: 由于 InnoDB 组织数据的方式决定了需要有一个主键,而且若是这个主键 ID 是单调递增的可以有效提高插入的性能,避免过多的页分裂、减少表碎片提高空间的使用率。而在分库分表环境下,则需要统一来分配各个表中的主键值,从而原创 2020-12-13 21:05:34 · 146 阅读 · 0 评论 -
线上常见问题排查汇总
**一 线上常见问题定位**常见问题 1:CPU 利用率高CPU 使用率是衡量系统繁忙程度的重要指标,一般情况下单纯的 CPU 高并没有问题,它代表系统正在不断的处理我们的任务,但是如果 CPU 过高,导致任务处理不过来,从而引起 load 高,这个是非常危险需要关注的。 CPU 使用率的安全值没有一个标准值,取决于你的系统是计算密集型还是 IO 密集型,一般计算密集型应用 CPU 使用率偏高 load 偏低,IO 密集型相反。问题原因及定位:1 频繁 FullGC/YongGC查看 gc原创 2020-12-06 20:12:08 · 828 阅读 · 0 评论 -
mysql随机取记录
1.SELECT * FROM table ORDER BY RAND() LIMIT n;(n为抽取的数量)缺点:数据量大时会比较的慢2.SELECT * FROM table WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM table ) ORDER BY id LIMIT 1;优点:比1快缺点:1.id必须要是唯一2.因为是按顺序排的,所以一次只能随机抽取1个3.id必须是连续的且从1开始,否则概率不相等3.SELECT *F原创 2020-11-25 17:33:35 · 207 阅读 · 0 评论 -
java.lang.NoSuchMethodError错误比较可能的原因
一、根本原因找不到该方法二、可能导致出现的原因1、有这个类,类里没有这个方法2、类冲突、Jar包冲突、Jar包版本冲突3、有这个类(A),类中也有方法,但在B类中引用了A类,并调用A类的方法,后面修改A类,把该A类的方法返回值类型改变(如将方法返回类型由void类型改成String类型),只部署A类,没有重新部署B类,将导致NoSuchMethodError错误。二、解决方案1.删掉这行使用方法的这行代码2.增加这个方法3.删除冲突类、Jar包,更换冲突的Jar包版本。4.把引用到A类的原创 2020-11-25 15:28:19 · 475 阅读 · 0 评论 -
防重复提交
1.什么是幂等2.产生原因3.解决方案 ①配置注解 ②实例化锁 ③AOP 切面 ④注解使用案例1.什么是幂等简单来说就是结果一致在我们编程中常见幂等select查询天然幂等delete删除也是幂等,删除同一个多次效果一样update直接更新某个值的,幂等update更新累加操作的,非幂等insert非幂等操作,每次新增一条2.产生原因由于重复点击或者网络重发 eg:点击提交按钮两次;点击刷新按钮;使用浏览器后退按钮重复之前的操作,导致重复提交表单;使用浏览器历史记录重复提交表原创 2020-11-22 20:46:32 · 489 阅读 · 0 评论 -
Redis的内存淘汰
Redis定义了几种策略用来处理这种情况:noeviction(默认策略):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)allkeys-lru:从所有key中使用LRU算法进行淘汰volatile-lru:从设置了过期时间的key中使用LRU算法进行淘汰allkeys-random:从所有key中随机淘汰数据volatile-random:从设置了过期时间的key中随机淘汰volatile-ttl:在设置了过期时间的key中,根据key的过期时间进行淘汰,越早过期的越优先原创 2020-11-16 09:01:17 · 118 阅读 · 0 评论 -
java redis 配置使用
1.RedisKitpackage com.seryo.util; import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Random;import java.util.Set;import java.util.SortedSet;import java.util.Timer;import java.util.TimerTask;import java.ut原创 2020-10-26 09:09:20 · 198 阅读 · 0 评论 -
SwaggerAPI注解详解
注解@Api:作用在类上,用来标注该类具体实现内容。表示标识这个类是swagger的资源 。参数:tags:可以使用tags()允许您为操作设置多个标签的属性,而不是使用该属性。description:可描述描述该类作用。@ApiImplicitParam:作用在方法上,表示单独的请求参数参数:name :参数名。value : 参数的具体意义,作用。required : 参数是否必填。dataType :参数的数据类型。paramType :查询参数类型,这里有几种形式:原创 2020-10-18 19:58:56 · 587 阅读 · 0 评论 -
Swagger使用
a) maven导入Swagger<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version></dep...原创 2019-12-22 15:21:20 · 229 阅读 · 0 评论 -
简单的JAVA加密方法
文章目录一、工具类md5加密工具类base64加密工具类Bcrypt工具类二、加密测试MD5加密测试base64加密测试SHA加密测试BCrypt加密测试一、工具类md5加密工具类base64加密工具类Bcrypt工具类二、加密测试MD5加密测试base64加密测试SHA加密测试BCrypt加密测试...原创 2019-12-08 20:50:31 · 292 阅读 · 0 评论 -
isBlack和isEmpty源码分析
org.apache.commons.lang.StringUtils 类提供了 String 的常用操作,最为常用的判空有如下两种 isEmpty(String str) 和 isBlank(String str)。分析我们通过源码来分析区别:public static boolean isEmpty(String str) { return str == null || str...原创 2019-11-24 19:37:44 · 545 阅读 · 0 评论 -
Lombok工具使用
1)引入相应的maven包:2)添加IDE工具对Lombok的支持:3)Lombok实现原理:4) Lombok注解的使用:还在编写无聊枯燥又难以维护的POJO吗?洁癖者的春天在哪里?请看Lombok!在过往的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok...原创 2019-11-08 14:48:11 · 240 阅读 · 0 评论 -
一些可能让mysql快一点的方法
多线程插入(单表)多线程插入(多表)预处理SQL多值插入SQL事务(N条提交一次)多线程插入(单表)数据里做插入操作的时候,整体时间的分配是这样的:链接耗时 (30%)发送query到服务器 (20%)解析query (20%)插入操作 (10% * 词条数目)插入index (10% * Index的数目)关闭链接 (10%)从这里可以看出来,真正耗时的不是操作,而是链...原创 2019-11-01 17:11:30 · 222 阅读 · 0 评论 -
分布式锁基于数据库
Java中的锁主要包括synchronized锁和JUC包中的锁,这些锁都是针对单个JVM实例上的锁,对于分布式环境如果我们需要加锁就显得无能为力。在单个JVM实例上,锁的竞争者通常是一些不同的线程,而在分布式环境中,锁的竞争者通常是一些不同的线程或者进程。如何实现在分布式环境中对一个对象进行加锁呢?答案就是分布式锁。分布式锁实现方案目前分布式锁的实现方案主要包括三种:基于数据库基于缓存(...原创 2019-10-20 20:48:01 · 288 阅读 · 0 评论 -
用Stream类操作数据库读取的结果
在实际使用,从数据库中读取的结果大多是以List集合的形式读取。而使用Stream类可以大大提升我们的开发速度。首先简单介绍一下Stream的原理将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得...原创 2019-10-12 16:29:49 · 1127 阅读 · 0 评论 -
用JDBC建立连接,管理事务
**使用JDBC建立连接**public static void main(String[] args) throws Exception{Class.forName("com.mysql.cj.jdbc.Driver");//加载MySQL驱动try ( Connection connection = DriverManager.getConnection( ...原创 2019-08-12 18:17:41 · 256 阅读 · 0 评论 -
设计模式之行为模式(其一)
设计模式之行为模式设计模式的目的设计模式分类行为模式分类模板模式、策略、命令、责任链设计模式设计模式的目的:设计模式在某些”场景”下,针对某类”问题”的某种通用的”解决方案”场景:项目所在的环境问题:约束条件,项目目标等解决方案:通用、可复用的设计,解决约束达到目标设计模式的分类:创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。结构型模式:把...原创 2019-08-25 20:41:52 · 241 阅读 · 0 评论 -
从零开始的Java学习日志06:
索引原创 2019-03-18 12:00:40 · 129 阅读 · 0 评论