自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(226)
  • 资源 (12)
  • 收藏
  • 关注

原创 Comparato接口和Compara接口的比较器方法

Comparable接口的compareTo方法:this.compareTo(obj),this > obj 返回1,this < obj 返回-1,this = obj 返回0。Comparator接口的compare方法:(int o1, int o2)方法 return o1 - o2 是升序,return o2 - o1 是降序。

2023-04-13 10:54:02 233 1

原创 Scala的数据类型

2021-12-11 11:10:44 851

原创 Gatewa网关

学习地址:https://www.bilibili.com/video/BV1LQ4y127n4?p=38为什么需要网关在SpringCloud中网关的实现包括两种:1、gateway2、zuulzuul是基于Servlet的实现,属于阻塞式编程。SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能。Gateway 快速入门搭建网关服务的步骤:图示:总结:网关搭建步骤:1.创建项目,引入 nacos 服务发现

2021-11-19 17:12:43 787

原创 Http客户端Feign

Feign 代替 RestTemplateRestTemplate方式调用存在的问题:先来看我们以前利用RestTemplate发起远程调用的代码:存在下面的问题:1、代码可读性差,编程体验不统一2、参数复杂的 URL 难以维护使用 Feign 可以很好的解决如上问题使用 Feign 步骤:1、引入依赖:<!-- Feign 客户端依赖 --><dependency> <groupId>org.springframework.cloud<

2021-11-19 09:13:11 326

原创 Nacos 配置管理

统一配置管理在 Nacos 中添加配置信息:新建配置信息:配置热更新配置共享搭建 Nacos 集群

2021-11-17 14:34:39 2944

原创 Nacos 和 Eureka 对比

Nacos 注册中心细节分析:临时实例和非临时实例:服务注册到 Nacos 时,可选择注册为临时或非临时实例,通过下面配置来设置:spring: cloud: nacos: discovery: ephemeral: false # 是否是临时实例Nacos 和 Eureka 对比1、共同点:都支持服务注册和服务拉取都支持服务提供者心跳方式做健康检测2、不同点:Nacos 支持服务端主动检测提供者状态,临时实例采用心跳模式,非临时实

2021-11-16 16:47:17 950

原创 Nacos

Nacos 下载和安装1、 GitHub 主页:https://github.com/alibaba/nacosGitHub 下载页:https://github.com/alibaba/nacos/releases2、 3、 nacos 的 conf 目录下的 application.properties 中,可以查看 Nacos 的默认端口为:88484、 双击 startup.cmd 启动另一种启动方式:Windows 命令:startup.cmd -m standalone5、 浏

2021-11-16 16:16:13 739

原创 Ribbon

学习地址:https://www.bilibili.com/video/BV1LQ4y127n4?p=14负载均衡流程负载均衡策略Ribbon 的负载均衡规则是一个叫做 IRule 的接口来定义的,每一个子接口都是一种规则:默认的规则是 ZoneAvoidanceRule通过定义 IRule 实现可以修改负载均衡规则,有两种方式:代码方式:在 order-service 中的 OrderApplication 类中,定义一个新的IRule: @Bean public IRul

2021-10-25 19:33:56 109

原创 Eureka

学习地址:https://www.bilibili.com/video/BV1LQ4y127n4?p=1Eureka 工作原理1、 消费者该如何获取服务提供者具体信息?服务提供者启动时向eureka注册自己的信息eureka保存这些信息消费者根据服务名称向eureka拉取提供者信息2、 如果有多个服务提供者,消费者该如何选择?服务消费者利用负载均衡算法,从服务列表中挑选一个3、 消费者如何感知服务提供者健康状态?服务提供者会每隔30秒向EurekaServer发送心跳请求,报

2021-10-25 15:48:33 145

原创 微服务入门案例

服务拆分注意事项:不同微服务,不要重复开发相同业务微服务数据独立,不要访问其它微服务的数据库微服务可以将自己的业务暴露为接口,供其它微服务调用微服务远程调用案例demo项目:https://download.csdn.net/download/qq_43575044/34054477具体实现:OrderApplication:OrderService:总结:微服务调用方式基于 RestTemplate 发起的 Http 请求实现远程调用Http请求做远程调用是与语言

2021-10-25 14:29:22 230

原创 微服务简介

学习地址:https://www.bilibili.com/video/BV1LQ4y127n4?p=1微服务技术栈认识微服务单体架构特点?简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统分布式架构特点?松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝微服务:一种良好的分布式架构方案优点:拆分粒度更小、服务更独立、耦合度更低缺点:架构非常复杂,运维、监控、部署难度提高微服务技术对比SpringCloud官网地址:https://

2021-10-23 18:44:22 120

