Java基础概念
文章平均质量分 79
一位远方的诗人
天赋被努力完美释放!
展开
-
实现线程同步的方法
一、实现线程同步的方法1.同步方法 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。 代码如:public synchronized void save(){}注意:同步方法(非static方法)无须显式指定同步...原创 2017-11-07 19:05:59 · 1462 阅读 · 0 评论 -
JDK动态代理原理:只能代理接口,不能代理类
动态代理是许多框架底层实现的基础,比如Spirng的AOP等,其实弄清楚了动态代理的实现原理,它就没那么神奇了,下面就来通过案例和分析JDK底层源码来揭秘她的神秘面纱,让她一丝不挂地呈现在我们面前,邪恶了。。。一、代理模式定义存在一个代理对象,并且这个代理对象持有真实对象的引用,以实现对真实对象的访问控制。1、举个例子,现在公司一般都有VPN,使我们在家也能访问到公司的内网(比如连接公...原创 2017-09-06 11:47:18 · 6679 阅读 · 0 评论 -
java之动态绑定和静态绑定机制(重点)
在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding)和动态绑定机制(auto binding)。★ 静态绑定机制Java代码//被调用的类 packagehr.test; classFather{ publicstaticv...转载 2019-07-27 15:16:42 · 652 阅读 · 0 评论 -
JNDI认识与使用
一、JNDI 概念1、JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),即:命名服务和目录服务,JNDI就是通过对应用程序服务组件命名,让该名字可以映射到具体应用程序服务组件,从而实现使用组件,不用关心组件的具体实现细节。降低了耦合性,更方便使用和管理。类似于域名服务器(DNS)。通过域名映射具体的ip。通过JNDI我们可以...原创 2017-09-15 09:55:56 · 259 阅读 · 0 评论 -
枚举的详细用法
用法一:常量在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switchJDK1.6之前的switch语句只支持int,char,e...原创 2017-09-08 13:00:35 · 645 阅读 · 0 评论 -
java之枚举的使用方法
一、枚举的定义(JDK 5新增的 enum 关键字用于定义一个枚举类)1、用enum定义类(枚举类)默认继承了java.lang.Enum类而不是继承了Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口。(enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java...原创 2017-09-08 12:02:10 · 371 阅读 · 0 评论 -
Java之代理proxy
一、代理模式为其他对象提供一种代理以控制对这个对象的访问。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法。jdk动态代理是由Java内部的反射机制来实现的,cglib动态代理底层则是借助asm来实现的。总的来说,反射机制在生成类的过程中比...原创 2017-08-03 16:35:31 · 687 阅读 · 0 评论 -
PrepareStatement与Statement的区别
(一)Statement接口:用于执行静态 SQL 语句并返回它所生成结果的对象,在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。因此,如果读取一个 ResultSet 对象与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成的。如果存在某个语句的打开的当前 ResultSet 对象,则 Statement 接口中的所有执行方法都...原创 2017-08-02 08:58:45 · 385 阅读 · 0 评论 -
java类加载器
1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:1) 装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用转换为直接引用;3)初始化:为类的静态变量赋予正确的初始值...原创 2017-06-05 18:59:48 · 145 阅读 · 0 评论 -
java中的注解
一、java中的注解注 解 接 口 应 用 场 景 目 的 Deprecated 全部 将项标记为过时的 SuppressWarnings 除了包和注解之外的所有情况 阻止某个给定类型的警告信息 Override 方法 检查该方法是否覆盖了某一个超类方法 PostConstruct 方法 被标记的方法应该在构造之后立即...原创 2017-06-06 17:08:10 · 175 阅读 · 0 评论 -
JDBC中Statement、PreparedStatement和CallableStatement的使用
一、JDBC相关操作的接口和类(一)JDBC相关操作的接口和类在java.sql包中:1、Statement、PreparedStatement和CallableStatement都是接口(interface)。(二)Statement1、Statement继承自Wrapper,Statement接口提供了执行语句和获取结果的基本方法;2、支持普通的不带参的查询SQL;...原创 2017-06-15 22:42:59 · 531 阅读 · 0 评论 -
java之反射机制
一、Java反射机制概念与类加载器在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。defineClass(stri...原创 2017-08-03 14:34:57 · 197 阅读 · 0 评论 -
java开发变量命名规则
使用前注意事项:1、由于Java面向对象编程的特性, 在命名时应尽量选择名词2、驼峰命名法(Camel-Case): 当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时,首字母以小写开头,每个单词首字母大写(第一个单词除外)。如:myFirstName一 包名的书写规范 (Package)推荐使用公司或机构的顶级域名为包名的前缀,目的是保证各公司/机构内所使用的包名...原创 2017-05-18 15:16:09 · 1274 阅读 · 1 评论 -
java中路径的区分
java中全限定类名是指某个文件在项目中的位置,格式为包名.类名路径分为相对路径和绝对路径。绝对路径是指这个文件在操作系统中的位置,相对路径通过这个文件的上一级 ./ 或下一级/ 来指定文件内容路径分为相对路径和绝对路径。绝对路径是指这个文件在操作系统中的位置,相对路径通过这个文件的上一级 ./ 或下一级/ 来指定文件内容...原创 2017-06-05 19:21:47 · 328 阅读 · 0 评论 -
java反射相关知识
1、Class是所有java类的一个总称,就好像各式各样的人都可以用Person来称呼,每一个类被加载之后都会在内存中生存一个Class对象,这个对象我们通常称之为字节码,而我们通过调用一个类创造的对象其实都是字节码搞出来的,一个类只会产生一份字节码。那么我们怎么获得一个类的Class呢?有三种方式: 1.调用某个类的class属性 2.使用Class的forName()...原创 2017-06-06 09:07:44 · 187 阅读 · 0 评论 -
抽象类实现接口的意义以及static与final的用法
(一)抽象类和接口的注意事项(二)接口1、定义接口和接口中的方法,都是隐式抽象的。就是可以省略abstract,(写不写abstract都会识别),接口本质就是一个特殊的抽象类。public 【abstract】 interface Person{public 【static final】 String name=“aaa”;public 【abstract】void ...原创 2017-09-08 10:04:44 · 638 阅读 · 0 评论 -
java基础之深入原理(重点)
危机感源于今天的差距,恐惧感来自未来5年、十年、十几年的差距。java基础总结强化一、从底层理解java反射机制了解java程序从编译到执行的全过程,从底层理解学习,java代码编译和执行主要包含以下3个重要机制,有助于我们更好的理解学习程序的运行机制和原理。(一)java源码编译机制1、java源码编译是通过java源码编译器完成,将源码文件(.java)编译成字节码文件(....原创 2019-08-16 09:32:58 · 1508 阅读 · 0 评论 -
线程的问题
一、进程和线程在讲线程时,要明确线程和进程的概念:(一)进程(process)1、进程是操作系统结构的基础;是一个正在执行的程序;计算机中正在运行的程序实例;可以分配给处理器并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数...原创 2017-08-16 10:36:29 · 197 阅读 · 0 评论 -
java体系学习总结记录——超长篇
Java体系学习一、主流语言介绍1、c语言:底层编程,比如嵌入式、病毒开发等应用,可以替代汇编语言来开发系统程序;高层应用可以开发从操作系统到各种应用软件。是一种面向过程的语言。2、java:广泛应用于企业级软件开发、安卓移动应用开发、大数据云计算等领域。3、Python:在人工智能方面有很大优势,广泛用于图形处理、科学计算、web编程、引擎开发、多媒体应用。被称为胶水语言,能够调...原创 2018-12-26 15:45:17 · 3545 阅读 · 1 评论 -
java基础之异常
(一)异常概念异常:是运行期出现的错误,要观察错误的名字和行号最重要,然后调试解决问题。1、java程序在执行过程中,出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将其提交给java运行时系统,这个过程称为抛出异常(throw)。2、java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获异常(try{}catc原创 2017-10-30 11:03:48 · 223 阅读 · 0 评论 -
java中的排序sort()函数的使用
(一)Arrays类此类包含用来操作数组(比如排序和搜索)的各种方法,包括对各种数据类型数组的排序。static int binarySearch(int[] a, int key) : 使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。static void sort(Object[] a, int fromIndex, int toIndex) :根据元素的自然顺原创 2017-08-16 14:17:09 · 6591 阅读 · 0 评论 -
java基础之数组
(一)数组声明数组是引用类型。数组必须先声明,再使用。dataType[] arrayRefVar;// 首选的方法或dataType arrayRefVar[];// 效果相同,但不是首选方法分析好数据的内存分配,数组变量名是引用类型在栈中存储;数组对象是在堆内存存储。注意:针对数组提供了length属性来获取数组的长度针对字符串提供了length()方法来获取字...原创 2017-10-30 14:57:37 · 228 阅读 · 0 评论 -
java基础之数据类型
(一)标识符1、概念:java对各种变量、方法和类等要素命名时使用的字符序列被称为标识符。(本质就是一个字符序列)2、标识符命名规则:由字母、数字、下划线和美元符($)组成。(注意有美元符$是合法的)标识符要以字母、下路线、美元符开头,对大小写敏感(二)关键字所有java关键字都是小写英文(注意都是小写的英文),编译器一般会把关键字用特殊方式标出(例如不同颜色等)。(三)常...原创 2017-10-23 19:18:13 · 275 阅读 · 0 评论 -
java基础之递归调用
一、递归概念递归本质:程序调用自身的编程技巧叫做递归。程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调;用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过;程所需要的多次重复计算,大大地减少了程序的代码量。...原创 2017-10-24 21:40:00 · 35088 阅读 · 4 评论 -
java基础之GUI
通过GUI,掌握图形编程的常用原理,其他图形编程的原理一样,例如:VC,C#等。(一)Awt和Swingjava.awt:bstractWindow ToolKit(抽象窗口工具集,需要调用本地系统方法实现功能,属于重量级控件。java.swing:在AWT的基础上,建立的一套图形界面系统,其中提供更多的组件,而且完全由java实现,增强了移植性,属于轻量级控件。注意:这里的“重量...原创 2017-11-06 17:26:37 · 672 阅读 · 0 评论 -
java基础之面向对象(重点)
(一)面向对象和面向过程目的:都就是为了能够重复使用代码,提高可扩展性和可维护性,避免每次都写重复性的代码。面向过程:复用的层次,在方法上复用。面向对象:复用的层次,在对象上复用,封装了类的内部细节和方法。(程序的本质:对问题的一种解决方案,是思维逻辑和问题解决步骤的实现)(程序BUG:根据程序呈现的结果,对程序实现过程进行分析,对每个环节产生的数据进行分析,找出问题所在)...原创 2017-10-25 19:32:38 · 415 阅读 · 0 评论 -
java基础之反射机制
一、从底层理解java反射机制了解java程序从编译到执行的全过程,从底层理解学习,java代码编译和执行主要包含以下3个重要机制,有助于我们更好的理解学习程序的运行机制和原理。(一)java源码编译机制1、java源码编译是通过java源码编译器完成,将源码文件(.java)编译成字节码文件(.class即二进制文件)。2、java源码编译由以下三个过程组成:(1)分析和输入...原创 2017-11-06 17:27:28 · 221 阅读 · 0 评论 -
java基础之网络编程
(一)网络编程和网站编程区分开网站编程是建立在网络编程之上,对网页和动态网页的编写。网络编程更底层一些,server服务器端和客户端都需要自己编写,网络的协议需要自己来确定。其中:qq,微信,魔兽这是网络编程。(二)网络基础概念1、计算机网络把分布在不同地理区域的计算机和专门的外部设备用通信线路互连成一个网络系统,使众多计算机可以方便的相互专递信息,共享资源。2、网络通信协...原创 2017-11-06 17:25:48 · 507 阅读 · 0 评论 -
java基础之线程(重点)
一、线程与进程(一)进程产生的原因:由于cpu与其他pc资源(RAM,显卡、光驱、键盘等)之间速度的不协调,为了提高资源利用率,提出了多任务系统,得益于cpu的计算速度,实质上是多个任务轮流使用cpu资源,由于速度很快,感觉是同时进行的。任务执行需要具备执行环境,即程序执行所需的各种pc资源(显卡、RAM等),将其称之为程序上下文,要实现程序可以同时执行,就需要不断轮换,为了从当前状态...原创 2017-11-05 21:55:47 · 348 阅读 · 0 评论 -
java消息服务使用总结(JMS:通过ActiveMQ实现)
1、什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持(百度百科给出的概述)。我们可以简单的理解:两个应用程序之间需要进行通信,我们使用原创 2017-11-22 11:34:41 · 5854 阅读 · 0 评论 -
java基础之IO(重点)
(一)java.io包Java.io 包包含了所有操作输入、输出需要的类。对于数据的输入和输出操作以流(stream)的方式进行。注意:流本质就是一个数据序列,可以抽象理解为接水的管道。原创 2017-11-04 15:36:11 · 289 阅读 · 0 评论 -
java基础之常用类—File类和String类(重点)
(一)String类继续原创 2017-10-30 18:19:44 · 2913 阅读 · 1 评论 -
java基础之集合(重点)
(一)集合概念 何为集合,集合就是相当于一个对象的容器。集合是类似数组的一个作用。既然有了数组,为何还要有集合呢,由于数组对象一旦创建,其大小便不可以更改,我们只能往数组中存放创建时数量的对象。而集合中的长度却是动态可变化的,我们可以往集合中添加任意数量的对象。并且我们可以通过集合更方便地实现数据结构如队列,栈等等。在集合中我们更可以定义自己想要的操作。原创 2017-10-31 17:36:44 · 240 阅读 · 0 评论 -
ThreadLocal
学习一个东西首先要知道为什么要引入它,就是我们能用它来干什么。所以我们先来看看ThreadLocal对我们到底有什么用,然后再来看看它的实现原理。ThreadLocal如果单纯从名字上来看像是“本地线程"这么个意思,只能说这个名字起的确实不太好,很容易让人产生误解,ThreadLocalVariable(线程本地变量)应该是个更好的名字。我们先看一下官方对ThreadLocal的描述:该类转载 2017-07-03 16:27:02 · 170 阅读 · 0 评论 -
数据库设计建模(重点)
一、确定业务中的实体、属性和方法1、通过了解熟悉业务流程,将业务流程中的事务抽象成类、属性和方法,通过编程逻辑把问题解决。确定业务中的类:收集业务资料,罗列业务中的所有名词,通过“找名词”的方法,确定业务中的类,注意区分开类和属性2、区分类和属性(重点)区分类和属性的技巧:确定该名词是否有方法(即是否拥有动作)。一般描述为xx的xx是属性。对于类和方法的封装,要根据业务逻辑...原创 2018-04-20 18:22:26 · 1098 阅读 · 0 评论 -
正则表达式详解
一、正则表达式(一)概念正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。(二)语法var pattern = /pattern/;array = str.match(pattern); //其中str表示要匹配的字符串;array为获...原创 2019-08-28 11:45:47 · 230 阅读 · 0 评论