![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
CTRA王大大
一枚码农,坚持coding
展开
-
【java】仿级联查询 | Java通过DSL字符串查询ES (es8 dsl java)
模拟aws中级联查询一、需求二、设计1、背景2、思路三、Java代码实现四、DSL表达式五、前端拼接 DSL 字符串六、Java使用ES查询DSL字符串一、需求1、实现一个搜索框,可以实现所有的字段的查询,并且每个字段可以支持不同的查询方式如下图所示2、点击任何一个字段,弹出该字段支持的查询方式二、设计1、背景由于项目是前后端分离项目,这里就需要前端的配合由于我们的数据库选择是 mysql+es今天这篇文章主要是使用es进行业务查询2、思路如何获取该表的所有列字段?如果根据字段原创 2022-02-22 11:47:09 · 3250 阅读 · 0 评论 -
AQS图解
原创 2021-11-22 16:45:48 · 192 阅读 · 0 评论 -
JAVA基础 | 线程、线程池
主要内容等待与唤醒案例线程池教学目标-[ ] 能够理解线程通信概念-[ ] 能够理解等待唤醒机制-[ ] 能够描述Java中线程池运行原理-[ ] 能够理解函数式编程相对于面向对象的优点-[ ] 能够掌握Lambda表达式的标准格式-[ ] 能够使用Lambda标准格式使用Runnable与Comparator接口-[ ] 能够掌握Lambda表达式的省略格式与规则-[ ] 能够使用Lambda省略格式使用Runnable与Comparator接口-[ ] 能够通过Lambda的原创 2021-08-26 22:36:49 · 169 阅读 · 0 评论 -
Spring AOP 注解开发
AOP 步骤将业务逻辑组件和切面类都加入到容器中,告诉spring哪个是切面类(@Aspect)在切面类上的每一个通知方法上标注通知注解,告诉Spring何时何地运行(切入点表达式)开启基于注解的aop模式: @EnableAspectJAutoProxy被代理类package com.ctra.aop;public class MathCaculator { public int div(int i ,int j){ System.out.println("执行除原创 2021-07-29 21:11:17 · 122 阅读 · 0 评论 -
Java | stream 导致 All elements are null 处理方式
1、出现 All elements are null 的场景一1.1 导致的问题:为空的list或者set判断size 或者为空 都出错在使用stream时,定义的类中的值,未传值通过map获取则会出现All elements are null 问题1.2 解决方案:使用remove删除list或者set中的空值distributionIdTotal.remove(null); Set<Integer> distributionIdTotal = obj.stream()原创 2021-07-13 11:30:27 · 3022 阅读 · 3 评论 -
Mybatis | insert操作 返回主键
1、代码片段 <insert id="insert" parameterType="com.repository.supplier.entity.Supplier"> <!-- WARNING - @mbg.generated This element is automatically generated by MyBatis Generator, do not modify. This element was generated on Tue原创 2021-07-01 13:33:55 · 254 阅读 · 0 评论 -
【git】 代码丢失 idea 没提交git去merge导致文件丢失,如何查找?
1、VCS->Git->Unstash Changes2、找到未提交的版本3、查看原创 2021-06-24 16:03:45 · 1278 阅读 · 0 评论 -
Java Stream 实现根据多字段分组求和
代码块如下: List<AgentCheckoutStockDetail> agentCheckoutStockDetails = agentCheckoutStockDetailRepository.selectByExample(ws); Map<String, Long> countMap = agentCheckoutStockDetails.stream() .collect(Collectors.groupingBy(o -> o.getDel原创 2021-05-28 17:43:08 · 9936 阅读 · 4 评论 -
idea Maven(私服) 微服务导致脏依赖无法清理干净
一、首先将idea中的cache 缓存清除如下图所示,如果这样清理后还是不行,则没有将maven仓库的依赖清理干净二、将Maven(私服)的对应依赖全部删除原创 2021-04-08 15:54:40 · 537 阅读 · 0 评论 -
springboot 调用python ,使用RestTemplate实现远程调用请求
微服务混合使用 springboot&java1、springboot 控制 python的各个环境版本2、使用 RestTemplate 实现远程调用3、总结1、springboot 控制 python的各个环境版本为了控制各个环境下的python,这里引入 yml的配置的 注入bean@Data@Componentpublic class PythonConfigModel { @Value("${python.address}") private String url原创 2021-02-02 15:50:18 · 557 阅读 · 0 评论 -
使用restTemplate 使用 POST 调用python外部接口
场景:在springboot中调用python提供的接口1、准备内部类(也可以写在model中) @Data class TestVO { public Set<String> nos; public Set<Integer> deliveryDetailIds; }2、使用 RestTemplate 来进行跨环境RPC调用python接口 public List<DeliveryDetailVO> getD原创 2021-01-07 14:53:15 · 336 阅读 · 0 评论 -
springboot微服务实战:分布式锁 Redisson 之八锁(Github-WIKI文档)与JUC下8锁相同原理
1. 可重入锁(Reentrant Lock)基于Redis的Redisson分布式可重入锁RLock Java对象实现了java.util.concurrent.locks.Lock接口。同时还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。RLock lock = redisson.getLock("anyLock");// 最常见的使用方法lock.lock();大家都知道,如果负责储存这个分布式锁的Redisson节点宕机以后,而且这个锁正好处于锁住的状原创 2020-10-19 20:47:18 · 287 阅读 · 0 评论 -
springboot微服务实战:Redisson 分布式锁场景:模拟并发、异常中断会不会死锁
Redisson 分布式锁阻塞式等待 ( 续长30s )1) 锁的自动续期,如果业务超长,运行期间自动给锁续上新的30s2) 加锁的业务只要运行完成,就不会给当前锁续期,即使不手动解锁,锁默认在30s以后自动删除@Controllerpublic class IndexController { @Autowired RedissonClient redisson; @ResponseBody @GetMapping("/hello") public S原创 2020-10-05 16:10:30 · 326 阅读 · 3 评论 -
Spring Cloud Alibaba训练营结营考试 2020
原创 2020-09-30 21:50:17 · 169 阅读 · 0 评论 -
springboot微服务-jedis-实战ERROR:OutOfDirectMemoryError 产生环境-堆外内存溢出
Lettuce & JedisredisTemplate (StringRedisTemplate类)Lettuce & Jedis 操作redis的底层客户端,Spring再次封装 redisTemplate无论我们使用哪个服务,最后都可以获得连接工厂堆外内存溢出原因:springboot2.0 以后默认使用 Lettuce 作为操作redis的客户端它使用netty进行网络通信Lettuce 的bug导致netty堆外内存溢出设置JVM:-X原创 2020-09-30 13:05:13 · 636 阅读 · 0 评论 -
springboot微服务实战:JMeter & jvisualvm 多线程 高并发 压测
1、JMeter 下载地址下载地址:https://jmeter.apache.org/download_jmeter.cgi2、JMeter 压力测试2.1 英语不好的小伙伴可以先汉化一下2.2 添加-线程组最为关键的三个参数2.3 线程组-添加-HTTP请求2.4 线程组-添加-察看结果树2.5 线程组-添加-汇总报告2.6 线程组-添加-聚合报告2.7 总结3、JMeter 常见问题1、JMeter Address Already in use 错误原创 2020-09-30 08:35:02 · 340 阅读 · 0 评论 -
java enum 与 单例模式
package com.ctra.reflection;//class Season{// private Season(){}// public static final Season SPRING = new Season();// public static final Season SUMMER = new Season();// public static final Season FALL = new Season();// public static原创 2020-09-29 11:22:29 · 108 阅读 · 0 评论 -
springboot微服务实战:操作 es7.4.2
一、导入maven依赖1、从官方API copy pom坐标链接地址:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.x/java-rest-high-getting-started-maven.html<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elastics原创 2020-09-29 11:18:40 · 200 阅读 · 0 评论 -
springboot微服务实战: 中如何快速逆向生成vo层?
这是我们常用的json格式化工具,殊不知他还能转成vo层的实体类https://www.bejson.com/json2javapojo/new/原创 2020-09-21 09:51:33 · 547 阅读 · 0 评论 -
Elasticsearch 创建索引(数据库),创建类型(表),插入json数据(表数据)
PUT & POSTPUT 操作PUT更适合修改操作POST 操作ES乐观锁-模拟并发这里判断版本的条件:_seq_no 字段来标记老版本的使用的是:_version 字段来标记A请求B请求流程图如下原创 2020-09-19 17:34:22 · 1382 阅读 · 0 评论 -
Elasticsearch :docker 下 7.4.2版本的 Elasticsearch Kibana Nginx下IK分词器 安装
前面需要提前安装 docker 这里就不再赘述了下载 elasticsearch & kibana一、dockerdocker pull elasticsearch:7.4.2docker pull kibana:7.4.2二、创建2个目录供 docker 中elasticsearch 外部关联mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/data三、 创建elasticsearch的c.原创 2020-09-19 09:34:43 · 948 阅读 · 0 评论 -
springboot微服务实战:利用vo重新构建pojo
工具类PageUtils/** * Copyright (c) 2016-2019 人人开源 All rights reserved. * * https://www.renren.io * * 版权所有,侵权必究! */package com.ctra.common.utils;import com.baomidou.mybatisplus.core.metadata.IPage;import java.io.Serializable;import java.util.L原创 2020-09-18 18:16:56 · 642 阅读 · 0 评论 -
springboot微服务实战:Java调用阿里云OSS-最精简的教程 (2020年9月 )
阿里云oss-java文档地址:https://help.aliyun.com/document_detail/32009.html?spm=a2c4g.11186623.6.805.60876d39pVplLP安装安装SDK方式一:在Maven项目中加入依赖项(推荐方式)在Maven工程中使用OSS Java SDK,只需在pom.xml中加入相应依赖即可。以3.10.2版本为例,在中加入如下内容:<dependency> <groupId>com.aliyun.原创 2020-09-07 12:43:50 · 767 阅读 · 0 评论 -
人人开源 Java 源码生成工具中 vue 中列名显示问题 ${column.comments}
人人开源 论坛和源码下载人人开源论坛:https://www.renren.io/communityrenren-generator | 代码生成器:https://gitee.com/renrenio/renren-generator问题描述:生成的vue文件 列名无法显示解决方案原创 2020-09-06 23:29:25 · 357 阅读 · 0 评论 -
【renrenfast】Java自动代码生成 java脚手架(逆向工程) 人人开源 renren-generator
【renrenfast】Java自动代码生成 java脚手架java逆向工程人人开源 renren-generator原创 2020-08-25 16:53:31 · 2097 阅读 · 0 评论 -
Java web中 Cookie Session 基本初识
会话无状态会话 :用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以有状态称会话:一个同学来过教室,下次再来教室,我们会知道这个同学,曾经来过,称之为有状态会话保存会话的俩种技术cookie客户端技术(响应、请求)session服务器技术,利用这个技术,可以保存用户的会话信息。我们可以把信息活着数据放在Session中常见应用:网站登录之后,你下次不用再登录了,第二次访问直接就上去了...原创 2020-08-06 09:21:18 · 103 阅读 · 0 评论 -
23种设计模式 Java 单例模式(八种)
八种单例模式饿汉式静态常量(调用:静态方法)饿汉式静态代码块懒汉式线程不安全懒汉式线程安全,同步方法懒汉式线程安全,同步代码块双重检查静态内部类枚举前言首先我们先熟悉一个概念:懒加载 Lazy loading懒加载:其实就是延时加载,即当对象需要用到的时候再去加载。1、饿汉式 (静态常量)√这种方式基于ClassLoader机制避免了多线程的同步问题。不过 instance在类装载是就实例化,在单例模式中大多数都原创 2020-07-10 11:22:20 · 108 阅读 · 0 评论 -
Java 基础 包装类 (四类八种的包装类)拆箱、装箱 JVM缓存整型-128~127面试题
包装类概述Java 提供了俩个类型系统:基本类型、引用类型使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们使用基本类型对象一样操作,就可以使用基本类型对应的包装类4类8种如下图(可以百度)基本数据类型与包装类:主要记住 Integer 和 Character装箱与拆箱基本类型与对应的包装类对象之间,来回转换的过程称为“装箱”与“拆箱”装箱:从基本数据类型转换为对应的包装类对象拆箱:从包装类对象转换为对应的基本类型 这里原创 2020-07-02 16:15:06 · 236 阅读 · 1 评论 -
Java 高级 Lambda表达式 函数式编程思想(函数式接口)
1、 函数式编程思想开篇废话:在数学中,函数就是有输入量、输出量的一套计算方案,也就是“那什么东西做什么事情”面向对象过分强调“必须通过对象的形式来做事情”函数式思想则尽量忽略面向对象的复杂语法–强调做什么,而不是以什么形式做方式思想面向对象做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情函数式编程思想只要能获取到结果,谁去做,怎么做都不重要,忠实的是结果,不重视过程2、Lambda 前生今世我们从北京到上海,可以选择如上图任意种方原创 2020-07-02 11:46:09 · 331 阅读 · 0 评论 -
IDEA使用技巧: 调整JDK版本的全部4处设置 完美解决版本问题(windows版本截图)
第一处:Settings->Compiler->Java Compiler第二处:Project Settings->Project第三处:Project Settings->Modules->Sources第四处:Project Settings->Modules->Dependencies原创 2020-07-02 10:02:58 · 200 阅读 · 0 评论 -
Java 高级 多线程 Thread Runnable Synchronize Lock 6大线程状态 线程池(结合传智黑马与狂神)总结
1、创建一个线程过程线程创建的二个方式:继承 Thread 类实现 Runnable 接口 (推荐 ☆)1.1 首先继承 Thread类// 方式一:继承 Thread 类 (不推荐)public class ThreadDemo1 extends Thread{}1.2 重写 run() 方法 ☆这里是线程的核心操作方法,一切线程的操作都放在这里// run方法线程主体public void run() { for (int i = 0; i < 200; i++)原创 2020-07-01 16:16:23 · 279 阅读 · 0 评论 -
Java 基础:new 一个接口 (这不是实例化)这叫做:匿名内部类
众所周知,interface 接口 是不能被实例化的但是我们又在很多源码中看到直接new了一个接口那么很多小伙伴就有很多问号了接口实现类定义 接口定义实现类测试如下图这是传统的接口实现的方式但是如果实现类在全部代码中,只出现一次或者次数很少,则可以不去定义PersonImpl实现类直接使用匿名类的简化方式去实现匿名类首先我们应该知道匿名内部类匿名是因为匿名内部类的具体名字不会被我们在程序当众编写出来,因为它已经在主方法当中被实例化了。匿名内部类可以继承两类数据结构:一:抽原创 2020-06-30 11:36:36 · 1080 阅读 · 0 评论 -
一篇搞定 spring 所有固定配置(CV快速构建项目)不断升级中!~
MyBatis1、MyBatis数据库配置文件在resources 中创建 database.properties 文件(名称可改),然后直接粘贴如下内容jdbc.driver=com.mysql.jdbc.Driver# 如果使用mysql8.0,增加一个时区 的配置 以上 serverTimezone=Asia/Shanghaijdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useSSL=fal原创 2020-06-30 09:55:46 · 336 阅读 · 0 评论 -
Java web 关于 servlet 常用方法使用
1、web.xml 中 Mapping问题类与< servlet > 的关系:一个类对应一个 servletservlet-name:自定义的类名servlet-class:表示关联的具体类 <servlet> <servlet-name>hello</servlet-name> <servlet-class>com.ctra.servlet.HelloServlet</servlet-class原创 2020-06-11 16:21:18 · 168 阅读 · 0 评论 -
Java web 使用 maven 创建第一个 servlet 详细步骤 (环境:IDEA 2019)
配置tomcat原创 2020-06-09 15:53:47 · 784 阅读 · 0 评论 -
Java 高级 类初始化过程(主动引用、被动引用)static方法中为什么不能用this?
这里参考了一下这个文章,大家感觉可以再阅读一下文章地址:https://blog.csdn.net/weixin_42636552/article/details/82949999首先可以看一下这篇文章:https://zhuanlan.zhihu.com/p/86441683类的主动引用(一定会发生类的初始化遇到 new,getstatic,putstatic,invokestatic这4条字节码指令时,假如类还没进行初始化,则马上对其进行初始化工作。其实就是3种情况:1> 用.原创 2020-05-25 10:58:10 · 208 阅读 · 2 评论 -
IDEA使用技巧:四个Java极速阅读源码的快捷键(IDEA 、Mac 环境下)
Command + 鼠标左键 进入源码这里就不多做解释,人人都会如果发现点不进去的话,先看一看 maven是否将其倒入其中Command + alt + ⬅️、➡️(方向左、右)这里本身是回到上次编辑位置配合上一操作,对源码和代码之间完成快速的切换shift shift (双击)这里可以快速搜索我们想要查看的源码的类名等command + F12可以快速查看当前类中所有的方法 m、字段 f(支持搜索)...原创 2020-05-17 22:03:26 · 1045 阅读 · 0 评论 -
Java 高级 annotation 注解、内置注解、元注解、自定义注解 (含源码 2020年最新)
注解 Annotation1、什么是注解?Annotation 是从 JDK5.0 开始引入的新技术Annotation的作用:不是程序本身,可以对程序作出解释(这一点和注解 comment 没什么区别)可以被其他程序(比如:编译器等 )读取Annotation的格式:注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如-抑制警告:@SuppressWarnings(value=“unchecked”)Annotation 在哪里使用?可以附加在package、c原创 2020-05-12 11:37:20 · 396 阅读 · 0 评论