
Java
文章平均质量分 62
DarinWang
自学者, 正在被各个方面折磨.
展开
-
Java 浅拷贝和深拷贝
在Java中, 类可以通过实现 Cloneable 接口来实现.但是由此方法拷贝的对象是浅拷贝. 具体地说, 对于对象内部的基本类型是深拷贝, 而引用类型是浅拷贝.查看以下代码: (省略constructor, getter, setter, toString…)1 package prototype;2 3 import java.io.Serializable;4 5 public class Bar implements Serializable {6 private Stri原创 2020-08-26 08:34:07 · 159 阅读 · 0 评论 -
SpringBoot 整合 Mybatis
SpringBoot 整合 Mybatis深圳 20200817开发环境: mysql 8.0.21, maven文章目录SpringBoot 整合 Mybatis1 逆向工程1.1 导包1.2 生成代码的 plugin1.3 写配置文件1.4 运行生成2. 使用2.1 加注解后使用1 逆向工程1.1 导包导包是一个很简单的环节除了一些其他功能的包, 与本主题相关的包为mysql 包spring 整合 mybatis 的包<dependency> <group原创 2020-08-17 11:29:10 · 211 阅读 · 0 评论 -
设计模式 - 代理模式
设计模式 - 代理模式深圳 2020/08/02UML图代理模式 ( Proxy ), 为其他对象提供一种代理以控制对这个对象的访问.package proxy.generic;public interface Subject { void request();}package proxy.generic;public class RealSubject implements Subject { @Override public void reques原创 2020-08-02 23:27:02 · 121 阅读 · 0 评论 -
Mac 使用 brew 安装 OpenJDK
Mac 使用 brew 安装 OpenJDK参考资料:https://blog.youkuaiyun.com/bucketli1987/article/details/99707475假设已经安装了 brew更新库brew tap AdoptOpenJDK/openjdk搜索brew search /adoptopenjdk/选择一个版本安装brew cask install adoptopenjdk{versionNumber}默认安装目录是 /Library/Java/JavaVirtu转载 2020-08-01 00:11:53 · 3266 阅读 · 0 评论 -
Mybatis - 简单使用
Mybatis 使用开发环境: maven 项目, mysql 数据库, java 8.项目结构project: pom.xml src: main: java: ca.wd4.learn: entity: User.java mapper: UserMapper.java UserMapperTest.java resources: mapper: UserMapper.xml mybatis原创 2020-07-28 21:48:57 · 122 阅读 · 0 评论 -
设计模式 - 策略模式
设计模式 - 策略模式类图解析策略模式是一种定义一系列算法的方法, 从概念上看, 所有的这些算法完成的都是相同的工作, 只是实现不同. 他可以用同样的方式调用任意的一个算法, 减少了算法类与使用算法类之间的耦合.策略模式中的 Strategy 类层为 Context 定义了一系列可供重用的算法或行为. 继承有处于析取这些算法中的公共功能.简化了单元测试, 因为每个算法都有自己的类, 可以通过自己的接口单独测试.只要在分析的过程中听到需要在不同时间应用不同的业务规则, 就可以考虑原创 2020-07-24 23:24:15 · 103 阅读 · 0 评论 -
Java 并发 - 初步了解线程池
Java 并发 - 初步了解线程池20200721佛山线程池解决了什么问题?显著减少了处理器单元的闲置时间, 增加处理器单元的吞吐能力.假设一个服务器完成一项任务的时间为创建线程的时间(T1)+在线程中执行任务的时间(T2)+销毁线程的时间(T3) 创建线程的时间 (T_1) + 在线程中执行任务的时间 (T_2) + 销毁线程的时间 (T_3) 创建线程的时间(T1)+在线程中执行任务的时间(T2)+销毁线程的时间(T3)如果 T1+T2≫T3T_1+T_2\gg T_3T1原创 2020-07-21 18:44:32 · 110 阅读 · 0 评论 -
Java 序列化和反序列化
一直对 Java 中的序列化和反序列化有疑惑:序列化和反序列化有什么用?怎么进行对象的序列化和反序列化?被序列化的类代码中的 serialVersionUID 有什么用?下面的这篇来自CodeSheep的文章很好地回答了这些问题。我来做一个小小的总结:序列化和反序列化有什么用?序列化可以把一个对象转换成字节序列,然后存储在磁盘中。反序列化顾名思义就是序列化的一个逆过程,即将一个字节序列还原成一个对象。那么为什么要把一个对象以字节序列的格式存储在磁盘中呢?那是因为,首先,我们可以永久地存储一个对象的信息转载 2020-07-18 18:39:23 · 124 阅读 · 0 评论 -
Java 反射 - 调用任意方法和构造器
Java 反射 - 调用任意方法和构造器反射机制使得我们调用任意的方法.Method 类中有一个 invoke 方法, 允许我们调用包装在该对象中的方法.Object invoke(Object obj, Object… args)对于静态方法, 第一个参数可以省略, 也就是设成 null使用示例Employee e = new Employee("lalala");Method m = e.getClass().getMethod("getName");System.out.print原创 2020-07-15 15:58:06 · 255 阅读 · 0 评论 -
Java 反射 - 使用反射编写泛型数组代码
Java 反射 - 使用反射编写泛型数组代码复制一个数组, 可以使用 Arrays 类的 copyOf 方法.var employees = new Employee[] { new Employee("lalala"), new Employee("hehehe")};var newEmployees = (Employee[]) Arrays.copyOf(employees, 4); for (Employee e : newEmployees) { Syst原创 2020-07-15 15:14:48 · 233 阅读 · 0 评论 -
Java 反射 - `Class` 类
Java 反射 - Class 类在程序运行期间, 系统始终为所有对象维护一个 运行时类型标识. 这个信息会跟踪每个对象所属的类. 虚拟机利用运行时类型信息选择要执行的正确的方法.Class 类被用于访问这些信息.Employee e;...Class cl = e.getClass();Class 对象会描述一个特定类的属性.获得 Class 对象的三种方法public final native Class<?> getClass();static Class<?&原创 2020-07-15 15:13:13 · 163 阅读 · 0 评论 -
Java 反射 - 在运行时分析对象
Java 反射 - 在运行时分析对象获取值先看一段获取字段信息的代码:var harry = new Employee("harry hacker", 50000);Class cl = harry.getClass();Field f = cl.getDeclaredField("name");Object obj = f.get(harry); // 个人理解: 通常访问一个字段, 要求从一个具体的对象出发; // 而现在从类出发, 先获取类对象, 然后获取我们想要获取的字段(在类中的原创 2020-07-15 15:12:36 · 244 阅读 · 0 评论 -
Java 反射 - 利用反射分析类的能力
Java 反射 - 利用反射分析类的能力在 java.lang.reflect 包中有三个类: Field, Method, Constructor,分别用于描述类的字段, 方法和构造器.三个类都有 getName() 方法, 用来返回字段, 方法和构造器的名称.Field 类有一个 getType 方法java.lang.reflect.Fieldpublic Class<?> getType(); // 返回描述字段类型的一个对象Method 类和 Constru原创 2020-07-15 15:12:02 · 363 阅读 · 0 评论 -
Java 反射 - 总览
Java 反射 - 总览反射是 Java 的一个库, 提供了工具集, 可以用来编写 动态操作 java 代码 的程序.能够分析类能力的程序成为 反射.反射能够做到:在运行时分析类的能力在运行时检查对象实现泛型数组操作代码主要是开发工具的程序员对它感兴趣....原创 2020-07-15 15:11:16 · 112 阅读 · 0 评论 -
Java IO 流 - BufferedReader/Writer 用法
Java IO - BufferedReader/Writer20200711 佛山使用示例package july11;import java.io.*;public class BufferedFileReaderWriterDemo { public static void main(String[] args) { var srcFile = new File("hello.txt"); var desFile = new File("hel原创 2020-07-11 11:29:02 · 145 阅读 · 0 评论 -
Java IO 流 - 缓冲流
BufferedInputStream;BufferedOutputStream;BufferedReader;BufferedWriter;提高读写的效率.能够提高读写速度的原因: 内部提供了一个缓冲区.BufferedInputStream 源码private static int DEFAULT_BUFFER_SIZE = 8192; 以下代码可以复制一个文件package july11;import java.io.*;public class BufferedStre原创 2020-07-11 11:17:55 · 191 阅读 · 0 评论 -
Java IO 流 - 使用 `FileReader` 和`FileWriter` 实现文本的复制
20200709 杭州package july09;import java.io.*;public class FileCopyer { //定义一个缓冲数组的大小 private static int BUFFER_SIZE = 1024; /** * * 将一个文本文件复制到一个新的文件. 新文件的绝对路径不可以和源文件的绝对路径相同. * 如果目标文件不存在, 就会创建新文件. 如果复制成功, 就返回 true, 否则返回 false. *.原创 2020-07-11 07:15:35 · 215 阅读 · 0 评论 -
Java IO 流 - FileWriter
20200706 大雨 上海建国宾馆/*** Writes a string.** @param str* String to be written** @throws IOException* If an I/O error occurs*/public void write(String str) throws IOException;20200708 阵雨 上海使用示例# 用以下方式构造的writer对象在每次写文件会覆盖原有的.原创 2020-07-08 17:58:34 · 143 阅读 · 0 评论 -
Java IO 流 - FileReader
Java IO 流 - FileReader20200706 大雨 上海建国宾馆/*** 一个字符一个字符地读, 如果是流的末尾, 返回-1, 否则返回一个字符的值.**/public int read() throws IOException;FileReader reader = null;try { File file = new File("hello1.txt"); reader = new FileReader(file); int data;原创 2020-07-07 07:41:59 · 119 阅读 · 0 评论 -
Java IO 流 -总览
Java IO 流20200706 大雨https://www.bilibili.com/video/BV1Qb411g7cz?p=584输入: 读取外部数据到内存中输出: 将程序数据输出到磁盘, 光盘等设备中流的分类按操作数据单位, 可以分为: 字节流 (8bit = 1byte), 字符流 (16bit = 1char);按数据流的流向, 可以分为: 输入流, 输出流按流的角色, 可以分为: 节点流, 处理流字节流字符流输入流InputStr原创 2020-07-07 07:41:13 · 137 阅读 · 0 评论 -
Java IO 流 - File 类
Java IO 流 - File 类File 类的一个对象, 代表一个文件或者目录, 在 java.io 包中.1 构造器File(String pathname);// pathname 如果是相对路径, 那么该相对路径指的是当前module的路径File(File parent, String child);File(String parent, String child);2 常量路径分隔符public static final String separator; //根据操作系统原创 2020-07-07 07:40:12 · 99 阅读 · 0 评论 -
Spring in Action 5th edition Chapter 4
Chapter 4How to enable securityConfig User AuthenticationConfig UrlHow to get the current userHow to enable securityadd the following dependency<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b原创 2020-07-01 18:20:28 · 161 阅读 · 0 评论 -
Spring in Action 5th edition Chapter 1 & 2
Chapter I & IIHow to write a controllerHow to write a templateHow to add attributes to Model objectHow to perform validationHow to write a “controller” which does simple thingsHow to write a controller@Controller@RequestMapping("/path")publi原创 2020-07-01 18:19:34 · 152 阅读 · 0 评论 -
Spring in Action 5th edition Chapter 3
Chapter 3Core QuestionsHow to use JdbcTemplateinsertselectHow to use SimpleJdbcInsertHow to get the generated keyusing JdbcTemplateusing SimpleJdbcInsertWhat is the difference between JDBC and JPA.How to use JdbcTemplate@Repositorypubli原创 2020-07-01 18:17:48 · 195 阅读 · 1 评论 -
剑指Offer : 面试题 3 - 数组中重复的数字
剑指Offer : 面试题 3 - 数组中重复的数字题目找出数组中重复的数字在一个长度为 nnn 的数组里的所有的数字都在 n−1n-1n−1 的范围内. 数组中某些数字是重复的, 但不知道有几个数字重复了, 也不知道每个数字重复了几次. 请找出数组中任意一个重复的数字.例, 输入: {2, 3, 1, 0, 2, 5, 3} 输出: 2 或 3我的解法思路一创建一个长度为 nnn 数组 aux, 下标 iii 表示数字 iii 出现过的次数. 遍历数组, 如果 aux[i] 的值原创 2020-07-01 16:33:55 · 146 阅读 · 0 评论 -
算法第四版 第二章 快速排序
5 快速排序5.1 原理快速排序是一种 分治 的排序算法. 它将一个数组分成两个子数组, 将两部分独立地排序.快速排序和归并排序是互补的:归并排序将数组分成两个子数组分别排序, 并将有序的子数组归并以将整个数组排序;快速排序将数组排序的方式则是当两个子数组都有序时整个数组也就自然有序了.在第一种情况中, 递归调用发生在处理整个数组之前;在第二种情况中, 递归调用发生在处理整个数组之后.在归并排序中, 一个数组被等分为两半;在快速排序中, 切分 (partition) 的位置取决于数组的内原创 2020-06-28 21:00:04 · 239 阅读 · 0 评论 -
算法第四版 第二章 归并排序
4 归并排序 merge sort4.1 原理需要将一个数组排序, 可以先 (递归地) 将它分成两半分别排序, 然后将结果归并起来.4.1.1 优点能够保证将任意长度 NNN 的数组排序所需时间和 NlogNN\log NNlogN 成正比.4.1.2 缺点所需的额外空间和 NNN 成正比.4.2 归并实现public static void merge(Comparable[] a, int lo, int mid, int hi) { int i=lo, j = mid+1;原创 2020-06-28 09:52:44 · 182 阅读 · 0 评论 -
算法第四版 第二章 初级排序算法
第二章 排序1 总览1.1 排序算法的模板public class Example { public static void sort(Comparable[] a) { /*排序代码*/ } private static boolean less(Comparable v, Comparable w) { return v.compareTo(w)<0; } private static void exch(Comparable[] a, int i, int j) { C原创 2020-06-27 15:56:51 · 274 阅读 · 0 评论 -
Java 编程思想练习9 fib数字
Java 编程思想 练习9 fib数字题目:创建一个方法,接受一个整数,并显示从第一个元素开始总共由该参数制定个数的所构成的所有fib数字。fib数字:每一个数字(从第三个开始)都是前两个数字的和。 1 1 2 3 5 8 。。。用switch实现。public class Fib { public static void fib(int n) { int a=1; i...原创 2018-12-21 15:01:00 · 428 阅读 · 0 评论 -
Java抽象类和接口
先上原网站:https://www.cnblogs.com/dolphin0520/p/3811437.html接口与抽象类抽象是OOP的特征之一,而实现抽象则是接口以及抽象类。抽象类抽象方法:是一种特殊的方法。(他只能声明,而没有具体的实现)格式声明:abstract void fun()如果一个类有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关...转载 2018-07-21 19:18:01 · 173 阅读 · 0 评论 -
Java 类与继承
先上原网页: https://www.cnblogs.com/dolphin0520/p/3803432.htmlJava类与继承一、类:1. 基本1) 文件以.java结尾。2) 每个类文件只能有一个public类,且该public类的名称要与文件名完全相同;若不存在public类,则类文件名可以随意。3) 成员变量在定义时若未初始化,则:变量类型 默认值 ...转载 2018-07-20 22:29:33 · 246 阅读 · 0 评论 -
Java中的static关键字
先上原网站:http://www.cnblogs.com/dolphin0520/p/3799052.html“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要途径。”方便在没有创建对象的情况下来进行调用(方法、变量)。1. st...转载 2018-07-19 16:32:11 · 203 阅读 · 0 评论 -
Java “==”和“.equals()”的区别。
从Java数据类型的区别可以得出答案。==:Java 基础数据类型:名称类型所占空间大小(单位:byte)float点浮型4 double-8byte 整型 1short-2int-4long-8char字符型2boolean布尔型未规定空间大小,只能去字面值“ture”或“false”以上数据类型,变量直接存储的是“值”,使用“==”进行比较时,对比的是"值"本身。如: int ...转载 2018-06-22 13:53:45 · 126 阅读 · 0 评论