- 博客(24)
- 收藏
- 关注
原创 常用SQL
将str中指定pos位置开始len长度的内容替换为newStr。– 将str字符串指定num位置开始截取len个内容。– 查询当前系统时间(年-月-日 时-分-秒)– 获取date1和date2之间相隔的天数。– 查询指定日期为一年中的第几周。– 查询当前日期(年-月-日)– 查询当前时间(时-分-秒)– 计算date加上n天的日期。– 求所有行中单列结果的总和。– 将指定字符串转换为小写。– 将指定字符串转换为大写。– 查询指定时间的小时值。– 查询指定时间的分种值。– 查询指定日期的年份。
2024-02-07 16:38:23 216
原创 java中的锁
JVM 开发者发现在很多情况下,synchronized 中的代码是被多个线程交替执行的,而不是同时执行的,也就是说并不存在实际的竞争,或者是只有短时间的锁竞争,用 CAS (比较并交换)就可以解决,这种情况下,用完全互斥的重量级锁是没必要的。(自旋的概念,我们放到自旋锁的时候补充)一个对象被初始化后,还没有任何线程来获取它的锁时,那么它就是可偏向的,当有第一个线程来访问它并尝试获取锁的时候,它就将这个线程记录下来,以后如果尝试获取锁的线程正是偏向锁的拥有者,就可以直接获得锁,开销很小,性能最好。
2024-02-07 16:35:36 349
原创 线程池的应用
1.1.降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。1.2提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行。1.3提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。
2024-01-26 16:19:04 331
原创 Spring框架中的单例bean是线程安全的吗
1.Spring框架中的单例bean是线程安全的吗?2.Aop3.Spring中的事务是如何实现的
2024-01-26 16:12:41 252
原创 数据库的优化
我觉得有以下几个方面吧。4.主从复制,读写分离,让写数据不影响读数据。1.使用左模糊查询like '%xx’时,2.使用联合索引但查询条件不包含联合索引的第一个字段时,3.使用联合索引范围查询右边的字段时,范围查询字段的之后字段的索引失效,4.索引列上运算,5.字段是字符串类型但查询条件没加双引号或单引号时。1.查询频率高的字段建立索引,2.值种类少的字段如性别只有男女不应建立索引,3.多个字段需要建立索引建议使用联合索引,4.字段值太长可以建立前缀索引,5.控制索引的数量,不需要每个字段都创建索引。
2024-01-21 18:14:45 408 1
原创 集合与redis
考虑到可能会因为故障导致一个线程不能释放锁而死锁,需要设置锁的过期时间,然后还需要考虑锁的续期等一系列的问题,redis的框架redisson提供了一个watchdog看门狗的机制来解决这个问题,redisson分布式锁的默认过期时间是30秒,watchdog会不断检测持有锁的线程,每隔十秒,如果业务还没执行完,就会重新续期到30秒。缓存穿透是指对一个不存在的key进行大量并发请求访问,因为不存在,所以直接访问数据库,并且也不会添加到缓存,所以所有请求走的都是数据库,数据库压力过大,容易宕机。
2024-01-21 18:11:34 760
原创 【无标题】
在多线程编程中,创建线程是一个昂贵的操作。线程池可以帮助我们减少线程创建和销毁的开销,并且能够有效地控制并发数量,避免因过度创建线程导致系统资源耗尽。Java中提供了线程池的实现,通过Executor框架提供了ThreadPoolExecutor类用于创建和管理线程池。ThreadPoolExecutor可以根据需求自动创建和回收线程,并支持设置线程数量、任务队列、拒绝策略等参数。线程池是一种重要的并发控制机制,它能够有效地管理和复用线程,提高应用程序的性能。
2023-12-05 19:56:47 37
原创 【无标题】
选择合适的定时任务解决方案取决于项目的规模和需求。如果项目较小且任务简单,ScheduledExecutorService是一个简单而有效的选择。对于大型项目或需要更多高级功能的情况,Quartz框架是一个强大的解决方案。而对于分布式环境和复杂的任务调度需求,xxl-job提供了全面的解决方案。在选择时,需要根据项目需求权衡简易性、功能丰富性以及对第三方库的依赖。无论选择哪种方案,都要确保任务的稳定执行和高效管理,以满足项目的实际需求。
2023-12-04 20:17:36 29
原创 【无标题】
在Java中,多线程编程是一项常见的任务,而线程同步是确保多线程安全执行的关键。synchronized 关键字是Java提供的一种简单而强大的线程同步机制,用于协调多个线程对共享资源的访问。本文将深入探讨 synchronized 关键字的使用、原理以及其在多线程编程中的重要性。
2023-11-30 20:33:59 29
原创 深入理解过滤器(Filter)、拦截器(Interceptor)和AOP的差异
在软件开发中,过滤器、拦截器和AOP(面向切面编程)都是常用的概念,它们用于在应用程序中插入特定功能,增加灵活性和可维护性。然而,它们有不同的用途和实现方式。让我们深入探讨过滤器、拦截器和AOP之间的差异。
2023-11-29 20:19:28 199 1
原创 【无标题】
代理模式是软件设计模式中的一种,它允许一个对象(代理对象)作为另一个对象(真实对象)的接口,用于控制对这个对象的访问。在Java中,代理模式有多种实现方式,其中最常见的是静态代理、动态代理和CGLIB代理。本文将深入介绍这三种代理方式,探讨它们的优缺点和适用场景。
2023-11-29 19:57:54 37 1
原创 【无标题】
HTTP: 在传统的 HTTP 中,要实现实时推送通常需要使用轮询(polling)或者长轮询(long polling)等技术,这些方法会增加服务器和网络的负担。总体来说,HTTP 和 WebSocket 针对不同的应用场景设计,HTTP 适用于传统的请求-响应模型,而 WebSocket 更适用于需要实时双向通信的场景。HTTP: 是一种无连接的协议,每次请求都需要建立一个新的连接,服务器处理完请求后立即断开连接。HTTP: 适用于大多数 Web 页面的请求和响应,以及传统的客户端-服务器通信模型。
2023-11-22 20:20:33 48 1
原创 【无标题】
HashMap 的迭代器是快速失败的(fail-fast),这意味着如果在迭代过程中修改了 HashMap 结构,会抛出 ConcurrentModificationException 异常。2.在高并发环境下,ConcurrentHashMap 在一些场景下可能具有更好的性能,因为它能够支持并发读写,而 HashMap 需要外部同步控制。HashMap 不是线程安全的,这意味着如果多个线程同时访问或修改一个 HashMap 实例,可能会导致不确定的行为,甚至是数据损坏或丢失。
2023-11-21 20:13:01 36 1
原创 【无标题】
ThreadLocal提供了一种在多线程环境下,每个线程都拥有自己独立的变量副本的机制。通过ThreadLocal,可以在不同的线程中存储和访问各自的数据,避免了线程间的数据共享和竞争条件。ThreadLocal常见的应用场景包括但不限于:线程安全的日期格式化工具、数据库连接管理、用户登录信息存储等。在使用ThreadLocal时,需要注意清理变量,以防止内存泄漏。
2023-10-25 19:49:34 53 1
原创 【无标题】
CAS是Compare-And-Swap(比较并交换)的缩写,是一种轻量级的同步机制,主要用于实现多线程环境下的无锁算法和数据结构,保证了并发安全性。它可以在不使用锁(如synchronized、Lock)的情况下,对共享数据进行线程安全的操作。CAS操作包含三个参数:内存地址V、期望值A和新值B。CAS的基本流程如下:1.首先,读取内存地址V的当前值,记为C。2.判断C是否等于期望值A,如果相等,则执行第4步;否则,执行第3步。
2023-10-24 19:32:53 37
原创 spring缓存注解
注:使用 equals() 方法会比较两个对象的值是否相等,而不仅仅是比较引用。在这个例子中,a.equals(b) 的结果将会是 true,因为它们的值相等。// 使用 数据类型转换方法,比较值是否相等。// 使用 equals() 方法比较值是否相等。
2023-10-18 20:09:50 46
原创 mysql数据库引擎-Inodb,MyISAM
数据库引擎(Database Engine)是指数据库系统中负责数据存储、管理和访问的核心模块或软件组件。它提供了对数据库的创建、修改、查询、删除等操作,并负责处理数据的存储、索引、事 务管理、并发控制、安全性等方面的功能。常见的数据库引擎有Oracle Database、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB等,它们根据不同的需求和使用场景提供了不同的功能和性能特点。
2023-10-16 19:34:55 326 1
原创 maven私服+mybatisplus
选中maven-public群组,之后访问maven-public就可以访问自己的私有仓库了。1.下载安装nexus版本nexus-3.40.1-01-unix.tar.gz。8.在浏览器中输入http://192.168.237.131:8081/1.在maven的conf/settings.xml中配置server。5.默认端口为8081,如果需要在要在文件中配置端口。2.添加新建仓库到maven-public群组中。2.在项目的pom.xml文件中添加。3.批量上传本地文件到自定义仓库中。
2023-10-16 19:04:02 138 1
原创 springboot整合Dockerfile
1.先创建一个hello的文件2.编辑hello这个文件vim hello3.设置数据为4.运行Dockerfile5.linux中配置远程访问docker6.重启docker7.测试2375端口是否有效8.curl测试服务是否启动9.开放2375端口。
2023-10-10 20:15:09 52
原创 linux和docker常用命令
1.查看镜像2.索镜像 docker search 镜像名3.拉取镜像 docker pull 镜像名4.删除镜像 :docker rmi 镜像名。
2023-10-08 20:42:06 178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人