自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Git配置SSH 免密登录

前言:相信大家现在在工作中,都在使用Git吧。众所周知,Git有两种克隆代码的方式:一种是http,另外一种就是SSH。SSH免密登录,免去了每次登录都输入账号密码的繁琐,但是却需要配置在电脑上。下面我们就介绍下如何配置Git的SSH免密登录。前提:电脑已经安装了Git,已经有自己的Git账号一:生成SSH key 1)进入电脑的用户目录,在用户目录右键打开 Git 命令行窗口 2)创建SSH key。执行命令下面命令,点击三次回车!ssh-ke...

2021-09-25 18:42:17 5092

原创 Redis分布式缓存为什么可以有更高的性能

前言:我们大家都知道,系统中的常用缓存主要有两种;一种是redis,一种是memberCache。memberCache在前几年是比较流行的,现在一般公司都会用Redis分布式缓存。主要是基于Redis能支持更多的数据结构,另外呢就是Redis的高性能和抗高并发的使用。因为Redis是单线程的,那么问题来了:单线程的Redis为什么反而比多线程的memberCache还能有这么好的性能呢?【Redis单线程的线程模型后面会整理发出来】主要是基于3点原因。为什么Redis可以有更高的性能呢?1.核心

2020-12-06 11:44:48 331

原创 线程池的7大参数以及线程池处理逻辑

1.首先我们来看一下为什么使用线程池,使用线程池能给我们的系统带来什么样子的好处?①:降低资源消耗:减少了创建线程和销毁线程的次数,每个工作线程都可以重复被利用,可执行多个任务②:提高响应速度:当任务到达时,可以不用等待线程的创建就能立即执行。③:提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性。使用线程池可以统一的进行分配、调优和监控。2.如何创建线程池?根据阿里编码规范手册,我们不能使用Executors工具类来帮我们创建线程池,而是需.

2020-12-05 17:46:55 1087 1

原创 CPU时间片上下文切换

上下文切换一词,我最初是今天从阅读并发编程一书里面看到的词语。也就是从多线程执行环境里面得出来的词语,词义大体是这个样子的。CPU在执行多个线程的时候,会不断的切换执行的任务,就是单核的CPU也是执行多线程的执行的。只不过是CPU要不停的根据时间片来切换执行的任务。比如在执行A任务的时候执行到一定的时间,这个时候要切换到B任务的执行,在切换的时候会保存A任务执行的状态,然后把B执行了一个时间片...

2018-11-01 22:12:33 802

原创 Java集合框架之_泛型

泛型主要讲解以下四点:1.泛型类的使用(比较简单,此处就省略不讲解。。。)2.自定义泛型类、泛型接口、泛型方法的使用3.泛型与继承的关系4.通配符 1.自定义泛型类* 1.1:当实例化泛型类的对象时,指明泛型的类型,* 指明以后,在对应的类中所有使用泛型的位置的类型,都变为实例化中指定的泛型的类型* 1.2:如果我们自定义了泛型类型,但是在实例化中没有使用,那么默认泛型的类...

2018-07-23 12:22:27 181

原创 代理设计模式demo—纯手写

/* * 手写动态代理的使用,体会反射是动态语言的关键 *///定义接口interface Subject { void action();}// 定义目标类,被代理类class RealSubject implements Subject { @Override public void action() { System.out.println("我是被代理类目标对...

2018-07-23 12:20:41 792

原创 String字符串反转的几种方式?

这是我前段时间面试平安惠普项目的一个面试题,当时没有回答出来,特写此博客标记!//将字符串反转有几种方法!public class StringReversal { /* * 方法三:调用String对象的charAt()方法,将字符串从后往前依次取出来, * 然后添加到StringBuffer当中去,在转换成String对象 */ public static String...

2018-07-18 11:28:11 18443

原创 Java实用类之_枚举类

有关枚举类,我们主要掌握以下几点:1.如何自定义枚举类2.如何使用关键字enum定义枚举类>常用的方法:values() 返回数组形式枚举类的对象  valueof(String name) 返回枚举类对象名字为name的对象 >如何让枚举类实现接口:可以让不同的枚举类的对象调用被重写的方法,执行的效果不同。注意:被重写的方法是放在枚举类和逗号之间的大括号里面的。示例如

2018-01-09 22:21:14 551

原创 Java集合框架之_泛型

泛型主要讲解以下四点:一.泛型类的使用二.自定义泛型类、泛型接口、泛型方法的使用三.泛型与继承的关系四.通配符第二:自定义泛型类、泛型接口、泛型方法的使用  1.自定义泛型类  1.1:当实例化泛型类的对象时,指明泛型的类型,指明以后,在对应的类中所有使用泛型的位置的类型,都变为实例化中指定的泛型的类型  1.2:如果我们自定义了泛型类型,但是在实例化中

