掘友等级
获得徽章 0
#每天一个知识点# Lambda表达式是Java 8中引入的一个新的特性,它允许你对函数进行“捕获”,从而在代码中直接内联定义该函数。
代码示例:(parameters) ->{ statements; }
使用Lambda表达式需要遵循如下规则:
- 接口中只能有一个抽象方法
- 参数列表的数据类型可以省略,编译器可以通过上下文推断出数据类型
- 如果抽象方法的主体只有一条语句,可以省略大括号和return关键字
#每天一个知识点# MySQL有以下几种索引类型:
- BTREE索引:最常见的索引类型,是MySQL的默认索引类型。任何字段的类型都可以建立B树索引。
- HASH索引:只支持等值比较,性能好但无法用于排序与部分索引值匹配。
- R-Tree索引:效率高,用于空间数据的索引,但是太大了就会变慢。比如存储地理位置信息的应用。
- FULLTEXT索引:用于全文检索,大致上只考虑词条,而非精确编码。不支持范围检索与排序。
#每天一个知识点# docker相关知识:
- 镜像是用于创建Docker容器的模板
- 镜像是由文件系统和配置文件组成的,是静态的只读模板
- 容器是从镜像创建的运行实例,是动态的可以启动、停止
- 镜像通过Dockerfile来构建,容器通过docker run命令来启动。
- 一个容器只能从一个镜像启动,但是一个镜像可以启动很多容器。
#每天一个知识点# 制作 RabbitMQ 的 Docker 镜像的过程:
首先,创建一个 Dockerfile,其中包含用于构建 Docker 镜像的所有命令。RabbitMQ Dockerfile 示例:
FROM rabbitmq:3.8-management
ENV RABBITMQ_DEFAULT_USER=myuser
ENV RABBITMQ_DEFAULT_PASS=mypassword
EXPOSE 5672 15672
CMD ["rabbitmq-server"]
在包含这个 Dockerfile 的目录下,运行以下命令构建 Docker 镜像:
docker build -t rabbitmqname .
此命令会构建一个新的 Docker 镜像,并命名为 rabbitmqname。
构建成功后,可以运行以下命令启动一个新的 RabbitMQ 容器:
docker run -d -p 5672:5672 -p 15672:15672 rabbitmqname
此命令将在后台运行一个新的容器,并将容器的 5672 和 15672 端口映射到主机的对应端口。
#每天一个知识点# CAS(Compare And Swap)是一种原子操作,它包含三个操作数——要更新的变量V,旧的预期值A,要修改的新值B。
其主要的功能:
只有当V的值等于A时,才将V的值更新为B,否则什么都不做。
#每天一个知识点# StampedLock是Java 8新增的一个锁机制,它是可重入锁和乐观读锁的混合体。
主要方法有:
- readLock():获得一个乐观读锁。
- writeLock():获得一个排他写锁。
- tryOptimisticRead():获得一个乐观读锁,如果锁定失败,会返回-1。
- validate(int):验证给定的锁,如果验证失败,说明数据有变化,返回false。
StampedLock提供了两种锁:
- 乐观读锁:允许多个线程同时读,并在读时验证数据是否有变化,如果有变化则读失败。
- 排他写锁:只允许一个线程写,与常见的可重入锁类似。
#每天一个知识点# CountDownLatch是Java提供的一个线程同步工具类。它可以让某个线程等待其他线程完成一组操作后再继续执行。
主要方法有:
- countDown():递减计数器。
- await():让当前线程在锁存器倒计数至零之前一直等待,除非线程被中断。
典型用法是:某个线程执行一组异步操作,它们完成后主线程继续执行。主线程通过CountDownLatch等待这组异步操作完成。
#每天一个知识点# Java泛型的主要优点有:
1. 类型安全:在编译期就可以发现类型错误,而不是在运行期。
2. 消除类型转换:不需要类型转换,代码更简洁。
3. 重用性:一个泛型类或方法可以用于多种实际类型,更加灵活。
#工作中做得最正确的一件事# 1. 相处不来的人或者事,就不要相处了,不能只是一味改变自己,只会越来越内耗自己,遇到聊得来的人一起做事,心情和效率都会变好
2. 决定做某一件事时,不因为一点蝇头小利、或者不浅不深的人情给影响,社会很现实,机会也会错过,不然只会让自己不断的失去
#世界上最好的编程语言# 我选择php!廉颇老矣,尚能饭否?
下一页