自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中new 一个对象发生了什么?——类加载过程

Java new 一个对象的时候,首先查看这个对象是否被加载到了内存,如果没有的话,则需要先进行该类的类加载;假设第一次加载使用这个类,那么new一个对象会发生:1.加载并初始化类2.创建对象...

2020-08-06 15:32:52 1288

原创 关于软件测试的一些基础知识

1.什么是软件测试?软件测试是指在规定的条件下对程序进行操作,发现程序错误,衡量软件质量,验证软件功能是否满足用户需求。2.什么是BUG(如果有需求规格说明并且正确)程序与规格说明之间不匹配;当没有需求规格说明判断标准以用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误;代码级的缺陷和功能级的缺陷都是BUG。3.对测试开发的理解测试开发首先离不开测试,而软件测试是指,在规定的条件下对程序进行操作,发现程序错误,衡量软件质量,并对其是否能满足设计要求和用户需求进行评估的过程;现在

2020-07-31 18:49:14 754

转载 Java的四大引用

一、引用与对象每种编程语言都有自己操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是通过“引用”。在 Java 中一切都被视为了对象,但是我们操作的标识符实际上是对象的一个引用(reference)。//创建一个引用,引用可以独立存在,并不一定需要与一个对象关联String s;//通过将这个叫“引用”的标识符指向某个对象,之后便可以通过这个引用来实现操作对象了。String str = new String("abc");System.out.println

2020-07-29 17:51:59 173

原创 HTTPS是如何加密的?

我们知道,HTTP是不安全的,它在传输过程中中间人可以拦截,获取传输和响应数据,造成数据泄露;对称加密:加密和解密用同一个密钥,客户端对数据加密,服务端解密拿到数据非对称加密:使用公钥和私钥,公钥加密的内容只能私钥解开,私钥加密的内容所有公钥都能解开;私钥只保存在服务器端,公钥可以发送给所有客户端,可以保证客户端通过公钥加密的内容中间人无法破解;但是,服务器给客户端发送公钥,公钥可能被掉包,那么如何解决公钥是假的这个问题?在HTTPS中,使用证书+数字签名来解决;将网站信息加密,再通过第三方认证

2020-07-29 15:41:39 993

原创 JVM的内存区域和垃圾回收

JVM内存区域JVM会在执行Java程序的过程中把它管理的内存划分为若干个不同的数据区域线程私有区域:程序计数器、Java虚拟机栈、本地方法栈线程共享区域:Java堆、方法区、运行时常量池1.程序计数器(线程私有)程序计数器是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器;如果当前线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是一个Native方法,这个计数器值为空;每个线程都需要有一个独立的程序计数器,各条线程间的程序

2020-07-20 19:03:08 265

原创 线程安全的Map——ConcurrentHashMap如何保证线程安全?

我们知道,HashMap是线程不安全的,在ConcurrentHashMap出现之前,JDK用HashTable来实现线程安全,但HashTable是将整个哈希表锁住,采用sychronized同步方法,所以性能很低;JDK1.7中Segment是ReentrantLock的子类,ConcurrentHashMap将数据分别放到多个Segment中,默认16个,每一个Segment中又包含了多个HashEntry列表数组static final class Segment<K,V> ex

2020-07-14 18:03:00 1304

原创 链表带环或不带环的几个经典问题

