自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 Java代理模式

代理模式指为其他对象提供一种代理,以控制对这个对象的访问。在某些情况下,一个对象若不能直接引用另一个对象,而代理对象可以在客户端与目标对象之间起到中介的作用。

2023-05-21 23:20:22 1068 4

原创 JVM-Sandbox--测试技术中引流回放的应用

这样,在Sandbox中就可以调用新的类和方法,从而实现Mock的功能。、故障模拟、动态日志、行链路获取等等工具,就算我开发完成了,这些工具底层实现原理相同,同时使用,要怎么消除这些工具之间的影响,怎么保证这些工具动态加载,怎么保证动态加载/卸载之后不会影响其他工具,怎么保证在工具有问题的时候,快速消除影响,代码还原。系统间的异常模拟可以使用的工具很多,可是系统内的异常模拟怎么办,加开关或是用AOP在开发系统中实现,好想开发一个更优雅的异常模拟工具,既能模拟系统间的异常,又能模拟系统内的异常。

2023-05-21 08:41:24 1331

原创 Java常用类型转换

方法将分隔符、前缀和后缀作为参数。此方法将列表转换为具有给定分隔符、前缀和后缀的字符串。字符数组:String[] ids =["aa","bb","cc"];//输出 {aa-bb-cc}(",", ids);//输出 aa,bb,cc。字符列表:List idList。//输出 [aa,bb,cc]以将集合转换为具有给定分隔符的字符串。字符串:String id =

2022-12-18 21:42:04 971

原创 JSON相关

JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。易于人阅读和编写,可以在多种语言之间进行数据交换。JSON 比 XML 更小、更快,更易解析。JSON 易于人阅读和编写。C、Python、C++、Java、PHP、Go等编程语言都支持 JSON。JSON是一个序列化的对象或数组。1. JSON对象2. JSON数组整个是一个json数组class1 也是一个json数组二、JSON的用途序列化:Object --> Jso

2022-12-05 00:01:12 448

原创 Java的属性拷贝工具类

BeanUtils.copyProperties的使用场景:DO、DTO、VO之间的转换BeanUtils.copyProperties的避坑BeanUtils的替代工具类——Mapstruct

2022-11-13 23:56:02 2185

原创 设计模式—1-工厂模式

大家熟知的23种设计模式,可以分为创建型模式、结构型模式和行为型模式三大类。其中,创建型模式是对类的实例化过程进行抽象,从而将对象的创建和使用分离开。主要有简单工厂模式、工厂方法模式和抽象工厂模式3种。

2022-10-23 23:32:10 431

原创 Spring常见注解

1、普通字符串:@Value("tttest") 直接将字符串赋值给当前字段2、占位符:@Value("${tttest}") 从环境变量、properties文件找到对应变量值赋给当前字段3、Spring表达式:@Value("#{tttest}") tttest 表示Bean对象、字符串等。4、扩展:注释在注解上, 配置文件变量 testport=8080,直接引用时 @Value("${testport}") :但是多处注释使用该变量,修改变量key时极不方

2022-07-03 22:21:08 389

转载 简单工厂模式和策略模式的区别

两种模式的UML图从图上来看,并没有多大的区别,话不多说,从具体的代码入手。先写一个人的接口类,有eat,run,wear 3个方法分别写两个实现类,一个是小明的实现类,一个是小红的实现类简单工厂模式的代码再来看下策略模式的代码策略模式的两种构造方法都可以用,我多写了一种是为了让大家看到和工厂模式的区别和联系然后我们通过测试类运行两种模式 可以看到,两种设计模式的运行结果是一模一样的,那么区别到底在哪呢。从工厂模式的代码中可以看到 工厂模式主要是返回的接口实现类的实例化对象,最

2022-06-12 23:58:18 104

原创 Java 类加载机制

输出结果?一、进行类加载 后1、先加载静态属性:加载静态属性b1, b2时,创建对象(执行构造方法前,执行构造块:构造块)-输出2次"构造块"2、再执行静态块,自动调用执行。-输出"静态块"二、再执行main方法: new B 执行构造块 - 输出"构造块"...

2022-06-12 23:46:54 82

原创 Java——泛型调用

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。一、泛型带来的好处在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本身就

2022-06-12 23:32:57 981

原创 Java应用结构规范

一 、分层结构web(前端请求层):通过调用业务层服务,处理前端的请求。biz(业务层) :提供封装好的能力,并通过对能力进行组装、编排,进行业务逻辑处理。dal(数据层):对底层数据源进行增删改查操作。client(外部请求层):定义暴露给其他应用的接口。common(外部公共层):定义暴露给外部的公共类。facade(外观层):通过调用业务层服务,处理外部应用的请求。二 、分层明细web(前端请求层): 包 子包

