- 博客(44)
- 收藏
- 关注
原创 sql查询优化实际案例
创建索引首当注意的是要匹配最佳左前缀法则,避免创建的索引失效,其实使用EXPLAIN关键字最索引进行分析,查看命中情况,然后适当调整索引的命中策略。正对于海量数据的查询优化,且外键关联比较多的情况,通常情况是下sql层面的优化,有些时候是由于sql不合理的编写导致,如尽量少使用sql内查询等。如:第一次通过复杂的操作只差数据的主键ID,第二次直接通过主键ID的集合去查找完整的数据记录,即可获得不错的效果提升。3、第三步:通过前面两种还是未能显著提高效率,可分两次查询,减少索引的回表次数。
2023-11-25 14:09:58
472
原创 续接前文CountDownLatch之CyclicBarrier
日常使用当中我们一般用CountDownLatch做减法操作,用CyclicBarrier做加法操作,殊不知其实这两个具有异曲同工之妙,CountDownLatch通过它的countDown()使得任务减一,通过await()来判断其是否任务结束,如果没有结束则阻塞,结束则执行下一步操作。简单来说如果没有顺序要求,那就正如1到7和7到1一样,使用没有什么明显区别,最终的执行结果都是一样的,如下所示CyclicBarrier的简单使用。
2023-07-18 19:44:37
102
原创 Redis底层封装细节
日常我们程序员在使用redis做缓存的时候,很少会直接使用到RedisTemplate直接操作k-v键值对,而是通过对RedisTemplate原生代码的封装,来构建我们日常便于使用习惯的代码来操作数据,这里我分享一下日常基本的对RedisTemplate底层的封装原理和使用方法。以上是我日常使用过程中对redis封装的代码,屏蔽了底层的细节操作,可以让程序员可以非常便捷的使用到redis服务。
2023-07-18 19:26:45
1328
1
原创 做了两年程序员,才用到了JUC
现在需要统计不同维度的数据,且数据之间没有耦合关系,如果用传统的思路一条一条执行sql语句,执行效率比较忙,这里的思路是多开几条异步线程去处理,查询数据,最后将数据进行封装返回给前端,使用到的有自定义。)、线程执行完成标志做减法(
2023-07-06 19:08:07
70
原创 AOP切面实现日志管理和记录
2、编写通知,有前置通知、后置通知、环绕通知和异常通知,下面以异常通知为例实现效果。1、自定义注解,通过注解的方式去获取方法请求参数和返回结果,最终记录方法执行结果。3、最后在对应需要应用的方法中使用该注解,达到自己想要最终实现的效果。
2023-07-01 13:29:04
223
原创 进程和端口的关系
我们知道,在单个计算机中的进程是用进程标识符(一个不大的整数)来标志的。但是互联网环境下,用计算机操作系统所指派的这种进程标识符来标志运行在应用层的各种应用程则是不行的。这是因为在互联网上使用的计算机的操作系统种类很多,而不同的操作系丝使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法(而这种方法必须与特定操作系统无关)对TCP/IP 体系的应用选程进行标志. 但是,把一个特定机器上运行的特定进程,指明为互联网上通信的最后终点还是不可的。这是...
2022-06-05 22:57:30
397
原创 反射为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
425
原创 使用maven打jar包
1、打开右侧maven;2、选择需要打包的的项目进行clean;3、选择需要发布的项目,进行clean,package;4、在需要发布的项目中的target文件夹中就打好了需要的jar包;
2022-05-26 08:46:14
9880
原创 日期和年月日的转换
/** * 字符串转换成时间类型 * @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
290
原创 手动添加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
614
原创 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
454
原创 针对复选框的全选和全不选
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
76
原创 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
69
原创 File.separator
其实 File.separator 的作用相当于 ' \ '在 windows 中 文件文件分隔符 用 ' \ ' 或者 ' / ' 都可以但是在 Linux 中,是不识别 ' \ ' 的,而 File.separator 是系统默认的文件分隔符号,在 UNIX 系统上,此字段的值为 ' / '在 Microsoft Windows 系统上,它为 ' \ ' 屏蔽了这些系统的区别。所以用 File.separator 保证了在任何系统下不会出错...
2022-03-02 08:38:07
205
原创 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
1775
原创 页面加载完成执行事件
//原生js写法,即页面加载完成后立马执行 $(document).ready(function() { });//JQuery写法,即页面加载完成后立马执行 $(function () { });
2022-02-24 09:23:22
725
原创 针对选择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
370
原创 针对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
630
原创 $.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
868
原创 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
159
原创 针对同步请求出错后的提示代码
//针对同步请求的返回提示 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
38
原创 手写线程池及其参数意义
ThreadPoolExecutor类的七大核心参数的意义: 1、int corePoolSize:核心线程数 2、int maximumPoolSize:最大线程数,最小大于1(当核心线程数和任务队列都满的时候,这个时候开始扩容线程) 3、long keepAliveTime:当线程池中的线程数大于核心线程数的时候,当空闲的时间大于unit时,则多余的线程将会被销毁只剩下核心线程数的数量,从maximumPoolsSize缩短到corePoolSize数目 4、TimeUnit unit.
2021-12-07 20:27:22
98
原创 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
365
原创 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
467
原创 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
588
原创 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
342
原创 生成字母加数字的随机数
/** * 随机生成字母加数组的组合 * @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
816
原创 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
2046
原创 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
371
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人