shusheng007编程手记

2023-05-16

[版权申明] 非商业目的注明出处可自由转载
出自:shusheng007

文章目录

  • 概述
  • 工具篇
    • IntelliJ IDEA
      • 在Idea中下载源码时,报无法下载源码
    • Postman
      • 使用Postman发送Post请求服务端报得到了Get请求
    • JVM
      • 服务端报:PKIX path building failed
  • Linux
    • 开启关闭防火墙
    • 开放端口
    • 关闭端口
    • 如何修复磁盘
  • 开发篇
    • Nginx
      • 如何使用docker来安装Nginx
    • Java
      • 如何在后台运行jar文件并打印log
    • Lombok
      • 如何注入带`@Qualifier`的参数到构造函数中
    • 安全
      • 如何使用OpenSSL生成自签名证书
      • 如何将自签名证书配置到Nginx上
      • 存在Nginx的情况下还需要给Tomcat配置Https吗?
  • 更多精彩

概述

本文记录了一些日常工作中遇到的小问题及解决方案,无他。持续更新到不做程序员…

工具篇

IntelliJ IDEA

在Idea中下载源码时,报无法下载源码

在这里插入图片描述

鼠标选中你的项目,右键点击:Open In -> Terminal 在项目路径下打开终端,当然你也可以直接打开命令行窗口,导航到你的项目目录下。

执行以下命令:

mvn dependency:resolve -Dclassifier=sources

等待下载完成即可。

Postman

使用Postman发送Post请求服务端报得到了Get请求

Post请求可能被Web服务器,例如Nginx或者Tomcat给识别成Get请求了。只需要强制使用https,像下面这样即可:

https://your-domain:port/**

JVM

服务端报:PKIX path building failed

通过RestTemplate以HTTPS的方式访问其他服务时,报如下错误:

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

这是由于RestTemplate校验目标服务端的证书没有通过导致的,可以按照如下方法解决

方法1:给JVM导入目标服务端的证书

  1. 下载目标网站证书

在Google浏览器中打开你要访问的服务的Url, 点击F12看看web开发工具,选择Security,然后查看证书。

在这里插入图片描述

点击Detail,然后点击export导出证书
在这里插入图片描述
选择如下图所示的类型,并保存证书
在这里插入图片描述

  1. 将证书导入JVM中

查找你本机JVM证书仓库地址,在JDK安装目录里面

C:\Program Files\Java\jdk-11.0.16.1\lib\security\cacerts

使用admin权限打开命令行窗口,并执行下面导入证书的命令

keytool -import  -trustcacerts -alias 你的别名 -file "C:\MyJob\projects\job\certificate\api.qa.volvoconnect.com.crt" -keystore "C:\Program Files\Java\jdk-11.0.16.1\lib\security\cacerts" -storepass changeit

-file 你证书的保存地址
-keystore 你本机JVM证书仓库地址

查看证书列表(可选)

keytool -list -keystore "C:\Program Files\Java\jdk-11.0.16.1\lib\security\cacerts" -storepass changeit

当然,我们也可以手动删除cacerts中指定名称的证书:

keytool -delete -alias 你的别名 “C:\Program Files\Java\jdk-11.0.16.1\lib\security\cacerts” -storepass changeit

有时导入证书后仍然不行,我们也可以尝试通过环境变量指定ssl仓库给JVM

javax.net.ssl.trustStore=C:\Program Files\Java\jdk-11.0.16.1\lib\security\cacerts

方法2: 在dev环境下忽略证书验证

如果你只在开发环境中遇到这个问题,可以直接忽略证书,省去很多麻烦。

@Slf4j
@Configuration
public class RestTemplateConfig {

    @Value("${spring.profiles.active:}")
    private String activeProfile;

    @Bean("commonRestTemplate")
    public RestTemplate commonRestTemplate(RestTemplateBuilder builder) {
        builder = builder.setConnectTimeout(Duration.ofSeconds(60))
                .setReadTimeout(Duration.ofSeconds(60));

        if (List.of("dev").contains(activeProfile)) {
            try {
                TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;

                SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
                        .loadTrustMaterial(null, acceptingTrustStrategy)
                        .build();

                SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext);

                CloseableHttpClient httpClient = HttpClients.custom()
                        .setSSLSocketFactory(csf)
                        .build();

                HttpComponentsClientHttpRequestFactory requestFactory =
                        new HttpComponentsClientHttpRequestFactory();
                requestFactory.setHttpClient(httpClient);
                
                builder = builder.requestFactory(() -> requestFactory);
            } catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException e) {
                log.error("ignore certificate failed", e);
            }
        }
        return builder.build();
    }
}

