自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (1)
  • 收藏
  • 关注

转载 Java类加载过程

类从被加载到JVM中开始,到卸载为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中类加载过程包括加载、验证、准备、解析和初始化五个阶段。1. 类加载器**类加载器的任务:**根据一个类的全限定名来读取此类的二进制字节流到JVM中,然后转换为一个与目标类对应的java.lang.Class对象实例。BootstrapClassLoader、ExtClassL...

2019-02-23 10:18:19 174

原创 白话算法-二维数组的查找

二维数据中查找是否存在某个整数 在一个二维数组中(每个一维数组的长度相同), 每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。| 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | 如上面所示,是一个符合的二维矩阵,但是这只是其中一个...

2018-08-07 18:27:11 210

原创 单例模式-java

在开发中,我们也许会用到只能实现一个实例的类的情况,也就是面向对象中重要的设计模式——单例模式,下面,就来介绍一下集中常见的单例模式以及优缺点。饿汉public class Singleton { private Singleton(){} private static Singleton singleton = new Singleton(); public stati

2017-11-09 15:18:23 267

原创 java-内存区域

首先看一张图片,显示了java虚拟机运行时数据区: 程序计数器 是一块较小的内存空间,他可以看做是当前线程所执行的字节码的行号指示器。 字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成。java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的。为了线程切换后能恢复到正确的位置,

2017-09-08 14:36:45 267

原创 数据库-触发器

触发器是一种特殊类型的存储过程,它由事件触发,而不是程序调用或手工启动,当数据库有特殊的操作时,这些操作由数据库中的事件来触发,自动完成这些SQL语句。使用触发器可以用来保证数据的有效性和完整性,完成比约束更复杂的数据约束。根据SQL语句的不同,触发器分为DML触发器和DDL触发器。DML触发器 是当数据库服务器发生数据操作语言事件时执行的存储过程,有After和Instead Of两种,Aft

2017-07-24 22:04:08 325

原创 数据库-各种范式

目的:减少数据库中的数据冗余,以增加数据的一致性泛化是在识别数据库中的数据元素、关系以及定义所需的表和各表中的项目这些初始工作之后的一个细化的过程。常见的范式有:1NF、2NF、3NF、BCNF、4NF1NF 第一范式是指数据库表的每一列都是不可分割的基本数据项,同一个列中不能有多个值,即实体中的每个属性不能有多个值或者不能有重复的属性。2NF 第二范式是在第一范式的基础上建立的。第二范式要

2017-07-24 21:47:01 353

原创 数据库-存储过程

SQL语句在执行时,要先编译。然后再被执行。 在大型数据库系统中,为了提高效率,降将为了完成特定功能的SQL语句集进行优化编译后,存储在数据库服务器中,用户通过指定存储过程的名字来进行调用。创建存储过程:create procedure sp_name@[参数名][类型] as begin `````` end调用存储过程:exec sp_name[参数名]删除存储

2017-07-23 22:16:56 436 1

原创 数据库-事务

事务是数据库中一个单独的执行单元,它通常由高级数据库操作语言(例如SQL)或编程语言(例如C++、java等)编写的用户程序的执行引起的。特性: 当在数据库中更改数据成功时,在事物中更改的数据便会提交,不再改变。否则,事物就取消或回滚,更改无效。(一损俱损)事务的四个属性(ACID): 原子性、一致性、隔离性、持久性原子性: 事务是一个不可分割的整体,为了保证事务的整体目标,必须具有原子性,即

2017-07-23 21:31:54 453

原创 数据库-内连接&外连接

内连接: 也成为自然连接,只有两个表相匹配的行才能在结果集中出现。 返回的结果集选取了两个两个表中所有相匹配的数据,舍弃了不匹配的数据。 由于内连接是从结果表中删除与其他连接表中没有匹配的所有行,所以内连接可能会造成信息的丢失。外连接: 外连接不仅包含符合链接条件的行,而且还包括左表(左外连接)、右表(右外连接)、两个边接表(全外连接)中的所有数据行。 SQL外连接包含三种: 左外连接、

2017-07-12 18:08:26 293

原创 数据库-SQL语言的功能

SQL是结构化语言(Structured Query Language)的缩写,其主要功能包括数据查询、数据操纵、数据定义和数据控制。数据查询:最常用的操作,主要通过select语句。 数据操纵语言(DML):包含插入数据、修改数据和删除数据三种。 数据定义语言(DDL):可对数据库用户、基本表、视图、索引进行定义和撤销。 数据控制语言(DCL):用于对数据库进行统一的控制管理。下面介绍一些基

2017-07-12 17:34:02 2057

原创 Maven-概述

它是一个项目管理工具 它有几大功能: 构建项目:打包、测试、代码检测、发布项目 依赖管理 配置管理 发布管理 文档编制 报告 它的几大特点: 微内核:通过插件机制实现大部分的功能,插件在maven仓库中 约定优于配置:类似Linux,不同的文件放在不同的目录下,遵循约定 项目模型:通过maven定义维护信息,项目属性POM是Project Object Model的缩写。项目的

2017-07-10 10:05:43 244

转载 如何计算时间复杂度

一、概念 时间复杂度是总运算次数表达式中受n的变化影响最大的那一项(不含系数) 比如:一般总运算次数表达式类似于这样: a*2^n+b*n^3+c*n^2+d*n*lg(n)+e*n+f a ! =0时,时间复杂度就是O(2^n); a=0,b<>0 =>O(n^3); a,b=0,c<>0 =>O(n^2)依此类推 eg: (1) for(i=1;i<=n;i++) //循

2017-06-07 09:44:30 493

原创 Linux-文件种类与扩展名

任何设备在Linux下面都是文件文件种类普通文件,在使用ls -al所显示的第一个字符为“-“的文件。普通文件又分为:1.纯文本文件:LInux’系统最多的一种文件类型,内容我们可以直接读到,例如数字,字符。几乎我们用来作为i设置的文件都是纯文本文件。2.二进制文件:我们的系统仅认识且可以执行二进制文件。3.数据格式文件:有些程序在运行程序中会读取某些特定类型的文件,这些特定格式的文件就是数据文件

2017-05-27 16:34:28 2797

原创 Linux-文件和目录的权限意义

权限对于目录与文件的意义是不同的。权限对文件的意义文件是实际含有数据的地方,包括一般文本文件,数据库内容文件,二进制可执行文件等r(read):可读取此文件的实际内容,如读取文本文件的文字内容等;w(write):可以编辑,新增或者是修改文件的内容(但是不含删除该文件)x(eXecute):可执行x的扩展。windows下一个文件是否具有执行能力是通过“扩展名“来判断的,例如.exe,.b

2017-05-24 11:11:17 421

原创 Linux-修改文件属性和权限

chgrp:修改文加所属用户组 chown:修改文件所有者 chmod:修改文件的权限修改文件所属用户组:chgrpchgrp是change group的简称,这样记忆起来方便好多。虽然通过chgrp修改文件的用户组很简单,但是需要注意被改变的组名(改变后的组名)要在/etc/group文件内存在才行,否则报错(invalid group name ‘*‘)。 -参数R:进行递归的改变,连同子

2017-05-24 10:30:22 2851

原创 Linux-文件权限

首先用命令“ls -al“查看root主目录进行查看文件: ls是“list“的意思,而参数“-al“则表示列出所有的文件详细的权限和属性(包含隐藏文件,即文件名第一个字符为“.“)total 171304dr-xr-x---. 11 root root 4096 May 22 09:17 .dr-xr-xr-x. 16 root root 4096 May 22 09:0

2017-05-22 11:19:25 257

原创 Linux-用户帐号与登录

在通过帐号和密码登录Linux主机时,系统内部做了什么呢?首先在/etc/passwd中寻找帐号是否存在,如果不存在,则跳出;如果存在,则读出uid和gid(在etc/group中),并且读取帐号的主文件夹和shell设置。接下来是核对密码是否正确。Linux系统进入/etc/shadow文件同听过帐号和uid查找到密码,然后核对与输入的密码是否一致。如果前两布正确,就能进入到shell控制管

2017-05-22 10:04:10 1115

原创 Java-Socket通信

概念: 网络上两个程序通过一个双向的通信连接实现数据交换,这个双向链路的一端称为一个Socket。 Socket也称为套接字,可以用来实现不同的虚拟机或不同的计算机之间的通信。在Java语言中,Socket可以分为两种类型:面向连接的Socket通信协议(TCP),和面向无连接的Socket通信协议(UDP)。基于TCP的通信过程: Server(服务器)端Listen(监听)指定的某个端口(

2017-05-20 10:03:10 413

原创 Java-IO流

概念:在Java语言中,输入和输出都被称为抽象的流,流可以看成一组有序的字节集合,即数据在两个设备之间的传输。流的本质是数据传输,根据处理数据类型的不同,流可以分为两大类: 字节流、字符流字节流 字节流以字节(8 bit)为单位,包含两个抽象类:InputStream(输入流)和OutputStream(输出流)。字符流 字符流以字符(16 bit)为单位,根据码表映射字符,一次可以读多个字节

2017-05-20 09:33:26 170

原创 Java-异常处理

问题引申: try{}里面有一个return语句,那么finally{}块中的代码能否被执行?如果能够被执行,什么时候执行,return前还是return后?在Java语言中,finally的作用是为了保证无论在什么情况下,finally块的代码一定会被执行,但是return语句代表着结束当前的函数,因此finally块中的代码一定会被执行,而且在return语句之前执行,如果finally中有r

2017-05-19 16:40:05 238

原创 Java-length、length()、size()区别

lengthlength是属性,用来获取数组的长度。 在C/C++中,每当调用方法传递数组时,必须同时传递数组的长度,因为在C/C++中,方法调用时传递的参数为数组的首地址,而对数组的长度无法获知,可能会导致越界问题。length()length()方法是针对字符串而言的,String提供的length()方法来计算字符串的长度。size()size()方法是用来计算对象大小的方法,是针对泛型集合

2017-05-19 16:06:40 273

原创 Java-数组初始化方式

在Java语言中: 一维数组的声明方式为: type arrayName[]或type[] arrayName 详解: type可以使基本的数据类型,也可以是类,arrayName表示数组的名字,[]表示为一维数组。 与C++的不同: 1.在Java语言中,数组被创建后,会根据数组存放的数据的数据类型初始化成对应的初始,例如int类型会初始化为0,对象类型会初始化为null; 2.另一

2017-05-19 15:45:18 318

原创 Java-数组是对象

数组的概念:数组是指具有相同类型的数据的集合,它们一般具有固定的长度,并且在内存中占据连续的空间。在C/C++中:数组名只是一个指针,这个指针指向了数组的首元素,既没有属性也没有方法可以调用。在Java中:数组不仅有其自己的属性,例如length,也有其方法可以调用,例如clone()。由于在Java中,对象的特点是封装了一些数据,同时提供一些属性和方法,从这个角度讲,数组是对象。

2017-05-19 15:26:20 281

原创 Linux-用户标识符(UID && GID)

引言:当我们登录主机,输入帐号时,Linux识别的是一组数字,也就是uid,帐号的作用是为了人们的方便记忆。id和帐号的对应关系就在/etc/passwd中。每一个文件都有所属用户和所属用户组,也就是说每一个用户至少有两个id,分别是用户id(uid),用户组id(gid)。(gid的对应关系在/etc/group中)一个应用实例: 用root用户修改/etc/passwd文件,将一般用户的ID随

2017-05-17 08:47:08 5788

原创 linux-用户与用户组

用户和组的基本概念Linux中的文件,进程都是和用户绑定在一起的; 用户的身份决定了能使用和操作的资源(文件,进程); 每个用户名有一个对应的uid; 每个用户都隶属于一个或多个组;用户分为三种类型超级管理员root用户(uid为0),鸟哥引申为“万能的天神“; 系统用户(uid为1-499); 普通用户(uid为500或以上);相关命令id:查看当前用户的信息 passwd:修改当前用

2017-05-16 22:09:28 248

原创 Linux-优势

1.与UNIX系统兼容Linux是按照POSIX1003.1标准开发的操作系统 与UNIX在功能上完全兼容 2. 广泛的硬件运行条件Linux内核短小精悍,对运行条件要求十分简单 可以在廉价的IBM PC兼容机系列386,486,Pentium上运行 甚至在只有4MB内存的80386机器上都可以正常使用 当然在小型机,大型机上也能运行 3. 强大的网络功能Linux内核支持各种网络协议,Et

2017-05-15 23:34:45 350

原创 Linux-文件操作(open、write、read、close、iotcl)

首先,介绍一下linux环境下简单c程序的执行与运行,就以HelloWorld为例。建立并编写一个.c文件。 命令:touch helloWorld.c 编写文件内容:vim helloWorld.c(当然,也可以用emacs,个人不喜欢emacs) 文件中的内容:#include <stdio.h>#include <stdlib.h>int main(){ printf("Hel

2017-04-11 00:07:55 3915

原创 Java-String、StringBuffer、StringBuilder、StringTokenizer区别

Java语言有四个类可以对字符或字符串操作,他们分别是Character、String、StringBuffer、StringTokenizer,其中Character是对于单个字符的操作,String用于字符串操作,属于不可变类,StringBuffer也用于字符串操作,不同之处是StringBuffer属于可变类。String与StringBuffer的区别String属于不可变类,Stri

2017-04-09 10:30:26 366

原创 Java-“==”、“equals”、“hashCode”比较

“==” 用来比较两个变量的值是否相等 比较变量对应内存中所存储的值是否相等,可以比较基本类型的数据或两个引用变量。 如果比较基本类型的变量,可以直接使用“==”来判断值是否相等。 如果比较引用变量,用“==”可以比较两个变量是否指向同一个对象,即判断两个变量所对应内存中的数值是否相等。但是不能比较两个对象的内容是否相等。equals equals是Object类提供的方法之一。 在没

2017-04-09 10:00:14 305

原创 Java-字符串创建与存储的机制

第一种情况 String str1 = new String(“abc”); String str2 = new String(“abc”); 这两个声明,代表存在两个对象,内容相同,但是内存地址不同,即在堆中的位置不同。只要用new总会生成新对象。第二种情况 String str1 = “abc”; String str2 = “abc”; 在JVM存在一个字符串池,里面保存很多St

2017-04-08 11:23:16 518

原创 Java-char存储中文汉字

Java中的char型变量可以存储一个中文汉字。 因为Java默认使用的是Unicode编码,即每个字符占用两个字节,中文在由两个字节组成,因此可以存储中文汉字。String是由char组成的,但是String采用了一种更加灵活的方式来存储,即英文暂占用一个字符,中文占用两个字符,这种存储方式的额优点是减少所需存储空间,提高存储效率。

2017-04-08 10:51:08 1320

原创 Java-round、ceil、floor

Math类是一个包含许多计算常量与数学方法的类,能自动导入,并且里面全是静态方法。 round、ceil、floor这三个方法就位于这Math类中。round方法表示四舍五入。 实现原理是原数字先加上0.5再向下取整 返回类型为int 等同于:(int)Math.floor(x + 0.5F); 例题: Math.round(11.5) = 12 Math.round(-11.5)

2017-04-08 09:57:54 273

原创 Java-数据类型转换

精度优先级:byte<short<char<int<long<float<double在Java语言中,当参与运算的两个变量的数据类型不同时,就需要进行隐式的数据类型转换,转换规则为:由低精度向高精度转换。类型自动转换 char类型转换为高级类型时,会转换成对应的ASCII码 基本类型数据与boolean不能互转 byte、short、char类型在参与运算时自动转换为int,但是当使用+=

2017-04-08 09:43:23 457

原创 Java-不可变类

定义:是指当创建这个类的实例后,就不允许修改它的值了,也就是说,一个对象一旦被创建出来,在其整个生命周期内,它的成员变量不允许被修改。在Java中,所有基本类型的包装类都是不可变类,还包括String。 关于String,对如下的代码进行解读:public strictfp class Main { public static void main(String[] args){

2017-04-06 15:46:00 399

原创 Java-基本数据类型

Java提供了8种原始的数据类型: byte、short、int、long、float、double、char、boolean 这些类型不是对象,是Java中不同于类的特殊类型,声明后会分配在栈上。 除了基本类型外,其他的都属于引用类型,包括类、接口、数组等,它以特殊的方式指向对象实体,它们声明时不会分配内存地址,只是存储了一个地址而已。 数据类型 大小 范围 默认值 包装

2017-04-06 15:02:38 293

原创 Java-strictfp

strictfp是输入strict float point的缩写,指的是精确浮点,保证浮点数运算的准确性。JVM在进行浮点运算时,在不同的平台上结果可能会不同,但是只要以strictfp修饰一个类、接口、方法,那么在范围内,JVM会完全按照IEEE二进制浮点数算术标准来执行(IEEE 754)。注意: 当一个类被strictfp修饰,那么所有的方法都会自动被strictfp修饰。示例:import

2017-04-05 17:29:15 292

原创 Java-instanceof

instanceof是Java语言中的一个二元运算符,作用是判断变量所指的对象是否是一个类(接口、抽象类、父类)的实例。返回值为boolean,即TRUE或者FALSE;import java.awt.List;public class Main { public static void main(String[] args){ String hello = "Hello Wo

2017-04-05 17:08:00 446

原创 Java基础-volatile作用

解决的问题: 有时为了提高程序的运行效率,编译器会进行优化,优化的方法就是讲访问的变量缓存起来,程序读取这个变量时直接到缓存(例如寄存器)中来读取,而不是去内存中读取。这样做的好处是提高了运行效率,但是遇到多线程时,有可能变量的值因为其他线程改变了,缓存中的值不会改变,这样会导致程序读取的值和实际的值不一致。解决: volatile是一个类型修饰符,它是被设计用来被不同线程访问和修改的变量。原理

2017-04-05 16:55:02 275

原创 Collection与Collections的区别

Collection是一个集合接口。它提供对集合对象进行基本操作的通用接口方法,实现该接口主要有list、set、map等,该接口的设计目标是为各种具体的集合提供最大化的同意操作方式。Collections是针对集合类的一个包装类,它提供一系列静态方法以实现对各种集合的搜索、排序、线程安全化等操作,其中大多数方法用来存储线性表。它就是一个工具类,为Collection框架服务。

2017-03-31 23:56:25 474

原创 cookie和session有什么区别

cookie是在http下,服务器或脚本能够可以维护客户工作站上信息的一种方式。它是由web服务器保存在用户浏览器上的小文件,可以包含有关的用户信息(如身份识别、密码等信息)。session用来在客户端与服务器之间保持状态的解决方案以及存储结构。相同点:都能进行信息存储。 不同点:cookie采用在客户端保持状态的方案,即数据保存在客户端的浏览器上;session采用的是在服务器端保持状态的方案

2017-03-31 23:26:00 192

链接Oracle需要的jar包

很好用的jar包

2017-03-11

空空如也

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

TA关注的人

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