自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python之列表和元组的区别

列表和元组首先介绍列表。列表非常适合存储那种在程序运行期间可能变化的数据集,也就是说,列表是可以修改的。从定义上说,列表是用一对方括号括起来的数据集,就像这样:nums = [1,2,3,4,5]。如果要对列表元素进行修改,比如说,在末尾添加元素,可以这样操作:nums.append(6)接下来看看元组。如果有的时候我们需要创建一系列不需要修改的元素,那么就需要用到元组。与列表不...

2020-01-02 20:40:09 469

原创 Mac Pro安装python3时遇到的各种问题

用Homebrew安装Mac电脑的一些工具时,可能遇到的问题:首先得安装Homebrew,官网上已经给出了要用的脚本:也可以直接复制下面给出的这个(我也是从官网copy的。。。)/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"在这一步,可能会...

2019-12-05 15:54:53 1235

原创 什么是归因模型

归因模型:从度娘上找来的结果是,在完成转化的路径中,客户可能会进行多次搜索,与同一广告客户的多个广告互动。通过指定归因模型,可以选择为每次点击分配多少转化功劳。也就是说,它可以把转化功劳归于用户的首次点击,最终点击或者一组点击等。通俗来说,归因模型可以帮助广告主更好的了解投放广告的效果,并优化用户的转化路径。可能这样枯燥的解释过于抽象,后面可以举个例子来说明。先说一下归因模型都有啥吧。最终...

2019-12-04 14:02:48 2207

原创 HTTP请求的get和post方法有什么区别

HTTP请求的get和post方法有什么区别从安全性角度来说,get方法提交的数据会附在URL后边,而post方法提交的数据是放在HTTP的body体中。所以,get提交的数据会在地址栏显示出来,而post不会,所以一般来说post提交会比较安全。从传输数据的角度来说,由于浏览器对地址长度的限制,所以get提交对传输的数据有限制,而post传输的数据大小一般根据配置文件决定,也可以无限大。...

2019-09-24 00:47:40 348

原创 HTTP与TCP的区别

HTTP与TCP的区别首先建立一个TCP连接,需要经过三次握手的过程,握手的过程不包含任何的数据。而HTTP连接最显著的特点是客户端每次发送的请求服务器端都要做出响应,请求结束后,会主动释放连接,从建立链接到释放连接的过程就是一次连接。由于HTTP每次请求结束后都会自动释放连接,所以如果要保持客户端在线的状态,就要不断向服务器端发送连接请求,服务器端收到后,做出响应,表明知道客户端在线...

2019-09-24 00:46:28 1124

原创 Cookie和Session的区别

cookie和session的原理及区别cookie是客户端会话的一种存储机制,是服务器在本地机器上存储的一小段文本或者内存中的一段数据,并且随着每一次请求发送到服务器端。session是服务器端信息管理机制,把这些文件信息以文件的形式存储在服务器的硬盘空间上,也可以放在内存中,当客户端向服务器发出请求时,要求服务端产生一个session,服务器会先检查客户端的cookie里有没有sessio...

2019-09-24 00:44:43 735 1

原创 【剑指offer】数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路:方法一:定义一个Map集合,key存储数组中出现的数字,value是数字出现的次数。遍历这个数组,如果当前Map集合为空,直接将第一个数字放入集合,出现次数为1,如果当...

2019-08-26 00:26:01 156

原创 测试的分类

这篇文章主要是我对部分测试的理解:1、单元测试单元测试就是对软件中某一具体模块进行测试,比如说,我们女生经常用的美颜相机,既可以使用贴纸,也可以加滤镜,单元测试就是对加滤镜这一部分进行测试,所以单元测试又称为模块测试。这一过程一般是由白盒测试工程师或者开发人员根据代码注释和详细的设计文档进行测试,测试内容包括模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试等。...

2019-08-22 17:22:44 336

原创 【剑指offer】求二叉树中和为某一值的路径

题目:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)思路:要打印出所有从根节点到叶子节点并且符合条件的路径,很明显,这是一个深度优先遍历,我们可以采用先序遍历的方法遍历这棵二叉树。具体的处理逻辑是,每遍历一条路径,如果节点之和恰好等于给...

2019-08-22 11:02:52 180

原创 测试用例及测试流程