2022-03-16 23:55:04 2068

转载 领域驱动编程

基于领域驱动编程的核心优势在于: 实施面向对象的编程模式,进而实现高内聚、低耦合。 在复杂业务系统的迭代过程中,保证代码结构不会无限制地变得混乱,因此保证系统可持续维护。 领域驱动的代码分层可以使用不同的 Java 项目发布不同的微服务对领域进行隔离,也可以在同一个 Java 项目中,使用不同 module 进行领域隔离。这里我们使用 module 进行领域隔离的实现。但是无论采用何种方式进行领域隔离,领域之间的交互只能使用对方的二方包或者 API 层提供的 HTTP 服务,而不能直

2022-03-16 23:36:32 191

原创 Java——工具类

断言 对象、数组、集合 ObjectUtils:获取对象基本信息 StringUtils:字符串处理 ---------字符串判断工具---------------------------// 判断字符串是否为 null,或 ""。注意,包含空白符的字符串为非空boolean isEmpty(Object str)// 判断字符串是否是以指定内容结束。忽略大小写boolean endsWithIgnoreCase(String str, String suff

2022-03-06 23:27:10 200

原创 软件&工具推荐

一、OCR工具 —— Bob二、IDEA 插件lombok : 通过注解简化Alibaba Java Coding Guidelines:代码检查工具CodeGlance:代码Tab页 缩略图切换Activate-power-mode :装X利器,敲代码的动感输入三、流程图工具draw.io在线网站:Flowchart Maker & Online Diagram Software...

2022-03-06 22:58:30 227

原创 RPC 远程调用

