自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java学习(十八)-锁的使用

一、锁类别1、悲观锁(synchronize)Java 中的重量级锁 synchronize数据库行锁2、乐观锁Java 中的轻量级锁 volatile 和 CAS数据库版本号–常用3、分布式锁(Redis锁)–常用二、实际案例库存扣减的案例,商品库存100,操作1扣减100,操作2扣减100,如何避免操作1和操作2并发时都成功造成的超卖方案1:同步排它锁(synchronize)。但是排他锁的缺点很明显:线程串行导致的性能问题,性能消耗比较大。这种读写都是需要串行么??无

2021-12-07 19:08:44 369

原创 测试-小程序打码平台

一、背景1、小程序不同于H5有线上和线下环境,而是区分开发版、体验版、正式版,并且每个版本都有对应的权限管控2、平时项目测试过程中,都是基于开发码进行测试和验收的;3、开发码生成的流程:开发分支代码本地编译打包,通过微信开发者工具将代码上传至微信服务器,然后微信服务器会返回一个二维码,通过微信环境扫这个二维码,就能打开一个测试用的小程序二、本地打码的流程1、本地环境搭建安装node,环境配置安装微信开发者工具代码权限申请测试小程序的开发者权限申请2、本地代码打包切换开发分支,

2021-11-25 19:20:50 1616

原创 Java学习(十七)-异步线程CompletableFuture

1、Future模式Future模式是多线程开发中非常常见的一种设计模式。它的核心思想是异步调用。当我们需要调用一个函数方法时。如果这个函数执行很慢,那么我们就要进行等待。但有时候,我们可能并不急着要结果。因此,我们可以让被调用者立即返回,让他在后台慢慢处理这个请求。对于调用者来说,则可以先处理一些其他任务,在真正需要数据的场合再去尝试获取需要的数据。2、CompletableFuture详解2.1、创建CompletableFuture对象1 public static CompletableFu

2021-11-23 13:25:45 497

原创 Java学习(十六)-线程与线程池学习(Thread与ThreadPoolExecutor)

一、ThreadJava创建线程Thread的三种方式1、通过继承Thread类创建线程**单继承:**编写简单,缺点是只能继承一个类,要是想同时继承其他业务类,不能实现;要想实现多继承,只能使用implements2、通过实现Runnable接口来创建线程**数据共享:**Runnable是可以实现数据共享的,多个Thread可以同时加载一个runnable**线程不安全:**当各自Thread获得CPU时间片的时候开始运行Runnable,Runnable里面的资源是被共享的,所以使用

2021-11-22 11:57:24 534

原创 explain常用详解

EXPLAIN命令是查看优化器如何决定执行查询的主要方法1、id字段包含一组数字,表示查询中执行select子句或操作表的顺序,id值越大优先级越高,越先被执行2、table字段表示该执行语句执行的表,当id字段数值相同时,执行顺序是由上至下3、select_type字段表示查询中每个select的类型(复杂or简单)SIMPLE:查询中不包含子查询或者UNIONPRIMARY:查询中若包含任何复杂的子部分,最外层查询则被标记为SUBQUERY:在SELECT或WHERE列表中包含了子查

2021-11-22 10:11:29 187

原创 Java基础(一)

Java基础(一)一、Java特点面向对象平台独立性和可移植性(任何平台可以运行,因为jvm;eclipse/javac编译java代码.class文件,再打包成.jar文件,就可以在Windows、mac、linux任何系统运行,每个系统有不同的JVM实现)容易实现多线程高性能,动态编译执行(通过JVM中的JIT(Just-In-Time)编译器在运行时将热点代码编译成机器码运行,效率高)二、运行环境JDK:开发环境JRE:运行环境...

2021-11-15 21:48:57 246

原创 前端杂笔记

一、学习遇到问题记录1、prototype 属性使您有能力向对象添加属性和方法。例如vue中使用,将ajax属性挂载在vue上,可以在代码任何地方使用import Axios from 'axios'Vue.prototype.$ajax = Axios欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdo...

2020-01-07 12:41:46 164 1

原创 jmeter测试dubbo接口

jmeter测试dubbo接口一、idea编写dubbo接口,打包插件二、引入开源插件,直接jmeter编写dubbo接口脚本

2019-08-06 11:55:29 233

原创 mitmproxy使用(二)-自定义脚本编写

1、脚本编写的两个条件1.1、编写一个 py 文件供 mitmproxy 加载,文件中定义了若干函数,这些函数实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的函数1.2、编写一个 py 文件供 mitmproxy 加载,文件定义了【变量 addons】,addons 是个数组,每个元素是一个类实例,这些类有若干方法,这些方法实现了某些 mitmpr...

