自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java原子类

引言Java的原子类涉及到了多线程,一般情况下遇到多线程考虑的第一个问题就是如何保证共享数据的安全性。java的synchronized还是锁以及其他的线程安全的数据结构,其实都是为了解决这个问题。原子类也是为了解决这个问题java提供了无锁的基于高级机器指令的安全的类,以实现数据操作的原子性,这就是Java并发包中的原子类。(java.util.concurrent.atomic)相比较于传统的互斥锁,无锁不存在加锁、解锁、线程切换的消耗,无锁的性能比较好,同时也能保证线程的安全性。作为原子类,最

2020-07-31 19:47:07 306 1

原创 GC(垃圾回收机制)

定义GC(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。作用垃圾回收机制的引入可以有效的防止内存泄露、保证内存的有效使用,也减轻了 Java 程序员的对内存管理的工作量。回收什么?在JVM内存模型中,有三个是不需要进行垃圾回收的:程序计数器、JVM栈、本地方法栈。因为它们的生命周期是和线程同步的,随着线程的销毁,它们占用的内存会自动释放,所以只有方法区和堆需要进行GC垃圾收集器在对垃圾进

2020-07-24 13:05:52 2406

原创 类加载机制

定义java文件通过编译器变成了.class文件,类加载器又将这些.class文件加载到JVM中,JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程类加载过程类加载的过程包括了加载、验证、准备、解析、初始化五个阶段加载通过一个类的完全限定名查找此类.class字节码文件,.class字节码文件从各个来源通过类装载器装载入内存中。过程:通过类的全限定名来获取定义此类的二进制字节流将这个类字节流代表的静态存储结构转为方法区的运行时数据结构在堆中生成

2020-07-23 13:55:58 171

原创 RMI介绍及实现

定义RMI(Remote Methed Invoke)即远程方法调用。允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法。这两个Java虚拟机可以是运行在相同的机器上的不同进程里,也可以是通过TCP/IP连接的不同计算机上。编程思想1.对于客户机端,需要一些特定的代码来引用远程对象。而对于服务器端,必须定义类并实例化类的远程对象,服务器端的代码必须能够登记这些对象,并将他们的方法向客户机导出。2.而客户端与服务器端都要实现一个接口,这个接口定义了可以远程调用的方法。3

2020-07-16 22:33:37 603

原创 动态代理机制:jdk与cglib

前言按照代理类的创建时期,代理类可分为两种:–静态代理类:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。–动态代理类:在程序运行时,运用反射机制动态创建而成。而动态代理又有cglib代理和jdk代理之分。适用范围:1、如果目标对象实现了接口,一般情况下采用JDK的动态代理2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果目标对象没有实现了接口,必须采用CGLIB库区别:1、JDK动态代理利用反射机制生成一个实现代

2020-07-15 14:44:53 175

原创 WebSocket概念及原理

定义websocket是一个在单个TCP连接上进行的全双工通信的协议。webSocket通信协议2011年被IETF定为标准,webSocket API被W3C定为标准。在webSocket API中,浏览器和服务器只需要做一次握手的动作,然后浏览器和服务器之间就形成一条快速通道。两者之间就可以直接进行数据传送了。基本原理webSocket的原理其实就是:HTTP握手 + TCP数据传送WebSocket和HTTP:两者都属于应用层协议,都通过TCP协议进行数据传输。webSocket是全双工

2020-06-20 12:47:31 414

原创 模拟Spring IoC(三)Bean注解含参方法处理

在上一篇文章中《模拟Spring IoC(二)Bean注解》解释了Bean注解的应用场景,但是没有处理有参方法的Bean注解,这边文章将主要描述Bean注解含参方法的处理过程。分析:含参方法处理的关键是:方法所依赖的参数是否满足?如果满足,则,该方法是可以执行并得到一个Bean的。如果最终都无法满足,那么必然形成了循环依赖,无法获取参数,则将循环依赖告知用户。核心是:检测依赖是否满足。这里可以先考虑构造MethodDefinitionMethodDefinition中应该存储方法反射执行所需要

2020-06-06 13:57:57 576

原创 模拟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 205

原创 模拟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 358

转载 spring概述

概述Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。使用 Spring 框架的

2020-06-03 21:23:18 307

原创 CSS知识概述

文章目录一、基础知识二、CSS选择器元素选择器派生选择器(又名上下文选择器)id选择器类选择器属性选择器三、CSS基础样式背景文本字体链接列表表格四、盒模型五、CSS定位一、基础知识CSS:指层叠样式表 (Cascading Style Sheets)层叠顺序:外部样式表 < 内部样式表 < 内联样式(从左到右优先权从弱变强)内联式:即为直接写在标签中,就像标签的属性一样&l...

2020-04-20 23:03:09 596 1

原创 Java多线程实现定时器

需求:在某些应用场合,需要定时地完成一些操作,希望能有一个“精准”的定时的工具,方便编程。应该有一个线程,这个线程每经过一段时间(这个时间可以指定),就“醒来”,并执行外部要求完成的操作。注:该定时器的编写是基于线程的,如对线程知识毫无了解,请绕道而行。分析:1.作为一个定时器,需要定义一个时延,即要求等待的时间delay;2.需要用线程来实现该定时器,便需要一个变量来控制线程go...

2020-04-04 10:25:20 1386

原创 XML文件解析工具化进阶版

在之前的《XML文件解析工具化基础篇》中,是根据标签名来解析XML文件的,然而在很多中情况下可能会存在父子标签相同的情况,此时,若继续使用标签名来解析就有些问题了。所以,再此,提出一种新的解析方法,根据文件标签层次来解析。一、思路不要在之前的工具上进行过大的改动,只需加上层次解析的方法即可。若是按层次解析,由于要适配大多数的XML文件,可又不清楚一个文件究竟有多少层。为了解决这个问题,我...

2020-02-02 19:06:47 168

原创 XML文件解析工具化基础篇

在今后的Java学习过程中,我们会遇到很多使用XML文件等来存储必要信息的情况,每次都要进行解析,这样岂不是很繁琐。在学习Java的过程中,我们必须要有一种思想–工具化。将所有重复动作工具化,使其解决具有普遍性的情况。下面就将之前所讲的《XML文件解析》进行工具化,使其适用于大多数解析情况。如果看不懂这篇文章,可以先看看前面提到的,了解一下XML解析的基本过程。一、思路为了使解析过程工具化,...

2020-01-26 13:29:39 385

原创 网络通信——1对多,一个服务器对应多个客户端

下面给出一对多,一个服务器多个客户端的收发消息关系图。下图表示,创建了三个与客户端对话的Communication层,每个客户端分别与各自对应的线程通话,从而实现一对多通信...

2020-01-20 00:27:21 4978

原创 网络通信——1对1,多次通信

*在上一篇文章中实现了1对1,单次通信,本篇文章会实现1对1,多次通信。任何需要通信的双方,都需要三个元素,Socket,DataInputStream和DataOutputStream,就能完成通信。对于服务器端部分,当接收到来自客户端的“byebye”消息时,停止通信对于客户端部分,需要实现用户从键盘输入,将输入的消息发送到服务器端,使用专门的方法接收键盘输入消息,并完成消息发送。*还...

2020-01-19 17:27:06 588

原创 网络编程——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 346

原创 XML文件解析简单实现

XML文件解析XML文件解析步骤:文件解析过程:1.四句固定搭配,目的:确定需要解析的文档,以及解析方式2.以节点列表形式取得二级标签,遍历节点列表3.获取标签里的属性值4.将获取的值使用类保存起来需要解析的文件:<?xml version="1.0" encoding="UTF-8"?><students> <student id="00001"...

2020-01-16 22:23:44 458 1

原创 窗口编程之基础编程

窗口编程之基础编程窗口编程有许多许多的类和方法,我相信没有人能全部掌握,这种编程只能靠经验以及查资料。下面是我编写的一个简单的例子,对其中的每句话基本都有解释,不过窗口编程还是要靠自己的积累。package com.mec.gewei.practice;import java.awt.Color;import java.awt.Dimension;import java.awt.Fo...

2020-01-15 20:53:20 367

原创 窗口编程之面向事件编程-实例解释

窗口编程之面向事件编程-实例解释此处不解释面向事件编程的具体定义,以及其中涉及到的术语,类似事件源、事件处理,侦听器等概念,只介绍实现.面向事件编程三大步骤:此处若无法理解,请向下看例子1.指定一个实现监听器接口的类(如下面的实现了WindonsListener的类),或者指定一个实现了监听器接口类的类(如下面的继承了WindowAdapter的类)。例如:class AAA impl...

2020-01-15 18:57:00 258

原创 复数的四则运算

复数的四则运算下面的代码是用Java编写的,主要是Complex的四则运算/* * 该类实现了复数的四则运算 * 每种运算都使用了两种方式,类似a+=b,c=a+b * 减法使用加法表示,除法使用乘法表示,里面包括取反,和取倒数 * 对应代码都有部分解释 */public class Complex { private double real; private double v...

2020-01-14 23:43:50 2222

原创 Hibernate简介

Hibernate简介Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servl...

2019-11-22 22:56:56 424

原创 ORM对象关系映射

ORM对象关系映射ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写。ORM可理解成一种规范,它概述了这类框架的基本特征,完成面向对象的变成语言到数据库的映射。ORM 把数据库映射成对象。○ 数据库的表(table) --> 类(class)○ 记录(record,行数据)–> 对象...

2019-11-22 22:43:46 676

原创 HTML常见标签

常见标签HTML基础结构:<!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title></head><body></body></html>html标签:之间的内容标记网页...

2019-04-10 21:39:11 274

原创 HTML开发工具

HTML笔记 ——(一)HTML开发工具推荐的网页开发工具有Dreamweaver、WebStorm、Sublime。1.Dreamweaver可以创建HTML网页、ASP网页、PHP网页等。2.WebStorm是一款JavaScript开发工具,被誉为Web前端开发神器、最强大的HTML编辑器、最智能的JavaScript IDE等。3.Sublime Text是一个复杂度文本编辑器...

2019-03-19 22:02:45 521

原创 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 1131

原创 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 784

原创 打印菱形、打印三角形

下面的代码既包含打印菱形也包含打印三角形被注释了的代码是打印三角形打印菱形:输入:打印的行数(行数只能为奇数,否则无法构成菱形)打印三角形:输入:打印的行数(对行数奇偶性无要求)import java.util.Scanner;//打印星号形成的三角形或菱形public class PrintDiamand { public static void main(St...

2018-12-18 14:38:08 793

原创 盛最多水的容器

盛最多水的容器给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容...

2018-11-25 23:32:29 100

原创 计算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 763

原创 (栈的实现)迷宫求解

题目描述:用一个m×n的矩阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对给定的迷宫,求出找到的第一条从入口到出口的通路,或得到没有通路的结论。我们指定:(1) 迷宫的入口为矩阵的左上角(1,1),迷宫的出口为右下角(m,n);(2) 路径的探索顺序依次为"东南西北"(即:右下左上)。要求:输入:第一行输入两个整数,空格间隔,分别表示矩阵的行数m和列数n;接下来的连续...

2018-10-23 14:25:11 1320

原创 中缀表达式转后缀表达式

题目描述:涉及运算符有“+”、“-”、“*”、“/”、“(”、“)”,利用栈将输入的中缀表达式转换成等价的后缀表达式,并输出。输入:输入一个字符串表示的中缀表达式,其中每个操作数用一个小写字母表示。输出:将对应的后缀表达式输出。算法:1.遍历输入字符串,若遇到操作数,直接输出;2.若遇到字符串,先判断栈是否为空,若为空,直接压入栈;若不为空,取栈顶元素 (1)若栈顶元素比操作符优先...

2018-10-23 14:17:28 387

转载 java.util.Scanner的各种函数详解

收藏的关于java.util.Scanner的各种函数详解https://www.yiibai.com/java/util/scanner_hasnext.html#

2018-10-22 22:40:59 953

原创 用Visual Studio2017写出第一个C程序

**用Visual Studio2017写出第一个C程序**我是第一次写博客,希望大家多多指正。如果你想用VS写C程序,你就必须安装下面那个使用C++的桌面开发:安装这个工具之后,才能进行C语言的编辑。打开VS,点击左上角“文件”-&gt;“新建”-&gt;“项目”打开“已安装”,找到“VS C++”,点击右边的“空项目”,下面有所创建的项目名称和位置,点击“确定”。接下来,会在右...

2018-10-16 20:19:32 9419 5

空空如也

空空如也

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

TA关注的人

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