自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sudo_Wang的学习记录

Sudo_Wang的学习记录

  • 博客(107)
  • 收藏
  • 关注

原创 如何利用GPT4写论文

我是一个科学研究助理,专门帮助用户通过搜索相关科学论文来回答问题、撰写内容和进行研究。我可以为你找到关于特定话题的研究论文摘要,并从中提取关键信息。无论你有关科学研究的任何问题或需要帮助撰写内容,我都可以提供帮助,并确保引用相关的研究论文。比如,如果你想知道某种药物的效果如何,或者某种技术在特定领域的应用,我可以为你搜索最相关的研究论文并总结它们的发现。我还可以帮助准备学术报告或文章草稿,提供数据分析和总结等。

2024-04-25 09:34:10 652 1

原创 chatgpt Team 4.0共享合租账号的新方式

在逛某论坛的时候,发现了一个共享Team的网站,这个网站提供了已充值的ChatGPT Team 4.0账号进行轮换使用。这种方式不仅提高了4.0的利用效率,还为我节约了成本。而且此服务每月仅需35元,相比单独订阅与跟其他人共享一个账号更为经济。网址 www.soruxgpt.cn。数据先提交给共享网站,再由其转发给GPT官网,答案由共享网站传回;为了更好地满足工作需求,我订阅了GPT PLUS会员,但我发现,4.0每三小时问答40次经常吃灰,而且每月近200元的费用让我感到有点肉痛。

2024-04-12 07:32:06 555

原创 ForkJoinPool、CAS原子操作

ForkJoinPool是由JDK1.7后提供多线程并行执行任务的框架。可以理解为一种特殊的线程池。1.任务分割:Fork(分岔),先把大的任务分割成足够小的子任务,如果子任务比较大的话还要对子任务进行继续分割。2.合并结果:join,分割后的子任务被多个线程执行后,再合并结果,得到最终的完整输出。类似于分治的思想,把大任务一点点拆分为一个个小任务。如果要统计1~100之间的和,当然可以直接暴力for循环,不过也可以把它拆分为10个任务,计算1到10的和,11到20的和…

2024-03-29 20:46:05 1102

原创 ThreadPoolExecutor经典面试题

每个work在runWork()的时候去getTask(),在getTask内部,并没有针对性的区分当前work是否是核心线程或者类似的标记。只要判断works数量超出core,就会调用poll(),否则take()答案:如果队列中没有任务时,核心线程会一直阻塞在获取任务的方法,直到返回任务。即便是第一个被创建的核心线程,仍然有可能被销毁。验证:起一个线程池,放置一个任务sleep,debug查看结束前后的状态。1)线程池是如何保证线程不被销毁的呢?2)那么线程池中的线程会处于什么状态?

2024-03-29 17:22:41 231

原创 线程池详解

设置为20,那么任何时候线程池至少会有10个活跃的线程(如果有任务需要执行),即使有些线程是闲置的。当任务数增加,并且所有的核心线程都在忙时,线程池可以临时创建更多的线程,最多到20个。线程上下文切换是有成本的,因为它需要CPU周期来保存和加载线程的状态信息,并且在切换过程中CPU不做任何实际的工作,只是在两个线程之间传递。举例来说,如果你想要添加一个新线程到线程池时,需要检查当前活动的线程数是否少于配置的最大线程数。节省cpu切换线程的时间成本(需要保持当前执行线程的现场,并恢复要执行线程的现场)。

2024-03-28 23:56:13 838 1

原创 Linux 收发网络包的流程

数据包首先到达网络接口,并被放置在环形缓冲区(Ring Buffer)中。当环形缓冲区接收到数据后,会触发一个软中断(或者在某些情况下是NAPI轮询机制)。ksoftirqd内核线程(或者在高负载时直接由中断上下文)处理这些软中断,从环形缓冲区中取出数据帧。使用sk_buff结构来表示网络包,并进行基本的合法性检查,如CRC检验等,不合法的帧会被丢弃。识别上层协议(如IPv4, IPv6),并移除数据链路层的头(如以太网帧头)。在网络层,包括IP头的网络数据包会被进一步处理。

2024-03-28 12:50:31 1406 2

原创 Keepalive与idle监测及性能优化