Linux

开启关闭防火墙

查看防火墙状态

systemctl status firewalld

开启防火墙

systemctl start firewalld

关闭防火墙

systemctl stop firewalld

开放端口

  1. 查询指定端口是否已开放

终端执行如下命令,提示yes表示开启;no表示未开启。

firewall-cmd --query-port=端口号/tcp
  1. 开放某个端口
firewall-cmd --add-port=端口号/tcp --permanent

其中--permanent表示永久开放

  1. 重新载入添加的端口:
firewall-cmd --reload

关闭端口

firewall-cmd --permanent --remove-port=端口号/tcp

如何修复磁盘

  1. 确认磁盘
df -Th
  1. 执行修复
xfs_repair -L /dev/sda1

开发篇

Nginx

如何使用docker来安装Nginx

  1. 拷贝配置文件

先使用docker运行一个nginx容器,用于获取初始的配置文件。

docker run --name nginx -p 10080:80 -d nginx:latest

导航到你要挂载nginx配置文件的目录,例如D盘的nginx文件夹

cd D:\nginx

拷贝相关配置文件

docker cp nginx:/etc/nginx/nginx.conf .
docker cp nginx:/etc/nginx/conf.d .
docker cp nginx:/usr/share/nginx/html .

注意不要忘了cp命令后面的那个.,它表示拷贝到当前文件夹。因为我们上一步已经导航到我们的目标目录了,所以拷贝到当前目录即可。

删除临时nginx容器

docker stop nginx && docker rm nginx

上面的命令表示停止并删除nginx容器

  1. 编写Nginx运行的docker-compose文件

我们编写一个 nginx_dc.yml,其内容如下。假设其存储路径为 D:\nginx\nginx_dc.yml

version: '3'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - 80:80
    volumes:
      - D:\nginx\conf.d:/etc/nginx/conf.d
      - D:\nginx\nginx.conf:/etc/nginx/nginx.conf:ro
      - D:\nginx\logs:/var/log/nginx
      - D:\nginx\html:/usr/share/nginx/html

执行

docker-compose -f D:\nginx\nginx_dc.yml up -d

其中-d表示以detach模式,也就是说当关闭了当前terminal后,容器仍然运行。

Java

如何在后台运行jar文件并打印log

由于SpringBoot内嵌了Tomcat,所以我们可以将其打包成一个Jar,然后直接运行。但目前是容器的时代,直接运行jar的方式变得越来越少,但是真的还有需求,因为我就遇到过。

那我们如何后台运行

假设我们使用SpringBoot写了一个web程序:my-app.jar

前提运行:

java -jar my-app.jar 

关闭终端则程序退出。

后台运行:

nohup java -jar my-app.jar  & 

注意我们在命令的前面加了一个nobub,在后面加了一个&。上面的命令会在当前目录下生成一个日志文件nohub.out,所有日志都会输出到这里。

指定日志文件:

在linux中,使用数字代表输入输出

  • 0:标准输入
  • 1:标准输出
  • 2:错误输出

下面表示普通日志输出到info.log文件,错误日志输出到error.log>info.log1>info.log的省略

nohup java -jar my-app.jar  >info.log 2>error.log & 

不输出日志文件:

下面的命令不输出日志文件,且指定了当前profile为生产环境。

/dev/null 是linux的黑洞文件,所有丢到这个地方的文件都会被吃掉。

nohup java -jar my-app.jar  --spring.profiles.active=prod >/dev/null 2>&1 & 

>/dev/null 2>&1 表示,标准输出,也就是1,输出到黑洞文件。然后 2 重定向到1,那么相应的2也输出到黑洞文件了。那么最后的结果就是1,2都输出到/dev/null 了。

这个写法非常重要,因为我们一般会在springboot程序中配置我们自己的日志路径,以及日志生成策略。例如每天生成一个文件,每个文件大小多少M等等。我们只有按照如上的方法不打印日志,我们的配置才会生效。

运行后,可以使用如下命令查看my-app进程

ps -ef | grep my-app

可使用如下命令杀死进程

kill -9 pid(上一步查出来的程序的进程号)

Lombok

如何注入带@Qualifier的参数到构造函数中

Spring 推荐使用构造函数注入依赖,于是使用Lombok可以简化代码:

