自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 sql查询优化实际案例

创建索引首当注意的是要匹配最佳左前缀法则,避免创建的索引失效,其实使用EXPLAIN关键字最索引进行分析,查看命中情况,然后适当调整索引的命中策略。正对于海量数据的查询优化,且外键关联比较多的情况,通常情况是下sql层面的优化,有些时候是由于sql不合理的编写导致,如尽量少使用sql内查询等。如:第一次通过复杂的操作只差数据的主键ID,第二次直接通过主键ID的集合去查找完整的数据记录,即可获得不错的效果提升。3、第三步:通过前面两种还是未能显著提高效率,可分两次查询,减少索引的回表次数。

2023-11-25 14:09:58 456

原创 git新建仓库上传项目步骤

为方式踩坑,浪费不必要的时间,以上步骤必须依次执行。

2023-09-22 18:50:44 416

原创 百万秒级Id随机生成器不重复

【代码】百万秒级Id随机生成器不重复。

2023-09-18 08:56:00 176

原创 懒汉式之并发安全问题

在高并发场景下的懒汉式创建对象,造成ID重复创建,代码见下图:

2023-09-13 15:27:38 117

原创 切面+注解方式实现sql注入,实现数据权限控制

懂的越多,懂的就越不多

2023-07-19 13:59:59 439

原创 续接前文CountDownLatch之CyclicBarrier

日常使用当中我们一般用CountDownLatch做减法操作,用CyclicBarrier做加法操作,殊不知其实这两个具有异曲同工之妙,CountDownLatch通过它的countDown()使得任务减一,通过await()来判断其是否任务结束,如果没有结束则阻塞,结束则执行下一步操作。简单来说如果没有顺序要求,那就正如1到7和7到1一样,使用没有什么明显区别,最终的执行结果都是一样的,如下所示CyclicBarrier的简单使用。

2023-07-18 19:44:37 89

原创 Redis底层封装细节

日常我们程序员在使用redis做缓存的时候,很少会直接使用到RedisTemplate直接操作k-v键值对,而是通过对RedisTemplate原生代码的封装,来构建我们日常便于使用习惯的代码来操作数据,这里我分享一下日常基本的对RedisTemplate底层的封装原理和使用方法。以上是我日常使用过程中对redis封装的代码,屏蔽了底层的细节操作,可以让程序员可以非常便捷的使用到redis服务。

2023-07-18 19:26:45 1304 1

原创 做了两年程序员,才用到了JUC

