单元测试介绍及使用
前言开发人员写的常常是"单元测试",但其实可以细分成单元测试和集成测试两个。 划分的原因拿常见的 Spring IoC 举例。Spring 不同 Bean 之间相互依赖,例如某 API 业务逻辑中会依赖不同模块的 Service,Service 方法中又可能依赖不同的 Dao 层方法,甚至还会通过 RPC、HTTP 调用外部服务方法。这给我们写测试用例带来了难度,本来只想测试某个方法的功能,却要考虑一连串的依赖关系。 单元测试 单元测试:是指对软件中的最小可测试单元进行检查和验证。 通常任何软件都会划分为不同的模块和组件。单独测试一个组件时,我们叫做单元测试。单元测试用于验证相关的一小段代码是否正常工作。单元测试不是用于发现应用程序范围内的 bug,或者回归测试的 bug,而是分别检测每个代码片段。 单元测试不验证应用程序代码是否和外部依赖正常工作。它聚焦与单个组件并且 Mock 所有和它交互的依赖。例如,方法中调用发短信的服务,以及和数据库的交互,我们只需要 Mock 假执行即可,毕竟测试的焦点在当前方法上。 单元测试的特点: 不依赖任何模块。 基于代码...
LOIC 安全测试工具
LOIC 安全测试工具什么是 LOIC?LOIC 是一款专注于 Web 应用程序的 DoS/DDoS 攻击工具,它可以用 TCP 数据包、UDP 数据包、HTTP 请求对目标网站进行 DDoS/DoS 测试。 下载后电脑可能会报杀病毒,可以先关闭实时保护。 LOIC 的工作原理它的工作原理是向目标服务器发送大量 TCP、UDP 或 HTTP 数据包以中断服务。一名攻击者使用 LOIC 无法产生足够的垃圾流量来严重影响目标;严重的攻击需要成千上万的用户协调,对同一目标同时发起攻击。为了使协同攻击更容易,用户可以使用 IRC 聊天频道来运行 LOIC 的 "Hivemind"(蜂群思维)版本,该版本允许一个主要用户控制多台联网的次级计算机,从而创建一个自愿的僵尸网络。这是一种热门做法,因为次级设备的所有者可以声称自己是非自愿僵尸网络的无辜受害者。 LOIC Hivemind 在 2008 年被 Anonymous 用来攻击 Church of Scientology 网站,以回应该教会为撤下 YouTube 视频采取的法律手段。LOIC...
LeetCode 算法题记录
1 - 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 解题方法暴力法遍历数组,依次判断 arr[0]+arr[1]、arr[0]+arr[2] ...、arr[1]+arr[2]、arr[1]+arr[3] ...、arr[2]+arr[3]、arr[2]+arr[4] ... 因为需要遍历 N×(N-1)/2 次循环,所以时间复杂度为 O(N²)。 123456789101112131415161718192021class Solution { // Brute Force // @爱学习的饲养员 // N is the size of nums // Time Complexity: O(N^2) // Space Complexity: O(1) public int[] twoSum(int[]...
时间复杂度和空间复杂度
摘自:https://zhuanlan.zhihu.com/p/50479555 算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 那么我们应该如何去衡量不同算法之间的优劣呢? 主要还是从算法所占用的「时间」和「空间」两个维度去考量。 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述 因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,有的时候时间和空间却又是「鱼和熊掌」,不可兼得的,那么我们就需要从中去取一个平衡点。 下面我来分别介绍一下「时间复杂度」和「空间复杂度」的计算方式。 时间复杂度我们想要知道一个算法的「时间复杂度」,很多人首先想到的方法就是把这个算法程序运行一遍,那么它所消耗的时间就自然而然知道了。 这种方式可以吗?当然可以,不过它也有很多弊端。这种方式非常容易受运行环境的影响,在性能高的机器上跑出来的结果与在性能低的...
限流算法
前言 在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。那么何为限流呢?顾名思义,限流就是限制流量,就像你宽带包了 1 个 G 的流量,用完了就没了。通过限流,我们可以很好地控制系统的 QPS,从而达到保护系统的目的。本篇文章将会介绍一下常用的限流算法以及他们各自的特点。 几种常见的限流方法计数器固定窗口算法计数器算法是限流算法里最简单也是最容易实现的一种算法。 比如我们规定,对于 A 接口来说,我们 1 分钟的访问次数不能超过 100 个。那么我们可以这么做:在一开始的时候,我们可以设置一个计数器 counter,每当一个请求过来的时候,counter 就加 1,如果 counter 的值大于 100 并且该请求与第一个请求的间隔时间还在 1 分钟之内,那么说明请求数过多;如果该请求与第一个请求的间隔时间大于 1 分钟,且 counter 的值还在限流范围内,那么就重置 counter。具体算法的示意图如下: 伪代码12345678910111213141516171819202122232425public class CounterTest { ...
七层网络协议
七层是指 OSI 七层协议模型,主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。 OSI 是 Open System Interconnect 的缩写,意为开放式系统互联。 OSI 七层协议模型是一个通用的模型,可以用于各种网络。它提供了一个理解和描述网络通信的框架。 OSI 七层参考模型的各个层次的划分遵循下列原则: 同一层中的各网络节点都有相同的层次结构,具有同样的功能 同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信 七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务 不同节点的同等层按照协议实现对等层之间的通信 高级图示 物理层(Physical Layer)物理层是 OSI 模型的最低层,负责数据在物理介质(如电缆、光纤)上的传输。它定义了数据的物理格式、传输速率和电信号的形式。 OSI 的物理层规范是有关传输介质的特性。这些规范通常也参考了其他组织制定的标准。连接头、帧...
ChatGPT 注册与使用完整指南
ChatGPT 简介ChatGPT 是什么?ChatGPT 是由 OpenAI 开发的大型语言模型,基于 GPT(Generative Pre-trained Transformer)架构训练而成。它能够理解和生成自然语言文本,可以回答问题、进行对话、编写代码、创作内容等。 ChatGPT 自我介绍: 我是 Assistant,一个由 OpenAI 训练的大型语言模型。我可以回答您的问题,并帮助您了解更多关于特定主题的信息。我并不具备自己的意识,只能通过我所学到的知识来回答问题。如果您有任何其他问题,请随时问我。我很乐意帮助您。 —ChatGPT 核心特点: 强大的自然语言理解能力 多轮对话上下文记忆 支持多种语言交互 可协助编程、写作、学习等多种场景 OpenAI 简介OpenAI 是一家领先的人工智能研究机构,致力于开发安全、有益的人工智能技术。 ChatGPT 关于 OpenAI 的介绍: OpenAI 是一家人工智能研究机构,致力于通过研究人工智能技术来推进人类的发展。它由一群来自业界和学术界的研究人员和专家组成,包括伯克利加州大学的 Yann LeCun 和加...
用 Ollama 轻松玩转本地大模型
摘自:https://sspai.com/post/85193 前言Ollama 一个简明易用的本地大模型运行框架。 随着围绕着 Ollama 的生态走向前台,更多用户也可以方便地在自己电脑上玩转大模型了。 快速上手Ollama【win(preview) / mac / linux】 下载页面:https://ollama.com/download Docker也可以直接使用其官方镜像。 Docker 模式下,指令可直接在 docker exec -it ollama 下运行 当你运行 ollama --version 命令成功查询到版本时,表示 Ollama 的安装已经顺利完成,接下来便可以用 pull 命令从在线模型库下载模型来玩了。 以中文微调过的 Llama2-Chinese 7B 模型为例,下述命令会下载接近 4GB 的 4-bit 量化模型文件,需要至少 8GB 的内存进行推理,推荐配备 16GB 以流畅运行。 1% ollama pull llama2-chinese 下载完成后,使用 run 命令运行模型,可直接将消息附在命令后...
ClickHouse 解决连接/查询超时(Read timeout)
JDBC 连接1jdbc:clickhouse://{host}:{port}[/{database}]?socket_timeout=600000 DataGrip 等远程连接工具
ClickHouse 安装及简单使用
官方文档 安装(CentOS 7) 检测环境许可 1grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported" 添加官方存储库 123sudo yum install yum-utilssudo rpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPGsudo yum-config-manager --add-repo https://repo.clickhouse.com/rpm/stable/x86_64 如果您想使用最新的版本,请用 testing 替代 stable(我们只推荐您用于测试环境)。prestable 有时也可用。 安装 1sudo yum install clickhouse-server clickhouse-client 启动 配置文件 编辑 /etc/clickhouse-server/config.xml,注释...
