<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_65277261的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_65277261</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_65277261]]></copyright><item><title><![CDATA[【NIO基础】基于 NIO 中的组件实现对文件的操作（文件编程），FileChannel 详解]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/142704570</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/142704570</guid><author>m0_65277261</author><pubDate>Fri, 04 Oct 2024 20:48:10 +0800</pubDate><description><![CDATA[应用程序在获取到数据后，再将数据传回给另一个文件的内核缓冲区，即从用户空间的缓冲区拷贝回内核缓冲区，这里再次发生一次拷贝。之所以高效，是因为它通过操作系统的低层 API 直接进行文件的传输，避免了从用户空间到内核空间的多次数据拷贝（零拷贝）。对于小文件，上面那样的传输是没有问题的。]]></description><category></category></item><item><title><![CDATA[【NIO基础】NIO（非阻塞 I/O）和 IO（传统 I/O）的区别，以及 NIO 的三大组件详解]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/142662308</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/142662308</guid><author>m0_65277261</author><pubDate>Thu, 03 Oct 2024 15:04:14 +0800</pubDate><description><![CDATA[1、NIO是的缩写，意思就是“新型输入输出”，它是在 Java 1.4 版本里加进来的，中文可以叫“新 I/O”“非阻塞 I/O”。NIO 其实就是对传统的阻塞 IO 做了个加强版，专门为了解决以前处理大量数据或者很多并发连接时性能不够好的问题。NIO 的牛掰之处在于，它提供了：你可以发起 IO 操作而不用等着它完成，干别的事也行。：一个线程能管理好多个连接，不需要每个连接都分配一个线程。：NIO 用缓冲区来存数据，读写的时候可以灵活处理，不用一次性读完或写完。NIO 主要有三个。]]></description><category></category></item><item><title><![CDATA[【Redis】Redis中的 AOF（Append Only File）持久化机制]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/142661193</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/142661193</guid><author>m0_65277261</author><pubDate>Tue, 01 Oct 2024 18:48:44 +0800</pubDate><description><![CDATA[想象一下，Redis 每次执行写操作的时候，都把这些操作以追加的方式写入一个文件中，然后当你重启 Redis 时，Redis 会从这个文件里读取命令并重新执行，这样就相当于恢复了缓存的数据。AOF 重写机制是在重写时，读取当前数据库中的所有键值对，然后将每一个键值对用一条命令记录到「新的 AOF 文件」，等到全部记录完后，就将新的 AOF 文件替换掉现有的 AOF 文件。，把相应的参数打开。默认值是 64 MB。：写日志的操作是在主进程完成的，如果硬盘压力大，写日志的速度变慢，就可能阻塞后续的命令执行。]]></description><category></category></item><item><title><![CDATA[【MySQL】常见的SQL优化方式（二）]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/142610165</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/142610165</guid><author>m0_65277261</author><pubDate>Sun, 29 Sep 2024 16:59:28 +0800</pubDate><description><![CDATA[在 InnoDB 存储引擎中，行锁是针对索引加的锁，而不是针对记录加的锁。命令查看执行计划，它会告诉我们查询是如何被执行的，是否用到了索引，是否有全表扫描等信息。此时，由于无法加行锁，行锁将会升级为表锁，整个。不取具体的字段值，InnoDB 做了优化，直接按行数累加，效率是最高的。，意思是如果我们用多个字段来分组，数据库只会使用最左边的字段上的索引来加速操作。InnoDB 会遍历整张表，取出每一行的主键，然后返回给服务层，服务层按行累加。中使用的字段是有索引的，并且顺序和索引的定义一致，就能提升查询效率。]]></description><category></category></item><item><title><![CDATA[【MySQL】常见的SQL优化方式（一）]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/142376280</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/142376280</guid><author>m0_65277261</author><pubDate>Fri, 27 Sep 2024 12:49:06 +0800</pubDate><description><![CDATA[因为对于一张表来说，主键（聚集）索引只有一个，但是二级索引可以有多个，在二级索引的叶子节点中存放的就是数据的主键，所以说如果主键比较长，二级索引比较多，那么会占用大量的磁盘空间，而且在搜索时也会耗费大量的磁盘IO，所以要尽量降低主键的长度。最外层是表空间（Tablespace），表空间中存储的是一个一个段（Segment），段当中存放的是一个一个区（Extent），一个区的大小是固定的1M，在区当中存放的是一个一个的页（Page），页当中存放的是一个一个的行（Row），行当中就是存放着具体的字段值。]]></description><category></category></item><item><title><![CDATA[【内容审核】对审核结果进行封装]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/141310760</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/141310760</guid><author>m0_65277261</author><pubDate>Thu, 05 Sep 2024 21:19:12 +0800</pubDate><description><![CDATA[中实现了文本、图片和视频的审核功能，但是这些功能灵活性不够，既不能自己设置审核的强度，也不能内容违规的详细信息，所以可以在原来代码的基础上对这些功能进行一个改造。要自定义这些返回结果的封装类，那就需要先分析这些返回结果的格式。的返回结果中，视频的返回结果是最复杂的，但是这三种返回结果中有许多属性是一样的，现在我们就开始来。字段下的"details"、"offset"和"suggestion"字段，字段在三种返回示例中不一样，在文本审核结果中的。再进一步分析，我们分析。字段，而在视频和图片审核结果中的。]]></description><category></category></item><item><title><![CDATA[【内容审核】Java实现七牛云内容审核功能，文本、图片和视频的内容审核（鉴黄、鉴暴恐、敏感人物）]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/140902624</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/140902624</guid><author>m0_65277261</author><pubDate>Tue, 13 Aug 2024 20:45:16 +0800</pubDate><description><![CDATA[七牛云的内容审核服务是一套综合性的解决方案，旨在帮助用户在不同的应用场景中实现对多媒体内容的智能审核和管理。无论是在社交平台、直播、短视频、在线社区，还是在电商、教育等领域，七牛云的审核服务都能提供全面的支持，确保用户上传、存储、分发或展示的内容符合合规要求。]]></description><category></category></item><item><title><![CDATA[【Spring】RestTemplete工具类]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/140543400</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/140543400</guid><author>m0_65277261</author><pubDate>Fri, 19 Jul 2024 11:46:44 +0800</pubDate><description><![CDATA[​
RestTemplate 是 Spring 框架中的一个工具类，它用于简化客户端与HTTP服务之间的通信。RestTemplate 封装了底层的HTTP连接细节，为开发者提供了高级别的抽象，使得调用 RESTful服务（RESTful到底是什么？）变得简单和直观。]]></description><category></category></item><item><title><![CDATA[【Spring】Spring AOP底层原理：JDK动态代理和CGLIB动态代理]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/139243897</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/139243897</guid><author>m0_65277261</author><pubDate>Mon, 27 May 2024 18:56:24 +0800</pubDate><description><![CDATA[Spring AOP 的实现原理是基于动态代理和字节码操作的。而动态代理是基于反射机制的。

在编译时， Spring 会使用 AspectJ 编译器将切面代码编译成字节码文件。在运行时， Spring 会使用 Java 动态代理或 CGLIB 代理生成代理类，这些代理类会在目标对象方法执行前后插入切面代码，从而实现AOP的功能。]]></description><category></category></item><item><title><![CDATA[【Spring】Spring AOP底层原理前置知识：代理模式中的静态代理]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/139106845</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/139106845</guid><author>m0_65277261</author><pubDate>Wed, 22 May 2024 09:05:45 +0800</pubDate><description><![CDATA[Spring AOP的底层原理：一开始Spring会创建IOC容器，然后会把所有的Bean进行创建和进行依赖注入，就是spring(new 类名())。当实现了AOP的话，spring会根据当前的bean动态的创建代理对象，就比如我当前有一个UserService类，这个类实现了AOP，然后spring为UserService类动态创建代理对象并且把这个代理对象配置成bean替换掉UserService类的bean，所以这时候从IOC容器中去拿到的UserService类的bean实际上是Spring为Us]]></description><category></category></item><item><title><![CDATA[【Spring】AOP中的核心概念：通知(Advice)和切点(Pointcut)]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/138890487</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/138890487</guid><author>m0_65277261</author><pubDate>Wed, 15 May 2024 09:41:25 +0800</pubDate><description><![CDATA[通知(Advice)：在切面的某个特定的连接点上执行的动作。通知有多种类型，包括“around”，“before” 和“after”等等。通知的类型将在后面详细了解。许多AOP框架，包括Spring在内，都是以拦截器做通知模型的，并维护着一个以连接点为中心的拦截器链。

用来放增强的代码的那个方法

环绕通知@Around：可以把代码增强在目标方法的任意地方，更通用
前置通知@Before：目标方法之前执行
后置通知@After：目标方法之后执行
异常通知@AfterThrowing：目标方法出现了异常执行]]></description><category></category></item><item><title><![CDATA[【Spring】初识 Spring AOP（面向切面编程）]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/138724937</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/138724937</guid><author>m0_65277261</author><pubDate>Sat, 11 May 2024 18:22:15 +0800</pubDate><description><![CDATA[目标对象(Target)：目标对象指将要被增强（比如增强功能）的对象，或者说被一个或多个切面所通知的对象，即包含主业务逻辑的类的对象，即为目标对象。

可以说要增强的对象(通常会有很多个)就是目标对象



切面(Aspect)：指关注点模块化，这个关注点可能会横切多个对象。事务管理是企业级Java应用中有关横切关注点的例子。 在Spring AOP中，切面可以使用通用类基于模式的方式(schema-basedapproach)或者在普通类中以@Aspect注解(@Aspect注解方式)来实现。

可以说增]]></description><category></category></item><item><title><![CDATA[【Spring】Bean的生命周期回调函数和Bean的循环依赖]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/138503989</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/138503989</guid><author>m0_65277261</author><pubDate>Tue, 07 May 2024 14:55:37 +0800</pubDate><description><![CDATA[spring的bean的生命周期主要是创建bean的过程，一个bean的生命周期主要是4个步骤：实例化，属性注入，初始化，销毁



再详细一点可以拆分为：

（1）配置bean，通过@Component @Bean等方式都可以。

（2）加载Spring容器

（3）实例化，例如：(BeanService beanService = new BeanService())

（4）解析依赖注入(解析@Autowired @Value等自动注入注解)

（5）初始化(调用初始化回调方法，由程序员来配置)]]></description><category></category></item><item><title><![CDATA[【Spring】IOC/DI中常用的注解@Lazy、@Scope与@Conditional]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/138277932</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/138277932</guid><author>m0_65277261</author><pubDate>Sun, 28 Apr 2024 15:17:36 +0800</pubDate><description><![CDATA[在实际开发场景中，并不是所有bean都要一开始就被创建的，有些可以等到使用时才创建。此时就可以使用该注解实现。此注解只对单例bean有用，原型bean时此注解不起作用。

原型bean是在每次请求时都会创建一个新的实例，而不像单例bean那样只有一个实例。因此，使用@Lazy注解对原型bean没有实际意义，因为即使不使用该注解，每次请求都会创建一个新的实例。所以，@Lazy注解只对那些在容器初始化时就被创建的单例bean有用。]]></description><category></category></item><item><title><![CDATA[【Spring】IOC/DI中常用的注解@Order与@DependsOn]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/138167160</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/138167160</guid><author>m0_65277261</author><pubDate>Wed, 24 Apr 2024 19:26:09 +0800</pubDate><description><![CDATA[注解@Order或者接口Ordered的作用是定义Spring IOC容器中Bean的执行顺序的优先级，而不是定义Bean的加载顺序，Bean的加载顺序不受@Order或Ordered接口的影响。所以这里说改变Bean的自动注入的顺序就是改变Bean的执行顺序。]]></description><category></category></item><item><title><![CDATA[【Java网络编程】TCP通信（Socket 与 ServerSocket）和UDP通信的三种数据传输方式]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/137926277</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/137926277</guid><author>m0_65277261</author><pubDate>Mon, 22 Apr 2024 19:08:57 +0800</pubDate><description><![CDATA[TCP通信协议是一种可靠的网络协议，它在通信的两端各建立一个Socket对象

通信之前要保证连接已经建立（注意TCP是一定要建立连接的）

TCP是通过Socket产生I0流来进行网络通信的，所以发送端和接收端的两个流的方向是不一样的，比如客户端和服务器进行通信（通信前要确保建立了连接），然后客户端向服务器发送了“你好帅”，这一次发送数据的过程，它们流的方向是不一样的，针对客户端来说，它是往外发所以用的是输出流，而针对服务器来说，它是接收数据所以用的是输入流。]]></description><category></category></item><item><title><![CDATA[【Java网络编程】网络编程概述、UDP通信（DatagramPacket 与 DatagramSocket）]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/137928825</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/137928825</guid><author>m0_65277261</author><pubDate>Thu, 18 Apr 2024 17:15:30 +0800</pubDate><description><![CDATA[计算机网络中，连接和通信的规则被称为网络通信协议

OSI参考模型：世界互联协议标准，全球通信规范，单模型过于理想化，未能在因特网上进行广泛推广

TCP/IP参考模型(或TCP/IP协议)：事实上的国际标准。]]></description><category></category></item><item><title><![CDATA[【Spring】依赖注入(DI)时常用的注解@Autowired和@Value]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/137784706</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/137784706</guid><author>m0_65277261</author><pubDate>Mon, 15 Apr 2024 16:36:01 +0800</pubDate><description><![CDATA[如果是非SpringBoot配置文件，需要额外通过@PropertySource去指定属性文件的类路径，如果是SpringBoot配置文件(application.properties)，就无需额外配置@PropertySource。]]></description><category></category></item><item><title><![CDATA[【Java多线程】线程池 ThreadPoolExecutor类和Executors工厂类以及线程池的最优大小]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/137673188</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/137673188</guid><author>m0_65277261</author><pubDate>Fri, 12 Apr 2024 11:34:06 +0800</pubDate><description><![CDATA[主要核心原理

创建一个线程池子，池子中是空的
提交任务时，线程池子会创建新的线程对象，任务执行完毕，线程归还给池子下回再次提交任务时，不需要创建新的线程，直接复用已有的线程即可
但是如果提交任务时，池子中没有空闲线程，也无法创建新的线程，任务就会排队等待]]></description><category></category></item><item><title><![CDATA[系统开发实训小组作业week7————项目问题改进计划与实践]]></title><link>https://blog.youkuaiyun.com/m0_65277261/article/details/137671134</link><guid>https://blog.youkuaiyun.com/m0_65277261/article/details/137671134</guid><author>m0_65277261</author><pubDate>Fri, 12 Apr 2024 10:18:13 +0800</pubDate><description><![CDATA[对于在项目中表现出色的成员，我们将在例会上进行公开表扬，并在项目总结会上颁发奖励。同时，我们也会关注团队成员的行为表现，对于不合适的行为，如拖延任务、不遵守规则等，我们将进行私下沟通，指出问题并引导其改正。为了提升项目的效率和效果，我们经过小组讨论，制定了一套针对这些问题的改进计划，并建立了相应的规则、仪式、流程和模式。在项目初期，由于我们对客户需求理解不够深入，导致部分功能开发完成后需要重新修改，造成了时间和资源的浪费。在项目开发过程中，团队成员之间的协作不够紧密，导致信息传递不畅，影响了开发进度。]]></description><category></category></item></channel></rss>