现在需要统计不同维度的数据,且数据之间没有耦合关系,如果用传统的思路一条一条执行sql语句,执行效率比较忙,这里的思路是多开几条异步线程去处理,查询数据,最后将数据进行封装返回给前端,使用到的有自定义。)、线程执行完成标志做减法(

2023-07-06 19:08:07 60

原创 AOP切面实现日志管理和记录

2、编写通知,有前置通知、后置通知、环绕通知和异常通知,下面以异常通知为例实现效果。1、自定义注解,通过注解的方式去获取方法请求参数和返回结果,最终记录方法执行结果。3、最后在对应需要应用的方法中使用该注解,达到自己想要最终实现的效果。

2023-07-01 13:29:04 188

原创 MybatisPlus灵魂应用

灵活使用mybatisPlus可以事半功倍开发,提高开发效率和代码简洁

2022-12-03 16:59:21 1690 1

原创 Lambda将搬砖变成艺术

java8将开发分成了两个不同的时代,跨时代的更新将编程逐渐变为艺术,使得枯燥的编码变成一种艺术

2022-12-03 16:46:14 88

原创 数据过滤切面使用

第一次阅读切面的写法和实际使用,着实被惊艳到了,领航应用hashmap做参数缓存,思路清晰好有

2022-11-14 15:53:50 271

原创 进程和线程的区别

进程和线程的区别

2022-11-05 10:55:07 85

原创 springboot项目启动成功,tomcat无法启动

tomcat启动项目

2022-06-13 15:01:06 1355

原创 进程和端口的关系

我们知道,在单个计算机中的进程是用进程标识符(一个不大的整数)来标志的。但是互联网环境下,用计算机操作系统所指派的这种进程标识符来标志运行在应用层的各种应用程则是不行的。这是因为在互联网上使用的计算机的操作系统种类很多,而不同的操作系丝使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法(而这种方法必须与特定操作系统无关)对TCP/IP 体系的应用选程进行标志. 但是,把一个特定机器上运行的特定进程,指明为互联网上通信的最后终点还是不可的。这是...

2022-06-05 22:57:30 368

原创 &&和||执行规则

&&与||执行规则

2022-06-02 16:15:54 411

原创 java8新特性stream过滤list集合

java8新特性

2022-06-02 13:44:54 652

原创 反射为pojo对象null值赋默认值

package com.cn.hzx.dataupload.core.utils;import com.cn.hzx.dataupload.module.rsm.pojo.JTLLPojo;import com.google.common.collect.Lists;import com.google.common.collect.Sets;import java.lang.reflect.Field;import java.lang.reflect.Method;import java..

2022-05-27 16:37:21 369

原创 使用maven打jar包

1、打开右侧maven;2、选择需要打包的的项目进行clean;3、选择需要发布的项目,进行clean,package;4、在需要发布的项目中的target文件夹中就打好了需要的jar包;

2022-05-26 08:46:14 9820

原创 日期和年月日的转换

/** * 字符串转换成时间类型 * @param str * @return */public Date getDate(String str) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日"); Date date = null; try { date = dateFormat.parse(str); } catch (ParseException e) {.

2022-05-25 16:30:19 267

原创 手动添加jar包到maven命令

注意:“Program Files”中间有空格,所以要加双引号,另外三个参数,从上面复制过来即可,下面是我安装ojdbc-10.2.0.4.0.jar包使用的命令:mvn install:install-file -Dfile="D:\Program Files\mvn\ojdbc-10.2.0.4.0.jar"-DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar...

2022-05-05 16:06:25 608

原创 idea 代码提示 习惯

提示标签: tryCtry{}catch(Exception e){ e.printStackTrace();}提示标签:threadTnew Thread(()->{ },"").start();提示标签:tryCFtry{}catch(Exception e){ e.printStackTrace();}finally{}提示标签:forifor (int i = 0; i < ; i++) {...

2022-03-26 09:58:50 439

原创 针对复选框的全选和全不选

function selectAll(){ if($('#selectAll').prop('checked')) { $("[name = select]:checkbox").prop("checked",true); }else{ $("[name = select]:checkbox").prop("checked",false); } }

2022-03-24 09:36:20 70

原创 SVN冲突

以commit后自动生成R.java.mine,R.java.r3368,R.java.r3439为例因为发生冲突了,别人和你都从3368这个版本对r.java这个文件进行了修改,别人修改后先提交了形成3439版本,然后你做了提交操作,这时为了避免你覆盖别人的修改工作,SVN提示你发生了冲突,并自动形成R.java.mine、R.java.r3368、R.java.r3439这三个文件。其中:R.java.mine是你自己修改后准备提交的那个版本;R.java.r3368是你们的初..

2022-03-04 18:06:23 63

原创 File.separator

其实 File.separator 的作用相当于 ' \ '在 windows 中 文件文件分隔符 用 ' \ ' 或者 ' / ' 都可以但是在 Linux 中,是不识别 ' \ ' 的,而 File.separator 是系统默认的文件分隔符号,在 UNIX 系统上,此字段的值为 ' / '在 Microsoft Windows 系统上,它为 ' \ ' 屏蔽了这些系统的区别。所以用 File.separator 保证了在任何系统下不会出错...

2022-03-02 08:38:07 190

原创 window下启动 Redis命令

1 启动要先开启一个控制台作为服务端,启动服务,然后在重新打开一个控制台,连接服务进行操作。  redis-server.exe redis.conf //redis.conf配置文件在测试和开发时可以省略,windows下载的解压包不包含此文件,需自己2 重新打开一个控制台,刚开始连接服务,因为初始没有密码,所以无需输入,即可连接服务。    登录命令:    redis-cli.exe -h 127.0.0.1 -p 6379 //无需添加密码参数3 密码操作

2022-02-25 09:08:15 1756

原创 页面加载完成执行事件

//原生js写法,即页面加载完成后立马执行 $(document).ready(function() { });//JQuery写法,即页面加载完成后立马执行 $(function () { });

2022-02-24 09:23:22 697

原创 针对选择checkbox类型的input元素的解决方案

$("input[name='checkAllT']:checked").each(function(){ $.ajax({ type:"get", url:"${ctx}/testorder/testOrder/batchDelete", async:false, data:{id:this.value}, success: function(data){ console.l...

2022-02-23 15:21:18 360

原创 针对confirm使用的总结

window.top.layer.confirm('确认要删除该订单吗?',{icon: 3, title:'温馨提示'}, function(index){ $("input[name='checkAllT']:checked").each(function(){ $.ajax({ type:"get", url:"${ctx}/testorder/testOrder/batchDelete", async:false, .

2022-02-23 15:18:05 563

原创 $.ajax async:true 或者 false的作用

“在写ajax请求的时候默认不写async这个属性,async默认为true,即异步方式。ajax执行后,会继续执行后面的的脚本,直到服务端返回数据后,触发ajax里的成功回调函数success,这时候执行的是两个线程。 若将async设为false,则请求为同步请求,在服务端没有返回数据之前,不会执行ajax后面的脚本,只有当ajax请求完成,才会继续执行ajax后面的脚本。”function getIntegralRules(signinId) { var integralRules;

2022-01-07 11:13:35 836

原创 Vs Code的background插件编辑

{"background.enabled": true,"background.useDefault": false,"background.customImages": ["file:///C:/Users/刘杰杰Java实习/Pictures/Saved Pictures/1 (2).jpg"],"background.style": {"content": "''","pointer-events": "none","position": "absolute","z-index".

2021-12-31 09:44:31 151

原创 针对同步请求出错后的提示代码

//针对同步请求的返回提示 public static class AlertShowMessage{ public static void alertShowMessage(HttpServletResponse response, String message){ response.setContentType("text/html; charset=UTF-8"); PrintWriter pw = null; try { pw = response.getW..

2021-12-23 11:03:39 32

原创 手写线程池及其参数意义

ThreadPoolExecutor类的七大核心参数的意义: 1、int corePoolSize:核心线程数 2、int maximumPoolSize:最大线程数,最小大于1(当核心线程数和任务队列都满的时候,这个时候开始扩容线程) 3、long keepAliveTime:当线程池中的线程数大于核心线程数的时候,当空闲的时间大于unit时,则多余的线程将会被销毁只剩下核心线程数的数量,从maximumPoolsSize缩短到corePoolSize数目 4、TimeUnit unit.

2021-12-07 20:27:22 87

原创 Semaphore

正常的锁(concurrency.locks或synchronized锁)在任何时刻都只允许一个任务访问一项资源,而 Semaphore允许n个任务同时访问这个资源。package com.atnuocai.model;import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;/** * Created by on 27/11/2021 *正常的锁(concurrency.locks或synch.

2021-12-06 21:17:50 354

原创 CyclicBarrier(集成7颗龙珠召唤神龙)

CyclicBarrier的字面意思就是可循环(Cyclic)使用的屏障(Barrier)。它要求做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活,线程进入屏障通过CyclicBarrier的await方法。package com.atnuocai.model;import java.util.concurrent.BrokenBarrierException;import java.util.concur.

2021-12-06 21:15:47 440

原创 CountDownLatch(火箭发射倒计时)

CountDownLatch类是JUC包里面的一个倒计时控制类,类似是火箭发射倒计时,具体实现如下:package com.atnuocai.model;import java.util.concurrent.CountDownLatch;/** * Created by on 27/11/2021 *java.util.CountDownLatch(火箭发射倒计时) * 让一线程阻塞直到另一些线程完成一系列操作才被唤醒。 * * CountDownLatch主要有两个方法(awai

2021-12-06 21:07:42 535

原创 List集合去重

方法一:利用Set集合去重(首推) /** * 使用Set集合去重 * @param numList */ private static void useSet(List<Integer> numList) { Set<Integer> numSet = new HashSet<>(); for (int i = 0; i < numList.size(); i++) {

2021-12-06 21:00:59 333

原创 生成字母加数字的随机数

/** * 随机生成字母加数组的组合 * @return */ public static String getRandomCharacterAndNumber() { String val = ""; Random random = new Random(); for (int i = 0; i < 8; i++) { String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num"; // 输出字母还是..

2021-12-06 14:56:06 781

原创 springMVC前后端全套的视频上传源码(入门就能看懂)

前端上传样式:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head> <#-- <meta http-equiv="Content-Type" content="t

2021-12-06 11:26:02 2018

原创 springMVC视频的批量上传和下载

当我们要上传视频时,首先在前端写好上传样式,然后异步请求过来,代码如下:@ResponseBody@RequestMapping("upload")public Map upload(HttpServletRequest request, @RequestParam(value = "myFile", required = false) MultipartFile[] files) { Map map =new HashMap(); try { for(int i=

2021-12-05 20:57:26 354

空空如也

空空如也

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

TA关注的人

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