![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端
文章平均质量分 53
后端常见问题及教程
JAVA架构之星
这个作者很懒,什么都没留下…
展开
-
XSS详细介绍
它允许攻击者在网页上注入恶意脚本代码,当其他用户访问包含这些恶意脚本的网页时,这些脚本将在他们的浏览器中执行。攻击者将恶意脚本代码存储在服务器上,通常在用户提交的评论、留言板或其他用户生成内容中。当其他用户访问包含这些恶意脚本的页面时,脚本会从服务器上加载并在他们的浏览器中执行。XSS攻击的主要目标是在用户的浏览器中执行恶意脚本,以获取用户的敏感信息,如Cookie、会话令牌、用户名和密码等。在将用户输入的数据呈现到网页上之前,确保对其进行适当的HTML编码,以防止浏览器解释为脚本。原创 2023-10-09 09:51:59 · 266 阅读 · 0 评论 -
CSRF详细介绍
它是一种攻击方式,攻击者通过伪装成合法用户的请求来执行未经授权的操作,这些请求可能会导致用户的账户被滥用或数据被篡改。总之,CSRF是一种常见的网络攻击,但可以通过一系列的安全措施来有效地减轻风险。对于一些敏感操作,例如修改密码、进行支付等,需要用户再次输入密码或进行双因素身份验证,以确保用户的确认。设置Cookie的SameSite属性可以限制第三方网站对Cookie的访问,减少CSRF攻击的可能性。开发人员应该编写安全的代码,避免在请求中执行敏感操作,尤其是使用GET请求来执行修改操作。原创 2023-10-09 09:50:44 · 351 阅读 · 1 评论 -
Java注解教程
要创建自定义注解,需要使用@interface关键字,并可以在注解中定义元素。元素类似于接口方法,可以有默认值。在上面的示例中,我们创建了一个名为value和number。@Retention注解指定了注解的保留策略。表示注解在运行时可用,可以通过反射来访问。@Target注解指定了可以应用注解的程序元素类型。在此示例中,我们只能将注解应用于方法。@Override:用于标记方法覆盖父类的方法。:用于标记已过时的方法或类。:用于禁止编译器产生警告。原创 2023-10-04 12:09:12 · 46 阅读 · 0 评论 -
Java反射教程
Java反射是一种强大的工具,它允许您在运行时检查类、方法、字段等,并进行动态操作。原创 2023-10-04 12:07:09 · 104 阅读 · 0 评论 -
ReentrantLock底层原理
在公平锁模式下,等待队列中的线程按照先进先出(FIFO)的顺序获取锁。在非公平锁模式下,等待队列中的线程有可能被插队,即新来的线程可以在等待队列中的某个线程之前获取锁。当一个线程获取锁时,锁状态会递增,允许同一个线程多次获取锁(重入性)。一旦锁被释放,等待队列中的线程将被唤醒,并尝试再次获取锁。它允许线程获取锁的顺序和公平性的配置,提供了更多的控制选项,适用于各种并发场景。AQS 提供了一个基本的框架,用于实现不同类型的同步器,包括独占锁和共享锁。时,需要小心处理锁的获取和释放,以避免死锁和性能问题。原创 2023-09-30 10:24:58 · 158 阅读 · 0 评论 -
synchronized底层原理
是一种基于对象监视器的锁机制,用于实现线程之间的同步。在 Java 中,每个对象都有一个对象头信息,它包含了对象的标识、哈希码以及锁状态。是 Java 中用于实现同步的关键字,它的底层原理涉及到 Java 对象头和对象监视器的概念。使用的是内置锁,也称为监视器锁。每个对象都有一个关联的对象监视器(也称为锁),用于控制对该对象的访问。当线程执行完同步块中的代码或者抛出了异常时,它会释放对象监视器,允许其他线程获取锁并执行同步块。会引入一定的性能开销,因为线程需要竞争锁,而且会存在一定的线程阻塞。原创 2023-09-30 10:24:23 · 122 阅读 · 0 评论 -
CAS并发控制
需要注意的是,CAS 操作虽然是一种强大的并发控制手段,但也存在一些问题,如ABA问题(即在操作期间共享变量的值经历了多次变化,但最终回到了原始值的情况)。“cas” 通常是指 “Compare and Swap” 或 “Compare and Set”,是一种用于多线程编程的原子操作。CAS 操作是一种并发控制手段,用于解决多线程同时访问共享资源时的竞争问题。它是一种非阻塞算法,与传统的互斥锁相比,CAS 具有更轻量级的性能开销。CAS 操作的一个常见用例是实现乐观锁,用于解决数据库并发控制问题。原创 2023-09-28 11:40:07 · 51 阅读 · 0 评论 -
Spring源码学习
以上是一些可以作为Spring源码学习的入口点的类和包。你可以根据自己的兴趣和需求选择一个合适的入口点开始学习,并逐渐深入研究相关的源码。同时,建议使用IDE工具来进行源码的导航和查看,以便更容易地理解代码逻辑和调用关系。在学习过程中,阅读注释、文档和示例代码也会非常有帮助。Spring框架的源码非常庞大,因此需要有一个合理的入口点来开始学习。原创 2023-09-27 10:59:20 · 145 阅读 · 0 评论 -
Paxos算法
Paxos算法的设计目标是确保在分布式系统中的多个节点之间达成一致,即使节点故障或消息丢失。尽管Paxos算法是一个非常强大的共识算法,但它的复杂性和难以理解使得实现和维护成本较高。:在Paxos中,节点可以扮演以下三种角色之一:提议者(proposer)、接受者(acceptor)和学习者(learner)。接受是节点对提案的确认,表明节点接受了提案中的值。:每个提案都有一个唯一的提案编号(proposal number),通常用于标识提案的顺序和优先级。这是Paxos中的关键原则,确保一致性。原创 2023-09-27 09:50:37 · 37 阅读 · 0 评论 -
raft共识算法
如果没有领导者或领导者故障,跟随者可以成为候选人,并发起选举,最终选举出新的领导者。Raft是一种分布式共识算法,用于确保在分布式系统中的多个节点之间达成一致性,以便实现数据的一致性复制和容错性。Raft算法的设计目标是更容易理解和实现,与Paxos算法相比,Raft提供了更清晰的算法描述和更好的可读性。需要注意的是,Raft算法虽然相对容易理解,但在实际的分布式系统中仍需要谨慎实施,考虑到网络延迟、节点故障和性能等方面的问题。:Raft中的时间被划分为一系列连续的任期,每个任期都有一个唯一的领导者。原创 2023-09-27 09:49:40 · 53 阅读 · 0 评论 -
base理论
BASE理论的核心思想是在面对分布式系统的复杂性和不确定性时,可以通过牺牲强一致性来获得更高的可用性。BASE理论常常与NoSQL数据库和分布式系统的设计相关联,因为许多NoSQL数据库采用了最终一致性模型,以实现更高的可用性和扩展性。:BASE理论中的软状态指的是在一段时间内,系统的数据状态可以是不确定的,因为分布式系统中的数据复制和异步传播可能会导致数据的临时不一致。:BASE理论的最终一致性指的是尽管在一段时间内数据状态可以是不确定的,但最终系统会达到一致的状态。原创 2023-09-27 09:47:35 · 127 阅读 · 0 评论 -
springboot项目利用ShardingSphere实现数据库字段加解密
springboot项目利用ShardingSphere实现数据库字段加解密引入jar包<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.0.0</version></depende原创 2021-02-02 09:56:28 · 1831 阅读 · 0 评论