自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (1)
  • 收藏
  • 关注

原创 什么是进程?

独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位;进程则是程序的一次执行过程,是程序在执行过程中分配和管理资源的基本单位,是一个动态实体。进程(Process)是计算机科学中的术语,指正在运行的程序的实例。广义定义:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。总的来说,进程是操作系统中的一个核心概念,它使得多个程序能够并发执行,提高了系统的效率和资源利用率。

2024-05-10 09:58:14 212

原创 Spring都要那些组件,其作用是什么?

除了以上提到的组件外,Spring框架还包括许多其他组件,如Spring Security(用于安全认证和授权)、Spring Boot(用于简化Spring应用程序的创建和部署)等。2. **Spring上下文(Spring Context)**:这是一个配置文件,为Spring框架提供上下文信息。3. **面向切面编程(Spring AOP)**:Spring提供了面向切面编程的功能,允许开发者定义横切关注点(如日志、事务管理等),并将它们应用到多个地方,而无需修改原有的业务代码。

2024-05-08 09:13:47 184 2

原创 什么是spring

8. **良好的兼容性**:Spring框架与Java EE规范紧密集成,同时也支持其他优秀的开源框架,如MyBatis、Hibernate等。综上所述,Spring框架以其强大的功能、良好的兼容性、活跃的社区支持以及多种部署方式等优势,成为了Java企业级应用开发的首选框架之一。10. **活跃的社区支持**:Spring框架拥有庞大的用户群体和活跃的社区,这意味着开发者可以获得丰富的资源、教程和示例代码,同时也可以在遇到问题时得到及时的帮助和支持。

2024-05-08 09:09:02 525

原创 Java中如何实现线程间的通信?

通过PipedInputStream和PipedOutputStream或者PipedReader和PipedWriter实现线程间的数据传输。如CyclicBarrier, CountDownLatch, Exchanger等,这些工具类提供了更高层次的线程间协调功能。如ArrayBlockingQueue、LinkedBlockingQueue等,线程可以安全地从队列中添加或移除元素。使用Object类的wait(), notify()和notifyAll()方法来实现线程之间的等待和通知。

2024-01-04 15:32:05 429

原创 Java中,如何正确地处理并发问题?

如ConcurrentHashMap, CopyOnWriteArrayList等,这些集合类是为并发环境优化的。如synchronized关键字、ReentrantLock等,确保共享数据在多线程之间正确访问。如AtomicInteger等,提供无锁的线程安全操作。识别和避免死锁的常见模式,比如避免嵌套锁,使用锁顺序等。管理线程生命周期,避免创建过多的线程导致资源浪费。

2024-01-04 15:30:47 487

原创 Java中的动态代理是什么?如何实现?

通过实现InvocationHandler接口创建自己的调用处理器,然后使用Proxy类的静态方法newProxyInstance()创建代理对象。CGLIB是一个强大的、高性能、高质量的Code生成类库,可以在运行时扩展Java类和实现Java接口。它通常被用于AOP和测试框架中。Java中的动态代理指的是在运行时动态创建代理类和对象的机制,它允许开发者在运行时确定代理类的行为。

2024-01-04 15:29:56 389

原创 Java中如何实现对象的深拷贝和浅拷贝?

深拷贝不仅复制对象本身,还会复制其引用的所有对象。实现方式通常是通过重写clone()方法,并在其中创建新的对象实例,然后复制其内部属性。另一种方式是通过对象序列化和反序列化实现,即将对象写入一个流中,然后从流中读出来,从而创建一个新的对象。可以通过实现Cloneable接口并重写clone()方法来实现。浅拷贝仅复制对象的值类型字段和对引用类型字段的引用,但不复制引用对象本身。

2024-01-04 15:27:58 431

原创 Java中的泛型和其优势。

Java中的泛型是一种允许在编译时对类型进行参数化的特性。泛型提高了代码的类型安全,通过在编译时进行类型检查,减少运行时错误。Java的集合框架广泛使用泛型,提高了集合操作的类型安全和易用性。泛型使得类和方法能够处理不同类型的数据,提高了代码的可重用性。使用泛型可以减少显式的类型转换,代码更加清晰、易于理解。使得算法可以独立于数据类型,增加了算法的通用性和灵活性。

2024-01-04 15:26:50 354

原创 Java中,如何避免死锁?

