程序开发 Stream 流用法详解
简介 Stream 是 Java 8 引入的一个功能强大的流式处理 API。它允许我们以声明性的方式操作集合(数组、集合等)的元素。通过使用 Stream,我们可以将多个操作连接起来,形成一个流水线,从而简化代码并提高可读性。 Stream 类中包含的方法,可以进行数据筛选、转换、排序、去重、限制、跳过、归约、统计、匹配、查找和遍历等操作。 数据筛选和转换: filter(Predicate<…
程序开发 工具类 Optional 用法详解
Optional 类是 Java 8 中引入的一个用于避免空指针异常的工具类,请注意它是 java.util 包下的一个工具类。 它提供了一系列方法,用于对可能为 null 的对象进行操作,以便更加安全地访问对象的属性和方法。 Optional 里面几乎全部都围绕其中的一个成员变量 value 在运作。 下面是 Optional 类中常用的方法及其用法: of 方法 创建一个包含指定对象的 Opt…
经验教程 设计模式之三种工厂模式
前言 工厂模式是一种创建对象的设计模式,它提供了一个统一的接口来实例化对象,而不需要通过直接调用构造函数来创建。工厂模式可以根据不同的条件返回不同类的实例,从而实现对象的灵活创建。 常见的工厂模式包括:简单工厂模式、工厂方法模式和抽象工厂模式。 详解 1. 简单工厂模式 简单工厂模式,就像它的名字一样,非常简单。只需要创建一个工厂类,根据传入的参数或条件,工厂类决定实例化哪个具体类的对象并返回。 …
经验教程 设计模式之软件设计原则
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 6 条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。 1 开闭原则 对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。 想要达到这样的效果,我们需要使用接口和抽象类。 因为抽象灵活性好,适应…
经验教程 设计模式之UML类图
1. 类图概述 统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。 UML 从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。 类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部…
程序开发 50 个 Java 编程技巧
一、语法类技巧 1.1. 使用三元表达式 普通: String title; if (isMember(phone)) { title = "会员"; } else { title = "游客"; } 精简: String title = isMember(phone) ? "会员" : "游客"; 1.2.利用 fo…
程序开发 Java 彻底理解两种动态代理
在 java 中,有两种常见的动态代理实现方式,即基于接口的动态代理(JDK 动态代理)和基于类的动态代理(CGLIB 动态代理),下面就对这两种代理进行解释和举例。 1. JDK动态代理 这种动态代理实现方式是基于接口的,使用 java.lang.reflect.Proxy 类和 java.lang.reflect.InvocationHandler 接口来创建代理对象。代理对象实现了目标接口,…
瞎折腾 Docker 自建超实用的导航网址 onenav
为什么选择onenav 在之前,阿蛮君也搭建过导航网址,不过当时使用的 wordpress 搭建,并使用的一为导航主题。 但是后来发现,这个导航网站的作用并不大,因为搭建以后我并没有去管理过它,毕竟因为添加那么多链接是一件很心累的事。 此外,wordpress 搭建静态导航网址,实在是大材小用,占用内存也比较高,还需要用到 mysql。 直到发现了 onenav 这款导航,配合 baisu 主题,…
瞎折腾 Docker 搭建中继服务器 derp – 纯 IP 实现
1. 纯IP搭建关键 接之前 Docker 搭建中继服务器 derp,上次的文章需要有域名,并且申请好 ssl 证书。 原因在于 derp 服务器,在 tailscale/cmd/derper/cert.go 文件中需要验证域名,如果将验证的代码去掉,那么 derp 将不会出现证书不匹配的错误,也就是说此时可以使用 IP或者域名都不会报错。 func (m *manualCertManager) …
瞎折腾 Docker 搭建中继服务器 derp – 需要域名并配置 ssl
了解Derp 在搭建 derp 之前,前提是你应该了解并搭建了 headscale 服务端,否则请先看文章 Docker 搭建 headscale 异地组网完整教程。 已经加入 headscale 的异地组网的客户端可以使用如下命令查看当前的 derp 服务器。 # docker 运行的客户端 docker exec -it tailscaled tailscale netcheck # 非 do…
其他分享 NAT 类型详解以及如何查看自己的 nat 类型
四种NAT类型 NAT 可以分为四种类型: 完全锥形NAT(Full Cone NAT) 完全锥形NAT最简单,也是最灵活的一种。它会为内部网络中的每个主机分配一个公共IP地址和端口号,并且允许从任何外部网络地址的任何端口与内部主机通信。一旦内部主机首次向外部主机发送数据,完全锥形NAT就会将源IP和端口映射到公共IP和端口,以便外部主机可以回复。 地址限制锥形NAT(Address Restri…