- 博客(24)
- 收藏
- 关注
原创 JAVA中的线程状态
处于 NEW 状态的线程此时尚未启动。这里的尚未启动指的是还没调用 Thread 实例的。处于等待状态的线程变成 RUNNABLE 状态需要其他线程唤醒。线程等待一个具体的时间,时间到后会被自动唤醒。处于 BLOCKED 状态的线程正等待。(锁会在后面细讲)的释放以进入同步区。此时线程已执行完毕。状态其实包括了操作系统线程的。
2025-02-20 20:39:27
187
原创 接口和抽象类的区别
不包含构造方法: 接口中不能包含构造方法,因为接口不能被实例化。只有抽象方法: 接口中的方法默认为 public abstract,即抽象方法。为什么接口中不能有变量。
2025-02-20 20:34:10
249
原创 ThreadLocal浅解
ThreadLocal其实是与线程绑定的一个变量,如此就会出现一个问题:如果没有将ThreadLocal内的变量删除(remove)或替换,它的生命周期将会与线程共存。通常线程池中对线程管理都是采用线程复用的方法,在线程池中线程很难结束甚至于永远不会结束,这将意味着线程持续的时间将不可预测,甚至与JVM的生命周期一致。,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal其实是与线程绑定的一个变量。
2024-08-27 13:36:34
603
原创 接口类和抽象类概念和区别
只能包含常量(final static 变量): 接口中定义的字段默认为 public static final,即常量。不包含构造方法: 接口中不能包含构造方法,因为接口不能被实例化。只有抽象方法: 接口中的方法默认为 public abstract,即抽象方法。为什么接口中不能有变量。
2024-08-26 22:24:19
422
原创 判断锁是否生效
判断一个锁的作用时,首先看是什么?也即是synchronized锁定了谁的 Monitor 计数器是类本身(例如静态变量或者静态方法,或者直接对类名.class进行上锁),还是成员变量/方法再看上锁的方法如果是对类本身上锁,那么无论是一个实例还是多个实例都是有效的,因为上锁的对象全局唯一如果是对类的成员变量/方法上锁:运行在同一个实例对象上,那么这个锁就可以生效运行在不同的实例对象上,那么这个锁就无效结合具体代码来看。
2024-08-25 22:55:07
414
原创 CSS text-overflow:ellipsis使用心得
*HTML 元素的默认样式**:`<a>` 和 `<div>` 元素的默认样式有所不同。1.**将 `<div>` 换成行内元素**:可以尝试将 `<div>` 换成 `<span>`,因为 `<span>` 是行内元素,行为与 `<a>` 类似。3. **检查父容器样式**:确保父容器 `.fileName-contain` 的样式正确应用,没有被其他样式干扰。2. **为块级元素设置宽度和样式**:如果必须使用 `<div>`,可以尝试显式设置宽度并确保样式正确应用。使用时,并没有放在一个容器里。
2024-08-01 00:31:40
674
原创 navicat中,mysql数据库中的int类型的数据取出后为0
在idea中使用select * 整体取出数据,使用get()方法获取数据,此时parentId数据可以正常显示,但是user_id的数据全部为0,如下图所示。发现一个奇怪的bug,那就是当navicat里面mysql数据存放的字段名中,存在下划线 ' _ ' 的时候将对应的模块整个查询出来,不会报错,但是有下划线的字段对应的数据取出来会直接变成0。今天再次遇到了这个问题,巧合之下才发现问题的原因,但还是没有找到解决方法,参照另外的方法使用了Integer类型也不行。欢迎大伙在评论留下你们的解决方法。
2024-07-23 22:26:14
530
原创 Linux数据启动成功,但连接失败解决过程记录
因此,当你运行 `systemctl status mysql` 时,它会检查 `mysql` 服务的状态,而运行 `systemctl status mysqld` 时,它会尝试检查 `mysqld` 服务的状态,但是在 Ubuntu 系统中,`mysqld` 服务通常不存在。如果你的 MySQL 服务名称是 `mysql`,那么只有使用 `systemctl status mysql` 命令才能正确显示 MySQL 服务的状态。配置文件里有问题日志的路径,继续查看问题日志,显示报错如下。
2024-04-27 18:39:39
655
1
原创 HashTable 和 HashSet理解
HashTable是线程安全的,这意味着所有方法都是同步的,因此在多线程环境下使用HashTable时不需要额外的同步措施,但这也降低了性能;在数据结构上是基本相同的,都创建了一个继承自Map.Entry的私有的内部类Entry,每一个Entry对象表示存储在哈希表中的一个键值对。由于HashTable是线程安全的,所以在多线程环境下性能较低;总结来说,HashMap的非线程安全和允许null值方面提供了更好的灵活性,而HashTable提供了线程安全和更强的类型安全保证,但牺牲了一定的性能和灵活性。
2024-03-08 17:00:08
438
1
原创 浅谈对协程的理解
*但是,操作系统是不知道协程的存在,只知道线程,**协程只有在等待IO过程中才能重复利用线程,线程在等待IO的过程中会陷入阻塞状态。因此在协程调用阻塞IO操作的时候,操作系统会让线程进入阻塞状态,当前的协程和其它绑定在该线程之上的协程都会陷入阻塞而得不到调度,这往往是不能接受的。通过将线程的执行步骤分解为有IO和没有IO的部分,并且允许在有IO的部分执行时挂起,协程实现了非阻塞IO的效果,从而更好地利用了线程资源。协程并没有增加线程的数量,只是在线程的基础上通过**分时复用**的方式运行多个协程,
2024-02-25 23:28:37
378
1
原创 浅谈对AOP的理解
(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。这样的非核心服务经常融入到自身具有核心业务逻辑的组件中去。面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。,比如对象中的方法进行增强,可以在执行某个方法之前额外的做一些事情。,而不利于各个模块的。
2024-02-24 22:31:59
420
原创 Nginx springboot windous配置总结(附bug:配置weight识别不了解决方法)
例如想要通过访问index直接访问到"localhost:8081/login/hello",就在location后面设置"/index",里面的proxy_pass后面设置"http://backend/login/hello",这样访问"localhost:8080/index",nginx就会自动把服务转发到后端的"localhost:8080/index"访问nginx的基础配置,localhost:80,如果出现图2界面,就说明nginx已经启动了。然后就可以配置自己的负载均衡。
2023-12-22 16:58:47
501
原创 springboot内application.properties操作心得
如果你的静态资源放在`src/main/resources/static/`目录下,而且设置了`spring.mvc.static-path-pattern=/static/**`,那么访问`/static/css/style.css`将会映射到`src/main/resources/static/css/style.css`。**简单来说就是只要是访问`/static/`开头的URL路径就会映射到`src/main/resources/static/css/style.css`。
2023-12-07 02:41:29
428
1
原创 linux nginx 配置https访问
请将 example.com 替换为您自己的域名,并将 /path/to/ssl/certificate 和 /path/to/ssl/certificate_key 替换为 SSL 证书和证书密钥的实际路径。打开 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf),找到的网站配置块。完成配置文件的修改之后,需要重新加载 Nginx 配置文件以使更改生效。在安装了 SSL 证书之后,需要修改 Nginx 的配置文件以启用 HTTPS 和 HTTP 自动跳转 HTTPS。
2023-12-07 02:39:45
609
1
原创 记录一下最近学习linux的心得
在上述命令中,`-15` 选项表示发送 `SIGTERM` 信号,是一个优雅的终止信号,允许程序完成正在进行的工作。如果这不奏效,您可以尝试使用 `-9` 选项,发送 `SIGKILL` 信号,将进程立即终止,但请注意这可能导致未完成的操作。要关闭在后台运行的 Java 项目,您需要找到相应的 Java 进程,并终止它。如果您不确定要终止哪个进程,请提供 `ps aux | grep java` 命令的输出,我可以帮助您识别正确的进程。找到与您的项目相关的进程,并记下其进程ID(PID)。
2023-11-20 23:11:23
45
1
原创 idea打包项目到linux中要注意视图的路径问题
有可能是controller层中的方法返回了"/article",而不是"article",这会导致在Linux中,`return "/article";`,Spring将解释这个字符串作为视图的逻辑名称。这个字符串在代码中的处理方式取决于你的应用程序的逻辑,通常是用于与Web框架(如Spring)交互,以确定要渲染的视图或执行的操作。如果你想在Linux系统中操作文件路径,你需要使用合适的文件路径字符串,例如 `"/path/to/article"`,来表示文件或目录的实际路径。
2023-10-28 09:33:14
112
1
原创 个人博客系统的评论功能的实现
或其他类似的注解来注入Bean,而是通过手动创建对象的方式,你可以创建独立的实例。这些独立的实例将与通过Spring容器管理的Bean无关,拥有它们自己的参数和状态。这允许你在不同的类中拥有不同的实例,而不共享相同的Bean。在springboot中,使用例如@Resource的spring容器依赖注入,那么在不同的controller中创建的对象,都具有相同的参数。实例,你可以手动初始化它或者使用构造函数、Setter 方法等方式来注入一个不同的。同理,如果你在类中不使用。
2023-10-15 23:25:05
193
1
原创 算法心得:替换后的最长重复字符
具体来说,假设 `charArray[i]` 是一个大写英文字母,例如 `'A'`、`'B'`、`'C'` 等,那么表达式 `charArray[i] - 'A'` 将计算出这个字母相对于字母 `'A'` 的偏移量。因为在大多数编码中,字母 `'A'` 的字符编码值通常比其他大写字母的编码值小,所以 `charArray[i] - 'A'` 的结果将是一个在 0 到 25 之间的整数,用于在数组中表示字母的频率或索引。在执行上述操作后,返回包含相同字母的最长子字符串的长度。
2023-09-22 00:11:23
69
原创 linux配置redis
2. **使用源代码编译安装**:如果需要对Redis进行自定义编译或者你的系统不提供预编译的Redis包,你可以下载Redis的源代码并进行编译安装。1. **Redis可执行文件**:Redis服务器的可执行文件通常存储在`/usr/bin/`或`/usr/local/bin/`目录中。4. **Redis日志文件**:Redis的日志文件通常存储在`/var/log/redis/`目录中。3. **Redis数据目录**:Redis的数据文件通常存储在`/var/lib/redis/`目录中。
2023-09-20 22:00:15
163
1
原创 腾讯云连接Xsheel后,配置linux内jdk maven环境
相关博客:https://blog.youkuaiyun.com/weixin_53815644/article/details/123799543。相关博客url:https://blog.youkuaiyun.com/qq_37488998/article/details/111683904。首先查看linux有没有自带的jdk包,如果有,卸载,因为它可能跟不上需要使用的版本。在/usr/local/下创建maven文件夹来放置文件。下载maven安装包到/usr/local/maven。i插入操作(insert)
2023-09-20 13:13:32
79
1
原创 算法心得:双端队列
的下一个节点不是队尾节点时,继续遍历。这是为了找到队尾节点的前一个节点,因为需要更新队尾指针。理解:队列是指针指向是从队头指向队尾,理解这一点后对双端队列的队头插入和队尾插入就会简单很多。函数的目标是从双端队列中删除队尾元素,并返回被删除的元素的值。指针更新为队尾节点的前一个节点,从而将队尾节点从队列中移除。队头插入:新节点的下一个指向原先的队头,再更新队头为新节点。队尾插入:队尾指向新节点,然后把新节点更新为队尾。,这是为了遍历队列以找到队尾节点的前一个节点。最后,函数返回被删除的队尾元素的值,即。
2023-09-17 22:44:45
75
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人