自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白T

弹指之间,码出奇迹

  • 博客(66)
  • 问答 (1)
  • 收藏
  • 关注

原创 存储(一)

反正现在存储也便宜,只要你买得起足够多的服务器,Redis 集群的容量就是无限的。还有大家都经常用的实时计算引擎  Flink,用过的同学都知道,Flink 的 State 就是一个KV 的存储,它使用的也是 RocksDB。对于我们日常编写 SQL 的一些优化方法,比如说我刚刚讲的:“尽量不要在 WEHER 条件中,对列做计算”,很多同学只是知道这些方法,但是却不知道,为什么按照这些方法写出来的 SQL 就快?这个也很好理解,增加了索引,在数据变化的时候,不仅要变更数据表里的数据,还要去变更每个索引。

2024-04-08 11:38:11 702

原创 面经 (24-4)

24年第一季度面经

2024-04-08 11:31:21 579

原创 程序员该懂的一些测试(六)软件开发各阶段自动化测试技术

Web Service 测试,主要是指 SOAP API 和 REST API 这两类 API 测试,最典型的是采。同样地,Web Service 测试“自动化”的内涵不仅仅包括 API 测试用例执行的自动化,还。同样地,Web Service 测试“自动化”的内涵不仅仅包括 API 测试用例执行的自动化,还。GUI 测试的自动化技术可能是你最熟悉的,也是发展时间最长、应用最广的自动化测试技。App)的 GUI 自动化。广义上讲,单元测试阶段的“自动化”内涵不仅仅指测试用例执行的自动化,还应该包含以。

2024-01-29 15:25:23 502

原创 程序员该懂的一些测试(五)测试工程师需要有哪些能力?

工具与策略,CI/CD 流水线设计,F5 负载均衡技术,Fiddler/Wireshark/Tcpdump 等。技术,NoSQL 非关系型数据库技术,中间件技术,Shell/Python 脚本开发,版本管理。大到网站架构设计,容器技术,微服务架构,服务网格(Service Mesh),DevOps,测试用例设计能力是指,无论对于什么类型的测试,都能设计出高效地发现缺陷,保证产品。探索性测试是指,测试工程师在执行测试的过程中不断学习被测系统,同时结合基于自己经。云计算,大数据,人工智能和区块链技术等。

2024-01-29 15:24:45 361

原创 程序员该懂的一些测试(四)测试覆盖率

就是在被测代码中自动插入用于覆盖率统计的探针(Probe)代码,并保证插入的探针代码。测试覆盖率通常被用来衡量测试的充分性和完整性,从广义的角度来讲,测试覆盖率主要分。需求覆盖率是指测试对需求的覆盖程度,通常的做法是将每一条分解后的软件需求和对应的。统计代码覆盖率的根本目的是找出潜在的遗漏测试用例,并有针对性的进行补充,同时还可。简单来说,代码覆盖率是指,至少被执行了一次的条目数占整个条目数的百分比。为两大类,一类是面向项目的需求覆盖率,另一类是更偏向技术的代码覆盖率。JaCoCo 的代码覆盖率报告。

2024-01-28 07:46:33 279

原创 程序员该懂的一些测试(三)实际项目中如何开展测试?

的语言会有不同的代码覆盖率统计工具,比如 Java 的 JaCoCo,JavaScript 的。框架选型完成后,你还需要对桩代码框架和 Mock 代码框架选型,选型的。通常,单元测试框架、桩代码 /Mock 代码的选型工作由开发架构师和测试架构师共同决。你需要确定单元测试框架的选型,这和开发语言直接相关。为了能够衡量单元测试的代码覆盖率,通常你还需要引入计算代码覆盖率的工具。码递交,都会自动触发单元测试,并在单元测试执行过程中自动统计代码覆盖率,最后。在后续的文章中,我还会详细为你介绍代码覆盖率的内容。

2024-01-28 07:45:42 310

原创 程序员该懂的一些测试(二)单元测试与集成测试

DI 容器原本的设计,另一方面,还让业务核心代码对第三方代码(也就是ApplicationContext)产生了依赖。一旦你有了测试,你就可以大胆地重构了,因为任何修改错误,测试都会替你捕获到。的初衷(关于 Spring 的设计初衷,我在《软件设计之美》中专门  有一讲分析过,如果你。晓依赖是怎么产生的,而在这段代码里,却知晓了 DI 容器,这就完全打破了 DI 容器设计。单元测试只是对每个小模块进行的测试,可以理解成每次提交的一个小功能。采用轻量级的测试手段,保证代码的正确性。有兴趣可以去了解一下)。

