自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 问答 (1)
  • 收藏
  • 关注

原创 Degister

一、Degister 是干嘛的Digester 被用于完成 xml 解析。Digester 是 Jakarta 子项目 Commons 下的一个模块,支持基于规则的对任意 XML 文档的处理。它最初是 Structs 项目的一部分,后因其通用性而划归 Commons二、使用引入 jar 包 <dependency> <groupId>org.apache.commons</groupId> <artifactId>co

2021-01-06 16:33:02 329

原创 JPDA实现远程debug

一、 JPDA 是什么 ?JPDA 是 JAVA 平台调试架构(Java Platform Debugger Architecture),它是 Java 虚拟机为调试和监控虚拟机专门提供的一套接口。Oracle 文档位置 : https://docs.oracle.com/javase/8/docs/technotes/guides/jpda/JPDA 由三个规范组成: JVMTI(JVM Tool Interfacace )、JDWP(Java Debug Wire Protocol )、 JDI(

2020-12-29 08:21:06 448 1

原创 java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment

报错:java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment] with root cause java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment at java.lang.Class.forName0(Native Method) at java.l

2020-12-16 16:58:44 1419

原创 java 的 Stream 流

参考代码:user对象代码:package common;public class User { private String name; private Integer age; private String address; public User(String name, Integer age, String address) { super(); this.name = name; this.age = age; this.address = address;

2020-12-15 13:47:31 127

原创 web前端video视频音频相关

一、使用二、参数三、知识MediaStreamMediaStream : 是一个媒体内容的流。一个流包含几个轨道,比如视频和音频轨道。属性:MediaStream.active: 只读布尔型。如果这个流处于活动,状态值为 true, 反之为 falseMediaStream.ended : 只读布尔型。如果 ended 事件在这个对象上触发了,也就是说这个流已经被完全读取,值为 true, 如果这个流还没有到达这个流的尾部,值为falseMediaStream.id: 只读这是一个

2020-12-11 15:17:36 1621 1

原创 File对象的一个隐式转换

简单说就是在 windows 下 new 一个File 对象时,若你传入的路径是 “/”,那么在 File 中就给你转成了"",存取到数据库后,若下次获取时,分割符要特别注意,具体可看我的debug,如下图:

2020-11-22 11:14:51 115

原创 设计模式——适配器模式(代码基本参考自《大话设计模式》)

public abstract class Target { public void request() { System.out.println("普通请求..."); }}public class Adaptee { public void specificRequest() { System.out.println("特殊请求..."); }}public class Adapter extends Target{ private Adaptee adaptee = n

2020-11-04 13:42:53 78

翻译 Java 网络编程——笔记一

java 只支持 TCP 、 UDP 、以及建立再 TCP和 UDP 之上的应用层协议,若需要使用其它协议,只能通过链接到原生代码来实现当 Java 程序需要访问网络时,他们需要同时处理数字地址和相应的主机名。这些方法由 Java.net.InetAddress 类提供每台有 ip 地址的计算机都有几千个逻辑端口,确切地讲,每个传输层协议有 65535 个端口(我原来一直以为是整个计算机共享 65535 个端口,)...

2020-11-02 13:44:14 132 1

原创 设计模式——享元模式(代码基本参考自《大话设计模式》)

public abstract class Flyweight { public abstract void operation(int extrinsicstate);}public class ConcreteFlyweight extends Flyweight { @Override public void operation(int extrinsicstate) { System.out.println("具体 flyweight : "+extrinsicstate); }

2020-11-02 09:08:54 66

原创 设计模式——抽象工厂模式(代码基本参考自《大话设计模式》)

public interface IUser { public void Insert(User user); public User getUser(int id);}public interface IDepartment { public void Insert(Department department); public Department getDepartment(int id);}public class User { private int id; private

2020-11-02 09:08:33 66

原创 设计模式——观察者模式(代码基本参考自《大话设计模式》)

参考:博客public abstract class Subject { private List<Observer> observers = new LinkedList<Observer>(); // 增加观察者 public void attach(Observer observer) { observers.add(observer); } // 移除观察者 public void detach(Observer observer) { obser

2020-11-02 09:08:17 91

原创 设计模式——中介者模式(代码基本参考自《大话设计模式》)

public abstract class Colleague { protected Mediator mediator; public Colleague(Mediator mediator) { this.mediator = mediator; }}public abstract class Mediator { public abstract void send(String message,Colleague colleague);}public class Con

2020-10-31 13:38:05 110

原创 设计模式——访问者模式(代码基本参考自《大话设计模式》)

public abstract class Element { public abstract void accept(Visitor visitor);}public abstract class Visitor { public abstract void visitConcreteElementA(ConcreteElementA concreteElementA); public abstract void visitConcreteElementB(ConcreteElementB

2020-10-31 13:37:25 112

原创 设计模式——建造者模式(代码基本参考自《大话设计模式》)

public abstract class Builder { public abstract void buildPartA(); public abstract void buildPartB(); public abstract Product getResult();}public class Product { List<String> parts = new LinkedList<String>(); public void Add(String p

2020-10-30 13:49:27 129

原创 设计模式——职责链模式(代码基本参考自《大话设计模式》)

public abstract class Handler { protected Handler successor; private String name; public Handler(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public

2020-10-30 13:49:02 91

原创 设计模式——桥接模式(代码基本参考自《大话设计模式》)

public abstract class Implementor { public abstract void operation();}public class ConcreteImplementorA extends Implementor{ @Override public void operation() { // TODO Auto-generated method stub System.out.println("具体实现 A 的方法执行"); } }public

2020-10-30 13:48:25 102

原创 设计模式——迭代器模式(代码基本参考自《大话设计模式》)

// 迭代器抽象类public abstract class Iterator { public abstract Object first(); public abstract Object next(); public abstract boolean isDone(); public abstract Object currentItem();}public class ConcreteIterator extends Iterator{ private ConcreteAggre

2020-10-30 13:47:54 105

原创 设计模式——单例模式(代码基本参考自《大话设计模式》)

public class Singleton { private static Singleton instance = null; private static final Object lock = new Object(); public Singleton(){ } public static Singleton getInstance() { synchronized (lock) { if(instance == null) { instance

2020-10-30 13:47:34 73

原创 设计模式——外观模式(代码基本参考自《大话设计模式》)

public class SubSystemOne { public void MethodOne() { System.out.println("子系统方法一"); }}public class SubSystemTwo { public void MethodTwo(){ System.out.println("子系统方法二"); }}public class SubSystemThree { public void MethodThree(){ System.out.pr

2020-10-29 10:31:50 78

原创 设计模式——原型模式(代码基本参考自《大话设计模式》)

原型模式,将白了就是对象的复制,java 中有已经提供了接口 Cloneable 。当然还有另外一种通过序列化的形式实现public class WorkExperience implements Cloneable,Serializable{ private String workDate; private String company; public WorkExperience(String workDate, String company) { super(); this.wor

2020-10-29 10:31:11 71

原创 设计模式——模板模式(代码基本参考自《大话设计模式》)

public abstract class AbstractClass { public abstract void operation_1(); public abstract void operation_2(); public void templateMethod() { operation_1(); operation_2(); }}public class ConcreteClassA extends AbstractClass{ @Override public

2020-10-29 10:30:27 70

原创 设计模式——工厂模式(代码基本参考自《大话设计模式》)

public interface IFactory { LeiFeng createLeiFeng();}// 雷锋类public class LeiFeng { public void sweep() { System.out.println("扫地"); } public void wash() { System.out.println("洗衣"); } public void buyRice() { System.out.println("买米"); }}//

2020-10-28 17:06:20 62

原创 设计模式——代理模式(代码基本参考自《大话设计模式》)

// 定义一个请求接口public interface SubjectInterface { public abstract void request();}public class RealSubject implements SubjectInterface{ @Override public void request() { System.out.println("真实的请求实现..."); }}// 代理类// 保存一个引用,使得代理可以访问实体,并提供一个与接口相

2020-10-28 17:05:32 71

原创 设计模式——装饰模式(代码基本参考自《大话设计模式》)

/** * 需要装饰的对象 * @author win10 */public class NeedDecoratorObj { private String name ; public NeedDecoratorObj(){ } // 有了有参构造方法 无参方法不要忘记了(当然更具实际情况,但这里需要) public NeedDecoratorObj(String name) { this.name = name; } public void show() { }

2020-10-28 17:05:07 51

原创 设计模式——策略模式(代码基本参考自《大话设计模式》)

// 策略是多变的,故将策略抽象出来abstract class Strategy { // 算法方法 public abstract void algorithmInterface();}// 具体策略public class ConcreteStrategyA extends Strategy{ @Override public void algorithmInterface() { System.out.println("策略 A..."); }}public cl

2020-10-28 17:04:24 54

原创 设计模式——简单工厂模式(代码基本来自《大话设计模式》)

在阅读框架的源码之前,再把设计模式过一遍吧!代码来自《大话设计模式》一书 p50public class OperationFactory { public static Operation createOperate(String operate) { Operation oper = null; switch(operate) { case "+": oper = (Operation) new OperationAdd(); break; case "-":

2020-10-28 17:03:08 90

原创 NIO——transferFrom/transferTo与MappedByteBuffer问题/实验

一、实验(这个实验在 CSDN和开源中国上我都描述了具体流程)实验准备: 需要进行文件复制的文件, 我的文件大小是 1.12 G实验代码: @Test public void test_4() throws Exception{ File file = new File("F:\\temporary\\readFile\\测试文件.rar"); File file2 = new File("F:\\temporary\\writeFile\\测试文件.rar

2020-09-05 16:33:19 1259 7

翻译 NIO——笔记四

通道(Channel)多数情况下,通道与操作系统的文件描述符 和 文件句柄有着一对一的关系。虽然通道比文件描述符更广义,但你经常使用到的多数通道都是连接到开放的文件描述符的。Channel 类提供维持平台独立性所需要的抽象过程,不过仍然会模拟现代操作系统本身的 I/O 性能。通道是一种途径,借助该途径,可以用最小的总开销来访问操作系统本身的 I/O 服务。缓冲区则是通道内部用来发送和接收数据的端点。与缓冲区不同,通道 API 主要由接口指定。不同的操作系统上通道实现会有根本性差异,所以通道 API

2020-08-29 16:21:04 88

原创 关于 SimpleDateFormat 线程安全

在开发的额过程中突然遇到关于 SimpleDateFormat 线程安全的问题,在此记录一下:开始我并没有注意到 SimpleDateFormat 的线程安全问题,所以将它设置为类的共有属性,想着图个方便,懒得每次使用都要新建一个对象,于是我也就这么做了。因为是开发环境,最初的时候自己也没有察觉出什么异常,直到我的 web 前端使用each 方法,然后便出现了莫名的状况,后端的捕获的异常出现在 SimpleDateFormat 这儿。刚刚出现这个问题时,我没有在意,因为之前运行得好好的,这里应该没啥

2020-08-29 10:54:40 100

翻译 NIO——笔记三

一、复制缓冲区可以创建从外部存储到数组中元素的缓冲对象,缓冲区不限于管理数组中的外部数据,它们页能管理其它缓冲区中的外部数据,当一个管理其他缓冲器所包含的数据元素的缓冲器被创建时,这个缓冲器被称之为视图缓冲器。大多数的视图缓冲器都是 ByteBuffer 的视图。视图存储器总是通过调用已存在的存储器实例中的函数来创建。使用已存在的存储器实例中的工厂方法意味着视图对象为原始存储器的内部实现细节私有。数据元素可以直接存取,无论它们是存储在数组中还是以一些其他的方式,而不需经过原始缓冲区对象的 get()/p

2020-08-09 15:01:04 155

翻译 NIO——笔记二(缓冲区)

缓冲区(Buffer)一个 Buffer 对象是固定数量的数据的容器。其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。对于每个非布尔原始数据类型都有一个缓冲区类。尽管缓冲区作用于它们存储的原始数据类型,但缓冲区十分倾向于处理字节。非字节缓冲区可以在后台执行从字节或到字节的转换,这取决于缓冲区是如何创建的(这暗含了按字节排序的问题)。缓冲区的工作与通道紧密联系。通道是 I/O 传输发生时的入口,而缓冲区是这些数据传输的来源或目标。对于离开缓冲区的传输,你想要传递出去的数据被置于一个

2020-08-01 08:41:40 216

原创 NIO——笔记一(相关概念以及代码)

@Testpublic void NIOTest_copy_1() throws Exception {long startTime = System.currentTimeMillis();FileChannel in = new FileInputStream(“F:\temporary\read.txt”).getChannel();FileChannel out = new FileOutputStream(“F:\temporary\write.txt”).getChannel(); B

2020-07-30 20:32:46 125

原创 Ajax 文件上传(前后端完整代码,注意修改文件保存路径\访问路径)

一、前端代码:① html 代码:注意:如需要选择多个文件,进行上传,Ⅰ、multiple=“multiple” 不能省 Ⅱ、选择时是 Ctrl + 你所要选择的文件,不要分多次进行,不然后面选择的文件将会覆盖前面所选的文件<input type="file" multiple="multiple" id="myFiles" style="width: 100px;height: 25px;"><input type="button" value="上传" id="upload

2020-07-25 11:32:31 3422 1

原创 jsp创建的map无法传到后端及解决

先说结论吧,通过 JSP 是无法直接使用map的(这里指的是 new Map()),但在 html 中是可以的在 HTML 中创建 map 并使用,如:但在 JSP 中使用这种方式创建的 map 传到后端,里面的内容竟然会没有,如:① JSP 页面代码为(此时后端接收到的 map 的 size 为0,也就是说内容没传过去): var condition = new Map(); condition.set( "page",page); condition.set

2020-07-24 19:07:46 851

原创 NIO——FileDescriptor

FileDescriptor 类该类的作用?它用作特定结构的不透明句柄,这些结构表示打开的文件、打开的套接字或其它字节源宿。它实际用途是创建一个 FileInputStream 或 FileOutputStream,应用程序不应该创建自己的文件描述符在哪里被用到了?MappedByteBuffer 中被用到, DirectByteBuffer 中又继承了 MappedByteBuffer, DirectByteBuffer 又是 NIO 的一个重要类,所以看看还是对我们理解底层有所帮助的输出

2020-07-21 21:01:20 148

原创 复制的路径就不会出错?——java.io.FileNotFoundException: ‪‪F:\temporary\read.txt (文件名、目录名或卷标语法不正确。)

/** * A byte buffer. * 一个字节缓冲 * <p> This class defines six categories of operations upon * byte buffers: * 这个类在字节缓冲区中定义了六类操作: * * <li><p> Absolute and relative {@link #get() <i>get</i>} and * {@link #put(byte) &l

2020-07-17 11:33:21 154

原创 Semaphore 的简单使用

Semaphore 的使用,看了 api 后,我觉得就一个值得注意的,那就是:信号量通常用于限制线程数,而不是访问某些(物理或逻辑)资源使用示例代码如下: @Test public void SemaphoreTest() throws Exception { CountDownLatch countDownLatch = new CountDownLatch(10); // 3 个工作人员 Semaphore semaphore = new Semaphore(3, true

2020-07-16 08:37:12 210

原创 同步、管程、重排序

本文来源于文档,但位置丢失,所以发布时只能选择原创无法选择为转载和翻译,这里附上官方地址: JSR内存模型和线程规范 一、 关于同步和管程有多种机制可以用于线程间的通信。其中最基础的是同步,而同步是用管程来实现的。每个对象都关联着一个管程,线程可以通过它来执行锁定(lock) 或解锁(unlock)操作。每次仅有一个线程可以持有管程上的锁。其它试图锁定该管程的线程会一直阻塞,直到能从该管程上获得锁为止。线程 t 可以锁定一个管程多次,每次unlock操作都会将一次lock操作撤销。synchroniz

2020-07-15 11:42:37 86

原创 ReentrantReadWriteLock——总结(读写锁的实现)

ReentrantReadWriteLock类的大体结构在看完 ReentrantReadWriteLock 的源码后,发现主要还是通过它的内部类 Sync(当然咯,还有其它的内部类) 实现的,而 Sync 又继承了 AbstractQueuedSynchronizer 类;同时还通过 ThreadLocalHoldCounter(此类继承了ThreadLocal)来记录HoldCounter 对象。所以,在阅读源码时,建议最好掌握以下知识点,不然可能会有点儿懵:知识AQS 的实现

2020-07-15 09:37:25 133

原创 ReentrantReadWriteLock 源码查看

ReentrantReadWriteLock 源码查看一、类的注释说明/** * An implementation of {@link ReadWriteLock} supporting similar * semantics to {@link ReentrantLock}. * <p>This class has the following properties: * / /** * ReadWriteLock 的支持与实现与 ReentrantLock 语义类似,此类具有

2020-07-14 17:26:26 80

空空如也

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

TA关注的人

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