- 博客(81)
- 资源 (8)
- 问答 (2)
- 收藏
- 关注

原创 【考研408】计算机网络笔记
文章目录计算机网络体系结构计算机网络概述计算机网络的组成计算机网络的功能计算机网络的分类计算机网络的性能指标课后习题计算机网络体系结构与参考模型计算机网络协议、接口、服务的概念ISO/OSI参考模型和TCP/IP模型课后习题物理层通信基础基本概念奈奎斯特定理与香农定理编码与调制电路交换、报文交换、分组交换数据报与虚电路课后习题传输介质双绞线、同轴电缆、光纤、无线传输介质物理层接口的特性课后习题物理层设备中继器集线器总结数据链路层数据链路层的功能为网络层提供的服务链路管理帧定界、帧同步与透明传输流量控制差错控
2024-02-03 15:10:53
2232

原创 【考研408】操作系统笔记
文章目录@[toc]计算机系统概述操作系统的基本概念操作系统的概念和特征操作系统的目标和功能(**处理器管理、存储器管理、设备管理、文件管理、向用户提供接口、扩充机器**)操作系统的发展与分类操作系统的运行环境操作系统的运行机制操作系统的体系结构大内核和微内核总结进程管理进程与线程进程的概念和特征进程的状态与转换进程控制进程的组织进程的通信**线程概念**和**多线程模型**处理机调度调度的概念调度的时机、切换、过程进程调度方式调度的基本准则典型的调度算法进程同步进程同步的基本概念实现**临界区**互斥的基
2024-02-03 15:03:31
1504

原创 【考研408】算法与数据结构笔记
文章目录绪论数据结构的基本概念算法和算法评价线性表线性表的定义和基本操作线性表的顺序表示线性表的链式表示栈和队列栈基本操作栈的顺序存储结构栈的链式存储队列队列常见的基本操作队列的顺序存储结构队列的链式存储结构双端队列栈和队列的应用栈在括号匹配中的应用栈在表达式求值中的应用栈在递归中的应用队列在层次遍历中的应用队列在计算机系统中的应用特殊矩阵的压缩存储数组的定义数组的存储结构矩阵的压缩存储串串的定义和实现串的定义串的存储结构串的基本操作串的模式匹配简单的模式匹配算法改进的模式匹配算法——KMP算法树与二叉树树
2024-02-03 15:02:40
2061

