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

做任务的正规网站网页微信怎么换行

做任务的正规网站,网页微信怎么换行,手机wap网站建设多少钱,在线代理访问网站的网址自十九周开始,我们便开始着手写项目(关于新闻资讯类的Web项目),当然,在这之中我们也学到了很多高效且有用的好技术,在接下来的内容中将去具体的描述这些好技术,介绍它们的具体用法和应用场景。本…
 自十九周开始,我们便开始着手写项目(关于新闻资讯类的Web项目),当然,在这之中我们也学到了很多高效且有用的好技术,在接下来的内容中将去具体的描述这些好技术,介绍它们的具体用法和应用场景。本周向各位介绍的是Model类中的addAttribute()方法和RedirectAttributes中的addFlashAttribute()方法的区别,以及很多项目中常需用的限流操作的介绍。

addAttribute与addFlashAttribute区别

 **1.作用范围**model.addAttribute():在当前请求中有效,用于向视图传递数据。redirectAttributes.addFlashAttribute():在重定向后的第一个请求中有效,之后自动清除。**2.使用场景**

model.addAttribute():普通请求转发时使用

@GetMapping("/users")public String users(Model model) {model.addAttribute("users", userList); // 直接传递给视图return "userList";}

redirectAttributes.addFlashAttribute():重定向时传递临时数据

  @PostMapping("/users/update")public String update(User user, RedirectAttributes redirectAttributes) {redirectAttributes.addFlashAttribute("message", "更新成功"); // 重定向后显示一次return "redirect:/users";}
 **4.生命周期**
addAttribute:当前请求结束即失效。
flashAttribute:存活到下一个请求结束。
**5.数据存储方式**model:数据存储在request作用域。redirectAttributes:数据存储在session中,重定向后立即移除。**6.典型使用场景区别**使用model:直接渲染视图时传递数据。使用redirectAttributes.addFlashAttribute():表单提交后重定向并显示一次性提示消息。

限流操作实现

 **1.关于令牌桶算法(实现限流操作的重要方式)**令牌桶算法(Token Bucket Algorithm):是一种常用的流量整形和限流算法,用于控制数据传输速率或请求处理速率,防止系统因流量过大而崩溃。算法原理:令牌桶算法的核心概念是有一个固定容量的令牌桶,系统会以固定的速率向桶中放入令牌。每个请求需要从令牌桶中获取一个或多个令牌才能被处理,如果桶中没有足够的令牌,请求将被阻塞或丢弃。具体步骤如下:
令牌生成:系统按照固定的速率(例如每秒生成 r 个令牌)向令牌桶中添加令牌。
令牌存储:令牌桶有一个最大容量 b,当桶中的令牌数量达到最大容量时,新生成的令牌将被丢弃。
请求处理:每个请求到来时,会检查令牌桶中是否有足够的令牌。如果有,请求将被处理,同时从桶中移除相应数量的令牌;如果没有,请求将被阻塞或拒绝。应用场景:网络流量控制:在网络设备(如路由器、防火墙)中,令牌桶算法可以用于限制网络流量,确保网络带宽的合理使用。API 限流:对于提供 API 服务的系统,令牌桶算法可以限制每个用户或客户端的请求速率,防止恶意攻击或过度使用。
数据库访问控制:在数据库系统中,令牌桶算法可以用于控制并发访问,避免过多的请求对数据库造成压力。2.介绍一个以外部Redis和Lua结合的限流操作如下面的将Java代码与Redis、Lua技术结合实现的限流操作
import redis.clients.jedis.Jedis;import java.util.Collections;public class TokenBucketRateLimiter {private static final String TOKEN_BUCKET_KEY = "rate_limit_bucket";private static final String LUA_SCRIPT ="local current_tokens = tonumber(redis.call('hget', KEYS[1], 'tokens'))\n" +"local last_update = tonumber(redis.call('hget', KEYS[1], 'last_update'))\n" +"if current_tokens == nil then\n" +"    current_tokens = tonumber(ARGV[1])\n" +"    last_update = tonumber(ARGV[3])\n" +"end\n" +"local elapsed_time = tonumber(ARGV[3]) - last_update\n" +"local new_tokens = math.min(tonumber(ARGV[1]), current_tokens + elapsed_time * tonumber(ARGV[2]))\n" +"if new_tokens >= tonumber(ARGV[4]) then\n" +"    redis.call('hset', KEYS[1], 'tokens', new_tokens - tonumber(ARGV[4]))\n" +"    redis.call('hset', KEYS[1], 'last_update', tonumber(ARGV[3]))\n" +"    return 1\n" +"else\n" +"    return 0\n" +"end";private final Jedis jedis;private final int bucketCapacity;private final int tokenRate;public TokenBucketRateLimiter(Jedis jedis, int bucketCapacity, int tokenRate) {this.jedis = jedis;this.bucketCapacity = bucketCapacity;this.tokenRate = tokenRate;}public boolean isAllowed(int requestTokens) {long currentTime = System.currentTimeMillis() / 1000;Object result = jedis.eval(LUA_SCRIPT, Collections.singletonList(TOKEN_BUCKET_KEY),Collections.singletonList(String.valueOf(bucketCapacity),String.valueOf(tokenRate),String.valueOf(currentTime),String.valueOf(requestTokens)));return (Long) result == 1;}public static void main(String[] args) {Jedis jedis = new Jedis("localhost", 6379);TokenBucketRateLimiter rateLimiter = new TokenBucketRateLimiter(jedis, 100, 10);for (int i = 0; i < 15; i++) {boolean allowed = rateLimiter.isAllowed(1);System.out.println("Request " + (i + 1) + " is allowed: " + allowed);try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}}jedis.close();}
}      
在这其中常量定义:TOKEN_BUCKET_KEY:这是 Redis 里存储令牌桶状态的键名。LUA_SCRIPT:该 Lua 脚本用于实现令牌桶算法的核心逻辑,会在 Redis 服务器端执行。
构造函数:
TokenBucketRateLimiter(Jedis jedis, int bucketCapacity, int tokenRate):接收 Jedis 客户端实例、令牌桶容量以及令牌生成速率作为参数。
isAllowed 方法:
此方法用来判断请求是否被允许。
先获取当前时间,接着调用 jedis.eval 方法执行 Lua 脚本,最后依据返回结果判断请求是否通过。
main 方法:
这里创建了一个 TokenBucketRateLimiter 实例,模拟 15 次请求并输出每次请求是否被允许的结果,最后关闭 Redis 连接

文章转载自:

http://jXUZDUWh.xmttd.cn
http://v8OLyXp8.xmttd.cn
http://a96epIiD.xmttd.cn
http://Cq0zyWzL.xmttd.cn
http://8HYU4Aqn.xmttd.cn
http://z4leZ8zD.xmttd.cn
http://176wTDHC.xmttd.cn
http://SDBeH1bA.xmttd.cn
http://eutlyRAv.xmttd.cn
http://HyAqqLOA.xmttd.cn
http://UqJffBJB.xmttd.cn
http://gQCZXMCS.xmttd.cn
http://u123BRZG.xmttd.cn
http://eYcm5YOH.xmttd.cn
http://W2yeWiEO.xmttd.cn
http://GxYYiR3V.xmttd.cn
http://tkDl1I45.xmttd.cn
http://DKpH20eF.xmttd.cn
http://uYq7jM88.xmttd.cn
http://MrOavKjF.xmttd.cn
http://9mlGGjaO.xmttd.cn
http://ncpxjNqe.xmttd.cn
http://dEQQxTc6.xmttd.cn
http://R9wJ9zYs.xmttd.cn
http://QhO1cOF6.xmttd.cn
http://AvEzihhv.xmttd.cn
http://zafiazj5.xmttd.cn
http://6YHI1pip.xmttd.cn
http://yQD5LOXx.xmttd.cn
http://rRMwX5T7.xmttd.cn
http://www.dtcms.com/wzjs/632594.html

相关文章:

  • 深圳正规制作网站让别人做网站需要注意什么
  • 徐州手机网站制作公司哪家好南宁东凯做网站的公司
  • 南宁市建设局网站html5网站素材
  • 自开发网站网页设计网站制作流程
  • 淘宝上的网站建设可信开源企业建站系统php
  • 百润网站建设泰安爆炸最新消息今天
  • 苏州企业网站开发wordpress分级标题
  • 免费网站建设平台 iis产品项目开发流程图
  • 响应式网站和传统网站网络推手公司怎么收费
  • c net做的网站化工行业网站
  • 网站建设实践百度收录域名
  • 大企业网站建设方案社保在哪个网站做增员
  • 微信营销网站(含html源文件)免费下载学校网站群建设思路
  • 做的网站需要什么技术宠物食品 中企动力提供网站建设
  • 网站建设的基本特点如何做企业第一管理人
  • 重庆的网站建设绍兴网站制作推广
  • discuz品牌空间网站电商软件什么品牌好
  • 天津免费建设网站广告设计专业分析
  • 手机代码网站有哪些问题高邮建设网站
  • 做网站cpa域名怎么制作网站
  • 网站开发托管协议关于网站建设外文文献
  • 鹤壁网站建设优化网上商城小程序开发
  • 海淀建设网站大连网站排名
  • 怎么搭建自己的网站西双版纳傣族自治州地图高清版
  • 长沙中小企业网站制作网页微信登录入口
  • 阿里巴巴国际站可以做网站吗网站后台密码在哪个文件
  • 成都便宜网站建设公司哪家好wordpress上传完了
  • 免费下载app软件下载安装关键词优化快排
  • 网站备案管理系统登录不上去wordpress 插件分类
  • 服务器网站慢的原因平面设计网址推荐