随笔分类 - JavaEE
摘要:1、基本语法区别 Java中接口和抽象类的定义语法分别为 与`abstract`关键字。 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法只有方法的声明,没有方法体。抽象类的特点: a、抽象类不能被实例化只能被继承; b、包含抽
阅读全文
摘要:Redlock:全名叫做 Redis Distributed Lock;即使用redis实现的分布式锁; 使用场景:多个服务间保证同一时刻同一时间段内同一用户只能有一个请求(防止关键业务出现并发攻击); 官网文档地址如下:https://redis.io/topics/distlock 这个锁的算法
阅读全文
摘要:(转)缓存算法(FIFO 、LRU、LFU三种算法的区别) FIFO算法# FIFO 算法是一种比较容易实现的算法。它的思想是先进先出(FIFO,队列),这是最简单、最公平的一种思想,即如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小。空间满的时候,最先进入的数据会被最早置换(淘汰)
阅读全文
摘要:java数据类型 java是一种强类型语言,一共有8大基本类型,其中4种整形,2种浮点型、1种字符类型char(用于表示unicode单元)和一种布尔类型 整型 整型用于表示没有小数部分的数值,允许是负数。java提供了4种整型: 类型 存储需求 取值范围 byte 1字节 -127 ~128
阅读全文
摘要:软件架构与设计模式 软件架构与设计模式的区别 有很多程序员经常会把软件架构和设计模式混淆,比如认为MVC架构是一种设计模式。实际上它们是完全不同的概念软件。软件架构通常考虑的是代码重用,而设计模式考虑的是设计重用,应用框架则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件开发过程中
阅读全文
摘要:java中volatile关键字的作用 一.内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存
阅读全文
摘要:数据结构 数组和链表 数组 数组是内存地址中连在一起的几个内存单元组成 必须是连续的地址 这样的话 如果用户在数组中添加数据 而数组内存区域中没有相连的内存地址 就只能复制数组再进行添加 将数组移动到一个连续的地址区域中 这样效率会非常慢 链表 链表中的元素可存储在内存的任何地方。 链表的每个元素都
阅读全文
摘要:享元模式 享元模式概述 面向对象技术可以很好的解决一些灵活性或可扩展性的问题,但在很多情况下需要再系统中值增加类和对象个数。当对象数量太多时,将导致运行代价过高,带来性能下降问题。享元模式正是为解决这个问题而生的 享元模式的通用写法 public class Client { public st
阅读全文
摘要:动态代理 动态代理和静态代理角色一样 动态代理的代理类是动态生成的,不是我们直接写好的 动态代理分为两大类: 基于接口的动态代理,基于类的动态代理 基于接口 --**JDK** 动态代理 基于类: cglib java字节码实现: javasist 需要了解两个类 Proxy 代理类 Invocat
阅读全文
摘要:单例模式 优点 单例模式可以保证内存中只有一个实例,减少了内存的开销 可以避免对资源的多重占用 单例模式设置全局访问点,可以优化和共享资源的访问 缺点 单例模式一般没有接口,扩展困难。如果要扩展,则除了修改原来的代码,没有第二种途径,违背开闭原则 在并发测试中,单例模式不利于代码调试。在调试的过程中
阅读全文
摘要:java中注解用法详解——@SuppressWarnings 一、前言 注释类型: 当你的编码可能存在警告时,比如安全警告,可以用它来消除。 api中是这样描述的: 指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。 注意,在给定元素中取消显示的警告集是所有包含元
阅读全文
摘要:位异或运算(^) 运算规则是:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。 比如:8^11. 8转为二进制是1000,11转为二进制是1011.从高位开始比较得到的是:0011.然后二进制转为十进制,就是Integer.parseInt("0011",2)=3; 延伸: 位与
阅读全文
摘要:1. 原码、反码、补码: (1)在Java中,所有数据的表示方式都是以补码形式来表示 (2)正数:原码、反码、补码相同 (3)负数:符号位为1,其余各位是对原码取反,然后整个数加1 (4)~按位取反(反码加1称为补码。)步骤就是先求出这个数(因为java存的数是补码)的原码,然后对原码取反得到X,这
阅读全文
摘要:Supplier 供给型接口 该接口只有一个抽象方法get get T get() 获得结果。 结果 结果 用Supplier接口求最大值 import java.util.function.Supplier; //求数组元素的最大值 public class Demo01Lambda { publ
阅读全文
摘要:Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢?在Java 8中,得益于Lambda所带 来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。 对集合进行过滤筛选 普通方法和Stream的区别 //普通方法 p
阅读全文
摘要:JWT 实现无状态登录 1.无状态登录原理 1.1.什么是有状态? 有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。 例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个co
阅读全文
摘要:跨域原因说明 示例 域名不同 www.jd.com 与 www.taobao.com 域名相同,端口不同 www.jd.com:8080 与 www.jd.com:8081 二级域名不同 item.jd.com 与 miaosha.jd.com 如果域名和端口都相同,但是请求路径不同,不属于跨域,如
阅读全文
摘要:javaBean简介 要求: 1.所有的类必须放在同一个包下,在web中没有包的类是不存在的 2.所有的类必须声明public class,这样才能被外界访问 3.类中所有属性都必须封装,即使用private声明 4.封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法 5
阅读全文
摘要:使用JDBC技术是一件繁琐的事情,为了使数据库更加高效,有一种简化jdbc技术的操作--DBUtils。DbUtils(org.apache.commons.dbutils.DbUtils)是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也
阅读全文
摘要:System.getProperties() 确定当前系统属性 Properties.list() 将获取到的信息打印到流中 public class Userone { public static void main(String[] args) throws IOException { Syst
阅读全文

浙公网安备 33010602011771号