什么是测试用例?测试用例是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等。注意:一条测试用例的最终结果只有一个。成功或者失败。(测试用例可以指导我们进行测试,包含了输入的数据,操作步骤,环境,预期结果等)编写测试用例的方法基于需求:除了正常情况,也有异常的情况等价类:针对输入数据多,没法完全进行测试,归类进行测试边界值:取值注意开...

2019-08-21 23:51:51 2029

原创 【剑指offer】二叉搜索树的后序遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:首先,我们需要知道二叉搜索树的特点,即所有左子树的节点值都小于根节点的值,所有右子树的节点值都大于根节点,并且左右子树也满足这一特点。而后序遍历有一个特点,就是,先遍历左子树,再遍历右子树,最后遍历根节点,并且数组中最后一个元素的值就是根节点...

2019-08-21 21:13:06 118

原创 【剑指offer】从上往下打印二叉树

题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:这道题需要借助队列来实现,队列具有先进先出的特点,先将这棵树的根节点放入队列,只要队列不为空,从队列中出掉最早进入的一个节点,判断这个节点的左子树是不是空,不为空的话入队列,再接着去判断右子树是否为空,不为空再入队列,将出掉的这个节点的值放入一个提前准备好的存储遍历结果的list中,重复前面这些打印步骤,直到队列为空。画图来...

2019-08-20 21:37:55 145

原创 【剑指offer】栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:定义一个新的栈stack,遍历给定的“压入栈”,把“压入栈”中的元素依次放入新栈...

2019-08-20 00:53:00 159

原创 【剑指offer】顺时针打印矩阵

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ,则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路:这道题就相当于不停地收缩边界,定义四个变量,up,down,left,right,分别代表上下左右边界。1...

2019-08-19 17:44:15 139

原创 【剑指offer】交换数字位置,使得奇数在前,偶数在后

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路:方法一:最容易想到的办法,定义一个新的数组,再遍历两次原来的数组,第一次遍历找出所有奇数存放在新的数组里,第二次遍历找出所有的偶数存放在新的数组里,最后输出新数组里的内容。直接看代码:public static...

2019-08-17 18:02:47 463

原创 【剑指offer】请找出旋转数组中最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:方法一:由于这是一个非递减排序的旋转数组,所以如果当前元素大于它的下一个元素,那就说明下一个元素就是最...

2019-08-15 10:39:55 108

原创 Java集合框架之Map接口

写在前面这篇文章我接着来总结Java结合框架中的另一个接口:Map接口。 Collection接口的特点是每次进行单个对象的保存,如果现在要进行两个对象的保存就只能用Map接口来实现,且这两个对象的关系是:key=value结构。这个结构最大的特点是可以通过key找到对应的value内容。 ...

2019-08-10 18:02:17 250

原创 哈希表

什么是哈希表?哈希表底层存元素实际上就是一个数组,但是它与普通数组的区别是什么呢?假设有一个普通数组int[] arr = new arr[5];,里边只存储一种类型,它默认从第一个元素存储到最后一个元素。而哈希表有两个类型<K,V>,实际存储的是V,它存储的下标是按照K值进行哈希运算,哈希运算得到的是V存储的索引下标。首先根据hash(K)得到一个整型int index,然后...

2019-08-10 16:01:35 156

原创 hashcode与equals的关系

hashcode与equals的关系hashCode():将任意一个对象根据指定的算法转为32位intequlas():比较两个对象是否相等equals相等的两个对象,hashCode一定相等。hashCode相等的两个对象,equals不一定相等。理解:我们可以把hashCode()想象成一个函数f(x),equals就相当于是x轴坐标,比如说我们学过的二次函数图像,当x轴相等的时...

2019-08-10 14:43:48 4196

原创 jcl中的fail-fast机制,fail-safe机制

1、什么是快速失败?快速失败就是优先考虑出现异常的情况,若异常产生,抛出异常,程序终止。举个栗子:public static int div(int a,int b) { if (b == 0) throw new IllegalArgumentException("除数不能为0!"); return a/b;}2、jcl为何会...

2019-08-07 12:04:52 253

原创 线程池(******)

