学习笔记
文章平均质量分 64
一些平常的学习笔记
墨_风
一个菜鸡码农分享一些学习中的笔记或者问题的解决方法,如有错误,还请评论指正。
展开
-
spring boot -- Transactional事务的相关
Spring的事务代理通常是通过Java动态代理或CGLIB动态代理生成的,这些代理要求目标方法是公开可访问的(public)。私有方法无法被代理,因此事务将无效。spring事务的源码,事务底层使用了aop,也就是通过jdk动态代理或者cglib,生成了代理类,在代理类中实现的事务功能。事务管理是基于动态代理对象的代理逻辑实现的,那么如果在类内部调用类内部的事务方法,这个调用事务方法的过程并不是通过代理对象来调用的,而是直接通过this对象来调用方法,绕过的代理对象,肯定就是没有代理逻辑了。原创 2024-04-29 17:54:52 · 391 阅读 · 0 评论 -
学习笔记 -- MybatisPlus
mybatisplus的学习笔记原创 2024-04-14 19:31:36 · 1088 阅读 · 0 评论 -
java-Swing的简单使用 -- 学生信息管理系统
简单介绍swing的使用原创 2023-09-13 15:49:01 · 477 阅读 · 0 评论 -
python爬虫--获取图库的图片
因为是动态加载,故用模拟浏览器获取,edge浏览器。原创 2022-11-15 21:26:42 · 65 阅读 · 0 评论 -
docker -- 学习笔记
是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。官网bridge:为每一个容器分配、设置IP等,并将容器连接到一个docker0,虛拟网桥,默认为该模式。使用指定(默认使用dicker0)。host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。使用指定。none:容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,IP等。使用指定。container。原创 2023-09-10 21:04:53 · 351 阅读 · 1 评论 -
为什么Redis集群的最大的槽数是16384(2^14 - 1)
Redis集群并没有使用一致性Hash而是引入了哈希槽的概念。Redis集群有16384个哈希槽,每个Key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分Hash槽。CRC16算法产生的哈希值有16bit,该算法可以产生2=65536个值。为什么不对65536取模。原创 2023-08-30 16:32:43 · 174 阅读 · 0 评论 -
springboot -- 微服务 - 6.Nacos配置管理
-nacos配置管理依赖--> < dependency > < groupId > com.alibaba.cloud < artifactId > spring-cloud-starter-alibaba-nacos-config原创 2023-07-14 17:13:01 · 1060 阅读 · 0 评论 -
springboot -- 微服务 - 5.Nacos注册中心
NacosRule优先访问同集群内的东西,本地集群找不到提供者,才去其它集群寻找,井且会报警告,确定了可用实例列表后,再采用随机负载均衡挑选。Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。原创 2023-07-13 19:38:39 · 652 阅读 · 0 评论 -
springboot -- 微服务 - 4.Ribbon负载均衡
默认实现是ZoneAvoidanceRule负载均衡策略详解RetryRule:重试机制的选择逻辑。ZoneAvoidanceRule:默认不配置区域的话,相当于轮询调度。原创 2023-07-13 10:49:54 · 321 阅读 · 0 评论 -
springboot -- 微服务 - 3.Eureka注册中心
Instances currently registered with Eureka 最重要,指的是注册到的实例。服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡。在项目的启动类中的RestTemplate添加负载均衡注解。修改代码,修改访问的url路径,用服务名代替ip、端口。启动之后点击端口自动跳转浏览器的管理界面。原创 2023-07-12 17:37:46 · 666 阅读 · 0 评论 -
springboot -- 微服务 - 1.微服务简介
将业务的所有功能集中在一个项目中开发,部署为一个节点。优点:架构简单,部署成本低。适用于小型的项目。缺点:耦合度高。原创 2023-07-12 10:07:17 · 426 阅读 · 0 评论 -
rabbitmq学习 --- Mq的基础
RabbitMQ是基于AMQP(Advanced Message Queuing Protocol (高级消息队列协议)),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP规范发布。Publisher 生产者,发布者。Exchange是交换机,用于分发消息,通过Routes路由将消息分发给Queue。Queue是存储消息的Consumer 消费者。原创 2023-06-01 09:30:51 · 576 阅读 · 0 评论 -
Netty初识 -- netty了解
EventLoopGroup:本质上是一个线程池,主要负责接收I/O请求,并分配线程执行处理请求(实际上会创建两个线程池工作)ChannelHandler:针对I/O的数据处理器数据接收后,通过指定的Handler进行处理。ChannelHandlerContext:用来保存ChannelHandler的上下文信息。ChannelPipeline:负责将多个ChannelHandler链接在一起。ServerBootStrap:负责服务端监听,用来监听指定端口。EventLoop:相当于线程池中的线程。原创 2023-05-04 18:16:30 · 83 阅读 · 0 评论 -
Netty初识 -- IO模型的了解
主的Reactor直接收acceptor的请求,acceptor在建立handler包括后续的事情都交给子的Reactor,netty和nginx都是基于这个模型。 (2)每次调用select的时候,都需要把需要监控的文件描述符的集合从用户空间拷贝到内核空间,当文件描述符很多的时候开销会很大。缺点:当连接数大的情况下,线程占用资源将会过大,上下文切换时候开销很大,尤其当服务器网络不好时候,会大幅度降低服务器吞吐量。 (3)每次有活跃的描述符的时候,会遍历所有的文件描述符。原创 2023-05-04 18:15:02 · 120 阅读 · 0 评论 -
python --人工智能专家系统---学生学习情况
前言此实验还不太完整,就是简单地用于交作业。后期有时间会修改具体逻辑。如果有什么错误,请评论指出。代码"""1.信息库2.数据库 (1) 兴趣 (2) 行为 (3) 成绩"""check_init = ['100-80分', '79-60分', '习惯差', '习惯好', '玩游戏', '看书籍', '看漫画', '玩手机', '打篮球', '测数独', '做实验', '敲代码', '在自学', '勤思考']rule = [ [['100-80分'], '学习情况优秀']原创 2022-05-18 11:37:40 · 1207 阅读 · 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 · 885 阅读 · 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 · 1450 阅读 · 3 评论 -
python爬虫--自动填写问卷
一、前言本爬虫功能主要是模拟浏览器操作,自动填写问卷星。需要手动操作:需要自己下载一下Chrome的驱动,在我前面文章爬虫的模拟浏览器登录有网址二、代码import randomimport timefrom selenium import webdriverdef run(): # 防止被浏览器识别为脚本 option = webdriver.ChromeOptions() option.add_experimental_option('excludeSwitc原创 2022-02-13 15:43:05 · 348 阅读 · 0 评论 -
python爬虫 -- 模拟浏览器获取淘宝商品数据
一、介绍本爬虫功能主要是模拟浏览器操作,获取淘宝ajax数据,爬取一些基本的口红销量与价格。附加功能1:将数据绘制成三种图像(饼状图,柱状图,拟合曲线)。附加工能2:将数据导出为文本和表格。需要手动操作1:第一次爬取数据需要扫码登录一下淘宝,之后就不用了.需要手动操作2:需要自己下载一下edge的驱动,在我前面文章爬虫的模拟浏览器登录有网址二、代码import osfrom lxml import etreefrom selenium import webdriverimport t原创 2022-02-13 15:33:37 · 1068 阅读 · 0 评论 -
spring-boot项目创建
选择create New project选择maven,一般不需要模板,如果你熟悉或者有自己经常使用的模板可以选择。相当说填写包名和项目名差不多选择项目路径finish等待构建出一个空项目创建包和application类图片描述Application要放在外层,否则无法扫描子包里的东西。也就是它要在其他包的外层。这样子才可以扫描到。package net.sunofbeaches;import org.springframework.boot.SpringApplicatio原创 2021-09-23 14:00:31 · 163 阅读 · 0 评论 -
java异常 — — 自定义异常
三、自定义异常3.1、概述为什么需要自定义异常类:Java中不同的异常类分别表示看某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等。在上述代码中,发现这些异常都是JDK内部定义好的,但是实际开发中也会出现很多异常,,这些异常很可能在IDK中没有定义过,例如年龄负数问题,考试成绩负数问题什么是自定义异常类:在开发中根据自己业务的异常情况来定义异常类。自定义一个业务逻辑异常:RegisterEx原创 2021-08-31 12:31:24 · 1996 阅读 · 0 评论 -
java异常 — — 异常的处理
二、异常的处理Java异常处理的五个关键字: try、catch、finally、throw、throws2.1、抛出异常throw在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不台法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者。在java中,提供了一个throw关键字,它用来抛出一个指定的异常对象。抛出异常后:① 创建一个异常对象。封装一些提示原创 2021-08-31 12:28:08 · 11138 阅读 · 0 评论 -
java异常 — — 异常简介
一、异常1.1、概念异常,就是不正常的意思。在程序中的意思就是:● 异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误,语法错了编译不通过不会产生字节码文件,根本不能运行。1.2、异常体系异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:Java.lang原创 2021-08-31 12:20:32 · 139 阅读 · 0 评论 -
java— — Debug追踪
Debug追踪使用IDEA的断点调试功能,查看程序的运行过程① 在有效代码行,点击行号右边的空白区域,设置断点,程序执行到断点将停止,我们可以手动来运行程序,(每个方法的第一行, 哪里有bug添加到哪里)② 点击Debug运行模式执行程序:f8 : 逐行执行程序f7 : 进入到方法中shift+f8: 跳出方法f9 : 跳到下一个断点,如果没有下一个断点,那么就结束程序ctrl+f2 : 退出debug模式停止程序Console : 切换到控制台...原创 2021-08-28 08:50:06 · 189 阅读 · 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 · 1526 阅读 · 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 · 96 阅读 · 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 · 393 阅读 · 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 · 795 阅读 · 0 评论 -
java集合 — — 数据结构
具体请看数据结构笔记五、数据结构5.1、数据结构有什么用?当你用看java里面的容器类很爽的时候,你有没有想过,怎么ArrayList就像一个无限扩充的数组,也好像链表之类的。好用吗?好用,这就是数据结构的用处,只不过你在不知不觉中使用了。现实世界的存储,我们使用的工具和建模。每种数据结构有自己的优点和缺点,想想如果Google的数据用的是数组的存储,我们还能方便地查询到所需要的数据吗?而算法,在这么多的数据中如何做到最快的插入,查找,删除,也是在追求更快。java是面向对象的语言,就好似自动档轿原创 2021-08-28 08:49:28 · 128 阅读 · 0 评论 -
java集合 — — 泛型
三、泛型3.1、泛型概述在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。提示:泛型是数据类型的一部分,我们将类名与泛型合并一起看做数据类型。3.2、泛型的定义和使用我们在集合中会大呈使用到泛型,这里来完整地学习泛型知识。泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数进行传递。3.2.1、定义和使用含有泛型的类定义格式:原创 2021-08-28 08:49:15 · 1037 阅读 · 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 · 556 阅读 · 0 评论 -
java集合 — — Collection集合
一、Collection集合1.1、概述集合的作用:● 集合:集合是java中提供的一种容器,可以用来存储多个数据。集合和数组既然都是容器,它们的区别:● 数组的长度是固定的,集合的长度是可变的。● 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。 而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。1.2、集合框架JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此原创 2021-08-27 19:00:13 · 126 阅读 · 0 评论 -
java — — 包装类
五、包装类5.1、概述Java提供了两个类型系统,基本类型\与引用类型\,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:包装类:基本数据类型,使用起来非常方便,但是没有对应的方法来操作这些基本类型的数据可以使用一个类 基本类型的数据装起来,在类中定义一些方法这个类叫做包装类,我们可以使用类中的方法来操作这些基本类型的数据5.2、装箱与拆箱基本类型与对应的包装类对象之间,来回转换的过程称为原创 2021-08-27 18:53:47 · 160 阅读 · 0 评论 -
java — — StringBuilder类
四、StringBuilder类4.1、字符串拼接问题由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。在API中对String类有这样的描述:字符串是常量,它们的值在创建后不能被更改。字符串缓冲区支持可变的字符串。因为String 对象是不可变的,所以可以共享。对比:4.2、构造方法根据StringBuilder的API文档,常用构造方法有2个:public StringBuilder();//构造一个空的StringBuilder容器。原创 2021-08-27 18:47:32 · 270 阅读 · 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 · 200 阅读 · 0 评论 -
java — — 日期时间类
二、日期时间类2.1、Date类概述:java.util.Date类表示特定的瞬间,精确到亳秒。继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把亳秒值转成日期对象。 ● public Date() :分配Date对象并初始化此对象,以表示分配它的时 间(精确到毫秒)。 ● public Date(long date) :分配Date对象并初始化此对象,以表示 自从标准基准时间(称为“历元( epoch )”,即1970年1月1日原创 2021-08-27 18:38:17 · 503 阅读 · 0 评论 -
java — — Object类详解
一、Object类1.1、概述java. lang .Object类是java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类,那么默认则继承自Object类根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。● public string toString() :返回该对象的字符串表示。● public boolean equals(object obj) :指示其他某个原创 2021-08-27 18:27:11 · 738 阅读 · 0 评论 -
java面向对象基础 — — 多态性
四、多态性4.1、概述面向对象三大特征:封装性、继承性、多态性。extends继承或者implements实现,是多态性的前提。4.2、多态的格式与使用代码当中体现多态性,其实就是一句话: 父类引用指向子类对象。格式:父类名称 对象名 = new 子类名称();或者: 接口名称 对象名 = new 实现类名称();4.2、多态中成员变量的访问特点访问成员变量的两种方式:① 直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找② 间接通过成员方法访原创 2021-08-27 18:19:51 · 328 阅读 · 0 评论 -
java面向对象基础 — — 接口
三、接口3.1、举例与概述生活中的接口举例:接口:就是一种公共的规范标准。只要符合规范标准,就可以大家通用。电脑的接口举例:概述:多个类的公共规范3.2、接口的定义基本格式接口就是多个类的公共规范。接口是一种引用数据类型,最重要的内容就是其中的:抽象方法。定义一个接口的格式:public interface 接口名称 {//内容}备注:换成了关键字interface之后,编译生成的字节码文件仍然是: . java --> .class接口包含内容:如果是原创 2021-08-27 18:08:22 · 124 阅读 · 0 评论 -
java面向对象基础 — — 抽象类
二、抽象类2.1、抽象的概念如果父类当中的方法不确定如何进行{}方法体实现,那么这就应该是一个抽象方法。2.2、抽象方法和抽象类的定义格式抽象方法:就是加上abstract关键字, 然后去掉大括号,直接分号结束。抽象类:抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可。2.3、注意事项① 抽象类不能创建new抽象类对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。理解: 假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方 法体,原创 2021-08-27 17:59:11 · 101 阅读 · 0 评论