当前位置: 首页 > news >正文

sns社交网站/网络推广哪个平台最好

sns社交网站,网络推广哪个平台最好,广州响应式网站开发,网站不稳定一,前提准备 最基本前提:你需要有liunx环境,如果没有请参考其它文献在自己得到local建立一个虚拟机去进行测试。 有了虚拟机之后,你还需要安装jdk和配置环境变量 1. 安装JDK(以OpenJDK 17为例) 下载JDK…

一,前提准备

最基本前提:你需要有liunx环境,如果没有请参考其它文献在自己得到local建立一个虚拟机去进行测试。

有了虚拟机之后,你还需要安装jdk和配置环境变量

1. 安装JDK(以OpenJDK 17为例)

下载JDK

# 进入用户主目录
cd ~

# 下载OpenJDK 17(以.tar.gz包为例)
wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz

# 或Oracle JDK(需官网同意许可协议)
# wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

 

这里就已经下好了 

 解压并安装

# 创建安装目录(需sudo权限)
sudo mkdir -p /usr/local/java

# 解压JDK到目标目录
sudo tar -xzvf openjdk-17.0.2_linux-x64_bin.tar.gz -C /usr/local/java

# 查看解压后的目录名(例如jdk-17.0.2)
ls /usr/local/java

命令解释

mkdir -p /path/to/directory
  • 递归创建目录:当你指定的路径中某些目录不存在时,mkdir -p 会自动创建这些缺失的父目录。
  • 不会报错:如果目录已经存在,mkdir -p 不会报错,命令会正常执行。
tar -xzvf openjdk-17.0.2_linux-x64_bin.tar.gz -C /usr/local/java

tar -xzvf 是用来解压 .tar.gz.tgz 文件的命令。

  • x:表示 解压(extract)。
  • z:表示 通过 gzip 压缩格式进行解压(unzip the gzip file)。
  • v:表示 显示详细信息,在解压时列出文件名。这个选项是可选的,用来查看解压过程中有哪些文件被处理。
  • f:表示 指定文件,后面需要跟要解压的 .tar.gz 文件名。

2, 配置环境变量

编辑环境变量文件

# 打开用户环境变量配置文件(以bash为例)
nano ~/.bashrc  # 或 ~/.bash_profile、~/.zshrc(根据Shell类型)

命令解释

  • nano:是一个命令行下的文本编辑器。它非常简单,适合快速编辑文件。
  • ~/.bashrc:是当前用户主目录下的 Bash 配置文件。每当你打开一个新的终端时,Bash shell 会加载该文件。在这个文件中,你可以设置环境变量、命令别名、shell 提示符样式等。

添加以下内容到文件末尾

需要注意,不能有空格 

# 手动安装配置
export JAVA_HOME=/usr/local/java/jdk-17.0.2  # 替换为实际解压路径
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 包管理器安装配置(若使用方式2)
# export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
# export PATH=$JAVA_HOME/bin:$PATH

 

使配置生效 

source ~/.bashrc  # 根据实际配置文件选择

 验证安装

# 检查Java版本
java -version

# 输出应类似:
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode)

# 检查JAVA_HOME
echo $JAVA_HOME
# 输出:/usr/local/java/jdk-17.0.2

 

 自动化脚本安装示例:

#!/bin/bash
# 一键安装并配置JDK 17(手动方式)
JDK_URL="https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz"
INSTALL_DIR="/usr/local/java"

# 下载并解压
sudo mkdir -p $INSTALL_DIR
wget $JDK_URL -O /tmp/jdk17.tar.gz
sudo tar -xzvf /tmp/jdk17.tar.gz -C $INSTALL_DIR

# 配置环境变量
echo "export JAVA_HOME=$INSTALL_DIR/$(ls $INSTALL_DIR)" >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 验证
java -version

 二,Java代码准备

