
学习笔记
文章平均质量分 64
一些平常的学习笔记
墨_风
一个菜鸡码农分享一些学习中的笔记或者问题的解决方法,如有错误,还请评论指正。
展开
-
Java 常用的集合详解(源码分析等部分 持续补充中)
Java 集合体系的核心接口和类位于java.utilCollection:存储单值元素的集合,所有单值集合类的根接口,定义了集合的基本操作。核心方法:add(E e):添加元素。:删除元素。size():返回集合大小。iterator():返回迭代器。子类:List:有序集合,允许重复元素。Set:无序集合,不允许重复元素。Queue:队列,支持先进先出(FIFO)或优先级排序。Map:存储键值对的集合,键唯一(基于equals()和hashCode()原创 2025-03-05 11:44:40 · 592 阅读 · 0 评论 -
java反射 -- 学习记录
注解定义@FieldName:用于映射实体类字段与VO类字段之间的关系。如果某个字段需要映射到VO中不同的字段名,则可以通过@FieldName("目标字段名")指定。@ClassType:用于指定实体类的目标VO类。参数:定义目标VO类。参数deepCopy:是否对嵌套对象进行深度封装。实体类到VO的转换提供了两个核心方法::主入口方法,负责从实体类对象生成对应的 VO 对象。:递归处理实体类字段,并生成目标类对象。字段值设置方法:负责将计算后的字段值设置到目标VO对象中。原创 2025-02-13 20:05:55 · 778 阅读 · 0 评论 -
ThreadLocal -- 学习记录
叫做线程变量,意思是中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。是 Java 中的一种机制,用于提供线程安全的局部变量。它为每个线程维护一个独立的变量副本,从而避免了多个线程之间的共享和竞争问题。简而言之,可以使得每个线程在访问该变量时都获得自己的副本,而不是共享同一个对象或数据。数据隔离演示:由下面代码可看出,数据互不影响。i < 5;i ++) {原创 2025-02-06 09:33:53 · 776 阅读 · 0 评论 -
学习笔记 -- Nginx(持续更新中)
Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAPPOP3SMTP服务。它是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。原创 2025-01-16 14:22:37 · 830 阅读 · 0 评论 -
modbus -- java中Modbus4J功能码对应方法记录
不同的功能码用于不同的操作,例如读取保持寄存器、写入单个寄存器等。描述:写入多个保持寄存器的值。可以通过 WriteMultipleRegistersRequest 类进行请求。描述:读取保持寄存器的内容。可以通过 ReadMultipleRegistersRequest 类进行请求。描述:读取输入寄存器的内容。可以通过 ReadInputRegistersRequest 类进行请求。描述:写入多个线圈的状态。描述:写入单个保持寄存器的值。描述:写入单个线圈的状态。描述:读取线圈的状态。原创 2025-01-16 14:20:40 · 360 阅读 · 0 评论 -
spring boot -- Transactional事务的相关
Spring的事务代理通常是通过Java动态代理或CGLIB动态代理生成的,这些代理要求目标方法是公开可访问的(public)。私有方法无法被代理,因此事务将无效。spring事务的源码,事务底层使用了aop,也就是通过jdk动态代理或者cglib,生成了代理类,在代理类中实现的事务功能。事务管理是基于动态代理对象的代理逻辑实现的,那么如果在类内部调用类内部的事务方法,这个调用事务方法的过程并不是通过代理对象来调用的,而是直接通过this对象来调用方法,绕过的代理对象,肯定就是没有代理逻辑了。原创 2024-04-29 17:54:52 · 411 阅读 · 0 评论 -
学习笔记 -- MybatisPlus
mybatisplus的学习笔记原创 2024-04-14 19:31:36 · 1365 阅读 · 0 评论 -
java-Swing的简单使用 -- 学生信息管理系统
简单介绍swing的使用原创 2023-09-13 15:49:01 · 522 阅读 · 0 评论 -
python爬虫--获取图库的图片
因为是动态加载,故用模拟浏览器获取,edge浏览器。原创 2022-11-15 21:26:42 · 76 阅读 · 0 评论 -
docker -- 学习笔记
是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。官网bridge:为每一个容器分配、设置IP等,并将容器连接到一个docker0,虛拟网桥,默认为该模式。使用指定(默认使用dicker0)。host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。使用指定。none:容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,IP等。使用指定。container。原创 2023-09-10 21:04:53 · 462 阅读 · 0 评论 -
为什么Redis集群的最大的槽数是16384(2^14 - 1)
Redis集群并没有使用一致性Hash而是引入了哈希槽的概念。Redis集群有16384个哈希槽,每个Key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分Hash槽。CRC16算法产生的哈希值有16bit,该算法可以产生2=65536个值。为什么不对65536取模。原创 2023-08-30 16:32:43 · 215 阅读 · 0 评论 -
springboot -- 微服务 - 6.Nacos配置管理
-nacos配置管理依赖--> < dependency > < groupId > com.alibaba.cloud < artifactId > spring-cloud-starter-alibaba-nacos-config原创 2023-07-14 17:13:01 · 1113 阅读 · 0 评论 -
springboot -- 微服务 - 5.Nacos注册中心
NacosRule优先访问同集群内的东西,本地集群找不到提供者,才去其它集群寻找,井且会报警告,确定了可用实例列表后,再采用随机负载均衡挑选。Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。原创 2023-07-13 19:38:39 · 699 阅读 · 0 评论 -
springboot -- 微服务 - 4.Ribbon负载均衡
默认实现是ZoneAvoidanceRule负载均衡策略详解RetryRule:重试机制的选择逻辑。ZoneAvoidanceRule:默认不配置区域的话,相当于轮询调度。原创 2023-07-13 10:49:54 · 364 阅读 · 0 评论 -
springboot -- 微服务 - 3.Eureka注册中心
Instances currently registered with Eureka 最重要,指的是注册到的实例。服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡。在项目的启动类中的RestTemplate添加负载均衡注解。修改代码,修改访问的url路径,用服务名代替ip、端口。启动之后点击端口自动跳转浏览器的管理界面。原创 2023-07-12 17:37:46 · 696 阅读 · 0 评论 -
springboot -- 微服务 - 1.微服务简介
将业务的所有功能集中在一个项目中开发,部署为一个节点。优点:架构简单,部署成本低。适用于小型的项目。缺点:耦合度高。原创 2023-07-12 10:07:17 · 497 阅读 · 0 评论 -
rabbitmq学习 --- Mq的基础
RabbitMQ是基于AMQP(Advanced Message Queuing Protocol (高级消息队列协议)),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP规范发布。Publisher 生产者,发布者。Exchange是交换机,用于分发消息,通过Routes路由将消息分发给Queue。Queue是存储消息的Consumer 消费者。原创 2023-06-01 09:30:51 · 613 阅读 · 0 评论 -
Netty初识 -- netty了解
EventLoopGroup:本质上是一个线程池,主要负责接收I/O请求,并分配线程执行处理请求(实际上会创建两个线程池工作)ChannelHandler:针对I/O的数据处理器数据接收后,通过指定的Handler进行处理。ChannelHandlerContext:用来保存ChannelHandler的上下文信息。ChannelPipeline:负责将多个ChannelHandler链接在一起。ServerBootStrap:负责服务端监听,用来监听指定端口。EventLoop:相当于线程池中的线程。原创 2023-05-04 18:16:30 · 99 阅读 · 0 评论 -
Netty初识 -- IO模型的了解
主的Reactor直接收acceptor的请求,acceptor在建立handler包括后续的事情都交给子的Reactor,netty和nginx都是基于这个模型。 (2)每次调用select的时候,都需要把需要监控的文件描述符的集合从用户空间拷贝到内核空间,当文件描述符很多的时候开销会很大。缺点:当连接数大的情况下,线程占用资源将会过大,上下文切换时候开销很大,尤其当服务器网络不好时候,会大幅度降低服务器吞吐量。 (3)每次有活跃的描述符的时候,会遍历所有的文件描述符。原创 2023-05-04 18:15:02 · 150 阅读 · 0 评论 -
python --人工智能专家系统---学生学习情况
前言此实验还不太完整,就是简单地用于交作业。后期有时间会修改具体逻辑。如果有什么错误,请评论指出。代码"""1.信息库2.数据库 (1) 兴趣 (2) 行为 (3) 成绩"""check_init = ['100-80分', '79-60分', '习惯差', '习惯好', '玩游戏', '看书籍', '看漫画', '玩手机', '打篮球', '测数独', '做实验', '敲代码', '在自学', '勤思考']rule = [ [['100-80分'], '学习情况优秀']原创 2022-05-18 11:37:40 · 1243 阅读 · 0 评论 -
python爬虫--扫描服务器端口
一、前言功能:扫描服务器端口是否开放二、代码import socketimport timen = 10000 # 开始扫描的端口n1 = 40000 #结束的端口while n < n1: sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sk.settimeout(3) try: sk.connect(('ip', n)) print("Server port "原创 2022-02-13 15:58:36 · 915 阅读 · 0 评论 -
python爬虫--获取微信投票中所有选手的票数以及其他详情信息
一、前言功能:爬取微信投票所有选手的信息,绘制成表格。需要手动操作:因为需要微信登录,所以每十几分钟需要手动换一下token二、代码import requestsimport jsonfrom xlwt import *headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0", "token": "tWHfLl3/7m原创 2022-02-13 15:56:21 · 1626 阅读 · 3 评论 -
python爬虫--自动填写问卷
一、前言本爬虫功能主要是模拟浏览器操作,自动填写问卷星。需要手动操作:需要自己下载一下Chrome的驱动,在我前面文章爬虫的模拟浏览器登录有网址二、代码import randomimport timefrom selenium import webdriverdef run(): # 防止被浏览器识别为脚本 option = webdriver.ChromeOptions() option.add_experimental_option('excludeSwitc原创 2022-02-13 15:43:05 · 477 阅读 · 0 评论 -
python爬虫 -- 模拟浏览器获取淘宝商品数据
一、介绍本爬虫功能主要是模拟浏览器操作,获取淘宝ajax数据,爬取一些基本的口红销量与价格。附加功能1:将数据绘制成三种图像(饼状图,柱状图,拟合曲线)。附加工能2:将数据导出为文本和表格。需要手动操作1:第一次爬取数据需要扫码登录一下淘宝,之后就不用了.需要手动操作2:需要自己下载一下edge的驱动,在我前面文章爬虫的模拟浏览器登录有网址二、代码import osfrom lxml import etreefrom selenium import webdriverimport t原创 2022-02-13 15:33:37 · 1148 阅读 · 0 评论 -
spring-boot项目创建
选择create New project选择maven,一般不需要模板,如果你熟悉或者有自己经常使用的模板可以选择。相当说填写包名和项目名差不多选择项目路径finish等待构建出一个空项目创建包和application类图片描述Application要放在外层,否则无法扫描子包里的东西。也就是它要在其他包的外层。这样子才可以扫描到。package net.sunofbeaches;import org.springframework.boot.SpringApplicatio原创 2021-09-23 14:00:31 · 174 阅读 · 0 评论 -
java异常 — — 自定义异常
三、自定义异常3.1、概述为什么需要自定义异常类:Java中不同的异常类分别表示看某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等。在上述代码中,发现这些异常都是JDK内部定义好的,但是实际开发中也会出现很多异常,,这些异常很可能在IDK中没有定义过,例如年龄负数问题,考试成绩负数问题什么是自定义异常类:在开发中根据自己业务的异常情况来定义异常类。自定义一个业务逻辑异常:RegisterEx原创 2021-08-31 12:31:24 · 2046 阅读 · 0 评论 -
java异常 — — 异常的处理
二、异常的处理Java异常处理的五个关键字: try、catch、finally、throw、throws2.1、抛出异常throw在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不台法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者。在java中,提供了一个throw关键字,它用来抛出一个指定的异常对象。抛出异常后:① 创建一个异常对象。封装一些提示原创 2021-08-31 12:28:08 · 11306 阅读 · 0 评论 -
java异常 — — 异常简介
一、异常1.1、概念异常,就是不正常的意思。在程序中的意思就是:● 异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误,语法错了编译不通过不会产生字节码文件,根本不能运行。1.2、异常体系异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:Java.lang原创 2021-08-31 12:20:32 · 149 阅读 · 0 评论 -
java— — Debug追踪
Debug追踪使用IDEA的断点调试功能,查看程序的运行过程① 在有效代码行,点击行号右边的空白区域,设置断点,程序执行到断点将停止,我们可以手动来运行程序,(每个方法的第一行, 哪里有bug添加到哪里)② 点击Debug运行模式执行程序:f8 : 逐行执行程序f7 : 进入到方法中shift+f8: 跳出方法f9 : 跳到下一个断点,如果没有下一个断点,那么就结束程序ctrl+f2 : 退出debug模式停止程序Console : 切换到控制台...原创 2021-08-28 08:50:06 · 214 阅读 · 0 评论 -
java集合 — — Map集合
十、Map集合10.1、概述现实生活中,常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一对应的关系,就叫做映射。Java提供了专门的集台类用来存放这种对象关系的对象,即java.util.Map接口。接口Map<K, V>类型参数:K - 此映射所维护的键的类型V - 映射值的类型将键映射到值的对象,一个映射不能包含重复的键:每个键最多只能映时到一个值。Map接口下的集合与collection接口下的集合的对比:● Collecti原创 2021-08-28 08:50:01 · 1604 阅读 · 0 评论 -
java集合 — — Collections
九、Collections9.1、常用方法java.utils.Collections是集合工具类,用来对集合进行操作,部分方法如下:public static <T> boolean addAll(collection<T> C,T... elements);//往集合中添加一些元素。public static void shuffle(List<?> list);//打乱顺序,打乱集合顺序。public static <T> void sort(原创 2021-08-28 08:49:54 · 105 阅读 · 0 评论 -
java集合 — — set集合
八、set集合8.1、概述java.util.set接口和java.util.List 接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比collection接口更加严格了。与List接口不,同的是,set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。Set集合有多个子类,java.util.HashSet、java.uti1.LinkedHashset等。提示:Set集合取出元素的方式可原创 2021-08-28 08:49:48 · 408 阅读 · 0 评论 -
java集合 — — List集合及其子类
六、List集合6.1、概述java.util.list接口继承自collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。List接口特点:● 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。 那么集合中,元素的存储就是按照11、22、33原创 2021-08-28 08:49:35 · 824 阅读 · 0 评论 -
java集合 — — 数据结构
具体请看数据结构笔记五、数据结构5.1、数据结构有什么用?当你用看java里面的容器类很爽的时候,你有没有想过,怎么ArrayList就像一个无限扩充的数组,也好像链表之类的。好用吗?好用,这就是数据结构的用处,只不过你在不知不觉中使用了。现实世界的存储,我们使用的工具和建模。每种数据结构有自己的优点和缺点,想想如果Google的数据用的是数组的存储,我们还能方便地查询到所需要的数据吗?而算法,在这么多的数据中如何做到最快的插入,查找,删除,也是在追求更快。java是面向对象的语言,就好似自动档轿原创 2021-08-28 08:49:28 · 145 阅读 · 0 评论 -
java集合 — — 泛型
三、泛型3.1、泛型概述在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。提示:泛型是数据类型的一部分,我们将类名与泛型合并一起看做数据类型。3.2、泛型的定义和使用我们在集合中会大呈使用到泛型,这里来完整地学习泛型知识。泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数进行传递。3.2.1、定义和使用含有泛型的类定义格式:原创 2021-08-28 08:49:15 · 1081 阅读 · 0 评论 -
java集合 — — lterator迭代器
二、lterator迭代器2.1、Iterator接口在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口。java.util.Iterator.Iterator 接口也是Java集合中的一员,但它与Collection、Map 接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历) Collection中的元素,因此Iterator对象也被称为迭代器。想要遍历Collection集合,那么就要获取该集合迭代器完原创 2021-08-28 08:49:05 · 595 阅读 · 0 评论 -
java集合 — — Collection集合
一、Collection集合1.1、概述集合的作用:● 集合:集合是java中提供的一种容器,可以用来存储多个数据。集合和数组既然都是容器,它们的区别:● 数组的长度是固定的,集合的长度是可变的。● 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。 而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。1.2、集合框架JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此原创 2021-08-27 19:00:13 · 136 阅读 · 0 评论 -
java — — 包装类
五、包装类5.1、概述Java提供了两个类型系统,基本类型\与引用类型\,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:包装类:基本数据类型,使用起来非常方便,但是没有对应的方法来操作这些基本类型的数据可以使用一个类 基本类型的数据装起来,在类中定义一些方法这个类叫做包装类,我们可以使用类中的方法来操作这些基本类型的数据5.2、装箱与拆箱基本类型与对应的包装类对象之间,来回转换的过程称为原创 2021-08-27 18:53:47 · 175 阅读 · 0 评论 -
java — — StringBuilder类
四、StringBuilder类4.1、字符串拼接问题由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。在API中对String类有这样的描述:字符串是常量,它们的值在创建后不能被更改。字符串缓冲区支持可变的字符串。因为String 对象是不可变的,所以可以共享。对比:4.2、构造方法根据StringBuilder的API文档,常用构造方法有2个:public StringBuilder();//构造一个空的StringBuilder容器。原创 2021-08-27 18:47:32 · 289 阅读 · 0 评论 -
java — — System类
三、System类3.1、概述java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文中,常用的方法有:public static long currentTimeMillis();//返回以毫秒为单位的当前时间。public static void arrayCopy(object src,int srcPos, object dest,int destPos,int length);//将数组中指定的数据拷贝到另一个数组中。原创 2021-08-27 18:42:19 · 214 阅读 · 0 评论