当前位置: 首页 > news >正文

中国有什么网站做跨境零售网站的二维码怎么变小

中国有什么网站做跨境零售,网站的二维码怎么变小,清爽帝国cms,网站开发引用思源黑体目录 1. 热点数据缓存 1.1 什么是缓存#xff1f; 1.2 缓存的原理 1.3 什么样的数据适合放入缓存中 1.4 哪个组件可以作为缓存 1.5 java使用redis如何实现缓存功能 1.5.1 需要的依赖 1.5.2 配置文件 1.5.3 代码 1.5.4 发现 1.6 使用缓存注解完成缓存功能 2. 分布式锁…目录 1. 热点数据缓存 1.1 什么是缓存 1.2 缓存的原理 1.3 什么样的数据适合放入缓存中 1.4 哪个组件可以作为缓存 1.5 java使用redis如何实现缓存功能 1.5.1 需要的依赖 1.5.2  配置文件 1.5.3 代码 1.5.4 发现 1.6 使用缓存注解完成缓存功能 2. 分布式锁 2.1模拟高并发 2.2 使用syn和lock锁 2.3 模拟多服务器 2.4 nginx代理集群 2.5 使用redis解决分布式锁文件 1. 热点数据缓存 1.1 什么是缓存 为了把一些经常访问的数据放入缓存中以减少对数据库的访问频率。从而减少数据库的压力提高程序的性能。内存中存储 1.2 缓存的原理 1.3 什么样的数据适合放入缓存中 查询频率高且修改频率低 数据安全性低 1.4 哪个组件可以作为缓存 redis组件memory组件ehcache组件 1.5 java使用redis如何实现缓存功能 1.5.1 需要的依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.3/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency 1.5.2  配置文件 server.port8080#数据源 spring.datasource.driver-class-namecom.mysql.jdbc.Driver spring.datasource.urljdbc:mysql://localhost:3306/1suo?useUnicodetruecharacterEncodingutf-8useSSLfalse spring.datasource.usernameroot spring.datasource.password12345678#mybatisplus的sql日志 mybatis-plus.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl #mapper映射文件 mybatis-plus.mapper-locationsclasspath*:mapper/*.xml#redis配置 spring.redis.host172.16.7.192 spring.redis.port6379 spring.redis.database1 1.5.3 代码 控制层 package com.ls.controller;import com.ls.entity.Clazz; import com.ls.service.ClazzService; import com.ls.vo.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;/*** program: springboot-redis-cache* description:* author: 1suo* create: 2024-07-24 19:56**/ RestController RequestMapping(clazz) public class ClazzController {Autowiredprivate ClazzService clazzService;DeleteMapping(delete)public R delete(Integer id) {return clazzService.delete(id);}GetMapping(get)public R get(Integer id) {return clazzService.get(id);}GetMapping(getAll)public R getAll() {return clazzService.getAll();}PostMapping(save)public R save(RequestBody Clazz clazz) {return clazzService.save(clazz);}PutMapping(update)public R update(Clazz clazz) {return clazzService.update(clazz);} }业务层 package com.ls.service.impl;import com.ls.dao.ClazzDao; import com.ls.entity.Clazz; import com.ls.service.ClazzService; import com.ls.vo.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import sun.dc.pr.PRError;import java.util.ArrayList; import java.util.List;/*** program: springboot-redis-cache* description:* author: 1suo* create: 2024-07-24 19:57**/ Service public class ClazzServiceImpl implements ClazzService {Autowiredprivate ClazzDao clazzDao;Autowiredprivate RedisTemplateString, Object redisTemplate;Overridepublic R save(Clazz clazz) {int insert clazzDao.insert(clazz);return new R(200,保存成功,clazz);}Overridepublic R update(Clazz clazz) {int update clazzDao.updateById(clazz);if (update0){redisTemplate.opsForValue().set(clazz:: clazz.getCid(),clazz);}return new R(200,更新成功,clazz);}Overridepublic R delete(Integer id) {int delete clazzDao.deleteById(id);if (delete0){redisTemplate.delete(clazz:: id);}return new R(200,删除成功,id);}Overridepublic R get(Integer id) {ValueOperationsString, Object forValue redisTemplate.opsForValue();Object o forValue.get(clazz:: id);if(o!null){return new R(200,查询成功,(Clazz)o);}Clazz clazz clazzDao.selectById(id);if (clazz!null){forValue.set(clazz:: id,clazz);}return new R(500,查询成功,clazz);}Overridepublic R getAll() {ListClazz list clazzDao.selectList(null);return new R(200,查询成功,list);} }dao层 package com.ls.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ls.entity.Clazz;/*** program: springboot-redis-cache* description:* author: 1suo* create: 2024-07-25 08:41**/ public interface ClazzDao extends BaseMapperClazz { }实体类 package com.ls.entity;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;/*** program: springboot-redis-cache* description:* author: 1suo* create: 2024-07-24 19:56**/ Data NoArgsConstructor AllArgsConstructorTableName(tbl_clazz) public class Clazz {TableId(type IdType.AUTO)private Integer cid;private String cname; }配置类 package com.ls.config;import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;Configuration public class RedisConfig {Beanpublic RedisTemplateString,Object redisTemplate(RedisConnectionFactory factory){RedisTemplateString, Object template new RedisTemplate();//创建redisTemplate对象StringRedisSerializer serializer new StringRedisSerializer();//字符串序列化对象Jackson2JsonRedisSerializer jackson2JsonRedisSerializer new Jackson2JsonRedisSerializer(Object.class);//Jackson的序列化对象ObjectMapper om new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);template.setConnectionFactory(factory); // key序列化方式template.setKeySerializer(serializer); // value序列化template.setValueSerializer(jackson2JsonRedisSerializer); // value hashmap序列化template.setHashValueSerializer(jackson2JsonRedisSerializer);template.setKeySerializer(serializer);return template;} }MapperScan(com.ls.dao) 注解将dao层自动代理为Mapper代理对象。 1.5.4 发现 业务层代码除了要维护核心业务功能外额外还要维护缓存的代码。 解决: 使用AOP面向切面编程。spring框架用aop切面实现 1.6 使用缓存注解完成缓存功能 必须spring缓存使用的组件。  config:为解决序列化的问题 Beanpublic CacheManager cacheManager(RedisConnectionFactory factory) {RedisSerializerString redisSerializer new StringRedisSerializer();Jackson2JsonRedisSerializer jackson2JsonRedisSerializer new Jackson2JsonRedisSerializer(Object.class);//解决查询缓存转换异常的问题ObjectMapper om new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);// 配置序列化解决乱码的问题,过期时间600秒RedisCacheConfiguration config RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(600)) //缓存过期10分钟 ---- 业务需求。.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))//设置key的序列化方式.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)) //设置value的序列化.disableCachingNullValues();RedisCacheManager cacheManager RedisCacheManager.builder(factory).cacheDefaults(config).build();return cacheManager;} 开启缓存注解 使用 package com.ls.service.impl;import com.ls.dao.ClazzDao; import com.ls.entity.Clazz; import com.ls.service.ClazzService; import com.ls.vo.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.EnableCaching; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import sun.dc.pr.PRError;import java.util.ArrayList; import java.util.List;/*** program: springboot-redis-cache* description:* author: 1suo* create: 2024-07-24 19:57**/ Service public class ClazzServiceImpl implements ClazzService {Autowiredprivate ClazzDao clazzDao;Autowiredprivate RedisTemplateString, Object redisTemplate;Overridepublic R save(Clazz clazz) {int insert clazzDao.insert(clazz);return new R(200,保存成功,clazz);}CachePut(cacheNames clazz, key #clazz.cid)Overridepublic Clazz update(Clazz clazz) {int update clazzDao.updateById(clazz);return clazz;}CacheEvict(cacheNames clazz, key #id)Overridepublic R delete(Integer id) {int delete clazzDao.deleteById(id);return new R(200,删除成功,id);}Cacheable(cacheNames clazz, key #id)Overridepublic Clazz get(Integer id) {Clazz clazz clazzDao.selectById(id);return clazz;}Overridepublic R getAll() {ListClazz list clazzDao.selectList(null);return new R(200,查询成功,list);} }2. 分布式锁 2.1模拟高并发 使用jmeter压测工具 第一步 第二步 第三步 通过压测发现库存超卖和重卖了解决办法使用锁。 2.2 使用syn和lock锁 public String decrement(Integer productid) {//根据id查询商品的库存int num stockDao.findById(productid);synchronized (this) {if (num 0) {//修改库存stockDao.update(productid);System.out.println(商品编号为: productid 的商品库存剩余: (num - 1) 个);return 商品编号为: productid 的商品库存剩余: (num - 1) 个;} else {System.out.println(商品编号为: productid 的商品库存不足。);return 商品编号为: productid 的商品库存不足。;}}} 上面使用syn和lock虽然解决了并发问题但是我们未来项目部署时可能要部署集群模式。 2.3 模拟多服务器 点击增加一个服务器同时启动后实现模拟多服务器。 下面是服务器配置。 启动俩个服务器 2.4 nginx代理集群 下载window版本的nginx实现代理集群。 nginx.conf配置文件 通过压测发现本地锁 无效了使用redis解决分布式锁文件。 2.5 使用redis解决分布式锁文件 核心代码 Service public class StockService {Autowiredprivate StockDao stockDao;Autowiredprivate RedissonClient redisson;//public String decrement(Integer productid) {RLock lock redisson.getLock(product:: productid);lock.lock();try {//根据id查询商品的库存: 提前预热到redis缓存中int num stockDao.findById(productid);if (num 0) {//修改库存---incr---定时器[redis 数据库同步]stockDao.update(productid);System.out.println(商品编号为: productid 的商品库存剩余: (num - 1) 个);return 商品编号为: productid 的商品库存剩余: (num - 1) 个;} else {System.out.println(商品编号为: productid 的商品库存不足。);return 商品编号为: productid 的商品库存不足。;}}finally {lock.unlock();}} }
http://www.w-s-a.com/news/434534/

