搜索内容

推荐文章
  • 设计模式之模板方法模式

    在我们实际开发中,如果一个方法极其复杂时,如果我们将所有的逻辑写在一个方法中,那维护起来就很困难,要替换某些步骤时都要重新写,这样代码的扩展性就很差,当遇到这种情况就要考虑今天的主角——模板方法模式。 在我们实际开发中,如果一个方法极其复杂时,如果我们将所有的逻辑写在一个方法中,那维护起来就很困难,要替换某些步骤时都要重新写,这样代码的扩展性就很差,当遇到这种情况就要考虑今天的主角——模板方法模式。 一、概念理解 模板方法模式……
    2022-10-01
  • Java 读写锁 ReadWriteLock 原理与应用场景详解

    Java并发编程提供了读写锁,主要用于读多写少的场景,今天我就重点来讲解读写锁的底层实现原理@mikechen 什么是读写锁? 读写锁并不是JAVA所特有的读写锁(Readers-Writer Lock)顾名思义是一把锁分为两部分:读锁和写锁,其中读锁允许多个线程同时获得,因为读操作本身是线程安全的,而写锁则是互斥锁,不允许多个线程同时获得写锁,并且写操作和读操作也是互斥的。 所谓的读写锁(Readers-Writer Lock),顾名思义就是将一个锁拆分为读锁和写锁两个锁。 其中读锁允许多个线程同……
    2022-10-01
  • 设计了一个自动归档工具

    分享一个我年初设计的自动归档功能,如何将一些思考融入到简单的CRUD中 背景 随着业务的发展,一些事务类表(源源不断产生业务数据)会越来越大,最终演变成我们说的大表,普通的查询可能毫秒级、秒级返回,但是稍微复杂的就会超时,甚至占满数据库cpu,进而导致大面积请求超时、堆积,jvm fullgc,触发熔断等连锁反应。 前几天业务高峰期的时候收到客户反馈,说系统访问卡顿,已经严重影响业务,需要立即处理,根据以往的经验我第一时间查看了数据库监控,……
    2022-10-01
  • 初识设计模式 – 适配器模式

    适配器设计模式(Adapter Design Pattern)可以将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。 适配器在生活中经常见到,如手机、笔记本电脑的电源适配器,USB 转接头都是常见的适配器。 在设计模式当中,适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 在类适配器模式中,适配器与适配者之间是继承(实现)关系;在对象适配器模式中,适配器与适配者之间是关联关系。 具体实现 类适配器模式 典型的类适……
    2022-10-01
  • 某云负载均衡获取客户端真实IP的问题

    某云负载均衡真实IP的问题,我们这边已经遇到过两次了。而且每次和售后沟通的时候都大费周折,主要是要给售后说明白目前文档的获取真实IP是有问题的,他们觉得文档上说明的肯定没问题,售后要是不明白,他们不会给LB部门上报,这个事就没法推进。 我们这边的简单的网络架构设这样的。 DNS->负载均衡->web机组 按照文档说明获取客户端真实IP 七层负载均衡(HTTP或HTTPS协议)服务需要对应用服务器进行配置,然后使用X-Forwarded-For的方式获取客户端的真实源IP地址。真实的……
    2022-10-01
  • 痞子衡嵌入式:一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事(SR寄存器BP[x:0]位)

      大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家讲的是一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事。   痞子衡最近在支持一个 i.MXRT1170 欧美客户,客户项目里选用了来自 Micron 的四线 NOR Flash - MT25QL256ABA8E12-0AAT 作为启动设备,一般读写倒是没有问题,但是在 Segger J-Flash 下烧写遇到了特定区域内校验失败的问题。   从痞子衡过往丰富的 Flash 支持经验来看,亚太区客户一般选用 ISSI(芯成)/Winbond(华邦)/MXIC(旺宏)/GigaD……
    2022-10-01
  • WSL 2 上启用微软官方支持的 systemd

    以前折腾了很久的 genie 和 distrod 来实现 wsl2 上的 systemd。现在微软和Canonical联合声明发布了官方支持的systemd,之前的折腾貌似有点浪费时间了。如果微软不发布这个systemd的解决方案,本文的主题可能就是去对比 genie 和 distrod 了。 在安装体验后,个人感觉官方支持的systemd确实比上述两个开源项目体验更佳。很值得有需要在wsl环境中运行docker、nginx、mysql等后台服务的小伙伴来尝鲜。 本文首先会用两个小节去比较genie和distrod,对他们不感兴趣的小伙伴,可以直接跳……
    2022-10-01
  • 实战 | 记一次曲折的钓鱼溯源反制

    故事起因 这天风和日丽,我正在摸鱼,忽然QQ群弹出一条消息,我打开一看,我感觉不简单。如下图: 扫码后发现跳转到了QQ邮箱登陆界面,确定为钓鱼网站,看到其域名为http://****kak2.cn。 这里随便输入,页面跳转到如下界面。 好家伙,小伙子你挺会玩啊,收集完QQ邮箱账号密码,再来收集一波个人信息,做人不能太贪心啊。开始干活! 溯源钓鱼者 我们现在拿到了他的域名,现在收集一下域名的相关信息。使用站长工具,如下图。 可以查到域名注册人的姓名和邮箱。邮箱显示不全,这……
    2022-10-01
  • springboot自动配置原理以及手动实现配置类

    springboot自动配置原理以及手动实现配置类 1、原理 spring有一个思想是“约定大于配置”。 配置类自动配置可以帮助开发人员更加专注于业务逻辑开发,springboot在启动的时候可以把一些配置类自动注入到spring的IOC容器里,项目运行之后就可以直接使用这些配置类的属性和方法等。 springboot有一个全局配置文件,application.properties / application.yml,各种属性都可以在文件中进行自定义配置。 自动配置实现原理: 我们都知道项目的入口是 @SpringBootApplication 注解,这个注……
    2022-10-01
  • 设计模式—工厂方法模式

    简述 类型:创建型 目的:实现对客户端中对象的平替。 我们借以下案例来说说如何使用工厂方法模式平替对象。 优化案例 最初版 public interface OS { public void start(); public void sleep(); public void restart(); public void stop(); } public class Linux implements OS { public void start() { System.out.println("启动Linux系统!"); } public void sleep() { System.out.println("睡眠Linux系统!"); } p……
    2022-10-01