- 博客(47)
- 收藏
- 关注
原创 使用自动化工具过滑动验证码
在使用自动化工具采集京东商品信息时,当采集数量达到一定程度上时,经常会遇到滑块验证码(如下图所示),过滑块验证码主要分为两部分:识别出滑块的距离和生成轨迹。由于京东的滑块验证码对轨迹的检查十分严格(如下图所示,滑块已经与缺口重合,但轨迹不对,因此验证失败),因此轨迹的生成决定了是否能过滑块验证码。经验证,本方案每轮10次,20轮中有10轮可以通过验证码。如果将重试次数调整为20次,基本上就可以通过滑块验证码了。
2025-04-12 12:37:28
962
原创 数据总线的简单实现
如图所示,首先,通过EventBus 注册<事件类型,监听者>,使用时,通过EventBus发布事件,就可实现Listener在onEvent方法中接收其监听的事件。这样就可以实现在事件总线一段发布Event对象,在对应的Listener接收Event对象。
2025-02-24 17:28:17
218
原创 迭代器模式
这是因为集合的 modCount(修改计数器)和迭代器的 expectedModCount(预期修改计数器)不一致,导致迭代器的并发修改检查失败。因此,在 Java 中,直接通过 for-each 循环(或普通 for 循环结合 Iterator)遍历集合时,直接调用。发现增强for循环的背后是通过生成iterator对象,从而利用iterator提供的方法进行遍历。接下来我们可以查看List背后的源码,观察其是如何实现迭代器模式的。改造以下原始代码,利用迭代器模式,读取问题,避免内存溢出问题。
2025-02-17 12:10:34
527
原创 装饰器模式
关键是要弄清楚map是在什么时候生成的。return map;在return map语句打断点进行调试。发现调用后生成了Map对象.查看的具体类型:发现是类对象,其中,实现了接口,并且有类成员。毫无疑问,这里利用了装饰者模式,在增强代码的职责后,将底层的代码委托给这些List中类成员实现。(因此在后续的代码中只需要看到委托给这些类成员实现即可,不必深究具体委托对象是如何实现的)进入类的方法体中发现是在调用后生成了args[i]。这个方法的核心就是如何先择合适的解析器resolver因此查看。
2025-02-16 20:47:49
930
原创 Learning Vue 读书笔记 Chapter 4 组件通信
直接将pizza prop 的类型声明为Pizza类) {props: {pizza: {或者,你可以使用TypeScript的接口或类型来定义你的自定义类型,而不是使用类。然而,在这种情况下,你必须使用vue包中的PropType类型,并按照以下语法,将声明的类型映射到目标propprops: {pizza: {},},使用defineProps和name: {},});</script>
2025-01-31 21:34:43
1218
1
原创 Learning Vue 读书笔记 Chapter 3 组件化设计
方法是一个包装函数,它接受一个配置对象,并返回带有类型推断的相同内容,用于定义一个组件。方法仅在 Vue 3.x 及以上版本中可用,并且只有在需要使用 TypeScript 时才会相关。
2025-01-30 14:06:56
1091
1
原创 Learning Vue 读书笔记 Chapter 2
在Vue引擎完成消费并将该观察者从队列中清除之前,无论数据发生多少次变化,队列中只存在同一组件的一个观察者。然而,在Vue.js 3.0中,Vue引擎采用了基于ES5 Proxy的机制以提升性能,使运行时性能翻倍并将所需内存减半。(2)在建立了响应性机制之后,Vue引擎使用观察者(watcher)对象来跟踪由setter触发的任何数据更新。(1)一旦定义了本地数据,在Vue.js 2.0中,内部的Vue引擎会使用JavaScript内置的。函数,自动更新组件的实际DOM和虚拟DOM,应用程序随即进行渲染。
2025-01-26 17:26:42
776
1
原创 注意力机制
假设输入序列中有T个词元,解码时间步。(4) 解码器的输入为注意力输出。(3) 编码器在所有时间步的。将作为注意力的键和值。(2) 上一时间步的。
2024-12-11 11:54:59
1002
原创 前后端交互之动态列
在做项目时,有时候后会遇到后端使用了**聚合函数**,导致生成的**对象的属性数量或数量不固定**,因此无法建立一个与之对应的对象来向前端传递数据, 这时可以采用NameDataListVO向前端传递数据。
2024-11-15 19:20:30
783
原创 DataWhale夏令营:Task2:建模方案解读与进阶
glob库主要是方便查找搜索文件而生的,os库主要用来实现文件的基础操作,shutil主要用来实现文件的复制移动操作。
2024-08-29 22:13:40
319
原创 空域处理之滤波器
1.线性系统 H2. 移不变系统H(f∗g)(x)=∫−∞∞f(τ)g(x−τ) dτ(f * g)(x) = \int_{-\infty}^{\infty} f(\tau) g(x - \tau) \, d\tau(f∗g)(x)=∫−∞∞f(τ)g(x−τ)dτ1. 卷积运算过程1◯\textcircled{1}1◯: 置换变量:x→τx\rightarrow\taux→τ2◯\textcircled{2}2◯: 反转: τ→−τ\tau\rightarrow-\tauτ→−τ3◯\textc
2024-08-25 15:10:29
1169
原创 空域处理之亮度变换
参考空间域处理的数学表示为:其中 T:在f(x,y)上的操作,定义在(x,y)的某个邻域上。方形和矩形邻域是使用最多的,因为它们易实现,也可使用圆形区域。T可以在一组图像上进行消除,例如噪声消除。T最简单的情况是邻域大小为1×1,这是g只依赖于f(x,y)处的值,即sTr称为灰度变换或亮度变换,其中s与r分别为输出和输入的亮度值。
2024-08-13 11:22:32
1173
原创 Java模块化
化整为零后:模块化系统允许JVM在运行时仅加载所需的模块,而不是加载整个类路径上的所有类。此外,模块化系统通过明确声明模块之间的依赖关系,可以提供更好的安全性,防止不受信任的代码访问和修改模块之间的内部实现。:默认JAR files frrom Libraies 是extract,正是因为这个选项,因此在运行jar包时,只需。真正的Java模块依赖信息,是放在module-info.java中的。模块化以后通过命令行运行java,需要指定–module-path参数,
2024-08-08 19:48:22
377
原创 Spring Security 6 总结
Basic 认证流程,必须在HTTPS 网站中使用系统分析 ----->角色和权限,要保护的资源UML 中的用例图,用户/资源权限表服务设计-----> URL,GET/PUT/POST/DELETE安全系统方案设计: Role /Authority之后,暂不加上安全特性,先实现功能,测试成功之后,最后加上安全特性单体应用: JWT 存储信息,SQL 存数据(用户和权限),Vue 先获取Token,再使用axios 将Token放HTTP Header 中,发给服务端。
2024-01-26 13:12:23
203
原创 Spring Security 6 JWT身份验证
基于JWT 实现身份认证和授权,是当前流行的一种技术解决方案。使用这种方案,要求用户先发来用户名与密码,当用户名与密码校验通过时,服务器端返回一个JWT给客户端。客户端拿到JWT之后,将其放到HTTP 请求名为Authorization的Header 中,随后继请求一起发给服务端服务端先校验JWT的有效性,有效之后,开放资源给客户端访问。public static final String JWT_KEY="这是我的一个私有密钥,用于生成JWT";//设置放在HTTP请求Header的名字。
2024-01-26 13:01:54
1036
2
原创 Spring Security 6 安全相关过滤器
Slf4j@Override= null) {LOG.info(authentication.getName() +"已经登录,其拥有的权限为: "+authentication.getAuthorities().toString());可用的方法@Bean//配置cors//在认证Filter完成之后使用自定义Filter 打印日志@Bean。
2024-01-25 19:53:46
350
原创 Spring Security 6 授权
认证: 证明了“你是谁”。授权: 表明了“你能干什么”可以设置某URL 必须认证后才能访问,未经认证,用户得到401访问可以设置某URL必须拥有特定权限(或属于某个角色)才能访问,不满足条件,用户会得到403响应。
2024-01-25 19:25:57
694
原创 Spring Security 6 密码验证流程
数据库中保存的不是明文,而是加密编码之后的hash 值,用户输入的密码,进行相同的处理,最终比较的是hash 值是否一致。
2024-01-25 15:07:10
842
原创 Spring Security 6使用自定义数据库存储用户权限
1] 自定义实体@Entity@Getter@Setter@ToString@Id@Override@Override[2] 自定义repository[3] 自定义CustomerUserDetailsSpring Security 使用UserDetailsService实例来存取用户信息,因此,这里我们实现了这个接口,从自定义的customers表中提取信息,创建UserDetails对象。
2024-01-24 12:56:25
467
原创 c++学习 4
全局常量波通常会被分配在只读代码/数据区。(从地址来看,发现s1的地址与main的地址非常相近,说明全局常量被分配在代码段里)常量: 在编译时会被存储在内存表中的一个实体。变量: 编译器为其分配内存,地址。
2024-01-10 15:03:54
819
原创 Spring Security6 Configuration
/替换掉SpringSecurity的默认配置@Bean//访问public控制器的请求“放行//访问security控制器的请求“需要认证”使用内存添加多用户支持@Bean.build();.build();
2024-01-07 16:25:05
232
Java FX多窗口编程
2024-08-09
Java FX 数据绑定demo
2024-08-09
Java FX MVVM架构 构建 登录界面
2024-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人