我们知道,用JAVA语言写的网站,都会有GC的机制,其中堆的大小,就是新生代空余内存及老年代的空余内存之和。java程序在运行的时候,他会不断把新生代里无法gc掉的对象丢到老年代里面,但是老年代的内存也是一个固定值的,当新生代的对象丢到老年代后,老年代的空余内存会不断缩小,也许大家会问,老年代不是也有GC么,他full gc后,老年代丢弃不用的对象后,使用内存不就是会减少了吗? 说的很对,但是,f
# Java防止接口频繁调用 在Java开发接口是一种非常重要的概念。接口定义了一组方法的规范,可以被不同的类实现。然而,接口频繁调用可能会导致性能问题。本文将介绍一些可以用来防止接口频繁调用的方法,并提供相应的Java代码示例。 ## 问题描述 在某些情况下,我们可能需要频繁调用接口的方法。例如,当我们需要从第三方API获取数据时,我们可能需要多次发送请求以获取完整的数据。然而,频繁
原创 2023-10-23 14:38:48
277阅读
针对一个接口有多个重复的提交,在前端那一层就得做控制。前端自然有他的方法前台去抖动、防快速操作。这里,我是后端开发,前端的措施我们就不细究了。即使前端做了防重复提交,我们后端依然也要做好防重复提交。 下面有几种防重复提交的方法:1.基于缓存的数据验证例如有一个订单插入的请求,这里我们需要用到订单的流水号(orderId),因为orderId肯定是唯一的。请求request进来的时候,查询
一般有五种方式: 1、Token授权认证,防止未授权用户获取数据; 2、时间戳超时机制; 3、URL签名,防止请求参数被篡改; 4、防重放,防止接口被第二次请求,防采集; 5、采用HTTPS通信协议,防止数据明文传输;所有的安全措施都用上的话有时候难免太过复杂,在实际项目中需要根据自身情况作出取舍,比如可以只使用签名机制就可以保证信息不会被篡改,或者定向提供服务的时候只用Token机制就可以了,如
http长连接与短连接 HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。如何理解HTTP协议是无状态的HT
这种限制接口调用次数的方式,我们通常称之为限流,那么为什么要做限流呢,一般有两种原因:1. 首先是防止服务提供方被大量的请求击垮我们开发一个项目,最理想的状况是有多少请求,都可以正常地响应,但是在现在的互联网环境,我们很难评估用户的增长,很难评估访问量有多少,甚至有些时候会遇到恶意攻击;那么相比于项目被流量击垮,【限制流量,只满足部分访问的正常响应】要好一些。简单说就是:满足所有请求 > 满
       对于前后端分离的项目,后端人员通常都要对发起请求的用户的合法性和权限进行审核(比如用户每次请求都要携带token,token校验通过的才放行),只要审核通过了,基本上都允许用户的后续操作。可是这样就安全了吗?任何一个在后端开发浸淫多年的人,都会不知不觉间往数据安全方面倾注更多的精力。笔者作为某小公司的唯一后端开发,在数据安全这块也是操碎了心的