两者的主要区别在于它们的目的和实施方式。Keepalive 主要用于确保连接双方知道对方仍然“活着”,并且连接是有效的。而Idle监测则用于确定一个连接在一段时间内是否有活动,以决定是否应该保持或关闭这个连接。Keepalive是通过定期发送控制消息来实现的,而Idle监测是通过观察一段时间内的数据传输活动来实现的。在Linux内核中也有一个keepalive来确认对端的连接状态是否健康。

2024-03-23 20:40:48 942 1

原创 【Netty】TCP粘包、拆包、编解码问题

粘包拆包分析主要探讨固定长度字段存消息长度在这个例子中, 设置了最大行长度为 8192 字节,会剔除换行符,并且在检测到超长行时立即抛出异常。假设有一个基于文本的协议,消息以(换行符)结束。在这个例子中,会查找换行符,将接收的数据分割成单独的行,并将每行作为一个单独的帧传递到管道中的下一个处理器。LengthFieldPrepender从继承关系可以看出来,这是一个可以处理收、发的处理器其他编解码器maven依赖:插件依赖:proto文件可以看到,返回的就是我们在proto文件中

2024-03-23 13:13:23 801 1

原创 Netty中的核心概念

内存分配在jvm堆,分配和回收速度比较快,可以被JVM自动回收,缺点是,如果进行socket的IO读写,需要额外做一次内存复制,将堆内存对应的缓冲区复制到内核Channel中,性能会有一定程度的下降。2,Netty的 Promise接口扩展了Netty的Future接口,它可以设置异步执行的结果并触发Listener,比如在IO操作过程,不管是顺利完成、还是发生异常,都可以设置Promise的结果,并且通知Promise的。1,Netty是基于事件驱动的,比如:连接就绪;

2024-03-18 21:54:29 1019 2

原创 初识Netty网络编程

是一个有序的处理器链容器,每个Channel(在网络编程中,Channel表示连接的抽象)都有自己的管道。管道中的处理器按顺序排列,形成一个链式结构,用于处理或拦截进出Channel的各种事件和数据。当数据从网络流入或流出时,它会经过管道中的每一个处理器。处理器可以修改、过滤、转换数据或者处理特定类型的事件(比如连接建立、读取完成、异常等)。提供了一种灵活的方式来组织和管理这些处理器,允许开发者在运行时动态插入、删除或替换处理器,从而定制不同阶段的数据处理逻辑。

2024-03-17 20:02:48 879

原创 Reactor线程模型

一个线程来处理所有的请求,会导致并发很高,如果其中一个Channel在进行读写数据的时候,数据量很大,会导致处理速度很缓慢,这时候如果有人再次发次连接,速度会很慢。单线程模型的特点:接收连接、IO处理、业务处理均在一个线程中完成。那么可以怎么优化呢?既然问题出在数据的读取上,那能不能把数据的读取放到线程池中进行,这样就不会因为某个Channel的读取导致整个系统的效率降低了。

2024-03-16 20:27:17 920

原创 操作系统IO模型

服务端:Channel(通道)、Buffer(缓冲区)、Selector(选择器/多路复用器)什么是Channelcapacity:缓冲区可以容纳的元素的最大数量limit:停止读写的索引position:当前要读或者写的索引,读写操作是从position开始,到limit停止mark:用于标记position的位置,默认为-1。

2024-03-15 21:17:21 979

原创 RPC通信原理(二)

网络IO其实就是计算机内存和外部设备之间拷贝数据的过程,对于单个进程是无法直接要到网卡的数据的,但是Linux kernel可以,在内核当中会存在一片内核缓冲区,内核会给上层提供一些列的系统接口来刷走这片数据。当可用率过低/失败率过高的时候会对服务进行熔断,熔断的时候会设置一个熔断时间,当超过熔断时间的时候系统会尝试调用一下这个服务,如果调用成功了,就可以结束熔断,反之继续熔断。限流的作用是用来限制其请求的速率,保护后台相应服务,以免服务过载导致服务不可用的现象出现。那么熔断工作什么时候开始的呢?

2024-03-13 15:54:35 1020

原创 RPC通信原理(一)

如果现在我有一个电商项目,用户要查询订单,自然而然是通过Service接口来调用订单的实现类。我们把用户模块和订单模块都放在一起,打包成一个war包,然后再tomcat上运行,tomcat占有一个进程,这个项目也是在这个进程中运行的,模块之间的调用也是在进程的本地进行调用,那么如果我是一个分布式项目该怎么解决呢?现在用户和订单模块部署在两台服务器上,这时候用户模块就不能直接调用订单模块了,只能够通过网络来进行调用,而RPC就是用来干这个事情的,。需要远程通信的各类场景。