2024-01-27 14:31:33 156

原创 程序员该懂的一些测试(一)

从理论层面来讲,设计用例的方法有很多,如果你去翻阅测试图书或网络教程,会发现一堆让人眼花缭乱的测试方法,比如等价类划分法、边界值分析法、错误推测方法、因果图方法、判定表驱动分析法、正交实验设计方法、功能图分析方法、场景设计方法、形式化方法、扩展有限状态机方法等等,但是从软件企业实际的工程实践来讲,真正具有实用价值并且常用的只有前三种方法。驱动代码是用来调用被测函数的,而桩代码和 Mock 代码是用来代替被测函数调用的真实代码的。用,被调用的次数,以及多个 Mock 函数的先后调用顺序。

2024-01-27 11:27:30 733

原创 基于docker,k8s 搭建服务(单体docker-compose编排)

systemctl list-unit-files --type service //查看全部服务命令。systemctl status docker // 查看docker服务状态。systemctl disable docker // 关闭docker开机启动。systemctl restart docker // 重启docker服务。systemctl start docker // 启动docker服务。systemctl stop docker // 停止docker服务。

2024-01-21 10:21:50 1324

原创 springboot(application)多数据源配置

nacos 多数据源配置,注意对齐(级别之间的关系 特别是dynamic primary datasource)一开始我将dynamic 跟 primary 放在同一节别。启动不了,找不到默认数据源。

2024-01-21 08:13:38 369

原创 容器-docker 端口问题

我的docker是安装在自己机子上的虚拟机。受限于内存,不用的时候肯定是把虚拟机关闭,但是一关机。下次重启防火墙就又重新开了。所以每次启动都会重新关闭防火墙。先启动docker。这个时候就会出现下面的错误。总所周知,docker是一个容器工具。几乎能将所有能跑的程序打包成一个镜像。然后其他地方不管是什么环境。只有有docker,把镜像一丢。就能跑起来了,但是有时候简单的操作也会遇到一些不简单的问题。docker 启动后有端口冲突。

2024-01-18 22:23:24 368

原创 Java的异常与错误

不检查异常就是所谓的运行时异常,类似 NullPointerException、ArrayIndexOutOfBoundsException 之类,通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译期强制要求。这是因为在日常的开发和合作中,我们读代码的机会往往超过写代码,软件工程是门协作的艺术,所以我们有义务让自己的代码能够直观地体现出尽量多的信息,而泛泛的 Exception 之类,恰恰隐藏了我们的目的。没人能够轻易判断究竟是哪里抛出了异常,以及是什么原因产生了异常。

2023-08-27 16:39:28 153

原创 你该懂的一些八股——fianl,finally,finalize

final 变量产生了某种程度的不可变(immutable)的效果,所以,可以用于保护只读数据,尤其是在并发编程中,因为明确地不能再赋值 final 变量,有利于减少额外的同步开销,也可以省去一些防御性拷贝的必要。final 可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)。finalize 是基础类 java.lang.Object 的一个方法,它的设计目的是。

2023-08-27 16:32:43 114

原创 Java反射和动态代理有什么关系

总的来说,这道题目考察的是 Java 语言的另外一种基础机制: 反射,它就像是一种魔法,引入运行时自省能力,赋予了 Java 语言令人意外的活力,通过运行时操作元数据或对象,Java 可以灵活地操作运行时才能确定的信息。比如进行 RPC 调用,框架内部的寻址、序列化、反序列化等,对于调用者往往是没有太大意义的,通过代理,可以提供更加友善的界面。首先,它是一个代理机制。如果熟悉设计模式中的代理模式,我们会知道,代理可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成。

2023-08-27 16:24:52 159

原创 数据I/O

比如,打开 FileInputStream,它就会获取相应的文件描述符(FileDescriptor),需要利用 try-with-resources、 try-finally 等机制保证 FileInputStream 被明确关闭,进而相应文件描述符也会失效,否则将导致资源无法被释放。如果不flush,数据是不会出来的,而会一直在缓冲区,知道缓冲区满位置,但如果当前的数据不满,那么就会使程序。简单来说,同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步;

2023-08-27 16:19:03 96

原创 除了CRUD,初级程序员还需要了解的并发(一)

