线程池
线程池七大参数
参数名
释义
int corePoolSize
核心线程数,线程池创建好之后就准备就绪的线程数量,就等待来接收异步任务;只要线程池不销毁,就一直存在
int maximumPoolSize
最大线程数量,控制资源
long keepAliveTime
当前线程数量大于核心数量, 只要线程空闲大于指定时间,就会释放。核心线程是不释放的。
TimeUnit unit
超时单位
BlockingQueue workQueue
阻塞队列,如果任务数超过核心程数量,就会将多余的任务放到队列当中,只要线程空闲,就会从队列中取出任务
ThreadFactory threadFactory
线程的创建工厂,通常默认,不做修改
RejectedExecutionHandler handler
拒接策略,如果队列满了,按照我们的定义的拒绝策略来拒绝任务。
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...
函数式接口
函数式接口
函数式接口:有且只有一个抽象方法的,可以有多个非抽象方法的接口,主要用于 Lambda 表达式
例如:
@FunctionalInterfacepublic interface Runnable {public abstract void run();}
@FunctionalInterfacepublic interface Function<T, R> { R apply(T t); default <V> Function<V, R> compose(Function<? super V, ? extends T> before) { Objects.requireNonNull(before); return (V v) -> apply(before.apply(v)); } default <V> Function<T, V> andThen(Function<? super R, ? extends V> ...
Lambda
原始写法interface User{ String UserName(String name);}class Iuser implements User{ @Override public String UserName(String name) { return "我是"+name; }}public class Lambda01 { public static void main(String[] args) { User user = new Iuser(); String userName = user.UserName("阿鑫"); System.out.println(userName); }}
静态内部类interface User { String UserName(String name);}public ...
Maven锁定版本与版本常量
Maven锁定版本与版本常量今天在添加微服务模块是出现了个有趣的现象:
创建了多个微服务;
它们都引用同一个微服务–common;
在common中配置这些微服务的共同依赖;
common中使用锁定版本与版本常量的方式配置好了 spring cloud 、spring cloud alibaba;
在common中配置好 nacos
其他的微服务是通过 Spring Initializr 的方式生成的(没选择其他依赖),所以只有 springboot 的依赖
启动微服务,报错:nacos 和 spring cloud 版本不兼容。
纳尼?
版本不能出错,我之前使用过。
在微服务模块中加入 spring cloud 依赖,启动成功!
纳尼???
我不是在 common中配置好了吗? 根据依赖传递,其他微服务中应该不用配置啊?
<dependencyManagement></dependencyManagement>
dependencyManagement 叫做版本锁定,是为了避免因依赖冲突而 ...
GuliMall-报错集锦
renren-fastpom.xml爆红,插件下载不到
解决方法:把插件注释掉就好,不影响启动。
pom.xml 此时还是爆红,别在意,启动项目
项目启动失败找不到实体中的 get 和 set 方法
首先引入 lombok 插件,还是出问题。
查看lombok插件使用的版本是 1.18.24,而 renren-fast 引用的是 1.18.4,版本不一致。
解决方法:将 renren-fast 应用的版本也改为 1.18.24,启动成功
renren-fast-vuecnpm install报错解决方法:
查找资料得知,nodejs 和 node-sess 有对应的版本要求 详见
我得nodejs版本是18+,所以我需要8.0+的node-sess
修改renren-fast-vue目录下的 package.json 和 package-lock.json
报错:chromedriver@2.27. ...
Connection Failed
问题Xshell 连接不到虚拟机,显示 Connection faild
但是之前可以连接,配置什么的也没动,防火墙也开放了
在虚拟机内查看 ens33 也发现没问题
vim /etc/sysconfig/network-scripts/ifcfg-ens33
查看 ifconfg 时发现 ip 为 127.0.0.1 ,不对劲,应该是网卡出问题了
此时查看 network 状态,发现是 faild
systemctl status network
重启 network 报错:Job for network.service failed because the control process exited with error code. See “systemctl status network.service” and “journalctl -xe” for details.
原因在CentOS系统上,有NetworkManager和network两种网络管理工具。如果两种都配置会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自 ...
ElasticSearch
Elasticsearch
elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中找到需要的内容
elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。
elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。
elasticsearch发展Lucene Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。基于倒排索引,提供了搜索引擎的核心API。由Java编写,有高性能,易扩展等优点。由DougCutting于1999年研发。
但是仅限于Java语言开发,不适用于其他语言,学习难度大,不支持分布式水平扩展
elasticsearch Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。算是lucene外面一层华丽的包装,有支持分布式水平拓展,提供Restful ...
Centos7安装Elasticsearch
1.部署单点es1.1.创建网络因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:
docker network create es-net
1.2.加载镜像docker pull elasticsearch:7.12.1docker pull kibana:7.12.1
1.3.运行运行docker命令,部署单点es:
docker run -d \ --name es \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -e "discovery.type=single-node" \ -v es-data:/usr/share/elasticsearch/data \ -v es-plugins:/usr/share/elasticsearch/plugins \ --privileged \ --network es-net \ -p 9200:9200 \ -p 9300:9300 \elasticsear ...
Screen
Screen(Linux)之前开饥荒服务器就一直使用screen命令,但具体的细节都封装在脚本内。知其然而不知其所以然
screen的功能会话恢复 只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。
多窗口 在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。
会话共享 Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。
状态介绍Attached: 表示当前screen正在作 ...
RabbitMQ
RabbitMQ
MQ(MessageQueue),消息队列,用来存放消息的队列
Docker安装RabbitMQ拉取镜像docker pull rabbitmq:3-management
运行docker run \ -e RABBITMQ_DEFAULT_USER=heroxin \ -e RABBITMQ_DEFAULT_PASS=heroxin \ --name mq \ --hostname mq1 \ -p 15672:15672 \ -p 5672:5672 \ -d \ rabbitmq:3-management
访问服务器IP:15672
SpringAMQP初体验
Advanced Message Queuing Protocol,是用于在应用程序之间传递业务消息的开放标准。该协议与语言和平台无关,更符合微服务中独立性的要求。
Spring AMQP是基于AMQP协议定义的一套API规范,提供了模板来发送和接收消息。包含两部分,其中spring-amqp是基础抽象,spring-rabbit是底层的默认实现。
SpringAmqp网址:Spring ...