后端

AQS探究

总所周知,java concurrent包的工具类是构建在AbstractQueuedSynchronizer类上的基础上的,而这个类是Doug Lea大神基于CHL队列实现的同步器。这个强大的同步器是怎样实现的呢?我们来一探究竟。 因为AQS的代码比较难以理解,我们从concurrent包下的并发工具类着手开始研究。从最简单的CountDownLatch开始,首先看它的源码 public

SQL注入专题(三)

一、WAF及绕过WAF原理介绍 WAF的定义: waf,即web应用防火墙,是通过执行一系列针对http/https的安全策略来专门位web应用提供保护的一款产品。 waf主要是通过内置的很多安全规则来进行放域,会对每个请求的内容根据安全规则进行检测并对不符合安全规则的做出响应的防御处理,从未保证web应用的安全性和合法性。 WAF是如何工作的? 规则库:使用一组规则来区分正常的请求和恶意的请求。

面试官:生成订单30分钟未支付,则自动取消,该怎么实现?

了解需求 方案 1:数据库轮询 方案 2:JDK 的延迟队列 方案 3:时间轮算法 方案 4:redis 缓存 方案 5:使用消息队列 了解需求 在开发中,往往会遇到一些关于延时任务的需求。 例如 生成订单 30 分钟未支付,则自动取消 生成订单 60 秒后,给用户发短信 对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会产生一个问题,这个延时任务和定时任务的区别究竟在

904. 水果成篮(难度:中等)

题目链接: 题目描述: 探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果: 你只有 两个 篮子,并且每个篮子只能装

LeetCode75刷题记录

Level1 4/15 day1 2022-07-23 1.1480 一维数组的动态和,求一维数组各个位置的累加和 自己的解法: 每次 这其实是动态规划的思想,但我并没有意识到; class Solution: def runningSum(self, nums: List[int]) -> List[int]: result = [nums[0]]

刷题小记

今天在刷牛客网华为机试的题目。 有个素数伴侣的算法,就是在给定一组数字中,例如2,3,5,6,11,13,找出能够配对最多的素数对数(素数:不能被除了1和本身之外的数整除)。比如2+3就是一个素数,这俩就是一对素数伴侣,剩下四个数以此类推找出最大配对数。 题目很好懂,如果给一个例子自己算也很好算,但就是自己的计算也没有规律可言,都是肉眼找。 思来想去找不到计算规律,查看题解才知道,原来有一个匈牙利

剑指offer(第2版)

4/75 03.找出数组中重复的数字 03 try1: 遍历 超时 class Solution: def findRepeatNumber(self, nums: List[int]) -> int: for i in range(len(nums)-1): for j in range(i+1,len(nums)): # 第一

多进程同步之文件锁

在多线程的环境下,如果两个线程操作相同的竞争区,需要使用锁来保证线程安全。在Java中有多种选择,如Synchronized关键字,CountDownLatch等等。但是这些方式,在多进程的情况下,会失效。 那么在多进程情况下,我们怎么做进程同步呢?答案是文件锁。Java提供的FileLock类,可以实现,下面来看看具体的用法。 FileLock API public abstract F

【工作】板书窥课-“课间活动”(2)

环节3-“一共有多少盆花?” 主题图还是信息丰富的操场,问题:“一共有多少盆花?” Q:“要解决这个问题,我们首先应该做什么?” S:“找信息!” Q:“找什么信息?谁的信息?随便找吗?“ S:”找花的信息!“ T:”也就是说首先根据问题去找到相关的信息。“板书”问题-信息“ Q:”现在能解决这个问题了吗?“ S有些犹豫,因为信息有些不寻常,”有3组花是5盆,有1组是3盆。“孩子们发