在 Java 5 以前,synchronized 是仅有的同步手段,在代码中, synchronized 可以用来修饰方法,也可以使用在特定的代码块儿上,本质上 synchronized 方法等同于把方法全部语句用 synchronized 块包起来。所谓锁的升级、降级,就是 JVM 优化 synchronized 运行的机制,当 JVM 检测到不同的竞争状况时,会自动切换到适合的锁实现,这种切换就是锁的升级、降级。但是,编码中也需要注意,必须要明确调用 unlock() 方法释放,不然就会一直持有该锁。

2023-08-27 16:12:39 76

原创 编码过程中需要注意哪些安全问题?

利用 SecurityManger 机制和相关的组件,限制代码的运行时行为能力,其中,你可以定制 policy 文件和各种粒度的权限定义,限制代码的作用域和权限,例如对文件系统的操作权限,或者监听某个网络端口的权限等。我认为,从 Java 语言的角度,更加需要重视的是程序级别的攻击,也就是利用 Java、JVM 或应用程序的瑕疵,进行低成本的 DoS 攻击,这也是想要写出安全的 Java 代码所必须考虑的。所以可以看出,实现安全的 Java 代码,需要从功能设计到实现细节,都充分考虑可能的安全影响。

2023-08-27 16:03:45 208

原创 Java 回调的实现方式

Java 回调的几种方式

2023-08-27 15:56:28 1583

原创 设计模式之观察者模式

定义:对象间的一种一对多的依赖关系,当一个对象的状态发货所能改变时,所有依赖它的对象都得到通知并被自动更新。例子:报纸-邮局-用户。

2023-08-01 07:45:04 532

原创 设计模式之中介者模式

用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。中介者类(主板)最核心的,封装其他对象,负责其他对象之间的交互(统筹兼顾)中介者的本质:封装交互(跟外观者模式有点像)电脑主板的功能就类似于一个中介者。例子:电脑主板和各个部件关系。经典中介者模式UML。

2023-08-01 07:37:26 381

原创 设计模式之外观模式

门面类:将交互封装起来,简化使用者的调用。本质: 封装交互,简化调用。

2023-08-01 07:30:27 367

原创 设计模式之单例模式

但是如果但很多的类都需要使用到这些配置,就会大量new 出重复的对象,造成资源浪费!在需要使用的使用才会去创建,而不去创建就不去创建。解决方法:既然这些配置都是一样的,我们其实只需要一个实例就行。因为只有一个地方去使用,也见不到效果。很多地方要用到,如果每次都new 一个对象的话,会浪费内存资源。定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。并发问题的解决,我们可以使用双检锁来升级一下,解决问题。改装成饿汉式(饿汉式有线程并发问题,懒汉式没有)场景:需要读取配置,这个用途在开发中是很常见的。

2023-08-01 07:25:38 975

原创 设计模式之模板方法模式

例子:登陆(普通用户,工作人员)

2023-07-23 17:13:32 226

原创 设计模式之策略模式

定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替代。本模式使得算法可独立于使用它的客户而变化!

2023-07-23 17:05:46 416

原创 设计模式之状态模式

状态模式的调用顺序状态模式的应用:工作流,根据不同条件判断,执行不同的业务状态模式的优点:鱼与熊掌本就不可兼得。有时候业务就是比较复杂。引入合理的设计有助理提高代码的可扩展性。提高了代码的复杂程度在所难免。什么时候选择使用状态模式?以上内容参考《研磨设计模式》

2023-07-23 16:55:56 519

原创 如何删除指定格式文件中的文件?

思路:你需要先读取到你的文件,然后使用递归的方法删除匹配到的文件。该案例是删除从极客时间下载到的文件中的 .html 文件。

2023-04-21 22:13:52 153

原创 分布式系统之间的调用——PRC

分布式系统如何互相调用

2023-04-08 22:30:00 362

原创 分布式系统——服务端监控

如何监控分布式系统

2023-04-08 22:00:00 389

原创 分布式系统如何寻址

分布式系统的寻址

2023-04-08 21:30:00 112

原创 数据库——安装常见错误

数据库安装

2022-08-28 06:00:00 1141

原创 数据库——视图

使用视图查询数据时,数据库会从真实表中取出对应的数据。

2022-08-27 16:13:56 1144

原创 数据库——存储过程

