- 博客(32)
- 收藏
- 关注
原创 Nacos-服务注册,服务发现(一)
Nacos是Spring Cloud Alibaba的组件, Spring Cloud Alibaba遵循Spring Cloud中定义的服务注册, 服务发现规范. 因此使⽤Nacos和使⽤Eureka对于微服务来说,并没有太⼤区别.
2025-07-25 23:48:48
458
原创 nacos安装
Nacos默认是集群(cluster)启动,将其设置为单机(standalone), 设置⽅式参考 上⾯章节。Nacos启动后, ⽬录下会多⼀个logs的⽂件夹,报错⽇志在: logs/nacos.log。⽬前官⽅推荐的稳定版本为2.2.3, 咱们课程中也是⽤2.2.3。Nacos 默认启动⽅式为集群, 启动前需要修改配置为单机模式。target: 存放 Nacos 应⽤的 jar 包。修改 8848 为期望的端口号即可。如果出现一下界面,就代表访问成功。conf: Nacos配置⽂件。
2025-07-25 23:32:52
283
原创 Eureka-服务注册,服务发现
注册中心是分布式系统/微服务架构中的核心基础设施,它扮演着服务治理的"电话簿"角色,他能维护一个服务列表,哪个机器上线了,哪个机器宕机了,这些信息都会自动更新到服务列表上,客户端拿到这个列表,直接进行服务调用即可。这个就是注册中心。**服务提供者(Server):**一次业务中,被其他微服务调用的服务,也就是提供接口给其他微服务。**服务消费者(Client):**一次业务中,调用其他微服务的服务,也就是调用其他微服务提供的接口。
2025-07-24 20:59:51
618
原创 springcloud环境和工程搭建
实现一个电商平台(残次版,仅为演示SpringCloud内容)拿京东举例,首页上就展示了许多功能。我们该如何实现呢?如果把这些功能全部写在⼀个服务⾥,这个服务将是巨⼤的。巨多的会员,巨⼤的流量,微服务架构是最好的选择。微服务应⽤开发的第⼀步,就是服务拆分,拆分后才能进⾏”各⾃开发“@BeanREST(Representational State Transfer), 表现层资源状态转移.
2025-07-23 23:14:36
722
1
原创 spring-cloud概述
Spring Cloud 提供了⼀些可以让开发⼈员快速构建分布式服务的⼯具, ⽐如配置管理, 服务发现, 熔断,智能路由等.。他们可以在任何分布式环境中很好的⼯作。简单来说,Spring Cloud就是分布式微服务架构的一站式解决方案,是微服务架构落地的多种技术的集合。Distributed/versioned configuration 分布式版本配置Service registration and discovery 服务注册和发现Routing 路由。
2025-07-23 22:56:37
1070
原创 Stream流-Java
的,如果传递基本数据类型,是会把整个数组当作一个元素,存放到Stream当中。注意二:修改Stream流中的数据,不会影响原来集合或者数组中的数据。方法的形参是一个可变参数,可以传递一堆零散的数据,也可以传递数组。如果我们要收集到Map集合当中,键不能重复,否则会报错。结合了Lambda表达式,简化集合,数组的操作。注意一:中间方法,返回新的Stream流,Stream接口中静态方法of的细节。,建议使用链式编程。
2025-07-21 22:58:59
444
原创 WebSocket
WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket其实是一个“应用层协议” 和 “HTTP” 地位是对等的,都是基于传输层的 TCP 实现的一个广泛的被使用的应用层协议。这个协议就可以实现服务器给客户端主动推送数据这样的功能了,本身传输层TCP就是可以让服务器给客户端主动推送数据的,但是到了HTTP这里,把之前的服务器推送数据的功能搞没了。HTTP虽然不够用了,WebSocket可以起到补充作用。
2025-07-21 22:57:09
976
原创 JVM-Java
给出的这三个类加载器,是属于JVM自带的,程序员是可以自定义类加载器的,当你自定义的时候,就可以把你的类加载器,也放到双亲委派模型中,也可以不放到里面。元数据区的作用:用来存储被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据的。比如,类叫啥名字,是不是public,继承自哪些类,实现了哪些接口方法叫啥名字,参数有几个,都叫啥,都是啥类型,返回值是啥类型。JVM一共有多少个对象,JVM自身是知道的,通过可达性分析,知道了哪些是“可达”的,剩下的就是“不可达”,也就是接下来要回收的垃圾。
2025-07-20 22:47:11
1088
1
原创 网络原理——IP
目前的现状:全世界,IPv6的普及程度,非常非常低,但是中国是IPv6普及程度最高的国家(没有之一)。网络传输过程中,网络这一层,转发是要根据IP的,数据链路层这一层是要根据MAC,写代码的时候,填写的肯定是IP地址,路由器也是根据IP地址查路由表,根据路由表得到接下来哪个网口转发,此时往往就需要根据下一个节点的IP,找到对应的MAC,才能填写以太网数据帧;这就不得不提网络通信“五元组了”(源IP,目的IP,源端口,目的端口,协议类型),IP协议里的报头存有源IP目的IP,载荷里面存有源端口,目的端口。
2025-07-20 22:36:43
1989
3
原创 网络原理——TCP
TCP的特点:有链接 , 可靠传输 ,面向字节流 , 全双工(此处的可靠,不是说,A给B发一个消息,B 百分百能收到,而是A给B发了消息之后,尽可能的让B收到,但是呢A是能够知道B是否收到了,详细请看TCP的核心机制一)
2025-07-19 23:42:26
1661
原创 网络原理——UDP
传输层有两个核心协议:1. TCP 2. UDPTCP的特点:有链接 , 可靠传输 ,面向字节流 , 全双工 UDP的特点:无连接 ,不可靠传输 , 面向数据报 , 全双工(其中的不可靠传输,在代码中是不容易体现出来的,可以理解为发送了数据,就不管了)学习UDP之前,我们得再谈谈端口号。
2025-07-18 22:22:35
693
原创 网络原理 ——HTTPS
HTTPS 也是一个应用层协议。是在 HTTP 协议的基础上引入了一个加密层。 HTTP 协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。至于HTTPS为啥能出现,就不得不提“运营商劫持”了。(这里就大概讲一下,想了解的可以搜一搜。) 比如我要下载一个QQ音乐,未被劫持的效果,就是点击下载按钮,就会弹出QQ音乐的下载链接,已被劫持的效果,点击下载按钮,就会弹出别的软件的下载链接。由于我们通过网络传输的任何数据包都会经过运营商的网络设备(路由器,交换机等),那么运营商的网络设备
2025-07-18 22:20:02
1186
原创 网络原理 —— HTTP
随着互联网的快速发展,浏览器的版本也在不断更新,同一个时间段内,有些用户的浏览器,版本是比较旧的,支持的功能少,有些用户浏览器版本更新,支持的功能多,如果要是支持的功能少,可能就打不过竞争对手,要是支持的功能多,旧版本浏览器设备的用户,可能就展示不了。所以,要根据用户使用的设备进行区分,通过 UA 中的浏览器版本/操作系统版本,区分出当前用户的设备,最多支持哪些特性~因此程序员就需要维护多套代码,对于老的浏览器,返回功能少的网页,正确显示,对于新的浏览器,返回功能多的网页,体验丰富。
2025-07-17 23:28:58
963
原创 网络编程-java
Socket套接字是网络编程的基础技术,分为TCP和UDP两种协议。TCP提供可靠、面向字节流的全双工通信,而UDP提供无连接、不可靠的面向数据报传输。UDP编程使用DatagramSocket和DatagramPacket类实现数据收发,而TCP编程则使用ServerSocket和Socket类建立连接,通过InputStream和OutputStream进行数据传输。文章通过回显服务器的实现示例,展示了两种协议的基本编程流程:UDP通过DatagramPacket直接收发数据,TCP则通过IO流处理数据
2025-07-17 23:19:26
808
原创 网络初识 - Java
网络通信,非常复杂,如果我们设计一个协议,完成网络通信中方方面面的问题,势必会使这个协议非常复杂,非常庞大。把一个大的协议拆成若干个小的,功能单一的协议了。交换机收到之后,物理层解析,数据链路层解析(没有网络层了,数据链路层中,得到的以太网数据帧的帧头,信息就足以支持交换机进行下一步工作),重新构造出新的以太网数据帧,发给下一个设备。主机的数据 => 路由器,路由器收到之后,物理层,数据链路层,网络层解析(没有传输层),重新构造出新的网络数据包,构造出以太网数据帧,构造出二进制数据,进行转发。
2025-04-06 23:37:45
779
原创 文件操作和IO ——Java
1.流对象的使用流程先打开,再读写,最后关闭。2.应该使用哪个流对象?先区分文件是文本文件还是二进制文件,再区分读还是写。看到这,顺便再提一个别的小知识点 = 缓冲区缓冲区,通常就是一段内存空间,他是用来提高程序的效率。通常如果直接读写硬盘,是比较低效的(硬盘速度慢),因此有的时候,就希望减少读写文件的次数。因此在进行 IO 操作的时候,就希望能够使用缓冲区,把要写的数据,先放到缓冲区里攒一波,再一起写,或者读的时候,也不是一个一个的读,一次读一批数据,到缓冲区中,再慢慢解析。
2025-04-06 23:18:50
749
原创 线程-进阶
一个代码中,反复针对细粒度的代码加锁,就可能被优化成更粗粒度的加锁。当然,也不是锁越优秀越粗,还是要具体视情形而定的,锁粗了,就会影响到线程的并发程度。在实际开发过程中,使用细粒度锁,是期望释放锁的时候其他线程能使用锁。但是在实际上可能并没有其他线程来抢占这个锁,这种情况 JVM 就会自动把锁粗化,避免频繁释放锁。锁粗化,这件事也并不是说合理,比如,确实三件事,本身都需要加锁,粗化成一把锁,合理的。
2025-03-16 23:06:47
1091
原创 线程 -- 线程池
谈起线程池之前,我们可以联想到常量池,那什么是常量池呢?常量池:字符串常量,在 Java 程序最初构建的时候,就已经准备好了。等程序运行的时候,这样的常量也就加载到内存中了。因此剩下了构造/销毁的开销。其实,在计算机中,这个词,就只有这一个意思,表示的含义都是一样的。线程池,就是为了让我们的。我们不妨想想最初引入线程的原因:频繁创建销毁进程,太慢了。随着互联网的发展,随着我们对性能的要求更进一步,咱们现在觉得,频繁创建销毁线程,开销有些不能接受了。
2025-03-02 22:05:23
769
原创 线程 -- 阻塞队列
阻塞队列,他其实就是一种更复杂的队列,也遵循队列的先进先出原则。它具有以下特性:1.线程安全2.阻塞特性a)队列为空,尝试出队列,出队列操作就会阻塞,阻塞到其他线程添加元素为止。b)队列为满,尝试入队列,入队列操作也会阻塞,阻塞到其他线程取走元素为止。阻塞队列,一个最主要的应用场景,就是实现“生产者消费者模型”(多线程编程中,一种典型的编码技巧)。
2025-03-02 21:58:34
754
原创 对象的比较 - java
equals方法在idea里有快捷键,Alt + Insert,在弹出的框里面就可以看到。重写父类的equals的方式虽然可以比较,但缺陷是:equal只能按照相等进行比较,不能按照大于、小于的方式进行比较。在Java中,类是所有类的根类,而方法是类中的一个非常重要的方法。它的作用是返回调用该方法的对象的运行时类(Runtime Class)。具体作用如下:获取对象的运行时类方法返回一个类型的对象,这个对象表示调用它的对象的实际运行时类。例如,对于一个对象,调用会返回类的对象。示例代码:用于反射返
2025-02-21 22:14:44
986
原创 异常 - Java
Java 中虽然已经内置了丰富的异常类, 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我们实际情况的异常结构.例如, 我们实现一个用户登陆功能if (!System.out.println("用户名错误!");return;if (!System.out.println("密码错误!");return;System.out.println("登录成功!");
2025-02-09 22:31:11
1087
原创 String类 - Java
方法说明在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、double、float、int、long、Object、String、StringBuff的变量获取index位置的字符获取字符串的长度获取底层保存字符串空间总的大小扩容将index位置的字符设置为ch返回str第一次出现的位置从fromIndex位置开始查找str第一次出现的位置返回最后一次出现str的位置从fromIndex位置开始找str最后一次出现的位置。
2025-02-09 22:26:39
861
原创 封装,继承,多态(二)- Java
和继承类似, 组合也是一种表达类之间关系的方式, 也是能够达到代码重用的效果。组合并没有涉及到特殊的语法(诸如 extends 这样的关键字), 仅仅是将一个类的实例作为另外一个类的字段。
2025-02-02 21:57:31
1014
原创 封装,继承,多态(一)- Java
操作步骤:右键src → New → package;在弹出的对话框中输入包名;在包中创建类,右键包名 → 新建 → 类,然后输入类名即可;创建好后我们也能发现,在新建的Hello.java文件的最上方,就出现了一个 package语句。
2025-02-02 21:03:54
1004
原创 类和对象-Java
面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。面向过程编程 → 关注的是过程。面向对象编程 → 关注的是对象 → 1.找对象 2.创建对象 3.使用对象注意:不管是面向过程还是面向对象,它并不是一门语言,而是解决问题的方法。类是用来对一个实体(对象)来进行描述的,而对象是一个真正存在的实体。类的定义格式:class 类名{字段/属性;方法;………class为定义类的关键字,{}中为类的主体。类中包含的内容称为类的成员。
2025-02-01 22:56:19
588
原创 C语言:指针
(1)const 如果放在 * 的左边,修饰的是指针指向的内容,保证指针指向的内容不能通过指针来改变,但是指针变量本身的内容可变。(2)const 如果放在 * 的右边,修饰的是指针变量的本身,保证了指针变量的内容不能修改,但是指针指向的内容可以通过指针改变。这里的数组名表示的是整个数组,取出的是整个数组的地址(整个数组的地址和数组首元素的地址是有区别的)。sizeof中单独放数组名,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。,只要指针类型的变量,在相同的平台下,大小都是相同的。
2024-03-29 12:58:05
414
1
原创 C语言:整数和浮点数在内存中存储
但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存⼊内存时E的真实值必须再加上⼀个中间数,对于8位的E,这个中间数是127;这样做的⽬ 的,是节省1位有效数字。首先,int n= 9,9 的原,反,补码都是 00000000 00000000 00000000 00001001,当以%d的形式打印出来,就直接 00000000 00000000 00000000 00001001 以这种形式打印出来,所以第一个的 printf 打印出来就是9。
2024-03-26 13:38:42
763
1
原创 从无到有,从0到1.
我呢也算是从小对电脑感兴趣,也有一方面是喜欢键盘的敲击声。电脑就像是一个秘境,等待着每个人去探索,我想知道每个程序是如何运行的,每个app又是如何创建的,等等。由于呢我是一个资深的b站用户,所以我想以后能去bilibili去工作,当然大厂是每一个码农的梦想,我也不例外。(我的第一篇文章,有不到之处希望大家指出,嘿嘿)。1.大一打好基础,学好C语言,c++或Java编程语言并深挖。大二开始打竞赛,确定自己的方向,并不断学习新的计算机知识,巩固之前的知识。2.每天保证敲代码,并且学习计算机知识2h。
2023-11-20 18:10:47
59
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人