0

实践:把Springboot项目配置迁移至 Apollo 配置管理中心

导读:由于配置日益增多不方便管理且期望配置修改实时生效,因此笔者决定部署一个配置中心,经过分析对比之后决定采用携程开源的 Apollo 配置管理中心。本文分享笔者基于 Apollo 提供 quick start 搭建服务端,并将一个多环境配置的 Springboot 项目迁移至 Apollo 的实践,希望对各位熟悉 Apollo 有所帮助。本地部署 Apollo为了方便用户体验,其官方文档提供了一个 quick start 部署 Apollo 的方案。具体部署可参考官方文档。其主要步骤如下:创建 ApolloPortalDB创建 ApolloConfigDB修改 demo.sh 数据库信息启动...

阅读全文>>

0

搞懂现代Web端即时通讯技术一文就够:WebSocket、socket.io、SSE

1、引言有关Web端即时通讯技术的文章我已整理过很多篇,阅读过的读者可能都很熟悉,早期的Web端即时通讯方案,受限于Web客户端的技术限制,想实现真正的“即时”通信,难度相当大。传统的Web端即时通讯技术从短轮询到长连询,再到Comet技术,在如此原始的HTML标准之下,为了实现所谓的“即时”通信,技术上可谓绞尽脑汁,极尽所能。自从HTML5标准发布之后,WebSocket这类技术横空出世,实现Web端即时通讯技术的便利性大大提前,以往想都不敢想的真正全双工实时通信,如此早已成为可能。本文将专门介绍WebSocket、socket.io、SSE这几种现代的Web端即时通讯技术,从适用场景到技术...

阅读全文>>

0

再见 Shiro!权限认证我选择 Sa-Token:简单、优雅

Sa-Token 介绍Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、Session会话、单点登录、OAuth2.0、微服务网关鉴权 等一系列权限相关问题。Sa-Token 的 API 设计非常简单,有多简单呢?以登录认证为例,你只需要:// 在登录时写入当前会话的账号id StpUtil.login(10001); // 然后在需要校验登录处调用以下方法: // 如果当前会话未登录,这句代码会抛出 `NotLoginException` 异常 StpUtil.checkLogin(); 复制代码至此,我们已经借助 Sa-Token 完成登录认证!此时的...

阅读全文>>

0

PHP关于获取时间的方法

1、时间转换函数 date("Y-m-d H:i:s",$time);2、获取当天凌晨时间戳 $todaytime=strtotime("today");3、获取明天时间 strtotime("+1 day");4、获取昨天时间 strtotime("-1 day");5、获取下周时间 strtotime("+1 week");6、获取上周时间 strtotime("-1 week");7、HTML中时间戳转换 {$time|date="Y-m-d H:i:s",###}8、PHP 获取特定时间段的开始时间与结束...

阅读全文>>

0

MySQL数据库大森林:B树、B+树、二叉树、红黑树

1、二叉树:每个节点最多只有两个子树的树结构2、B树和B+树2.1、区别1)B+树只有叶子节点会存储指针,B树所有节点都带2)B+树叶子节点存储了所有数据,B树在内部节点出现的数据不会出现在叶子节点3)B+树所有叶子节点都是通过指针连在一起,B树不是2.2、B+树优点1)内部节点不存储指针,使得一个内部节点中可以容纳更多的数据2)叶子节点通过指针连在一起范围扫描很方便,B树就要在叶子节点和内部节点之间不停往返2.3、B树优点对于内部节点,可以直接得到指针2.4、为什么数据库索引用B+树1)因为叶子节点上存储了所有的数据和索引而且相互之间用指针连在一起,对于范围查找不用跨层就能把数据查出来2)因...

阅读全文>>

0

平台的多租户设计

1、用户、应用和机构是三个独立的对象,在平台上注册用户跟机构没有关系,同一个身份证号码在平台上只能创建一个用户。在平台上创建应用跟机构也没有关系在平台上注册新机构后,可以往机构添加人员,比如医院把院内的医生、护士、药师等人员添加到本机构,这样医生用户登录的时候如果身份证号码存在本机构人员中,这样医生就可以选择进入此机构,这样多点医生执业的场景就能完美解决。可以往机构安装应用,然后可以选择机构人员进行应用授权角色,这样用户登录进入本机构就只有授权角色的菜单权限。机构与机构之间的数据是完全隔离的,但理论上还是取决于应用的代码控制。2、平台采用用户、应用、机构三者来解决所有问题,而不是新增一个新的对...

阅读全文>>

0

JAVA中直接用Jdbc就能操作数据库了,为什么还要用spring框架?

不过随着业务的扩展,你就会发现jdbc建立一个连接居然要几百毫秒,而执行一个普通的SQL仅仅需要几毫秒。这么重量级的资源建立了就释放了不合适,得找个容器存起来,谁要就来取,不用了就还给容器,毕竟容器里的借取比建立一个连接要快的多。这样的容器叫做数据连接池。小日子继续过,业务也越做越大,慢慢地你就发现了:这jdbc的接口也太粗暴了,有一大半的代码在往bean里塞数据,下标还是从1开始的。这时候你就会想,要不独立一层,专门处理把jdbc读取出来的数据塞进bean里吧。这一层就是DAO,data access object,比较出名的框架就是myBatis。公司越做越大,你也在不断尝试新鲜的技术,并...

阅读全文>>

0

netty系列之:自建客户端和HTTP服务器交互

简介上一篇文章,我们搭建了一个支持中文的HTTP服务器,并且能够从浏览器访问,并获取到相应的结果。虽然浏览器在日常的应用中很普遍,但是有时候我们也有可能从自建的客户端来调用HTTP服务器的服务。今天给大家介绍如何自建一个HTTP客户端来和HTTP服务器进行交互。使用客户端构建请求在上一篇文章中,我们使用浏览器来访问服务器,并得到到了响应的结果,那么如何在客户端构建请求呢?netty中的HTTP请求可以分成两个部分,分别是HttpRequest和HttpContent。其中HttpRequest只包含了请求的版本号和消息头的信息,HttpContent才包含了真正的请求内容信息。但是如果要构建一...

阅读全文>>

0

DDD深入浅出

为什么我们要了解ddd?作为一个开发者,我们肯定接手过其他的人的项目。我想你一定有个这样的经历:面对冗杂的系统,模块彼此关联,没有人能描述清楚每个细节,没有文档,即使有文档也和系统对不上。当新需求需要修改一个功能时,往往光回顾该功能涉及的流程就需要很长时间,更别提修改带来的不可预知的影响面。于是 RD 就加开关,小心翼翼地切流量上线,一有问题赶紧关闭开关。面对此般场景,你要么跑路,要么重构。重构是克服演进式设计中大杂烩问题的主力,通过在单独的类及方法级别上做一系列小步重构来完成,我们可以很容易重构出一个独立的类来放某些通用的逻辑,但是,你会发现你很难给它一个业务上的含义,只能给予一个技术维度描...

阅读全文>>

0

Java教程:Java Float类

Float类在对象中包装了一个基本类型float的值。Float类对象包含一个float类型的字段。此外,该类提供了多个方法,能在float类型与String类型之间互相转换,同时还提供了处理float类型时比较常用的常量和方法。Float类的构造方法Float类中的构造方法有以下3个。Float(double value):构造一个新分配的Float对象,它表示转换为float类型的参数。Float(float value):构造一个新分配的Float对象,它表示基本的float参数。Float(String s):构造一个新分配的Float对象,它表示String参数所指示的float值。...

阅读全文>>