自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM调大新生代内存优化

jvisualvm某一服务JVM内存使用情况伊甸园+S0+S1 = 新生代当老年代也满了 会抛出内存泄露错误 服务就崩溃了

2022-05-05 18:54:25 299

原创 Nginx动静分离

应用场景:项目优化 减少服务器压力 提高吞吐量 把静态资源压力给到了Nginx Tomcat去处理动态请求把项目静态资源移到 nginx/html/static 目录把项目页面所有要引用静态资源的路径前面加上 /static没有配置Nginx路径映射 会404找不到去配置Nginx路径映射配置好之后 重启Nginx 重新发送请求...

2022-05-05 18:50:24 1256

原创 Vue父子组件值同步和方法执行顺序问题

代码结构:三层关系:PrototypeDrawer>TaskDrawerHeader>TaskStatusPrototypeDrawer.vue 最外层<task-drawer-header @beforeComplete="beforeComplete"></task-drawer-header><script>export default { methods:{ openDrawer(){ t.

2022-03-28 15:04:24 1360

原创 单例模式-懒汉/饿汉式-双重锁定

懒汉式第一次被引用时才会将自己实例化public class Singleton_Lazy { private static Singleton_Lazy instance; private Singleton_Lazy() {}; public static Singleton_Lazy getInstance() { if (instance == null) { instance = new Singleton_Lazy(); } return instance; }

2022-03-14 17:00:36 672

原创 广度优先搜索(breadth-first search,BFS)

广度优先搜索(breadth-first search,BFS)应用场景:到X的最短路径原理:搜索范围从起点向外延伸,先查一度关系,再查二度关系,以此类推这样不仅能找到A到B的路径,而且找到的还是最短的路径注意:只有按关系层级顺序查找才能找到最短路径使用的数据结构:**队列(**Queue),先进先出(FIFO)散列表(Map),用来映射元素下一层级关联的元素,在下面例子中对应某个人的朋友们运行时间:O(V+E) V:边数 E:顶点数![image-20220314150843512](D:

2022-03-14 15:13:26 1414

原创 抽象工厂模式

简单工厂模式工厂方法模式抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类原始模型public interface IUser { void insert(User user); User getUser(int id);}在MySQL的user表操作public class MySQLUser implements IUser { @Override public void insert(User user) { System.out.pri

2022-03-12 17:46:31 782

原创 散列表(哈希表)

散列表也叫哈希表数组+散列函数类比Java中的Mapkey-value键值对应用:DNS域名解析,你输入 www.baidu.com 就会映射到相应的IP防止重复,key值是唯一的,投票系统,每个人只能投一次缓存,Web服务器存一些经常使用的数据到内存中,如Redis散列函数特性:1.一致性,输入apple得到4,那么再次输入apple得到的还是42.输入不同,映射得到的也不同,如果输入不同的数得到相同的结果,说明这个散列函数不是好的3.散列函数返回的索引是有效的,不会超过数组长度

2022-03-11 17:10:10 384

原创 快速排序(分而治之+归纳证明)

分而治之D&C(Divide and Conquer)的工作原理:①找出简单的基线条件②确定如何缩小小问题的规模,使其符合极限条件eg:快速排序基线条件:数组为空或只包含一个元素缩小规模:选取一个基准值,把数组分解成三个部分(小于基准值的数组,基准值,大于基准值的数组)再把小于基准值的数组和大于基准值的数组再次分解,直到满足基线条件归纳证明①基线条件②归纳条件eg:证明我能爬到梯子的最上面基线条件:我已经站在第一个横档上归纳条件:换言之,如果我站在第二个横梯上,就能爬到第三

2022-03-10 17:06:49 632

原创 工厂方法模式

场景:制作一个简易可扩展计算器通过工厂模式改进之前的简单工厂模式一样public class Operation { private double numberA; private double numberB; public double getNumberA() { return numberA; } public void setNumberA(double numberA) { this.numberA = numberA; } public double getNumbe

2022-03-09 15:58:14 89

原创 选择排序-算法-Java

时间复杂度:O(n2) // 找出当前集合最小的数 public static Integer findMinNumber(LinkedList<Integer> arr) { int min = arr.get(0); for (int i = 0; i < arr.size(); i++) { if (arr.get(i) < min) { min = arr.get(i); } } return min; } // 把找到的最小元

2022-03-09 11:18:25 406

原创 lombok

官网:https://projectlombok.org/valfinal+类型 的 缩写val example = new ArrayList<String>();// 等于final ArrayList<String> example = new ArrayList<String>();也可以for循环中使用for (val entry : map.entrySet())// 等于for (final Map.Entry<Integer, S

2022-03-08 15:23:06 280

原创 简单工厂模式

场景:制作一个简易可扩展计算器public class Operation { private double numberA; private double numberB; public double getNumberA() { return numberA; } public void setNumberA(double numberA) { this.numberA = numberA; } public double getNumberB() { return num

2022-03-08 11:42:57 149

原创 二分查找-算法-Java

适用场景:如查字典 A-Z 26个顺序英文字母 随机选取一个字母 只需 log26 次即可找到字母所在位置(索引)条件:必须是顺序数组时间复杂度:O(logn)public static Integer binarySearch (Integer[] list, Integer item) { Integer low = 0; Integer high = list.length - 1; Integer mid = 0; // 当最后一个元素也没有匹配到,low和high错位,返回null

2022-03-08 10:20:27 183

原创 Element UI-Dialog对话框使用

<el-dialog class="assignWorkloadDialog" title="工时指派" :visible="workDetailDialogVisible" width="40%" :modal="false" :before-close="resetWorkTime(done)"></el-dialog>export default { data() { return { workDetailDialogVisible:

2022-03-04 16:21:26 1707

原创 Vue子组件给父组件传值以及sync语法糖使用

不使用sync语法糖父组件<drawPlanInfoDialog :drawPlanInfoDialogVisible="drawPlanInfoDialogVisible" @update:drawPlanInfoDialogVisible="closeDialog"></drawPlanInfoDialog>export default { method: { closeDialog(newVal) { this.draw

2022-03-04 16:20:06 582

原创 分页查询之物理分页和逻辑分页

物理分页Limit通过SQL语句中 LIMIT #{startIndex},#{pageLimit} 语法来分页startIndex为偏移量,OFFSET,索引pageLimit为每页多少记录这两个参数在后端处理传入数据库之前必须为基本类型不能有双引号错误例子:LIMIT ‘0’,‘5’前端一般传currentPage,pageLimit两个参数而currentPage为当前第几页需转换为startIndexstartIndex = (currentPage - 1) * pageLimi

2022-02-28 17:29:08 1935

原创 Element UI-Select 选择器使用

地址:https://element.eleme.cn/#/zh-CN/component/select<template> <el-select v-model="value" placeholder="请选择"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">

2022-02-25 17:29:38 1146

原创 Vue父组件给子组件传值

首先得data得有数据data() { return { maximumVersion: { versionId: "", version: "", planName: "", isHighestVer: "" } }}在父组件标签中定义并引用 <create-plan :maximumVersion="maximumVersion"> </

2022-02-23 17:30:27 172

原创 @PathVariable路径变量接收空值处理方案

@PathVariable注解的required属性值默认为ture,表示必须有值,不能接收空值,false为可以为空值。单路径或多路径为@RequestMapping注解value属性可以接收URL字符串数组。![@

2022-02-22 11:32:10 2194

原创 SpringBoot接口返回数据日期格式为时间戳问题

什么都不配置接口返回:而数据库里面正常:在yaml配置文件中配置:spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8这个是通用的,比如使用map转JSON返回:@GetMapping(value = {"/queryDemandList/{versionId}", "/queryDemandList"}) public WsgResult<List<Map<Stri

2022-02-21 17:30:01 2154

原创 log4j-XML文件配置

如果使用SpringBoot指定log4j日志框架,那么配置文件名需为 log4j2-spring.xml 才能读取配置。配置样例<?xml version="1.0" encoding="UTF-8"?><configuration status="OFF" name="XIncludeDemo" monitorInterval="30" packages="com.sitech.csd.cmap.log4j2.test"> <ap

2022-02-21 17:16:18 1645

原创 左右连接和内外连接

左连接select 列1,列2,列Nfrom tableAleft join tableBon tableA.列 = tableB.列(正常是一个外键列) [此处表连接成一张大表,完全当成一张普通表看]where,having,group by …照常写。右连接select 列1,列2,列Nfrom tableAright join tableBon tableA.列 = tableB.列(正常是一个外键列) [此处表连接成一张大表,完全当成一张普通表看]where,having,gr

2022-02-18 17:16:52 755

原创 SpringBoot整合ElasticSearch

依赖<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.4.2</version></dependency>由于SringBoot对一些依赖有统一的版本管理 这里不使用默认的e

2022-02-17 17:07:39 940

原创 ElasticSearch分词器

所有的语言分词,默认使用的都是“Standard Analyzer”,但是这些分词器针对于中文的分词,并不友好。为此需要安装中文的分词器。下面以IK分词器为例:下载分词器# 进入ElasticSearch容器下载(或者在外部关联文件进行下载)docker exec -it elasticsearch /bin/bash# 下载分词器wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/el

2022-02-16 17:56:34 1935

原创 Zookeeper集群部署

使用工具将zookeeper-1.tar.gz zookeeper-2.tar.gz zookeeper-3.tar.gz上传到服务器# 将Zookeeper解压到指定目录tar -zxvf zookeeper-1.tar.gz -C /oncon/menhucd zookeeper-1# 创建数据存储目目录和日志保存目录mkdir logsmkdir data# 在myid文件中添加与 server 对应的编号cd dataecho "1" > myidcd ../confvi

2022-02-16 17:24:22 1070

原创 ElasticSearch-Mapping字段映射

text ⽤于全⽂索引,搜索时会自动使用分词器进⾏分词再匹配keyword 不分词,搜索时需要匹配完整的值样例GET bank/_mapping { "bank" : { "mappings" : { "properties" : { "account_number" : { "type" : "long" # long类型 }, "address" : {

2022-02-15 13:15:01 298

原创 ElasticSearch-Query DSL-领域特定语言查询

Elasticsearch提供了一个可以执行查询的Json风格的DSL(domain-specific language 领域特定语言),这个被称为Query DSL。样例GET bank/_search{ "query": { # 查询的字段 "match_all": {} # 查询类型【代表查询所有的索引】,es中可以在query中组合非常多的查询类型完成复杂查询; }, "from": 0, # 从第0条文档开始查 "size": 5, # 返回5条文档 "_

2022-02-11 17:31:32 590

原创 Hystrix服务熔断和服务降级

服务熔断—服务消费者@RestControllerpublic class EmployeeHandler { // @HystrixCommand注解指定当前方法出问题时调用的备份方法(使用fallbackMethod属性指定) @HystrixCommand(fallbackMethod = "getEmpWithCircuitBreakerBackup") @RequestMapping("/provider/get/emp/with/circuit/breaker")

2022-02-10 17:20:34 490

原创 JSR-303数据校验

JSR: Java Specification Requests: Java规范提案JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation。JSR-303 用于对 Java Bean 中的字段的值进行验证。Bean Validation 中内置的 constraint: javax.validation.constraintsConstraint详细信息@AssertTrue被注释的元素必须为 true@AssertFalse被注释的元

2022-01-28 15:23:09 254

原创 @ControllerAdvice 配合 @ExceptionHandler 实现全局异常处理

AOP思想:通过@ControllerAdvice指定拦截哪个Controller,然后通过@ExceptionHandler指定要拦截的异常类型,在方法里面做拦截之后的处理。@RestControllerAdvice = @ResponseBody + @ControllerAdvice = @ResponseBody + @Component@Slf4j// 指定要拦截的Controller@RestControllerAdvice(basePackages = "com.atguigu.gu

2022-01-28 11:51:41 918

原创 阿里云OSS---阿里云对象存储服务

OSS: (Object Storage Service) 对象存储服务流程开通https://www.bilibili.com/video/BV1np4y1C7Yf?p=61&t=190.1依赖<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alicloud-oss</artifactId>&

2022-01-27 16:56:23 1818

原创 CORS---跨域资源共享

CORS (Cross-Origin Resource Sharing) :跨域资源共享同源策略 [same origin policy] : 是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。 同源策略是浏览器安全的基石。CorsWebFilter进行全局跨域配置@Configurationpublic class GulimallCorsConfiguration { @Bean public CorsWebFilter corsWebFilte

2022-01-27 14:32:49 130

原创 Spring Cloud Gateway --- 网关

官网:https://spring.io/projects/spring-cloud-gateway#learn依赖:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId></dependency>配置样例:spring: cloud:

2022-01-27 11:50:36 296

原创 Nacos配置中心

启动服务时自动加载名为 bootstrap.properties 的配置文件启动服务的时候应该是先通过bootstrap.properties文件配置的地址信息加载配置中心的配置文件如果配置中心也没有才从本地的配置文件加载配置bootstrap加载优先级高于application:https://www.jianshu.com/p/0eb06eb9cf1f# 服务名字 会自动加载配置中心名为 gulimall-coupon.properties 的配置# < applicationName

2022-01-27 11:17:41 331

原创 枚举的使用

枚举的使用可以增加代码可读性,提前把需要已确定的信息实例化之后不用重复new对象。package com.atguigu.common.constant;public class WareConstant { public enum PurchaseStatusEnum{ // 具体实例 CREATED(0,"新建"), ASSIGNED(1,"已分配"), RECEIVE(2,"已领取"), FINISH(3,"

2022-01-21 16:51:28 170

原创 Feign远程调用

1.首先得有一个远程接口,并且这个服务得注册到注册中心。 @RestController@RequestMapping("coupon/spubounds")public class SpuBoundsController { @PostMapping("/save") public R save(@RequestBody SpuBoundsEntity spuBounds){ spuBoundsService.save(spuBounds); return R.o

2022-01-21 09:48:40 2552

原创 Nginx的proxy_set_header设置问题

Host直接访问浏览器直接访问服务器结果:浏览器访问IP+端口通过Nginx代理访问(不做任何配置)通过Nginx反向代理,不配置proxy_set_header。server { listen 8090; server_name _; location / { proxy_pass http://172.31.5.0:5000; }}结果:proxy_pass+代理端口,即代理IP+代理端口。$host设置proxy_set_hea

2022-01-19 14:21:20 11593 4

原创 JWT(JSON Web Token)

学习顺序:基于Cookie的session > token > JWT学习JWT之前,大家可以去网上查阅cookie session的区别及其原理一. 为什么要使用JWT我们传统用户认证,一般是登录之后把用户信息存到了服务器(如session中),然后发送sessionid给客户端及浏览器,用户登录之后想进行一些操作及发送请求调用API,必须携带sessionid,服务器接收...

2020-04-24 21:12:44 2590

空空如也

空空如也

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

TA关注的人

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