自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Https加密过程

Https加密过程

2022-09-01 17:48:07 1213 1

原创 数据库与redis缓存一致性问题

数据库与redis缓存一致性问题

2022-09-01 17:45:02 276

原创 代码分析sychronied和Mark Word的关系

锁状态升级过程为:无锁状态--> 偏向锁状态--->轻量级锁状态--->重量级锁状态

2022-08-03 10:48:22 314

原创 多线程模型下的生产者消费者模式

多线程模型下的生产者消费者模式

2022-06-01 16:13:09 210

原创 lambda表达式与流优化代码

lambda表达式与流优化代码1 代码应用示例java8以前对集合进行排序用得比较多的,比如需要按照某个集合的时间对集合进行排序Collections.sort(payList, new Comparator<ErpContractPay>() { @Override public int compare(ErpContractPay o1, ErpContractPay o2) { System.out.pr

2022-05-30 13:06:58 235

原创 建立高可用的数据库

数据库性能优化1、主从模式1.1、为什么要设置主从同步读写分离,减轻数据库负担。在开发工作中,有时候会遇见某个sql 语句需要锁表,导致暂时不能使用读的服务,这样就会影响现有业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作数据库实时备份。当系统中某个节点发生故障时,可以方便的故障切换(主从切换)。高可用随着系统中业务访问量的增大,如果是单机部署数据库,就会导致I/O访问频率过高。有了主从复制,增加多个数据存储节点,将负载分布在多个

2022-05-27 14:55:09 230

原创 JVisualVM初步使用

Jconsole: 为jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。JProfiler:商业软件,需要付费。功能强大。VisualVM:JDK自带,功能强大,与JProfiler类似。其能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈等功能。

2022-05-26 21:33:02 4466

原创 分布式事务--seata初步使用

分布式事务seata基本使用官网连接:https://seata.io/zh-cn/,推荐看一下官方文档,比绝大多数的seata使用案例更清晰明了。1、下载安装下载链接:https://github.com/seata/seata/releases/tag/v1.4.22、注册中心与配置中心配置下载后,在conf文件夹下的registry.conf配置注册中心。以nacos注册中心为例,配置ip端口,以及nacos的用户名与密码。(使用其他的注册中心类似配置ip、port、用户名、密码)reg

2022-05-17 13:55:45 617

原创 一致性协议比较

常见的一致性协议 有二阶段提交(2PC)、三阶段提交(3PC)、Paxos、Raft等算法,在本文将介绍他们中的一部分。2PC2PC即Two-Phase Commit,二阶段提交。广泛应用在数据库领域,为了使得基于分布式架构的所有节点可以在进行事务处理时能够保持原子性和一致性。绝大部分关系型数据库,都是基于2PC完成分布式的事务处理。顾名思义,2PC分为两个阶段处理,阶段一:提交事务请求事务询问。协调者向所有参与者发送事务内容,询问是否可以执行提交操作,并开始等待各参与者进行响应;执行事务

2022-05-10 15:22:33 300

原创 微服务部署,前端post请求出现UTF-8错误

一、问题描述:技术栈:nacos,gateway,security,auth2,swagger,mybatis,Spring Boot、Spring Cloud & Alibaba、Vue、Element环境:JDK >= 1.8 (推荐1.8版本)Mysql >= 5.7.0 (推荐5.7版本)Redis >= 3.0Maven >= 3.0Node >= 12nacos >= 2.x.x sentinel >= 1.6.0本地在id

2022-04-21 13:25:12 4225 1

原创 并发编程---写入时复制COW

写入时复制(copy on write)作为使用频率很高的List和Set,JUC提供了相应的线程安全集合,就是Copy-On-Write。分别为CopyOnWriteArrayList和CopyOnWriteArraySet。1、应用场景Copy-On-Write并发容器用于读多写少的并发场景。比如Nacos的注册中心同步方式,用的是copyonwrite,就是复制一份副本,写入后直接替换。注册中心的实时性并没有那么高,所以使用cow来保证数据的一致性。Redis的COWRedis在

2022-04-16 13:32:39 915

原创 日常小习惯养成

1.日常小习惯—转换时间将前台传递过来的日期格式的字符串,自动转化为Date类型public class BaseController { protected final Logger logger = LoggerFactory.getLogger(this.getClass()); /** * 将前台传递过来的日期格式的字符串,自动转化为Date类型 */ @InitBinder public void initBinder(WebDataBind

2022-04-06 21:28:59 139

原创 erp微服务项目---nacos数据库池化

1、配置系统环境nacos,redis,node,jdk,maven,mysql等2、配置nacos的持久化数据库在nacos文件目录下,nacos->data->config-data文件夹下,保存着对nacos的配置信息,但是删除掉data文件夹,nacos的配置信息就会丢失掉,此时如果能将nacos的配置信息存储到数据库中,那么就算data文件夹丢失,nacos的配置信息仍然存在。2.1 导入Nacos数据库依赖的sql文件导入nacos 解压包下cofig目录下的nacos-m

2022-04-05 17:20:22 1368

原创 security初步使用(2)

6 web权限方案认证授权6.1 设置登录的用户名和密码方式1:配置文件spring: datasource: url: jdbc:mysql://xxx.xx.xx.xx:xxxx/xxxx?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 usernam

2022-04-03 20:23:36 1040

原创 Security初步使用

1.添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>2.启动时会提供一个默认密码[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SH8php0b-1648975626290)(C

2022-04-03 16:48:52 2885

原创 @PostConstruct注解----解决非service层注入service的空指针问题

@PostConstruct注解----解决非service层注入service的空指针问题Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:Constructor(构造方法) -> @Auto

2022-03-30 16:02:49 1271

原创 java(springboot)+elementui实现多文件上传到本地服务器

java(springboot)+elementui实现多文件上传到本地服务器垃圾代码,自行理解1 java1.1 yml配置(properties同)max-xxx-xxx设置文件最大接受值# Springspring: servlet: multipart: enabled: true max-file-size: 200MB max-request-size: 200MB1.2 controllerMultipartFile为文件,其他

2022-03-30 10:38:17 677

原创 java+vue多文件打包zip下载

java+vue实现多文件打包下载前端传过下载文件编号,在数据库中根据编号查出对应文件存储的路径,根据路径将文件写入到HttpServletResponse中,设置文本传输类型为二进制流response.setContentType("APPLICATION/OCTET-STREAM"),将其返回给前端。1.java后台1.1.controller@GetMapping("/download/{contractId}") public void download(@PathVariable(

2022-03-30 00:03:52 696 4

原创 按时间区间查询数据,并取interval间隔时间的第一条

1、按时间区间查询数据,并取interval间隔时间的第一条用多了MP,mybatis语句的这种sql语句不太熟练,记录一下需求:接口说明:查询某一条船的历史轨迹地址:GET /xxxx/xxxx/xxxx参数:参数名类型说明范围是否必需shipName字符串船名“001”-”100”是date时间戳日期最近一周的某一天,默认当日的前一天否interval字符串时间间隔“1”-”60”,默认间隔5分钟,最短间隔1分钟,最长间隔60分钟

2022-03-28 15:02:03 641

原创 Redis指令

1.基于内存的key-value数据库2.基于c语言编写的,可以支持多种语言的api //set每秒11万次,取get 81000次3.支持数据持久化4.value可以是string,hash, list, set, sorted set使用场景去最新n个数据的操作排行榜,取top n个数据 //最佳人气前10条精确的设置过期时间计数器实时系统, 反垃圾系统pub, sub发布订阅构建实时消息系统构建消息队列缓存cmd访问redisredis-cli.exe -h 127.0

2022-02-24 16:37:44 77

原创 linkedblockingqueue使用_Executors使用不当引起的内存泄漏

线上服务内存溢出这周刚上班突然有一个项目内存溢出了,排查了半天终于找到问题所在,在此记录下,防止后面再次出现类似的情况。先简单说下当出现内存溢出之后,我是如何排查的,首先通过jstack打印出堆栈信息,然后通过分析工具对这些文件进行分析,根据分析结果我们就可以知道大概是由于什么问题引起的。关于jstack如何使用,大家可以先看看这篇文章 jstack的使用问题排查下面是我打印出来的信息,大部分都是这个"http-nio-8761-exec-124" #580 daemon prio=5 os_p

2022-02-23 09:56:20 1831

原创 从零开始创建微服务-OAuth2-day9

12 用户认证与网关整合所有请求都会经过服务网关,服务网关对外暴露服务,在网关进行统一用户认证,然后网关再下发至服务;既然要在网关进行用户认证,网关得知道对那些url进行认证,所以需要对url进行规则制定;api接口是异步请求的,我们采取url规则进行匹配,如/api/*/auth/*,凡是满足该规则的用户都需要进行认证。12.1 调整service-gateway模块在service-gateway模块中新建filter包,创建AuthGlobalFilter类@Compon

2021-12-28 16:01:41 187

原创 从零开始创建微服务-阿里云短信-day8

10 短信服务使用阿里云短信服务发送短信登录验证码10.1 配置文件# \u670D\u52A1\u7AEF\u53E3server.port=8204# \u670D\u52A1\u540Dspring.application.name=service-msm#\u8FD4\u56DEjson\u7684\u5168\u5C40\u65F6\u95F4\u683C\u5F0Fspring.jackson.date-format=yyyy-MM-dd HH:mm:ssspring.jac

2021-12-27 16:32:36 1358

原创 从零开始创建微服务-JWT生成Token-day7

9 登录登录需求分析:登录采取弹出层的形式登录方式:第一种:手机号+验证码、第二种:微信扫码登录无注册页面、第一次登录根据手机号判断系统是否存在,如果不存在则自动注册微信扫描登录成功必须绑定手机号码,即:第一次扫描成功后绑定手机号,以后登录扫描直接成功网关统一判断登录状态,如何需要登录,页面弹出登录层9.1 环境搭建在后台创建登录服务子模块,在service模块下新建子模块service-user登录模块,配置好相关依赖pom和配置文件application.properties。#

2021-12-24 15:23:42 533

原创 从零开始创建微服务-服务端渲染技术SSR-day6

8 服务端渲染技术SSR8.1 什么是SSR服务端渲染广义的说,只要是在服务器端生成完整的html的方式,都可以算作服务器端渲染。只是这种说法,在前后端完全分离之前,似乎也没人提及。因为很普遍嘛。后来前后端完全分离了,完整的html是在前端生成,后端不管了。于是产生一个小问题,搜索引擎不识别!如果项目还必须支持SEO,那么怎么办?写两套代码?还是放弃前后端分离的方案?于是前后端分离的方案里面,出现了一种“后端渲染”的技术方案。你用前后端分离的方式做项目,一般情况下完整的html是由前端实现,特殊情况(比

2021-12-23 17:16:02 679

原创 定时任务注解@Scheduled

定时任务@Scheduling一、静态----基于注解(@Scheduled)实现定时任务@Component@Configuration //1.主要用于标记配置类,兼备Component的效果。@EnableScheduling // 2.开启定时任务public class SaticScheduleTask { //3.添加定时任务 @Scheduled(cron = "0/5 * * * * ?") //或直接指定时间间隔,例如:5秒 //@

2021-12-23 15:42:10 4714 1

原创 redis笔记(待修改)

0.序章Redis是一个内存数据库(或者说内存数据结构)服务器,可以存储5种不同键值对的数据。热点数据,共享session,为的是服务无状态0.1 什么时候使用Redis缓存0.1.1 什么数据可以放缓存不需要实时更新但是又极其消耗数据库的数据。比如网站上商品销售排行榜,这种数据一天统计一次就可以了,用户不会关注其是否是实时的。需要实时更新,但是更新频率不高的数据。比如一个用户的订单列表,他肯定希望能够实时看到自己下的订单,但是大部分用户不会频繁下单。在某个时刻访问量极大而且更新也

2021-12-23 15:40:15 741

原创 Netty学习

Netty深入浅出第一章 Netty——异步和事件驱动1、引入——NIO和IO哪家强1、1 传统阻塞IO连接方式及存在的问题[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-65z9zhuQ-1640245095470)(C:\Users\ASVS\AppData\Roaming\Typora\typora-user-images\image-20210730171911124.png)]​ 阻塞IO,只能同时处理一个连接,要管理多个并发客户端,需要为每个新的客户端

2021-12-23 15:37:47 434

原创 MQ学习深入浅出

0、MQ概述0.1 什么是消息队列(消息中间件)消息队列是 应用程序 和 应用程序之间 的通信方法。即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。rabbitmq的基本结构Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue。Exchange:消息队列交换机,按一定的规则将消息路由转发到

2021-12-23 15:37:11 1554

原创 数据库刷题

第一章 sql刷题1.如何查找第2高的数据?1) limit字句的用法2) ifnull的用法题目:编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。IdSalary110022003300例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。SecondHighestSalary200答案:select ifNul

2021-12-23 15:35:43 163

原创 设计模式相关内容介绍

1、设计模式相关内容介绍1.1、 设计模式概述创建型模式--------买建筑材料用于描述------怎样创建对象,它的主要特点是----------将对象的创建与使用分离,这样可以降低系统的耦合度,使用者不需要关心对象的创建细节。单例、原型、工厂、抽象工厂、建造者模式结构型模式--------用建筑材料搭房用于描述如何将类和对象按照某种布局组成更大的结构,代理、适配器、桥接、装饰、外观、享元、组合行为型模式用于描述类和对象之间怎样相互协作共同完成单个对象无法单独完成的任务模

2021-12-23 15:34:39 399

原创 war包部署问题

war包部署问题使用war包部署使用外置Servlet容器,相比于jar包运行项目需要配置一些额外的信息。步骤:1 必须创建war项目,需要建好web项目的目录结构2 pom文件,package应该改为war,并且嵌入式Tomcat依赖scope指定provided3 编写SpringBootServletInitializer类子类,并重写configure方法@SpringBootApplicationpublic class FileuploadApplication extends Sp

2021-12-23 15:33:15 312

原创 git常用相关指令

gitee\gitlab\github通用,使用git前提需要配置好密钥,https://www.cnblogs.com/xiuxingzhe/p/9303278.html感觉IDEA初始化项目挺复杂,不如敲命令行代码快捷查询远程仓库git remote -vgit remote show origin删除指定仓库git remote rm origin修改远程仓库git remote set-url origin <remote-url>添加远程仓库git remo

2021-12-23 14:10:46 66

原创 从零开始创建微服务-gateway-day5

7 服务网关API网关出现的原因是徽服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各众.微服务通信,会有以下的问题:客户端会多次请求不同的微服务,增加了客户端的复杂性。存在跨域请求,在一定场景下处理相对复杂。认证复杂,每个服务都需要独立认证。难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很难实施。某些微服务可能使

2021-12-22 16:54:51 155

原创 从零开始创建微服务-nacos-day4

6 Nacos启动6.0 Nacos简单介绍不同模块调用不同模块之间的数据,我们的架构是基于微服务的,此时就需要用到注册中心与服务调用,把我们的微服务各模块注册到注册中心。注册中心选用Nacos。Nacos详细介绍移步https://www.cnblogs.com/crazymakercircle/p/14231815.html(醍醐灌顶)。为什么选用Nacos作为注册中心呢?先看看cap模型6.0.1 cap模型CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency

2021-12-22 15:02:38 333

原创 从零开始创建微服务-nosql-day3

5 Nosql5.1 nosql特点Nosql为非关系型数据库,相比于传统的关系型数据库来说,在面对高并发时候会出现一些问题,非关系型数据库对于解决高并发来说,非常有优势。MongoDB是一个基于分布式文件存储的开源数据库系统。为什么使用nosql:对数据库高并发读写对海量数据高效率存储和访问对数据库的高扩展性和高可用性弱点:数据库事务一致性需求数据库写实时性和读实时性需求对于复杂的sql查询,特别是多表关联查询需求5.2 MongoDB特点MongoDB是一个面向文档存储

2021-12-20 14:55:05 368

原创 从零开始创建微服务-跨域、缓存-day2

2 搭建前端环境2.1 npm(yarn也可以)管理环境2.2 存在问题1.后端有多个端口,前端该怎么访问不同的端口呢?nginx做转发2.跨域问题只有协议、ip、端口号有任一不同,就叫做跨域;存在跨域问题在Controller上加上@CrossOrigin注解便可以解决问题。比如前端医院设置从8201端口访问,但是数据字典从8202访问,数据字典的controller中就应该加上@CrossOrigin注解,以便启用CORS(默认情况下,@CrossOrigin允许在@RequestMap

2021-12-20 14:07:06 962

原创 从零开始创建微服务-项目结构搭建-day1

1 搭建项目后端环境1.1 微服务模块搭建1.1.1 构建父工程创建一个springboot项目,在pom文件中添加<packaging>pom</packaging>[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eaa9Vaxs-1639388974390)(C:\Users\1234\AppData\Roaming\Typora\typora-user-images\image-20211209143903804.png)]父工程主要

2021-12-13 17:53:03 585

原创 java中的自动装箱与拆箱全解析

1、自动装箱与自动拆箱​ (1)在 java中,数据类型分为两大类:基本类型和引用类型。​ 基本类型是数值不是对象,不能调用对象的toString(O.hashCode ()、getClass()、equals()等方法。​ (2)定义:拆箱和装箱使非人为的,自动装箱能在java中将基本类型转换为引用类型,比如int值转为Integer 对象,反之为拆箱。​ (3)拆箱和装箱的基本类型:byte、short、 int、long、float、 double、boolean、char。分别装箱为Byte

2021-11-07 15:05:52 630

原创 枚举模式进阶---Java之父James Gosling推荐的文章

写在前面:看了《effective java》书中对枚举的叙述,有一种茅塞顿开的感觉,分享一下。作者为Joshua Bloch.原文链接取自于博主colored glaze,文章末尾附带了原文的链接。​ 枚举类型(enum type)是指由一组固定的常量组成合法值的类型,例如一年中的季节、太阳系中的行星或者一副扑克牌中的花色。在编程语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具名的int常量,没个类型成员一个常量:// The int enum pattern - severely

2021-10-27 21:22:24 216

空空如也

空空如也

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

TA关注的人

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