@RequiredArgsConstructor
public class AuthService {
    private final UserService userService;
}

但是如果依赖用到了@Qualifier 怎么办呢,如下代码所示

@RequiredArgsConstructor
public class AuthService {
    @Qualifier(value = "userService1")
    private final UserService userService;
}

如果不做任何处理的话其生成的代码如下:

public class AuthService {
    @Qualifier(value = "userService1")
    private final UserService userService;
    
    public UserService(UserService userService){
    	this.userService = userService;
    }
}

可以看到@Qualifier没起作用。

解决方案:

在project的根目录下添加一个lombok的配置文件:lombok.config,文件内容如下:

lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Qualifier

生成的结果如下:

public class AuthService {
    @Qualifier(value = "userService1")
    private final UserService userService;
    
    public UserService(@Qualifier(value = "userService1") UserService userService){
    	this.userService = userService;
    }
}

lombok 版本要高于1.18.4

这个配置的意思是会将@Qualifier拷贝到相应的位置。

安全

如何使用OpenSSL生成自签名证书

以下操作在Linux环境中完成

使用OpenSSL生成自签名证书只需要4步:

  1. 生成RSA密钥
 openssl genrsa -des3 -out shusheng007.key 2048

-des3 表示加密
2048 表示秘钥长度

按Enter键后,需要输入一个密码,例如pw123。记住这个秘密,后面的几步都需要输入

Generating RSA private key, 2048 bit long modulus (2 primes)
.....+++++
..........+++++
e is 65537 (0x010001)
Enter pass phrase for shusheng007.key:

这样,我们就获得了一个秘钥 shusheng007.key

  1. 从上面的秘钥生成一个没有秘密的秘钥

这个无密码秘钥在配置Nginx的时候使用

openssl rsa -in shusheng007.key -out shusheng007_nopass.key

按Enter键后,输入前面的秘密,例如pw123

Enter pass phrase for shusheng007.key:
writing RSA key
  1. 使用第一步生成的秘钥 shusheng007.key 生成CSR

CSR是Certificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书

 openssl req -new -key shusheng007.key -out shusheng007.csr

输入秘密后需要输入一些信息,例如国家,城市之类的。按照提示一步一步的输入即可

...
-----
Country Name (2 letter code) [AU]:CN                                                  
State or Province Name (full name) [Some-State]:TJ
Locality Name (eg, city) []:JINNAN
Organization Name (eg, company) [Internet Widgits Pty Ltd]:SNG
Organizational Unit Name (eg, section) []:SNG
Common Name (e.g. server FQDN or YOUR name) []:shusheng007.top
Email Address []:sstx_service@163.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

这里面最关键的就是Common Name 那个选项要输入自己的域名,我这边是shusheng007.top。

  1. 生成证书

使用秘钥 shusheng007.key 和 证书请求文件shusheng007.csr来生成证书。我们选择生成x509,并设置时长为3650天,也就是10年。最后生成了名为shusheng007.crt 的证书

openssl x509 -req -days 3650 -in shusheng007.csr -signkey shusheng007.key -out shusheng007.crt

所以最后总共产生了四个文件

-rw-r--r-- 1 root root 1302 May  8 22:27 shusheng007.crt
-rw-r--r-- 1 root root 1045 May  8 22:24 shusheng007.csr
-rw------- 1 root root 1751 May  8 22:17 shusheng007.key
-rw------- 1 root root 1679 May  8 22:18 shusheng007_nopass.key

有用的其实是shusheng007.crtshusheng007_nopass.key

如何将自签名证书配置到Nginx上

shusheng007.crtshusheng007_nopass.key两个文件拷贝到Nginx服务器上,例如

server {
    # 服务器端口使用443,开启ssl
    listen  443 ssl;
   
    # 域名,多个以空格分开
    server_name  shusheng007.top  www.shusheng007.top;

    # ssl证书地址
    ssl_certificate           /xxx/nginx/cert/shusheng007.crt;  
    ssl_certificate_key  /xxx/nginx/cert/shusheng007_nopass.key; 

    # ssl验证相关配置
    ssl_session_timeout  5m;    #缓存有效期
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
    ssl_prefer_server_ciphers on;   #使用服务器端的首选算法
      ...
}

具体步骤请查看 如何在Nginx上启用HTTPS

存在Nginx的情况下还需要给Tomcat配置Https吗?