2024-03-12 16:33:21 1002

原创 Redis的散列插槽及故障转移

利用cluster failover命令可以手动让集群中的某个master宕机,切换到执行cluster failover命令的这个slave节点,实现无感知的数据迁移。如图,在7001这个节点执行set a 1时,对a做hash运算,对16384取余,得到的结果是15495,因此要存储到103节点。类似于一个哈希散列表,通过哈希算法来映射插槽,并为redis节点分配插槽区间,插槽的所有范围是0~16383。时,对num做hash运算,对16384取余,得到的结果是2765,因此需要切换到7001节点。

2024-03-06 19:11:24 1029

原创 Redis集群搭建

要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。mymaster2。

2024-03-06 18:12:23 484

原创 【HTML】day01

dl嵌套dt和dd,dl是定义列表,dt是定义列表的标题,dd是定义列表的描述/详情。

2024-03-05 21:03:15 943

原创 redis主从架构

单节点Redis的并发能力是有上限的,要进一步提高redis的并发能力,就需要搭建主从集群,实现读写分离。修改每个实例的声明IP。

2024-03-05 19:15:32 932

原创 Redis持久化

RDB全称Redis Database Backup file(Redis数据备份文件),就是把内存中所有的数据都记录到磁盘当中。如果Redis实例出现故障重启之后,从磁盘快照读取文件,恢复数据。快照文件默认是保存在当前运行目录的。Redis默认是有保存机制的,不过是在退出之前进行保存:那么如果是突然宕机呢?如果我使用kill -9来杀掉这个进程,就不会进行保存了,那么这种情况要怎么解决?

2024-03-05 16:39:40 458

原创 安装Docker及DockerCompose

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为stabletest和nightly三个更新频道。官方网站上有各种环境下的,这里主要介绍 Docker CE 在 CentOS上的安装。

2024-03-03 20:16:03 1265

原创 RabbitMQ部署指南

我们在Centos7虚拟机中使用Docker来安装。

2024-03-03 15:02:42 455

原创 ES小总结

准备request准备DSL利用client来发送请求解析client的返回值。

2024-02-26 23:40:02 522

原创 【elasticsearch】搜索结果处理

elasticsearch支持对搜索结果排序,默认是根据相关度算分(_score)来排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。全文检索的match和multi_match查询与match_all的API基本一致。差别是查询条件,也就是query部分。ES是分布式的,所以会面临深度分页问题。而如果要查询更多的数据就需要修改分页参数了。elasticsearch中通过修改from、size参数来控制要返回的分页结果。高亮:就是在搜索结果中把搜索关键字突出显示。

2024-02-25 22:57:21 377

原创 DSL Query基本语法

在brand、name、business中包括【外滩、如家、外滩如家】的都会被查询到。

2024-02-23 22:15:43 506

原创 【Java】RestClient的使用

先导入Maven坐标,要和elasticsearch和kibana的版本保持一致

2024-02-23 19:47:40 541

原创 【笔记】常用方法

/更新操作UPDATE,//插入操作INSERT@Target(ElementType.METHOD) //注解只能加在方法上@Retention(RetentionPolicy.RUNTIME) //注解在运行期间起作用//数据库操作类型:update insert@Aspect@Component@Slf4j//切入点//锁定com.sky.mapper包下的所有类的所有方法,并且标注了AutoFill这个注解的方法就会被拦截进行填充处理//通知//获取调用函数签名。

2024-02-16 20:07:29 449

原创 【Java】苍穹外卖 Day02

ThreadLocal 并不是一个Thread,而是Thread的局部变量。ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。

2024-02-09 13:56:20 977

原创 【Java】苍穹外卖 Day01

作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程, 以及软件开发过程中涉及到的岗位角色,角色的分工、职责, 并了解软件开发中涉及到的三种软件环境。那么这一小节,我们将从 软件开发流程、角色分工、软件环境 三个方面整体介绍一下软件开发。在开发苍穹外卖这个项目之前,我们需要全方位的来介绍一下当前我们学习的这个项目。接下来,我们将从项目简介、产品原型、技术选型三个方面来介绍苍穹外卖这个项目。

