java基础
文章平均质量分 78
java基础知识点
NULL_ZGX
这个作者很懒,什么都没留下…
展开
-
Java 八锁详解
1),标准访问,请问先打印 邮件 还是短信?/** synchronized 和 lock 一样我这里用的是 lock*/ class phone { Lock lock = new ReentrantLock(); void sendMAIL(){ lock.lock(); try { System.out.println("---------sendMAIL"); } catch (Exception e原创 2020-11-23 11:31:13 · 913 阅读 · 1 评论 -
ArrayList你知道多少?
new ArrayList () 会创建一个容量为10的Object数组,ArrayList每次扩容是原来的一半(oldCapacity + (oldCapacity >> 1)),ArrayList是线程不安全的。请你写出一个ArrayList线程不安全的代码 public static void main(String[] args) { listNotSafe(); } private static void listNotSafe() {原创 2020-11-20 16:20:12 · 295 阅读 · 0 评论 -
java8新特性-Lambda内置四大核心函数式接口(3)
Java 8 内置四大核心函数式编程接口 Consumer<T> 消费型接口 void accept(T t); Supplier<T> 供给型接口 T get(); Function<T,R> 函数型接口 R apply(T t); Predicate<T> 断言型接口 boo...原创 2019-11-06 17:12:48 · 344 阅读 · 0 评论 -
java8新特性-Lambda基础语法(2)
Lambda 表达式的基础语法,Java8中引入了一个新的操作符 "->" 该操作符称为箭头操作符或 Lambda 操作符。箭头操作符将 Lambda 表达式拆分为俩部分。 左侧: Lambda 表达式的参数列表 右侧: Lambda 表达式中所需要执行的功能 , 既 Lambda 体接下来是Lambda 基础语法的使用语法1:无参数,无返回值 //语法...原创 2019-11-06 15:33:07 · 287 阅读 · 0 评论 -
Java 8 -Lambda表达式(1)
为什么使用Lambda表达式?Lambda 是一个匿名函数,我们可以把 Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出简介,更灵活的代码。作为一种更紧凑的代码风格,使java的语言表达能力得到了提升。接下来从代码上来看看Lambda 有什么好?--下面先不是用lambda表达式/** * 员工实体类 * * @author Administ...原创 2019-11-06 12:08:02 · 406 阅读 · 1 评论 -
Java 8 新特性
主要内容Lambda 表达式 函数式接口 方法引用与构造器引用 Stream api 接口中的默认方法与静态方法 新实践日期 api 其他新特性java 8新特性优点速度更快 --对底层数据结构进行更改 (例如:hash底层由数组+链表 改为数组+链表+红黑树,ConcurrentHashMap底层改为CAS算法) 代码更少 -增加了新的语言Lambda表达式 强大的St...原创 2019-11-06 10:11:26 · 195 阅读 · 0 评论 -
java Lambda表达式 IntStream,LongStream,DoubleStream 使用教程
IntSystem java.util.stream.IntStream 是一个原始整数值序列,该流提供了许多方法可以对该流中的元素顺序执行或并行执行一些聚合操作,比如 max() 或 average(); 聚合方法 rangeClosed(a,b) 返回子序列[a,b]左闭右开,意味着包括b元素,增长步值为1 ange(a,b) 返回子序列[a,b),...原创 2019-06-28 15:10:31 · 6082 阅读 · 3 评论 -
Java自定义注解使用
需求:判断用户实体上面的password是否为空,如果不为空,数据库是否存在,如果存在则不让用户提交数据 1,创建自定义注解类import com.tuogo.sephora.rb.system.validate.impl.OldPasswordConstraintValidator;import javax.validation.Constraint;import javax...原创 2019-01-11 19:32:44 · 1072 阅读 · 0 评论 -
Java设计模式学习-备忘录模式
备忘录模式核心是:保存某个对象内部状态的拷贝,这样以后就可以将该对象回复到原先的状态。接下来用代码来实现1),创建原发器类/** * 原发器类 */public class Emp { private String name; private int age; private int salary; /** * 进行备份操作,并返...原创 2019-01-01 12:54:47 · 235 阅读 · 0 评论 -
Java设计模式学习-观察者模式
使用场景:聊天室程序的创建,服务器创建好后,A,B,C 三个客户端连上来公开聊天。A向服务器发送数据,服务器端聊天数据改变。我们希望将这些聊天数据分别给其他在线的客户。也就说,每个客户端都需要更新服务器得到数据。 大家一起玩CS游戏时,服务器需要将每个人的方位变化发给所有的客户。我们可以把多个订阅者,客户称之为观察者,需要同步给多个订阅者的数据封装到对象中,称之为目标。观察者核心是:...原创 2019-01-01 11:29:53 · 347 阅读 · 0 评论 -
Java设计模式学习-状态模式
使用场景如下:酒店系统中,房间的状态变化: 已预定 已入住 空闲 状态模式核心是:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题接下来用代码来实现以上酒店的场景:1),创建状态的接口类/**酒店状态接口类 * @author 晓电脑 */public interface State { void changeStatu...原创 2018-12-31 12:14:38 · 477 阅读 · 0 评论 -
Java设计模式学习-模板方法模式
模式方法模式介绍:模板方法模式是编程中经常用到模式 。它定义了一个操作中的算法骨架,将将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义定义该算法的某些特定的步骤。 核心: 处理某个流程的代码已经都具备, 但是其中某个节点的代码暂时不能确定。因此,我们采用工厂方法模式,将这个节点的代码实现转移给子类完成。即 : 处理步骤父类中定义好 , 具体实现延迟到子类中...原创 2018-12-30 21:21:37 · 174 阅读 · 0 评论 -
Java设计模式学习-策略模式
如下使用场景:某个市场人员接到单后的报价策略(CRM系统中常见问题)。报价策略很复杂,可以简单作如下分类: 1),普通客户小批量报价 2),普通用户大批量报价 3),老客户小批量报价 4),老客户大批量报价要实现以上的报价系统,一般程序员都会想到这样来做,如下 /**未使用策略模式 * @author 晓电脑 * 缺点: 违反了java的开闭原则 * 如果需要修改打折...原创 2018-12-30 20:34:49 · 232 阅读 · 0 评论 -
Java设计模式学习-命令模式
介绍命令模式:将一个请求封装为一个对象 , 从而使我们可用不同的请求对客户端进行参数化 , 对请求排队或记录请求日志 , 以及支持可撤销的操作 。 也称之为 : 动作Action模式 , 事物transction模式结构Command 抽象命令类 ConcreteCommand 具体命令类 Invoker 调用者/请求者 -- 请求的发送者 , 它通过命令对象来执行请求 。一个调用...原创 2018-12-30 19:25:44 · 171 阅读 · 0 评论 -
Java设计模式学习-中介者模式Mediator
核心:如果一个系统中对象之间的联系呈现为网状结构 , 对象之间存在大量多对多关系 , 将导致关系及其复杂 , 这些对象称为 --同事对象 。 我们可以引入一个中介者对象 , 使各个同事对象只跟中介者对象打交道 , 将复杂的网状结构化解为简单的星状结构如下 中介者类图如下 接下来用代码实现中介者模式1),创建部门类接口 并创建...原创 2018-12-28 08:52:23 · 200 阅读 · 0 评论 -
Java设计模式的学习-责任链模式
Java的23中设计模式分类三大类:行为型模式 -- 关注系统中对象之间的相互交互 , 研究系统在运行时对象与对象之间的相互通信和协作,进一步明确对象的职责 创造型模式 -- 关注对象的创建过程 结构型模式 -- 关注对象和类的组织责任链模式定义:将能够处理同一类的对象连成一条链,所提交的请求沿着链传递 , 链上的对象逐个判断是否有能力处理该请求 , 如果能处理则处理 , 如果不能则...原创 2018-12-26 08:39:15 · 209 阅读 · 0 评论 -
Java设计模式学习-享元模式FlyWeight
使用场景内存属于稀缺资源,不要随便浪费 , 如果有很多个完全相同或相似的对象 ,我们可以通过享元模式,节省内存。享元模式的核心:享元模式以共享的放式高效地支持大量细粒度对象的重用。 享元对象能做到共享的关键是区分了内部状态和外部状态。 1),内部状态 :可以共享 ,不会随着环境变化而改变 。 2),外部状态: 不可以共享,会随着环境变化而改变。 例如下面这个围棋 ...原创 2018-12-25 08:51:58 · 283 阅读 · 0 评论 -
Java设计模式学习-外观模式/门面模式
迪米特法则(最少只是原则):一个软件实体应当尽可能少的与其他实体发生相互作用。外观模式核心:为子类系统提供统一的入口, 封装子系统的复杂性 ,便于客户端调用 。 使用外观模式模拟注册公司的流程,uml图如下 1),创建工商局类/**工商局接口类 * @author 晓电脑 */public interface GongShangJu { voi...原创 2018-12-24 08:22:19 · 257 阅读 · 0 评论 -
Java设计模式学习-装饰模式Decorator
装饰模式职责动态的为一个对象增加新的功能 装饰模式是一种用于代替继承的技术, 无需通过继承增加子类就能扩展对象的新功能,使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀装饰模式实现细节1),Component 抽象构建角色 真实对象和装饰对象有相同的接口 , 这样,客户端对象就能就能以与真实对象相同的放式装饰对象交互 2),ConcreteComponent具...原创 2018-12-23 10:11:14 · 195 阅读 · 0 评论 -
Java设计模式学习-桥接模式bridge
我们可以用多重继承结构实现下图的关系 这样存在一个问题:如果要增加一个新的电脑类型, 智能手机 ,则要增加各个品牌下面的类 。 如果要增加一个新的品牌 , 也要增加各种电脑类型的类 。 违反单一职责原则 -- 一个类:联想笔记本 ,有俩个引起这个类变化的原因。 我们使用多重继承来实现上图:package com.tuogo.bridge;/**电脑...原创 2018-12-20 22:00:37 · 600 阅读 · 1 评论 -
Java设计模式学习-代理模式
代理模式核心作用:通过代理,控制对对象的防问 可以详细控制访问某个(某类)对象的方法 , 在调用这个方法前做前置处理 , 调用这个方法后做后置处理 。 (即 : AOP的微观实现)代理模式(proxy pattern)核心角色 -- 定义代理角色和真实角色的公共对外方法 。 真实角色 -- 实现抽象角色 , 定义真实角色所要实现的业务逻辑,供代理角色调用 。 -- 关注真正的业务逻...原创 2018-12-20 08:42:28 · 263 阅读 · 0 评论 -
Java设计模式学习-适配器模式
结构型模式:核心作用: 是从程序结构上实现松耦合 , 从而可以扩大整体类结构 , 用来解决更大的问题 。 分类 适配器模式 代理模式 桥接模式 装饰模式 组合模式 外观模式 享元模式 在生活的场景如 假如 笔记本要用usb接口连接一个圆形键盘接口 绘图如下 ...原创 2018-12-19 09:00:08 · 320 阅读 · 0 评论 -
Java设计模式学习-原型模式Prototype
原型模式:通过 new 产生一个对象需要非常繁琐的数据准备或访问权限 , 则可以使用原型模式 。 就是 java 中的克隆技术 , 以某个对象为原型 , 复制出新的对象 。 新的对象具备原型对象的特点。 优势有: 效率高 (直接克隆 , 避免了重新执行构造器过程步骤)。 克隆类似于 new , 但是不同于new 。 new 创建新的对象属性采用的是默认值 。 克隆出来的对象属性值完全和原...原创 2018-12-18 09:58:46 · 217 阅读 · 0 评论 -
Java设计模式学习-建造者模式
建造者模式的本质分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于 : 某个对象的构建过程复杂的情况下使用 。 由于实现了构建和装配的解耦 。不同的构建器 , 相同的装配 , 也可以做出不同的对象 。相同的构造器 , 不同的装配顺序也可以做出不同的对象 。 也就是实现了构建算法 , 装配算法的解耦 , 实现了更好的复...原创 2018-12-17 20:55:51 · 217 阅读 · 0 评论 -
Java设计模式学习-抽象工厂模式
抽象工厂模式用来生产不同产品族的全部产品 。 (对于增加新的产品,无能为力,支持增加产品族) 抽象工厂模式是工厂方法模式的升级版本 , 在有多个业务品种 , 业务分类时 , 通过抽象工厂模式产生需要的对象是一种非常好的解决方式 。 1),创建发动机类接口,并创建它的俩个实现类如下 /**发动机接口 * @author...原创 2018-12-16 14:45:31 · 224 阅读 · 0 评论 -
Java设计模式学习-工厂方法模式
工厂方法模式要点:为了避免简单工厂模式的缺点 , 不完全满足OCP 。 工厂出那个方法模式 和 简单工厂模式 最大不同在于 , 简单工厂模式只有一个 (对于一个项目或者一个独立模块而言 ) 工厂类, 而工厂方法模式有一组实现了相同接口的工厂类 。 1), 创建Car类接口/**创建车类 根类接口 * @author 晓电脑 */public interface Car {...原创 2018-12-16 13:52:17 · 212 阅读 · 0 评论 -
Java设计模式学习-简单工厂模式
工厂模式实现了创建者和调用者的分离 。 详细分类又分为三类 1), 简单工厂模式 -->用来生产同一等级结构中的任意产品。(对于增加新产品 ,需要修改已有的代码) 2),工厂方法模式 -->用来生产同一等级结构中固定产品 。 (支持增加任意产品) 3),抽象工厂模式 -->用来生产不同产品品类的全部产品 。(对于增加新的产品,无能无力 , 支持增加产品族)...原创 2018-12-16 12:02:29 · 281 阅读 · 0 评论 -
Java设计模式学习-单例模式的漏洞及解决办法
通过对单例模式进行了学习,我们已经对单例模式已经有了一定的认识,但是不知道你们发现没有,也存在几个问题反射可以破解上一篇博客中的单例模式,其中不包含枚举单例模式。 反序列化也可以破解上一篇中的单例模式,其中也不包含枚举但离开模式。 那我们来看下1), 反射是如何破解单例模式的(下面主要是用懒汉单例模式来做演示) /** 懒汉式 单例模式 * @author 晓电脑 *...原创 2018-12-16 10:41:46 · 419 阅读 · 0 评论 -
Java设计模式学习--单例模式
单例模式 核心作用 : 保证一个类只有一个实例 , 并且提供一个访问该实习的全局访问点 . 常见的应用场景 :Windows 的 Tsask Manager (任务管理器) 就是典型的单例模式 当你打开任务管理器的时候,只要你能不关闭任务管理器页面,你电脑只能显示一个任务管理器页面 。 项目中 , 读取配置文件的类 , 一般也只有一个对象。 没有必要每次使用配置文件数据,每...原创 2018-12-15 14:28:17 · 282 阅读 · 0 评论 -
java自定义类加载器与实现类加载器加密与解密
创建自定义加载器的类 package com.tuogo.classlocad;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.IOException;/** * 自定义类加载器 */public class EncryptionClass extend...原创 2018-12-14 08:48:30 · 1219 阅读 · 0 评论 -
java请求URL返回JSON
需求:testCase 访问本地的 url,获得返回 url 的 json 数据1,url 路径 比如访问 http://localhost:8080/spb/resultController如下@RestController@RequestMapping("/spb")public class JsonController extends MainController {...原创 2019-03-04 14:08:26 · 2995 阅读 · 1 评论 -
SSM框架整合实现简单的登录注册
1.新建项目 整合jar包2.创建数据库 创建表(user_info) 其中包括字段(u_id,u_name,u_pwd,u_realname) 3.配置applicationContext.xml 具体配置 如下<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springfram...原创 2018-03-28 16:59:36 · 5694 阅读 · 5 评论 -
JAVA_IO_CharArrayReader与CharArrayWriter(四)
CharArrayReaderCharArrayReader 该类继承自Reader 该类实现了一个字符缓冲区,可以用作字符输入流。 public static void reader() throws IOException { String str = "hello word"; CharArrayReader reader = ...原创 2018-11-19 17:37:19 · 200 阅读 · 0 评论 -
JAVA_IO_StringReader与StringWriter(七)
字符串 StringReader StringWriter :对字符串进行处理的节点流 有这样一个需求:写一函数把StringReader中输入流中的字符串全部转换成大写,然后将结果写到一个StringWriter中,然后使用这一函数将以字符串全部转成大写。 如下 public static void main(String [] args) throws IOExce...原创 2018-11-21 18:53:04 · 293 阅读 · 0 评论 -
SAXParserFactory解析XML文件
1),person.xml<?xml version="1.0" encoding="UTF-8" ?><persons> <person> <name>至尊宝</name> <age>99</age> <原创 2018-12-06 08:50:39 · 6687 阅读 · 2 评论 -
JAVA_网络编程_TCP_Socket通信_聊天室_多人聊天/私聊_实现
Socket编程 连接(连接是通过输入输出流来传送数据) 创建服务器package com.hp.tcp;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net...原创 2018-12-04 08:06:56 · 1579 阅读 · 1 评论 -
java_线程_生产者消费者模式_信号灯法
需要到Object类中的等待与通知的俩个方法如下 notify() 唤醒正在等待对象监视器的单个线程。 notifyAll() 唤醒正在等待对象监视器的所有线程。 wait() 导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法。 其中wait()方法和sleep()方法有明显的不同点 共同点...原创 2018-12-02 09:17:18 · 380 阅读 · 0 评论 -
JAVA_IO_文件的分割与合并(九)
RandomAccessFile 该类的实例支持读取和写入随机访问文件。 随机访问文件的行为类似于存储在文件系统中的大量字节 extends Object 常用方法 seek(long pos) 设置文件指针偏移,从该文件的开头测量,发生下一次读取或写入。 SequenceInputStream extends InputStream ...原创 2018-11-25 10:46:22 · 312 阅读 · 0 评论 -
JAVA_IO_打印流(八)
System 该类继承自Object. System类包含几个有用的类字段和方法。 它不能被实例化。 System类提供的System包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 一种加载文件和库的方法; 以及用于快速复制阵列的一部分的实用方法。 三个静态常量 static PrintStream err “标准”错误输出流 ...原创 2018-11-22 08:41:40 · 226 阅读 · 0 评论 -
JAVA_IO_DataOutputStream与DataInputStream(五)
在IO包中提供了两个与平台无关的数据操作流2), DataOutputStream 数据输出流 DataInputStream 该类继承自 FilterOutputStream 数据输出流使应用程序以便携式方式将原始Java数据类型写入输出流。 然后应用程序可以使用数据输入流来读取数据。 常用方法 writeUTF(String str) 使用 mod...原创 2018-11-20 18:33:14 · 298 阅读 · 0 评论