当给Nginx启用Https后,tomcat就不用配置了。我们在Nginx里通过反向代理将流量通过http转到Tomcat即可。因为Nginx与Tomcat正常情况下都是在内部网络的,所以认为他们直接通信是安全的。

        location / {
          proxy_pass http://youdomain.com:8080;
		  ...	
		 	
        }

更多精彩

敬请期待…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shusheng007编程手记 的相关文章

  • 源码离线安装mariadb

    源码离线安装mariadb 卸载系统自带mariadb libs 使用下面的命令检查是否安装有MySQL MariaDB rpm qa grep mariadb rpm e mariadb libs 5 5 68 1 el7 x86 64
  • 结束,也是开始。

    三年时光转眼即逝 xff0c 临到毕业才幡然醒悟 xff0c 自己掌握的专业技能太少 xff0c 最后几个月才养成了几个好习惯 在上班利用空闲时间多学学其他的技术 xff0c 希望自己可以不停的努力 xff0c 充实自己的每一天
  • 论 "张筱雨"

    当今网络谁最红 xff1f 当今网络谁最裸 xff1f 当今网络谁征服了大多数男人们的眼球 xff1f 当今网络谁最具创新 xff0c 引领时尚潮流 xff0c 当今网络谁敢和日本AV女优叫板 那么她就是 张筱雨 张筱雨 xff01 xff
  • Linux的多用户登录

    1 Windows只允许在同一时刻只有一个用户登录 xff0c 而Linux允许多用户同时登录 2 在Linux下 xff0c 用户有两种登录模式 一种是 图形界面登录 xff0c 类似于Windows 另一种是 文本登录 xff0c 类似
  • URI encode与URL encode对空格的不同处理

    在各种开放平台 OpenAPI越来越多之时 xff0c 客户端软件或多或少的在通过HTTP HTTPS协议与服务器交互 这其中一个常见的情况就是要求对URL进行encode处理 xff0c 以保证中文 特殊字符的正确传递 不过这个小小的en
  • No plugin found for prefix 'install' in the current project解决方案

    本来以下配置 xff0c 报上面的错 lt mirrors gt lt mirror Specifies a repository mirror site to use instead of a given repository The r
  • android的onNewIntent

    1 onNewIntent Intent intent 是Activity类的方法 它被调用发几种情况如下 lt activity android name 61 34 NewIntentDemo 34 android label 61 3
  • 全网火爆,JMeter性能测试-压力负载测试场景(总结)看这一篇足够了......

    目录 xff1a 导读 前言一 Python编程入门到精通二 接口自动化项目实战三 Web自动化项目实战四 App自动化项目实战五 一线大厂简历六 测试开发DevOps体系七 常用自动化测试工具八 JMeter性能测试九 总结 xff08
  • Linux LVM在线扩容xfs文件系统(创建大于2T的磁盘分区)

    1 使用parted方式格式化磁盘 1 1 查看磁盘情况 root 64 superman fdisk l Disk dev sdd 2199 0 GB 2199023255552 bytes 4294967296 sectors Unit
  • Linux LVM在线扩容ext3文件系统

    1 扩容前信息查看 1 2 查看文件系统情况 root 64 superman df h 文件系统 容量 已用 可用 已用 挂载点 dev mapper VG00 lv root 30G 23G 5 3G 82 dev mapper VG0
  • Linux云计算-04_Linux用户及权限管理

    Linux是一个多用户的操作系统 xff0c 引入用户 xff0c 可以更加方便管理Linux服务器 xff0c 系统默认需要以一个用户的身份登录 xff0c 而且在系统上启动进程也需要以一个用户身份器运行 xff0c 用户可以限制某些进程
  • 01 openEuler操作系统介绍

    文章目录 01 openEuler操作系统介绍1 1 发布件1 2 最小硬件要求1 3 硬件兼容性1 4 关键特性1 4 1 openEuler 22 03 LTS基于 Linux Kernel 5 10 内核构建 在进程调度 内存管理等方
  • 02 openEuler操作系统的安装

    文章目录 02 openEuler操作系统的安装2 1 openEuler操作系统的安装流程2 2 openEuler操作系统的安装详细步骤2 2 1 下载地址2 2 2 创建虚拟机2 2 2 1 方法一 xff1a 典型配置2 2 2 2
  • 06 openEuler XFCE 桌面环境的安装和使用

    06 openEuler XFCE 桌面环境的安装和使用 文章目录 06 openEuler XFCE 桌面环境的安装和使用6 1 XFCE简介6 2 XFCE安装方法6 2 1 更新软件源6 2 2 安装字库6 2 3 安装Xorg6 2
  • 21 openEuler 管理服务-改变运行级别

    文章目录 21 管理服务 改变运行级别21 1 Target和运行级别21 2 查看系统默认启动目标21 3 查看当前系统所有的启动目标21 4 改变默认目标21 5 改变当前目标21 6 切换到救援模式21 7 切换到紧急模式 21 管理
  • 字符串通配(动态规划java)

    1 牛客网题目 xff1a 题目描述 对于字符串A xff0c 其中绝对不含有字符 和 再给定字符串B xff0c 其中可以含有 或 xff0c 字符不能是B的首字符 xff0c 并且任意两个 字符不相邻 exp中的 代表任何一个字符 xf
  • 26 openEuler管理网络-使用ip命令配置网络

    文章目录 26 openEuler管理网络 使用ip命令配置网络26 1 配置IP地址26 1 1 配置静态地址26 1 2 配置多个地址 26 2 配置静态路由 26 openEuler管理网络 使用ip命令配置网络 说明 xff1a 使
  • 31 openEuler使用LVM管理硬盘-管理物理卷

    文章目录 31 openEuler使用LVM管理硬盘 管理物理卷31 1 创建物理卷31 2 查看物理卷31 3 修改物理卷属性31 4 删除物理卷 31 openEuler使用LVM管理硬盘 管理物理卷 31 1 创建物理卷 可在root
  • 41 openEuler搭建FTP服务器-传输文件

    文章目录 41 openEuler搭建FTP服务器 传输文件41 1 概述41 2 连接服务器41 3 下载文件41 4 上传文件41 5 删除文件41 6 断开服务器 41 openEuler搭建FTP服务器 传输文件 41 1 概述 这
  • 45 openEuler搭建Nginx服务器-Nginx概述和安装

    文章目录 45 openEuler搭建Nginx服务器 Nginx概述和安装45 1 概述45 2 安装 45 openEuler搭建Nginx服务器 Nginx概述和安装 45 1 概述 Nginx 是一款轻量级的 Web 服务器 反向代