编写一个简单的让程序不断创建新对象,然后GC在不停地回收,但是又回收不掉地样例。并打包为jar包给到我们的liunx服务器。

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;public class Main {// 内存泄漏:让对象无法被GC回收private static final List<byte[]> LEAK_LIST = new ArrayList<>();// CPU密集型任务开关private static final AtomicBoolean RUNNING = new AtomicBoolean(true);public static void main(String[] args) {// 内存泄漏线程:持续分配内存,触发频繁GCnew Thread(() -> {while (true) {// 每次分配1MB内存(不会被回收)LEAK_LIST.add(new byte[1024 * 1024]);try {Thread.sleep(100); // 控制内存分配速度} catch (InterruptedException e) {e.printStackTrace();}}}, "MemoryLeakThread").start();// CPU密集型线程:死循环计算,占用CPUnew Thread(() -> {while (RUNNING.get()) {// 无意义但耗CPU的计算double result = 0;for (int i = 0; i < 100000; i++) {result += Math.sin(i) * Math.cos(i);}}}, "CpuIntensiveThread").start();}
}

打包为可执行jar包

将jar包给到linux

这里我用的vmware的文件共享区进行的共享的。

在虚拟机的设置里面

在选项这里进行配置一下

vmware的文件共享区在Linux中的/mnt/hgfs/ 文件下

 如果/mnt/hgfs 目录为空

  • 可能原因

    • VMware Tools未正确安装。

    • 共享文件夹未启用或配置错误。

    • 自动挂载服务未运行。

解决方案
步骤1:检查VMware Tools状态

# 查看服务是否运行(Ubuntu/Debian)
systemctl status vmware-tools.service

# 重启服务(如果未运行)
sudo systemctl restart vmware-tools.service

如果未安装 VMware Tools则

# 检查 open-vm-tools 状态

systemctl status open-vm-tools

# 若服务存在且未运行,

启动服务

sudo systemctl start open-vm-tools

sudo systemctl enable open-vm-tools

步骤2:手动挂载共享文件夹(临时生效)

# 创建挂载点(若目录不存在)
sudo mkdir -p /mnt/hgfs

# 手动挂载
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other

#如果因为权限不足,可以加权限

sudo usermod -aG root rojer(rojer是用户名)

步骤3:配置开机自动挂载(永久生效)

# 编辑/etc/fstab文件
sudo nano /etc/fstab

# 添加以下行(保存退出)
.host:/    /mnt/hgfs    fuse.vmhgfs-fuse    allow_other,defaults    0    0

# 重新挂载
sudo mount -a

 准备调试工具

使用阿里的arthas

arthas/README_CN.md at master · alibaba/arthas · GitHub

 下载 Arthas 的 arthas-boot.jar 文件

 curl -O https://arthas.aliyun.com/arthas-boot.jar

 

三,开始测试

使用以下JVM参数启动程序,加速问题暴露(JDK1.8版本):
java -Xms100m -Xmx100m        # 限制堆内存为100MB,加速GC触发
 -XX:+UseG1GC                # 使用G1垃圾回收器(观察GC日志)
 -XX:+PrintGCDetails         # 打印GC详细信息
 -XX:+PrintGCDateStamps      # 显示GC时间戳

 -jar
 GcDemo.jar

Java 9 及以上改用 -Xlog:gc

java -Xms100m -Xmx100m -XX:+UseG1GC -Xlog:gc -jar GCdemo.jar

启动之后问题出现

现象验证方法

观察GC频繁:

1,使用ps -ef | grep java

找到java进程的pid

 

2,通过top命令观察java进程的实时状态

2,使用 jstat -gc <pid> 1000(每秒刷新):

观察GC回收状况,从上面命令可以看出内存资源并不紧张,所以这里只做展示

YGC(Young GC次数)和 FGC(Full GC次数)会快速上升。

从上面可以看出fullGC的次数才3次,且回收时间不大,说明内存情况很健康。又从top中看到cpu资源已经打满,说明有程序在疯狂占用cpu的计算资源。

这里解释一下上图的代表意思

