Java
Arrvine
这个作者很懒,什么都没留下…
展开
-
Java原子类
引言Java的原子类涉及到了多线程,一般情况下遇到多线程考虑的第一个问题就是如何保证共享数据的安全性。java的synchronized还是锁以及其他的线程安全的数据结构,其实都是为了解决这个问题。原子类也是为了解决这个问题java提供了无锁的基于高级机器指令的安全的类,以实现数据操作的原子性,这就是Java并发包中的原子类。(java.util.concurrent.atomic)相比较于传统的互斥锁,无锁不存在加锁、解锁、线程切换的消耗,无锁的性能比较好,同时也能保证线程的安全性。作为原子类,最原创 2020-07-31 19:47:07 · 268 阅读 · 1 评论 -
GC(垃圾回收机制)
定义GC(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。作用垃圾回收机制的引入可以有效的防止内存泄露、保证内存的有效使用,也减轻了 Java 程序员的对内存管理的工作量。回收什么?在JVM内存模型中,有三个是不需要进行垃圾回收的:程序计数器、JVM栈、本地方法栈。因为它们的生命周期是和线程同步的,随着线程的销毁,它们占用的内存会自动释放,所以只有方法区和堆需要进行GC垃圾收集器在对垃圾进原创 2020-07-24 13:05:52 · 2298 阅读 · 0 评论 -
类加载机制
定义java文件通过编译器变成了.class文件,类加载器又将这些.class文件加载到JVM中,JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程类加载过程类加载的过程包括了加载、验证、准备、解析、初始化五个阶段加载通过一个类的完全限定名查找此类.class字节码文件,.class字节码文件从各个来源通过类装载器装载入内存中。过程:通过类的全限定名来获取定义此类的二进制字节流将这个类字节流代表的静态存储结构转为方法区的运行时数据结构在堆中生成原创 2020-07-23 13:55:58 · 146 阅读 · 0 评论 -
RMI介绍及实现
定义RMI(Remote Methed Invoke)即远程方法调用。允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法。这两个Java虚拟机可以是运行在相同的机器上的不同进程里,也可以是通过TCP/IP连接的不同计算机上。编程思想1.对于客户机端,需要一些特定的代码来引用远程对象。而对于服务器端,必须定义类并实例化类的远程对象,服务器端的代码必须能够登记这些对象,并将他们的方法向客户机导出。2.而客户端与服务器端都要实现一个接口,这个接口定义了可以远程调用的方法。3原创 2020-07-16 22:33:37 · 562 阅读 · 0 评论 -
动态代理机制:jdk与cglib
前言按照代理类的创建时期,代理类可分为两种:–静态代理类:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。–动态代理类:在程序运行时,运用反射机制动态创建而成。而动态代理又有cglib代理和jdk代理之分。适用范围:1、如果目标对象实现了接口,一般情况下采用JDK的动态代理2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象没有实现了接口,必须采用CGLIB库区别:1、JDK动态代理利用反射机制生成一个实现代原创 2020-07-15 14:44:53 · 155 阅读 · 0 评论 -
WebSocket概念及原理
定义websocket是一个在单个TCP连接上进行的全双工通信的协议。webSocket通信协议2011年被IETF定为标准,webSocket API被W3C定为标准。在webSocket API中,浏览器和服务器只需要做一次握手的动作,然后浏览器和服务器之间就形成一条快速通道。两者之间就可以直接进行数据传送了。基本原理webSocket的原理其实就是:HTTP握手 + TCP数据传送WebSocket和HTTP:两者都属于应用层协议,都通过TCP协议进行数据传输。webSocket是全双工原创 2020-06-20 12:47:31 · 363 阅读 · 0 评论 -
模拟Spring IoC(三)Bean注解含参方法处理
在上一篇文章中《模拟Spring IoC(二)Bean注解》解释了Bean注解的应用场景,但是没有处理有参方法的Bean注解,这边文章将主要描述Bean注解含参方法的处理过程。分析:含参方法处理的关键是:方法所依赖的参数是否满足?如果满足,则,该方法是可以执行并得到一个Bean的。如果最终都无法满足,那么必然形成了循环依赖,无法获取参数,则将循环依赖告知用户。核心是:检测依赖是否满足。这里可以先考虑构造MethodDefinitionMethodDefinition中应该存储方法反射执行所需要原创 2020-06-06 13:57:57 · 537 阅读 · 0 评论 -
模拟Spring IoC(二)Bean注解
在上一个博客中《模拟Spring IoC(一)Component及Autowired注解》中介绍了两个注解,Component注解和Autowired注解,下来就解释一下Bean注解。Bean注解产生原因:Autowired注解的缺陷:Autowired只能获取池子中的对象,而池中对象都是需要给对应的类以@Component注解;对于不可更改的Jar包中的类,就没有办法增加@Component注解,也就不能实现“注入”操作。Bean注解就是为了解决这样的问题存在的。Bean注解:@Retention原创 2020-06-04 23:50:57 · 176 阅读 · 0 评论 -
模拟Spring IoC(一)Component及Autowired注解
下面的文章内容是对Spring的IoC部分的简单模仿,但并不是完全一样,有很多的不足之处依赖注入解释:IoC(Inversion of Control)即控制反转,与依赖注入DI(Dependency Injection)意义相同。下面举个例子说明一下什么是依赖注入:public class TwoClass { public TwoClass() { } @Override public String toString() { return "这是一个TwoClass的对象"原创 2020-06-04 00:03:13 · 336 阅读 · 0 评论 -
Java多线程实现定时器
需求:在某些应用场合,需要定时地完成一些操作,希望能有一个“精准”的定时的工具,方便编程。应该有一个线程,这个线程每经过一段时间(这个时间可以指定),就“醒来”,并执行外部要求完成的操作。注:该定时器的编写是基于线程的,如对线程知识毫无了解,请绕道而行。分析:1.作为一个定时器,需要定义一个时延,即要求等待的时间delay;2.需要用线程来实现该定时器,便需要一个变量来控制线程go...原创 2020-04-04 10:25:20 · 1347 阅读 · 0 评论 -
XML文件解析工具化进阶版
在之前的《XML文件解析工具化基础篇》中,是根据标签名来解析XML文件的,然而在很多中情况下可能会存在父子标签相同的情况,此时,若继续使用标签名来解析就有些问题了。所以,再此,提出一种新的解析方法,根据文件标签层次来解析。一、思路不要在之前的工具上进行过大的改动,只需加上层次解析的方法即可。若是按层次解析,由于要适配大多数的XML文件,可又不清楚一个文件究竟有多少层。为了解决这个问题,我...原创 2020-02-02 19:06:47 · 146 阅读 · 0 评论 -
XML文件解析工具化基础篇
在今后的Java学习过程中,我们会遇到很多使用XML文件等来存储必要信息的情况,每次都要进行解析,这样岂不是很繁琐。在学习Java的过程中,我们必须要有一种思想–工具化。将所有重复动作工具化,使其解决具有普遍性的情况。下面就将之前所讲的《XML文件解析》进行工具化,使其适用于大多数解析情况。如果看不懂这篇文章,可以先看看前面提到的,了解一下XML解析的基本过程。一、思路为了使解析过程工具化,...原创 2020-01-26 13:29:39 · 341 阅读 · 0 评论 -
网络通信——1对多,一个服务器对应多个客户端
下面给出一对多,一个服务器多个客户端的收发消息关系图。下图表示,创建了三个与客户端对话的Communication层,每个客户端分别与各自对应的线程通话,从而实现一对多通信...原创 2020-01-20 00:27:21 · 4860 阅读 · 0 评论 -
网络通信——1对1,多次通信
*在上一篇文章中实现了1对1,单次通信,本篇文章会实现1对1,多次通信。任何需要通信的双方,都需要三个元素,Socket,DataInputStream和DataOutputStream,就能完成通信。对于服务器端部分,当接收到来自客户端的“byebye”消息时,停止通信对于客户端部分,需要实现用户从键盘输入,将输入的消息发送到服务器端,使用专门的方法接收键盘输入消息,并完成消息发送。*还...原创 2020-01-19 17:27:06 · 553 阅读 · 0 评论 -
网络编程——1对1,单次通信
网络编程-基础1.基础通信在这里会使用代码的方式先展示一下,实现网络通信需要的最基础的步骤,请认真看注释。先给出服务器的代码:import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;import java.net....原创 2020-01-19 14:13:29 · 319 阅读 · 0 评论 -
XML文件解析简单实现
XML文件解析XML文件解析步骤:文件解析过程:1.四句固定搭配,目的:确定需要解析的文档,以及解析方式2.以节点列表形式取得二级标签,遍历节点列表3.获取标签里的属性值4.将获取的值使用类保存起来需要解析的文件:<?xml version="1.0" encoding="UTF-8"?><students> <student id="00001"...原创 2020-01-16 22:23:44 · 414 阅读 · 1 评论 -
窗口编程之基础编程
窗口编程之基础编程窗口编程有许多许多的类和方法,我相信没有人能全部掌握,这种编程只能靠经验以及查资料。下面是我编写的一个简单的例子,对其中的每句话基本都有解释,不过窗口编程还是要靠自己的积累。package com.mec.gewei.practice;import java.awt.Color;import java.awt.Dimension;import java.awt.Fo...原创 2020-01-15 20:53:20 · 330 阅读 · 0 评论 -
窗口编程之面向事件编程-实例解释
窗口编程之面向事件编程-实例解释此处不解释面向事件编程的具体定义,以及其中涉及到的术语,类似事件源、事件处理,侦听器等概念,只介绍实现.面向事件编程三大步骤:此处若无法理解,请向下看例子1.指定一个实现监听器接口的类(如下面的实现了WindonsListener的类),或者指定一个实现了监听器接口类的类(如下面的继承了WindowAdapter的类)。例如:class AAA impl...原创 2020-01-15 18:57:00 · 229 阅读 · 0 评论 -
复数的四则运算
复数的四则运算下面的代码是用Java编写的,主要是Complex的四则运算/* * 该类实现了复数的四则运算 * 每种运算都使用了两种方式,类似a+=b,c=a+b * 减法使用加法表示,除法使用乘法表示,里面包括取反,和取倒数 * 对应代码都有部分解释 */public class Complex { private double real; private double v...原创 2020-01-14 23:43:50 · 2177 阅读 · 0 评论 -
PTA Java练习题--Square Nummber
题目描述:查找大于Long.MAX_VALUE的前十个平方数。平方数是n^2形式的数。例如,4、9和16是平方数。输入:无输入输出:9223372037000250000(您的程序应显示其他九个平方数。每一个平方数将显示在下一行)解决思路:为了防止多次循环,我先对Long.MAX_VALUE进行开方,因为只需要求大于它的10个数,所以对开方后的Long.MAX_VALUE进行加1,...原创 2019-01-22 19:39:17 · 1090 阅读 · 0 评论 -
PTA Java练习题--求字符串前缀
题目描述:求解给定字符串的前缀输入格式:输入数目不定的多对字符串,每行两个,以空格分开。 例如: filename filepath Tom Jack输出格式:返回两个字符串的最大前缀,例如: The common prefix is file No common prefix输入样例:filename filepathTom Jack输出样例:The common pref...原创 2019-01-13 12:36:12 · 744 阅读 · 0 评论 -
打印菱形、打印三角形
下面的代码既包含打印菱形也包含打印三角形被注释了的代码是打印三角形打印菱形:输入:打印的行数(行数只能为奇数,否则无法构成菱形)打印三角形:输入:打印的行数(对行数奇偶性无要求)import java.util.Scanner;//打印星号形成的三角形或菱形public class PrintDiamand { public static void main(St...原创 2018-12-18 14:38:08 · 763 阅读 · 0 评论 -
计算10或100以内的加、减、乘运算
计算10或100以内的加、减、乘运算这是我闲来无事对Java语言程序设计(基础版第10版)的5.2.3‘多个减法测试题’进行的拓展题目import java.util.Scanner;public class QuizLoop { public static void main(String[] args){ Scanner input=new Scanner(Sy...原创 2018-10-24 14:13:46 · 719 阅读 · 0 评论