
java
hustfc
这个作者很懒,什么都没留下…
展开
-
Java适配器
Java适配器上一篇笔记说到,如果想要做一个反向迭代器和随机迭代器,那么不应该覆盖原有的方法,而是应该创建新的方法。当有一个接口需要另外一个接口的时候,编写适配器就可以解决问题。适配器有时候只是将原有的接口接口做了另外一层封装,看下面这个代码传统方法protected String[] words = "H W R D A D Y F A E I K N P".split(" "); ...原创 2019-10-24 10:37:31 · 370 阅读 · 0 评论 -
java synchronized用法详解
参考链接:https://blog.youkuaiyun.com/evankaka/article/details/44153709线程运行状态图:synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;修饰一个方法,被修饰的方法称为同步方法,其作用的范...原创 2019-06-13 21:52:50 · 715 阅读 · 0 评论 -
Java对日期的处理,计算相隔的年、月、日
获取这个日期的年、月、日/** * 年月日 * @param userId * @return */ def dateMap(Date userRegDate ) { if(!userRegDate) { return null } Calendar cal = Calenda...原创 2019-08-06 09:52:40 · 1225 阅读 · 0 评论 -
Java回调机制CallBack总结(生产者消费者模式、监听者模式)
什么是回调在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,这种机制就称为回调。生产者消费者模式一个例子一个销售向工人订了100台机器准备卖给老外,让工人在生产完100台机器后通知下他.Workerpackage Solution;public ...原创 2019-08-11 21:50:28 · 1144 阅读 · 0 评论 -
Java多线程学习总结
参考链接:https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/MultithreadJava并发基础何为进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 m...原创 2019-08-12 19:59:05 · 375 阅读 · 0 评论 -
leetcode.76 最小覆盖子串Java
题目描述:思路一两个指针left和right都指向第一个元素然后right指针向右移动,知道找到第一个包含的(包含的可以用一个map统计)然后左指针向左移动,看能不能缩小范围,当左指针移动到窗口的字母比T的字母个数还少的时候,再移动右指针。建立Map字典:Map<Character, Integer> dicT = new HashMap<>(); ...原创 2019-09-01 14:36:24 · 242 阅读 · 0 评论 -
java 数组和List拷贝
数组和List浅拷贝和深拷贝数组拷贝1. clone方法public class ArrayCopyTest { public static void main(String[] args) { int[] a1 = {-1, 2, 3}; //浅拷贝 int[] a2 = a1; a2[0] = 2; ...原创 2019-09-01 22:11:27 · 961 阅读 · 0 评论 -
leetcode77.组合Java
LeetCode.77 组合解法一:DFS+回溯法图解:代码:package com.leetcode.solution;import java.util.*;/** * @Author : fanc * @Date : 2019-09-01 19:25 */public class Solution77 { List<List<Integer>...原创 2019-09-03 17:09:42 · 402 阅读 · 0 评论 -
LeetCode.78 子集Java
LeetCode.78 子集Java还是使用回溯法:package com.leetcode.solution;import sun.awt.image.ImageWatched;import java.util.*;/** * @Author : fanc * @Date : 2019-09-03 17:10 * 78子集 */public class Solutio...原创 2019-09-03 17:48:49 · 279 阅读 · 0 评论 -
LeetCode.79 单词搜索Java
LeetCode.79 单词搜索[外链图片转存失败(img-6KDMgno4-1567591639574)(media/15675914896534/15675915125390.jpg)]这是一个矩阵回溯算法典型题目,涉及到DFS和状态回溯重置偏移量数组在二维平面经常使用的对于这种搜索算法,代码编写也相对固定package com.leetcode.solution;/** ...原创 2019-09-04 18:07:36 · 367 阅读 · 0 评论 -
LeetCode.80 删除排序数组中的重复项 Java
LeetCode.80 删除排序数组中的重复项算法:原地挪动一般都是双指针如果是当前判断元素elem,那么当前元素个数++,如果满足不超过两次的条件,那么将这个数保存,然后左指针+1如果超过三个,那么只是index+1如果当前元素已经更改,那么重新选择当前元素,index不变public int removeDuplicates(int[] nums) { if (nu...原创 2019-09-10 17:58:41 · 446 阅读 · 0 评论 -
LeetCode.81 搜索旋转排序数组Java
LeetCode.81 搜索旋转排序数组注意:通过mid和左边数字大小可以判断到底是左边有序还是右边有序需要处理重复数字最后才能通过???代码:class Solution { public boolean search(int[] nums, int target) { if (nums.length == 0) { ...原创 2019-09-15 20:48:40 · 409 阅读 · 0 评论 -
java虚拟机内存模型
一个类的执行过程。黄色的是线程共享的。蓝色的是每一个线程独有的。程序计数器你的程序马上要执行的下一行代码对应的地址指针方法区静态变量常量类元信息,把类文件解析成不同的部分Math.class字节码文件,主要被类装载子系统装载到方法区加入有new了两个math对象,那么在堆中,就会有两个math对象,并且这些对象都会指向Math.class在方法区里面的类原信息。堆...原创 2019-05-29 17:44:12 · 240 阅读 · 0 评论 -
MyBatis学习(三) MyBatis中设计模式分析
测试代码:import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;...原创 2019-06-06 10:06:32 · 266 阅读 · 0 评论 -
java处理输入,Scanner API
Java想要通过控制台进行输入的时候,首先要定义一个Scanner对象,并与标准输入流相关联:Scanner in = new Scanner(System.in);Scanner类定义在java.util包中,当使用的类不是在java基本的java.lang中的时候,需要使用import导入import java.util.*; //Scanner的库import java.u...原创 2019-04-05 21:56:54 · 1541 阅读 · 0 评论 -
Java数组详解
声明数组数组for each循环有点像python语法:for(int element : a) System.out.println(element);数组打印:import java.util.Arrays;public class array { public static void main(String[] args){ ...原创 2019-04-06 20:57:43 · 175 阅读 · 0 评论 -
Java静态域和静态方法(static)详解
1.静态域如果将域定义为static,每个类只有一个这样的域。例如上面这个员工类,每一个员工都有自己的id,但是这个类的所有实例将共享一个nextId域。也就是说,1000个员工对象,每一个与员工都有自己的id。但是只有一个静态域nextId。即使没有一个Employee对象,静态域nextId依然存在。可以理解静态域就是一个类域2.静态常量静态变量使用的比较少,但是静态常量使用...原创 2019-04-08 17:50:44 · 1474 阅读 · 0 评论 -
Java泛型数组列表ArrayList详解 & ArrayList API
ArrayList介绍普通的数组一旦确定大小,想要再改变空间大小就不太容易了。在Java中,解决这个问题最简单的方式是使用Java的ArrayList类。下面声明和构造一个保存Employee对象的数组列表。ArrayList<Employee> staff = new ArrayList<Employee>();在Java SE7中,可以省去右边的类型参数:但...原创 2019-04-15 21:54:31 · 657 阅读 · 0 评论 -
理解Java抽象类、抽象方法
在面向对象中,所有的对象都是通过类来描述的。但是并不是所有的类都用来描绘对象。当一个类的属性不足以描绘一个对象的时候,这个类就是抽象类。由于抽象类不包含实例对象,因此抽象类必须被继承。在Java中,抽象类表示的是一种继承的关系。一个类只能继承一个抽象类,而一个类却可以实现多个接口。考虑这个应用场景,Employee和Student里面都继承自Person类,而Person类定义了一些基本...原创 2019-04-13 21:06:23 · 948 阅读 · 1 评论 -
Java使用接口(interface)实现对类数组的排序
在java中,接口不是类,而是对类的一组需求的描述,这些类要遵从接口描述的统一格式进行定义。Arrays类中sort方法可以对对象数组进行排序,但是需要满足下面的前提:对象所属的类必须实现Comparable接口下面是Comparable接口代码:任何实现Comparable接口都需要compareTo方法将类声明为实现某个接口,需要使用关键字implements如果实现Compa...原创 2019-04-17 22:42:10 · 979 阅读 · 0 评论 -
Spring ioc入门
spring ioc原理控制反转大概的流程如下:为了解耦合,需要创建工厂类。创建对象之后,创建xml配置文件,然后使用dom4j解析配置文件再使用反射创建一个对象spring ioc简单的例子在这之前需要导入jar包。如果创建spring的项目,IDE会自动导入这些jar包首先创建一个User类package cn.itcast.ioc;public class Us...原创 2019-05-11 14:14:21 · 156 阅读 · 0 评论 -
Spring AOP(Aspect Oriented Programming)面向切面编程(配置方式)
AOP和继承的区别继承是横向的,当父类名称更改的时候,子类方法里面也需要更改aop是横向的,通过创建动态代理对象(不是真正的对象,但是可以实现功能)来实现AOP原理底层都是是用动态代理实现,不修改源代码,只是增强功能。AOP操作术语public class User { public void add() { } public void update() { } ...原创 2019-05-26 18:58:23 · 262 阅读 · 0 评论 -
Spring对象注入和复杂(Array、List、Map、Properties)属性注入
对象注入创建两个对象:public class UserService { private UserDao userDao; //set一定要小写 public void setUserDao(UserDao dao) { userDao = dao; } public void add() { System.out....原创 2019-05-22 22:05:28 · 1477 阅读 · 0 评论 -
Log4J介绍和用法
Log4J介绍通过log4j可以看到程序运行过程中更加详细的信息。用法:需要导入log4j的jar包需要将log4j的配置文件放在src下面可以调整日志级别:info or debuginfo:可以基本看到日志输出:debug:可以看到更加详细的输出:...原创 2019-05-27 20:53:43 · 206 阅读 · 0 评论 -
MyBatis学习(一)MyBatis+IDEA 环境配置和注意事项
jdbcJDBC代表Java数据库连接(Java Database Connectivity),它是用于Java编程语言和数据库之间的数据库无关连接的标准Java API,换句话说:JDBC是用于在Java语言编程中与数据库连接的API。jdbc环境...原创 2019-05-30 16:28:07 · 4205 阅读 · 1 评论 -
MyBatis学习(二)MyBatis入门(注解方式)
创建测试函数直接在IDE中使用psvm创建main函数:public static void main(String[] args) throws Exception{ //1. 读取配置文件 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); //2. 创建Sq...原创 2019-05-30 17:07:36 · 252 阅读 · 0 评论 -
Spring使用注解的方式创建对象和依赖注入
导入jar包,引入约束<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/conte...原创 2019-05-23 22:19:07 · 1766 阅读 · 0 评论 -
java字符与字符串String & char
字符串拼接java允许用+号来拼接两个字符串这种特性也经常用在输出语句中System.out.println("The answer is" + answer);字符串不可变和python一样,java的字符串也是不可变的。但是我么你可以采用substring方法检测字符串是否相等字符串长度,判断空串String API构建字符串可以采用StringBuild...原创 2019-04-05 19:40:03 · 398 阅读 · 0 评论