- 博客(51)
- 收藏
- 关注
原创 【NIO基础】基于 NIO 中的组件实现对文件的操作(文件编程),FileChannel 详解
应用程序在获取到数据后,再将数据传回给另一个文件的内核缓冲区,即从用户空间的缓冲区拷贝回内核缓冲区,这里再次发生一次拷贝。之所以高效,是因为它通过操作系统的低层 API 直接进行文件的传输,避免了从用户空间到内核空间的多次数据拷贝(零拷贝)。对于小文件,上面那样的传输是没有问题的。
2024-10-04 20:48:10
1475
1
原创 【NIO基础】NIO(非阻塞 I/O)和 IO(传统 I/O)的区别,以及 NIO 的三大组件详解
1、NIO是的缩写,意思就是“新型输入输出”,它是在 Java 1.4 版本里加进来的,中文可以叫“新 I/O”“非阻塞 I/O”。NIO 其实就是对传统的阻塞 IO 做了个加强版,专门为了解决以前处理大量数据或者很多并发连接时性能不够好的问题。NIO 的牛掰之处在于,它提供了:你可以发起 IO 操作而不用等着它完成,干别的事也行。:一个线程能管理好多个连接,不需要每个连接都分配一个线程。:NIO 用缓冲区来存数据,读写的时候可以灵活处理,不用一次性读完或写完。NIO 主要有三个。
2024-10-03 15:04:14
1690
原创 【Redis】Redis中的 AOF(Append Only File)持久化机制
想象一下,Redis 每次执行写操作的时候,都把这些操作以追加的方式写入一个文件中,然后当你重启 Redis 时,Redis 会从这个文件里读取命令并重新执行,这样就相当于恢复了缓存的数据。AOF 重写机制是在重写时,读取当前数据库中的所有键值对,然后将每一个键值对用一条命令记录到「新的 AOF 文件」,等到全部记录完后,就将新的 AOF 文件替换掉现有的 AOF 文件。,把相应的参数打开。默认值是 64 MB。:写日志的操作是在主进程完成的,如果硬盘压力大,写日志的速度变慢,就可能阻塞后续的命令执行。
2024-10-01 18:48:44
1796
原创 【MySQL】常见的SQL优化方式(二)
在 InnoDB 存储引擎中,行锁是针对索引加的锁,而不是针对记录加的锁。命令查看执行计划,它会告诉我们查询是如何被执行的,是否用到了索引,是否有全表扫描等信息。此时,由于无法加行锁,行锁将会升级为表锁,整个。不取具体的字段值,InnoDB 做了优化,直接按行数累加,效率是最高的。,意思是如果我们用多个字段来分组,数据库只会使用最左边的字段上的索引来加速操作。InnoDB 会遍历整张表,取出每一行的主键,然后返回给服务层,服务层按行累加。中使用的字段是有索引的,并且顺序和索引的定义一致,就能提升查询效率。
2024-09-29 16:59:28
1948
原创 【MySQL】常见的SQL优化方式(一)
因为对于一张表来说,主键(聚集)索引只有一个,但是二级索引可以有多个,在二级索引的叶子节点中存放的就是数据的主键,所以说如果主键比较长,二级索引比较多,那么会占用大量的磁盘空间,而且在搜索时也会耗费大量的磁盘IO,所以要尽量降低主键的长度。最外层是表空间(Tablespace),表空间中存储的是一个一个段(Segment),段当中存放的是一个一个区(Extent),一个区的大小是固定的1M,在区当中存放的是一个一个的页(Page),页当中存放的是一个一个的行(Row),行当中就是存放着具体的字段值。
2024-09-27 12:49:06
1308
原创 【内容审核】对审核结果进行封装
中实现了文本、图片和视频的审核功能,但是这些功能灵活性不够,既不能自己设置审核的强度,也不能内容违规的详细信息,所以可以在原来代码的基础上对这些功能进行一个改造。要自定义这些返回结果的封装类,那就需要先分析这些返回结果的格式。的返回结果中,视频的返回结果是最复杂的,但是这三种返回结果中有许多属性是一样的,现在我们就开始来。字段下的"details"、"offset"和"suggestion"字段,字段在三种返回示例中不一样,在文本审核结果中的。再进一步分析,我们分析。字段,而在视频和图片审核结果中的。
2024-09-05 21:19:12
682
原创 【内容审核】Java实现七牛云内容审核功能,文本、图片和视频的内容审核(鉴黄、鉴暴恐、敏感人物)
七牛云的内容审核服务是一套综合性的解决方案,旨在帮助用户在不同的应用场景中实现对多媒体内容的智能审核和管理。无论是在社交平台、直播、短视频、在线社区,还是在电商、教育等领域,七牛云的审核服务都能提供全面的支持,确保用户上传、存储、分发或展示的内容符合合规要求。
2024-08-13 20:45:16
2440
3
原创 【Spring】RestTemplete工具类
RestTemplate 是 Spring 框架中的一个工具类,它用于简化客户端与HTTP服务之间的通信。RestTemplate 封装了底层的HTTP连接细节,为开发者提供了高级别的抽象,使得调用 RESTful服务(RESTful到底是什么?)变得简单和直观。
2024-07-19 11:46:44
1911
原创 【Spring】Spring AOP底层原理:JDK动态代理和CGLIB动态代理
Spring AOP 的实现原理是基于动态代理和字节码操作的。而动态代理是基于反射机制的。在编译时, Spring 会使用 AspectJ 编译器将切面代码编译成字节码文件。在运行时, Spring 会使用 Java 动态代理或 CGLIB 代理生成代理类,这些代理类会在目标对象方法执行前后插入切面代码,从而实现AOP的功能。
2024-05-27 18:56:24
2768
1
原创 【Spring】Spring AOP底层原理前置知识:代理模式中的静态代理
Spring AOP的底层原理:一开始Spring会创建IOC容器,然后会把所有的Bean进行创建和进行依赖注入,就是spring(new 类名())。当实现了AOP的话,spring会根据当前的bean动态的创建代理对象,就比如我当前有一个UserService类,这个类实现了AOP,然后spring为UserService类动态创建代理对象并且把这个代理对象配置成bean替换掉UserService类的bean,所以这时候从IOC容器中去拿到的UserService类的bean实际上是Spring为Us
2024-05-22 09:05:45
1294
原创 【Spring】AOP中的核心概念:通知(Advice)和切点(Pointcut)
通知(Advice):在切面的某个特定的连接点上执行的动作。通知有多种类型,包括“around”,“before” 和“after”等等。通知的类型将在后面详细了解。许多AOP框架,包括Spring在内,都是以拦截器做通知模型的,并维护着一个以连接点为中心的拦截器链。用来放增强的代码的那个方法环绕通知@Around:可以把代码增强在目标方法的任意地方,更通用前置通知@Before:目标方法之前执行后置通知@After:目标方法之后执行异常通知@AfterThrowing:目标方法出现了异常执行
2024-05-15 09:41:25
1800
原创 【Spring】初识 Spring AOP(面向切面编程)
目标对象(Target):目标对象指将要被增强(比如增强功能)的对象,或者说被一个或多个切面所通知的对象,即包含主业务逻辑的类的对象,即为目标对象。可以说要增强的对象(通常会有很多个)就是目标对象切面(Aspect):指关注点模块化,这个关注点可能会横切多个对象。事务管理是企业级Java应用中有关横切关注点的例子。 在Spring AOP中,切面可以使用通用类基于模式的方式(schema-basedapproach)或者在普通类中以@Aspect注解(@Aspect注解方式)来实现。可以说增
2024-05-11 18:22:15
972
原创 【Spring】Bean的生命周期回调函数和Bean的循环依赖
spring的bean的生命周期主要是创建bean的过程,一个bean的生命周期主要是4个步骤:实例化,属性注入,初始化,销毁再详细一点可以拆分为:(1)配置bean,通过@Component @Bean等方式都可以。(2)加载Spring容器(3)实例化,例如:(BeanService beanService = new BeanService())(4)解析依赖注入(解析@Autowired @Value等自动注入注解)(5)初始化(调用初始化回调方法,由程序员来配置)
2024-05-07 14:55:37
1217
1
原创 【Spring】IOC/DI中常用的注解@Lazy、@Scope与@Conditional
在实际开发场景中,并不是所有bean都要一开始就被创建的,有些可以等到使用时才创建。此时就可以使用该注解实现。此注解只对单例bean有用,原型bean时此注解不起作用。原型bean是在每次请求时都会创建一个新的实例,而不像单例bean那样只有一个实例。因此,使用@Lazy注解对原型bean没有实际意义,因为即使不使用该注解,每次请求都会创建一个新的实例。所以,@Lazy注解只对那些在容器初始化时就被创建的单例bean有用。
2024-04-28 15:17:36
1261
2
原创 【Spring】IOC/DI中常用的注解@Order与@DependsOn
注解@Order或者接口Ordered的作用是定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响。所以这里说改变Bean的自动注入的顺序就是改变Bean的执行顺序。
2024-04-24 19:26:09
1162
2
原创 【Java网络编程】TCP通信(Socket 与 ServerSocket)和UDP通信的三种数据传输方式
TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象通信之前要保证连接已经建立(注意TCP是一定要建立连接的)TCP是通过Socket产生I0流来进行网络通信的,所以发送端和接收端的两个流的方向是不一样的,比如客户端和服务器进行通信(通信前要确保建立了连接),然后客户端向服务器发送了“你好帅”,这一次发送数据的过程,它们流的方向是不一样的,针对客户端来说,它是往外发所以用的是输出流,而针对服务器来说,它是接收数据所以用的是输入流。
2024-04-22 19:08:57
2361
1
原创 【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
计算机网络中,连接和通信的规则被称为网络通信协议OSI参考模型:世界互联协议标准,全球通信规范,单模型过于理想化,未能在因特网上进行广泛推广TCP/IP参考模型(或TCP/IP协议):事实上的国际标准。
2024-04-18 17:15:30
1716
原创 【Spring】依赖注入(DI)时常用的注解@Autowired和@Value
如果是非SpringBoot配置文件,需要额外通过@PropertySource去指定属性文件的类路径,如果是SpringBoot配置文件(application.properties),就无需额外配置@PropertySource。
2024-04-15 16:36:01
1968
2
原创 【Java多线程】线程池 ThreadPoolExecutor类和Executors工厂类以及线程池的最优大小
主要核心原理创建一个线程池子,池子中是空的提交任务时,线程池子会创建新的线程对象,任务执行完毕,线程归还给池子下回再次提交任务时,不需要创建新的线程,直接复用已有的线程即可但是如果提交任务时,池子中没有空闲线程,也无法创建新的线程,任务就会排队等待
2024-04-12 11:34:06
2021
原创 系统开发实训小组作业week7————项目问题改进计划与实践
对于在项目中表现出色的成员,我们将在例会上进行公开表扬,并在项目总结会上颁发奖励。同时,我们也会关注团队成员的行为表现,对于不合适的行为,如拖延任务、不遵守规则等,我们将进行私下沟通,指出问题并引导其改正。为了提升项目的效率和效果,我们经过小组讨论,制定了一套针对这些问题的改进计划,并建立了相应的规则、仪式、流程和模式。在项目初期,由于我们对客户需求理解不够深入,导致部分功能开发完成后需要重新修改,造成了时间和资源的浪费。在项目开发过程中,团队成员之间的协作不够紧密,导致信息传递不畅,影响了开发进度。
2024-04-12 10:18:13
509
原创 【Spring】使用@Bean和@Import注解配置Bean,与Bean的实例化
在 Spring 中,Bean 是指由 Spring 容器管理的对象。Spring IOC 容器负责创建、配置和管理这些 Bean 对象的生命周期。Spring IOC 容器会管理应用程序中的组件,并通过依赖注入(DI)将它们组装在一起。Bean 是应用程序的核心构建块,它们通常代表应用程序中的各种对象,例如服务、数据访问对象(DAO)、控制器等。
2024-04-03 20:00:43
2918
11
原创 【Spring】分别基于XML、注解和配置类实现Spring的IOC(控制反转)
lOC:lnversion of Control 控制反转,简称就是 IOC控制反转:控制(对象创建权利)被反转控制反转通过依赖注入(DI)方式实现对象之间的松耦合关系。程序运行时,依赖对象由辅助程序动态生成并注入到被依赖对象中,动态绑定两者的使用关系。Spring IoC 容器就是这样的辅助程序,它负责对象的生成和依赖的注入,然后再交由我们使用。
2024-04-01 18:45:07
1453
3
原创 系统开发实训小组作业week5 —— 用例描述与分析
实现对除系统管理员以外的后台账户信息的增加、修改和删除。管理员实现对电影信息、座位数量、价格的增加、修改和删除。管理员登录后可以查看已有的后台账户信息。管理员登录后可以查看已有的电影和场次。添加电影时需要添加所有信息。添加用户时需要添加所有信息。输入新电影所有数据信息。输入新用户所有数据信息。
2024-03-29 20:50:41
810
2
原创 【Java多线程】通过等待唤醒机制、局部变量、原子变量实现线程同步
等待唤醒机制概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A(生产者)用来生成面条的,线程B(消费者)用来吃面条的,做面条和吃面条都在桌子上,面条可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。
2024-03-28 20:18:58
1049
6
原创 【java多线程】线程同步问题:用同步代码块、同步方法和重入锁实现线程同步
同步是执行或调用一个方法时,每次都需要拿到对应的结果才会继续往后执行;异步与同步相反,它会在执行或调用一个方法后就继续往后执行,不会等待获取执行结果。二者的区别就是处理请求发出后,是否需要等待请求结果,再去继续执行其他操作。
2024-03-26 08:45:00
1926
4
原创 【Java多线程】多线程的三种实现方式和多线程常用方法
在main()方法中,你可以创建和启动额外的线程,这些线程称为子线程。子线程可以并行执行,与主线程同时进行。多线程的三种实现方式如下:继承Thread类的方式进行实现实现Runnable接口的方式进行实现利用Callable接口和Future接口方式实现
2024-03-23 11:22:17
4094
8
原创 【java多线程】线程基础知识笔记
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程中可以有多个线程,同一个进程中的多个线程共享这个进程的资源。比如:QQ 和 Chrome 浏览器是两个进程,Chrome 进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。
2024-03-22 08:15:00
679
3
原创 【操作系统】进程基础知识
简单来说,进程就是程序的一次执行过程,程序是静态的,它作为系统中的一种资源是永远存在的。而进程是动态的,它是动态的产生,变化和消亡的,拥有其自己的生命周期。
2024-03-20 08:45:00
2376
5
原创 【Java基础】IO流(三):字符流的FileReader(文件字符输入流)和 FileWriter(文件字节输出流)
字符流的底层其实就是字节流,即字符流 = 字节流 + 字符集字符流特点:输入流:一次读一个字节,遇到中文时,一次读多个字节输出流:底层会把数据按照指定的编码方式进行编码,变成字节再写到文件中
2024-03-17 08:58:09
2289
2
原创 【Java基础】IO流(二)字符集知识
字符(Character):在计算机和电信技术中,一个字符是一个单位的字形、类字形单位或符号的基本信息。说的简单点字符是各种文字和符号的总称。一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号、一个图形符号或者控制符号等。字符集(Character Set):是指多个字符的集合。不同的字符集包含的字符个数不一样、包含的字符不一样、对字符的编码方式也不一样。
2024-03-15 08:45:00
1463
14
原创 【java基础】IO流(一):字节流的FileOutputStream(文件字节输出流)和 Filelnputstream(文件字节输入流)
一个程序总是离不开数据的输入(Input)输出(IO),而Java IO流就是用于程序从外部读取数据,以及向外部写出数据的java处理包。以流的方式进行输入输出的操作就是IO(Input Output)流。流是一个抽象的概念,它是一串连续动态的数据集合,可以将流理解为水管,而数据就是水,水通过水管从一端流到另一端。
2024-03-14 08:45:00
1965
6
原创 【java基础】异常处理机制
RuntimeException本身和其子类;运行时异常在编译阶段没有错误提示,因为Java编译器不会检查它,当程序中出现这类异常时,也会编译通过,在运行时这类异常才会出现错误提示;一般是由于参数传递错误带来的问题
2024-03-09 16:36:25
929
2
原创 【计算机网络】DHCP原理与配置
DHCP(动态主机配置协议)是一个存在于应用层的网络管理协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client)。在DHCP的帮助下,可以动态地给网络上的任何设备或节点分配一个互联网协议IP地址,使它们可以使用这个IP进行通信。网络管理员的任务是将大量的IP地址手动分配给网络中的所有设备。然而,在DHCP中,这个任务是自动化的,是集中管理,而不是手工管理。DHCP的基本目标是为主机分配一个唯一的IP地址。
2024-02-22 19:30:00
3813
20
原创 【数据结构】二叉查找树和平衡二叉树,以及二者的区别
二叉查找树又名二叉排序树,亦称二叉搜索树。是每个结点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。
2024-02-17 14:17:17
2084
25
原创 【数据结构】前缀树的模拟实现
前缀树又名字典树,单词查找树,Trie树,是一种多路树形结构,是哈希树的变种,和hash效率有一拼,是一种用于快速检索的多叉树结构,。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词颛统计。它的优点:最大限度地减少无谓的字符比较,查询效率比哈希表还高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低査询时间的开销以达到提高效率的目的。Trie树的缺点:Trie树的内存消耗非常大。性质:不同字符串的相同前缀只保存一份。
2024-02-09 15:22:34
1579
15
原创 【计算机组成原理】存储器知识
磁存储器:磁存储器都以磁性材料作为存储介质,利用磁化单元剩磁的不同磁化方向来存储数据0 和1。它主要包括磁芯、磁盘、磁带存储器等,目前广泛使用的磁盘、磁带中都包含机械装置,所以其体积大、存取速度慢,但磁存储器单位容量成本最低。
2023-12-03 21:34:20
5037
58
原创 java数据结构(哈希表—HashMap)含LeetCode例题讲解
HashMap 是一个散列表,它存储的内容是键值(key-value)映射。HashMap 的 key 与 value 类型可以相同也可以不同,根据定义,不受限制。
2023-12-01 15:55:11
2040
24
原创 【计算机网络】(网络层)定长掩码和变长掩码
定长的子网掩码(FLSM):使用同一个子网掩码划分子网,每个子网所分配的IP地址数量相同,造成IP地址的浪费。变长的子网掩码(VLSM):使用不同的子网掩码划分子网,每个子网所分配的IP地址数量可以不相同,尽可能地减少对IP地址的浪费。
2023-11-24 21:55:20
5546
38
原创 【计算机网络】VLAN原理和配置
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。这样,广播报文就被限制在一个VLAN内。
2023-11-14 21:32:28
3759
53
原创 【计算机网络】VRRP协议理论和配置
VRRP是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台。控制虚拟路由器 IP 地址的 VRRP 路由器称为主路由器,它负责转发数据包到这些虚拟 IP 地址。一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的 IP 地址可以作为终端主机的默认第一跳路由器。是一种LAN接入设备备份协议。一个局域网络内的所有主机都设置缺省网关,这样主机发出的目的地址不在本网段的报文将被通过缺省网关发往三层交换机,从而实现了主机和外部网络的通信。
2023-11-13 22:16:54
4071
48
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人