2017-10-30 21:26:43 356

原创 Java集合框架之_HashMap特性

Map集合HashMap:1.key是用Set来存放的,不可重复;value是用Collection存放的,可以重复   一个key-value对是一个Entry,所有的Entry是用Set来存放的,也是不可重复的 2.向HashMap里面添加元素时,会调用key所在类的equals()方法,如果key相同,则后者覆盖前者存储在内存中 以下是Map集合常用的方法: 1.

2017-08-08 21:46:22 939

原创 Java集合框架之_TreeSet特性

1.向TreeSet中添加是元素必须是同一类型的。否则会报错。 2.可以按照添加进集合中的元素的指定的顺序来遍历;如:String,包装类等默认按照从小到大的顺序遍历 3.当向TreeSet中添加自定义类的对象时,有两种排序方法:①自然排序 ②指定排序  3.1自然排序  要求自定义类实现java.lang.Comparable接口并重写compareTo(Object obj)方法,

2017-07-30 22:23:52 886

原创 Java集合框架之_LinkedHashSet特性

1.LinkedHashSet是HashSet的子类 2.LinkedHashSet:使用链表维护了一个添加进集合的顺序,导致我们遍历LinkedHashSet集合元素时,是按照我们添加进去的顺序遍历的(底层存储还是按照哈希算法无序存储的) 3.LinkedHashSet插入性能略低于HashSet(原因是2),但是迭代访问Set里全部元素时,有很好的性能! @Tes

2017-07-30 09:46:09 543

原创 Java集合框架之_HashSet特性

Set集合我们在开发过程中一般情况下只用到HashSet这个实现类!Set接口特点:存储的元素是无序的,不可重复的。 1.元素的无序性 != 随机性。真正的无序性,是指元素在底层存储的位置是无序的。 2.不可重复性。当向Set集合中添加相同元素的时候,后面的这个添加不进去。程序不会报错! 3.Set集合没有自己独有的方法,它的方法都是继承于Collection接口中的现有方法 4...

2017-07-30 08:52:26 926

原创 ArrayList VS LinkedList

今天给大家简单介绍以下LinkedList和ArrayList相同点和不同点:相同点:1.List接口下面的实现类,都能存放数据,可以对数据进行增删改查插的常用操作不同点:因为两个类存储数据方式的不同,决定了两个集合类的不同点。1.存储数据的结构不同ArrayList类是对数组进行了封装,实现了长度可变的数组,而且和数组采用一样的数据存储结构,在内存中分配连续的空间;L

2017-07-26 22:07:35 276

原创 Jave集合框架之_LinkedList独有特性

  LinkedList简介: LinkedList类是List接口的链接列表实现,它支持实现所有List接口可选的列表的操作,并且允许元素值是任何元素,包括null 数据结构:LinkedList采用链表存储方式,每个元素之间的前后顺序是通过引用的方式指定的 优点:对于频繁的插入和删除元素时效率比较高,而对于遍历和随机访问元素的效率就比较低了。  LinkedList类相对于Lis...

2017-07-26 20:58:40 367

原创 Java集合框架之_ArrayList常用方法

List接口继承Collection接口,可以存放一组不唯一、有序的对象。它的数据结构,导致了它的优点。 ArrayList集合类,对数组进行了封装,实现了长度可变的数组,和数组采用相同的存储方式,在内存中分配连续的空间 ArrayList优点:遍历元素和随机访问元素效率高。 List常用的方法:   增:add(Object obj) 在列表的末尾顺序添加元素,起始索引位置从0开

2017-07-19 22:28:33 907

原创 Java集合框架之_Collection接口

  1.存储对象可以考虑  ①数组  ②集合 2.数组存储对象的特点的弊端  ①一旦创建其长度不可变  ②真实的存放数组的个数是不可知的 3.集合类:Java中的集合类主要由Map接口和Collection接口派生而来。其中Collection接口有两个常用的子接口,既List接口  和Set接口。所以经常说Java集合框架有三大类接口构成(Map接口、List接口和Set接口)...

2017-07-17 21:05:06 393

原创 增强for循环和for循环的区别

