开发指南
开发指南项目构建<properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.6.13</spring-boot.version> <spring-cloud.version>2021.0.5</spring-cloud.version> <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version> <aliyun-spring-boot.versio ...
函数式接口
函数式接口
函数式接口:有且只有一个抽象方法的,可以有多个非抽象方法的接口,主要用于 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> ...
线程池
线程池七大参数
参数名
释义
int corePoolSize
核心线程数,线程池创建好之后就准备就绪的线程数量,就等待来接收异步任务;只要线程池不销毁,就一直存在
int maximumPoolSize
最大线程数量,控制资源
long keepAliveTime
当前线程数量大于核心数量, 只要线程空闲大于指定时间,就会释放。核心线程是不释放的。
TimeUnit unit
超时单位
BlockingQueue workQueue
阻塞队列,如果任务数超过核心程数量,就会将多余的任务放到队列当中,只要线程空闲,就会从队列中取出任务
ThreadFactory threadFactory
线程的创建工厂,通常默认,不做修改
RejectedExecutionHandler handler
拒接策略,如果队列满了,按照我们的定义的拒绝策略来拒绝任务。
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...
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. ...
RabbitMQ工作模式与实现方式
RabbitMQ工作模式与实现方式Work queues
不需要设置交换机,只需指定唯一的消息队列即可进行消息传递
可以有多个消费者,多个消费者通过轮询从队列中取消息
消息被接受后,队列将消息移除
消费在可以在没有处理完消息的情况下继续获取消息
通过设置 spring.rabbitmq.listener.simple.prefetch: 1 来设置每次处理完消息后才能获取下一条
consumer@Componentpublic class SpringRabbitListener {// workqueue @RabbitListener(queues = "simple.queue") public void listenSimpleQueue01(String msg) throws InterruptedException { System.out.println("消费者01 接收到simple.queue的消息为:" + msg + "," + LocalTime ...
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在网络断开的时候,会清理路由,如果一些自 ...
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正在作 ...