- 博客(30)
- 收藏
- 关注
原创 sing-box配置安装
创建配置目录以及基本配置文件config.json。将可执行文件移动到/usr/bin目录下。下载符合你服务器架构的压缩包到/opt。打开官方仓库releases页面。
2024-08-26 14:45:00
7761
1
原创 MySQL数据库
where ,order by ,group by 的时候需要用到索引,对字段有唯一性要求的时候也可以用到索引。MVCC的实现主要依赖于几个关键概念:隐藏字段、undo日志和Read View。索引起到快速定位的作用,不需要快速定位的就不需要创建。涉及到二级索引和主键索引,覆盖索引的区别。为什么在左模糊匹配的时候会导致索引失效。经常需要更新的字段不加索引。
2024-08-25 18:21:45
167
原创 Austin项目开发过程中遇到的问题
在Austin消息推送平台中,需要完成一个向指定人群定时推送消息的动作,这就要求我去创建一个定时任务,这里我选用的是通过接入xxl-job来启动一个定时任务,而指定人群的输入是通过导入一个.csv文件,读取这个文件里面的信息去支持批量导入信息的。我在拿到每一行数据的时候,封装了一个VO,扔给了内存队列LazyPending,内存队列里会起一个线程去消费队列里的数据,只是为了减少接口调用导致网络传输的次数过于频繁,设置了必须等到。我通过分析判断应该是.csv文件数据过大的时候,存到内存里面的数据体量太大了。
2024-08-18 16:56:51
239
原创 场景:外卖骑手抢单设计(分布式锁)
这时候可以里面MySQL中的约束unique key去实现订单的唯一特性,即uniqkey(order_id),在表中已经存在该订单的情况下,其他外卖骑手无法再重复创建订单。的续期机制持续地监视订单的状态,在没有完成订单之前,每隔一段时间(比如10s ,1/3,过期时间假如是30s)判断是否完成订单,如果没有完成,则再加30s,直到完成订单为止。也有可能此时D抢到了被释放的锁,B此时刚好配送完订单,于是触发释放锁的操作,却把D的锁给释放了。的问题,即B在配送订单的时候,锁因为超时了导致被释放;
2024-08-17 20:00:00
403
1
原创 场景:统计用户在线时长
分布式环境下,可能有多个监听器,会有重复消费的问题,业务逻辑不能重复执行(通过加分布式锁,幂等解决) 监听器不稳定,并发量大时可能是有延迟的(和redis机制有关)1 心跳机制来判定下线时机 主动做轮询。2 基于redis过期键的监听。
2024-08-17 10:15:00
346
原创 使用复合索引进行查询时,如果只查询其中一个字段如username,会触发索引吗
总之,为了确保查询能够利用复合索引,最好遵循最左前缀规则,即查询条件从索引的第一个字段开始。如果只查询复合索引的后续字段,可能无法有效利用索引。由于username列上有索引,MySQL可以使用索引来快速定位到john_doe的记录,而不是扫描整个表。这将创建一个名为idx_username的索引,它将加快基于username的查询。这个查询同样可以使用复合索引,因为查询条件遵循了索引定义的顺序。使用复合索引进行查询时,如果只查询其中一个字段,比如。复合索引,因为查询没有从索引的第一个字段。
2024-08-16 17:50:13
326
原创 场景:二维码扫码登录设计
二维码扫码登录需要做的事情是去做登录认证,主要有两个:第一,告诉系统我是谁,可以通过账号,手机号,邮箱,用户名等唯一标识的形式;二维码本质上就是一个字符串string,可以自己拿一张二维码放到解析器中,最后会返回一个url,而这个url本质是就是字符串,关键部分就是QRcode部分的字符。6.【服务端】解析验证,绑定用户信息,返回【移动端】用于二次确认的临时token. 【Pc端】展示的二维码进入"待确认"状态。9.【服务端】校验,如果通过,就修改二维码状态,返回Pc端登录的token.
2024-08-16 17:32:59
336
原创 设计模式总结
简单工厂(Simple Factory),它把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化,这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。抽象工厂(Abstract Factory),抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。工厂方法(Factory Method),它定义了一个创建对象的接口,但由子类决定要实例化哪个类。双重校验锁-线程安全。
2024-08-15 18:26:50
273
原创 设计一个单点登录系统SSO有哪些方式
当token被盗用或用户注销时,将token加入黑名单,使其立即失效。使用jwt时使用强签名算法如hash256对token签名。oauth2.0(第三方应用委托访问权限)token encode加密。设置token有效期。
2024-08-11 14:49:37
134
原创 责任链模式实现
实际上就是一套通用的责任链的代码,最核心的其实就是四个角色:「业务抽象接口」、「执行过程中的上下文」、「将业务实现类串起来」和「一个通用的控制器执行责任链」不知道大家看过Pipeline这个词了没,在学Redis的时候可能会见过,在Redis里边我们会用Pipeline去做批量的操作。可以看到前人实现的Pipepline还是相对复杂的,没有上面通用的责任链模式好理解,经过分析可以看到都是换汤不换药的。抛开Redis的Pipeline,但从宏观的角度上来,Pipeline其实是一种架构思想。
2024-08-03 14:15:00
147
原创 实时流处理Flink
接着只要在kafka创建对应的topic(我这里定义的topicName是austinLog),并且在AustinFlinkConstant中填写Kafka的Broker信息以及Redis信息后,编译打包就完了。流式处理平台阶段:流式处理平台是对「计算」或者说处理数据时的抽象,在这抽象基础上它更能充分利用系统的资源(一个大的任务被拆分多个小任务,然后分发到不同的机器上执行)主要实现了将数据实时聚合到Redis,分了两个维度:用户和消息模板(对应的Redis结构都已经写在了代码的注释上了)
2024-08-02 16:59:07
557
原创 夜间屏蔽功能
把晚上的接收到的消息扔进Redis list,然后启个定时任务(每天早上9点)轮询该list是否有数据,如果有再重新做处理就完事了。
2024-08-02 16:36:46
159
原创 泛型的特性
泛型是 Java 编程语言中的一个重要特性,它允许类、接口和方法在定义时使用一个或多个类型参数,这些类型参数在使用时可以被指定为具体的类型。
2024-07-30 11:15:29
205
原创 Java里面volatile关键字
严谨的回答应该是volatile关键字对于基本类型的修改可以在随后对多个线程的读保持一致,但是对于引用类型如数组,实体bean,仅仅保证引用的可见性,但并不保证引用内容的可见性。volatile的关键字的作用:对于一个线程修改的变量对其他的线程立即可见(保证可见性,不保证原子性)。这种说法没多大问题,但是不够严谨。
2024-07-30 10:40:48
379
原创 银行家算法
4)循环等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;死锁:是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
2024-07-30 09:05:45
390
原创 综述_阅读笔记
在导师的要求下,阅读了一些网络安全结合深度学习方面的综述,了解现今深度学习在入侵检测,防火墙等方面取得的一些进展与研究成果,为下一步确定方向奠定基础
2022-09-29 13:30:36
3012
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人