摘要:
mysql部署 由于外部机器无法直接访问容器端口,但是可以访问到宿主机(服务器),所以需要做一个端口映射 3307(服务器的端口) 映射到容器的端口3306 docker serach mysql docker pull mysql:5.6 docker images REPOSITORY TAG 阅读全文
摘要:
Docker服务相关命令 macos 有控制面板 点击即可 centos7命令如下: 启动docker服务 systemctl start docker 停止docker服务 systemctl stop docker 重启docker服务 systemctl restart docker 查看do 阅读全文
摘要:
一.消息的可靠投递 在使用RabbitMq的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败的场景。RabbitMQ为我们提供了两种方式用来控制消息的投递可靠性 rabbitMQ 整个消息投递过程为: producer -> rabbitMQ broker -> exchange -> queu 阅读全文
摘要:
pom文件引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> application.ml 配置文件 阅读全文
摘要:
Nginx概述 Nginx是一款高性能的Http服务器/反向代理服务器,官方测试支持5万并发量,他是免费的,开源的。并且cpu、内存占用非常低,运行非常稳定。 应用场景 1、HTTP服务器,可以做静态网页服务器。 动态网页做到tomcat来部署,Nginx来反向代理。 2、虚拟主机。可以在一台服务器 阅读全文
摘要:
VS Code 免费开源的编辑器,支持 windows、 mac、 Linux。 微软出品 官网:https://code.visualstudio.com/ 下载地址:https://code.visualstudio.com/download 刚安装好 就会提示你安装中文语言包,然后实现界面全中 阅读全文
摘要:
在Java 1.0中,对日期和时间的支持只能依赖java.util.Date类。这个类只能以毫秒的精度表示时间。这个类还有很多糟糕的问题,比如年份的起始选择是1900年,月份的起始从0开始。这意味着你要想表示2018年8月22日,就必须创建下面这样的Date实例: Wed Aug 22 00:00: 阅读全文
摘要:
随着多核处理器的出现,提升应用程序的处理速度最有效的方式就是可以编写出发挥多核能力的软件,我们已经可以通过切分大型的任务,让每个子任务并行运行,使用线程的方式,分支/合并框架(java 7) 和并行流(java 8)来实现。 现在很多大型的互联网公司都对外提供了API服务,比如百度的地图,微博的新闻 阅读全文
摘要:
NullPointerException,大家应该都见过。这是Tony Hoare在设计ALGOL W语言时提出的null引用的想法,他的设计初衷是想通过编译器的自动检测机制,确保所有使用引用的地方都是绝对安全的。很多年后,他对自己曾经做过的这个决定而后悔不已,把它称为“我价值百万的重大失误”。它带 阅读全文
摘要:
传统上,Java程序的接口是将相关方法按照预定组合到一起的方式。实现接口的类必须为接口中定义的方法提供一个实现,或者从父类中集成它的实现。但是,一旦类库的设计者需要更新接口,向接口中加入新的方法时候,这种方式就会出现问题。现存的类为了适应新的接口约定也要进行修改。 Java 8为了解决这个问题,现在 阅读全文
摘要:
为改善可读性和灵活性重构代码 看到这里我们已经可以使用lambda和stream API来使代码更简洁,用在新项目上。但大多数并不是全新的项目,而是对现有代码的重构,让它变的更简洁可读,更灵活。 改善代码的可读性 别人理解这段代码的难易程度,改善可读性意味着你要确保你的代码能非常容易的被别人理解和维 阅读全文
摘要:
在Java 7之前,并行处理集合非常麻烦。首先你要明确的把包含数据的数据结构分成若干子部分,然后你要把每个子部分分配一个独立的线程。然后,你需要在恰当的时候对他们进行同步来避免竞争,等待所有线程完成。最后,把这些部分结果合并起来。Java 7中引入了一个叫做 分支/合并的框架,让这些操作更稳定,更不 阅读全文
摘要:
在前面已经使用过collect终端操作了,主要是用来把Stream中的所有元素结合成一个List,在本章中,你会发现collect是一个归约操作,就像reduce一样可以接受各种做法作为参数,将流中的元素累计成一个汇总结果。 看这个例子:按照菜类进行分组 如果用java 8的话.. 收集器简介 在上 阅读全文
摘要:
在本节中将介绍Stream API支持的许多操作,这些操作可以完成更复杂的数据查询,如筛选、切片、映射、查找、匹配和归约。还有一些特殊的流如:数值流、来自文件和数组等多种来源的流。 筛选和切片 1.用谓词筛选 Streams接口支持filter方法,该操作会接受一个谓词作为参数,并返回一个包含所有符 阅读全文
摘要:
什么是流? 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语言来表达,而不是临时编写一个实现)。就现在来说你可以先把它当做是一个遍历数据集的高级迭代器。此外,流还支持并行,你无需写任何多线程的代码! 定义一个实物类 定义一个menu集合,以下栗子基于此menu 举个栗子:返 阅读全文
摘要:
什么是Lambda? 可以把Lambda表达式理解为 简洁的表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。 使用Lambda可以让你更积极的使用行为参数化,而不用像匿名类那样写很多模板代码。 Lambda表达式由三部分组成: 参数列表 阅读全文
摘要:
行为参数化就是可以帮助你处理频繁变更需求的一种软件开发模式。它意味着拿出一个代码块,把它准备好却不去执行它。这个代码块以后可以被你程序的其他部分调用,这意味着你可以推迟这块代码的执行。例如:你可以将代码块作为参数传递给另一个方法,稍后再去执行它。 应对不断变化的需求 1.第一次尝试:实现一个功能,从 阅读全文
摘要:
Docker简介 Docker是一种容器技术,解决软件跨环境迁移问题 诞生于2013年,基于GO语言实现,dotCloud公司出品(后改名为Docker Inc) Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行到linux机器上。 容器是完全使用沙箱 阅读全文
摘要:
上一篇中使用的Guava Cache,如果在集群中就不可以用了,需要借助Redis、Zookeeper之类的中间件实现分布式锁。 导入依赖 在pom.xml中需要添加的依赖包:stater-web、starter-aop、starter-data-redis 属性配置 CacheLock注解 Cac 阅读全文
摘要:
平时开发中,有时会双击提交表单造成重复提交,或者网速比较慢时还没有响应又点击了按钮,我们在开发中必须防止重复提交 一般在前台进行处理,定义个变量,发送请求前判断变量值为true,然后把变量设置为false,可以防止重复提交问题。如果前台没有做这个控制那就需要后端来处理 Lock 注解 创建一个Loc 阅读全文