相关文章:

  • 无锡网站建设制作建设信息网查询
  • 彩票系统网站开发建设人力资源网官网
  • 有专门下载地图做方案的网站吗网站建设平台计划书
  • 网站闭站保护10个著名摄影网站
  • 安徽省建设工程信息网官网首页网站关键词排名优化工具
  • 深圳网站建设 百业网站专题教程
  • 公司seo是指什么意思如何来做网站优化
  • 化妆品网站建设平台的分析湖南网站搜索排名优化电话
  • 织梦网站修改教程视频教程管理类网站开发价格
  • 如何让新网站快速收录企业建站的作用是什么
  • 在线制作简历的网站做的最好的微电影网站
  • h5制作的网站网络游戏投诉平台
  • 做外贸网站好还是内贸网站好珠海新盈科技有限公 网站建设
  • php和网站开发网络软营销
  • 大型做网站的公司有哪些wordpress注册链接无效
  • 推荐门户网站建设公司网站开发移动端
  • 公司网站的栏目设置成都十大监理公司排名
  • 安溪住房和城乡建设网站关岭县建设局网站
  • 网站域名注销备案徐州房产网
  • 筑聘网windows优化大师自动安装
  • 龙华高端网站设计门户网站建设方案公司
  • 网站开发作用网站建设哪家专业
  • 网站设计报告总结南宁商城网站推广公司
  • 淘宝做店招的网站免费网站建设自助建站
  • 重庆工信部网站绵阳公司网站建设
  • 购物网站开发流程制作企业网页
  • 定州哪里可以做网站建设项目环境影响登记表备案系统网站
  • 网站建设费属于广告费小猪网站怎么做的
  • 国内优秀设计网站站长哈尔滨微网站建设
  • 如何建设一个优秀的电商网站沐风seo