2024-02-09 00:27:24 865

原创 【Java】Redis入门

Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。**官网:**https://redis.io**中文网:**https://www.redis.net.cn/key-value结构存储:基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。

2024-02-04 18:01:48 1195

原创 【Java】MybatisPlus入门

MyBatisPlus环境搭建的步骤?@Mapper通过入门案例制作,MyBatisPlus的优点有哪些?MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率https有什么简单的办法可以自动生成实体类的GET、SET方法?

2024-02-03 00:19:34 1649

原创 【Java】Maven配置加载到全局

Maven配置加载到全局。

2024-01-31 20:22:50 431

原创 【Java】Springboot入门

SpringMVC的HelloWord程序大家还记得吗?SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程原生开发SpringMVC程序过程学习了SpringBoot入门案例之后,感觉对比SpringMVC哪一个更加方便简洁?SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程Spring程序缺点配置繁琐依赖设置繁琐SpringBoot程序优点自动配置。

2024-01-31 17:52:44 1004

原创 【Java】Maven进阶

-定义自定义属性--> < properties > < spring.version > 5.2.10.RELEASE < junit.version > 4.12

2024-01-30 20:48:57 704

原创 【Java】SSM入门开发流程总结

对于Mybatis需要配置MybatisConfig、JdbConfig以及引入Jdbc.properties数据库配置文件。常用的注解:@RestControllerAdvice、@ExceptionHandler。@RestControllerAdvice:用于标识当前类为REST风格对应的异常处理器。SpringMVC需要配置SpringMVCConfig、ServletConfig。@ExceptionHandler:标识用于处理哪种异常。

2024-01-30 00:20:35 487 1

原创 【Java】SSM整合

/描述统一格式中的数据//描述统一格式中的编码,用于区分操作,可以简化配置0或1表示成功失败//描述统一格式中的消息,可选属性//同学们自己添加getter、setter、toString()方法Result类中的字段并不是固定的,可以根据需要自行增减程序开发过程中不可避免的会遇到异常现象,我们不能让用户看到这样的页面数据出现异常现象的常见位置与常见诱因如下:框架内部抛出的异常:因使用不合规导致数据层抛出的异常:因外部服务器故障导致(例如:服务器访问超时)

2024-01-29 21:14:51 1143

原创 【Java】初识Spring Mvc

今日内容看到SpringMVC这个名字我们会发现其中包含Spring,那么SpringMVC和Spring之间的会有关系么?答案是肯定有,SpringMVC隶属于Spring,是Spring技术中的一部分。那么SpringMVC到底是用来做什么的呢?那么既然已经有了Servlet为什么还需要花时间再学习一个SpringMVC技术?要回答这个问题,我们就需要搞清楚SpringMVC与Servlet相比,有什么优势:框架我们都知道是用来简化开发的,所以SpringMVC与Servlet相比,开发起来更简单快捷,

2024-01-28 22:38:45 1197

原创 【Java】Spring的AOP及事务

问题1:AOP的作用是什么?问题2:连接点和切入点有什么区别,二者谁的范围大?问题3:请描述什么是切面?AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构OOP(Object Oriented Programming)面向对象编程作用:在不惊动原始设计的基础上为其进行功能增强。简单的说就是在不改变方法源代码的基础上对方法进行功能增强。Spring理念:无入侵式/无侵入式。

2024-01-28 19:30:42 932

原创 【Java】Spring入门

我们为什么要学习Spring框架?生命周期:从创建到消亡的完整过程bean生命周期:bean从创建到销毁的整体过程bean生命周期控制:在bean创建后到销毁前做一些事情。

2024-01-28 15:04:16 877

原创 【Java】Spring注解开发

目的:xml配置Bean对象有些繁琐,使用注解简化Bean对象的定义Spring3.0开启了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道Java类代替Spring核心配置文件@Configuration注解用于设定当前类为配置类@ComponentScan注解用于设定扫描路径,此注解只能添加一次,多个数据请用数组格式读取Spring核心配置文件初始化容器对象切换为读取Java配置类初始化容器对象//加载配置文件初始化容器//加载配置类初始化容器。

2024-01-27 23:32:59 1044

原创 【Java】Maven的基本使用

Maven的基本使用。

2024-01-21 22:37:34 1303

空空如也

空空如也

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

TA关注的人

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