- 博客(18)
- 收藏
- 关注
原创 Java 8 Optional
今天阅读代码看到了Optional这个类,发现挺有意思的。如果一个对象可能为空,那么就可以用到Optional。1.初始化Optional.empty(): 创建一个空的 Optional 实例Optional.of(T t):创建一个 Optional 实例,当 t为null时抛出异常 Optional.ofNullable(T t):创建一个 Optional 实例,但当 t为null时不会抛出异常,而是返回一个空的实例2.常用的方法isPresent():判断option
2022-04-11 10:52:01
542
原创 网关和API网关
网关(Gateway)又称网间连接器、协议转换器。网关运行在OSI 7层协议的顶层–应用层。从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。我们所讲的“网关”均指TCP/IP协议下的网关。举个例子:比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下
2021-07-29 10:59:52
1514
原创 Json对象和Json字符串
这个鬼东西必须要知道啊。。。Json对象先上代码:{ "skillz": { "web": [ { "name": "html", "years": "5" }, { "name": "css", "years": "3" } ], "database": [ { "name": "sql", "years": "7
2021-07-28 15:48:20
158
原创 UML类图
泛化(Generalization):继承的关系,实线带三角形箭头,子类指向父类。实现(Realization):实现的关系,虚线带三角形箭头,指向接口。依赖(Dependency):A类的方法传参需要B类的实例对象,则称之为依赖关系。关联(Association):类A的全局变量中引用了类B,他们之间的关系比依赖更紧密。聚合(Aggregation):整体与个体的关系。实线带空心菱形,指向整体。各自有自己的生命周期。互不干扰。组合(Composition):整体与部分的关系但不能离开整
2021-07-28 11:19:10
86
原创 POJO/JavaBean/EJB/PO/VO/DAO/DTO
POJO(Plain Ordinary Java Object)有一些 private 的参数作为对象的属性,并且有参数的 getter 或 setter 方法。没有从任何类继承,也没有实现任何接口,更没有被任何框架入侵的 Java 对象。可以转化为PO、DTO、VO;比如POJO在传输过程中就是DTO。public class User { private String name; private int age; public String get
2021-07-28 10:32:12
94
原创 Linux
常用命令ls 显示文件目录 -l 列出详细信息 -a把隐藏的也列出来mkdir 创建目录cd 切换目录touch 创建空文件cat 查看文件内容cp 拷贝mv 移动或者重命名rm -r 删除文件 -f 强制删除grep 在文本中查找某个字符串rmdir 删除空目录pwd 显示当前目录more、less 分页显示文本文件内容系统管理命令stat 显示指定文件的详细信息,比ls更详细top 动态显示当前耗费资源最多进程信
2021-03-20 21:33:46
61
原创 五中I/O模型
目前Linux系统中提供了5种IO处理模型1.阻塞IO2.非阻塞IO3.IO多路复用4.信号驱动IO5.异步IO内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。阻塞IO当我们发起一次IO操作后一直等待成功或失败之后才返回,在这期间程序不能做其它的事情。阻塞IO操作只能对单个文件描述符进行操作。非阻塞IO轮询的思想实现非阻塞,但也会浪费不
2020-11-03 16:02:27
201
原创 Java秒杀项目
SpringBoot+MyBatis+Redis+MQ+Nginx搭建基础架构yml配置设置端口号 ,连接数据库camel:开启驼峰命名转换,把数据库字段里下划线后的首个单词自动大写。实现商品展示单页Dao+XMLnamespace指向Dao类id是Dao中方法名long对应要从外界传递进来的参数resultType 返回的Goods对象XMLDAO层Service层为什么不能直接从DAO到Controller?为了解耦,虽然service层看起来好像啥也没干,但是它实
2020-10-25 23:01:56
357
1
原创 八大排序
冒泡排序每一趟都把最大的元素排到数组的最后共有有n-1趟时间复杂度n*2public static void maoPao(int[] arr){ int len=arr.length; for (int i = 1; i < len; i++) { for(int j=0;j<len-i;j++){ if(arr[j]>arr[j+1]){ int te
2020-10-20 13:25:42
152
原创 MySql
索引定义:一个排好序的数据结构。聚簇索引和非聚簇索引InnoDB用的就是聚簇索引,聚簇索引默认是主键,数据和索引连在一起,在同一个文件里。MyISAM用的非聚簇,数据和索引分别在两张表,找到索引后还要根据索引去找数据的物理地址,这样查询效率要低一些,因为还要回表。MySql用的是B+树,为什么不用普通二叉树、红黑树、B树?二叉树在数据量很大的情况下树的高度会变的很高,查询效率就低,红黑树和AVL树虽然有自平衡的优点,但是它们每个节点只能存一个索引,但是一次磁盘IO是可以读16K的数据,所以引
2020-10-08 23:11:18
163
原创 HashMap保证key唯一性的原因
HashSet底层就是个HashMap,只不过value的部分被一个常量给占了,不用这个部分。HashMap只有对于value的处理,并不会替换key,因此在HashSet中加入相同元素不会覆盖。HashCode和equals的重写:不重写的话,都用的是Object类的,在Object中,HashCode的值是对象在堆内存上的地址,equals比较的也是对象的地址。但是呢,我们在HashMap判断key是否重复,看的是key的值,不同地址的key对象也可以有相同的值,重写equals可以保证比较的是k
2020-10-05 19:27:35
1172
原创 多线程学习
JMM就是内存模型,一个主存,多个工作内存,每个线程对应一个工作线程,主存中的共享数据,拷贝到工作内存中再操作,之后再把修改后的数据刷新回主存。须满足三个条件:原子性:操作不可分割,同时成功or失败可见性:一线程写其他线程要能看到有序性:禁止指令重排Volatilevolatile是关键字,相比于sychronized,它只能用来修饰变量。在效果上,可以说是低配版的sychronized。不可保证原子性,可保证可见性和有序性。由于编译器优化,指令不一定按照代码写的顺序执行,但是加了vo.
2020-10-05 19:25:34
222
原创 JVM
JVM1作用让java代码一次编写到处运行。2学习路线基础概念进程和线程:进程是操作系统资源分配的基本单位,线程是CPU任务调度和执行的基本单位。一个程序至少包含一个进程,一个进程可以包含多个线程。类比:进程就是浏览器,线程就是多个网页。并行和并发:并行是多个事件同一时刻发生(物理上的多个进程同时发生,一个CPU是满足不了并行的)并发是多个事件同一时间段发生(逻辑上的同时发生,感觉是同时,实际上是CPU时间片在多个进程间来回切换)所以并发的事件一定是并行的,反过来就未必。同步和异步:
2020-10-03 13:15:12
151
原创 Java基础
1.int和Integer1字节=8位 1B=8bit为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型。基本类型:byte 1字节short 2字节int 4字节long 8字节float 4字节double 8字节char 2字节boolean 1字节包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,DoubleInteger的缓存机制:整型字面量的值在-128到127之间(常用)
2020-10-03 13:13:22
220
原创 计算机网络基础
HTTPHttp和Https的区别HTTP是基于请求响应模型、无状态(指客户端和服务端之间不需要建立持久的连接 , 客户端发起一个请求 , 服务器端返回响应 , 这个连接就会被关闭 , 在服务器端不会保留该请求的有关信息 )、应用层超文本协议。运行在TCP上,明文传输,客户端和服务器无法验证对方身份;HTTPS是身披SSL外壳的HTTP,运行SSL上,SSL运行在TCP之上,有加密和认证机制。由于加密,所以HTTPS更消耗CPU资源,HTTP和HTTPS端口也不一样,一个是80另一个是443。http
2020-10-03 12:14:06
226
1
原创 BIO和NIO和AIO
BIO和NIO和AIO同步阻塞:就是你在烧开水,你在旁边傻傻地等水烧开也不去干其他事情同步非阻塞:你知道在水烧开之前可以干其他事情了,但是你还要时不时回来看看水烧开没(轮询)。异步非阻塞:水烧开后自己会响,你不用管,做自己的事情,它会通知你的。BIO同步阻塞的IO,服务端和客户端之间有一个连接请求就需要创建一个线程去处理IO,耗费资源,不过可以用线程池改善(尽量减少了线程的创建),使用连接比较少的场合。NIO同步非阻塞的IO,相比于BIO,NIO是面向Buffer(缓冲区)的,服务端读数据是读到缓
2020-09-28 20:36:22
90
原创 OOP七大原则
OOP七大原则1开闭原则若要增加新功能,尽量别去修改原来的代码,做独立的扩展。2里氏替换就是继承。子类继承父类的功能直接拿来用,尽量不去重写父类方法。3依赖倒置面向接口编程4单一职责保证一个方法尽量实现一个功能,实现解耦5接口隔离和上一个差不多,也是为了高内聚,低耦合6迪米特法则只和朋友交谈,不和陌生人说话。7合成复用多用组合少用继承...
2020-08-30 12:15:29
289
1
原创 单例模式详解
**单例模式一个类就一个实例,自己new这个实例对象(不允许别人new),并为该实例提供一个全局访问点(写静态方法,通过类名.静态方法名去调),核心是无参构造方法私有。1.饿汉单例//饿汉模式单例public class Hungry { //私有的无参构造,别人就不能通过new来获得单例对象 只能用Hungry.getInstance private Hungry() { } private static Hungry hungry = new Hungry(
2020-08-28 20:39:22
137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人