- 博客(50)
- 资源 (1)
- 收藏
- 关注
原创 7层网络模型都在做什么
OSI七层模型OSI七层模型是一个规范,把网络从逻辑上分为7层。Please | 物理层(Physical Layer)Do | 数据链路层(Data Link Layer)Not | 网络层(Network Layer)Tell (the)| 传输层(Transport Layer)Secret | 会话层(Session Layer)Password (to)| 表示层(Presentation Layer)Anyone | 应用层(Application Layer)这每一层都是
2021-10-31 14:46:00 1822
原创 Elasticsearch SQL
Elasticsearch SQL 是一个X-Pack组件,允许对Elasticsearch实时执行类似SQL的查询,为Elasticsearch提供一个强大而轻量的SQL接口。无论使用REST接口,命令行还是JDBC,任何客户机都可以使用SQL对EsasticSearch进行查询。Elasticsearch SQL是一个将SQL转换为DQL的转换器。主要针对于查询操作。约定很多人习惯地把ElasticSerach和数据库进行类比,如 一个ES索引等同于一张数据库表,一条Document记录等同于一行
2021-10-18 15:06:45 209
原创 脱离spring cloud使用feign
spring-cloud-feign是spring cloud微服务之间调用封装的功能,由于feign的封装和解耦做的比较好,因此脱离spring cloud也能使用。Spring boot项目使用feign项目背景:spring boot 2.2.5.RELEASE引入Maven <dependency> <groupId>org.springframework.cloud</groupId> <
2021-10-11 15:17:03 446
原创 When allowCredentials is true, allowedOrigins cannot contain the special value “*“ since that cannot
springboot + html 项目后端启动项目之后,前端页面访问,前端页面500,后端报错,核心报错内容如下:2021-09-14 17:48:49.275 INFO 14196 --- [nio-9000-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'2021-09-14 17:48:49.276 INFO 14196.
2021-09-14 18:00:38 575
原创 MySQL
MySQLStructured Query Language:结构化查询语言,用于定义操作关系型数据库的规则。常见数据类型整型TINYINTSMALLINTMEDIUMINTINTBIGINT浮点型FLOAT(n,m)DOUBLE(n,m)DECIMAL(n,m)n:整数部位+小数部位的最大长度m:小数部位的最大长度字符型CHAR(n)n为字符的最大个数,可选,默认是1,固定长度的字符。VARCHAR(n)n为字符的最大个数,必写,可变长度的字符。
2021-08-29 18:40:46 121
原创 常用SQL命令
SQLStructured Query Language:结构化查询语言,用于定义操作关系型数据库的规则。常用SQL命令SELECT - 从数据库中提取数据SELECT * FROM table_name;SELECT column_name,column_name FROM table_name;UPDATE - 更新数据库中的数据UPDATE table_name SET column1=value1,column2=value2,… WHERE some_column=
2021-08-29 16:08:24 107
原创 ElasticSearch安装
ElasticSearch安装elasticsearch安装比较简单,如果是本地使用,则拆箱即用。处安装的es为7.13.1版本下载地址:https://www.elastic.co/cn/downloads/elasticsearchWindows安装下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.1-windows-x86_64.zip下载完成后,安排好目录,随后解压即可。运行进入解
2021-08-17 17:23:18 113
原创 elasticsearch常用综述
快速入门1. 基础概念-快速入门Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的
2021-08-04 16:06:51 237
原创 lombok基本使用
lomnokidea安装lombok插件pom.xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> </dependency>@Setter自动产生 setterstatic
2021-07-21 20:35:03 357
原创 mybatis foreach list特殊处理
最近做一个功能,sql要用到 IN 条件,通过list传入IN 的值,如:SELECT * FROM table1 WHERE id in (1,2,3)对应的mybatis写法为: <select id="queryByIds" resultMap="resultMap" parameterType="list"> SELECT * FROM table1 WHERE id <foreach collection="list"
2021-06-24 14:08:12 214
原创 jstack排查锁竞争
排查线程信息的常用工具是jstack,jstack用于生成当前进程的所有线程快照。准备设计一个程序:两个线程,两个锁,互相等待造成死锁。然后使用jstack排查锁竞争情况。jstack使用一般出现cpu异常的情况下,会使用top命令找到cpu占用较高的进程,得到进程pid。如果定位到或怀疑是某个java进程出现锁竞争,可以直接使用jps找到对应的pid,进行一下操作。jstack查看线程信息jstack -pidjstack 181762021-06-08 09:51:39Full t
2021-06-08 10:45:20 439
原创 JVM生命周期
JVM生命周期此处的VM为HotSpot VM。JVM的启动方式启动HotSpot VM的组件是启动器。HotSpot VM有多个启动器,常见的启动器如下:Unix/linux 上最常见的是java;windows上是java和javaw;通过JNI接口JNI_CreateJavaVM启动内嵌的JVM;网络启动器javaws(java Web Start),网络浏览器通过它来情动applet;JVM的启动流程解析命令行选项启动器会直接处理一些命令行选项,例如-client或-s
2021-05-25 11:16:46 139
原创 系统操作行为记录实战之方法添加注解+service层调用
简介注: 开发工具使用的是IDEA在通常的项目中,通常都需要一个用于对用户的操作进行记录的模块,主要负责记录各个用户对系统做个哪些操作;例如,张三用户成功登录系统,张三修改了个人资料,张三用户退出了系统等。对于这种全局的操作的记录,在实现代码中,常用以下两种方式:- 调用Service层代码进行记录;- 使用AOP思想添加注解。1. 项目整体结构2 代码详解2.1 配置文件及实体类2.1.1 pom.xml<?xml version="1.0" encoding="UTF-8
2021-05-15 23:47:56 829 1
原创 JAVA归并排序代码
直接插入算法学习使用代码如下package mergeSort;import java.util.Arrays;/** * 归并 - 递归 * {5, 3, 6, 2, 1, 9, 4, 8} * * {5, 3, 6, 2} {1, 9, 4, 8} * * {5,3} {6,2} {1,9} {4,8} * *
2021-05-02 20:04:59 128
原创 JAVA计数排序代码
计数算法学习使用代码如下import utils.AlgorithmUtils;import java.util.Arrays;/** * 计数排序:辅助计数数组auxiliary用来记录每个元素出现的次数,然后挨个取出即可 * 例如: * * 3 2 5 4 4 * * arr[0] arr[1] arr[2] arr[3] arr[4] arr[5] * 0 0 1 1 2 1 * * * * */public
2021-02-27 20:34:09 138
原创 优雅代码-异常捕获
异常处理程序中各层都会出现大量的异常,对应try catch finally就会大量出现,导致大量的冗余代码,甚至可能影响代码可读性,这种情况需要一个全局异常处理来解决推荐理由通过少量的异常处理代码,可以解决代码冗余方便统一管理异常定义全局异常类定义个全局异常类,和几个常见异常处理的定制方法/** * 全局异常处理器 * */@Slf4j@RestControllerAdvicepublic class GlobalExceptionHandler { /**
2021-02-20 18:49:24 95
原创 checkStyle 使用
checkStyle的使用checkStyle在idea中的应用手册1 安装配置2 确认插件勾选生效3 添加自定义规则这里自定义一个check规则,需要一份check的xml配置文件,在文末提供。如果添加顺利,就跳过此图,如果遇到下图相同的报错,可以调整对应的版本号来解决使用checkStyle做检查的方法附录-check配置<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE module PUBLIC "-/
2021-02-20 18:01:09 456
原创 优雅代码-参数校验
参数校验web开发无法避免的参数校验,大量的参数校验很容易导致代码中有大量的if判断,如下 if (StringUtils.isBlank(user.getUsername())) { return new Result("用户名不能为空"); } if (StringUtils.isBlank(user.getPhone())) { return new Result("手机号不能为空"); }不想写这么多的的判断代码,可以借助spring的几个注解,将一些常用的校验封装起来
2021-02-20 17:59:20 230 1
原创 优雅代码-命名规范
开发规范-命名规范接口开发一般常用的对象也就是三种:DTO VO PO,也可以有DODTO(Data Transfer Object)数据传输对象用接口的入参定义VO(View Object) 值对象业务对象,用于接口响应参数DO(Domain Object)领域对象就是从现实世界中抽象出来的有形或无形的业务实体。PO(persistant Object) 持久对象没有业务,仅仅是与数据库表映射的java对象,一个PO对应数据库中表的一条记录。PO内不应该有别的操作。CLC.
2021-02-20 17:55:20 109
原创 校验类注解的区别 @NotNull、@NotEmpty、@NotBlank
校验类注解的区别 @NotNull、@NotEmpty、@NotBlank使用场景@NotEmpty用在集合类@NotBlank 用在String@NotNull 用在基本类型注解的探究@NotEmpty/** * The annotated element must not be {@code null} nor empty. * <p> * Supported types are: * <ul> * <li>{@code CharSeque
2021-02-20 17:53:02 625
原创 JAVA冒泡排序代码
冒泡算法学习使用代码如下import untils.AlgorithmUtils;import java.util.Arrays;/** * 冒泡排序:最基础(简单)的排序 * 比较两个相邻的元素,将较大值的元素交换至(左)右端 * <p> * 第一次比较n-1次 * 第二次比较n-2次 * 。。。。 * <p> * 平均时间复杂度 最好情况 最坏情况 空间复杂度 * O(n²) O(n) O(n²) O(1) */public class Bubbl
2021-01-30 15:44:23 4498
原创 JAVA选择排序代码
选择排序算法学习使用代码如下import untils.AlgorithmUtils;import java.util.Arrays;/** * 选择排序 * <p> * 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置, * 然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。 * 以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。 * <p> * 平均时间复杂度 最好情况 最坏情况
2021-01-30 15:41:39 680 1
原创 JAVA直接插入排序代码
直接插入算法学习使用代码如下import untils.AlgorithmUtils;import java.util.Arrays;/** * 以下解释来源于网络 * <p> * 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。 * 插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。 * 在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面
2021-01-30 15:37:19 604
原创 IDEA快捷键-全量
IDEA快捷键常用区代码生成功能winmac代码智能生成Ctrl Shift Space⌃ ⇧ Space查找文件双击 Shift双击 ⇧快速修复问题Alt Enter⌘↩︎生成代码Alt Ins⌘N参数信息Ctrl P⌘P扩展选择Ctrl W⌘⌥ ↑收缩选择Ctrl Shift W⌘⌥ ↓...
2021-01-22 11:18:17 192
原创 Spring Boot tomcat 启动探索
Spring Boot tomcat 启动探索Spring Boot 内置tomcat 一键启动的使用引入pom<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.6.RELEASE</version></de
2020-12-30 20:30:16 125
原创 支付中心-重复支付问题解决方案
支付中心-重复支付问题解决方案一笔订单,可以做多笔支付,怎么解决?重复支付的异常背景一笔订单,在支付中心可以选择多种支付方式。如支付宝扫码,支付宝app,微信扫码,微信小程序,银联…用户选择支付方式后,系统需要和第三方进行交互,获取到结果后,可能跳转到第三方收银台,也可能在当前页面展示收款二维码;用户打开一种支付方式,没有完成付款的情况下,又选择打开了其他支付方式。如准备用微信支付,打开收款二维码后,发现微信余额不足,遂即打开支付宝支付,此时两个支付方式都可以做支付操作。由于产生待支付单后,支
2020-11-12 11:00:41 5582 1
原创 Linux实用之Java(JDK)环境安装
准备工作准备linux安装包:jdk-8u121-linux-x64.tar.gz开始安装创建/usr/java目录cd /usrmkdir java将jdk-8u121-linux-x64.tar.gz 放到/usr/java目录下,解压tar -xzvf jdk-8u121-linux-x64.tar.gz 安装后需要把jvm环境变量添加到全局环境变量中/etc/profile文件,添加如下配置:JAVA_HOME=/usr/java/jdk1.8.0_121
2020-11-11 10:30:08 185 2
原创 ThreadLocal使用及分析
ThreadLocal特点ThreadLocal实现了线程间数据隔离,ThreadLocal的实例代表了一个线程局部的变量,每条线程都只能看到自己的值,并不会意识到其它的线程中也存在该变量。简单来说就是一个公共的Map,map的key是Thread本身,value是线程携带的数据。ThreadLocal的简单使用使用方式一开启三个新的线程,每个线程对数据进行累加。public class TestThreadLocal { //线程本地存储变量 private static fi
2020-10-27 09:55:26 415
jdk-8u121-linux-x64.tar.gz
2020-11-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人