使用工具或JVM内置功能(如JConsole)来监控和检测系统中的死锁,然后进行相应的处理。将大的锁分割成几个小的锁,如果可能的话,使得不同的线程可以同时访问不同的资源。方法来请求锁,它允许线程等待锁一定的时间后放弃,从而避免死锁。尽量避免一个线程在持有一个锁的同时去请求另一个锁。确保所有线程以相同的顺序请求和释放锁。

2024-01-04 15:24:42 955

原创 Java中的垃圾回收机制如何工作?

Java GC采用分代垃圾收集机制,将对象分为年轻代(Young Generation)、老年代(Old Generation)和永久代(PermGen,Java 8后改为元空间)。不同的代使用不同的垃圾回收策略。不同的收集器(如Serial、Parallel、CMS、G1)实现了这些算法的不同组合和变种。不同的收集器在延迟和吞吐量之间提供不同的权衡。它可能会直接删除这些对象,或者将存活的对象压缩到内存的一端,以减少碎片化。垃圾收集器会标记所有从根集合(如本地变量、活动线程等)可达的对象。

2024-01-04 15:23:17 367

原创 Java中HashMap的工作原理是什么?

HashMap通过链表来处理这种冲突,将具有相同哈希码的元素存储在同一数组位置的链表中。当数组的填充度超过阈值(默认为数组容量的75%),HashMap会进行扩容,通常扩容为原来的两倍,并重新分配所有元素。当添加一个元素时,HashMap会使用哈希函数计算键的哈希码,然后用这个哈希码来决定元素在数组中的存储位置。当链表长度超过一定阈值(默认为8)时,链表会转换为红黑树,以改善在高哈希冲突情况下的性能。HashMap基于数组和链表的结构,数组用于存储元素,链表用于解决哈希冲突。

2024-01-04 15:21:39 454

原创 Java中的内存模型是怎样的?

每个线程在创建时都会创建一个栈,用于存放局部变量和方法调用。每个方法调用都会创建一个栈帧,用于存储局部变量、操作数栈、方法出口等信息。Java内存模型的设计使得JVM可以高效地处理内存分配和垃圾回收,保障多线程环境下的内存一致性和线程隔离。Java的内存模型定义了Java虚拟机(JVM)在运行Java程序时如何管理内存。也被称为元空间,在Java 8之前称为永久代。这是JVM内存中最大的一块,用于存放Java对象实例。每个线程都有自己的程序计数器,用于指示线程当前执行指令的位置。

2024-01-04 15:16:07 429

原创 Java异常处理机制?

Java中的异常分为检查型异常(checked exceptions)和非检查型异常(unchecked exceptions,包括运行时异常和错误)。Java的异常处理机制是一种错误处理的机制,它将错误和异常的处理代码从正常代码中分离出来,以提高程序的可读性和可维护性。使用try块包围可能产生异常的代码,catch块捕获和处理异常,finally块提供总会执行的代码。通过在一个异常的构造器中传递另一个异常,可以创建一个异常链,反映多重失败的情况。通过继承Exception类或其子类来创建自定义异常。

2024-01-04 15:14:29 327

原创 Java中的反射机制是什么?

对于任意一个对象,都能够调用它的任意一个方法和属性。直接通过对象调用getClass()方法,使用Class类的静态方法forName(String className),或者通过类名.class属性。使用Class对象的getDeclaredMethods()方法获取类内定义的所有方法。使用Class对象的getDeclaredFields()方法访问类内定义的字段。通过Class对象的newInstance()方法创建其对应类的实例。通过Method对象的invoke()方法调用具体的方法。

2024-01-04 15:12:48 327

原创 Java中的垃圾回收机制?

Java提供了多种垃圾回收器,如Serial、Parallel、CMS、G1等,每种回收器适用于不同的场景和需求。Minor GC清理年轻代,而Major GC通常清理老年代,Full GC会清理整个堆空间。删除所有不可达的对象或者将存活的对象移动到连续的空间内,释放内存空间。首先标记出所有可达的对象。

2024-01-04 15:08:39 345

原创 Java多线程中,synchronized和ReentrantLock的区别是什么?

ReentrantLock提供了更多的功能,比如可以中断等待锁的线程,获取等待锁的线程列表,还可以尝试获取锁。在JDK1.6之后,synchronized的性能得到了很大优化,和ReentrantLock比较接近。synchronized是依赖于JVM实现的,而ReentrantLock是Java提供的API。ReentrantLock可以指定为公平锁或非公平锁,而synchronized只能是非公平锁。ReentrantLock可以更精确的控制锁,有更丰富的锁操作方法。