原创 【考研408】计算机与组成原理笔记
文章目录@[toc]计算机系统概述计算机系统层次结构计算机硬件的基本组成计算机软件的分类计算机的工作过程计算机系统的多级层次结构课后习题计算机的性能指标计算机的主要性能指标几个专业术语课后习题总结数据的表示和运算数制与编码进位计数制及其相互转换定点数的表示与运算定点数的编码表示运算方法和运算电路基本运算部件定点数的移位运算定点数的加减运算定点数的乘除运算C语言中的整数类型及类型转换数据的存储和排列课后习题错题集浮点数的表示与运算浮点数的加减运算课后习题总结存储系统存储器概述存储器的分类存储器的性能指标(**
2024-02-03 15:01:16
1820

原创 Java多线程
Monitor描述为对象监视器,可以类比一个特殊的房间,这个房间中有一些被保护的数据,Monitor保证每次只能有一个线程能进入这个房间进行访问被保护的数据,进入房间即为持有Monitor,退出房间即为释放Monitor。如果物理机器有多个处理器,能够让两个或以上的线程同时并行执行,就可以让后面那个请求锁的线程不放弃CPU的执行时间,看看持有锁的线程是否很快就会释放锁。但是当自旋超过一定的次数,或者一个线程在持有锁,一个在自旋,又有第三个来访时,轻量级锁升级为重量级锁。,每当数据被修改,版本号+1。
2024-02-03 12:09:13
2296

原创 Java常用
为什么JDK8的阈值要选择8?链表特点是插入快,查询慢。红黑树是插入慢,查询快。理想情况下,使用随机的哈希码导致冲突的概率符合泊松分布,按照泊松分布的计算公式计算出了桶中元素个数和hash冲突概率的对照表,可以看到链表中元素个数为8时,概率已经非常小,再多的就更少了。红黑树本身就有维护成本,避免频繁维护红黑树,红黑树变为链表。红黑树的根节点不一定是索引位置的头节点HashMap通过方法来维持红黑树的根结点就是索引位置的头结点,但是在方法中,当movable为false时,不会调用。
2024-02-03 12:08:36
749
原创 【Kotlin】从Java开发视角出发了解Kotlin
Kotlin的语法更简洁、更安全,提供了许多便利的特性,帮助开发者提高开发效率和代码质量。1.4 类型推断:Kotlin具有更强大的类型推断能力,可以根据赋值自动推断变量的类型,无需显式声明。6.2 可变集合和不可变集合:Kotlin区分了可变集合和不可变集合,以提高代码的可读性和安全性。2.3 区间和区间表达式:Kotlin提供了区间和区间表达式的概念,可以简化一些循环操作。4.1 函数声明和调用:Kotlin的函数声明和调用与Java类似,可以使用关键字。
2024-04-17 08:43:36
1125
原创 【ElasticSearch】倒排索引简介
倒排索引也支持短语匹配,当用户输入一个短语时,系统可以根据倒排索引中的信息找到包含该短语的文档。在倒排索引中,每个文档都有一个唯一的标识符,称为文档ID。对于文档集合中的每个文档,倒排索引会提取出文档中的所有单词,并将每个单词与对应的文档ID进行关联。这样,当用户输入一个查询词时,系统可以在倒排索引中查找该词对应的倒排表,并返回包含该词的文档ID列表。在elasticsearch中,倒排索引是核心的数据结构,通过分词、倒排表和查询等原理,elasticsearch实现了强大的全文搜索和分析功能。
2024-04-10 08:40:43
608
原创 【微信小程序】开发简介
首先,我们需要安装微信开发者工具,该工具提供了一个可视化的开发界面,方便开发者进行小程序的开发、调试和发布等操作。其次,开发者需要准备开发所需的基本知识,包括HTML、CSS和JavaScript等前端技术,以及微信小程序的开发文档、API和示例代码等。同时,我们还可以通过数据分析和用户反馈等方式,了解用户的需求和意见,以优化和改进小程序的功能和服务。在开发小程序时,我们可以使用微信提供的开发文档和示例代码作为参考,可以通过复制和粘贴等方式快速构建页面结构和实现功能。
2024-04-07 08:22:26
443
原创 【微信小游戏】开发简介
开发微信小游戏需要熟悉JavaScript编程语言、Canvas API的使用和微信小游戏开发文档中的相关知识。此外,还需要使用微信开发者工具进行开发、调试和发布,以及使用图形设计工具进行游戏场景的设计。总之,微信小游戏的开发流程包括搭建开发环境、设计游戏场景、实现游戏逻辑以及测试和优化等。下面将更加深入地分析微信小游戏的开发流程、所需的知识和使用的工具。在开发过程中,还可以使用一些开源的小游戏引擎或框架,如Egret、Cocos2d-js等,来加速开发过程并提供更多的功能和效果。
2024-04-07 08:20:57
710
原创 【技术概述】关于MQTT
主题(Topic)和消息(Message):MQTT使用主题来区分消息的类别,主题是一个由标识符组成的字符串,用于消息的分类和过滤。订阅者(Subscriber):订阅者通过指定主题来订阅特定的消息类别,当代理服务器接收到符合主题的消息时,将消息发送给订阅者。低能耗:MQTT协议设计时考虑了物联网设备的能耗问题,采用了最小化的网络开销和设备唤醒次数,有效延长设备的电池寿命。异步通信:MQTT协议采用异步通信模型,发布者和订阅者之间的通信是非阻塞的,提高了系统的并发性和可扩展性。三、MQTT技术应用场景。
2024-03-27 09:39:24
510
原创 【Spring】注解使用篇
在本例中,处理器会在方法执行前打印出"Before method execution. Custom annotation value: customValue",在方法执行后打印出"After method execution. Custom annotation value: customValue"。这样我们可以在特定的方法上添加自定义注解,并在注解的处理器中定义相应的逻辑来处理这些方法。通过使用注解,我们可以实现一些横切逻辑的集中管理和复用,提高代码的可维护性和可扩展性。在这个示例中,我们给。
2024-03-04 10:07:48
397
原创 【JavaScript】this指向(数组篇)
正确的输出结果应该是6, 不是依照全局window对象去解释, 而是根据数组环境中的this指向数组对象本身。所以fun函数内打印this.length,就是打印数组arr的长度6。在数组环境中,fun函数内this指向当前数组arr对象。定义一个函数fun,在函数内打印this.length。执行arr[0](),相当于执行第一个元素fun函数。数组arr的length属性值为它的长度,即6。定义数组arr,数组元素包含fun函数和数字。请给出以下这段js代码的输出结果。答案放在最后,以下给出分析。
2024-03-01 10:33:59
323
原创 【位运算】二进制的使用场景
掩码操作:通过使用位运算的掩码操作,可以方便地提取或设置某个特定位的值。例如,可以使用按位与操作(&)提取二进制数中某个位的值,使用按位或操作(|)设置某个位的值。例如,使用异或运算可以进行简单的数据加密和解密,通过对密钥进行位移或位逻辑操作,可以实现更复杂的加密算法。例如,在存储状态信息、标志位或位图等场景中,使用二进制位运算可以将多个标识或状态压缩到一个整数中,从而减小内存占用。需要注意的是,使用二进制位运算需要对二进制位的操作有一定的理解和熟悉,同时要注意代码的可读性和维护性。
2024-02-27 09:09:24
666
原创 【Git】window下大小写不敏感问题处理
在Git的视角下,这是两个不同的文件,因此会导致冲突。首先,Windows文件系统是不区分大小写的,这意味着在Windows中创建的两个文件名只有大小写不同,但字母顺序和字符完全相同的文件会被视为相同的文件。需要注意的是,执行此命令后,在Git仓库中已经存在的文件名大小写不同的文件将不会被自动合并。解决这个问题的一种方法是在Windows环境下设置Git的配置选项,将文件名大小写视为有区别的。当拉取过程中发生文件名大小写冲突时,Git会在冲突的文件中标记出冲突的地方。命令将重命名的文件标记为已解决。
2024-02-27 09:03:35
1543
原创 【Oracle】常用字符串函数介绍
在字符串的左侧填充指定的字符,直到字符串达到指定的长度。:在字符串的右侧填充指定的字符,直到字符串达到指定的长度。:使用逗号分隔的字符串,判断一个值是否存在于字符串中。:使用正则表达式替换字符串中的指定内容。:使用正则表达式提取字符串中的指定内容。:替换字符串中的指定字符或子字符串。:替换字符串中的指定字符或字符集合。:查找子字符串在父字符串中的位置。:返回指定位置和长度的子字符串。:删除字符串左侧的指定字符。:删除字符串右侧的指定字符。:删除字符串中指定的字符。:返回字符串的长度。
2024-02-23 08:43:12
623
原创 【Java】各版本变更点介绍
以下是Java主要版本的一些变更点的总结。请注意,由于Java的发展迅速且变更点众多,这里只是列举了一些重要的变更点,而不是所有的变更点。以上只是一部分主要版本的变更点总结,更多详细的信息和其他版本的变更点,请参考Java官方文档和Java开发者社区的资源。
2024-02-22 10:04:20
776
原创 【Java】动态代理介绍
无论是JDK动态代理还是CGLIB动态代理,都是通过动态创建代理类来实现代理对象的生成,并在代理类中拦截方法调用,执行额外的逻辑。Java的动态代理机制允许在运行时创建代理类和代理对象,用于在调用实际对象的方法之前和之后执行额外的逻辑。代理对象的方法调用会被转发给。基于接口的动态代理(JDK动态代理)和基于类的动态代理(CGLIB动态代理)在不同的场景下有不同的使用情况和原理分析。Java的动态代理主要有两种实现方式:基于接口的动态代理(JDK动态代理)和基于类的动态代理(CGLIB动态代理)。
2024-02-22 08:54:15
859
原创 【Spring】循环依赖问题处理分析
三级缓存的使用确保了在依赖注入过程中,每个Bean实例都能够得到正确的依赖对象,避免了循环依赖所带来的问题。方法负责处理自动注入,它会遍历Bean中的属性,根据属性的名称和容器中的Bean名称进行匹配,并通过反射机制将依赖注入到Bean中。方法中,Spring会按照一定的顺序调用Bean的初始化回调方法,并在调用前后执行BeanPostProcessor的相应方法。可以看到,如果缓存中不存在该Bean实例,并且检测到当前正在创建该Bean实例的过程中,Spring会尝试从。方法中,Spring会通过调用。
2024-02-21 14:48:50
505
原创 【ElasticSearch】常用查询格式介绍
聚合(Aggregation):用于对查询结果进行统计和分析,如求和、平均值、最大值、最小值等。排序(Sorting):用于指定查询结果的排序方式,可以按照字段的升序或降序进行排序。查询条件(Query Condition):根据查询类型和查询字段来指定查询条件。查询字段(Field):可以指定需要查询的字段,也可以对所有字段进行查询。过滤器(Filter):用于对查询结果进行过滤,只返回符合条件的文档。分页(Pagination):用于指定返回结果的起始位置和数量。
2024-02-21 11:09:28
1349
原创 【SQL】exists关键字使用介绍
通过适当使用EXISTS关键字,可以实现更复杂的查询需求,并提高查询的性能。示例3:使用EXISTS进行关联查询。示例2:查询有子分类的所有父分类。示例4:使用EXISTS进行过滤。示例1:查询有订单的所有客户。
2024-02-20 16:07:55
990
原创 【JavaScript】隐式转换规则介绍
这些是常见的隐式类型转换规则,但并不是详尽无遗的。JavaScript中的隐式类型转换相对灵活,有时也会有一些特殊情况。对于更详细和全面的了解,建议参考ECMAScript规范或其他可靠的技术资源。隐式类型转换在JavaScript中是一种自动发生的类型转换,可以在某些上下文中将一个数据类型转换为另一个数据类型。
2024-02-20 08:49:11
236
原创 【JavaScript】动态代码执行介绍
以上是JavaScript中动态执行代码的几种方式:eval()函数、Function()构造函数、setTimeout()函数和setInterval()函数。setTimeout()函数和setInterval()函数用于延迟执行和定时执行代码,但它们并不直接执行字符串代码,而是在指定的时间间隔内触发已定义的函数。Function()构造函数相对于eval()函数的优势在于它的作用域与调用它的代码块的作用域是相互独立的。这意味着在使用Function()构造函数时,无法访问包含它的函数或闭包中的变量。
2024-02-20 08:39:03
482
原创 【大厂Java面试题】简问简答篇
双亲委派模型是一种类加载机制,它通过一系列的ClassLoader层次结构来保证类的唯一性和安全性,先尝试由父类加载器加载类,如果加载不成功才会由子类加载器尝试加载。软引用是一种有限制的引用类型,仅在内存不足时才会被回收。可达性分析是判断对象是否可以被回收的一种算法,通过从根对象开始遍历,如果对象不可达(即无法通过引用链访问到),则可以被回收。答:异常和错误都表示程序运行时的异常情况,但区别在于异常是可以被恢复的,程序可以通过捕获和处理异常继续执行,而错误通常表示无法恢复的严重问题,程序无法继续正常执行。
2024-02-19 11:32:35
1561
1
原创 【webpack】基础介绍
综上所述,Webpack是一个以模块为基础,支持加载器和插件的前端构建工具。了解Webpack的工作原理、构建流程、常用配置和插件,可以更加灵活和高效地使用Webpack进行项目开发和优化。当我们深入分析Webpack时,可以更加详细地了解它的工作原理、构建流程、常用配置和插件。
2024-02-19 11:10:20
663
原创 【vue】组件通信方式介绍
综合使用这些组件通信方式,我们可以根据具体需求来选择适合的方式。如果是简单的父子组件通信,使用Props & Events即可;如果需要跨组件通信,使用EventBus或Vuex是不错的选择。而$refs和Provide & Inject则适用于一些特定的场景。了解这些通信方式的特点和适用场景,可以更好地应对不同的开发需求。方法触发自定义事件,并通过。属性,可以给子组件或。
2024-02-19 11:08:19
707
原创 【leetcode】常用数学题解法介绍
它基于以下观察:对于一个正整数 x,如果将其表示为二进制形式,例如 x = b_{k}b_{k-1}…b_{1}b_{0},那么 x 的任意幂次可以通过平方和乘法来计算。快速幂算法的基本思想是通过二进制位的拆分,将指数进行分解,然后利用平方和乘法进行快速计算。例如,计算 x^N,可以将 N 表示为二进制形式,然后从高位到低位逐步计算 x 的平方,如果当前位对应的二进制数为1,则将结果乘以 x。以上是对ACM算法题中常见的数学常识和知识点的更加详细和全面的分析。
2024-02-19 09:15:55
617
原创 【leetcode】贪心算法介绍
综上所述,贪心算法常用的解题套路、数据结构和代码逻辑包括找最值型、区间问题、贪心选择法、堆、排序、哈希表、循环、递归和双指针等。这些都是贪心算法解题过程中常用的技巧和方法,根据具体问题的特点选择适合的解题套路和数据结构,使用相应的代码逻辑来实现解题过程。
2024-02-19 09:09:14
497
原创 浮点数精度误差分析
由于计算机存储空间的限制,某些小数可能无法精确表示,导致存在舍入误差。浮点数计算的精度误差问题源于计算机中使用二进制表示实数,而二进制无法精确表示某些十进制小数。由于浮点数的有限精度,计算中的舍入误差可能影响最终结果。在加法和减法运算中,计算的顺序不会引入太大误差,但在乘法和除法中可能导致不同的舍入误差。这个示例中,由于浮点数的二进制表示方式,0.1 和 0.2 在计算机中并不能被精确表示,导致。计算机采用二进制来表示实数,有些十进制小数在二进制中可能无法准确表示,导致精度限制。的结果可能包含小数误差。
2024-02-18 09:30:25
483
原创 【Git】三棵“树”介绍
如果多个开发者对同一文件的不同部分进行了修改并将其添加到暂存区,那么在合并代码时,git会尝试自动合并这些修改。三树原理的使用使得Git能够记录和管理代码的变化,同时也提供了灵活的撤销和切换版本的能力。为了解决这些冲突,开发者需要手动解决冲突,确定哪些修改需要保留,并合并这些修改,最终提交一个一致的代码版本。暂存区树(Staging Area/Index):暂存区树是一个中间区域,在我们做出修改但还没有提交修改时,我们可以使用git add命令将工作区的修改添加到暂存区。暂存区树保存了我们即将提交的修改。
2024-02-06 15:22:52
1060
原创 【Git】常见代码冲突及处理
在Git中,还存在一些其他的冲突场景和解决方案,例如历史版本回退产生冲突的情况。原因:Windows操作系统不区分文件名的大小写,而Git在Linux上是区分大小写的。原因:两个开发者对同一行代码或同一文件的不同部分进行了修改。原因:本地代码与远程仓库的修改出现了严重冲突,无法手动解决。原因:两个分支的开发者对同一文件进行了不同的修改。解决方案:手动解决冲突,合并两个版本的代码。解决方案:手动解决冲突,合并两个版本的代码。解决方案:手动解决冲突,合并两个版本的代码。
2024-02-06 15:18:45
950
原创 Spring面试
BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当作Spring的容器。Spring容器不缓存prototype类型的Bean,使得无法提前暴露出一个创建中的Bean。IOC容器把对象注入进去的时候,已经不是原生对象,而是代理对象了。上下文更新事件 (ContextRefreshedEvent)A的构造方法中依赖了B的实例对象,同时B的构造方法中依赖了A。上下文开始事件 (ContextStartedEvent),所以不能继承用户类,而只能是实现用户的接口。
2024-02-03 12:11:23
827
原创 设计模式笔记
在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。下图中,Factory有一个doSomething方法,这个方法需要用到一个产品对象,这个产品对象由factoryMethod方法创建。该方法是抽象的,需要由子类去实现。//提供一个接口,用于创建相关的对象家族抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂方法模式只是用于创建一个对象,这和抽象工厂模式有很大不同。
2024-02-03 12:10:28
1252
原创 数据库笔记
在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名称并给定参数来调用执行。# 将语句的结束符号从分号临时改为两个$$(可以是自定义)delimiter;# 将语句的结束符号恢复为分号。
2024-02-03 12:09:54
963
原创 JavaScript学习文档
文章目录JavaScriptES6基础CSSVueVue 待验证编程风格JavaScriptthis关键字在方法中,this表示该方法所属的对象如果单独使用,this表示全局对象在函数中,this表示全局对象在函数中,在严格模式下,this是未定义的在事件中,this表示接收事件的元素undefined是全局对象的一个属性,也就是说,它是全局作用域的一个变量,undefined的最初值就是原始数据类型undefined。ES5之后的标准中,规定了全局变量下的undefined值为
2024-02-03 12:08:03
1028
原创 Web安全
对于用户请求的URL参数,首先服务器端会对其进行DNS解析,然后对于DNS服务器返回的IP地址进行判断,如果在黑名单中,就PASS掉。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。富文本编辑器允许用户输入HTML代码,就不能简单的进行转义过滤了,通常采用XSS filter来防范XSS攻击,通过定义一些标签白名单或者黑名单,从而不允许有攻击性的HTML代码的输入。形成的原因主要是服务器端所提供的接口中包含了所要请求的内容的URL参数,并且未对客户端所传输过来的URL参数进行过滤。
2024-02-03 12:07:08
1059
原创 【Galois工具开发之路】SpringApplicationRunListener在SpringBoot项目启动过程中执行了两次...
SpringApplicationRunListener 接口的作用主要就是在Spring Boot 启动初始化的过程中可以通过SpringApplicationRunListener接口回调来让用户在启动的各个流程中可以加入自己的逻辑。比如以下的方法Galois通过注入各种Listener到SpringBoot的启动监听器列表中,实现了SpringBoot启动后初始化各种AgentService的功能。
2023-04-01 15:24:33
1292
1
原创 【Galois工具开发之路】关于类的重新装载思路
Galois 通过监听项目代码变更,使用 redefineClasses 方法来重新装载类,并通过 ASM 侵入 SpringBoot 框架 和 MyBatis 框架核心代码的方式,获取到能重新装载。当一个java的类文件发生变更,如果动态的热更新这个新的类文件?目前来说,有两种可能的方式。的核心对象,以此实现项目的代码热部署更新。
2023-03-09 20:18:59
777
原创 【Galois工具开发之路】关于ClassFileTransformer的注意点
该接口是javaagent的方法的入参之一,用于给加载的类添加一个类转换器,确保在类进入main方法之前,对类进行字节码插桩。
2023-02-24 10:34:55
2027
原创 【Galois工具开发之路】关于IDEA的gradle工程执行两次premain的bug~
premain 方法会被执行两次,这个问题广泛出现在 IDEA 的多个版本中,目前尚未清楚,是 IDEA 还是 gradle 的问题。另一种Java Agent技术则是动态attach到java进程的方式,这种方式则是使用。是Java Agent技术的一种,通过。的方式,添加外部代理,代理入口方法为。启动工程,如果该工程配置了。,那么该 agent 里的。该问题发生于集成开发环境。
2023-02-23 17:05:48
1850
echart5离线文档
2024-10-12
java api 8
2016-09-25
自己动手写操作系统
2016-09-25
关于java执行Linux系统命令无法获取权限问题
2016-07-17
关于Java 线程的一个问题
2016-07-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人