- 博客(58)
- 收藏
- 关注
原创 计算机网络 DNS的解析流程
DNS 解析流程是一个复杂但有序的过程,通过多个环节的查询和协作,实现了从域名到 IP 地址的转换。在这个过程中,浏览器缓存、操作系统缓存和本地域名服务器缓存起到了加速解析的作用,而根域名服务器、顶级域名服务器和权威域名服务器则确保了能够准确找到域名对应的 IP 地址。理解 DNS 解析流程对于网络工程师进行网络配置、故障排查以及网站管理员优化网站访问性能等都具有重要意义。
2025-03-07 17:04:51
1119
原创 数据库 三范式
第一范式要求数据库表的每一列都是原子值,即每一列不可再分,确保数据的原子性。在满足第一范式的基础上,第二范式要求数据库表中的每一个非主属性完全依赖于主键,而不能只依赖于主键的一部分。也就是说,消除非主属性对主键的部分依赖。通俗的讲,我们如果确定一个表中的某个数据(A),则就可以确定该表中的其他另一个数据(B),则我们就可以说:B依赖于A(即主键,在一个数据库表格中,非主键属性一定是完全依赖主键的)。在满足第二范式的基础上(第二范式是在满足第一范式的基础上,所以第三范式是满足第一范式和第二范式的)
2025-03-07 14:45:00
646
原创 Redis中的SDS结构
在不同版本的 Redis 中,SDS 的结构定义有所不同,但基本思想一致。// 记录 buf 数组中已使用字节的数量,即字符串的实际长度int len;// 记录 buf 数组中未使用字节的数量int free;// 字节数组,用于保存字符串,最后一个字节为 '\0',用于兼容 C 字符串函数char buf[];// 长度小于 1<<5 的字符串使用 sdshdr5/* 低 3 位表示类型,高 5 位表示长度 */char buf[];
2025-02-24 14:53:38
658
原创 synchronized 的使用和锁升级
锁升级机制是为了在不同的竞争情况下,提供更高效的锁实现。在无竞争或竞争较小的情况下,使用偏向锁和轻量级锁可以减少锁的开销,提高程序性能;当竞争加剧时,再升级为重量级锁,以保证线程安全。因为静态方法属于类,所以锁是针对整个类的,不同实例调用该静态同步方法时,也会受到锁的限制。关键字修饰代码块,可以显式指定锁对象。锁升级顺序只能从无锁->偏向锁->轻量级锁->重量级锁,不能降级。只有获得该对象锁的线程才能进入方法执行,其他线程会被阻塞。修饰一个实例方法时,锁对象是当前实例对象(修饰静态方法时,锁对象是该类的。
2025-02-13 21:04:06
328
原创 操作系统 任务调度算法
不同的任务调度算法各有优劣,在实际应用中,需要根据操作系统的类型(如批处理系统、交互式系统)、任务的特点(如计算密集型、I/O 密集型)以及系统的性能目标(如追求高吞吐量、低响应时间等)来选择合适的调度算法,以达到最佳的系统运行效果。随着计算机技术的不断发展,新的任务调度算法也在不断涌现和改进,以适应日益复杂的应用场景和更高的性能要求。
2025-02-11 17:46:01
774
原创 操作系统中的银行家算法
银行家算法通过对资源的合理分配和安全状态的检查,有效地避免了死锁的发生。然而,该算法也存在一些局限性,如需要预先知道每个进程的最大资源需求,在实际系统中这往往难以准确预测;此外,算法的计算复杂度较高,尤其是在资源种类和进程数量较多的情况下。尽管如此,银行家算法作为一种经典的死锁避免算法,为操作系统的资源管理提供了重要的理论基础和实践指导。
2025-02-11 17:43:02
668
原创 128陷阱详细分析
此时发现,如果该值在-128到127之间,那么返回的是在该数组中与该值相同的同一块的值,此时就能解释a1与a2为何相同,因为二者指向同一块内存空间。而a3与a4则不在范围内,重新开辟一个新的空间。此时若想了解a是如何存储的只需要了解Integer valueOf(),查看该方法,发现所传的值i在某一个范围之内会执行一个条语句,而不再该范围之内则会new Integer,开辟新的内存空间。此时就能间接的解释,为何a3与a4为何不等,因为他们在取值范围之外,导致a3与a4开辟了新的内存空间。
2025-02-06 21:07:42
358
原创 接口和抽象类的异同
①一个类可以实现多个接口,这允许一个类拥有多个类型,从而实现了多重继承的效果(Java不支持类的多重继承,但可以通过接口实现)。②接口中的方法和抽象类中用abstrc修饰的方法只定义不实现,这些定义可以作为模板,供其他类去实现或继承。①一个类只能继承一个抽象类(Java不支持多继承,但可以通过多层继承结构来模拟)。抽象类是对行为的抽象,相当于是一种模板设计。接口是对行为的一种规范(定义)。③抽象类可以有构造函数,这主要用于在子类实例化时进行初始化操作。③接口不能有构造函数,因为它不能被实例化。
2025-02-06 21:02:17
213
原创 MyBatis (五)
一级缓存的生命周期和SqlSession的生命周期相同,SqlSession对象关闭,一级缓存也会关闭。一级缓存底层使用的是Map集合,key存储的是执行的SQL语句,value存放的是查询的对象。查询的时候,先从SqlSession的缓存中查找,如果有,直接返回。如果拷贝之前的项目,默认是不延迟加载的。在AccountMapper.xml配置文件中编写配置和SQL语句。在UserMapper.xml配置文件中编写配置和SQL语句。MyBatis的一级缓存也是SqlSession的缓存。
2025-02-05 13:10:35
627
原创 MyBatis (四)
如果想查询 select u.*,a.money from user u left join account a on u.id = a.uid 语句的内容。需求的SQL语句:select * from user where id = 1 or id = 2 or id = 3。需求:查询的数据中包含account所有的字段,再包含用户的名称和地址。之前做过拼接SQL语句查询条件的查询,需要动态的拼接SQL语句。where标签目的就是为了去掉 where 1=1的拼接的。在User类中添加List的属性。
2025-02-05 13:05:08
715
原创 MyBatis (三)
连接池是一种数据库连接管理技术,它预先创建一定数量的数据库连接并保存在一个池中。当应用程序需要与数据库进行交互时,直接从连接池中获取可用的连接,使用完毕后再将连接归还到池中,而不是每次都重新创建和销毁连接。在使用 POOLED 连接池时,可以通过配置参数来调整连接池的行为。MyBatis 提供了三种类型的连接池,可在。
2025-02-05 12:37:55
925
原创 MyBatis (二)
把数据库的信息定义property标签中的方式-- 配置环境们 -->-- 配置具体的环境 -->-- 配置事务管理类型 -->-- 配置是否需要使用连接池,POOLED使用,UNPOOLED不使用 -->-- 加载映射的配置文件 --><mappers></mappers>在项目中定义jdbc.properties属性文件,存储数据库相关的信息,统一管理jdbc.properties属性文件SqlMapConfig.xml的配置文件--
2025-02-05 12:32:28
446
原创 MyBatis (一)
MyBatis是一个优秀的基于Java的持久层框架,内部对JDBC做了封装,使开发者只需要关注SQL语句,而不用关注JDBC的代码,使开发变得更加的简单。MyBatis通过XML或者注解的方式将要执行的各种Statement对象配置起来,通过Java对象和statement中SQL的动态参数进行映射,并最终执行SQL语句。执行SQL后,最终将结果已Java对象返回。采用了ORM的思想。
2025-02-05 12:26:56
854
原创 SpringMVC框架 (二)
SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。拦截器和过滤器的功能比较类似,有区别过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。拦截器是SpringMVC框架独有的。过滤器配置了/*,可以拦截任何资源。拦截器只会对控制器中的方法进行拦截。拦截器也是AOP思想的一种实现方式。
2025-02-05 12:19:29
988
原创 SpringMVC框架 (一)
SpringMVC的概述是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。
2025-02-05 12:03:07
584
原创 Spring框架 (四)
什么模板技术:Spring框架中提供了很多持久层的模板类来简化编程,使用模板类编写程序会变的简单template 模板都是Spring框架提供XxxTemplate提供了JDBC模板,Spring框架提供的JdbcTemplate类,Connection 表示连接,管理事务 Statement ResultSe。
2025-02-05 11:34:35
295
原创 Spring框架 (三)
什么是AOP的技术?在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程AOP是一种编程范式,隶属于软工范畴,指导开发者如何组织程序结构AOP最早由AOP联盟的组织提出的,制定了一套规范.Spring将AOP思想引入到框架中,必须遵守AOP联盟的规范通过预编译方式或者运行期动态代理实现程序功能的统一维护的一种技术AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
2025-02-05 11:23:42
776
原创 Spring框架 (二)
1. 需求:编写service和dao的类,演示代码2. 技术选择:持久层使用原始的JDBC的程序,连接池选择的是Druid连接池。创建maven工程,导入开发的jar包 创建数据库,创建表结构编写JavaBean的类编写AccountDao的接口和实现类编写配置文件编程测试程序1.2 第二章:IOC注解的方式1.2.1 1. IOC注解方式的快速入门IOC注解的方式依赖没有变化编写接口和实现类在需要管理的类上添加@Component注解编写配置
2025-02-05 10:57:46
928
原创 Spring框架(一)
Spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。
2025-02-05 10:39:41
823
原创 Maven 进阶
正式开发,不同的项目组开发不同的工程。maven-dao 工程开发完毕,发布到私服maven-service 从私服下载 dao。公司在自己的局域网内搭建自己的远程仓库服务器,称为私服, 私服服务器即是公司内部的 maven 远程仓库, 每个员工的电脑上安装 maven 软件并且连接私服服务器,员工将自己开发的项目打成 jar 并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件(jar)。私服还充当一个代理服务器,当私服上没有 jar 包会从互联网中央仓库自动下载。
2025-02-05 10:30:29
881
原创 Maven 架构项目管理工具
对第三方依赖包的管理,可以连接互联网下载项目所需第三方jar包。对自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。项目构建:是一个从编写源代码到编译、测试、运行、打包、部署的过程。传统项目和maven项目构建的两种方式传统项目:打开Idea编写源代码和配置文件,对源代码进行编译,可以使用Junit进行单元测试,把项目打成war包,部署到Tomcat服务器中运行。maven项目:maven将项目构建过程进行标准化,每个阶段都可以使用一个命令来完成。
2025-02-05 10:08:12
977
原创 java基础 java内存运行图
把Java自定义的c转化为真正的c语言才能让内核调动Java中只存在值传递,C语言也只有值传递,只有c++有引用传递格式为:&变量名。
2025-02-05 09:45:51
145
原创 前端 JavaScript基础语法
JavaScript 是一种广泛应用于网页开发的脚本语言,它为网页赋予了交互性和动态性。以下是 JavaScript 的一些基础语法知识。
2025-02-04 19:24:51
374
原创 java基础 错误与异常
在 Java 编程中,错误(Error)和异常(Exception)是在程序执行过程中可能出现的问题。了解它们并正确处理,对于编写健壮的 Java 程序至关重要。
2025-02-04 18:27:33
390
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人