
笔记
文章平均质量分 77
风之轩墨
代码开发就是要多学多练,别说什么不会做、没见过、没学过,一句话,不能做就赶紧去学习!
展开
-
ForkAndJoin初步使用总结
目录说明代码示例任务调用1 使用invoke调用2 使用sumbit总结一下说明初次使用ForkAndJoin框架来操作task,总结一下调用任务的两种方式。代码示例任务private static class TestTask extends RecursiveAction { private String name; private int a; private Map<String, String> map;原创 2021-07-10 21:42:22 · 391 阅读 · 0 评论 -
设计模式-装饰器模式
装饰器模式在软件开发过程中,有时想用一些现存的组件。这些组件可能只是完成了一些核心功能。但在不改变其结构的情况下,可以动态地扩展其功能。所有这些都可以釆用装饰器模式来实现。定义装饰器模式(Decorator Pattern)属于对象结构型模式。在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)。优点装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用通过使用不用装饰类及这些装饰类的排列组合,可以实现不同效果装饰器模式完全遵原创 2021-01-05 21:32:49 · 148 阅读 · 0 评论 -
设计模式-桥接模式
桥接模式当一个抽象可能有多个实现时,通常用继承来进行协调。抽象类定义对该抽象的接口,而具体的子类则用不同的方式加以实现。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和重用。如果一个抽象类或接口有多个具体实现子类,而这些子类之中有内容或概念上重叠,需要我们把抽象的共同部分各自独立开来:即原来是准备放在一个接口里,现在需要设计两个接口——抽象接口和行为接口。然后再分别针对各自的具体子类定义抽象接口和行为接口的方法和调用关系。简单来说,就是把一个对象的描述和行原创 2021-01-05 21:31:49 · 168 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式适配器模式(Adapter Pattern)把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。优点客户端通过适配器可以透明地调用目标接口。复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。在很多业务场景中符合开闭原则。缺点适配器编写过程需要结合业务场景全面考虑,可能会增加系统的复杂性。增加代码阅读难度,降低代码可读性,过多使用适配器会使系统代原创 2021-01-05 21:30:45 · 159 阅读 · 0 评论 -
设计模式-代理模式
目录说明问题来源解决方案优点缺点模式结构应用场景示例工厂工厂接口食品工厂饮料工厂静态代理代理工厂调用检查动态代理代理处理方案调用检查总结Spring中的代理第一种方式,使用xml配置第二种方式,使用注解说明在代理模式(Proxy Pattern)中,我们创建具有现有对象的对象,以便向外界提供功能接口。一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。问题来源在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些原创 2021-01-05 21:29:40 · 117 阅读 · 0 评论 -
设计模式-工厂模式(简单工厂模式、工厂模式、抽象工厂模式)
工厂模式前提开发者创造的实体类代码并不会提供给客户端,只是开放了一个接口,即工厂类。客户端在获取系统中的对象的时候,只能通过工厂类来获取对象(即使用者除了工厂类和一些简单条件,对其余代码一无所知。)定义定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。分类简单工厂模式(Simple Factory Pattern):又叫作静态工厂方法模式(Static Factory Method Pattern),有一个具体原创 2020-12-28 21:14:09 · 271 阅读 · 0 评论 -
设计模式-建造者模式
建造者模式建造者模式,又称生成器模式:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。三个角色:建造者、具体的建造者、监工、使用者(严格来说不算)建造者角色:定义生成实例所需要的所有方法;具体的建造者角色:实现生成实例所需要的所有方法,并且定义获取最终生成实例的方法;监工角色:定义使用建造者角色中的方法来生成实例的方法;使用者:使用建造者模式。示例一般来说,去快餐店点单的时候,一个套餐可能会有很多的选择,可以只需要基础的汉堡和饮料,也可以增加一些别的东西。如果定义一原创 2020-12-28 21:12:33 · 121 阅读 · 0 评论 -
设计模式-原型模式
原型模式定义用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。原型模式的克隆分为浅克隆和深克隆。浅克隆创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。深克隆创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。优点Java自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一原创 2020-12-28 21:02:22 · 75 阅读 · 0 评论 -
设计模式-单例模式
单例模式在有些系统中,为了节省内存资源、保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式。定义一个类只有一个实例,且该类能自行创建这个实例的一种模式。特点单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。优点单例模式可以保证内存里只有一个实例,减少了内存的开销。可以避免对资源的多重占用。单例模式设置全局访问点,可以优化和共享资源的访问。缺点单例模式一般没有接口,扩展困难。如果要扩展,则除了修改原来的代码,原创 2020-12-22 21:13:59 · 168 阅读 · 0 评论 -
设计模式
目录面向对象设计原则开闭原则(Open Closed Principle,OCP)里氏替换原则(Liskov Substitution Principle,LSP)依赖倒置原则(Dependence Inversion Principle,DIP)单一职责原则(Single Responsibility Principle,SRP)接口隔离原则(Interface Segregation Principle,ISP)迪米特法则(Law of Demeter,LoD)合成复用原则(Composite Reus原创 2020-11-27 21:06:16 · 98 阅读 · 0 评论 -
使用POI处理Excel的一个问题
使用POI来处理Excel的时候,遇到了一个问题,分享一下。先看代码private Map<String, Map<String, String>> getData(String sheetName, String key) throws IOException { Map<String, Map<String, String>> result = new HashMap<String, Map<String, String&g原创 2020-10-14 10:37:44 · 2079 阅读 · 2 评论 -
TestNg对表格数据的处理
使用表格的时候,如果存在过多的行数,一般建议使用缓存的方式来处理。对于自动化测试来说,在不拖动滚动条的情况下,只能看到一部分的数据。针对这种情况,可以使用scrollTop来获取数据。需要两部分的WebElement String tableCss = "div.test > div > div.-table-body"; String rowsCss = "div.test > div > div.-table-body > div >原创 2020-09-12 11:16:16 · 139 阅读 · 0 评论 -
TestNg 切换多个页签
目录说明方案敲定code后记说明当前有一个项目,因为是多个网站之间存在相互的关联(其中一个网站属于管理者,管理其他网站的各种用户信息),因此在编写自动化测试用例的时候,需要同时打开这几个网站,并且可以自由来回切换。由于自动化测试的框架和基础组件以及公共方法是我帮他们做出来的,于是,测试部的同事们把这个任务又交给了我这边。方案敲定我提出了两个方案,并且给出了demo(这里先说下方案,后面会给出代码)。第一个方案:只有一个页签,每次需要到另一个网站的时候重新输入网址来重定向。第二个方案:每次需要原创 2020-06-28 20:47:48 · 282 阅读 · 0 评论 -
关于数字的位运算
目录说明正文十进制转换二进制方法<< 左位移>> 右位移| 或运算& 并运算^异或运算~取反运算说明这里主要就是研究一下关于位计算的一些案例,所有的举例参数都使用int来操作,结果输出也是如此正文十进制转换二进制方法 private String DecimalToBinary(int decimal) { return Integer.toBinaryString(decimal); }<< 左位移a <<原创 2020-06-16 21:00:51 · 705 阅读 · 0 评论 -
java各进制转换
目录说明代码说明自己记录一下一些关于进制转换的方法,主要是二进制、八进制、十六进制和十进制之间的转换。代码package com.myself.utils;/** * convert a num form a base to another base, the number must be bigger then 0 and less then 2147483647 */public class BaseConvertTools { /** * 10 -> 2原创 2020-06-16 20:53:55 · 169 阅读 · 0 评论 -
自动化测试TestNG导出HTML报告
目录说明测试工具重写IReporter接口添加到配置说明测试组要求将测试报告以HTML的格式输出,这里简介一下官方的做法测试工具测试组使用TestNG,maven工程,需要优先添加以下配置 <dependency> <groupId>com.aventstack</groupId> <artifactId>extentreports</artifactId>原创 2020-06-02 19:18:19 · 892 阅读 · 0 评论 -
Java对超过百万级数据的Excel的处理方式(读取和写入)
目录说明写入XLXS写入一个Excel写入多个excel读取txt和csvxls 和 xlsx载体对象xls读取xlsx读取说明帮助测试做的工具。测试需要对多个导出的结果进行比较,并将比较的结果写入到一个Excel中。导出的文件格式包括:txt, csv, xls, xlxs写入的文件格式为:xlxs由于最终的写入方式是一致的,先说写入。涉及到客户产品信息,代码仅举例子说明,具体的逻辑嵌套请自行处理(测试组要求比较数据的时候需要读取的时候同步写入)。写入XLXS由于写入的数据量不确定,最少原创 2020-05-25 18:00:39 · 8425 阅读 · 0 评论 -
java关于文件操作的一些注意事项
目录说明文件删除说明最近再做一些对文件的各种操作,期间踩到了不少的坑,这里总结一下。文件删除Java对文件删除存在两种方式:File file = new File(path);file.delete();file.deleteOnExists();对于第一种,file.delete()如果file不存在则会抛出异常。但是删除是即时生效的。后来,我建议他们在代码中使用这个代码块while (file.exists()) { try { file.delete();原创 2020-05-21 14:21:50 · 534 阅读 · 0 评论 -
Java执行CMD指令
代码如下:public void execute(String command) { System.out.println("Execute the command is: " + command); if (null == command || "".equals(command)) { return; } InputStream in = null; InputStream error = null原创 2020-05-15 10:55:48 · 208 阅读 · 0 评论 -
不需要处理的java异常
目录问题记录问题记录对于一些简单的异常,因为不会影响程序的运行,因此,我们不需要去处理它,只是需要捕获,保证程序的连续性不会中断就可以了。这个时候,使用try {} catch (Exception e) {}的话,在程序中可能会存在一定的警告。为了避免这种警告,可以使用以下方式。 try { //do something } catch (Exc...原创 2020-04-13 15:01:19 · 1518 阅读 · 0 评论