字段说明
S0CSurvivor Space 0 Capacity(幸存区 0 容量),表示幸存区 0 的容量。
S1CSurvivor Space 1 Capacity(幸存区 1 容量),表示幸存区 1 的容量。
S0USurvivor Space 0 Utilization(幸存区 0 使用量),表示幸存区 0 当前使用的内存量。
S1USurvivor Space 1 Utilization(幸存区 1 使用量),表示幸存区 1 当前使用的内存量。
ECEden Space Capacity(伊甸园区容量),表示伊甸园区的容量。
EUEden Space Utilization(伊甸园区使用量),表示伊甸园区当前的使用量。
OCOld Generation Capacity(老年代容量),表示老年代的容量。
OUOld Generation Utilization(老年代使用量),表示老年代当前使用的内存量。
MCMetaspace Capacity(元空间容量),表示元空间的容量。
MUMetaspace Utilization(元空间使用量),表示元空间当前使用的内存量。
CCSCCompressed Class Space Capacity(压缩类空间容量),表示压缩类空间的容量。
CCSUCompressed Class Space Utilization(压缩类空间使用量),表示压缩类空间的当前使用量。
YGCYoung Generation GC Count(年轻代垃圾回收次数),表示年轻代的垃圾回收次数(包括 Minor GC)。
YGCTYoung Generation GC Time(年轻代垃圾回收时间),表示年轻代垃圾回收所花费的时间(单位:秒)。
FGCFull GC Count(Full GC 次数),表示 Full GC(完全垃圾回收)发生的次数。
FGCTFull GC Time(Full GC 时间),表示 Full GC 所花费的时间(单位:秒)。
CGCConcurrent GC Count(并发 GC 次数),表示并发垃圾回收的次数。
CGCTConcurrent GC Time(并发 GC 时间),表示并发垃圾回收的总时间。
GCTTotal GC Time(总垃圾回收时间),表示自启动以来的所有垃圾回收时间(单位:秒)。

详细观察cpu的占用情况

top -p <pid>

然后 按 H(大写的 H)切换到线程视图:

  • 按下 H 键后,top 会从显示进程列表切换到显示线程列表,每个线程会显示为一个单独的条目。

 使用Arthas诊断:

# 1. 启动Arthas
java -jar arthas-boot.jar

这里选择所要监控的程序。

需要注意,如果出现连接异常,且

~/logs/arthas/arthas.log

路径下log中有

Arthas server agent start...

java.lang.OutOfMemoryError: Java heap space

说明你当前的机器在不断消耗内存,导致arthas起不起来!

因为在jvm初始化的时候,这个阶段非常吃内存。

 查看线程CPU占用

# 当前系统的实时数据面板,按 ctrl+c 退出。

dashboard

这里可以看出cpu已经打满,但是堆内存情况良好。

 追踪高cpu线程

thread

参数名称参数说明
id线程 id
[n:]指定最忙的前 N 个线程并打印堆栈
[b]找出当前阻塞其他线程的线程
[i <value>]指定 cpu 使用率统计的采样间隔,单位为毫秒,默认值为 200
[--all]显示所有匹配的线程

 

 这里就已经能定位到问题了。我这个样例比较简单,就一个main类。大家可以构建复杂一点的项目,进行一点点调试看问题。

使用java原生的也能定位到问题。可能比较繁琐一点。

使用 jstack 获取线程堆栈信息

使用 jvisualvm 进行图形化分析

等等。

其它arthas常用方法

  • trace:追踪方法调用的堆栈,帮助你查看方法内部的执行情况。
  • monitor:监控方法的执行,特别是性能问题,像慢方法。
  • stack:查看线程堆栈,特别是线程阻塞和死锁问题。
  • watch:监控方法调用,查看参数和返回值,帮助定位参数错误。
  • heapdump:生成堆转储文件,帮助分析内存问题。
  • jstack:查看 Java 进程的堆栈信息,诊断崩溃或线程死锁。

参考官方文档使用说明!

auth | arthas

相关文章:

从0开始,来看看怎么去linux排查Java程序故障

