C/C++ 数组面试算法题
1.将一个数组逆序输出
https://blog.csdn.net/qq_45385706/article/details/110739961
1 #include<stdio.h>2 3 #define N 94 5 int main()6 {7 int a[N] = {1,2,3,4,5,6,7,8,9};8 for(int i = 0;i<N/2;i++)9 {
10 int temp = a[i];
11 a[i] = a[N-1-i];
12 a[N-1-i] = temp;
13 }
14
15 for(int i = 0;i<N;i++)
16 {
17 printf("%d ",a[i]);
18 }
19
20 return 0;
21 }
C++实现:
1 #include <iostream>2 #include <vector>3 #include <algorithm>4 using namespace std;5 6 int main() {7 8 vector<int> ans = {1,2,3,4,5,6};9 reverse(ans.begin(),ans.end());
10 for(int i = 0;i<ans.size();i++){
11 cout << ans[i] << " ";
12 }
13
14 return 0;
15 }
2.有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
https://blog.csdn.net/qq_45385706/article/details/110739053
1 #include<stdio.h>2 3 int main()4 {5 int x,temp,top;6 int a[11]={1,4,6,9,13,16,19,28,40,100};7 printf("输入一个数\n");8 scanf("%d",&x);9 for(int i = 0;i<10;i++)
10 {
11 if(x < a[i])
12 {
13 temp = a[i];
14 a[i] = x;
15 for(int j = i+1;j<11;j++)
16 {
17 top = a[j];
18 a[j] = temp;
19 temp = top;
20 }
21 break;
22 }
23 }
24
25 for(int i = 0;i<11;i++)
26 {
27 printf("%d ",a[i]);
28 }
29
30 return 0;
31 }
3.九十度旋转矩阵
https://blog.csdn.net/weixin_46617214/article/details/124230458
1 #include<stdio.h>2
3 #define N 3
4 #define M 3
5
6 int main()
7 {
8 int a[M][N] = {{1,2,3},{4,5,6},{7,8,9}};
9
10 for(int i = 0;i<N;i++)
11 {
12 for(int j = i;j<M;j++)
13 {
14 int temp = a[i][j];
15 a[i][j] = a[j][i];
16 a[j][i] = temp;
17 }
18 }
19
20 for(int i = 0;i<N;i++)
21 {
22 for(int j = 0;j<M/2;j++)
23 {
24 int temp = a[i][j];
25 a[i][j] = a[i][M-1-j];
26 a[i][M-1-j] = temp;
27 }
28 }
29
30 for(int i = 0;i<N;i++)
31 {
32 for(int j = 0;j<M;j++)
33 {
34 printf("%d ",a[i][j]);
35 }
36 printf("\n");
37 }
38
39 return 0;
40 }
C++实现:
1 #include <iostream>2 #include <vector>3 using namespace std;4 5 class node{6 public:7 vector<vector<int>> longset(vector<vector<int>>& ans){8 int x = 0,y = ans.size()-1;9 while(x<y){
10 swap(ans[x++],ans[y--]);
11 }
12 for(int i = 0;i<ans.size();i++){
13 for(int j = 0;j<i;j++){
14 swap(ans[i][j],ans[j][i]);
15 }
16 }
17 return ans;
18 }
19 };
20
21 int main() {
22
23 node n;
24 vector<vector<int>> ans;
25 ans.push_back({1,2,3});
26 ans.push_back({4,5,6});
27 ans.push_back({7,8,9});
28 ans = n.longset(ans);
29 for(int i = 0;i<ans.size();i++){
30 for(int j = 0;j<ans[0].size();j++){
31 cout << ans[i][j] << " ";
32 }
33 cout << endl;
34 }
35
36 return 0;
37 }
4.给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
https://blog.csdn.net/Mu_Muxi_/article/details/120708455
1 #include <stdio.h>2 3 #define N 34 #define M 35 6 int main()7 {8 int a[N][M] = {{1,1,1},{1,0,1},{1,1,1}};9 int b[10],c[10];
10 for(int i = 0;i<N;i++)
11 {
12 for(int j = 0;j<M;j++)
13 {
14 if(a[i][j] == 0)
15 {
16 b[i] = 1;
17 c[j] = 1;
18 }
19 }
20 }
21
22 for(int i = 0;i<N;i++)
23 {
24 if(1 == b[i])
25 {
26 for(int j = 0;j<M;j++)
27 {
28 a[i][j] = 0;
29 if(1 == c[j])
30 {
31 for(int k = 0;k<M;k++)
32 {
33 a[k][j] = 0;
34 }
35 }
36 }
37 }
38 }
39
40 for(int i = 0;i<N;i++)
41 {
42 for(int j = 0;j<M;j++)
43 {
44 printf("%d ",a[i][j]);
45 }
46 printf("\n");
47 }
48
49 return 0;
50 }
C++实现:
1 #include <iostream>2 #include <vector>3 using namespace std;4 5 class node{6 public:7 vector<vector<int>> longget(vector<vector<int>>& ans){8 int m = ans.size(),n = ans[0].size();9 for(int i = 0;i<m;i++){
10 for(int j = 0;j<n;j++){
11 if(0 == ans[i][j]){
12 ans[0][j] = ans[i][0] = 0;
13 }
14 }
15 }
16 for(int i = 1;i<m;i++){
17 for(int j = 1;j<n;j++){
18 if(ans[0][j]==0 || ans[i][0]==0){
19 ans[i][j] = 0;
20 }
21 }
22 }
23 return ans;
24 }
25 };
26
27 int main() {
28
29 node n;
30 vector<vector<int>> ans;
31 ans.push_back({1,1,1});
32 ans.push_back({1,0,1});
33 ans.push_back({1,1,1});
34 ans = n.longget(ans);
35 for(int i = 0;i<ans.size();i++){
36 for(int j = 0;j<ans[0].size();j++){
37 cout << ans[i][j] << " ";
38 }
39 cout << endl;
40 }
41
42 return 0;
43 }
5.搜索二维矩阵
https://blog.csdn.net/qq_47406941/article/details/110091759
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
-
每行中的整数从左到右按升序排列。
-
每行的第一个整数大于前一行的最后一个整数。
1 #include <stdio.h>2 3 #define N 34 #define M 45 6 int main()7 {8 int x,i = 0,j = M -1;9 int a[N][M] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
10 printf("输入一个要查找的数\n");
11 scanf("%d",&x);
12 while(1)
13 {
14 if(x == a[i][j])
15 {
16 printf("找到了\n");
17 break;
18 }
19 else if(x > a[i][j])
20 {
21 if(i < N-1)
22 {
23 i++;
24 }
25 else
26 {
27 printf("没找到\n");
28 break;
29 }
30 }
31 else
32 {
33 if(j > 0)
34 {
35 j--;
36 }
37 else
38 {
39 printf("没找到\n");
40 break;
41 }
42 }
43 }
44
45 return 0;
46 }
c++实现:
1 #include <iostream>2 #include <vector>3 using namespace std;4 5 class node{6 public:7 bool search(vector<vector<int>>& matrix,int target){8 int m = matrix.size(),n = matrix[0].size();9 int l = 0,r = m*n-1;
10 while(l<r){
11 int mid = l + (r-l)/2;
12 if(matrix[mid/n][mid%n]>=target) r = mid;
13 else l = mid + 1;
14 }
15 return matrix[r/n][r%n] == target;
16 }
17 };
18
19 int main(){
20
21 node n;
22 vector<vector<int>> cur;
23 cur.push_back({1,3,5,7});
24 cur.push_back({10,11,16,20});
25 cur.push_back({23,30,34,60});
26 cout << n.search(cur,11) << endl;
27
28 return 0;
29 }
6.两数之和
输入一个数为数组里面两个数之和。
https://blog.csdn.net/weixin_43176384/article/details/86373778
1 #include <stdio.h>2 #include <string.h>3 4 #define N 45 6 int main() 7 {8 int i = 0,j = 0,x = 0,z = 0,y = 0;9 int a[N]={2,7,11,15};
10 printf("输入一个数是数组两数之和\n");
11 scanf("%d",&x);
12 for(i = 0;i<N-1;i++)
13 {
14 for(j = i+1;j<N-1;j++)
15 {
16 if(x == a[i]+a[j])
17 {
18 z = i;
19 y = j;
20 break;
21 }
22 }
23 }
24 printf("%d+%d之和为%d\n",a[z],a[y],x);
25
26 return 0;
27 }
C++实现:
1 #include<iostream>2 #include<vector>3 #include<unordered_map>4 using namespace std;5 6 class node{7 public:8 vector<int> twosun(vector<int>& nums,int target)9 {
10 unordered_map<int,int> record;
11 for(int i = 0;i<nums.size();i++){
12 int num = target - nums[i];
13 if(record.find(num) != record.end()){
14 return {record[num],i};
15 }
16 record[nums[i]] = i;
17 }
18 return {-1,-1};
19 }
20 };
21
22 int main()
23 {
24 node n;
25 vector<int> cur;
26 vector<int> nums = {2,7,11,15};
27 cur = n.twosun(nums,9);
28 for (auto i : cur)
29 cout << i << endl;
30
31 return 0;
32 }
7.顺时针打印二维数组
https://blog.csdn.net/qq_44443986/article/details/109738061
1 #include <stdio.h>2 #include <string.h>3 4 #define N 35 #define M 36 7 int main() 8 {9 int arr[N][M] = {{1,2,3},{4,5,6},{7,8,9}};
10 int a = 0,b = N-1,c = 0,d = M-1,k = 0;
11 while(1)
12 {
13 for(int i = a;i<=b;i++)
14 {
15 printf("%d ",arr[c][i]);
16 }
17 if(c++ > d)break;
18
19 for(int i = c;i<=d;i++)
20 {
21 printf("%d ",arr[i][b]);
22 }
23 if(b-- < a)break;
24
25 for(int i = b;i>=a;i--)
26 {
27 printf("%d ",arr[d][i]);
28 }
29 if(d-- < c)break;
30
31 for(int i = d;i>=c;i--)
32 {
33 printf("%d ",arr[i][a]);
34 }
35 if(a++ > b)break;
36 }
37
38 return 0;
39 }
c++实现:
1 #include <iostream>2 #include <vector>3 using namespace std;4 5 class node{6 public:7 vector<int> setzore(vector<vector<int>>& cur){8 int m = cur.size(),n = cur[0].size();9 int up = 0,down = m-1,left = 0,right = n-1;
10 vector<int> ans;
11 while(1){
12 for(int i = left;i<=right;i++) ans.push_back(cur[up][i]);
13 if(++up>down) break;
14 for(int i = up;i<=down;i++) ans.push_back(cur[i][right]);
15 if(--right<left) break;
16 for(int i = right;i>=left;i--) ans.push_back(cur[down][i]);
17 if(--down<up) break;
18 for(int i = down;i>=up;i--) ans.push_back(cur[i][left]);
19 if(++left>right) break;
20 }
21 return ans;
22 }
23 };
24
25 int main(){
26
27 node n;
28 vector<int> ans;
29 vector<vector<int>> cur;
30 cur.push_back({1,2,3});
31 cur.push_back({4,5,6});
32 cur.push_back({7,8,9});
33 ans = n.setzore(cur);
34 for(int i = 0;i<ans.size();i++)
35 cout << ans[i] << " ";
36
37 return 0;
38 }
8.三数之和(力扣15题)
1 #include <iostream>2 #include <vector>3 #include<algorithm>4 using namespace std;5 6 class node{7 public:8 vector<vector<int>> threesum(vector<int>& nums){9 vector<vector<int>>ans;
10 sort(nums.begin(),nums.end());
11 for(int i = 0;i<nums.size();i++){
12 if(i>0 && nums[i] == nums[i+1]) continue;
13 int l = i+1,r = nums.size() -1;
14 int target = 0 - nums[i];
15 while(l<r){
16 if(nums[l]+nums[r]==target){
17 ans.push_back({nums[i],nums[l],nums[r]});
18 while(l<r && nums[l] == nums[l+1]) l++;
19 while(l<r && nums[r] == nums[r-1]) r--;
20 l++,r--;
21 }else if(nums[l]+nums[r]>target){
22 r--;
23 }else{
24 l++;
25 }
26 }
27 }
28 return ans;
29 }
30 };
31
32 int main()
33 {
34 node n;
35 vector<vector<int>> cur;
36 vector<int> nums = {-1,0,1,2,-1,-4};
37 cur = n.threesum(nums);
38 int x = cur[0].size(),y = cur.size();
39 for(int i = 0;i<y;i++){
40 for(int j = 0;j<x;j++){
41 cout << cur[i][j];
42 }
43 cout << endl;
44 }
45
46 return 0;
47 }
9.四数之和(力扣18题)
1 #include <iostream>2 #include <vector>3 #include <algorithm>4 using namespace std;5 6 class node{7 public:8 vector<vector<int>> forsun(vector<int>& nums,int target){9 vector<vector<int>> ans;
10 sort(nums.begin(),nums.end());
11 for(int i = 0;i<nums.size();i++){
12 if(i>0 && nums[i] == nums[i-1]) continue;
13 for(int j = i+1;j<nums.size();j++){
14 int l = j+1,r = nums.size()-1;
15 int sum = target - nums[i] - nums[j];
16 while(l<r){
17 if(nums[l]+nums[r] == sum){
18 ans.push_back({nums[i],nums[j],nums[l],nums[r]});
19 while(l<r && nums[l] == nums[l+1]) l++;
20 while(l<r && nums[r] == nums[r-1]) r--;
21 l++,r--;
22 }else if(nums[l]+nums[r] > sum){
23 r--;
24 }else{
25 l++;
26 }
27 }
28 }
29 }
30 return ans;
31 }
32 };
33
34 int main()
35 {
36 node n;
37 vector<vector<int>> top;
38 vector<int> cur = {1,0,-1,0,-2,2};
39 top = n.forsun(cur,0);
40 int x = top.size(),y = top[0].size();
41 for(int i = 0;i<x;i++){
42 for(int j = 0;j<y;j++){
43 cout << top[i][j] << " ";
44 }
45 cout << endl;
46 }
47
48 return 0;
49 }
10.删除数组中的重复元素,使每个元素最毒只能出现2次。(力扣80题)
1 #include <iostream>2 #include <vector>3 using namespace std;4 5 class node1{6 public:7 int remove(vector<int>& nums){8 if(nums.size() <= 2) return nums.size();9 int idx = 1;
10 for(int i = 2;i<nums.size();i++){
11 if(nums[i] != nums[idx-1]){
12 nums[++idx] = nums[i];
13 }
14 }
15 return idx+1;
16 }
17 };
18
19 int main()
20 {
21 node1 n;
22 vector<int> ans = {1,1,1,2,2,3};
23 cout << n.remove(ans) << endl;
24
25 return 0;
26 }
11.删除数组中的重复元素,使每个元素最多出现一次(力扣26题)
1 #include <iostream>2 #include <vector>3 using namespace std;4 5 class node1{6 public:7 int remove(vector<int>& nums){8 if(nums.size() <= 2) return nums.size();9 int idx = 0;
10 for(int i = 1;i<nums.size();i++){
11 if(nums[i] != nums[idx]){
12 nums[++idx] = nums[i];
13 }
14 }
15 return idx+1;
16 }
17 };
18
19 int main()
20 {
21 node1 n;
22 vector<int> ans = {1,1,1,2,2,3};
23 cout << n.remove(ans) << endl;
24
25 return 0;
26 }
相关文章:
C/C++ 数组面试算法题
1.将一个数组逆序输出 https://blog.csdn.net/qq_45385706/article/details/110739961 1 #include<stdio.h>2 3 #define N 94 5 int main()6 {7 int a[N] {1,2,3,4,5,6,7,8,9};8 for(int i 0;i<N/2;i)9 { 10 int temp a[i]; 11 a[i]…...
【pwn入门】用gdb实现第1个pwn
声明 本文是B站你想有多PWN学习的笔记,包含一些视频外的扩展知识。 有问题的源码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> char sh[]"/bin/sh"; int func(char *cmd){system(cmd);return 0; }int main(){char …...
用pyinstaller打包LGBM模型为ELF/EXE可执行文件
1. 引入 写好的python代码和模型,如果需要做到离线部署、运行,就必须要将代码和模型打包为可独立运行的可执行文件。 使用pyinstaller就能做到这个,相同的代码,在windows上运行就能打包为exe,在linux上运行就能打包为…...
软考中级—— 操作系统知识
进程管理 操作系统概述 操作系统的作用:通过资源管理提高计算机系统的效率;改善人机界面向用户提供友好的工作环境。 操作系统的特征:并发性、共享性、虚拟性、不确定性。 操作系统的功能:进程管理、存储管理、文件管理、设备…...
我们是否真的需要k8s?
文章目录 背景k8s相关的讨论为什么要用k8sk8s带来了什么当前业务使用到k8s的核心优势了吗直接自己买服务器会不会更便宜?其他QA没有人可以说出来为什么一定要用k8s而不是其他的没有人可以解释为什么成本核算困难以及成本这么高的原因没有人给出面向C端,面…...
基于蜉蝣优化的BP神经网络(分类应用) - 附代码
基于蜉蝣优化的BP神经网络(分类应用) - 附代码 文章目录 基于蜉蝣优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.蜉蝣优化BP神经网络3.1 BP神经网络参数设置3.2 蜉蝣算法应用 4.测试结果:5.M…...
前端系列-1 HTML+JS+CSS基础
背景: 前端系列会收集碎片化的前端知识点,作为自己工作和学习时的字典,欢迎读者收藏和使用。 笔者是后端开发😶前端涉猎不深,因此文章重在广度和实用,对原理和性能不会过多深究。 1.html 1.1 html5网页结…...
Learning Invariant Representation for Unsupervised Image Restoration
Learning Invariant Representation for Unsupervised Image Restoration (Paper reading) Wenchao Du, Sichuan University, CVPR20, Cited:63, Code, Paper 1. 前言 近年来,跨域传输被应用于无监督图像恢复任务中。但是,直接应用已有的框架…...
1.4.C++项目:仿muduo库实现并发服务器之buffer模块的设计
项目完整版在: 一、buffer模块: 缓冲区模块 Buffer模块是一个缓冲区模块,用于实现通信中用户态的接收缓冲区和发送缓冲区功能。 二、提供的功能 存储数据,取出数据 三、实现思想 1.实现换出去得有一块内存空间,采…...
AndroidStudio精品插件集
官网 项目地址:Github博客地址:Studio 精品插件推荐 使用需知 所有插件在 Android Studio 2022.3.1.18(长颈鹿)上测试均没有问题,推荐使用此版本Android Studio 2022.3.1.18(长颈鹿)正式版下…...
java图书管理系统
一、 引言 图书管理系统是一个用于图书馆或书店管理图书信息、借阅记录和读者信息的应用程序。本系统使用Java Swing框架进行开发,提供直观的用户界面,方便图书馆管理员或书店工作人员对图书信息进行管理。以下是系统的设计、功能和实现的详细报告。 二…...
大屏自适应容器组件-Vue3+TS
1.引言 在做数字大屏时,图表能跟着浏览器的尺寸自动变化,本文采用Vue3前端框架,采用TypeScript语言,封装了一个大屏自适应组件,将需要显示的图表放入组件的插槽中,就能实现自适应屏幕大小的效果。 2.实际…...
java图书信息管理
一、项目概述 本图书信息管理系统旨在提供一个直观的用户界面,用于管理图书馆或书店的图书信息。系统包括图书添加、查询、借阅和归还等功能。 二、系统架构 系统采用JavaSwing作为前端UI框架,后端使用Java Servlet处理业务逻辑,数据存储在…...
apache服务器出现No input file specified.解决方案
APACHE服务器出现No input file specified.解决方案 thinkcmf程序默认的.htaccess里面的规则: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA…...
你写过的最蠢的代码是?——全栈开发篇
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
正点原子嵌入式linux驱动开发——TF-A初探
上一篇笔记中,正点原子的文档简单讲解了一下什么是TF-A,并且也学习了如何编译TF-A。但是TF-A是如何运行的,它的一个运行流程并未涉及。TF-A的详细运行过程是很复杂的,涉及到很多ARM处理器底层知识,所以这一篇笔记的内容…...
【网安别学成开发】之——python篇
经典入门编程题 1.猜数字 经典的猜数字游戏,几乎所有人学编程时都会做。 功能描述: 随机选择一个三位以内的数字作为答案。用户输入一个数字,程序会提示大了或是小了,直到用户猜中。 #!/usr/bin/env python3import randomresu…...
vue图片显示
一、Vue图片显示方法: 1.直接使用<img>标签: 最简单的方法是使用<img>标签,并将图片的URL作为src属性的值。例如: <img src"path/to/your/image.jpg" alt"Image"> 如果是绝对路径&#x…...
S32K144 GPIO编程
前面的文章介绍了如何在MDK-Keil下面进行S32K144的开发,下面就使用该工程模板进行GPIO LED的编程试验。 1. 开发环境 S32K144EVB-Q100开发板MDK-Keil Jlink 2. 硬件连接 S32K144EVB-Q100开发板关于LED的原理图如下: 也就是具体连接关系如下…...
域名备案流程(个人备案,腾讯云 / 阿里云)
文章目录 1.网站备案的目的2.备案准备的材料2.1 网站域名2.2 云资源或备案授权码2.3 电子材料 3.首次个人备案准备的材料3.1 主体相关3.2 域名相关3.3 网站相关3.4 网站服务相关3.5 变更相关 4.个人备案流程4.1 登录系统4.2 填写备案信息🍀 填写备案省份ἴ…...
PHPMailer OAuth2认证终极指南:安全挑战与架构实践深度解析
PHPMailer OAuth2认证终极指南:安全挑战与架构实践深度解析 【免费下载链接】PHPMailer The classic email sending library for PHP 项目地址: https://gitcode.com/GitHub_Trending/ph/PHPMailer PHPMailer作为PHP领域最经典的邮件发送库,其OAu…...
大数据产品实战:用户画像系统的设计与实现
大数据产品实战:用户画像系统的设计与实现 关键词:用户画像、标签体系、大数据平台、精准营销、数据挖掘 摘要:用户画像系统是大数据时代企业实现“以用户为中心”运营的核心工具,它通过给用户“贴标签”的方式,将复杂的用户行为转化为可量化、可分析的数字特征。本文将从…...
RTX 4090D 24G镜像一文详解:PyTorch 2.8预装xFormers/FlashAttention-2实战
RTX 4090D 24G镜像一文详解:PyTorch 2.8预装xFormers/FlashAttention-2实战 1. 镜像概述与核心优势 PyTorch 2.8深度学习镜像为RTX 4090D 24GB显卡量身打造,经过CUDA 12.4深度优化,提供开箱即用的高性能计算环境。这个镜像特别适合需要处理…...
驯服失控菜单:让右键操作提速60%的实战指南
驯服失控菜单:让右键操作提速60%的实战指南 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 当你在Windows系统中右键点击文件时,是否曾面…...
无人机远程识别系统的技术突破与实践指南
无人机远程识别系统的技术突破与实践指南 【免费下载链接】ArduRemoteID RemoteID support using OpenDroneID 项目地址: https://gitcode.com/gh_mirrors/ar/ArduRemoteID 随着无人机技术的快速发展,全球范围内对无人机安全监管的要求日益严格。各国 aviati…...
别再拷贝sxs文件夹了!Win10教育版1903安装.NET 3.5最简方案(实测有效)
彻底解决Win10安装.NET 3.5报错0x800F081F的高效方案 每次在Win10上安装.NET Framework 3.5时遇到0x800F081F错误,都让人抓狂。网上那些让你拷贝sxs文件夹的教程,99%都在误导人。作为一位经历过无数次失败的老手,我要分享的是经过上百次验证的…...
Windows 内网 Web 服务穿透方案推荐
Windows 内网 Web 服务穿透方案推荐 面向场景:内网机器为 Windows,需从公网或外网访问内网 HTTP/HTTPS Web 服务;优先选择相对不易被误报、来源清晰、可审计的方案。 关于「报毒」的说明 穿透类软件常被启发式引擎标为「风险/可疑」…...
沈阳装修靠谱的机构
在沈阳装修新家,最怕遇到不靠谱的装修公司——工期拖延、增项不断、工艺粗糙、售后无门。想要省心、放心、安心地完成装修,选择一家经验丰富、工艺扎实、信誉良好的机构至关重要。在众多沈阳装修公司中,沈阳富田装饰装修工程有限公司以其深厚…...
Go Mutex 与 RWMutex 性能对比
在Go语言并发编程中,Mutex(互斥锁)和RWMutex(读写锁)是两种常用的同步机制。它们的性能差异直接影响高并发场景下的程序效率。本文将从多个角度对比两者的性能表现,帮助开发者根据实际需求选择合适的锁机制…...
Thorium浏览器:重新定义现代网页浏览性能标准
Thorium浏览器:重新定义现代网页浏览性能标准 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the README.md. …...