2024-01-04 15:06:30 431

原创 Java中的内存模型是如何设计的?

专门用于处理本地方法的调用。此外,Java内存模型还包括程序计数器等组件,共同构成了Java的运行时数据区。每个线程运行时都会创建一个栈,用于存放局部变量、操作数栈、动态链接和方法出口等。栈的生命周期和线程同步。这是Java内存管理中最大的一块,被所有线程共享。在堆中主要存放对象实例和数组。同样被所有线程共享,用于存储已被虚拟机加载的类信息、常量、静态变量等数据。

2024-01-04 14:59:21 343

原创 ajax、axios、fetch 的区别

它是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行 更新。fetch 不 支 持 abort , 不 支 持 超 时 控 制 , 使 用 setTimeout 及。Fetch 是基于 promise 设计的。fetch 不是 ajax 的进一步封装,而是原生 js,没有。fetch 号称是 AJAX 的替代品,是在 ES6 出现的,使用了 ES6 中的。fetch 只对网络请求报错,对 400,500 都当做成功的请求,服务器。

2023-10-26 10:06:56 52

原创 对 AJAX 的理解,实现一个 AJAX 请求

AJAX 是 Asynchronous JavaScript and XML 的缩写,指的是通过。通过设置监听函数,来处理请求成功后的结果。过判断请求的状态,如果状态是 2xx 或者 304 的话则代表返回正常。当对象的属性和监听函数设置完成后,最后调用 sent 方法来向服务。变为 4 的时候,代表服务器返回的数据接收完成,这个时候可以通。要的参数是请求的方法、请求的地址、是否异步和用户的认证信息。在发起请求前,可以为这个对象添加一些信息和监听函数。器发起请求,可以传入参数作为发送的数据体。

2023-10-26 10:04:43 59

原创 const 对象的属性可以修改吗

const 保证的并不是变量的值不能改动,而是变量指向的那个内存地。内存地址,保存的只是一个指针,const 只能保证这个指针是固定不。对于基本类型的数据(数值、字符串、布尔值),其值。但对于引用类型的数据(主要是对象和数组)来说,变量指向数据的。变的,至于它指向的数据结构是不是可变的,就完全不能控制了。就保存在变量指向的那个内存地址,因此等同于常量。

2023-10-26 09:57:04 288

原创 Object.is() 与比较操作符 “===”、“==” 的区别?

同,它处理了一些特殊的情况,比如 -0 和 +0 不再相等,两个 NaN。使用 Object.is 来进行相等判断时,一般情况下和三等号的判断相。使用双等号(==)进行相等判断时,如果两边的类型不一致,则会进。使用三等号(===)进行相等判断时,如果两边的类型不一致时,不。会做强制类型准换,直接返回 false。行强制类型转化后再进行比较。

2023-10-26 09:55:41 41

原创 数据类型检测的方式有哪些

同样是检测对象 obj 调用 toString 方法,obj.toString()的结果和。toString 方法(返回对象的具体类型),所以采用 obj.toString()得到对象的具体类型时,应该调用 Object 原型上的 toString 方法。constructor 有两个作用,一是判断数据的类型,二是对象实例通过。需要注意,如果创建一个对象。instanceof 可以正确判断对象的类型,其内部运行机制是判断在其。用 toString 方法时,根据原型链的知识,调用的是对应的重写之后。

2023-10-26 09:50:00 32

原创 JavaScript 有哪些数据类型,它们的区别?

●BigInt 是一种数字类型的数据,它可以表示任意精度格式的整数,如果存储在栈中,将会影响程序运行的性能;中存储了指针,该指针指向堆中该实体的起始地址。用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。●堆是一个优先队列,是按优先级来进行排序的,优先级可以按照大。●栈区内存由编译器自动分配释放,存放函数的参数值,局部变量的。小、大小固定,属于被频繁使用数据,所以放入栈中存储;●在数据结构中,栈中数据的存取方式为先进后出。heap)中的对象,占据空间大、大小不固。其操作方式类似于数据结构中的栈。

2023-10-26 09:44:08 31

原创 tomcat 性能优化