通常完成一个逻辑功能需要多条 SQL 语句,而且各个语句之间很可能传递参数,所以,编写逻辑功能相对来说稍微复杂些,而存储过程可以把这些 SQL 语句包含到一个独立的单元中,使外界看不到复杂的 SQL 语句,只需要简单调用即可达到目的。创建名称为 ShowStuScore 的存储过程,存储过程的作用是从学生成绩信息表中查询学生的成绩信息,输入的 SQL 语句和执行过程如下所示。由于存储过程是在服务器端运行的,且执行速度快,因此当客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而可降低网络负载。..

2022-08-27 15:00:00 492

原创 分布式调用——PRC

因为,两个不同的服务器上的服务提供的方法不在一个内存空间,所以,需要通过网络编程才能传递方法调用所需要的参数。但是,如果我们自己手动网络编程来实现这个调用过程的话工作量是非常大的,因为,我们需要考虑底层传输方式(TCP还是UDP)、序列化方式等等方面。简单来说,通过 RPC 可以帮助我们调用远程计算机上某个服务的方法,这个过程就像调用本地方法一样简单。举个例子:两个不同的服务 A、B 部署在两台不同的机器上,服务 A 如果想要调用服务 B 中的某个方法的话就可以通过 RPC 来做。绑定 IP 端口,用。..

2022-08-27 10:25:27 1738

原创 分布式ID

支持的并发量不大、存在数据库单点问题(可以使用数据库集群解决,不过增加了复杂度)、ID 没有具体业务含义、安全问题(比如根据订单 ID 的递增规律就能推算出每天的订单量,商业机密啊!除了高可用和并发之外,我们知道 Redis 基于内存,我们需要持久化数据,避免重启机器或者机器故障后数据丢失。就是基于这种方式来做的。数据库主键自增这种模式,每次获取 ID 都要访问一次数据库,ID 需求比较大的时候,肯定是不行的。在分库之后, 数据遍布在不同服务器上的数据库,数据库的自增主键已经没办法满足生成的主键唯一了。..

2022-08-27 10:22:28 730

原创 初探HTTP

开发必备HTTP知识

2022-08-21 16:16:07 967

原创 K8s实战——搭建集群,实现高可用!

运发开发必备,搭建1主2从k8s高可用集群!

2022-08-21 14:05:15 984 1

原创 设计模式概述与分类(浅看)

使用场景:需要频繁的进行创建和销毁的对象、创建对象耗时过多或耗费过多,但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(数据源、session工厂)操作方法:先设计一个抽象的类实现接口,并为接口中每个方法提供一个默认的实现(空方法),那么该抽象的子类可以有选择地覆盖父类的某些方法来实现需求。通过定义一个一致的接口(界面类),用以屏蔽内部的实现细节,使得使用端只需要跟这个接口发生调用,而无需关系这个子系统的细节。特例:钩子方式(可以视情况而定,要不要使用模板中的方法)...

2022-08-18 23:00:20 124

原创 Oracle使用Mybatis时候防止空参出错

Orcale在进行持久化处理的时候,如果没有在mapper 文件中将参数与实体类一一映射的话,就需要将那些可为空的值对应的参数给定javaType。另外一种解决办法就是把这个字段在mapper中赋予属性值。比如我没有传值,默认是null,那我可以使用。解决方案,要么在实体把这个参数给去掉。但我又想保留,因为数据库设计的时候就是有这个字段的。错误的描述是不能将参数映射。原因是这个参数我在入参的时候没有赋值。...

2022-08-09 21:45:00 203

原创 垃圾回收器

垃圾回收机制是Java的招牌能力,极大提供了开发效率。也是面试的热点。Java常见的垃圾回收器有哪些?总结7款经典的垃圾收集器该图是满足JDK14的红线JDK9(移除)绿色JDK13(移除)绿色框JDK14(移除)...

2022-07-18 18:30:00 99

原创 JVM——方法区

一个有效的字节码文件中除了包含类的版本信息、字段、方法及接口等信息外,还包含一项信息那就是常量池表,包括各种字面量和类型、域和方法的符号引用。常量池可以看作是一张表,虚拟机指令根据这张常量表找到要执行的类名,方法名,参数类型,字面量等类型。OOM加载大量的第三方jar包,Tomcat部署的工程过多(30-50)已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等。字节码文件中的常量池文件通过类加载子系统到方法区后就叫做运行时常量池。利用反射生成大量的类就可以把内存撑爆!...

2022-07-18 18:15:00 509

geek学习 有空就学习一点啦

geek学习 有空就学习一点啦

2024-04-23

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除