并发安全什么是线程安全性如何做到线程安全线程封闭使用无状态类让类不可变安全地发布volatile加锁和CAS安全问题死锁概念死锁发生的必要条件数据库的死锁Java的死锁简单顺序死锁动态顺序死锁危害活锁线程饥饿并发下的性能线程引入的开销上下文切换内存同步阻塞如何减少锁的竞争减少锁的粒度缩小锁的范围避免多余的锁锁分段替换独占锁线程安全的单例模式懒汉式-双重检查模式懒汉式-延迟初始化占位类模式枚举
在并发中保证多线程之间访问、操作的数据的安全,我们称为线程安全。 线程安全问题在单线程和多线程之间的只读操作不存在,只有在多线程的读-写、写-写的场景下才会引发线程安全问题。 实现线程安全的方案: 1.保证对象的无状态性和独立性,使用局部变量代替全局变量、或者使用实例变量代替类变量、单例变多例。 2.使用锁机制。 3.不加锁实现线程安全: CAS-atomic、ThreadLo
研发中心/王鹏 2019年7月一.背景知识:OKHTTP已是安卓项目中被广泛使用的网络请求开源库,它有如下特性:1.支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接;2.连接池减少请求延时;3.缓存响应内容,避免一些完全重复的请求;4.透明的GZIP压缩减少响应数据的大小;其中前三点特性可理解为就是连接复用,但后来发现这里有坑~ 二.问题现象:据现场端反馈,即使在
最近做了个不大点的微信活动,上线之后,出现了无穷尽的微信刷子,这些刷子的openid都不一样,昵称也格式相似,通过记录IP发现,IP都是相同的,一个IP有上千个微信用户,我很是费解,不知道现在是不是有什么黑科技可以伪造这点了;我先说下我的流程1,用户授权,session记录用户openid2,用户参加活动,完成活动一系列指定操作,完成活动,将用户信息录入数据库3,用户完成活动,分享朋友圈,朋友圈朋
# Java通过控制IP防止接口频繁调用 ## 前言 在开发过程,我们经常遇到需要限制接口频繁调用,以保证系统的稳定性和安全性。一种常见的方法是通过控制IP地址来限制接口的调用频率。本文将向你介绍如何使用Java实现这一功能。 ## 实现步骤 ### 步骤一:记录请求频率 首先,我们需要记录每个IP地址对接口的请求频率。为了实现这个功能,我们可以使用一个基于内存的缓存工具,如Guava
原创 9月前
196阅读
# Java如何防止连续接口 ## 问题背景 在开发,我们经常会使用接口来定义类之间的通信方式。但有时候,我们希望限制用户连续调用接口的次数,例如在某个时间段内只允许调用一次接口防止用户频繁请求接口导致系统负载过大或数据不一致等问题。 ## 解决方案 为了解决这个问题,我们可以使用令牌桶算法来实现对接口调用频率的限制。令牌桶算法是一种简单但有效的流量控制算法,它通过维护一个固定容量的
原创 10月前
43阅读
原理接口幂等的场景1. 前端重复提交 用户注册,用户创建商品等操作,前端都会提交一些数据给后台服务,后台需要根据用户提交的数据在数据库创建记录。如果用户不小心多点了几次,后端收到了好几次提交,这时就会在数据库重复创建了多条记录。这就是接口没有幂等性带来的 bug 2. 接口超时重试 对于给第三方调用的接口,有可能会因为网络原因而调用失败,这时,一般在设计的时候会对接口调用加上失败重试的机制。
# 项目方案:使用Linux调用Java接口 ## 1. 背景 随着Java在企业应用开发的广泛应用,很多项目需要在Linux环境下调用Java接口来实现特定功能。本项目方案旨在提供一种可行的方法来在Linux调用Java接口,并通过代码示例和图形化表示来展示整个方案的实现过程。 ## 2. 技术选型 在实现此方案时,我们将使用以下技术: - Java:作为主要开发语言,用于编写Ja
原创 9月前
147阅读
无论网站,还是App目前基本都是基于api接口模式的开发,那么api的安全就尤为重要了。目前攻击最常见的就是“短信轰炸机”,由于短信接口验证是App,网站检验用户手机号最真实的途径,使用短信验证码在提供便利的同时,也成了呗恶意攻击的对象,那么如何才能防止被恶意调用呢?1.图形验证码:将图形校验码和手机验证码进行绑定,在用户输入手机号码以后,需要输入图形校验码成功后才可以触发短信验证,这样能比较有效
        众所周知,Java取消了C++的多继承机制,但是用另一种方式来间接的实现了多继承------接口!        抽象类是对事物本质整体的抽象,而接口是对事物部分动作的抽象,Java不允许多继承,但允许实现多接口,换句话说,抽象类也是类,虽然抽象类在某种程度和接
现在的码农真不好干,不仅要天天搬砖垒代码,还要安排监控系统做运维。既然选择了这行,就应该有使命感去把事情做好,让老板开心,码农虽然很苦逼,但必须要有尊严的活着,不能让产品看不起,我们是有价值的。闲话不多说,今天想聊聊线上问题分析,一些小的异常:业务报错、空指针异常、格式转换异常等这些小儿科就不用多说了,堆栈信息已经显示了对应的类、方法和行号,修下代码就好了。有的时候会出现服务器CPU或者内存飙高的
转载 2023-06-27 11:31:34
77阅读
# 防止短信频繁发送的技术实现 在移动互联网时代,短信成为了一种重要的通信工具。然而,短信的频繁发送不仅增加了用户的困扰,也可能导致运营成本的上升。因此,在发送短信的服务,实现防止短信频繁发送的机制显得尤为重要。本文将探讨如何在Java实现这一功能,并提供代码示例和相关的图形表示。 ## 1. 需求分析 首先,我们需要对整个短信发送流程进行分析。在一个理想的场景里,用户每次请求发送短信时
原创 1月前
76阅读
高并发系统用于保护系统有三种利器:缓存、降级、限流。服务端限流的方案可以归纳为两窗两桶(固定窗口,滑动窗口,漏桶算法,令牌桶算法)固定窗口法固定时间周期划分时间为多个时间窗口,如:每10秒为一个时间窗口在每个时间窗口内,每有一个请求,计数器加一当计数器超过限制,丢弃本窗口之后的所有请求当下一时间窗口开始,重置计数器缺点通过请求量为允许限制的两倍假设限制1秒内最多通过10个请求,在第一个窗口的最后半
  • 1
  • 2
  • 3
  • 4
  • 5