2501,20个窗口常用操作
窗口是屏幕上的一个矩形区域.窗口分为3种:覆盖窗口,弹窗和子窗口.每个窗口都有由系统绘画的"非客户区"和应用绘画的"客户区".
在MFC中,CWnd类为各种窗口提供了基类.
1,通过窗柄取得CWnd指针
可调用Cwnd::FromHandle函数,通过窗柄取得Cwnd指针.
void CDemoDlg::OnButton1()
{HWND hWnd = GetSafeHwnd();//取得当前窗口的句柄CWnd* pWnd = CWnd::FromHandle(hWnd);//通过`窗柄`取得`CWnd`指针CString strText = _T("");strText.Format("pWnd=0x%X\nthis=0x%X\n",pWnd,this);AfxMessageBox(strText);
}
2,取得应用主窗口的指针
在CWinThread::m_pMainWnd中保存主窗口指针.可首先调用AfxGetApp函数取得应用的指针,然后通过应用指针取得主窗口的指针.
void CDemoDlg::OnButton2()
{CDemoApp* pApp = (CDemoApp*)AfxGetApp();//取得应用指针CWnd* pMainWnd = pApp->m_pMainWnd;//取得主窗口指针CString strText = _T("");strText.Format("pMainWnd=0x%X\nthis=0x%X\n",pMainWnd,this);AfxMessageBox(strText);
}
3,取得指定点的窗口
可调用CWnd::WindowFromPoint函数,取得指定点的窗口.
a,在CDemoDlg类中重载CWnd::PreTranslateMessage函数.
BOOL CDemoDlg::PreTranslateMessage(MSG* pMsg)
{if (pMsg->message == WM_MOUSEMOVE){CPoint point(LOWORD(pMsg->lParam),HIWORD(pMsg->lParam));::ClientToScreen(pMsg->hwnd, &point);//按屏幕坐标转换客户区坐标OnMouseMove(0,point);}return CDialog::PreTranslateMessage(pMsg);
}
b,在CDemoDlg类中添加WM_MOUSEMOVE消息处理函数.
void CDemoDlg::OnMouseMove(UINT nFlags, CPoint point)
{CWnd* pWnd = WindowFromPoint(point);//取得指定点的窗口if (pWnd != NULL){TRACE("%d\n",pWnd);if (IsChild(pWnd)){CString strText = _T("");pWnd->GetWindowText(strText);SetWindowText(strText);}}CDialog::OnMouseMove(nFlags, point);
}
4,最大化和最小化窗口
可调用CWnd::SendMessage函数发送最大化或最小化窗口消息,来最大化和最小化窗口.
LRESULT SendMessage(
UINT message,//发送的消息,值为`WM_SYSCOMMAND`时表示`系统命令消息`.
WPARAM wParam = 0,//当`消息`值为`WM_SYSCMMAND`,参数`字参`值为`SC_MAXIMIZE,SC_MINIMIZE`,
LPARAM lParam = 0 );//`SC_RESTORE`时分别表示`最大化窗口,最小化窗口,恢复窗口`.void CDemoDlg::OnButton3()
{//最大化窗口SendMessage(WM_SYSCOMMAND,SC_MAXIMIZE,0);
}
void CDemoDlg::OnButton4()
{//最小化窗口SendMessage(WM_SYSCOMMAND,SC_MINIMIZE,0);
}
void CDemoDlg::OnButton5()
{//恢复窗口SendMessage(WM_SYSCOMMAND,SC_RESTORE,0);
}
5关闭窗口
可调用CWnd::SendMessage函数,发送WM_CLOSE消息来关闭窗口.框架调用CWnd::OnClose函数处理WM_CLOSE消息.
默认,OnClose调用函数CWnd::DestroyWindow函数来关闭窗口.
void CDemoDlg::OnButton6()
{//关闭窗口SendMessage(WM_CLOSE,0,0);
}
void CDemoDlg::OnClose()//添加`WM_CLOSE`消息处理函数
{//判断是否关闭if (IDYES == MessageBox(_T("是否关闭窗口?"),NULL,MB_YESNO)){CDialog::OnClose();}
}
6设置窗口的大小和位置
可通过两个方法设置窗口大小和位置:1.调用CWnd::SetWindowPos函数;2.调用CWnd::MoveWindow函数.
void CDemoDlg::OnButton7()
{//设置窗口的大小和位置SetWindowPos(NULL,0,0,320,200,SWP_NOZORDER);
}
void CDemoDlg::OnButton8()
{//设置窗口的大小和位置MoveWindow(0,200,200,320);
}
7居中显示窗口
可调用CWnd::CenterWindow函数居中显示窗口.
void CDemoDlg::OnButton9()
{//居中显示窗口CenterWindow();
}
8顶层显示窗口
可调用CWnd::SetWindowPos函数顶层显示窗口,按最顶层设置对话框窗口的层次.
void CDemoDlg::OnButton10()
{//设置窗口层次SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);//`SWP_NOSIZE`:表示窗口保持当前的大小,`SWP_NOMOVE`:表示窗口保持当前的位置
}
9设置窗口图标
首先调用CWinApp::LoadIcon函数加载图标资源,然后调用CWnd::SetIcon函数设置图标.
void CDemoDlg::OnButton11()
{//加载图标HICON hIcon = AfxGetApp()->LoadIcon(IDI_ICON);//设置图标SetIcon(hIcon,FALSE);//`假`:设置程序小图标,`真`:设置任务栏大图标
}
10取得和设置窗口的标题
可分别调用CWnd::GetWindowText和CWnd::SetWindowText函数,取得和设置窗口标题.
void CDemoDlg::OnButton12()
{CString strText = _T("");GetWindowText(strText);//取得窗口标题SetDlgItemText(IDC_TEXT,strText);//设置编辑框文本
}
void CDemoDlg::OnButton13()
{CString strText = _T("");GetDlgItemText(IDC_TEXT,strText);//取得编辑框文本SetWindowText(strText);//设置窗口标题
}
11显示或隐藏窗口的标题栏
可调用CWnd::ModifyStyle函数显示或隐藏窗口的标题栏.
void CDemoDlg::OnButton14()
{//删除标题栏风格ModifyStyle(WS_CAPTION,0,SWP_FRAMECHANGED);
}
void CDemoDlg::OnButton15()
{//添加标题栏风格ModifyStyle(0,WS_CAPTION,SWP_FRAMECHANGED);
}
12改变窗口形状
标准窗口的形状是矩形的.要改变窗口的形状,首先调用CRgn类的成员函数创建相应形状的区域,然后调用CWnd::SetWindowRgn函数按窗口区域设置它.
可分别用CRgn类的CreateRectRgn,CreateEllipticRgn,CreatePolygonRgn和CreateRoundRectRgn函数来创建矩形,椭圆形,多边形和圆矩形区域.
void CDemoDlg::OnButton16()
{CRect rect;GetClientRect(rect);//创建矩形区域CRgn rgn;rgn.CreateRectRgn(rect.left,rect.top,rect.right,rect.bottom);//设置窗口的区域SetWindowRgn((HRGN)rgn,TRUE);
}
void CDemoDlg::OnButton17()
{CRect rect;GetClientRect(rect);//创建椭圆形区域CRgn rgn;rgn.CreateEllipticRgn(0,0,rect.Width(),rect.Height());//设置窗口的区域SetWindowRgn((HRGN)rgn,TRUE);
}
void CDemoDlg::OnButton18()
{CRect rect;GetClientRect(rect);CPoint point[6];point[0].x = 0;point[0].y = rect.Height() / 2;point[1].x = rect.Width() / 3;point[1].y = 0;point[2].x = 2 * rect.Width() / 3;point[2].y = 0;point[3].x = rect.Width();point[3].y = rect.Height() / 2;point[4].x = 2 * rect.Width() / 3;point[4].y = rect.Height();point[5].x = rect.Width() / 3;point[5].y = rect.Height();//创建多边形区域CRgn rgn;rgn.CreatePolygonRgn(point,6,ALTERNATE);//设置窗口的区域SetWindowRgn((HRGN)rgn,TRUE);
}
void CDemoDlg::OnButton19()
{CRect rect;GetClientRect(rect);//创建圆矩形区域CRgn rgn;rgn.CreateRoundRectRgn(0,0,rect.Width(),rect.Height(),rect.Width() / 2,rect.Height() / 2);//设置窗口的区域SetWindowRgn((HRGN)rgn,TRUE);
}
13设置窗口的透明区域
要设置窗口的透明区域,首先调用CRgn::CreateRectRgn创建一个区域,然后调用CRgn::CombineRgn函数,去掉需要透明的区域,最后调用CWnd::SetWindowRgn函数按窗口区域设置它.
void CDemoDlg::OnButton20()
{CRect rect1;GetWindowRect(rect1);CRect rect2;GetClientRect(rect2);ClientToScreen(rect2);CRgn rgn1;rgn1.CreateRectRgn(rect1.left,rect1.top,rect1.right,rect1.bottom);CRgn rgn2;rgn2.CreateRectRgn(rect2.left,rect2.top,rect2.right,rect2.bottom);CRgn rgn;rgn.CreateRectRgn(0,0,1,1);rgn.CombineRgn(&rgn1,&rgn2,RGN_DIFF);//设置窗口区域SetWindowRgn((HRGN)rgn,TRUE);
}
14透明窗口
要实现透明窗口,首先调用CWnd::ModifyStyleEx函数,添加窗口的WS_EX_LAYERED(0x00080000)扩展风格,然后调用SDK的SetLayeredWindowAttributes函数设置窗口的透明和透明色.
void CDemoDlg::OnButton21()
{//添加`WS_EX_LAYERED(0x80000)`扩展风格ModifyStyleEx(0,0x80000);//加载`User32.DLL`动态链接库HMODULE hModule = LoadLibrary("User32.DLL");if (hModule != NULL){typedef BOOL (WINAPI *FUNC)(HWND,COLORREF,BYTE,DWORD);//取得`SetLayeredWindowAttributes`函数指针FUNC func = (FUNC)GetProcAddress(hModule,"SetLayeredWindowAttributes");if (func != NULL){func(GetSafeHwnd(),0,128,2);}FreeLibrary(hModule);}
}
15窗口闪烁
可调用CWnd::FlashWindow函数闪烁窗口.
void CDemoDlg::OnButton22()
{//设置计时器SetTimer(1,1000,NULL);
}
void CDemoDlg::OnButton23()
{//关闭计时器KillTimer(1);//窗口返回原状态FlashWindow(FALSE);
}
void CDemoDlg::OnTimer(UINT nIDEvent)
{if (nIDEvent == 1){//窗口从一个状态闪烁到另一个状态FlashWindow(TRUE);}CDialog::OnTimer(nIDEvent);
}
16图片窗口
要实现图片窗口,首先调用CRgn::CreateRectRgn和CRgn::CombineRgn函数创建并合并多个区域,然后调用CWnd::SetWindowRgn函数按窗口区域设置它.
VC对话框如何添加WM_ERASEBKGND消息(OnEraseBkgnd函数):
void CDemoDlg::OnButton24()
{CRect rect;GetWindowRect(&rect);//加载位图CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP);//将位图选入设备环境CDC dc;CDC *pDC = GetDC();dc.CreateCompatibleDC(pDC);dc.SelectObject(&bmp);//将位图中黑色区域变成透明区域CRgn rgn1;rgn1.CreateRectRgn(0,0,rect.Width(),rect.Height());for (int x = 0;x < rect.Width();x++){for (int y = 0;y < rect.Height();y++){COLORREF cr = dc.GetPixel(x,y);if (cr == RGB(0,0,0)){CRgn rgn2;rgn2.CreateRectRgn(x,y,x+1,y+1);rgn1.CombineRgn(&rgn1,&rgn2,RGN_XOR);}}}//设置窗口区域SetWindowRgn((HRGN)rgn1,TRUE);ReleaseDC(pDC);
}//添加`WM_ERASEBKGND`消息处理函数
BOOL CDemoDlg::OnEraseBkgnd(CDC* pDC)
{CRect rect;GetWindowRect(&rect);CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP);CDC dc;dc.CreateCompatibleDC(pDC);dc.SelectObject(&bmp);pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);return TRUE;
}
17动画窗口
可调用SDK的动画窗口函数,实现动画窗口.
BOOL CDemoDlg::OnInitDialog()
{CDialog::OnInitDialog();//...居中窗口CenterWindow();//显示动画窗口AnimateWindow(GetSafeHwnd(), 3000, AW_BLEND);return TRUE;
}
18桌面窗口
可调用CWnd::GetDesktopWindow函数,取得桌面窗口.
void CDemoDlg::OnButton25()
{//取得桌面窗口CWnd* pWnd = CWnd::GetDesktopWindow();//取得窗口大小CRect rect;pWnd->GetClientRect(rect);CString strText = _T("");strText.Format(_T("桌面窗口大小:%dX%d"),rect.Width(),rect.Height());AfxMessageBox(strText);
}
19最小化桌面所有窗口
窗口中可利用快捷键Win+M最小化所有窗口.因此,可通过向任务栏窗口发送ID为0x1F5(Win+M)的WM_HOTKEY消息,来最小化桌面所有窗口.
首先调用CWnd::FindWindow函数取得窗口,然后调用CWnd::SendMessage函数向窗口发送消息.
void CDemoDlg::OnButton26()
{//取得任务栏窗口CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"),NULL);//发送`ID`为`0x1F5(Win+M)`的`WM_HOTKEY`消息pWnd->SendMessage(WM_HOTKEY,0x1F5);
}
20取任务栏窗口
可调用CWnd::FindWinow函数,取得任务栏窗口.
void CDemoDlg::OnButton27()
{//取得任务栏窗口CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"),NULL);//取得窗口大小CRect rect;pWnd->GetClientRect(rect);CString strText = _T("");strText.Format(_T("任务栏窗口大小:%dX%d"),rect.Width(),rect.Height());AfxMessageBox(strText);
}
21显示或隐藏任务栏
显示或隐藏任务栏;首先调用CWnd::FindWindow函数取得窗口,然后调用CWnd::ShowWindow函数隐藏或显示窗口.
void CDemoDlg::OnButton28()
{//取得任务栏窗口CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"),NULL);//隐藏窗口if (pWnd->IsWindowVisible()){pWnd->ShowWindow(SW_HIDE);}
}
void CDemoDlg::OnButton29()
{//取得任务栏窗口CWnd* pWnd = CWnd::FindWindow(_T("Shell_TrayWnd"),NULL);//显示窗口if (!pWnd->IsWindowVisible()){pWnd->ShowWindow(SW_SHOW);}
}
22枚举桌面所有顶层窗口
BOOL CDemoDlg::OnInitDialog()
{CDialog::OnInitDialog();//...初化列表框控件CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);pList->ModifyStyle(LVS_ICON | LVS_SMALLICON | LVS_LIST,LVS_REPORT);pList->SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);pList->InsertColumn(0,_T("窗口类名"),LVCFMT_LEFT,115);pList->InsertColumn(1,_T("窗口标题"),LVCFMT_LEFT,150);return TRUE;
}
枚举桌面所有顶层窗口有两个方法:
a,调用CWnd::GetDesktopWindow和CWnd::GetWindow函数:首先调用CWnd::GetDesktopWindow函数,取得桌面窗口,然后调用CWnd::GetWindow函数,枚举所有子窗口.
void CDemoDlg::OnButton30()
{CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);pList->DeleteAllItems();pList->SetRedraw(FALSE);//取得桌面窗口CWnd* pDesktopWnd = CWnd::GetDesktopWindow();//取得第一个子窗口CWnd* pWnd = pDesktopWnd->GetWindow(GW_CHILD);while(pWnd != NULL){int nItem = pList->GetItemCount();//取得窗口类名CString strClassName = _T("");::GetClassName(pWnd->GetSafeHwnd(),strClassName.GetBuffer(256),256);strClassName.ReleaseBuffer();pList->InsertItem(nItem,strClassName);//取得窗口标题CString strWindowText = _T("");::GetWindowText(pWnd->GetSafeHwnd(),strWindowText.GetBuffer(256),256);strWindowText.ReleaseBuffer();pList->SetItemText(nItem,1,strWindowText);//继续取得下个子窗口pWnd = pWnd->GetWindow(GW_HWNDNEXT);}pList->SetRedraw(TRUE);
}
b,调用SDK的EnumWindows函数.
//添加全局函数
BOOL CALLBACK EnumWndPorc(HWND hWnd,LPARAM lParam)
{if (hWnd == NULL){return FALSE;}CListCtrl* pList = (CListCtrl*)lParam;int nItem = pList->GetItemCount();//取得窗口类名CString strClassName = _T("");::GetClassName(hWnd,strClassName.GetBuffer(256),256);strClassName.ReleaseBuffer();pList->InsertItem(nItem,strClassName);//取得窗口标题CString strWindowText = _T("");::GetWindowText(hWnd,strWindowText.GetBuffer(256),256);strWindowText.ReleaseBuffer();pList->SetItemText(nItem,1,strWindowText);return TRUE;
}
void CDemoDlg::OnButton31()
{CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);pList->DeleteAllItems();pList->SetRedraw(FALSE);//枚举窗口::EnumWindows(EnumWndPorc,(LPARAM)pList);pList->SetRedraw(TRUE);
}
相关文章:
2501,20个窗口常用操作
窗口是屏幕上的一个矩形区域.窗口分为3种:覆盖窗口,弹窗和子窗口.每个窗口都有由系统绘画的"非客户区"和应用绘画的"客户区". 在MFC中,CWnd类为各种窗口提供了基类. 1,通过窗柄取得CWnd指针 可调用Cwnd::FromHandle函数,通过窗柄取得Cwnd指针. void CD…...
【gopher的java学习笔记】一文讲懂controller,service,mapper,entity是什么
刚开始上手Java和Spring时,就被controller,service,mapper,entity这几个词搞懵了,搞不懂这些究竟代表什么,感觉使用golang开发的时候也没太接触过这些名词啊~ 经过两三个月的开发后,逐渐搞懂了这…...
消息队列篇--通信协议篇--STOMP(STOMP特点、格式及示例,WebSocket上使用STOMP,消息队列上使用STOMP等)
STOMP(Simple Text Oriented Messaging Protocol,简单面向文本的消息传递协议)是一种轻量级、基于文本的协议,旨在为消息代理(消息队列)和客户端之间的通信(websocket)提供一种简单的…...
基于SpringBoot的租房管理系统(含论文)
基于SpringBoot的租房管理系统是一个集订单管理、房源信息管理、屋主申诉处理、用户反馈等多项功能于一体的系统。该系统通过SpringBoot框架开发,拥有完善的管理员后台、屋主管理模块、用户功能模块等,适用于房地产租赁平台或中介公司进行日常管理与运营…...
提升企业内部协作的在线知识库架构与实施策略
内容概要 在当前快速变化的商业环境中,企业对于提升内部协作效率的需求愈显迫切。在线知识库作为信息存储与共享的平台,成为了推动企业数字化转型的重要工具。本文将深入探讨如何有效打造与实施在线知识库,强调架构设计、知识资产分类管理及…...
【物联网】ARM核常用指令(详解):数据传送、计算、位运算、比较、跳转、内存访问、CPSR/SPSR、流水线及伪指令
文章目录 指令格式(重点)1. 立即数2. 寄存器位移 一、数据传送指令1. MOV指令2. MVN指令3. LDR指令 二、数据计算指令1. ADD指令1. SUB指令1. MUL指令 三、位运算指令1. AND指令2. ORR指令3. EOR指令4. BIC指令 四、比较指令五、跳转指令1. B/BL指令2. l…...
Jackson中@JsonTypeId的妙用与实例解析
在日常的Java开发中,Jackson库是处理JSON数据的常用工具。其中,JsonTypeId注解是一个非常实用的功能,它可以帮助我们更好地控制多态类型信息在序列化过程中的表现。今天,我们就来深入探讨一下JsonTypeId的用法,并通过具…...
Ubuntu 顶部状态栏 配置,gnu扩展程序
顶部状态栏 默认没有配置、隐藏的地方 安装使用Hide Top Bar 或Just Perfection等进行配置 1 安装 sudo apt install gnome-shell-extension-manager2 打开 安装的“扩展管理器” 3. 对顶部状态栏进行配置 使用Hide Top Bar 智能隐藏,或者使用Just Perfection 直…...
Java---入门基础篇(上)
前言 本片文章主要讲了刚学Java的一些基础内容,例如注释,标识符,数据类型和变量,运算符,还有逻辑控制等,记录的很详细,带你从简单的知识点再到练习题.如果学习了c语言的小伙伴会发现,这篇文章的内容和c语言大致相同. 而在下一篇文章里,我会讲解方法和数组的使用,也是Java中基础…...
Linux C++
一、引言 冯诺依曼架构是现代计算机系统的基础,它的提出为计算机的发展奠定了理论基础。在学习 C 和 Linux 系统时,理解冯诺依曼架构有助于我们更好地理解程序是如何在计算机中运行的,包括程序的存储、执行和资源管理。这对于编写高效、可靠的…...
gradio 合集
知识点 1:基本 Chatbot 创建 import gradio as gr 定义历史记录 history [gr.ChatMessage(role“assistant”, content“How can I help you?”), gr.ChatMessage(role“user”, content“What is the weather today?”)] 使用历史记录创建 Chatbot 组件 ch…...
996引擎 - NPC-动态创建NPC
996引擎 - NPC-动态创建NPC 创建脚本服务端脚本客户端脚本添加自定义音效添加音效文件修改配置参考资料有个小问题,创建NPC时没有控制朝向的参数。所以。。。自己考虑怎么找补吧。 多重影分身 创建脚本 服务端脚本 Mir200\Envir\Market_Def\test\test001-3.lua -- NPC八门名…...
论文阅读(十三):复杂表型关联的贝叶斯、基于系统的多层次分析:从解释到决策
1.论文链接:Bayesian, Systems-based, Multilevel Analysis of Associations for Complex Phenotypes: from Interpretation to Decision 摘要: 遗传关联研究(GAS)报告的结果相对稀缺,促使许多研究方向。尽管关联概念…...
代码随想录算法训练营第三十九天-动态规划-198. 打家劫舍
动规五部曲 dp[i]表示在下标为i的房间偷或不偷与前面所偷之和所能获得的最大价值递推公式:dp[i] std::max(dp[i - 2] nums[i], dp[i - 1])初始化:要给dp[0]与dp[1]来给定初始值,因为递推公式有-1与-2。dp[0] nums[0], dp[1] std::max(num…...
CF1098F Ж-function
【题意】 给你一个字符串 s s s,每次询问给你 l , r l, r l,r,让你输出 s s s l , r sss_{l,r} sssl,r中 ∑ i 1 r − l 1 L C P ( s s i , s s 1 ) \sum_{i1}^{r-l1}LCP(ss_i,ss_1) ∑i1r−l1LCP(ssi,ss1)。 【思路】 和前一道题一样&#…...
Python 函数魔法书:基础、范例、避坑、测验与项目实战
Python 函数魔法书:基础、范例、避坑、测验与项目实战 内容简介 本系列文章是为 Python3 学习者精心设计的一套全面、实用的学习指南,旨在帮助读者从基础入门到项目实战,全面提升编程能力。文章结构由 5 个版块组成,内容层层递进…...
vim交换文件的作用
1.数据恢复:因为vim异常的退出,使用交换文件可以恢复之前的修改内容。 2.防止多人同时编辑:vim检测到交换文件的存在,会给出提示,以避免一个文件同时被多人编辑。 (vim交换文件的工作原理:vim交换文件的工作…...
[NOI1995] 石子合并
[NOI1995] 石子合并 题目描述 在一个圆形操场的四周摆放 N N N 堆石子,现要将石子有次序地合并成一堆,规定每次只能选相邻的 2 2 2 堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 试设计出一个算法,计算出将 …...
真正的智能与那只蝴蝶
“蝴蝶效应”可以展开为对智能本质与大算力关系的追问,其中“蝴蝶”作为隐喻可能指向多重维度——从混沌理论的“蝴蝶效应”到庄子“物我两忘”的蝴蝶之梦。这种并置本身暗示了智能与宇宙秩序、认知边界之间的深刻张力。以下从三个层面展开分析:一、混沌…...
C++小病毒-1.0勒索(更新次数:2)
内容供学习使用,不得转卖,代码复制后请1小时内删除,此代码会危害计算机安全,谨慎操作 在C20环境下,并在虚拟机里运行此代码!,病毒带来后果自负! 使用时请删除在main()里的注释,并修改位置至C:\\(看我代码注释)//可以改成WIN Main() #include <iostream> #i…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析
LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...
