后端开发(偏java向)经验交流
文章平均质量分 62
开始后端的不归路咯,
xy294636185
交流加qq294636185,通信工程向,熟悉c,c++,linux系统编程,网络编程,数据库等。
展开
-
电商通用(二)
springcloud 商城项目原创 2022-08-16 08:44:46 · 590 阅读 · 0 评论 -
电商通用(一)
1.电商项目通用模板1.1电商技术特点:技术:单体架构-》微服务(dubbo+mycat)、范围:java go(服务端) python(数据分析)、分布式、高并发、集群、负载均衡、高可用、海量数据,业务复杂,系统安全1.2电商模式属术语B2B:指进行电子交易的供需双方都是商家。利用互联网完成交易。C2C:指消费者个人之间的电子商务行为。B2C、C2B同理。O2O:线上转线下F2C:厂商到消费者B2B2C:电子商务类型的网络购物商业模式(天猫)2.系统设计2.1技原创 2022-06-10 16:46:39 · 537 阅读 · 0 评论 -
IDEA连接码云(Gitee)
一、下载、安装git1.打开git官网,选择你的操作系统官网下载地址:https://git-scm.com/downloads2.根据你的系统位数选择相应的版本下载并安装系统位数一般都是64位。3.配置全局的用户名、邮箱安装完成以后,需要配置用户名、邮箱。你提交代码到别人仓库的时候总得有个身份吧?就是这个作用。就用你Gitee的注册邮箱吧。打开左下角系统菜单,找到 Git Bash ,点击打开。分别输入以下代码并回车,注意把引号中的用户名、邮箱改成你自己的。g原创 2022-05-31 14:27:15 · 1998 阅读 · 0 评论 -
SpringBoot+Quartz动态管理定时任务
前置理论:1.小顶堆(适合任务少的,因为向下调整耗费性能)堆:是一完全二叉树(除了最后一层节点其他层都达到最大节点数,且最后一层都靠左排列);堆中某个节点的值总不大于或不小于其父节点。定时任务是基于小顶堆。每一个job都对应每一个节点,节点值里面存储job的到期时间(Delay),每次取堆顶的节点去执行。插入元素:插入尾部,然后上浮(每次与n/(2^x)的位置济宁比较,时间复杂度O(log n)。删除堆顶元素:将尾部元素放到堆顶,然后下浮。第一个任务(最近)执行后(堆顶元素)就进行这个操原创 2022-04-07 23:26:45 · 5114 阅读 · 0 评论 -
springboot 基于poi的execl文件导入,导出,模板下载实现
pom: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency>原创 2022-03-29 09:16:33 · 395 阅读 · 0 评论 -
卡包项目前置内容
卡包分为商户投放子系统和用户应用子系统组成:商户投放子系统:用户应用子系统:缓存层设计:缓存使用的是Redis,其中有两类信息,首先是优惠卷PassTemplate Token的存储方案,和商户Merchants存储方案。优惠卷Token信息会有两个文件,商户上传的原始文件init和已使用的Token文件used,在系统中直接操作io文件会很慢,所以使用Redis的set结构保存优惠卷token信息。用户领取优惠卷时直接从redis中分配。商户信息使用redis保存,使用ha原创 2022-02-07 11:34:05 · 1885 阅读 · 0 评论 -
springboot与任务(异步任务,定时任务,邮件任务)
异步任务@SpringBootApplication@EnableAsync //开启异步注解功能public class SpringbootApplication { public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args); }}实现类:import org.springframework.scheduli原创 2022-01-19 16:29:31 · 316 阅读 · 0 评论 -
springboot整合ElasticSearch
检索:我们经常需要添加检索功能,开源的ElasticSearch是目前全文搜索引擎的首选,它可以快速存储,搜索和分析海量数据。Spring Boot通过整合Spring Data ElasticSearch为我们提供了非常便捷的检索功能支持。ElasticSearch是一个分布式搜索服务,提供了Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding功能,github等大型的站点也是采用Elastic Search作为其搜索服务。原创 2022-01-15 16:47:04 · 1864 阅读 · 0 评论 -
springboot消息服务中间件+RabbitMQ详解
概述:1.在应用中,可通过消息服务中间件来提升系统异步通信,扩展解耦能力2.消息服务中两个中主要概念:消息代理(message broker) 和目的地(distination)当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地3.消息队列主要有两种形式的目的地队列(queue):点对点消息通信...原创 2022-01-12 19:47:38 · 1191 阅读 · 0 评论 -
Redis缓存的使用和基于SpringBoot1.x和SpringBoot2.x的RedisCacheManager配置使用详解
* Redis是一个开源的,内存中的数据机构存储系统,它可以作为数据库,缓存和消息中间件。 * 使用:安装redis,引入redis的starter,配置redis * 原理:CacheManager == Cache 缓存组件来实际给缓存中存取数据,替换默认的SimpleCacheConfiguration * 1.引入redis的starter,容器中保存的是RedisCacheManager * 2.RedisCacheManage...原创 2022-01-12 11:17:05 · 3276 阅读 · 0 评论 -
springboot缓存使用详解
springboot缓存:1.JSR107:Java Cache定义了5个核心接口:CachingProvider,CacheManager,Cache,Entry和ExpiryCachingProvider创建配置获取控制多个CacheManager,CacheManager创建配置获取控制唯一命名的Cache,Cache是一个类似Map的数据结构并临时存储以Key为索引的值,Entry是Key-Value对,Expiry是有效期。需要导入javax.cache包<depe..原创 2021-12-29 17:10:20 · 2090 阅读 · 0 评论 -
spingboot商城购物车订单开发
订单中不可变的数据:商品的图片,收获地址订单中可变的数据:状态原创 2021-12-23 18:15:55 · 1192 阅读 · 0 评论 -
高并发下jmeter性能压测及性能提升解决方案(十)防刷限流
验证码生成与验证技术包装秒杀令牌前置,需要验证码来错峰。代码:生成验证码package com.miaoshaProject.util;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.awt.image.RenderedImage;import java.io.FileOutputStream;import java.io.IOEx..原创 2021-08-11 18:59:56 · 566 阅读 · 0 评论 -
高并发下jmeter性能压测及性能提升解决方案(九)流量削峰技术
抛缺陷秒杀下单接口会被脚本不停的刷;秒杀验证逻辑和秒杀下单接口强关联,代码冗余度高;秒杀验证逻辑复杂,对交易系统产生无关联负载。秒杀令牌的原理和使用秒杀接口需要依靠令牌才能进入。秒杀的令牌由秒杀活动模块负责生成。秒杀活动模块对秒杀令牌生成全权处理,逻辑收口。秒杀下单前需要先获得秒杀令牌。代码:生成秒杀令牌:@Servicepublic class PromoServiceImpl implements PromoService { @Override原创 2021-08-10 19:06:02 · 250 阅读 · 0 评论 -
高并发下jmeter性能压测及性能提升解决方案(八)缓存库存+RocketMQ异步同步数据+一致性事务型消息
交易优化技术之缓存库存7-1原创 2021-08-02 19:31:29 · 900 阅读 · 0 评论 -
springboot基于自定义注解的权限配置AOP+鉴权
WebMvcConfiguration.javapackage com.fii.cms.web.config;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframewo原创 2021-08-02 18:35:53 · 487 阅读 · 0 评论 -
高并发下jmeter性能压测及性能提升解决方案(七)静态请求CDN
6-1原创 2021-07-26 19:54:28 · 948 阅读 · 0 评论 -
高并发下jmeter性能压测及性能提升解决方案(六)查询优化之多级缓存:nginx lua(脏读忍受)
nginx lua原创 2021-07-20 19:50:38 · 453 阅读 · 0 评论 -
高并发下jmeter性能压测及性能提升解决方案(五)查询优化之多级缓存:nginx proxy cache缓存(优化效果不好)
nginx proxy cache缓存由之前的缓存把我们TPS提升到了3K,但是观察下图可以看出若将缓存不在程序中启动,因为对应的程序要经过对应j2ee的容器的springServlet的dispatcherServlet来进行转发,总会产生一些消耗,而且对应nginx还有局域网连接,那我们可以将对应的缓存直接在nginx上做,因为nginx是对H5用户最近的节点。nginx proxy cache使用条件:1.nginx反向代理前置2.依靠文件系统存索引级的文件3...原创 2021-07-20 19:49:41 · 390 阅读 · 1 评论 -
高并发下jmeter性能压测及性能提升解决方案(四)查询优化之多级缓存:本地数据热点缓存
多级缓存第二级:本地数据热点缓存原创 2021-07-19 19:26:47 · 302 阅读 · 0 评论 -
高并发下jmeter性能压测及性能提升解决方案(三)查询优化之多级缓存:Redis+配置
由之前并发场景下我们发现大多数请求耗时都集中在数据库查询上,所以要缩短响应时间,我们就必须优化查询机制,使用跟高效快速的多级缓存技术。缓存设计原则:1.用快速存取设备,用内存,但是缺点就是断电即丢失2.将缓存推到离用户最近的地方3.脏缓存清理(同步缓存策略)多级缓存:一级:redis缓存二级:热点内存本地缓存三级:nginx proxy cache缓存四级:nginx lua缓存一级:redis缓存:Nosql模型数据库,作为消息集中式缓存中间件,使用Key-Va原创 2021-07-17 12:20:21 · 706 阅读 · 1 评论 -
springboot+jpa整合多(mysql+oracle+mongo)数据源用自定义注解方式+aop+动态数据库绑定实现
配置类:application.properties:spring: datasource: default: //默认数据源 username: ${MYSQL_USER} password: ${MYSQL_PASSWORD} jdbc-url: jdbc:mysql://${MYSQL_ADDRESS}/${MYSQL_DB}?useSSL=false&useUnicode=true&characterEncoding=utf原创 2021-07-16 18:28:43 · 928 阅读 · 1 评论 -
分布式会话和基于TOKEN的分布式会话
**单机会话管理:1.基于cookie传输的sessionId:在java tomcat容器session实现http请求会有一个Session会话管理机制,用来标识用户会话的过程,默认使用的是springboot内嵌的httpSession的实现机制,这个tomcat协议实现是基于cookie传输sessionId的方式来完成容器的实现。比如我们使用HttpServletRequest.getSession().getAttribute(telephone,otpCode);去存储用户获取验证原创 2021-07-14 20:23:13 · 751 阅读 · 2 评论 -
springboot整合配置Redis单节点,集群,哨兵
springboot2.x其中使用的是Lettuce。pom文件: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependen.原创 2021-07-14 16:09:04 · 1247 阅读 · 0 评论 -
nginx高性能原因:epoll,master-worker模型,协程(预留)
epoll多路复用:发展历程: 1.java bio模型:阻塞进程式,只有等socket写完后才返回 2.linux select多路复用模型:变更出发轮询查找,有1024数量上限 3.epoll模型:变更触发回调直接读取,不需要server去遍历连接,无上限在JDK2.6以上,JRE会将select模型直接转成epoll模型,以下用select模型,基于nio框架的netty就是基于javaNIO的epoll实现的。mas...原创 2021-07-13 19:44:37 · 312 阅读 · 0 评论 -
高并发下jmeter性能压测及性能提升解决方案(二)nginx反向代理负载均衡
单机容量问题: 随着并发量提高,单机cpu使用率增高,memory占用增加,网络带宽使用增加。解决:需要水平扩展,做nginx反向代理+负载均衡策略,把同一个域名代理到多个不同的application服务器上。就要把后端的tomcat服务器集群以一个统一的域名暴露出去。 如上图架构,就需要四台虚拟机来做水平扩展,一台用于nginx反向代理,一台用于mysql,两台用于jar。注意设置数据库的远程访问权限:grant all privileges o...原创 2021-07-12 19:35:04 · 1324 阅读 · 0 评论 -
高并发下jmeter性能压测及性能提升解决方案(一)tomcat基础优化
Jmeter工具使用:下载地址:jmeter.apache.org常用命令设置:查看服务进程:ps -ef | grep java查看端口:netstat -anp | grep (port)修改host:sudo vim //etc/hosts(用于dns解析,修改服务映射地址)线程组: 可以创建线程组。上图表示在10s中开启100个线程,每个线程调用10次接口。Http请求: 在线程组下设置Http请求。上图表示使用h...原创 2021-07-12 18:54:21 · 1547 阅读 · 4 评论 -
java-spring PDF报表生成方式
java常见的PDF形式报表导出一般有两种形式:1.iText iText是用关于生成PDF文档的一个java类库。通过i原创 2021-06-20 23:34:47 · 739 阅读 · 0 评论 -
基于spring-security框架的权限控制+注解方式设置权限
一般需要4张基础表和3张对应关系表。菜单表 对应角色关系用Set表示:/** * 菜单 */public class Menu implements Serializable { private Integer id; private String name; //菜单名称 private String linkUrl; //访问路径 private String path; //菜单项对应的路由路径 private Integer priorit原创 2021-06-14 22:12:43 · 1506 阅读 · 1 评论 -
基于阿里云的java短信预约及登录功能实现
阿里云短信服务介绍:java代码:pom.xml <!--阿里短信通知--> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.3.1</version>原创 2021-06-10 23:53:38 · 318 阅读 · 0 评论 -
spring整合POI批量导入导出文件读取
POI结构: HSSF:提供读写Microsoft Excel XLS格式档案的功能 XSSF:提供读写Microsoft Excel OOXML XLSX格式档案的功能 HWPF:提供读写Microsoft Word DOC格式档案的功能 HSLF:提供读写Microsoft PowerPoint格式档案的功能 HDGF:提供读写Microsoft Visio格式档案的功能 HPBF:提供读写Microsoft Publisher格式档案的功能...原创 2021-06-08 00:16:48 · 285 阅读 · 0 评论 -
java线上文件图片资源存储方案,定时清理垃圾文件
常见的图片存储方案:1.使用nginx搭建图片服务器2.使用开源的分布式存储系统,例如Fastdfs,HDS等3.使用云存储,例如阿里云,七牛云等在实际的开发中,我们会有很多处理不同功能的服务器,例如:应用服务器:负责部署我们的应用数据库服务器:运行我们的数据库文件服务器:负责存储用户上传文件的服务器一下以使用云服务器为例:spring配置:<!--文件上传组件--><bean id="multipartResolver" class="org.s原创 2021-06-06 22:56:29 · 1413 阅读 · 0 评论 -
MyBatis generator自动生成器详解
pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4..原创 2021-06-03 14:06:14 · 217 阅读 · 0 评论 -
SpringCloud(八) 微服务安全实战 Prometheus配置grafana可见性监控,ELK日志,pinpoint追踪(Tracing,Metrics,Logging)
Metrics:按照时间维度聚合各个参数,以数字形式呈现出来(次高)Logging:描述离散的,不连续的事件,以文字的形式呈现(重要)Tracing:针对单次请求追踪发生了什么事情(低)Docker入门: 与java比较: 详细比较见:dockerprometheus环境搭建: 入门详见:普罗米修斯 创建monitoring文件夹,创建对应grafana和prometheus文件夹存放对应的配置文件prometheus.yml //告诉pr...原创 2021-05-25 19:20:06 · 1853 阅读 · 0 评论 -
SpringCloud(七) 微服务安全实战 Sentinel限流
123原创 2021-05-24 19:49:44 · 181 阅读 · 2 评论 -
SpringCloud(六) 微服务安全实战 JWT认证
前后端分离的微服务间安全通讯:之前的认证方式存在三个问题: 1.效率低,每次认证都需要去认证服务器去调用认证服务 2.不安全,传递用户身份是通过在请求头中通过明文传递 3.服务间传递信息比较麻烦,需要在请求头中存储用户信息才能处理以上问题解决方案就需要使用JWT。JWT(Java Web Token): code: 在auth服务器中修改/** * @author aric * @create 2021-04-06-10:54...原创 2021-05-24 14:52:50 · 556 阅读 · 1 评论 -
spring-security配置基于Spring&&springboot
spring:目录:code:pom: <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.5.RELEASE</vers原创 2021-04-25 22:39:45 · 189 阅读 · 0 评论 -
java 基于session的权限认证方式
目录结构:code:pom.xml <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.5.RELEASE</version&原创 2021-04-25 21:18:26 · 506 阅读 · 0 评论 -
SpringCloud(五) 微服务安全实战 基于session和Token的sso
基于Session的SSO:客户端应用的session有效期,控制多长时间跳转一次认证服务器 客户端退出,认证服务器任然保留登录session状态,不会完全退出,前端退出后,要跳转到认证服务器上退出接口同时退出,下次登录认证服务器也需要跳转登录@componentpublic class OAuth2LogoutSuccessHandler implements LogoutSuccessHandler{ @override public void onLogoutSu..原创 2021-04-15 17:19:54 · 615 阅读 · 0 评论 -
SpringCloud(四) 微服务安全实战 环境认证和OAuth四种认证模式
前后端分离: | 进化 |架构图:...原创 2021-04-12 11:17:17 · 335 阅读 · 1 评论