2019-04-11 09:24:35 9423

原创 mitmproxy使用(三)-读取csv文件(题目和答案)并筛选接口返回的题目中答案

1、mitmproxy抓包和python脚本结合使用,提升测试效率1.1、使用场景:测试线上真实答题活动,题目100条,要验证成功题目的场景。题目不是按照顺序出来,从答题文件中寻找正确答案费时。1.2、处理方式编写脚本,抓包获取接口的题目,然后将接口中题目字段全部取出,然后读取文件中的题目内容,进行匹配,打印出对应题目的答案1.3、脚本:from mitmproxy impor...

2019-04-11 09:22:18 467

原创 Chrome插件编写实战

一、原理1.1、chrome插件(Chrome扩展-Chrome Extension)我们所描述的Chrome插件实际上指的是Chrome扩展。Chrome插件是一个用Web技术开发、用来增强浏览器功能的软件,它其实就是一个由HTML、CSS、JS、图片等资源组成的一个.crx后缀的压缩包.1.2、安装方式扩展程序中添加文件夹安装.crx格式的文件1.3、manifest.js...

2019-04-11 09:21:10 1337

原创 dubbo总结

1、dubbo1.1、概念Dubbo是一个分布式服务框架1.2、框架角色介绍Provider: 暴露服务的服务提供方。Consumer: 调用远程服务的服务消费方。Registry: 服务注册与发现的注册中心。Monitor: 统计服务的调用次调和调用时间的监控中心。Container: 服务运行容器。1.3、调用关系说明1、服务容器负责启动,加载,运行服务提供者。...

2019-03-25 21:51:42 115

原创 数据库总结

1、数据库事务的ACID1.1、数据库中的事务(Transaction)有四个特性,分别是:原子性(Atomicity)一致性(Consistency)隔离性(lsolation)–四种隔离层级:读未提交、读已提交、可重复读、串行化,持久性(Durability)1.2、数据库的通配符:%,0个或者多个字符;_,单个字符;[]。正则表达式2、mysql在并发的情况下会发生哪些问题...

2019-03-25 18:37:51 90

原创 spring之springboot总结(五)-Springboot Starter

1、SpringBoot Starterstarter可以理解为一个可拔插式的插件,是一种对依赖的synthesize(合成)2、starter的原理引入该场景的组件的所有需要的依赖:Spring Boot在启动时扫描项目所依赖的JAR包,寻找包含spring.factories文件的JAR包,引入自动配置的jar包:读取spring.factories文件获取配置的自动配置类Aut...

2019-03-25 17:40:08 173

原创 测试总结-面试相关

1、测试概念:1.1、测试类型接口测试功能测试安全测试兼容性测试性能测试探索性测试–黑盒测试白盒测试灰盒测试–单元测试集成测试系统测试–阿尔法测试贝塔测试:贝塔版本,试用版本,后期优化–冒烟测试:对系统的基本功能进行简单的测试,这种测试强调程序的主要功能进行的验证,而不会对具体功能进行更深入的测试。1.2、常见的黑盒测试方法等价类划分法:有效等价类...

2019-03-23 14:29:10 165

原创 java学习(十五)-volatile、ThreadLocal与synchronized

1.volatilevolatile主要是用来在多线程中同步变量。在一般情况下,为了提升性能,每个线程在运行时都会将主内存中的变量保存一份在自己的内存中作为变量副本,但是这样就很容易出现多个线程中保存的副本变量不一致,或与主内存的中的变量值不一致的情况。而当一个变量被volatile修饰后,该变量就不能被缓存到线程的内存中,它会告诉编译器不要进行任何移出读取和写入操作的优化,换句话说就是不允...

2019-03-23 11:14:15 151

原创 java总结-面试相关(一)

1、java中socket的server和clientserver端1.创建服务器端ServerSocket对象,ServerSocket serverSocket=new ServerSocket(9999);2.监听客户端对象, Socket socket=serverSocket.accept();3.获取输入流,读取客户端对象,BufferedReader br=new Buf...

2019-03-23 09:09:38 130

原创 spring总结-面试相关

一、bean的生命周期实例化bean—new的过程按照spring上下文对实例化的bean进行配置—IOC注入过程若Bean实现了BeanNameAware接口,则调用setBeanName方法,传递的是spring配置文件的Bean的id若Bean实现了BeanFactoryAware接口,则调用setBeanFactory方法,传递beanFactory的实例传入可以用...

2019-03-20 20:22:40 115

原创 原 java学习(十四)-java代理