原创 网络多线程——多用户即时通信系统(13)——服务端推送新闻

服务端服务端推送消息/新闻,本质其实就是群发消息在服务器启动一条独立线程,专门负责推送新闻在服务器端添加 Utility 工具类在服务端新建 SendNewsToAllService 类package com.qqserver.service;import com.qqcommon.Message;import com.utils.Utility;import java.io.IOException;import java.io.ObjectOutputStream;im

2021-10-20 16:37:07 195 1

原创 网络多线程——多用户即时通信系统(12)——发文件

客户端客户端先把文件 a.jpg 读取到客户端,字节数组把文件对应的字节数组封装到 message 对象【包含文件内容、sender、getter】将 message 对象发送给服务端在接收到包含有文件的消息后,将将该文件保存到磁盘服务端服务端接收到 message 对象拆解 message 对象的 getterId,获取该用户的通信线程把 message 对象转发给指定用户.在服务端和客户端进行“消息”扩展MessageType 接口:Message 类:在客户端新

2021-10-20 16:07:22 206

原创 网络多线程——多用户即时通信系统(11)——群聊代码实现

QQView:在服务端和客户端添加新的消息类型MessageClientService 中添加新方法 /** * @param content 内容 * @param senderId 发送者 */ public void sendMessageToAll(String content, String senderId){ // 构建 Message Message message = new Message();

2021-10-19 20:46:19 171

原创 网络多线程——多用户即时通信系统(10)——私聊代码实现

客户端接收用户希望给某个其它在线用户聊天的内容。将消息构建成 Message 对象,通过对应的 socket 发送给服务器在他的线程(通信线程中),读取到发送的 message 消息,并显示即可服务端可以读取到客户端发送给某个客户的消息从管理线程的集合中,根据 message 对象的 getterId 获取到对应线程的 socket然后将 message 对象转发给指定客户QQView创建 MessageClientService 类,来提供和消息相关的方法package

2021-10-19 16:17:32 328

原创 网络多线程——多用户即时通信系统(9)——无异常退出系统

客户端在客户端的 UserClientService 类中编写 logout 方法 // 1. 验证用户登录 .... // 2. 向服务器端请求在线用户列表 .... // 3. 编写方法,退出客户端,并给服务端发送一个退出系统的 Message 对象 public void logout(){ Message message = new Message(); message.setMesType(MessageType.M.

2021-10-14 21:05:10 155

原创 网络多线程——多用户即时通信系统(8)——拉取在线用户列表:服务端

在 ManageServerConnectClientThread 中编写方法,返回在线用户列表 // 编写方法,返回在线用户列表 public static String getOnlineUser(){ // 通过 keySet() 方法进行遍历 Set<String> keys = map.keySet(); String onlineUserList = ""; for (String key : key

2021-10-14 19:25:02 185

原创 网络多线程——多用户即时通信系统(7)——拉取在线用户列表:客户端

在客户端和服务端的 MessageType 中添加几个新类型 String MESSAGE_COMM_MES = "3"; // 普通信息报 String MESSAGE_GET_ONLINE_FRIEND = "4"; // 获取在线用户列表 String MESSAGE_RETURN_ONLINE_FRIEND = "5"; // 返回在线用户列表 String MESSAGE_CLIENT_EXIT = "6"; // 客户端请求退出客户端部分:拉取在线用

2021-10-14 18:50:19 207

原创 网络多线程——多用户即时通信系统(6)——设计可登录用户集合

启动多个客户端:在 QQServer 中创建一个集合,存放多个用户,如果是这些用户登录,就认为是合法的// 创建一个集合,存放多个用户,如果是这些用户登录,就认为是合法的 // HashMap 没有处理线程安全,因此在多线程下是不安全的 // ConcurrentHashMap 实现了同步处理,多线程下是安全的 // private static HashMap<String, User> validUsers = new HashMap<>(

2021-10-14 16:12:09 190

原创 网络多线程——多用户即时通信系统(5)——服务端

QQServerpackage com.qqserver.service;import com.qqcommon.Message;import com.qqcommon.MessageType;import com.qqcommon.User;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.ServerSocke.

2021-10-14 15:14:55 208

原创 网络多线程——多用户即时通信系统(4)——客户端线程管理部分

UserClientServicepackage com.qqclient.service;import com.qqcommon.Message;import com.qqcommon.MessageType;import com.qqcommon.User;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.Ine

2021-10-14 14:09:26 152

原创 网络多线程——多用户即时通信系统(3)——客户端线程部分

设计客户端部分的线程,线程持有 Socket 对象UserClientServicepackage com.qqclient.service;import com.qqcommon.Message;import com.qqcommon.MessageType;import com.qqcommon.User;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutput

2021-10-14 11:31:17 182

原创 网络多线程——多用户即时通信系统(2)——客户端界面部分

客户端复制一份 Utility.java 工具类到 com.qqclient.utils 包下:Utility 代码:package com.qqclient.utils;/** 工具类的作用: 处理各种情况的用户输入,并且能够按照程序员的需求,得到用户的控制台输入。*/import java.util.*;/** */public class Utility { //静态属性。。。 private static Scanner scanner = new S

2021-10-14 11:28:23 453

原创 网络多线程——多用户即时通信系统(1)——公共部分

需求分析用户登录拉取在线用户列表无异常退出(服务端、客户端)私聊群聊发文件服务器推送新闻通信系统示意图客户端和服务端共有的类:Message、UserUser 类:package com.qqcommon;import java.io.Serializable;/** * @Author: Gin * @Description: 表示一个用户 / 客户信息 * @Modified By: Gin * @Date: Created in 15:04 2021/1

2021-10-14 10:21:27 206

原创 项目开发流程

哔哩哔哩-韩顺平老师:视频链接:https://www.bilibili.com/video/BV1j54y1b7qv?p=25

2021-10-13 14:12:39 63

原创 网络多线程——网络编程练习

TCP 练习使用字符流的方式,编写一个客户端程序和服务器端程序,客户端发送 “name”,服务器端接收到后,返回 "我是nova ",nova是你自己的名字客户端发送 “hobby”,服务器端接收到后,返回 “编写java程序”不是这两个问题,回复 “你说啥呢”服务端package net.udp;import java.io.*;import java.net.ServerSocket;import java.net.Socket;/** * @Author: Gin *

2021-10-12 17:16:38 359

原创 网络多线程——UDP网络通信编程

基本介绍类 DatagramSocket【数据报套接字】 和 DatagramPacket【数据包 / 数据报】 实现了基于 UDP协议网络程序。UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。DatagramPacket 对象封装了 UDP 数据报,在数据报中包含了发送端的 IP 地址和端口号以及接收端的 IP 地址和端口号。UDP 协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方

2021-10-12 15:03:01 659

原创 网络多线程——TCP网络通讯不为人知的秘密

TCP网络通讯不为人知的秘密当客户端连接到服务端后,实际上客户端也是通过一个端口和服务端进行通讯的,这个端口是 TCP/IP 来分配的

2021-10-09 23:47:48 74

原创 网络多线程——netstat

netstat 指令netstat -an:可以查看当前主机的网络情况,包括端口监听情况和网络连接情况netstat -an | more:可以分页显示,按 空格键 以逐页显示netstat -anb:使用管理员权限开启 dos 控制台,输入此指令可以查看每个端口被哪个应用所监听说明:LISTENING 表示某个端口在监听如果有一个外部程序(客户端)连接到该端口,就会显示一条连接信息可以输入 ctrl + c 退出指令...

2021-10-09 19:56:54 554

原创 网络多线程——网络上传文件

应用案例:客户端上传一张图片到服务端编写一个服务端,和一个客户端服务器端在 8888 端口监听客户端连接到服务端,发送一张图片:e:\baidu.png服务器端接收到客户端发送的图片,保存到 src 下,发送 “收到图片” 再退出客户端接收到服务端发送的 “收到图片”,再退出分析:设计一个 StreamUtils 工具类package net;import java.io.*;/** * @Author: Gin * @Description: * @Modified

2021-10-09 19:35:54 245

原创 网络多线程——TCP网络通信编程

应用案例 1 (使用字节流)编写一个服务器端和一个客户端服务器端在9999端口监听客户端连接到服务器端,发送 “hello,server”,然后退出服务器端接收到客户端发送的信息,输出,并退出代码实现服务端代码package net;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;/** * @Author

2021-10-09 14:36:08 319

原创 网络多线程——Socket

Socket 基本介绍套接字(Socket)开发网络应用程序被广泛采用,以至于成为事实上的标准。通信的两端都要有 Socket,是两台机器间通信的端点网络通信其实就是 Socket 间的通信。Socket 允许程序把网络连接当成一个流,数据在两个 Socket 间通过 IO 传输。一般主动发起通信的应用程序属客户端,等待通信请求的为服务端TCP网络通信编程基本介绍基于 客户端-服务端 的网络通信底层使用的是 TCP/IP 协议应用场景举例:客户端发送数据,服务端接受并显示控制台基

2021-10-09 12:32:02 135

原创 网络多线程——InetAddress

InetAddress 类 相关方法获取本机 InetAddress 对象:getLocalHost根据指定主机名/域名获取 ip 地址对象:getByName获取 InetAddress 对象的主机名:getHostName获取InetAddress对象的地址:getHostAddresspackage net;import java.net.InetAddress;import java.net.UnknownHostException;/** * @Author: Gin

2021-10-09 11:23:27 131

原创 网络多线程——TCP 和 UDP

TCP 和UDPTCP协议:传输控制协议使用TCP协议前,须先建立TCP连接,形成传输数据通道传输前,采用 “三次握手” 方式,是可靠的TCP 协议进行通信的两个应用进程:客户端、服务端在连接中可进行大数据量的传输传输完毕,需释放己建立的连接,效率低UDP协议:用户数据协议将数据、源、目的封装成数据包,不需要建立连接每个数据包的大小限制在 64K 内,不适合传输大量数据因无需连接,故是不可靠的发送数据结束时无需释放资源(因为不是面向连接的),速度快举例:发短信...

2021-10-09 11:02:20 171

原创 网络多线程——网络通信协议

协议(TCP/IP)TCP/IP(Transmission ControlProtocol/lnternet Protocol)的简写中文译名为传输控制协议 / 因特网互联协议,又叫网络通讯协议,这个协议是 Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的。协议的理解总的来说就是一句话:数据的组织形式,就是协议如下图:用户数据通过多个协议,最后封装为以太网帧...

2021-10-09 10:50:01 249

原创 网络多线程——域名和端口

域名www.baidu.com好处:为了方便记忆,解决记 ip 的困难概念:将 ip 地址映射成域名,这里怎么映射上,HTTP协议端口号概念:用于标识计算机上某个特定的网络程序表示形式:以整数形式表示,端口范围:0 ~ 65535【 2 个字节表示端口:0 ~ 2^16-1】0 ~ 1024 号端口已经被占用,比如:ssh 22,ftp 21,smtp 25,http 80常见的网络程序端口号:tomcat:8080,mysql:3306,oracle,1521,sqlserver:1

2021-10-09 10:41:55 112

原创 网络多线程——ip 地址

ip 地址概念:用于唯一标识网络中的每台计算机 / 主机查看 ip 地址:ipconfigip 地址的表示形式:点分十进制:xxx.xxx.xxx.xxx每一个十进制数的范围:0 ~ 255ip 地址的组成 = 网络地址 + 主机地址,比如:192.168.16.69IPv6 是互联网工程任务组设计的用于替代 IPv4 的下一代 IP 协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址由于 IPv4 最大的问题在于网络地址资源有限,严重制约了互联网的应用

2021-10-09 10:35:21 184

原创 反射——反射练习

练习一定义 PrivateTest 类,有私有 name 属性,并且属性值为 hellokitty提供 getName 的公有方法创建 PrivateTest 的类,利用 Class 类得到私有的 name 属性,修改私有的 name 属性值,并调用 getName() 的方法打印 name 属性值package reflection_;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetExc

2021-09-30 11:24:54 212

原创 反射——反射爆破操作方法

通过反射访问类中成员根据方法名和参数列表获取 Method 方法对象:Method m = clazz.getDeclaredMethod(方法名, XX.class);获取对象:Object o=clazz.newlnstance();暴破:m.setAccessible(true);访问:Object returnValue = m.invoke(o,实参列表);注意:如果是静态方法,则 invoke 的参数 o ,可以写成 nullpackage reflection_;imp

2021-09-30 10:55:04 650

原创 反射——反射爆破操作属性

通过反射访问类中的成员根据属性名获取 Field 对象Field f = clazz对象.getDeclaredField(属性名);暴破:f.setAccessible(true); // f 是 Field访问:f.set(o,值); // o 表示对象syso(f.get(o)); // o 表示对象注意:如果是静态属性,则 set 和 get 中的参数 o ,可以写成 nullpackage reflection_;import java.lang.reflect.Fiel

2021-09-30 09:47:58 246

基于Spark的全球新冠疫情系统的分析与实现

基于Spark的全球新冠疫情系统的分析与实现

2022-05-25

Redis+MySQL+JWT

Redis+MySQL+JWT

2022-04-06

ElasticSearch + Kibana 安装包

ElasticSearch + Kibana 安装包

2022-03-31

微服务入门案例.zip

微服务入门案例

2021-10-23

CSS——Web静态页面开发

html初学者静态页面开发联系

2021-08-15

CSS——web静态页面设计

CSS——web静态页面设计

2021-08-13

商品信息与商品类别MySQL数据库

商品信息与商品类别MySQL数据库

2021-08-10

我国大陆地区省市区MySQL数据库

我国大陆地区省市区MySQL数据库

2021-08-10

TeduStore.zip

学生

2021-08-06

4期代码、安装包.zip

Python初学

2021-04-20

Practice.zip

初学者逻辑思维训练

2021-03-23

Servlet09.zip

0.0

2021-03-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除