一&#xff0c;前提准备 最基本前提&#xff1a;你需要有liunx环境&#xff0c;如果没有请参考其它文献在自己得到local建立一个虚拟机去进行测试。 有了虚拟机之后&#xff0c;你还需要安装jdk和配置环境变量 1. 安装JDK&#xff08;以OpenJDK 17为例&#xff09; 下载JDK…...

DeepSeek-V3:开源多模态大模型的突破与未来

目录 引言 一、DeepSeek-V3 的概述 1.1 什么是 DeepSeek-V3&#xff1f; 1.2 DeepSeek-V3 的定位 二、DeepSeek-V3 的核心特性 2.1 多模态能力 2.2 开源与可扩展性 2.3 高性能与高效训练 2.4 多语言支持 2.5 安全与伦理 三、DeepSeek-V3 的技术架构 3.1 模型架构 3…...

Deep Sleep 96小时:一场没有硝烟的科技保卫战

2025年1月28日凌晨3点&#xff0c;当大多数人还沉浸在梦乡时&#xff0c;一场没有硝烟的战争悄然打响。代号“Deep Sleep”的服务器突遭海量数据洪流冲击&#xff0c;警报声响彻机房&#xff0c;一场针对中国关键信息基础设施的网络攻击来势汹汹&#xff01; 面对美国发起的这场…...

Redis地理散列GeoHash

GeoHash是一种用于地理位置编码的算法&#xff0c;将二维的地理坐标&#xff08;纬度和经度&#xff09;转换为一维的字符串表示&#xff0c;从而实现对地理位置的高效存储和查询。Redis作为一个内存数据库&#xff0c;提供了对GeoHash的支持&#xff0c;使得地理位置相关的数据…...

JAVA安全—反射机制攻击链类对象成员变量方法构造方法

前言 还是JAVA安全&#xff0c;哎&#xff0c;真的讲不完&#xff0c;太多啦。 今天主要是讲一下JAVA中的反射机制&#xff0c;因为反序列化的利用基本都是要用到这个反射机制&#xff0c;还有一些攻击链条的构造&#xff0c;也会用到&#xff0c;所以就讲一下。 什么是反射…...

专业学习|一文了解并实操自适应大邻域搜索(讲解代码)

一、自适应大邻域搜索概念介绍 自适应大邻域搜索&#xff08;Adaptive Large Neighborhood Search&#xff0c;ALNS&#xff09;是一种用于解决组合优化问题的元启发式算法。以下是关于它的详细介绍&#xff1a; -自适应大领域搜索的核心思想是&#xff1a;破坏解、修复解、动…...

9. k8s二进制集群之kube-controller-manager部署

同样在部署主机上创建证书请求文件(为之后的证书生成做准备)根据上面的证书文件创建证书(结果会在当前目录下产生kube-controller-manager证书)创建kube-controller-manager服务配置文件创建kube-controller-manager服务启动文件同步kube-controller-manager证书到对应mast…...

轮转数组-三次逆置

题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 void rotate(int* nums, int numsSize, int k){}示例&#xff1a; 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] …...

3 卷积神经网络CNN

1 Image Classification (Neuron Version) – 1.1 Observation 1 1.2 Observation 2 如果不同的receptive field需要相同功能的neuron&#xff0c;可以使这些neuron共享参数 1.3 Benefit of Convolutional Layer 2 Image Classification (Filter Version) 不用担心filter大小…...

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>黄金矿工

目录 决策树&#xff1a;代码设计代码&#xff1a; 决策树&#xff1a; 代码设计 代码&#xff1a; class Solution {boolean[][] vis;int ret,m,n;public int getMaximumGold(int[][] grid) {m grid.length;n grid[0].length;vis new boolean[m][n]; for(int i 0; i <…...

java基础1(黑马)