1.给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。public class Solution { public ListNode detectCycle(ListNode head) { Set<ListNode> set = new HashSet<>(); ListNode h1 = head; while(h1!=null){ if(set.contains(h1

2020-06-26 21:33:15 259

原创 sql连接查询,子查询和分页查询

内连接内连接查询,有效的去除笛卡尔积,分两种:隐式内连接:select * from A 别名1,B 别名2 where 别名1.xx=别名2.xx;显示内连接 :select * from A 别名1 inner join B 别名2 on 别名1.xx=别名2.xx;(inner可以省略)根据所使用的比较方式不同,内连接分为等值连接、自然连接和自连接三种等值连接:使用”=”关系将表连接起来的查询,查询结果列出被连接表中的所有列,包括重复列;自然连接:等值连接中去掉重复的列,形成的连接;

2020-06-24 15:38:48 460

原创 异常处理详解

异常是一个事件,发生在程序运行期间,干扰了正常运行,有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。1.异常体系结构所有异常继承自Throwable,分为错误Error和异常Exception;Error,它表示不希望被程序捕获或者是程序无法处理的错误;Exception,它表示用户程序可能捕捉的异常情况或者说是程序可以处理的异常;Error和Exception的区别:Error通常是灾难性的致命的错误,是程序无法控制和处理的(例如:JVM虚拟机运行错误、类定义错

2020-06-24 00:20:39 121

原创 String类常用方法

1.创建字符串// 方式一String str = "Hello World";// 方式二String str2 = new String("Hello World");// 方式三char[] array = {'a', 'b', 'c'};String str3 =new String(array);2.字符串的比较Java 中要想比较字符串的内容, 必须采用String类提供的equals方法.String str1 = new String("Hello");String

2020-06-22 16:30:48 345

原创 从输入url到页面加载完发生了什么?

1.浏览器的地址栏中输入URL并按下回车2.浏览器依次在浏览器缓存、系统缓存、路由器缓存中寻找,如果存在就会直接在屏幕中显示内容3.若没有,浏览器先进行域名解析(DNS解析),获取对应的IP4.根据IP建立TCP连接,三次握手5.握手成功后,浏览器会向服务器发送HTTP请求6.服务器处理请求,浏览器接收响应7.读取页面内容,进行浏览器渲染,生成dom树,解析css样式,处理js交互8.关闭TCP连接...

2020-06-17 10:20:13 315

原创 Java多线程基础

进程与线程的区别进程是系统进行资源分配的最小单位,线程是系统调度的最小单位。进程有自己的内存地址空间,线程只独享指令流执行的必要资源,如寄存器和栈。由于同一进程的各线程间共享内存和文件资源,可以不通过内核进行直接通信。线程的创建、切换及终止效率更高。线程的创建1.继承Thread类,覆写run方法public class Rabbit extends Thread { @Override public void run() { for(int i=0;i&l

2020-06-10 21:53:24 89

原创 TCP/IP协议

传输层传输层提供进程和进程之间的逻辑通信端口号:标识一台主机上唯一进程在TCP/IP协议中,用五元组标识一个通信:源IP、目的IP、源端口号、目的端口号、协议号UDP1.UDP特点无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接(减少开销和发送数据之间的时延);不可靠:没有确认机制,没有重传机制;不保证可靠交付;如果因为网络故障该段无法发送到对方,UDP协议层也不会给应...

2020-04-14 21:34:49 219

原创 HTTP协议详解

HTTP协议1.应用层的主要协议什么是协议?网络协议是计算机双方通信交流必须遵守的约定。FTP:用于文件传输访问和管理SMTP、POP3:电子邮件HTTP:超文本传输协议,万维网数据通信的基础DNS:查询服务和远程作业登陆2.概述HTTP协议是一个客户端和服务器端请求应答的标准,基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)在客户端传输和服务器通过...

2020-04-02 19:38:26 427

原创 七大基本排序详解

文章目录排序概念1.插入排序直接插入排序希尔排序2.选择排序选择排序堆排序3.交换排序冒泡排序快速排序归并排序海量数据的排序问题总结排序概念排序,就是按照其中的某个或某些关键字的大小,按递增或递减排列起来的操作;稳定性:就是两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法具备稳定性;1.插入排序直接插入排序思想:将待排序的区间分为有序区间和无序区间,每...

2020-03-15 22:32:13 361

原创 Java泛型和包装类

1.泛型简介泛型是参数化类型public class MyArrayList<E> { private E[] array; private int size; ... }尖括号 <> 是泛型的标志;E 是类型变量,变量名一般要大写;数据类型E被指定为一个参数,代表最终传入的类型,在用到的时候再指定具体类型;泛型可以用在类、方法、接口的创建中...

2020-03-11 16:48:51 445

原创 Java重要关键字static/final/abstract/this/super

1.static1.修饰成员变量static修饰的成员变量就是静态变量,反之则是非静态变量;加载类的时候就为静态变量分配内存,静态变量是属于类的,可以用类名来访问;非静态变量不属于类,必须用对象来访问;同一个类的不同实例共用一个静态属性; public class Student{ private static int age; public s...

2020-03-05 19:53:52 266

原创 Java中的多态

我们知道,面向对象有三大特征:封装、继承、多态其中封装和继承比较好理解,我们重点来谈一谈多态,首先简单回顾一下封装和继承1.封装封装简单来说就是数据的隐藏;封装的步骤:1.使用private修饰需要封装的成员变量;2.提供一个公开的方法设置或访问私有的属性;例如: set属性名(…); //设置属性名get属性名();//访问属性封装的意义:隐藏代码的具体实现细节;统一用...

2020-03-04 16:12:28 142

原创 Java方法重载和重写的区别

1.方法的重载定义:方法的重载是指一个类中定义多个同名的方法,但方法的参数类型、参数个数或参数顺序不同;不仅是一般的方法,构造方法也可以重载;方法能够在一个类中或一个子类中被重载;方法重载例子:Public class Main{ public static void main(String[] args) { System.out.println(add(1, 2))...

2020-03-03 17:04:45 164

原创 网络初识之分层模型和网络传输

1.网络初识1.OSI七层模型1.每层介绍OSI,全称是“开放式系统互联通信参考模型”第一层:物理层,网络的物理形式,集线器工作在物理层。第二层:数据链路层,负责设备之间的数据帧的传送和识别,交换机工作在数据链路层。第三层:网络层,负责地址的管理和路由的选择,例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划 出两台机之间的数据传输的线路(路由),路由器工作在网络...

2020-03-01 11:23:39 866

原创 Java静态属性和静态方法

static修饰的属性和方法就是静态属性和静态方法。普通属性 / 普通方法 都绑定着一个隐含的对象 (this),static含义就是和对象解绑,静态属性不再保存在对象(堆区)中,而是保存在类(方法区)中。注意:静态方法调用时,没有隐含着的对象,所以也就无法使用this关键字。一个类的所有的对象,是可以共享静态属性的。(可以适当看作C语言的全局变量)访问静态属性/调用...

2019-07-22 18:59:21 2439 1

原创 java>十进制转十六进制,折半查找

* 10 进制转 16 进制,计算公式如下例 * 1958 转 16 进制 * 1958 % 16 == 6 1958 / 16 == 122 * 122 % 16 == 10 也就是 A 122 / 16 == 7 * 7 < 16 * 1958 的 16 进制 为 7A6 //反转字符串 public ...

2019-07-18 17:35:47 84

原创 Java初学易错点

①byte data = (byte)300这段代码输出data为44.因为300被强转成byte型,300十六进制为13Cbyte型保留3C,即十进制的44.②再看这段代码的输出: int a=1; System.out.printf("%d%n", a); boolean b = true || (a++) == 1; System.out.prin...

2019-07-18 17:27:21 171

原创 一级指针 二级指针 指针和数组 指针数组

1.一级指针一级指针由 指向的数据类型关键词 星号* 指针名字组成例:int * p =NULL;指针变量存储的内容是指向的变量的地址在使用sizeof判断指针的字节数时,在32位机器上为4个字节,在64位机器上也是4个字节不同类型的指针除了指向的变量数据类型不同外,其解引用的权限也不同,使用位运算符时要注意数组元素个数也要参与数组类型void test(i...

2019-05-13 17:00:38 197

原创 (C语言)扫雷小游戏

用10*10的矩形布雷为了方便边缘雷的排查,定义12*12的数组,但显示10*10mine.h#define _CRT_SECURE_NO_WARNINGS#ifndef _MINE_H_#define _MINE_H_#include <stdio.h>#include <windows.h>#include <string.h>...

2019-04-14 22:09:07 166

原创 C语言实现简单的三子棋游戏

程序设计思路思路:1.打印3*3的棋盘并初始化2.设计一个菜单,选择玩或者不玩3.不玩直接退出,玩则进入游戏。电脑随机下棋,判断输赢;玩家选择坐标下棋,判断输赢。程序使用多文件编译,设计了六个函数。代码如下:three_chess.h​#ifndef _THREE_CHESS_H_ //预处理符,防止头文件被包含#define _THREE_CHESS_H...

2019-04-08 21:01:20 156

空空如也

空空如也

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

TA关注的人

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