以下用一个面试题,简单的阐述for循环和增强for循环的区别:示例一: @Test public void mianshiTest() { String[] str = new String[]{"赵丽颖","刘德华","范冰冰"}; for(int i = 0; i < str.length; i++) { str[i] = "张艺谋"; } for (in

2017-07-10 22:53:35 616

原创 异常之_自定义异常

如何自定义一个异常类: ①自定义的异常类继承现有的异常类 ②提供一个序列号,提供几个重载的构造器 ③注意:子类重写父类的方法,其子类抛出的异常类型只能小于或等于被重写的父类所抛出的异常类型。 ④注意:try{ } catch( ){}处理异常时,如果有多个异常类型需要catch,那么需要按照从小到大的顺序依次来处理以下就是一个简单的自定义异常类:public class

2017-06-25 22:00:07 388

原创 Java类的第5大成员_内部类

内部类具有和类一样的特性,都有属性、方法、构造器   内部类分为:①成员内部类、②局部内部类   内部类我们主要研究成员内部类,主要掌握以下三点即可:     ①如何创建内部类的对象(内部类又分为静态的和非静态的)     ②如何区分调用内部类、外部类的变量     ③局部内部类的使用示例1:一下示例为①和②的示例,代码如下public class InnerC

2017-06-20 19:24:05 445

原创 初识接口概念

接口(interface)可以看做是与类并行的一个概念 1.接口可以看做是一个特殊的抽象类,是常量与抽象方法的集合;不能包含变量和一般的方法 2.接口里面所有的常量都是通过public static final来修饰的,即使省略不写,也是默认的。 3.接口里面的所有抽象方法都是通过public abstract来修饰的,可以省略不写,也是默认的。 ★3.1 所以在开发编写代码的时候

2017-06-12 21:41:04 374

原创 设计模式之_模版设计模式

思想:当功能内部一部分是确定的,一部分是不确定的,这是我们可以把不确定的部分暴露出去,让子类去实现。方式: 编写一个抽象父类,父类提供多个子类的抽象方法,并把一个或多个方法留给子类让其实现,就是一种模版模式//此类为模版类,就是为了计算执行方法所消耗的时间的模版abstract class Template { public abstract void code(); pub

2017-06-09 22:30:55 244

原创 java关键字之_abstract

abstract 抽象的  可以用来修饰类、方法 abstract 不能用来修饰属性、构造器、private、final、static  1.abstract修饰类     ①抽象类不可被实例化     ②抽象类中有构造器(只要是类,都有构造器)     ③抽象类中,可以有普通方法,也可以由抽象方法    2.abstract修饰方法     ①格式:抽象方法没有方

2017-06-09 22:08:16 241

原创 设计模式之_单例模式

单例模式有两种:一种是:饿汉式  一种是:懒汉式饿汉式如下:class Person { //1.私有化构造器 private Person(){ } //2.私有化对象 private static Person instance = new Person(); //3.提供给外部访问的方法 public static Person getInstance(){

2017-06-09 20:34:33 222

原创 类的成员之四_静态代码块

类的成员之四_静态代码块一:.关于属性赋值的操作 ①默认的初始化 ②显示的初始化或代码块初始化(此处两个结构按照顺序执行) ③构造器中 ④通过方法对对象的属性进行修改1.代码块如果有修饰的话,只能用static2.分类:①静态代码块(用static修饰的)1.里面可以有输出语句2.随着类的加载而加载,而且只加载一次3.多个静态代码块之间按照顺序执行4.静态代

2017-06-09 19:40:29 328

原创 java关键字之—static

static 可以用来修饰属性、方法、*代码块、*内部类  static修饰属性(类变量):1.由类创建的所有对象,都共用这一个属性2.当其中一个对象对此属性进行修改,会导致其他属性对此对象的一个调用3.类变量是随着类的加载而加载的,而且独具一份4.类的静态变量可以用"类.静态变量"的形式调用5.类的静态变量的加载要早于对象,所以有了对象以后,就可以用"对象.静态变量"

2017-05-24 19:31:04 244

原创 基本数据类型、包装类、String类型之间的相互转换

@Testpublic void test2(){//基本数据类型、包装类-->到String类型的转换,调用String类型的静态方法valueOf()即可int i1 = 12;String str = String.valueOf(i1);//"10"String str1 = String.valueOf(true);//"true"System.out.print

2017-05-22 17:21:14 3033

原创 Object类之_toString()方法

1.当我们打印一个类的引用时,实际上默认是调用该类的toString()方法2.当我们打印的对象所在的类没有重写Object类的toString()方法时,默认调用的是Object类中定义的toString()方法,返回此对象所在的类及对应的对象在堆空间的首地址值(示例:com.deppon.polymorphic.Person@28278a47)3.当我们打印的对象所在的类重写了Object...

2017-05-22 09:57:20 360

原创 面向对象的特征之—多态

1.多态指的是什么? 多态性:可以理解为同一个事物的多种表现形态①方法的重载和重写 ②子类对象的多态性2.子类的多态性使用的前提 ①要有类的继承 ②要有子类对父类方法的重写3.子类对象的多态性并不适用于属性4.多态的编写:①编写父类 ②编写子类 ③父类的类型,子类的对象 实例:Person p = new Students();5.向下转型前,为了避免出现CassCastExc

2017-05-22 09:41:15 309

原创 java中的四种权限修饰符

java中的四种权限修饰符的大小:如图所示

2017-05-17 20:57:57 1191

原创 java关键字之—super

1.super可以用来修饰属性、方法、构造器①属性:当子类和父类有同名的属性时,可以通过"super.此属性"来显示的调用父类的属性若想调用子类本身的同名属性,则通过"this.此属性"来实现②方法:当子类重写父类的方法,若想再显示的调用父类被重写的方法时,使用"super.方法名"调用子类本身的方法时使用"this.方法名",当然,也可以省略不写,在系统编译的时候,自动提供thi

2017-05-17 18:54:46 301

原创 面向对象的特征之—继承(方法重载 vs 方法重写)

1.继承的关键字  extends 2.继承的格式  class A extends class B 表示A继承B(A为子类,B为父类) 3.当子类继承父类以后,父类的私有属性子类不可以直接访问,需要通过父类公开的set和get方法对父类的属性进行操作 4.子类继承父类后,除了拥有父类的结构以外,还可以定义自己特有的成分(子类比父类更强大) 5.java中的继承性只支持单继承,即一

2017-05-15 11:19:35 564

原创 java关键字之—this

1.可以用来修饰属性,方法,构造器2.this理解为当前对象或者当前正在创建的对象3.可以在构造器中通过“this(形参)”的方式显示的调用本类中其他重载的指定的构造器要求:①在构造器中必须声明在首行②如果一个类中有n个构造器,那么最多有n-1个构造器中使用了this(形参)

2017-05-13 11:06:05 442 3

原创 面向对象的特性之—初识封装

一:方法重载1.在同一个类中,方法名相同,方法的参数列表不同(1.参数的个数不同 2.参数的类型不同)2.跟方法的返回值无关二:封装性的思想①将类的属性私有化,②提供公共的(set & get) 方法来实现调用!这就实现了简单的封装!三:构造器(类的第三个成员)构造器作用:①创建对象 ②给创建对象的属性赋值1.在类中,如果不显示的声明构造器的话,程序会默认给一个空参

2017-05-08 16:44:34 273

原创 可变个数参数方法的使用

可变个数参数的方法是在jdk1.5之后的新特性,可变个数的参数就相当于参数是一个数组,原理是一样的格式:数据类型 ... 方法名例如:public int getSum(int ... args){int sum = 0;for (int i = 0; i sum += args[i];}return sum;}而此方法里面对于参数的操作是跟数组是一样的

2017-05-05 21:53:03 407

原创 成员变量 VS 局部变量

相同点:1.遵循变量声明的格式 数据类型 变量名 = 初始值 2.都有作用域不同点:1.声明的位置不同 成员变量:声明在类内部 方法外 局部变量:声明在方法里 方法的形参部分 代码块内 2.修饰符:

2017-04-27 18:24:47 659

原创 数组经典应用之—排序系列

int[] num = new int[]{4,58,65,45,5,7,9,2,75,1};System.out.println("排序前:");for (int i = 0; i System.out.print(num[i]+" ");}System.out.println();/*** 冒泡排序* 先拿第一个元素跟后面的元素两两对比,小的沉下去,大的浮上

2017-04-22 20:20:00 424

原创 数组经典应用之—杨辉三角

/*** 经典杨辉三角*  1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 * @author 378375*///1.初始化10行数组int[][] yangHui = new int[10][];//2.初始化列数for (int i = 0; i yangHui[i] = new int[i+1];}//3.给二维数组的

2017-04-22 20:00:36 418

原创 Arrays类对数组的操作

本篇文章仅提供一下常用对数组操作的方法及案例:Arrays.equals(array1, array2);Arrays.sort(array);Arrays.fill(array, val);Arrays.toString(array);Arrays.copyOf(array, newLength);Arrays.binarySearch(array, val);

2017-04-22 19:52:09 761

原创 数组的基本操作

/*** 1.查看*/String[] phone = {"iphone4","iphone4S","iphone5",null};for (int i = 0; i System.out.print(phone[i]+" ");}/*** 添加*///1.先找null元素的下标位置int index = -1;for (int i = 0; i

2017-04-22 19:46:36 260

空空如也

空空如也

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

TA关注的人

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