一、初识Java 1.Java背景知识 1&#xff09;Java是美国SUN公司在1995年推出的一门计算机高级编程语言。 2&#xff09;Java早期名称为OAK&#xff0c;后来才改为Java。 3&#xff09;Java之父&#xff1a;詹姆斯高斯林。 4&#xff09;2009年&#xff0c;SUN公司被Oracle公…...

ES6 对象扩展:对象简写,对象属性 表达式,扩展运算符 ...,Object.assign,Object.is,用法和应用场景

1. 对象属性简写 1.1 基本语法 // 传统写法 const name John; const age 25; const user {name: name,age: age };// ES6 简写语法 const user {name,age };1.2 实际应用场景 // 1. 函数返回对象 function createUser(name, age, email) {return {name,age,email}; }// …...

2025 持续防范 GitHub 投毒,通过 Sharp4SuoExplorer 分析 Visual Studio 隐藏文件

在2024年底的网络安全事件中&#xff0c;某提权工具被发现植入后门&#xff0c;攻击者利用 .suo 文件作为隐蔽的攻击方式。由于 .suo 文件是 Visual Studio 项目的隐藏配置文件&#xff0c;通常不为安全研究人员所关注&#xff0c;因此为攻击者提供了潜在的攻击渠道。 初步调查…...

PCB走线宽度与过流能力参考

我们PCB走线&#xff0c;线宽与允许通过电流的大小是什么样的&#xff1f;几个因素 1、允许的温升&#xff1a;如果能够允许的铜线升高的温度越高&#xff0c;那么允许通过的电流自然也就越高 2、走线的线宽&#xff1a;线越宽 &#xff0c;导线横截面积越大&#xff0c;电阻…...

电商项目-分布式事务(四)基于消息队列实现分布式事务

基于消息队列实现分布式事务&#xff0c;实现消息最终一致性 如何基于消息队列实现分布式事务&#xff1f; 通过消息队列实现分布式事务的话&#xff0c;可以保证当前数据的最终一致性。实现思路&#xff1a;将大的分布式事务&#xff0c;进行拆分&#xff0c;拆分成若干个小…...

g++ -> make -> cmake(草稿)

1 Windows上安装mingw 2 构建一个 c 项目 3 g 编译 4 make 编译 5 cmake 编译...

JSON常用的工具方法

前言: 在日常开发中&#xff0c;JSON 数据的处理是常见的需求。无论是数据转换、格式化还是与其他格式的互转&#xff0c;掌握一些常用的工具方法可以大大提高开发效率。本文将介绍一些实用的 JSON 操作方法&#xff0c;帮助你快速上手。 JSON常用的工具方法 1.json字符串转换…...

【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信

Kubernetes中Pod间的通信 本系列文章共3篇: 【Kubernetes Pod间通信-第1篇】在单个子网中使用underlay网络实现Pod到Pod的通信【Kubernetes Pod间通信-第2篇】使用BGP实现Pod到Pod的通信(本文介绍)【Kubernetes Pod间通信-第3篇】Kubernetes中Pod与ClusterIP服务之间的通信…...

[权限提升] Windows 提权 维持 — 系统错误配置提权 - Trusted Service Paths 提权

关注这个专栏的其他相关笔记&#xff1a;[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01&#xff1a;Trusted Service Paths 提权原理 Windows 的服务通常都是以 System 权限运行的&#xff0c;所以系统在解析服务的可执行文件路径中的空格的时候也会以 System 权限进行解析&a…...

8. k8s二进制集群之Kubectl部署

创建kubectl证书请求文件生成admin证书文件复制admin证书到指定目录生成kubeconfig配置文件接下来完成kubectl配置文件的角色绑定【扩展】kubectl命令补全操作继续上一篇文章《k8s二进制集群之Kube ApiServer部署》下面介绍一下k8s中的命令行管理工具kubectl。 通过kubectl可以…...

初学 Xvisor 之理解并跑通 Demo

官网&#xff1a;https://www.xhypervisor.org/ quick-start 文档&#xff1a;https://github.com/xvisor/xvisor/blob/master/docs/riscv/riscv64-qemu.txt 零、Xvisor 介绍 下面这部分是 Xvisor 官方的介绍 Xvisor 是一款开源的 Type-1 虚拟机管理程序&#xff0c;旨在提供一…...