一、java代理1.1、代理模式:代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。1.2、代理的种类:静态代理:...

2019-03-16 09:37:04 163

原创 spring总结(四)-Spring MVC

一、概述官方图解

2019-03-14 13:23:13 127

原创 java学习(十三)-Vector与ArrayList 、LinkList的理解

1、集合类型collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap2、Collection接口Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(elements),一些Colle...

2019-03-14 13:11:25 141

原创 java学习(十二)-HashMap、Hashtable和ConcurrentHashMap区别

1、概述HashMap:不加锁,在并发量不大的情况下高效且线程安全HashTable:全加锁,在并发量大的时候是线程安全的,但是因为加锁效率比较低ConsurrentHashMap:采用的是分段加锁,尽量对数据不加锁,相对HashMap而言更安全,对HashTable而且更加高效。2、HashMap和Hashtable区别,三个方面考虑:线程安全性,同步(synchronizatio...

2019-03-14 09:22:03 116

原创 spring总结(三)-aop

一、一些概念1.1、通用功能与业务功能解耦软件开发中,散步于应用中多处的功能被称为横向关注点。例如:日志、安全校验、过滤、异常处理等业务处理的主要流程是核心关注点。Aop 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来;但是又能相互关联1.2、术语抄表员为某些地区的住户的电表记录用电量。通知:定于了切面是什么时候以及何时使用,除了描述切面要完成的工作,还有何...

2019-03-13 13:15:39 114

原创 spring总结(三)-高级装配

一、Spring profile1.1、目的软件开发过程一般涉及“开发 -> 测试 -> 部署上线”多个阶段,每个阶段的环境的配置参数会有不同,如数据源,文件路径等。为避免每次切换环境时都要进行参数配置等繁琐的操作,可以通过spring的profile功能来进行配置参数的切换。1.2、方式项目目录内容,每个环境各有一个包,包中分别包含数据库、日志、路径等配置文件:spr...

2019-03-11 13:38:54 137

原创 spring总结(二)-注入和装配

一、装配1.1、一些概念创建应用对象之间的协作关系的行为通常称为装配,这也是依赖注入的本质。Spring的三种装配机制:(1)、在xml中进行显示装配(2)、在java中基于javaConfig进行显示的装配(3)、隐式的Bean发现机制和自动装配(注解的方式)1.2、自动化装配(1)、Spring从两个角度实现自动化装配组件扫描:Spring会自动发现应用上下文中...

2019-03-09 18:57:03 1982

原创 spring总结(一)-核心

1、Spring的使用几大好处依赖注入(DI)/控制反转(IOC),让相互协作的组件保持松耦合,对象之间能够解耦面向切面(AOP)编程,允许你把遍布应用各处的功能抽离出来形成可重用的组件,使用各种功能层包裹核心业务层,将安全、事务、日志关注点与核心业务逻辑分离开。使用模板消除样板式的代码,例如JDBC的创建连接、创建查询对象语句、到最后的关闭连接,和一些异常处理2、容器,Spring的...

2019-03-09 17:03:16 105

原创 java学习(十一)-线程和java的锁

一、线程与进程1.1、定义进程:系统进行资源分配和调度的一个独立单位.线程:进程的一个实体,是CPU调度和分派的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个进程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.1.2、区别一个程序至少有一个...

2019-03-09 14:19:30 96

原创 java学习(十)-序列化和文件处理

一、序列化与反序列化1.1、java的序列化与反序列化对象的序列化:把对象转换为字节序列的过程对象的反序列化:把字节序列恢复为对象的过程1.2、对象的序列化主要有两种用途:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;在网络上传送对象的字节序列。1.3、其他序列化形式json和xml都属于序列化,java的序列化适用于远程rpc接口,双方都是使用java对象进...

2019-03-09 11:21:07 120

原创 python使用(一)-上传到服务器文件的脚本

1、脚本使用使用场景:使用jmeter做性能测试,需要传jmx脚本到服务器中,且做分布式压测,需要将脚本传到多台服务器中;且因为前期的调试和线程数的不断调整,上传的频率较高,为了提升性能测试效率,编写python脚本,本地执行可一次性将脚本上传至所有的压测服务器脚本:import paramikossh = paramiko.SSHClient() # ssh.load_host_...

2019-03-08 09:31:48 5323 1

原创 mitmproxy使用(一)-安装和使用

1、mitmproxy的介绍2、安装与使用2.1、安装mac端安装软件:brew install mitmproxyWindows端安装软件:在https://github.com/mitmproxy/mitmproxy/releases/上下载对应的exe安装包,点击安装即可2.2、启动mitmproxy代理指定端口启动:mitmweb -p 5050指定脚本启动:mitm...

2019-03-04 09:38:07 2652

原创 java学习(九)-异常处理

1、异常处理java的异常处理机制是个简洁、轻量化的执行期间例外状况处理方式,他让你能够将处理错误状态的程序代码摆在一个容易阅读的位置。try-catch模块,告知编译器你确实值得所有调用的方法有风险,并且也已经准备好要处理它,异常是Exception类型的对象可能会抛出异常的方法必须是声明成throws Exceptiontry-catch-finally,finally是无论如何都...

2019-03-03 17:10:17 71

原创 java学习(八)-集合与泛型

1、装箱和拆箱2、ArrayListArrayList类型的声明是正确的。ArrayList声明是错误的。因为泛型的规则是你只能指定类和接口类型。后面那种声明方法无法通过编译...

2019-03-03 16:54:00 126

原创 java学习(七)-数字、静态(static)与不可变(final)

1、静态(static)java虽然是面向对象的,但若处于某些特殊情况下,通常是实用方法,则不需要类的实例,stati这个关键词就可以标记处不需要类实例的方法。static修饰类为静态类,该类不允许被实例化。静态类通过私有的构造方法,来禁止该类被实例化。例如:Math、String等statis修饰方法为静态方法,不能调用非静态的变量。也不能调用非静态的方法,非静态的方法必须是以实例变量...

2019-03-03 16:37:00 691

原创 java学习(六)-构造器与垃圾收集器

一、对象的前世今生1、java中,需要关注的两种内存空间堆(heap):对象的生存空间(包含实例变量)栈(stack):方法调用及局部变量的生存空间注意:当堆上的对象是primitive类型的,则java会根据主数据类型的大小为该实例变量留下空间,若是引用变量类型,此时java也只会留下引用量所需要的空间,而不是改引用量指向的对象的实际空间。2、构造方法每个类存在默认、无参的构造...

2019-03-03 15:41:16 81

原创 java学习(五)-Object

1、Objectobject类是所有类的来源,常用被重写的方法:equals()、toString()、getClass()、hashCode();被定义成final 的方法不允许被覆盖因为不含有必须被继承的方法,所以不是抽象类;2、目的:总结目的有两个:一是作为多态让方法可以处理多种类型的机制,二是提高java在执行期间对任何对象都有需要的方法的实现程序代码,让所有的类都会继...

2019-03-03 14:28:32 77

原创 java学习(四)-覆盖(override)与重载(overload)

1、覆盖(重写(override))原则:方法明和参数必须一样返回类型必须相同或者可兼容不能降低方法的存取权限注意:当子类引用的方法名和参数类型均与父类一致,则可看作是覆盖,其方法的返回类型必须与父类方法相同或者兼容(即为该类型或该类型子类)2、重载(overload)重载与继承和多态无关具有相同的方法名,和不同的参数可以任意修改返回类型可以修改方法的存取权限注意:方法名...

2019-03-02 21:39:15 102

原创 java学习(三)-抽象类和接口

1、概念抽奖类,是对类(包括属性和行为)进行抽象;接口,是对行为进行抽象,抽象类,一般都是知道会有子类,并抽离出其通用性规则;接口,一般不知道其实现类,只是定出一些规则子类,只能继承一个父类;实现接口类,可以实现多个接口抽奖类,可以拥有任意成员变量、也可以拥有非抽象方法;接口,只能有静态(static)、不可修改(final)的变量和抽象方法,但是jdk8之后,这种规定变化,且可以拥有d...

2019-03-02 21:28:34 118

原创 java学习(二)-封装、继承、多态

1、封装1.1、概念:隐藏对象的属性和实现细节,仅对外提供公共访问方式。1.2、优点:使代码模块化,隐藏类的实现细节,提高安全性;让使用者只能通过程序员规定的方法来访问数据;(private、default、protected、public)可以方便的加入存取控制语句,限制不合理操作2、继承2.1、概念:从子类中找到共同的属性和抽象,抽象出来的内容为父类...

2019-03-02 21:16:54 124

原创 java学习(一)-基本概念

一、基本概念1、编译器、JVM与解释器Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。JVM:JVM有自己完善的硬件架构,如处理器、堆栈(Stack)、寄存器等,还具有相应的指令系统(字节码就是一种指令格式)。JVM屏蔽了与具体操...

2019-03-02 20:07:37 108

原创 python基础知识总结(2)

二、高级1、一些概念正则使用json使用

2019-02-24 11:30:23 74

空空如也

空空如也

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

TA关注的人

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