因此一般建议堆的最大值设置为可用内存的最大值的80%。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。最好的方式是多设置几次并且进行测试,观察响应时间和内存使用情况在不同的机器、操作系统或虚拟机组合的情况下可能会不同,而且并不是所有人的web站点的流量都是一样的,因此没有一刀切的方案来确定线程数的值。acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。

2023-08-28 08:19:36 45

原创 MyBatis 实现一对一有几种方式?具体怎么操作的?

resultMap 里面配置 association 节点配置一对一的类就可以完成;据,也是通过 association 配置,但另外一个表的查询通过 select 属性配置。是先查一个表,根据这个表里面的结果的 外键 id,去再另外一个表里面查询数。有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次, 通过在。

2023-07-19 08:49:50 55

原创 MySQL 中如何忽略表名的大小写?

在[mysqld]节点下,加入一行: lower_case_table_names=1。在 linux 下,一些系统需要手动设置。用 root 登录,打开并修改 /etc/my.cnf;mysql 在 windows 系统下安装好后,默认是对表名大小写不敏感的。服务 systemctl restart mysqld。

2023-07-19 08:47:56 315

原创 百万级量的数据分页查询如何优化?

-语句样式: MySQL 中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N。回 1,2,3,另外的一次返回 2,1,3). Limit 限制的是从结果集的 M 位置处取出 N 条。--语句样式: MySQL 中,可用如下方法: SELECT FROM 表名称 WHERE。--语句样式: MySQL 中,可用如下方法: SELECT FROM 表名称 WHERE。--原因: 索引扫描,速度会很快. 但 MySQL 的排序操作,只有 ASC 没有。

2023-07-18 08:24:20 715

原创 sql 语句关键词的执行顺序?

即:from—>where—>group by—>having—>计算所有的表达式—>order。WHERE 子句, 基于指定的条件对记录进行筛选。GROUP BY 子句, 将数据划分为多个分组。FROM 子句, 组装来自不同数据源的数据;使用 ORDER BY 对结果集进行排序。使用 HAVING 子句筛选分组。by—>select 输出。使用聚合函数进行计算。

2023-07-18 08:20:49 31

原创 内连接和外连接的区别

sql 语句:Select ……from 表 1 left outer join 表 2 on 表 1.C=表 2.C。from 表 1 inner join 表 2 on 表 1.A=表 2.E。from 表 1 rignt outer join 表 2 on 表 1.C=表 2.C。内连接:基本与自然连接相同,不同之处在于自然连接要求是同名属性列的比较,左外连接:是在两表进行自然连接,左边表数据行全部保留,右边表保留符合连。右外连接:是在两表进行自然连接,右边表数据行全部保留,左边表保留符合连。

2023-07-18 08:19:10 38

原创 sql 如何去重?

id 列不同,id 类型为 uniqueidentifier;使用 row_number() over()和 partition。id 列不同,id 类型为 int,自增字段,使用聚合函数 max 或其他;总的思路就是先找出表中重复数据中的一条数据,插入临时表中,删除所有的重。by 给每一组添加行号;将行号=1 的数据插入临时表中。重复数据完全一样,使用 distinct;复数据,然后再将临时表中的数据插入表中。

2023-07-18 08:16:58 109

原创 sql 优化有哪些?如何创建索引?创建索引的原则?索引的优缺点?

