- 博客(15)
- 收藏
- 关注
转载 Java 中的 BIO、NIO、AIO学习
1.I/O何为 I/O?I/O(Input/Outpu) 即输入/输出 。我们先从计算机结构的角度来解读一下 I/O。根据冯.诺依曼结构,计算机结构分为 5 大部分:运算器、控制器、存储器、输入设备、输出设备。从计算机结构的视角来看的话, I/O 描述了计算机系统与外部设备之间通信的过程。根据大学里学到的操作系统相关的知识:为了保证操作系统的稳定性和安全性,一个进程的地址空间划分为 用户空间(User space) 和 内核空间(Kernel space ) 。像我们平常运行的应用程序都是运
2021-05-26 14:37:15
145
原创 在 Spring/Spring Boot 中实现优雅地参数校验
最近在写项目的时候,在每一个controller都充满了大量的if来校验参数,而且每一个controller还不同,不能把校验的方法封装起来.特别麻烦.最普通的做法就像下面这样。我们通过 if/else 语句对请求的每一个参数一一校验。 if ( StringUtils.isBlank(dto.getFwsz().get(i).getFwmc()) || dto.getFwsz().ge
2021-05-12 10:01:03
349
原创 初次学习与使用 Java中的 OPTIONAL
在 Java 8 之前,任何访问对象方法或属性的调用都可能导致 NullPointerException:String isocode = user.getAddress().getCountry().getIsocode().toUpperCase();这种多层嵌套,如果其中一个为NULL,就会触发NullPointerException.为此,必须进行判断.if (user != null) { Address address = user.getAddress(); if (
2021-01-28 17:56:49
128
原创 SpringAOP实现valid参数校验
最近在写项目的时候,在每一个controller都充满了大量的if来校验参数,而且每一个controller还不同,不能封装起来.
2020-10-22 14:32:44
324
转载 分布式里面的补偿机制
分布式对外高可用,对内如何让憋出的内伤消化消化一:补偿机制的意义§举例一个常见场景:客户端->购物车微服务->订单微服务->支付微服务为什么要考虑补偿机制呢?因为一次跨机器的请求通信可能会通过DNS,网卡,交换机,路由机,负载均衡等设备,这些设备都不是一直稳定的,在数据传输的过程中只要一个问题出错,就会有问题的产生.在分布式里面,一次完整的业务流程是由多次跨机器的通信构成,那么产生问题的概率就会成倍的增加.但是这个并不表示真正的系统无法处理请求,所以我们应该尽可能的消化这些异
2020-09-25 10:52:46
1875
原创 简析tcp和udp区别
名词解释:协议:计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。TCP/IP模型是互联网的基础,它是一系列网络协议的总称。这些协议可以划分为四
2020-09-04 18:47:18
164
原创 ArrayList和LinkedList空间占用问题
1.ArraList是实现了java.io.Serializable接口的,按理说是要在网络传输之间序列化的.2.数据存放在 transient Object[] elementData. transient关键字一句话说明含义:将不需要序列化的变量声明为,当序列化对象的时候,这个属性将不会被序列化.3.ArrayList 实现 Serializable接口 但是储存数据的又被transitent修饰是为什么?4.当new(initial)一个ArrayList的时候默认的size是10(如果没有指
2020-09-01 22:50:54
1525
原创 悲观锁和乐观锁-学习笔记
不管是乐观锁还是悲观锁,本质上都是程序安全中的内容.通常情况下,可用加锁来保证要修改对象(或者是共享资源)的线程安全性(比如synchronized).,从而使得多个线程操作同一个对象而保证数据的有效性.乐观锁和悲观锁什么是悲观锁?什么是乐观锁?其实从字面上就可以区分出两者的区别,通俗点说悲观锁:类似一个迫害妄想症患者,总是假设最坏的情况(同时有多个线程一起操作对象).所以每次处理数据都会上锁.直到处理结束.很明显会造成性能低下的问题使用场景:数据库的很多地方都涉及到了这种机制,比如说行锁,表锁,
2020-09-01 15:57:23
107
原创 Docker入门学习笔记-tomcat的安装-DAY4
官方的使用docker run -it --rm tomcat:9.0–rm之前的启动是后台启动,停止了容器之后,容器还是可用查到但是上面那个用完就会删掉 主要是测试完毕以后就会删除下载docker pull tomcat:9.0docker pull tomcat 也可以不加版本下载启动docker run -d -p 3355:8080 --name tomcat01 tomcat-d 后台运行3355:8080容器外部的3355可用访问到内部的8080可用看到,在外面已经可
2020-09-01 13:42:49
116
原创 记一次静态页面缓存到Redis,然后从redis取出来反序列化失败的问题
1.这里可以看到,手动读取的页面还是正常的在Redis的工具类SET方法里面也是正常的.在redis读取是这样也是正常的,但是第二次读取页面(从redis缓存里面拿)There was an unexpected error (type=Internal Server Error, status=500).Could not read JSON: Invalid UTF-32 character 0x223b2144 (above 0x0010ffff) at char #15, byte
2020-08-27 21:50:12
917
原创 记一次项目遇到的分布式Session的问题
问题:在项目里面,因为承载的压力比较大,所以就会产生一个问题:Session是怎么同步的.如果只使用服务器提供的原生Session是很明显没办法满足需求的.比如说:用户的第一次请求在服务器A,但是第二次请求在服务器B.用户的Session信息就会全部丢失了.有些容器提供了原生的Session同步,自带同一台服务器的Session会同步到其他.在一个集群里面,应用的并不多.为什么?性能有问题,而且实现起来复杂(服务器多了以后就会变复杂).前置知识:Session的实现,比如说SessionID(一般
2020-08-25 23:12:39
179
原创 Docker入门学习笔记-run流程和Docker运行原理简介-DAY3
run的流程1.开始运行 sudo docker run hello-world2.寻找镜像 然后判断本机是否有这个镜像3.如果有镜像就运行这个镜像 如果没有就去下载这个镜像3.1仓库是否可以找到镜像 找到就下载 找不到就返回错误docker是怎么工作1.docker是一个cs的结构2.docker是一个守护进程,运行在主机上,通过套接字从客户端访问3.dockerserver会接收到docker-client的指令,类似于mysql的一种运行模式4.docker就相当于是一个迷你的虚
2020-08-22 17:59:01
290
1
原创 Docker入门学习笔记-Docker关键词的介绍和安装-DAY2
1.Docker架构图可以简单的理解为客户端服务器.docker run 运行一个容器docker pull 拉取一个容器docker build 构建一个容器镜像(image)Dcoker就好比是一个模板,可以通过这个模板来创建容器服务.通过这个镜像来创建多个容器(最终的服务运行或者项目运行就是在容器里面)容器(container)docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的.启动,停止,删除,基本命令可以简单的把这个容器理解成一个简单的linux系统仓库(
2020-08-22 17:13:22
148
原创 什么是IP地址?IPV6和IPV4的区别-一个初学小白的笔记
参考视频:https://www.bilibili.com/video/BV1DD4y127r4从历史的发展角度来看:如果只有一台电脑,所有的数据都会存储在硬盘上,不会和其他的电脑产生任何关系.如果有多台电脑之间交互的需要,会使用类似于U盘之类的存储介质来交互数据.以上方式存在多种弊端.比如说需要手动或者需要介质那么我们可以通过线缆来传输数据 这个线缆就被成为网线.一台电脑零条网线,两台电脑一条,三台电脑六条,如上图.加如的设备越来越堵,所需要的网线也就越来越多.为了解决这种情况,就引入了交
2020-08-21 23:32:11
5452
3
原创 Docker入门学习笔记-Docker的历史和简介-DAY1
为什么会出现Docker1.问题:我电脑上可以跑,你电脑上不可以跑2.问题:每一个机器都要部署环境(Redis, ES, Hadoop) 费时费力,项目是可以跨平台的,但是集成的环境并不是跨平台的比如开发环境Windows 发布到Linux传统:jar,其他的给运维来做部署的事情现在:打包部署上线一个人解决Docker给以上的的两大问题解决了问题.1.镜像机制Java - 比如开发一个安卓引用APK不是自己写的,发布在引用商店 张三使用APK下载安装就可以用了.Java -jar 环境
2020-08-21 17:15:55
156
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人