深度内容运营与开源AI智能名片2+1链动模式S2B2C商城小程序在打造种草社区中的应用研究

摘要&#xff1a;移动互联网的迅猛发展极大地改变了消费者的购物行为和消费习惯&#xff0c;传统的购物体验已难以满足用户日益增长的个性化需求。在这种背景下&#xff0c;深度内容运营和实时互动成为提升用户购物体验、影响用户购物行为的重要手段。同时&#xff0c;开源AI智…...

RNN/LSTM/GRU 学习笔记

文章目录 RNN/LSTM/GRU一、RNN1、为何引入RNN&#xff1f;2、RNN的基本结构3、各种形式的RNN及其应用4、RNN的缺陷5、如何应对RNN的缺陷&#xff1f;6、BPTT和BP的区别 二、LSTM1、LSTM 简介2、LSTM如何缓解梯度消失与梯度爆炸&#xff1f; 三、GRU四、参考文献 RNN/LSTM/GRU …...

音频录制一般在什么情况下会选择保存为PCM?什么情况会选择保存为WAV?

在音频开发中&#xff0c;选择保存为 PCM 或 WAV 格式取决于具体的应用场景和需求。以下是两种格式的特点以及适用场景的分析&#xff1a; PCM 格式 特点&#xff1a; 原始音频数据&#xff1a; PCM 是未压缩的原始音频数据&#xff0c;没有任何文件头或元数据。数据直接以二进…...

C#常用744单词

1.visual 可见的 2.studio 工作室 3.dot 点 4.net 网 5.harp 尖端的&#xff0c;锋利的。 6.amework 骨架&#xff0c;构架&#xff0c;框架 7.beta 测试版&#xff0c;试用版 8.XML&#xff08;全称&#xff1a;eXtensible Markup Language&#xff09…...

如何理解算法的正确性?

循环不变式&#xff08;Loop Invariant&#xff09; 是算法设计和程序验证中的一个核心概念&#xff0c;用于证明循环的正确性。它是在循环的每次迭代开始和结束时均保持为真的一种条件或性质&#xff0c;帮助开发者确保循环按预期工作&#xff0c;最终达到目标状态。 循环不变…...

蓝桥杯试题:排序

一、问题描述 给定 nn 个正整数 a1,a2,…,ana1​,a2​,…,an​&#xff0c;你可以将它们任意排序。现要将这 nn 个数字连接成一排&#xff0c;即令相邻数字收尾相接&#xff0c;组成一个数。问&#xff0c;这个数最大可以是多少。 输入格式 第一行输入一个正整数 nn&#xff…...

实验十一 Servlet(二)

实验十一 Servlet(二) 【实验目的】 1&#xff0e;了解Servlet运行原理 2&#xff0e;掌握Servlet实现方式 【实验内容】 改造实验10&#xff0c;引入数据库&#xff0c;创建用户表&#xff0c;包括用户名和密码&#xff1a;客户端通过login.jsp发出登录请求&#xff0c;请求…...

第五天 初步了解ArkTS和ArkUI

初步了解ArkTS和ArkUI&#xff0c;可以从以下几个方面进行概述&#xff1a; 一、ArkTS简介 定义与关系&#xff1a; ArkTS是HarmonyOS&#xff08;鸿蒙系统&#xff09;优选的主力应用开发语言。它基于TypeScript&#xff08;TS&#xff09;进行扩展&#xff0c;兼容TS的所有特…...

java中的锁面试题

1、多线程中 synchronized 锁升级的原理是什么&#xff1f; synchronized 是JVM层面的锁&#xff0c;是 Java 关键字&#xff0c;通过 monitor 对象来完成&#xff0c;synchronized 的实现涉及到锁的升级&#xff0c;具体为无锁、偏向锁、自旋锁、重量级锁 synchronized 锁升级…...