查漏补缺-本地缓存与HTTP缓存 什么是缓存?为什么要缓存?缓存是指将之前获取的资源或者文件暂存,以便下次访问时重复使用,由于不需要重新获取完整文件,可以节省带宽资源并提升访问速度 根据什么判断是否需要缓存一、系统访问频率1.当系统的访问频率较高时,使用缓存可以提高数据的读取速度。 例如,在一个电商网站中,商品列表是用户经常访问的内容之一。如果每次访问商品列表都要从数据库中读取数据,将会消耗大量的时间和系统资源。因此,可以将商品列 2024-09-06 Leak Filling #front end #http #cache
查漏补缺-前端安全之XSS与CSRF XSSXSS(Cross Site Scripting)跨站脚本攻击 简称本应为css,但是为了防止与CSS(Cascading Style Sheets,层叠样式表)搞混,就取为xss 跨站脚本攻击就是用 JS 脚本攻击,案例如下: 情景模拟假设有一个前后端不分离的网站,后端用express搭建,文件 app.js 内容如下 12345678910111213141516const expr 2024-09-06 Leak Filling #front end #http #safe #xss #csrf
代码随想录10 动态规划 动态规划基础什么是动规?动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 动规问题的特点是每一个状态一定是由上一个状态推导出来的,这是与贪心的重要区别(贪心不推导状态,直接选取局部最优解) 解题步骤 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 LeetCo 2024-07-13 Note #Algorithm #Dynamic Programming
代码随想录09 贪心算法 贪心算法贪心的本质是在每一阶段都选择局部最优,从而试图达到全局最优 如何判断是否适合贪心?手动模拟,如果模拟可行就试一试,如果不可行则考虑动规。 LeetCode 455. 分发饼干力扣题目链接 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 2024-07-09 Note #Algorithm #Dynamic Programming
代码随想录04 字符串 字符串Leetcode 344.反转字符串力扣题目链接(opens new window) 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1:输入:[“h”,”e”,”l”,”l” 2024-07-04 Note #Algorithm #String
代码随想录03 哈希表 哈希表哈希表是根据值而直接进行访问的数据结构,数组就是一张哈希表,哈希表中的值就是数组的索引下标,然后通过下标直接访问数组中的元素,如下图所示: 一般哈希表都是用来快速判断一个元素是否出现集合里 Leetcode 242.有效的字母异位词力扣题目链接(opens new window) 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s 2024-07-03 Note #Algorithm #Hash Table