RPC 全称是 Remote Procedure Call ,即远程过程调用,其对应的是我们的本地调用。远程其实指的就是需要网络通信,可以理解为调用远程机器上的方法。那可能有人说:我用 HTTP 调用不就是远程调用了,那不也叫 RPC 了?不是的,RPC 的目的是:让我们调用远程方法像调用本地方法一样无差别。本来没有拆分服务都是本地调用的时候方法是这样写的:publicStringgetSth(Stringstr){returnyesService...

2021-12-04 09:43:39 4003

原创 Java类加载机制&双亲委派机制

类加载阶段分为加载、连接、初始化三个阶段,而加载阶段需要通过类的全限定名来获取定义了此类的二进制字节流。Java特意把这一步抽出来用类加载器来实现。把这一步骤抽离出来使得应用程序可以按需自定义类加载器。并且得益于类加载器,OSGI、热部署等领域才得以在JAVA中得到应用。在Java中任意一个类都是由这个类本身和加载这个类的类加载器来确定这个类在JVM中的唯一性。也就是你用你A类加载器加载的com.aa.ClassA和你A类加载器加载的com.aa.ClassA它们是不同的,也就是用instanceo

2021-12-04 09:02:58 2576

原创 Java Facade 外观模式

如果客户端要跟许多子系统打交道,那么客户端需要了解各个子系统的接口,比较麻烦。如果有一个统一的“中介”,让客户端只跟中介打交道,中介再去跟各个子系统打交道,对客户端来说就比较简单。所以Facade就相当于搞了一个中介。外观模式的角色: SubSystem: 子系统角色。表示一个系统的子系统或模块。 Facade: 外观角色,客户端通过操作外观角色从而达到控制子系统角色的目的。对于客户端来说,外观角色好比一道屏障,对客户端屏蔽了子系统的具体实现。 我们以注册公司为例,假设注

2021-11-21 17:40:40 366

原创 Think More

2021-11-21 16:56:33 332

原创 中间件 - metaQ

2021-11-04 23:08:16 97

原创 Java - Lombok插件

Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。POJO:POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。在该对象中只有private属性的参数以及根据每个参数定义的get和set方法,没有其它的方法、没有类的继承、接口的实现等,更没有被其它框架侵入的java对象。例如:publ

2021-10-29 00:28:41 217

原创 Java - SPI机制

面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候不用在程序里动态指明,这就需要一种服务发现机制。java spi就是提供这样的一个机制:为某个接口寻找服务实现的机制。这有点类似IOC的思想,将装配的控制权移到了程序之外。什么情况应该把接口放入调用方,什么时候可以把接口归为实现方?1、实现方提供了接口和实现,我们可以引用接口来达到调用某实现类的功能,这

2021-10-29 00:12:55 1454

转载 JAVA - 反射机制

Class类除了int等基本类型外,Java的其他类型全部都是class(包括interface)如果获取到了一个Class实例,我们就可以通过该Class实例来创建对应类型的实例:// 获取String的Class实例: Class cls = String.class; // 创建一个String实例: String s = (String) cls.newInstance();上述代码相当于new String()。通过Class.newInstance()可以

2021-10-28 23:57:57 251

原创 Java回调函数

C、C++ 允许将函数指针作为参数传递; JavaScript、Python 允许将函数名作为参数传递。在计算机程序设计中,回调函数,简称回调(Callback),是指通过函数参数传递到其他代码的,某一块可执行代码的引用。在 main 函数中,我们异步发送一个请求,并且指定处理响应的回调函数,接着 main 函数去做其他事,而当响应到达后,执行回调函数。当我们想要换一种“处理响应”的方法时,将必须去修改 CallBack 类的 processRequest()方法。而如果将 CallBack 类

2021-10-25 00:23:51 8409 1

原创 设计模式 — 工厂模式

1、工厂方法定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。工厂方法的目的是使得创建对象和使用对象是分离的,并且客户端总是引用抽象工厂和抽象产品:┌─────────────┐ ┌─────────────┐│ Product │ │ Factory │└─────────────┘ └─────────────┘ ▲ ▲

2021-10-17 23:25:38 69

原创 Java DDD—— entity、bo、vo、po、dto、pojo等

VOvalue object:值对象通常用于业务层之间的数据传递,由new创建,由GC回收。restful 使用vo。 针对view显示,在web上传递。用一个VO对象对应整个界面的值。POpersistant object:持久层对象;最形象的理解就是一个PO就是数据库中的一条记录。对应数据库中表的字段,与数据库打交道。PO中应该不包含任何对数据库的操作。VO和PO,都是属性加上属性的get和set方法;表面看没什么不同,但代表的含义是完全不同的。Entity实体

2021-10-17 22:56:45 2252

原创 Java8 解决空指针--Optional.ofNullable/map等

NPE问题:user.getAddress().getProvince();当user为null时,可能报NullPointerException异常的。加上判空方法:if(user!=null){ Address address = user.getAddress(); if(address!=null){ String province = address.getProvince(); }}这种写法比较丑陋,JAVA8提供了..

2021-10-17 22:12:56 3714

原创 领域驱动设计

rest 使用vo。 针对view显示,前端。数据库打交道:POrpc使用DTO代码结构:用户层 interfacectl后缀结-controll应用层 service.Asvc后缀结尾-controll,对领域层服务编排领域层 Domainsvc后缀结尾-controllpo 持久化对象,数据库entity 存放数据库实体mapper 写sql语句?service放 接口和实现类。...

2021-10-17 09:40:49 148

原创 Java学习

一、框架: IOC控制反转 ——> 降低耦合度 1、私有属性保存依赖对象,且通过构造函数传入。 2、Spring控制new过程:Spring启动时先实例化依赖,再实例化所需的类。 Bean 是 Bean容器(Spring IOC容器) 生成的对象。 Bean 容器:管理类的实例化、依赖的实例化、依赖的传入 DI:依赖传入 ——》传递服务给客户端 ...

2021-09-25 23:12:36 157

原创 Linux启动流程

一、加载BIOS的硬件信息与进行自我测试,并根据设置取得第一个可启动的设备1、系统加载BIOS,并且去加载CMOS信息获取硬件配置,如启动设备查找顺序、系统时间、CPU与接口设备的通信频率等等 2、获取配置信息后,BIOS进行开机自检(Power-on Self Test,POST)。然后开始执行硬件检测的初始化。 二、读取并执行第一个启动设备内MBR的Boot Loader(grub,spfdisk等程序)BIOS指定启动设备读取磁...

2021-08-11 15:34:51 44

原创 正则表达式 及 三剑客(grep、awk、sed)

一、正则表达式是一种字符串处理的表示方式,分基础正则表达式和扩展正则表达式。常用于邮件服务器A、基础正则表达式子字符类 其它信息 SIMILAR TO [:alpha:] 匹配当前归类中的大写和小写字母字符。例如,'[0-9]{3}[[:alpha:]]{2}'匹配三个数字,后跟两个字母。 Y [:alnum:] 匹配当前归类中的数字、大写和小写字母字符。例如,'[[:alnum:]]+'匹配含有一个或多个字母和数字的字符串。..

2021-08-10 17:51:51 201

原创 Linux随记

Linux常用命令:远程文件拷贝 scp 基于ssh登陆进行安全的远程文件拷贝命令。(ssh基于SSL加密) scp -r ./test.sh [email protected]:/root/ 再输入密码登陆。telnet是明文传输,适用于局域网内。expect实现免交互:spawn scp -r ........ 执行.exp 文件。# 每行按空格或TAB分割,输出文本中的1、4项$ awk '{print $1,$4}' log.t...

2021-08-01 10:47:58 318

原创 Java基础

一次编译多处运行。JRE:Java 运行环境 JVM:Java 虚拟机 IDE:Eclipse等JVM(跨平台的核心) —> JRE—> JDK (开发工具包)Java 运行过程:· 如Hello.java (类名和文件名一致)1、编译: Javac 将源文件(如Hello.java) ——>(编译) class 字节码文件2、解释:Java Hello 运行时,JVM即时编译,将字节码文件转换成机器码。...

2021-08-01 09:13:03 86

原创 Python—多线程按顺序执行

定义三个线程ID分别为ABC,每个线程打印10遍自己的线程ID,按ABCABC……的顺序进行打印输出。from threading import Thread, Lock# 由_acquire解锁执行后释放_release锁def func(_id: str, _acquire: Lock, _release: Lock) -> None: for i in range(10): _acquire.acquire() print(f"id:{_

2021-07-22 16:13:19 782

原创 算法—KMP算法

T:"aaaaccabbaacca"P:"aacca"第一步,先维护好最长公共前缀表。 a 0 (前后字符相等的个数) aa 1 aac 0 aacc 2 aacca 0最前面补个-1,最终得到 a a c c a -1 0 ...

2021-07-13 00:03:02 172

原创 软件测试—用例设计

设计APP测试案例的时候,需要有清晰的测试思路,对要测试什么,按照什么顺序测试,覆盖哪些需求做到心中有数。测试用例编写者不仅要掌握软件测试的技术和流程,而且要对被测软件的设计、功能规格说明、用户试用场景以及程序/模块的结构都有比较透彻的理解。测试用例设计一般包括以下几个步骤:1、测试需求分析从软件需求文档中,找出待测试软件/模块的需求,通过自己的分析、理解,整理成为测试需求,清楚被测试对象具有哪些功能。测试需求的特点是:包含软件需求,具有可测试性。测试需求应该在软件需求基础上进行归纳、分类或细.

2021-07-12 17:37:38 104

转载 移动端测试—转载

一、移动端测试概述1. 网络种类多移动端有多种网络:无线网络、2G、3G、4G等,断网、网速较差及网络之间的切换时页面的显示等,这些对于移动端来说很重要。此外,在非wifi下,还需要注意网络使用量问题。2. 间断问题移动端有一个很重要的问题,一般情况下在使用软件的过程并不是长久的,这中间可能发生很多中断,如电话、短信、通知、断电等等,软件需要特殊处理这些特殊情况。打开一个页面,或在操作的过程中(点击一个按钮后),将手机屏幕锁住,再打开时,应用能否正常处理。3. 屏幕的限制图片及文字的显示;

2021-07-11 23:19:05 197

原创 算法—按个数输出字符/按数字输出中文读数

题目:给定一个仅由字母和数字组成的字符串,遍历该字符串,每遇到数字,则记录连续出现的数字,并按照该组数字的次数输出该组数字和前一组数字之间的字符串。示例:str = a2b3d4,输出aabbbddddstr = a10b3,输出aaaaaaaaaabbbstr = 2ab,不输出str = a2b,输出aaclass Solution: def printstr(self, arr): ...

2021-07-11 23:03:51 347

原创 Python—基础

Python: 不可变的对象:Numeber数字、String字符串、Tuple元组 可变的对象:List列表、Set集合、Dict字典 可迭代的对象:列表、元组、字典、集合。——enumerate等循环可迭代。初始化:元组 a=(),单个元素时注意逗号 a=(1,) 列表 a=[] 集合 a=set() 字典 a={}数组和列表的区别:数组内的数据类型必须一样,列表内的数据类型可以不一样。相对于数组,列表会...

2021-07-09 16:26:01 49

原创 逻辑题——赛马问题

题目:总共25匹马,5条赛道,最少比赛几次能够得到前三名?1、首先 25 匹马分成 5组,每组 5 匹马 ,比赛 5次,每组内能区分出 1到 5名 A组:1 2 3 4 5B组:1 2 3 4 5 C组:1 2 3 4 5 D组:1 2 3 4 5 E组:1 2 3 4 5 由于只取前3名,每组的后2名均可淘汰,这样总共就剩下...

2021-07-09 10:40:50 1286

转载 网络测试——iperf使用

Iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。官网下载链接: https://iperf.fr/iperf-download.php一、TCP性能测试为了确定网卡的最大吞吐量,可以在任意客户端运行iperf命令,iperf将尝试从客户端尽可能快地向服务端发送数据请求,并且会输出发送的数据量和网卡平均带宽值。iperf默认的运行时间是10秒钟,每隔一秒钟输出一次传输状..

2021-07-05 20:43:34 2857

空空如也

空空如也

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

TA关注的人

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