col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,唯一。优化方式:只能使用具。=和 in 可以乱序(建立索引是可以任意顺序的,mysql 的查询优化器会帮你优。数据库索引,是数据库管理系统中一个排序的数据结构,索引的实现通常使用 B。一是增加了数据库的存储空间;通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降。选择唯一性索引(唯一性索引的值是唯一的,可以更快速的通过该索引来确定某。

2023-07-14 08:57:29 86

原创 spring Boot与消息

成,这些属性包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指出。消息,消息是不具名的,它由消息头和消息体组成。消息体是不透明的,而消息头则由一系列的可选属性组。拟连接,AMQP 命令都是通过信道发出去的,不管是发布消息、订阅队列还是接收消息,这。消息发送者发送消息,消息代理将其放入一个队列中,消息接收者从队列中获取消息内容,它是消息的容器,也是消息的终点。发送者(发布者)发送消息到主题,多个接收者(订阅者)监听(订阅)这个主题,那么。

2023-03-15 08:49:33 73

原创 Spring Boot与缓存

每一个存储在Cache中的条目有一个定义的有效期。一旦超过这个时间,条目为过期的状态。和org.springframework.cache.CacheManager接口来统一不同的缓存技术;Spring从3.1开始定义了org.springframework.cache.Cache。• 每次调用需要缓存功能的方法时,Spring会检查检查指定参数的指定的目标方法是否。如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法。• Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;

2023-03-13 15:36:50 62

原创 Linux篇

chmodu+xfifile 给 fifile 的属主增加执行权限 chmod 751 fifile 给 fifile 的属主分配读、写、执行(7)的权限,使用命令 whatis 可以先出显示出这个命令的用法简要,比如,你可以使用 whatiszcat 去查看‘zcat’的介。Linux查看日志的命令有多种: tail、cat、tac、head、echo等,本文只介绍几种常用的方法。linux 命令’hash’管理着一个内置的哈希表,记录了已执行过的命令的完整路径,用该命令可以打印出你。

2023-03-10 08:58:27 507

原创 Elasticsearch篇

boo”到刚才上述例子的树中,我们先检查根节点,查找 d(“book”, “boo”) = 1 的边,然后检查标号为1的边的子节点,得到单词”books”。它并不加入到集群中,只是简。books”,”book”到”books”的边标号 1,”book”到”cake”的边上标号 4。间编辑距离为 3 到5 的,这个就找到了 cake 这个节点,计算 d(“cake”, “cape”)=1,满足条件所以返回。(1)64 GB 内存的机器是非常理想的, 但是 32 GB 和 16 GB 机器也是很常见的。

2023-03-10 08:51:46 303

原创 MQ篇

这样的话,好处在于,你任何一个机器宕机了,没事儿,其它机器(节点)还包含了这个 queue 的完整数据,别的 consumer 都可以到其它节点上去消费数据。消费端丢失:你消费的时候,刚消费到,还没处理,结果进程挂了,比如重启了,那么就尴尬了,计个分布式的系统呗,参照一下 kafka 的设计理念,broker -> topic -> partition,每个 partition 放一。RabbitMq 比Kafka 成熟,在可用性上,稳定性上,可靠性上, RabbitMq 胜于 Kafka (理论上)。

2023-03-08 09:27:22 115

原创 zookeeper篇

ServerCnxn(ServerCnxn 代表一个客户端和服务端的连接,实现了 Watcher 的 process 接口,此时。(3)ZAB 协议中,每个 Proposal 中都包含一个 epoch 值来代表当前的 Leader周期,Paxos 中名字为。对于第一类,我们将 zookeeper 上的一个 znode 看作是一把锁,通过 createznode的方式来实现。(3)World:最开放的权限控制方式,是一种特殊的 digest 模式,只有一个权限标识“world:anyone”

2023-03-08 09:18:37 545

原创 Nginx篇

master管理进程与worker工作进程的分离设计,使得Nginx能够提供热部署功能,即可以在7×24小时。所有 worker 进程的 listenfd 会在新连接到来时变得可读 ,为保证只有一个进程处理该连接,所有。异常退出时,其它进程正常工作, master 进程则很快启动新的 worker 进程,确保服务不会中断,从。当一个 worker 进程在 accept 这个连接之后,就开始读取请求、解析请求、处理请求,产生数据后,Nginx 是一个高性能的 Web 服务器,能够同时处理大量的并发请求。

2023-03-07 08:52:14 119

原创 SpringCloud篇

2.Eureka保证了可用性,Eureka各个节点是平等的,几个节点挂掉不会影响正常节点的工作,剩余的。环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事,虽然服务能够恢复,但是漫长。除此之外,Eureka还有自我保护机制,如果在15分钟内超过85%的节点没有正常的心跳,那么。Hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的。(4)负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中。

2023-03-07 08:45:31 112

原创 Redis

1.redis 不支持回滚“Redis 在事务失败时不进行回滚,而是继续执行余下的命令”, 所以 Redis 的内部可。接下来系统A抢到锁,发现自己的valueA的时间戳早于缓存中的时间戳,那就不做set操。(二)hash这里value存放的是结构化的对象,比较方便的就是操作其中的某个字段。官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内。2)、数据支持类型 memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据。

2023-03-07 08:40:04 73

01-尚融宝课程介绍.ziw

01-尚融宝课程介绍.ziw

2022-01-05

空空如也

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

TA关注的人

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