
类介绍
0-21
让积累在潜移默化中不断发生
展开
-
Spring Boot使用CommandLineRunner接口完成资源初始化
1 简介1.1 应用场景 在应用服务启动时,需要在所有Bean生成之后,加载一些数据和执行一些应用的初始化。例如:删除临时文件,清楚缓存信息,读取配置文件,数据库连接,这些工作类似开机自启动的概念,CommandLineRunner、ApplicationRunner 接口是在容器启动成功后的最后一步回调(类似开机自启动)。1.2 CommandLineRunner接口CommandLin...原创 2019-05-16 19:45:13 · 24063 阅读 · 18 评论 -
java线程之同步synchronized
/** 时间:2015年3月12日18:13:29 测试同步Syncronized 文件路径:D:\java\thread\TestSynchronized.java 在使用关键字前和使用关键字后的运行结果的对比中,我们明显可以看出,第二次运行的结果才真正是人的意图。 这是因为线程可以看成是轻量级的进程,同一类线程共享代码和数据空间。在本程序中, t1和t2共享同一原创 2015-03-12 21:13:43 · 627 阅读 · 0 评论 -
java线程优先级理解
/* 时间:2015年3月12日14:23:42 测试java中线程优先级的问题 线程的优先级别: java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程。线程调度器按照线程的优先级决定应调用那个线程来执行。 线程的优先级用数字表示,范围为从1到10,一个线程的缺省优先级是5 Thread.MIN_PRIORITY == 1 Thre原创 2015-03-12 14:41:11 · 1191 阅读 · 0 评论 -
java语言GUI编程之Anoymous匿名类2
import java.awt.*;import java.awt.event.*;public class TestAnoymous2 { Frame f = new Frame("测试匿名类"); TextField tf = new TextField(10); Button b1 = new Button("Start"); private int i =原创 2015-03-22 11:07:43 · 691 阅读 · 0 评论 -
java线程理解之死锁问题
/* 时间:2015年3月13日10:35:44 测试synchronized关键字的使用,以及死锁的理解 在java语言中,引入了对象互斥锁的概念,保证共享数据操作的完整性,每个对象都对应于一个可称为“互斥锁”的标记,这个标记保证在任意时刻,智能有一个线程访问该对象。 关键字synchronized来与对象的互斥锁联系。当某个对象synchronized修饰时,表明该对象原创 2015-03-13 13:29:25 · 490 阅读 · 0 评论 -
java语言GUI编程之Anoymous匿名类
import java.awt.*;import java.awt.event.*;public class TestAnoymous { Frame f = new Frame("测试匿名类"); TextField tf = new TextField(30); public TestAnoymous() { f.add(new Label("请按住鼠标原创 2015-03-22 10:49:24 · 862 阅读 · 0 评论 -
java线程经典理解之Interrupt
/* 时间:2015年3月12日16:06:24 测试的是Interruput方法,和sleep方法的理解。 先把两个方法的生命摘录如下: public static void sleep(long millis) throws InterruptedException;在指定的毫秒内让当前正在执行的线程休眠(暂停执行) public static void sle原创 2015-03-12 16:48:44 · 825 阅读 · 0 评论 -
线程理解之yield方法
/* 时间:2015年3月12日10:34:59 测试Thread对象中的yield方法: 该方法的声明如下: public static void yield(); 暂停当前线程,执行其他线程 让出CPU,给其他线程执行的机会。 getPriority方法声明如下: public final int getPriority();返回当前线程的优先级。 set原创 2015-03-12 10:46:39 · 651 阅读 · 0 评论 -
线程理解之join
/* 时间:2015年3月11日21:41:23 测试join() 声明如下 void join() 等待该线程终止。 void join(long millis) 等待该线程终止的时间最长为 millis 毫秒。 void join(long millis, int nanos)原创 2015-03-11 21:43:42 · 916 阅读 · 0 评论 -
关于注解
注解AnnotationAnnotation是从java JDK5.0之后开始引入的新技术Annotation的作用:1, 不是程序本身,可以对程序做出解释。2,可以被其他程序读取。注解信息处理流程是注解和注释最重要的区别。 Annotation的格式:注解是以“@注释名”在代码中存在的,还可以添加一些参数,例如@suppress原创 2015-03-10 17:59:50 · 831 阅读 · 0 评论 -
java语言gui编程之内部类和鼠标事件经典1
/* 时间:2015年3月21日09:53:44 程序目的:理解内部类的作用和鼠标事件的处理 源文件的名称:TestInner.java 要点: 1, 内部类的性质和用法 2, 将内部类定义为普通内部类的好处-----内部类可以直接访问外层类的属性和方法 3, 可以更清楚的组织逻辑,防止不应该被其他类访问的类进行访问 何时使用: 该类不允许或原创 2015-03-21 10:01:19 · 1242 阅读 · 0 评论 -
java线程同步之再进一步
/* 测试死锁和关键字synchronized wait方法的声明如下: public final void wait() throws InterruptedException 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前, 导致当前线程等待 notify方法声明如下: public fin原创 2015-03-13 15:42:35 · 447 阅读 · 0 评论 -
java语言GUI编程之Graphics1
/* 测试AWTDrawing 在java.awt.Component类中定义的方法getGraphics() 该方法声明如下: public Graphics getGraphics() 为组件创建一个图形上下文。如果组件当前是不可显示的,则此方法返回 null。 Graphics类是一个抽象类,继承自Object, drawARC方法声明如下:原创 2015-03-22 10:18:08 · 1060 阅读 · 0 评论 -
java语言GUI编程之Graphics2
import java.awt.*;public class AWTDrawing2 { private Frame f = new Frame("AWTDrawing2"); private SubPanel sp = new SubPanel(); public void launchFrame() { f.setSize(300, 300);原创 2015-03-22 10:32:30 · 581 阅读 · 0 评论 -
java语言编程之TextField总结
/* 时间:2015年3月18日21:26:04 目的:测试TextField事件监听 持有对方引用。 内部类可以非常方便的访问包装类。 内部类默认拥有外部类对象的引用。 TextField对象可能发生Action(光标在文本框内敲回车)。与该事件对应的事件是java.awt.event.ActionEvent 用来处理ActionEvent事件是实现了jav原创 2015-03-18 21:33:52 · 19200 阅读 · 0 评论 -
java语言GUI编程之TextField中setEchoChar方法的使用
/* 时间:2015年3月18日20:52:47 目的:测试setEchoChar方法的使用,理解事件处理机制 public void setEchoChar(char c);//设置回显字符*/import java.awt.*;import java.awt.event.*;public class TestFieldEchoCharActionEve原创 2015-03-18 20:56:26 · 5058 阅读 · 0 评论 -
java编程GUI之TextField1
/* 时间:2015年3月18日10:42:42 目的:理解java中文本框类的方法和事件处理 在java中,TextFiled类用来表示文本框 这个类有如下的方法: 构造方法: TextFiled();构造新文本字段 TextField(int columns);构造具有指定列数的新文本字段 TextField(String text);构造使原创 2015-03-18 10:56:15 · 5743 阅读 · 0 评论 -
java语言gui编程之ActionEvent2
/* 时间:2015年3月18日10:26:15 范例名称:Java事件处理举例 源文件名称:TestActionEvent2.java 要 点:原创 2015-03-18 10:29:11 · 640 阅读 · 0 评论 -
java编程之GUI事件机制之经典
/* 时间:2015年3月18日09:46:25 测试简单的事件处理机制。 ActionListener接口的声明如下: public interface ActionListener extends EventLister 用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类 可以实现此接口,而使用该类的对象可以使用组件的addActionListe原创 2015-03-18 09:58:17 · 796 阅读 · 0 评论 -
java语言GUI编程之Key键盘事件总结与GUI章节概略
/* 时间:2015年3月22日17:08:30 测试键盘事件:KeyEvent,理解这个类是关键 相关的接口或者类有: KeyListener, KeyAdapter, KeyEvent, KeyListener 用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter 类(仅重写原创 2015-03-23 10:17:51 · 1269 阅读 · 0 评论 -
JAVA语言GUI编程之布局管理器总结
/* 时间:2015年3月18日09:21:57 目的:测试嵌套布局的使用。 Panel 是最简单的容器类。应用程序可以将其他组件放在面板提供的空间内,这些组件包括其他面板。 面板的默认布局管理器是 FlowLayout 布局管理器。 面板的构造方法有两个: public Panel(LayoutManager layout)创建一个具有指定布局管理器的面原创 2015-03-18 09:33:01 · 1391 阅读 · 0 评论 -
java语言编程GUI之Window事件经典总结
/* 时间:2015年3月22日15:56:45 目的:测试窗口事件 提示:细细体味窗口事件和鼠标事件的处理的对比。两者差别不大。理解适配的使用。内部类的使用。 //这是格式, addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { Sys原创 2015-03-23 10:08:25 · 1180 阅读 · 1 评论 -
网络编程之理解2
/* 时间:2015年3月14日18:12:02 测试的仍然是ServerSocket和Socket,不过本次着重理解一下关于流的知识。 DataInputStream的构造方法如下: public DataInputStream(InputStream in) 使用指定的底层 InputStream 创建一个 DataInputStream。 是一个处理流。原创 2015-03-14 18:28:13 · 474 阅读 · 0 评论 -
网络编程之初步理解1
/* 时间:2015年3月14日16:57:14 目的:测试服务器和客户端的tcp编程。 主要介绍类:ServerSocket ServerSocket类该类最主要的是实现服务器套接字。服务器套接字等待请求通过网络传入 基于该请求执行某些操作,然后可能向该请求返回某些操作。 构造方法有四个: ServerSocket();//创建非绑定服务器套接字。 public原创 2015-03-14 17:29:32 · 469 阅读 · 0 评论 -
java语言编程IO流之PrintStream打印流3
/* 时间:2015年3月10日20:59:21 测试日志文件的简单实用 使用标准输入System.in */import java.io.*;import java.util.*;public class TestPrintStream3 { public static void main(String[] args) { String原创 2015-03-21 22:39:37 · 545 阅读 · 0 评论 -
java语言编程IO流之PrintStream打印流2
/* 时间:2015年3月10日20:29:02 测试PrintStream 使用了命令行参数。 BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符 输入流。 BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符 输入流。 B原创 2015-03-21 22:38:51 · 554 阅读 · 0 评论 -
java语言编程IO流之PrintStream打印流1
/* 时间:2015年3月10日20:11:19 目的:测试打印流PrintStream PrintWriter 两个都属于输出流,分别针对字符和字节 两个类的输出操作不会抛出异常,用户通过检查异常的错误状态获取错误信息。 */import java.io.*;public class TestPrintStream1 { public static v原创 2015-03-21 22:37:43 · 724 阅读 · 0 评论 -
java语言GUI编程之鼠标适配器总结
/* 时间:2015年3月21日21:02:11 程序目的:使用适配器MouseAdapter来在窗体中点击生成红色圆圈 在这里我们总结一下鼠标事件适配器的 类MouseAdapter 继承自Object 接收鼠标事件的抽象适配器类。此类中的方法为空,此类存在的目的是方便创建侦听器 对象。 鼠标事件使用户能够跟踪鼠标何时被按下,释放,单击,移动,拖动,何时进入一个原创 2015-03-21 21:15:41 · 2141 阅读 · 1 评论 -
线程理解之经典,同时测试了isAlive的使用。
/* 时间:2015年3月11日22:02:19 测试isAlive()方法的使用 仔细看程序运行的结果。 在程序运行的过程中,可以看出虚拟机先运行的是main线程中for循环中的第一句和第二句,接下来虚拟机调度,执行的是t线程的for循环中的第一句 接下来再一次的切换,执行的是主线程的for循环第三句。然后虚拟机再次调度执行了t线程的第二句和第三句………………原创 2015-03-11 22:20:14 · 2057 阅读 · 0 评论 -
java语言gui编程之内部类和鼠标事件经典2之两个问题的解决
/* 时间:2015年3月21日20:06:23 程序目的:对于上一个程序中出现的两个问题 注: TestMouseMotion.java使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 和 需要完整的罗列MouseMotionListener中所有方法, 该程序做出调整。 加入泛型之后,不需要强制原创 2015-03-21 20:12:09 · 639 阅读 · 0 评论 -
java语言gui编程之内部类和鼠标事件经典2
/* 时间:2015年3月21日19:30:25 目的:使用鼠标的事件来画图。 首先看这个程序的结构中,在主函数main中调用了构造函数创建MyFrame类的对象 在MyFrame类中,声明了成员变量ArrayList类型,points 构造方法中创建了带有title名称的窗体,初始化成员变量points,增加鼠标移动事件监听器 布局设置为空,设置位置和大小,设置可见原创 2015-03-21 19:39:05 · 813 阅读 · 0 评论 -
java语言GUI编程之TextField持有对方引用2
/* 时间:2015年3月21日09:14:06 目的:还是理解程序中欲访问其他类成员的方法策略问题。 Label类对象是一个可在容器中放置文本的组件。一个标签只显示一行只读文本。 文本可由程序更改,但是用户不能直接对其进行编辑。 构造方法如下: Label();//构造一个空标签 Label(String text);//使用指定原创 2015-03-21 09:21:30 · 719 阅读 · 0 评论 -
GUI编程之GridLayout
/* 时间:2015年3月16日20:03:51 测试GridLayout布局管理器 GridLayout类是一个布局管理器,它以矩形网格形式对容器的组件进行不止。容器被 分成大小相等的矩形。一个矩形中放置一个组件。 通过构造方法或setRows()和setColumns方法将行数和列数都设置为非零值 时,指定的列数将被忽略。列数通过制定的行数和布局中的组件总原创 2015-03-16 20:21:17 · 692 阅读 · 0 评论 -
网络编程之UDP
/* 时间:2015年3月15日09:58:53 测试的UDP的连接和传输信息 DatagramPacket 此类表示数据报包。 数据报包用来实现无连接包投递服务。 每条报文仅根据该包中包含的信息从一台机器路由到另一台机器 。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序 到达。不对包投递做出保证。 构造方法有原创 2015-03-15 10:40:39 · 558 阅读 · 0 评论 -
Gui编程之Frame
/* 时间:2015年3月15日20:05:59 测试Frame类 构造方法: public Frame(String title) throws HeadLessException; 构造一个新的,最初不可见的,具有指定标题的窗体 public void setTitle(String title)设置窗体标记 public boolean原创 2015-03-15 20:13:42 · 785 阅读 · 2 评论 -
GUI编程之Frame继承
/* 时间:2015年3月15日22:23:09 测试的是生成窗体的另一种方法,通过继承。 Frame是Window的子类,由Frame或其子类创建的对象为一个窗体。这里使用的是Frame类的子类。 窗体要设置大小,否则只显示为含有标题的顶层窗口 窗体要设置可见(使用setVisible(true))。因为最初创建窗体的时候通过构造函数创建的是一个新的,不可见的,具有指定标题的原创 2015-03-15 22:27:40 · 2018 阅读 · 0 评论 -
Gui编程之FlowLayout
/* 时间:2015年3月15日20:48:39 测试FlowLayout FlowLayout布局管理器是Panel类的默认布局管理器 FlowLayout布局管理器对组件逐行定位,行内从左到右,一行铺满后换行 不改变组件的大小,按组件原有尺寸显示组件,可设置不同的组件间距,行距以及对齐方式。 FlowLayout的默认布局管理器对齐方式是居中。 FlowLay原创 2015-03-15 21:01:48 · 673 阅读 · 0 评论 -
线程和进程之间的关系
/* 时间:2015年3月11日19:45:35 简单理解程序中执行顺序 在这个程序中,顺序的执行了m1(), m2(), m3();换句话说他们是顺序执行。 线程的概念是动态的,是程序执行的过程。也就是说是一个程序内部的顺序控制流。 线程和进程的区别: 线程是动态执行的过程,对应的是程序内部的不同执行路径。而进程是静态的,例如一段静态的代码。一个进程原创 2015-03-11 19:53:32 · 694 阅读 · 0 评论 -
使用Runnable接口创建线程和sleep方法
/* 时间:2015年3月11日20:42:02 测试的线程的创建和启动的另外一种方法:使用接口Runnable 同时测试了Sleep方法的使用 sleep(long)方法的声明如下: public static void sleep(long millis) throws InterruptedException原创 2015-03-11 20:46:14 · 16242 阅读 · 0 评论 -
线程理解4
/* 时间:2015年3月11日21:06:47 stop()声明如下; @Deprecated public final void stop() 已经过时,强迫线程停止执行。该方法具有固有的不安全性。因为是强制执行,所以可能会导致数据不一致,比如说线程中 打开了文件,来不及关闭线程就会停止了。 创建线程的另一种方式是声明实现Runnable接原创 2015-03-11 21:13:47 · 559 阅读 · 0 评论