随机推荐

  • 14 KVM虚拟机配置-配置虚拟设备(其它常用设备)

    文章目录 14 KVM虚拟机配置 配置虚拟设备 xff08 其它常用设备 xff09 14 1 概述14 2 元素介绍14 3 配置示例 14 KVM虚拟机配置 配置虚拟设备 xff08 其它常用设备 xff09 14 1 概述 除存储设备
  • 15 KVM虚拟机配置-体系架构相关配置

    文章目录 15 KVM虚拟机配置 体系架构相关配置15 1 概述15 2 元素介绍15 3 AArch64架构配置示例15 4 x86 64架构配置示例 15 KVM虚拟机配置 体系架构相关配置 15 1 概述 XML中还有一部分体系架构相
  • 16 KVM虚拟机配置-其他常见配置项

    文章目录 16 KVM虚拟机配置 其他常见配置项16 1 概述16 2 元素介绍16 3 配置示例 16 KVM虚拟机配置 其他常见配置项 16 1 概述 除系统资源和虚拟设备外 xff0c XML配置文件还需要配置一些其他元素 xff0c
  • windows查看默认编码类型

    xfeff xfeff 开始 cmd 运行chcp 你会得到一个数 例 xff1a 如936 xff0c 那就是GBK简体中文 ANSI代码页为1252 xff0c 日文代码页为932
  • 三、@PathVariable

    3 1 64 PathVariable 映射 URL 绑定的占位符 带占位符的 URL 是 Spring3 0 新增的功能 xff0c 该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义通过 64 PathVari
  • 走进CSDN

    走进CSDN 关注CSDN不久 xff0c 最近浏览的次数增多 xff0c CSDN的资讯刚开始基本上看的懂的不多 xff0c 专业名词扎堆的论坛 xff0c CSDN的氛围个人感觉挺好的 xff0c 一群俗称 程序员 的人聚集讨论问题 x
  • B端产品经理基本工作流程

    产品岗位必备素质 产品是一个门槛较低的岗位 xff0c 是一个看起来很容易 xff0c 做起来各个地方都是bug的岗位 产品需要更多的是软实力 xff0c 把握产品的方向 xff0c 目标用户是谁 xff0c 场景是什么 xff0c 达到怎
  • Mac实用的远程ssh连接工具( Royal TSX安装及使用)

    Mac实用的远程ssh连接工具 Royal TSX安装及使用 1 下载地址 https www royalapps com ts mac download 2 如何连接远程服务器 2 1 首先下载插件Terminal 2 2 然后创建新的D
  • 尝试VC控制外部程序

    这两天尝试VC控制外部程序呢 xff0c 慢慢完善 在参考了网络学习以后 xff0c 简单做了以下工作 xff1a 期间用了spy 43 43 器件 void CVCControlDlg OnStartreader 启动朗读女 TODO A
  • Windows Sever 2012 R2设置组策略对“不显示最后的登录名”选项已启用

    Windows Sever 2012 R2设置组策略对 不显示最后的登录名 选项已启用 作者 xff1a 我道梦 关注我的CSDN博客 xff0c 更多笔记知识还在更新 xff01 设置组策略启用 不显示最后的登录名 后 xff0c 系统将
  • Ubuntu22.04.1 & WIN11 双系统+双硬盘 grub启动项中无WIN11开机引导

    本机UEFI 43 GPT安装的双系统 xff0c 两块固态硬盘 xff0c 两个系统各自使用自己的硬盘分区 xff0c xff08 选择的全盘安装在新硬盘 xff0c 没有自定义分区 xff0c 所以安装的时候也没有提示与当前window
  • tightvnc,tightvnc软件介绍,详细介绍

    tightvnc一款用于windows操作系统的应用软件 xff0c 是一款远程控制软件 出门在外忘了带档案怎么办 xff1f FTP server 上头忘了开帐号怎么办 xff1f 这些麻烦的问题其实都可以靠 VNC 解决 tightvn
  • OpenCore-EFI-配置模版(持续更新)

    前言 随着OpenCore日臻完善 xff0c 将在以后会更多的用于黑苹果的安装 同时 xff0c 在各位大佬的大力支持与推广 xff0c 各种入门 xff0c 进阶教程的推出 xff0c OpenCore已经从神界降临到人间 逐渐为普通黑
  • OpenCore(OC)引导开机声音与图形界面设置

    关键字 xff1a OC xff1b OpenCore xff1b 引导 xff1b 开机声音 xff1b 图形界面 下面的设置基于OpenCore0 5 8 04 10编译版与1 22 0 0版OpenCore Configurator
  • The BMJ研究:现有的新冠病毒诊断AI模型,几乎毫无用处

    图片出处 xff1a unsplash 本文作者 xff1a 朱演瑞 新型冠状病毒对全球健康造成了严重的威胁 xff0c 为了减轻医疗保健系统的负担 xff0c 也给患者提供最佳的护理 xff0c 高效的诊断和疾病预后信息问题亟待解决 理论
  • 06-Docker-Centos 7.2 (Vmware最小化安装)之一篇搞定hyperledger/fabric的e2e_cli测试运行所遇到的ERROR总结

    bug产生原因分析如下 xff1a 1 系统过于单纯或复杂 xff08 即最小化安装与全部安装以及自行安装了很多软件 xff09 xff0c 很多命令和工具无法使用和执行或冲突 2 自己操作失误 xff0c 敲错代码 xff08 关键词和语
  • 秒懂Java之方法引用(method reference)详解

    版权申明 非商业目的注明出处可自由转载 出自 xff1a shusheng007 相关文章 xff1a 秒懂Java之深入理解Lambda表达式 文章目录 概述使用条件使用场景如何使用方法引用的类型调用类的静态方法调用传入的实例参数的方法调
  • 产品设计中关于思考力那些事

    这周的面试 xff0c 对我自己来说 xff0c 更像是一种迭代反思 从做什么怎么做 xff0c 到为什么做 xff0c 的一种强制思考 一方面是入行时间短 xff0c 另一方面是公司产品业务主导 xff0c 相对不需要产品去思考 xff0
  • 永不磨灭的设计模式(有这一篇真够了,拒绝标题党)

    版权申明 非商业目的注明出处可自由转载 出自 xff1a shusheng007 文章目录 概述定义分类创建型 xff08 creational xff09 结构型 xff08 structural xff09 行为型 xff08 beha
  • shusheng007编程手记

    版权申明 非商业目的注明出处可自由转载 出自 xff1a shusheng007 文章目录 概述工具篇IntelliJ IDEA在Idea中下载源码时 xff0c 报无法下载源码 Postman使用Postman发送Post请求服务端报得到