这部分我将介绍线程池的两个接口(普通调度池,定时调度池)和两个类(线程池核心类,线程池工具类)。线程池优点:线程池里有很多已经创建好的线程,提高线程的可管理性线程已经创建好,当任务到达的时候可以直接执行,执行任务速度较快,任务到达可以很快处理线程的可重复利用率比较高线程池的工作流程(四大核心组件)1)核心池2)阻塞队列3)最大线程池4)拒绝策略工作流程:1、若核心池未...

2019-08-07 10:53:12 157

原创 Lock体系(JDK 1.5)

1.3 JDK1.5提供的Lock锁使用ReentrantLock进行同步处理class MyThread implements Runnable { private int ticket = 500; private Lock ticketLock = new ReentrantLock(); @Override public void run() {...

2019-08-07 07:47:24 166

原创 生产者-消费者模型

生产-消费者模型(等待与唤醒机制)synchronized + wait()/notify():必须在同步代码块或同步方法中执行(所以肯定获取到了锁)notify():只唤醒一个线程,且是随机醒一个调用wait:进入等待队列调用线程进入等待队列,释放锁任意一个锁对象只有一个等待队列,所有线程对象调用wait()都置入同一个等待队列,调用notify或notifyAll()会唤醒不该...

2019-08-06 16:31:59 188

原创 初学python

Python是一种跨平台的编程语言,它能够运行在所有的操作系统中。在学习Python之前,我们首先需要检查自己的计算机是否安装了Python,同时,还需要安装一个文本编辑器,用于编写和运行Python程序。...

2019-08-05 21:08:16 141

原创 软件测试的基础概念及理解

什么是软件测试?软件测试就是为了验证一个软件的功能是否满足用户的需求。一款产品上线之前必须通过测试人员测试,测试它是否符合用户的要求,尽可能多的发现缺陷,以保证用户体验,测试在一个项目的开发过程中是非常重要的一环,测试人员就是产品上线前的最后把关者,只有测试通过了才可以发布上线。软件测试的目的软件测试首先是为了验证这个软件是正确的,然后尽可能多的找出软件中可能存在的问题,最后使它能够满足用户...

2019-08-05 21:06:31 2586

原创 C语言指针的总结

指针是什么?在计算机科学中,指针(pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到 所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。 通俗的说,指针就是一个变量,一个用来存...

2019-08-05 21:04:29 118

原创 C语言数组的总结

所谓数组,是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按无序的形式组织起来的一种形式。 这些无序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。一维数组...

2019-08-05 21:01:39 440

原创 常用JVM性能监控与故障处理工具

JDK内置的JVM工具Linux下如何查看JVM进程ID?查看任意一个进程的ID:PID+grep输出当前操作系统下所有JVM进程ID:jps -l (-l可以输出包名.name),可看出哪个主类对应的JVMbin目录下常用六大命令的名称以及用途:1、jps:虚拟机进程状态工具查看当前操作系统所有JVM进程,返回进程ID命令格式:jps [options] [hostid]...

2019-08-05 15:42:48 255

原创 JVM——垃圾收集器

垃圾收集器上图是7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们之间可以搭配使用。并行(Parallel):指多条垃圾收集线程并行工作,用户线程仍处于等待状态。并发(Concurrent):指用户线程与垃圾收集线程同时执行(不一定并行,可能会交替执行),用户程序继续运行,而垃圾收集程序在另外一个CPU上。吞吐量:就是CPU用于运行用户代码的时间与CPU总消耗时间的比值...

2019-08-05 12:06:52 244 2

原创 JVM——GC

JVM(Java Virtual Machine),Java虚拟机,通过软件模拟Java字节码的指令集,JVM只是保留了PC寄存器,其它的寄存器都进行了裁剪。JVM是一台被定制过的现实当中不存在的计算机。1、Java内存区域划分一般来说,JVM所管理的内存包含以下几个运行时数据区域:线程私有区域:-程序计数器:记录当前线程正在执行的字节码行号指示器(通俗的说就是当前线程跑到哪一行...

2019-08-04 21:49:32 144

原创 Java反射

1、初始反射反射是一切EE框架的基础,它指的是对象的反向处理,即根据对象倒推类的组成。反射核心的处理就在于Object类的一个方法:取得Class对象public final native Class<?> getClass();Class类描述的就是各个类的组成(构造方法、普通方法、普通属性等)。2、Class类的三种实例化方式任何一个类的Class对象由JVM加载类后产...

2019-08-04 20:06:19 157

原创 Java I/O练习:文件拷贝

使用程序来实现文件拷贝:建立一个CopyFile程序类,这个类通过初始化参数接收源文件与目标文件路径。分析:1)要实现数据拷贝需要通过流的方式来实现,对于流有两类,由于要拷贝的内容不一定是文字数据,所以采用字节流。2)在进行拷贝的时候,首先在程序中开辟出一个数组,该数组长度为文件长度,将所有数据一次性读取到改数组中随后进行输出保存,接着采用边读边写的方式完成。首先建立一个专门负责文件拷...

2019-08-02 23:42:24 270

原创 Java I/O

1、File文件操作类1.1 File类使用java.io.File是是一个普通的类,可以通过两个构造方法直接产生实例化对象:public File(String pathname);public File(String parent,String child); —— 设置父路径和子路径File类提供了以下方法对文件进行基本操作:创建一个新文件:public boolea...

2019-08-02 21:36:38 123

原创 双重枷锁单例模式

public class Singleton1 { private static volatile Singleton1 SINGLETON; 保证这个单例的对象一定是属性全部初始化之后的单例对象不会指令重排,return的这个SINGLETON一定是所有属性完全初始化之后的单例对象 private Singleton1() {} // 线程2 public st...

2019-08-01 23:25:41 989

原创 Java线程的同步与死锁

什么是多线程同步?所谓的同步指的是所有线程不是一起进入到方法中执行,而是按照顺序一个一个进来。多线程同步1. synchronized对象锁处理同步问题1.1 synchronized的使用使用synchronized关键字处理线程同步有两种模式:同步代码块和同步方法使用同步代码块锁的是任意对象,锁的是类的反射对象class MyThread implements...

2019-07-29 20:24:48 214

原创 Java多线程的实现和常用方法

进程:操作系统中程序的一次执行周期,比如说打开关闭QQ,进程是资源分配的最小单元。线程:进程中的一个子任务,比如说收消息发消息,是任务分配的最小单元。进程和线程的区别:1)线程依赖进程,创建和销毁一个线程比创建和销毁一个进程的开销小。2)线程间通信比进程间通信简单。1、线程状态2、多线程创建方式2.1 继承Thread类实现多线程新建一个线程最简单的方法就是直接继承Thre...

2019-07-29 12:41:58 169

原创 Java抽象类与接口

1、抽象类的定义与使用抽象类只是在普通类的基础上扩充了一些方法而已,所谓的抽象方法就是只声明而未实现的方法。所有抽象方法要求使用anstract关键字来定义,并且抽象方法所在的类也要使用abstract关键字来定义,表示抽象类。注意:抽象类不能直接产生实例化对象。1.1 抽象类的使用原则所有抽象类必须有子类抽象类的子类必须覆写抽象类的所有抽象方法(子类不是抽象类)抽象类的对象可以...

2019-07-28 00:41:23 154

原创 Java重载与覆写

1、方法重载定义:方法名称相同,参数列表不同(参数的类型、顺序或个数不同)。   方法的返回值一定相同   举个例子:public class Test { public static void main(String[] args) { System.out.println(add(5,5)); System.out.println(add(3...

2019-07-27 08:53:53 215

原创 Java继承的定义与使用

继承的主要作用在于,在已有的基础上继续进行功能的扩充。1、继承的实现使用extends关键字实现继承:class 子类 extends 父类子类不仅可以直接继承父类的操作,实现代码重用,也可以进行功能的扩充,比如扩充属性和方法。class Person { private String name; private int age; public String ...

2019-07-27 01:09:29 179

原创 Java内部类的定义与使用

1、基本概念内部类:定义在一个类的内部进行其他类结构的嵌套操作。虽然内部类破坏了程序的结构,但是内部类也可以方便的操作外部类的私有访问。2、内部类为什么存在?1)内部类方法可以访问该类定义所在作用域中的数据,包括被private修饰的私有数据2)内部类可以对同一个包中的其它类隐藏起来3)内部类可以实现单线程的缺陷4)当我们想要定义一个回调函数却不想写大量代码的时候,可以选择用匿名内部类...

2019-07-27 00:23:12 299 2

空空如也

空空如也

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

TA关注的人

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