服务器:centos7 apollo:1.7 开发环境:springboot2.3 1.整合
1 2 3 4 5 6 7 8 9 10 |
<dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.7.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.10</version> </dependency> |
1 2 3 4 |
app.id=dev apollo.meta=http://192.167.2.123:8080 #eureka地址 apollo.bootstrap.enable=true apollo.bootstrap.namespaces=application |
1 2 3 4 |
@SpringBootApplication @EnableApolloConfig public class ApolloServerApplication { } |
2.启动时异常
1 2 3 4 5 6 7 8 |
Load config failed, will retry in 1 SECONDS. appId: dev, cluster: default, namespaces: application 2021-02-01 19:02:30.617 WARN 42252 --- [ main] c.c.f.a.i.AbstractConfigRepository : Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository, reason: Load Apollo Config failed - appId: dev, cluster: default, namespace: application, url: http://192.168.1.26:8080/configs/dev/default/application?ip=192.168.1.2 [Cause: Could not complete get operation [Cause: connect timed out]] 2021-02-01 19:02:31.623 WARN 42252 --- [ main] c.c.f.a.i.RemoteConfigRepository : Load config failed, will retry in 1 SECONDS. appId: dev, cluster: default, namespaces: application 2021-02-01 19:02:33.624 WARN 42252 --- [ main] c.c.f.a.i.LocalFileConfigRepository : Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: dev, cluster: default, namespace: application, url: http://192.168.1.26:8080/configs/dev/default/application?ip=192.168.1.2 [Cause: Could not complete get operation [Cause: connect timed out]] 2021-02-01 19:02:33.628 WARN 42252 --- [ngPollService-1] c.c.f.a.i.RemoteConfigLongPollService : Long polling failed, will retry in 1 seconds. appId: dev, cluster: default, namespaces: application, long polling url: http://192.168.1.26:8080/notifications/v2?cluster=default&appId=dev&ip=192.168.1.2¬ifications=%5B%7B%22namespaceName%22%3A%22application%22%2C%22notificationId%22%3A-1%7D%5D, reason: Could not complete get operation [Cause: connect timed out] 2021-02-01 19:02:34.625 WARN 42252 --- [ main] c.c.f.a.i.RemoteConfigRepository : Load config failed, will retry in 1 SECONDS. appId: dev, cluster: default, namespaces: application 2021-02-01 19:02:35.629 WARN 42252 --- [ngPollService-1] c.c.f.a.i.RemoteConfigLongPollService : Long polling failed, will retry in 2 seconds. appId: dev, cluster: default, namespaces: application, long polling url: http://192.168.1.26:8080/notifications/v2?cluster=default&appId=dev&ip=192.168.1.2¬ifications=%5B%7B%22namespaceName%22%3A%22application%22%2C%22notificationId%22%3A-1%7D%5D, reason: Could not complete get operation [Cause: connect timed out] 2021-02-01 19:02:36.625 WARN 42252 --- [ main] c.c.f.a.i.LocalFileConfigRepository : Sync config from upstream repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository failed, reason: Load Apollo Config failed - appId: dev, cluster: default, namespace: application, url: http://192.168.1.26:8080/configs/dev/default/application?ip=192.168.1.2 [Cause: Could not complete get operation [Cause: connect timed out]] |
3.分析原因 http://192.168.1.26:8080 这个地址不是我eureka的地址,所以才找的时候会找不到 4.解决办法 启动的环境变量中加入: -Dapollo.configService=http://192.167.2.123:8080 将地址改为eureka的地址就好 ———————————————— 版权声明:本文为CSDN博主「weixin_38777065」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_38777065/article/details/113527235
View Details在Mybatis中,有一个强大的功能元素resultMap。当我们希望将JDBC ResultSets中的数据,转化为合理的Java对象时,你就能感受到它的非凡之处。正如其官方所述的那样:
resultMap元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的长达数千行的代码。ResultMap 的设计思想是,对于简单的语句根本不需要配置显式的结果映射,而对于复杂一点的语句只需要描述它们的关系就行了。
“30 * * * * ?” 每半分钟触发任务
“30 10 * * * ?” 每小时的10分30秒触发任务
“30 10 1 * * ?” 每天1点10分30秒触发任务
“30 10 1 20 * ?” 每月20号1点10分30秒触发任务
“30 10 1 20 10 ? *” 每年10月20号1点10分30秒触发任务
“30 10 1 20 10 ? 2011” 2011年10月20号1点10分30秒触发任务
“30 10 1 ? 10 * 2011” 2011年10月每天1点10分30秒触发任务
“30 10 1 ? 10 SUN 2011” 2011年10月每周日1点10分30秒触发任务
“15,30,45 * * * * ?” 每15秒,30秒,45秒时触发任务
“15-45 * * * * ?” 15到45秒内,每秒都触发任务
“15/5 * * * * ?” 每分钟的每15秒开始触发,每隔5秒触发一次
“15-30/5 * * * * ?” 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
“0 0/3 * * * ?” 每小时的第0分0秒开始,每三分钟触发一次
“0 15 10 ? * MON-FRI” 星期一到星期五的10点15分0秒触发任务
“0 15 10 L * ?” 每个月最后一天的10点15分0秒触发任务
“0 15 10 LW * ?” 每个月最后一个工作日的10点15分0秒触发任务
“0 15 10 ? * 5L” 每个月最后一个星期四的10点15分0秒触发任务
“0 15 10 ? * 5#3” 每个月第三周的星期四的10点15分0秒触发任务
MyBatis利用For循环批量插入
MyBatis的手动批量提交
MyBatis以集合方式批量新增
MyBatis-Plus提供的SaveBatch方法
MyBatis-Plus提供的InsertBatchSomeColumn方法
一、什么是Quartz.NET?
Quartz.NET 是一个功能齐全的开源作业调度系统,可用于从最小的应用程序到大型企业系统。
Quartz.NET是纯净的,它是一个.Net程序集,是非常流行的Java作业调度系统Quartz的C#实现。
二、Quartz.NET可以做什么?
Quartz.NET很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。
Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。
Quartz.NET的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。
我此次选择Quartz.Net使用的版本是 3.3.3
这里强调一点:3.x的版本与2.x的版本使用方式有一定的差别
View DetailsP2P 通信最大的障碍就是 NAT(网络地址转换),NAT 使得局域网内的设备也可以与公网进行通讯,但是不同 NAT 下的设备之间通讯将会变得很困难。UDP 打洞就是用来使得设备间绕过 NAT 进行通讯的一种技术。
View Details1、WebSocket是一种在单个TCP连接上进行全双工通信的协议。
2、WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范,WebSocket API也被W3C定为标准。
3、WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
4、在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
* UDP服务器 * <p> UDP说明: * <p>UDP是无连接的通信协议,本质上不分服务端和客户端,两个段都可以对方当作服务器。 * <p> Java版本的可使用DatagramSocket接口实现,关键函数说明: * <p> .bind(): 表示监听,监听本机端口(任意定义),增加本地地址表明指明本地网卡; * <p> .send(): 表示发送数据,每个发送的数据包都要指明发送目的服务器地址和端口号; * <p> .receive(): 表示接收数据,每个接收数据包都要指明接收源服务器地址和端口号; * <> 笔记本开热点,就是新建独立网卡,组成局域网,局域网内设备可以相互通信,接收发送数据,发送方需要指明地址。 * <p>使用方法: * <p>1.笔记嗯电脑开启局域网: * <p>本机开启WiFi热点,在cmd中ipconfig, 查看本机热点IP,如下: * <p>2. 查看本机局域网IP: * <p>无线局域网适配器 本地连接* 10: * <p> * <p> 连接特定的 DNS 后缀 . . . . . . . : * <p> 本地链接 IPv6 地址. . . . . . . . : fe80::e4xx:93xx:47xx:xxx%4 * <p> IPv4 地址 . . . . . . . . . . . . : […]
View Details文章目录 一、什么是网络编程? 二、Socket套接字 流套接字 数据报套接字 原始套接字 三、Java数据报套接字通讯模型 1. Socket UDP模型 2. 常见的API DatagramSocket API DatagramPacket API InetSocketAddress API 四、UDP数据报套接字编程 1. 回显服务器 2.查字典服务器 一、什么是网络编程? 网络编程:指网络上的主机,通过不同的进程,以编程的方式实现网络通信(数据通信本质是网络数据传输),其目的就是为了获取网络资源。 如何来理解呢?我们只需要记住是不同进程就可以。即便是同一台主机,只要是不同进程之间进行传输数据就属于网络编程。但是需要注意的是,一个进程获取资源,另外一个进程提供资源。 发送端和接收端(发送端和接收端只是相对的,只是一次网络数据传输产生数据流之后的概念) 发送端:源主机 接收端:目的主机 收发端:既可以进行发送也可以接收数据 请求和响应 一般来讲,获取一个网络资源,涉及到两次网络数据传输:①请求数据发送 ②响应数据发送 比如,主机A给主机B发送消息之前,会请求主机B与它建立连接,之后主机B返回给它响应(同意建立连接)。 客户端和服务端 服务端:提供服务的一方 客户端:获取服务资源,并且可以保存资源在服务端。 举个栗子:在银行办业务 银行提供存款服务:用户(客户端)保存资源(现金)在银行(服务端) 银行提供取款服务:用户(客户端)获取服务端资源(银行替用户保管的现金) 常见的客户端服务端模型 核心流程: ①Client发送请求到Server ②Server根据请求,执行响应的业务处理 ③Server返回响应,发送业务处理结果到Client ④Client根据响应数据,展示处理结果(展示获取到的资源/保存资源) 二、Socket套接字 Socket套接字:用于网络通信的技术,一般我们使用Socket进行网络程序开发,即网络编程。 其主要针对传输层协议划分为三类:流套接字、数据报套接字、原始套接字。 流套接字 使用传输层TCP协议; TCP:即Transmission Control Protocol(传输控制协议),传输层协议。 以下为TCP的特点: 有连接(eg. 打电话要先拨号建立连接) 可靠传输(发送方能知道对方是否收到) 面向字节流(数据传输是基于IO流,在IO流没有关闭的情况下是无边界的数据,可以进行多次发送,也可以分开多次接收),以字节为基本单位,文件读写也是面向字节流的。 有接收缓冲区,也有发送缓冲区 大小不受限制 全双工(A、B同时发送,即一个socket既能读也能写) 数据报套接字 使用传输层UDP协议; UDP:即User Datagram Protocol(用户数据报协议),传输层协议。 以下为UDP的特点: 无连接 (eg. 发微信,发送数据之前不需要建立连接) 不可靠传输(UDP尽最大努力交付,即不保证可靠交付) 面向数据报(对于数据报来说,传输数据是一块一块的,发送一块数据假如100个字节,必须一次发送,接收也必须一次接收100个字节,而不能分100次,每次接收1个字节。) 有接收缓冲区,无发送缓冲区 大小受限:一次最多传输64k 全双工 原始套接字 原始套接字用于自定义传输层协议,用于读写内核没有处理的IP协议数据。(这不是我们的重点) 面试题:TCP协议和UDP协议的区别 参考:TCP和UDP的区别 ①报头不同 ②协议不同 ③特点不同 三、Java数据报套接字通讯模型 1. Socket UDP模型 操作系统把网络编程的一些相关操作(访问网络核心的硬件设备/网卡驱动等)封装起来了,提供了一组API供开发者使用。 对于UDP协议来讲,具有无连接、面向数据报的特征,即每次都是没有建立连接,一次发送全部数据报一次接受全部数据报。java中使用UDP协议通讯,主要基于DatagramSocket类来创建数据报套接字,并使用DatagramPacket描述一个发送或接收数据报。(DatagramSocket类描述一个socket对象,本质是一个文件描述符,表示网卡设备的文件,通过读写socket文件的方式操作网卡) […]
View Details