JavaSE
JavaSE
落花雨时
守破离,断舍进。
展开
-
Java 实现无损画质给图片添加文字(ImageWriter)
import javax.imageio.IIOImage;import javax.imageio.ImageIO;import javax.imageio.ImageWriteParam;import javax.imageio.ImageWriter;import javax.imageio.stream.ImageOutputStream;import java.awt.*;...原创 2019-09-28 15:29:29 · 3037 阅读 · 0 评论 -
单例设计模式
1. 作用: 在应用程序有保证最多只能有一个实例.2. 好处: 2.1 提升运行效率. 2.2 实现数据共享. 案例:application 对象3. 懒汉式 3.1 对象只有被调用时才去创建. 3.2 示例代码public class SingleTon { //由于对象需要被静态方法调用,把方法设置为static //由于对象是stat...原创 2019-07-18 16:49:47 · 85 阅读 · 0 评论 -
XML 技术
1. XML1.1 xml 简介a) xml, eXtensible Markup Language, 可扩展标记语言. 是一种标记语言.b) xml 是一种非常灵活的语言, 没有固定的标签, 所有的标 签都可以自定义.c) 通常, xml 被用于信息的记录和传递. 因此, xml 经常被 用于充当配置文件.1.2 格式良好的 xml a) 声明信息, 用于描述...原创 2019-05-10 10:02:27 · 231 阅读 · 0 评论 -
编译原理 词法分析+语法分析
package cn.menglangpoem.analyze;public class Util { //存储关键字 private static String[] keyWords = new String[]{"begin","if","then","while","do","end"}; //token字符对象,用于存储结果字符 private Str...原创 2019-04-28 17:59:35 · 1965 阅读 · 0 评论 -
Java 中使用正则
Java程序中如何使用正则表达式:import java.util.regex.Matcher;import java.util.regex.Pattern; /** * 测试正则表达式对象的基本用法 * @author Administrator * */public class Demo01 {public static void main(String[] args...原创 2019-03-24 09:05:29 · 820 阅读 · 0 评论 -
Java Math类以及Random类
java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。如果需要更加强大的数学运算能力,计算高等数学中的相关内容,可以使用apache commons下面的Math类库。Math类的常用方法: 1. abs 绝对值 2. acos,asin,atan,cos,sin,tan 三角函数 3. sqrt ...原创 2019-03-24 08:58:00 · 153 阅读 · 0 评论 -
Java 给图片添加水印
package cn.menglangpoem.learn;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutp...原创 2019-03-24 08:44:26 · 331 阅读 · 0 评论 -
Java 动态编译
import java.lang.reflect.Method;import java.net.URL;import java.net.URLClassLoader; import javax.tools.JavaCompiler;import javax.tools.ToolProvider; /** * 测试java的动态编译 * @author dell * */...原创 2019-03-18 17:11:37 · 105 阅读 · 0 评论 -
Java 反射机制
反射机制– 指的是可以于运行时加载、探知、使用编译期间完全未知的类。– 程序在运行状态中,可以动态加载一个只有名称的类,对于任意一个 已加载的类,都能够知道这个类的所有属性和方法;对于任意一个对 象,都能够调用它的任意一个方法和属性;格式:Class c = Class.forName("com.bjsxt.test.User")– 加载完类之后,在堆内存中,就产生了一个 C...原创 2019-03-18 17:06:38 · 96 阅读 · 0 评论 -
Java 自定义注解及内置注解
Annotation的作用: – 不是程序本身,可以对程序作出解释。(这一点,跟注释没什么区别) – 可以被其他程序(比如:编译器等)读取。(注解信息处理流程,是注解和注释的重大区别 。如果没有注解信息处理流程,则注解毫无意义)• Annotation的格式:– 注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如: @SuppressWarnings(value="unch...原创 2019-03-18 16:50:52 · 190 阅读 · 0 评论 -
Java UDP通讯的实现
▪ DatagramSocket:用于发送或接收数据报包 当服务器要向客户端发送数据时,需要在服务器端产生一个DatagramSocket对象,在客户端产生一个DatagramSocket对象。服务器端的DatagramSocket将DatagramPacket发送到网络上,然后被客户端的DatagramSocket接收。 DatagramSocket有两种常用的构造函...原创 2019-03-14 19:20:37 · 966 阅读 · 0 评论 -
Java 基于TCP协议的Socket编程和通信
在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端,而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器。一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别。请求-响应”模式: 1. Socket类:发送TCP消息。 2. ServerSocket类:创建服务器。 套接字是一种进程间的数...原创 2019-03-14 19:14:53 · 7366 阅读 · 1 评论 -
Java InetAddress和InetSocketAddress
InetAddress作用:封装计算机的IP地址和DNS(没有端口信息)。 注:DNS是Domain Name System,域名系统。特点:这个类没有构造方法。如果要得到对象,只能通过静态方法:getLocalHost()、getByName()、 getAllByName()、 getAddress()、getHostName()。使用getLoc...原创 2019-03-14 18:57:32 · 329 阅读 · 0 评论 -
Java 线程并发协作(生产者/消费者模式)
多线程环境下,我们经常需要多个线程的并发和协作。这个时候,就需要了解一个重要的多线程并发协作模型“生产者/消费者模式”。Ø 什么是生产者? 生产者指的是负责生产数据的模块(这里模块可能是:方法、对象、线程、进程)。Ø 什么是消费者? 消费者指的是负责处理数据的模块(这里模块可能是:方法、对象、线程、进程)。Ø 什么是缓冲区? 消费者不能直接使...原创 2019-03-13 08:01:28 · 243 阅读 · 0 评论 -
Java 死锁及解决方案
死锁的概念 “死锁”指的是: 多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能进行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。 因此, 某一个同步块需要同时拥有“两个以上对象的锁”时,就可能会发生“死锁”的问题。下面案例中,“化妆线程”需要同时拥有“镜子对象”、“口红对象”才能运行同步块。那么,实际运行时,“小丫的化妆线...原创 2019-03-13 07:43:34 · 276 阅读 · 0 评论 -
Java 实现线程同步
▪ 同步问题的提出 现实生活中,我们会遇到“同一个资源,多个人都想使用”的问题。 比如:教室里,只有一台电脑,多个人都想使用。天然的解决办法就是,在电脑旁边,大家排队。前一人使用完后,后一人再使用。▪线程同步的概念 处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象。 这时候,我们就需要用到“线程同步”。 线程同步其实就是一种等待机制,多个需要...原创 2019-03-11 14:19:02 · 168 阅读 · 0 评论 -
Java 线程状态以及控制方法
线程状态▪ 新生状态(New) 用new关键字建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态。▪就绪状态(Runnable) 处于就绪状态的线程已经具备了运行条件,但是还没有被分配到CPU,处于“线程就绪队列”,等待系统为其分配CPU。就绪状态并不是执行状态,当系统选定一个等待执行的Th...原创 2019-03-10 21:04:06 · 298 阅读 · 0 评论 -
Java lambda表达式简化创建线程
就是用来简化创建写法的格式:(params) -> expression(params) -> statement(params) -> { statements }new Thread(() -> { for (int b = 0; b < 5; b++) { ...原创 2019-03-10 20:41:05 · 3929 阅读 · 0 评论 -
Java 线程优先级
1. 处于就绪状态的线程,会进入“就绪队列”等待JVM来挑选。2. 线程的优先级用数字表示,范围从1到10,一个线程的缺省优先级是5(默认)。Thread.MIN_PRIORITY = 1Thread.MAX_PRIORITY = 10Thread.NORM_PRIORITY = 53. 使用下列方法获得或设置线程对象的优先级。 int getPriorit...原创 2019-03-10 20:28:38 · 104 阅读 · 0 评论 -
Java Thread类常用方法以及静态代理概念
静态代理静态代理通常用于对原有业务逻辑的扩充。比如持有二方包的某个类,并调用了其中的某些方法。然后出于某种原因,比如记录日志、打印方法执行时间,但是又不好将这些逻辑写入二方包的方法里。所以可以创建一个代理类实现和二方方法相同的方法,通过让代理类持有真实对象,然后在原代码中调用代理类方法,来达到添加我们需要业务逻辑的目的。这其实也就是代理模式的一种实现,通过对真实对象的封装,来实现扩展性。...原创 2019-03-10 20:19:41 · 454 阅读 · 1 评论 -
Java 线程创建和启动方式
Java一共有三种方式来创建和启动线程1.继承Java.lang.Thread类,并覆盖run() 方法2.实现Java.lang.Runnable接口,并实现run() 方法3.实现Callable接口注意:1.新建的线程不会自动开始运行,必须通过start( )方法启动2.不能直接调用run()来启动线程,这样run()将作为一个普通方法立即执行,执行完毕前其他线程无...原创 2019-03-10 19:33:58 · 509 阅读 · 0 评论 -
Java java.util.Arrays类(工具类)
JDK提供的java.util.Arrays类,包含了常用的数组操作,方便我们日常开发。Arrays类包含了:排序、查找、填充、打印内容等常见的操作。打印数组import java.util.Arrays;public class Test { public static void main(String args[]) { int[] a = { 1, 2 }...原创 2019-03-10 08:43:22 · 571 阅读 · 0 评论 -
Java 标准输入输出流以及其重定向
Java标准输入输出流简介Java遵循标准I/O的模型,提供了Syetem.in,System.out,以及System.err。System.out 是一个已经预先处理过的,被包装成PrintStream的对象。System.err 和 System.out 一样,也是一个PrintStream。但是 System.in 不是,它是一个未经处理的InputStream。也就是说,...原创 2019-03-09 12:33:30 · 780 阅读 · 0 评论 -
Java RandomAccessFile类(随机读取)
import java.io.File;import java.io.IOException;import java.io.RandomAccessFile; import com.bjsxt.io.util.FileUtil;/** * 文件的分割思路 * 1、分割的块数 size n块 * 2、每一块的大小 blockSize * 最后:总的文件大小 ...原创 2019-03-09 11:00:45 · 223 阅读 · 0 评论 -
Java IO处理流之打印流
在整个IO包中,打印流是输出信息最方便的类。PrintStream(字节打印流)和PrintWriter(字符打印流)① 提供了一系列重载的print和println方法,用于多种数据类型的输出② PrintStream和PrintWriter的输出不会抛出异常③ PrintStream和PrintWriter有自动flush功能④ System.out返回的是PrintStream的...原创 2019-03-08 14:48:39 · 111 阅读 · 0 评论 -
Java 自定义方法批量关闭文件
import java.io.Closeable; public class FileUtil { /** * 工具类关闭流 * 可变参数: ... 只能形参最后一个位置,处理方式与数组一致(可传递多个参数) */ public static void close(Closeable ... io){ ...原创 2019-03-08 14:40:58 · 302 阅读 · 0 评论 -
Java IO处理流之引用类型处理流(ObjectInputStream + ObjectOutputStream)
引用数据类型处理流反序列化 输入流:ObjectInputStream readObject()序列化 输出流:ObjectOutputStream writeObject()注意:1)、先序列化后反序列化;反序列化顺序必须与序列化一致2)、不是所有的对象都可以序列化,必须实现java.io.Serializable接口 不是所有的属性都需要序列化,用tr...原创 2019-03-08 14:28:13 · 184 阅读 · 0 评论 -
Java IO处理流之数据流(DataInputStream 和 DataOutStream)
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import j...原创 2019-03-08 14:15:58 · 776 阅读 · 0 评论 -
Java 节点流
节点流类型:1)File 文件流。对文件进行读、写操作 :FileReader、FileWriter、FileInputStream、FileOutputStream。、(2)Memory1)从/向内存数组读写数据: CharArrayReader与 CharArrayWriter、ByteArrayInputStream与ByteArrayOutputStream。2)从/向内...原创 2019-03-08 11:30:28 · 639 阅读 · 0 评论 -
Java 不使用处理流解决乱码问题
import java.io.UnsupportedEncodingException; public class ConverDemo01 { /** * @param args * @throws UnsupportedEncodingException */ public static void ma...原创 2019-03-08 11:27:29 · 124 阅读 · 0 评论 -
Java 处理流
处理流:处理流类型:作用:增强功能、提供性能,节点流之上1.缓冲流输入流:BufferedInputStream(字节) BufferedReader(字符)输出流:BufferedOutputStream(字节) BufferedWriter(字符)2、转换流: 字节流 转为字符流 处理乱码(编码集、解码集)1)、编码与解码概念编码:字符 ---编...原创 2019-03-08 11:25:23 · 3158 阅读 · 1 评论 -
Java 字符流
字符流只能处理纯文本文件一、Reader中的FileReaderimport java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.Reader; /** * 纯文本读取 * @auth...原创 2019-03-08 08:41:10 · 131 阅读 · 0 评论 -
Java 字节流
字节流可以处理一切文件主要介绍两个最常用的类一、InputStream中的FileInputStream读取文件:import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.i...原创 2019-03-08 08:40:39 · 137 阅读 · 0 评论 -
Java 字节流实现文件拷贝
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.Outp...原创 2019-03-08 08:39:51 · 257 阅读 · 0 评论 -
Java IO流概述
一、概念流:流动 、流向 从一端移动到另一端 源头与目的地程序 与 文件|数组|网络连接|数据库 ,以程序为中心二、IO流分类1、按流向: 输入流与输出流2、按数据类型:字节流:二进制,可以一切文件 包括 纯文本 doc 音频、视频等等字符流:文本文件,只能处理纯文本3、按功能:节点流:包裹源头处理流:增强功能,提高性能三、字符流与字节...原创 2019-03-07 19:39:50 · 190 阅读 · 0 评论 -
Java 递归实现文件夹遍历
import java.io.File;import java.util.Arrays; /** * 输出子孙级目录|文件的名称(绝对路径) * 1、listFiles() * 2、递归 * * static listRoots() 根路径 * @author Administrator * */public class Demo05 { /**...原创 2019-03-07 19:23:58 · 427 阅读 · 0 评论 -
Java File类常用方法
1、文件名getName() 文件名、路径名getPath()路径名getAbsoluteFile() 绝对路径所对应的File对象getAbsolutePath() 绝对路径名getParent() 父目录 ,相对路径的父目录,可能为null 如. 删除本身后的结果2、判断信息exists()canWrite()canRead()isFile()isDirectory()...原创 2019-03-07 19:20:31 · 309 阅读 · 0 评论 -
Java Stack(栈)
E push(E item) 把项压入堆栈顶部。 E pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。 E peek() 查看堆栈顶部的对象,但不从堆栈中移除它。 boolean empty() 测试堆栈是否为空。 int search(Object o) ...原创 2019-03-07 11:04:16 · 391 阅读 · 0 评论 -
Java 使用队列实现堆栈
import java.util.Deque; /** * 使用队列实现自定义堆栈 * 1、弹 * 2、压 * 3、获取头 * @author Administrator * * @param <E> */public class MyStack<E> { //容器 private Deque<E> cont...原创 2019-03-07 10:56:18 · 1062 阅读 · 0 评论 -
Java Queue
对于Queue来说,就是一个FIFO(先进先出)的队列,添加元素只能在队尾,移除只能在队首。对于这一组方法,成功返回true,在操作失败时抛出异常,这是与下面一组方法的主要区别。add(E e):添加一个元素到队尾remove():获取队首的元素,并从队列中移除element():获取队首的元素,但不从队列中移除这一组,成功返回true,失败时返回一个特殊值(取决于操作,...原创 2019-03-07 10:55:07 · 116 阅读 · 0 评论