文书智能助手

背景

司法、医疗等行业存在着大量的文书,一份文书或者卷宗少则几十页,多则几万页。在查看和检查这些文书时,会遇到大量的信息。当需要查询进一步的详细内容时,往往需要选择一下文字,然后再在各种系统中 查询详细的信息。客户就提出了一个思路:“文书智能助手”。文书智能助手:在Word 或者 记事本 或者 其他软件中,使用鼠标框选选中一段文字后,根据“选中的文字”在各种系统中检索数据,自动显示相关的数据项。并可以向Word插入文字和图片内容。

使用说明

启动程序

在文书中使用鼠标框选中文字

根据“选中的文字”在各种系统中检索数据,自动显示相关的数据项。

word监控工具

 

设计

程序分为主EXE 和DLL

DLL为鼠标HOOK

主EXE在鼠标框选中,获取当前选中的文字,然后进行查询,并显示查询结果。

代码

DLL代码

useswindows,messages,System.SysUtils,System.Classes;{$R *.res}constWM_my_cmd_mouse = WM_USER + 201;WM_my_cmd_key = WM_USER + 202;varidhook: longint;hNextHookProc: HHook;main_handle: THandle = 0;function KeyboardHookHandler(iCode: Integer; WParam: WParam; lParam: lParam): LRESULT stdcall;
const_KeyPressMask = $80000000;
varc: char;i: Integer;j: Integer;
beginResult := 0;if iCode < 0 thenbeginResult := CallNextHookEx(hNextHookProc, iCode, WParam, lParam);Exit;end;if main_handle > 0 thenbeginPostMessage(main_handle, WM_my_cmd_key, WParam, lParam);end;Result := CallNextHookEx(hNextHookProc, iCode, WParam, lParam);
end;function hookProc(nCode: Integer; // hook codeWParam: WParam; // message identifier消息标识lParam: lParam // mouse coordinates鼠标坐标): LRESULT; stdcall;
varx: Integer;y: Integer;l: DWORD;
beginif (WParam = WM_LBUTTONUP) or (WParam = WM_LBUTTONDOWN) thenbegintryif (WParam = WM_LBUTTONUP) or (WParam = WM_LBUTTONDOWN) thenbeginx := PMouseHookStruct(lParam)^.pt.x;y := PMouseHookStruct(lParam)^.pt.y;l := x * 10000 + y;PostMessage(main_handle, WM_my_cmd_mouse, WParam, l);end;finallyend;end;Result := CallNextHookEx(idhook, nCode, WParam, lParam);Exit;
end;function setHook(h: THandle): Boolean; stdcall;
beginmain_handle := h;idhook := SetWindowsHookEx(WH_MOUSE_ll, @hookProc, HInstance, 0);// hNextHookProc := SetWindowsHookEx(WH_KEYBOARD, @KeyboardHookHandler,// HInstance, 0);Result := idhook <> 0;
end;// 删除鼠标钩子
function delHook: Boolean; stdcall;
beginif idhook > 0 thenUnhookWindowsHookEx(idhook);// if hNextHookProc > 0 then// UnhookWindowsHookEx(hNextHookProc);main_handle := 0;Result := true;
end;exportssetHook name 'setHook',delHook name 'delHook',hookProc name 'hookProc',KeyboardHookHandler name 'KeyboardHookHandler';beginend.

主EXE代码 

unit U_main;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.ImageList, Vcl.ImgList,Vcl.Menus, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Buttons, U_Pub, U_makepng, U_img,U_btnImg,u_btn, U_DocBookMarkMgr, Clipbrd;constWM_my_cmd = WM_USER + 101;WM_my_cmd_mouse = WM_USER + 201;str_nobookmark = '没有发现书签';typeTFrm_main = class(TForm)TrayIcon1: TTrayIcon;PopupMenu1: TPopupMenu;ImageList1: TImageList;N1: TMenuItem;N2: TMenuItem;N3: TMenuItem;N4: TMenuItem;ImageList2: TImageList;Panel1: TPanel;BitBtn1: TBitBtn;BitBtn2: TBitBtn;Label1: TLabel;Timer1: TTimer;Edit1: TEdit;Label3: TLabel;Memo1: TMemo;Timer_mouse: TTimer;Timer_img: TTimer;procedure FormClose(Sender: TObject; var Action: TCloseAction);procedure N4Click(Sender: TObject);procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);procedure N1Click(Sender: TObject);procedure TrayIcon1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);procedure BitBtn1Click(Sender: TObject);procedure BitBtn2Click(Sender: TObject);procedure FormActivate(Sender: TObject);procedure Timer1Timer(Sender: TObject);procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure Timer_mouseTimer(Sender: TObject);procedure Timer_imgTimer(Sender: TObject);privatewill_exit: Boolean;is_timer_word: Boolean;LBUTTONDOWN_handle: THandle;LBUTTONDOWN_x_last: Integer;LBUTTONDOWN_y_last: Integer;LBUTTONUP_x_last: Integer;LBUTTONUP_y_last: Integer;frm_makepng: TFrm_makepng;frm_btn: TFrm_btn;curr_frm_img: TFrm_btnimg;old_clipboard_text: string;curr_text: string;curr_isimg: Boolean;curr_imgfn: string;public{ Public declarations }procedure my_cmd(var Message: TMessage); message WM_my_cmd;procedure my_cmd_mouse(var Message: TMessage); message WM_my_cmd_mouse;procedure do_cmd_mouse(WParam, X, Y: Integer);procedure do_init();procedure do_word_timer();function do_pt_frm_btn(pt: TPoint): Boolean;procedure show_btn(pt: TPoint; txt: string; isimg: Boolean);procedure show_btn_img(pt: TPoint);procedure frm_btnClose(Sender: TObject; var Action: TCloseAction);procedure frm_btn_imgClose(Sender: TObject; var Action: TCloseAction);procedure do_copy();procedure do_typetext(bk, txt: string);procedure do_typeimg(bk: string);end;varFrm_main: TFrm_main;implementationuses activex, comobj, Pub;
{$R *.dfm}procedure TFrm_main.BitBtn1Click(Sender: TObject);
beginPostMessage(Handle, WM_my_cmd, 3, 0);
end;procedure TFrm_main.BitBtn2Click(Sender: TObject);
begin// Hide;top := 0 - 10 - Height;
end;procedure TFrm_main.do_cmd_mouse(WParam, X, Y: Integer);
varpt: TPoint;x_begin, y_begin: Integer;x_end, y_end: Integer;
begintryif WParam = WM_LBUTTONDOWN thenbeginwrite_log('WM_LBUTTONDOWN');if frm_btn <> nil thenbeginpt := frm_btn.ScreenToClient(Point(X, Y));do_pt_frm_btn(pt);LBUTTONDOWN_x_last := X;LBUTTONDOWN_y_last := Y;endelsebeginLBUTTONDOWN_x_last := X;LBUTTONDOWN_y_last := Y;LBUTTONDOWN_handle := GetActiveWindow();end;if Shift_down() thenbeginif curr_frm_img <> nil thenFreeAndNil(curr_frm_img);show_btn_img(Point(X, Y));endelsebeginif curr_frm_img <> nil thenFreeAndNil(curr_frm_img);end;endelse if WParam = WM_LBUTTONUP thenbeginif curr_frm_img <> nil thenbeginx_begin := curr_frm_img.x_begin;y_begin := curr_frm_img.y_begin;x_end := curr_frm_img.x_end;y_end := curr_frm_img.y_end;FreeAndNil(curr_frm_img);LBUTTONUP_x_last := X;LBUTTONUP_y_last := Y;write_log('WM_LBUTTONUP');if (x_begin - x_end) * (x_begin - x_end) + (y_begin - y_end) *(y_begin - y_end) > 100 thenbegincurr_imgfn := frm_makepng.MakeSceenCopyPath(x_begin, y_begin,x_end, y_end);Timer_img.Enabled := false;Timer_img.Interval := 50;Timer_img.Enabled := true;endelsebeginif frm_btn <> nil thenFreeAndNil(frm_btn);end;endelsebeginLBUTTONUP_x_last := X;LBUTTONUP_y_last := Y;write_log('WM_LBUTTONUP');Timer_mouse.Enabled := false;Timer_mouse.Interval := 100;Timer_mouse.Enabled := true;end;end;excepton e: Exception dobeginwrite_log('my_cmd_mouse ' + e.Message);end;end;
end;procedure TFrm_main.do_copy;
beginkeybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0); // 按下Ctrl键keybd_event(ord('C'), MapVirtualKey(ord('C'), 0), 0, 0); // 按下C键keybd_event(ord('C'), MapVirtualKey(ord('C'), 0), KEYEVENTF_KEYUP, 0); // 放开C键keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);
end;procedure TFrm_main.do_init;procedure show_msg(v: string);beginMemo1.Lines.Add(v);Edit1.Text := v;Application.ProcessMessages();sleep(300);end;beginPub.setHook(Handle);show_msg('初始化鼠标监控');show_msg('初始化Word服务');show_msg('正在监控Word');sleep(500);end;function TFrm_main.do_pt_frm_btn(pt: TPoint): Boolean;
vari: Integer;node: TDocBookMarkNodeDraw;bookmork: string;
beginwrite_log('do_pt_frm_btn x:' + inttostr(pt.X) + ' y:' + inttostr(pt.Y));write_log('do_pt_frm_btn GetCurrentProcessId:' +inttostr(GetCurrentProcessId));Result := false;if frm_btn = nil thenexit;tryif (pt.Y > frm_btn.Height) or (pt.X > frm_btn.Width) thenbeginFreeAndNil(frm_btn);exit;end;if PtInRect(frm_btn.CloseBtn.BoundsRect, pt) thenbeginwrite_log('frm_btn.CloseBtn');FreeAndNil(frm_btn);exit;end;for i := 0 to frm_makepng.mgr.DrawList.Count - 1 dobeginnode := frm_makepng.mgr.DrawList[i];if PtInRect(node.Rect, pt) thenif node.texttype = 'BookMark' thenbeginbookmork := node.BookMark.Name;FreeAndNil(frm_btn);// Timer_post.Enabled := false;// Timer_post.Interval := 500;// will_do_bookmork := node.BookMark.Name;// Timer_post.Enabled := true;Result := true;Break;end;end;excepton e: Exception dobeginwrite_log('do_pt_frm_btn ' + e.Message);end;end;if bookmork <> str_nobookmark thenbeginif curr_isimg thendo_typeimg(bookmork)else if curr_text <> '' thendo_typetext(bookmork, curr_text);end;
end;procedure TFrm_main.do_typeimg(bk: string);
varpvDisp: IDispatch;wordApp: OleVariant;doc: OleVariant;i: Integer;s: string;rend: OleVariant;
beginif not FileExists(curr_imgfn) thenexit;if (GetObject('Word.Application', IDispatch, pvDisp) = S_OK) thenbeginwordApp := pvDisp;tryif wordApp.Documents.Count >= 1 thenbegindoc := wordApp.ActiveDocument;if VarIsNull(doc) thendoc := wordApp.Documents.Item(1);tryif doc.BookMarks.Exists(bk) thenbeginrend := doc.BookMarks.Item(bk).Range.End - 1;wordApp.Selection.SetRange(rend, rend);wordApp.Selection.InlineShapes.addpicture(curr_imgfn, false, true);// Word.ActiveDocument.Range.InlineShapes.addpicture(extractfilepath(Application.ExeName)+'\test.jpg',True, True);end;exceptbeginend;end;end;exceptbeginend;end;rend := Unassigned;doc := Unassigned;wordApp := Unassigned;end;end;procedure TFrm_main.do_typetext(bk, txt: string);
varpvDisp: IDispatch;wordApp: OleVariant;doc: OleVariant;i: Integer;s: string;rend: OleVariant;
beginif (GetObject('Word.Application', IDispatch, pvDisp) = S_OK) thenbeginwordApp := pvDisp;tryif wordApp.Documents.Count >= 1 thenbegindoc := wordApp.ActiveDocument;if VarIsNull(doc) thendoc := wordApp.Documents.Item(1);tryif doc.BookMarks.Exists(bk) thenbeginrend := doc.BookMarks.Item(bk).Range.End - 1;wordApp.Selection.SetRange(rend, rend);wordApp.Selection.TypeText(txt);end;exceptbeginend;end;end;exceptbeginend;end;rend := Unassigned;doc := Unassigned;wordApp := Unassigned;end;end;procedure TFrm_main.do_word_timer;
varpvDisp: IDispatch;wordApp: OleVariant;doc: OleVariant;doc_filename, s: string;sl: TStringList;i: Integer;
beginsl := TStringList.Create;if (GetObject('Word.Application', IDispatch, pvDisp) = S_OK) thenbeginwordApp := pvDisp;tryif wordApp.Documents.Count >= 1 thenbegindoc := wordApp.ActiveDocument;if VarIsNull(doc) thendoc := wordApp.Documents.Item(1);doc_filename := doc.FullName;tryfor i := 1 to doc.BookMarks.Count dosl.Add(trim(doc.BookMarks.Item(i).Name));exceptbeginend;end;end;exceptbeginend;end;doc := Unassigned;wordApp := Unassigned;end;if doc_filename = '' thenbegindoc_filename := '没有发现打开的Word文档或Word无响应'end;frm_makepng.mgr.DocFullName := doc_filename;frm_makepng.mgr.clear_BookMarkList;for i := 0 to sl.Count - 1 dobegins := sl[i];if pos('_', s) < 1 thenfrm_makepng.mgr.add_BookMark(sl[i]);end;if frm_makepng.mgr.BookMarkList.Count = 0 thenfrm_makepng.mgr.add_BookMark(str_nobookmark);frm_makepng.mgr.MakeDraw;FreeAndNil(sl);
end;procedure TFrm_main.FormActivate(Sender: TObject);
beginOnActivate := nil;Timer1.Enabled := true;
end;procedure TFrm_main.FormClose(Sender: TObject; var Action: TCloseAction);
beginif will_exit thenexit;Action := caHide;
end;procedure TFrm_main.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
beginif will_exit thenexit;CanClose := false;Hide();end;procedure TFrm_main.FormCreate(Sender: TObject);
beginis_timer_word := false;frm_makepng := TFrm_makepng.Create(nil);u_btn.imgpath := GetPath();U_makepng.imgpath := u_btn.imgpath;frm_btn := nil;curr_frm_img := nil;write_log('FormCreate');
end;procedure TFrm_main.FormDestroy(Sender: TObject);
beginPub.delHook();tryif (frm_btn <> nil) thenFreeAndNil(frm_btn);FreeAndNil(frm_makepng);if (curr_frm_img <> nil) thenFreeAndNil(curr_frm_img);exceptend;write_log('FormDestroy');
end;procedure TFrm_main.frm_btnClose(Sender: TObject; var Action: TCloseAction);
beginAction := caFree;frm_btn := nil;
end;procedure TFrm_main.frm_btn_imgClose(Sender: TObject; var Action: TCloseAction);
begincurr_frm_img := nil;
end;procedure TFrm_main.N1Click(Sender: TObject);
beginPostMessage(Handle, WM_my_cmd, 1, 0);
end;procedure TFrm_main.N4Click(Sender: TObject);
beginPostMessage(Handle, WM_my_cmd, 3, 0);
end;procedure TFrm_main.show_btn(pt: TPoint; txt: string; isimg: Boolean);
varh: THandle;X, Y, l, t: Integer;
begintrywrite_log('show_btn txt:' + txt);if (txt = '') and (isimg = false) thenexit;do_word_timer();curr_text := txt;curr_isimg := isimg;h := GetActiveWindow();if (frm_btn <> nil) thenFreeAndNil(frm_btn);h := GetActiveWindow();LBUTTONDOWN_handle := h;// frm_makepng.Test();frm_makepng.MakePng(u_btn.imgpath + 'btn.png');frm_btn := TFrm_btn.Create(nil);frm_btn.OnClose := frm_btnClose;X := pt.X;Y := pt.Y + 16;l := X - frm_btn.Width div 2;t := Y;if l > Screen.Width - frm_btn.Width thenl := Screen.Width - frm_btn.Width;if t > Screen.Height - frm_btn.Height thent := Screen.Height - frm_btn.Height;frm_btn.left := l;frm_btn.top := t;ShowWindow(frm_btn.Handle, SW_NORMAL or SW_SHOWNOACTIVATE);Application.ProcessMessages;sleep(100);Application.ProcessMessages;SetForegroundWindow(LBUTTONDOWN_handle);excepton e: Exception dobeginwrite_log('show_btn ' + e.Message);end;end;
end;procedure TFrm_main.show_btn_img(pt: TPoint);
begincurr_isimg := false;curr_imgfn := '';if (curr_frm_img <> nil) thenFreeAndNil(curr_frm_img);frm_makepng.MakeScreenPng();U_btnImg.curr_bmpstream := frm_makepng.screen_stream_adapter;curr_frm_img := TFrm_btnimg.Create(nil);curr_frm_img.x_begin := pt.X;curr_frm_img.y_begin := pt.Y;curr_frm_img.x_end := pt.X;curr_frm_img.y_end := pt.Y;curr_frm_img.OnClose := frm_btn_imgClose;curr_frm_img.left := 0;curr_frm_img.top := 0;// ShowWindow(curr_frm_img.Handle, SW_NORMAL or SW_SHOWNOACTIVATE);// ShowWindow(curr_frm_img.Handle, SW_NORMAL);curr_frm_img.Show;Application.ProcessMessages;SetForegroundWindow(curr_frm_img.Handle);
end;procedure TFrm_main.Timer1Timer(Sender: TObject);
beginTimer1.Enabled := false;do_init();top := 0 - 10 - Height;
end;procedure TFrm_main.Timer_imgTimer(Sender: TObject);
vari: Integer;X, Y: Integer;
beginTimer_img.Enabled := false;if ((LBUTTONDOWN_x_last - LBUTTONUP_x_last) *(LBUTTONDOWN_x_last - LBUTTONUP_x_last) +(LBUTTONDOWN_y_last - LBUTTONUP_y_last) *(LBUTTONDOWN_y_last - LBUTTONUP_y_last) > 100) and (true) thenbeginshow_btn(Point(LBUTTONUP_x_last, LBUTTONUP_y_last), '',true);endelsebeginif frm_btn <> nil thenFreeAndNil(frm_btn);end;
end;procedure TFrm_main.Timer_mouseTimer(Sender: TObject);
vari: Integer;txt: string;X, Y: Integer;
beginTimer_mouse.Enabled := false;if ((LBUTTONDOWN_x_last - LBUTTONUP_x_last) *(LBUTTONDOWN_x_last - LBUTTONUP_x_last) +(LBUTTONDOWN_y_last - LBUTTONUP_y_last) *(LBUTTONDOWN_y_last - LBUTTONUP_y_last) > 100) and (true) thenbegintxt := '';tryold_clipboard_text := Clipboard.AsText;Clipboard.AsText := '';for i := 1 to 6 dobegindo_copy();mysleep(200);txt := Clipboard.AsText;if txt <> '' thenBreak;end;Clipboard.AsText := old_clipboard_text;exceptend;show_btn(Point(LBUTTONUP_x_last, LBUTTONUP_y_last), trim(txt),false);endelsebeginif frm_btn <> nil thenFreeAndNil(frm_btn);end;
end;procedure TFrm_main.TrayIcon1MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
beginif Button = mbLeft thenbeginPostMessage(Handle, WM_my_cmd, 1, 0);end;end;procedure TFrm_main.my_cmd(var Message: TMessage);
begincase Message.WParam of1:beginWindowState := wsNormal;Visible := true;BringWindowToTop(Handle);top := (Screen.Height - Height) div 2;left := (Screen.Width - Width) div 2;end;3:beginwill_exit := true;OnClose := nil;OnCloseQuery := nil;WindowState := wsNormal;Visible := true;BringWindowToTop(Handle);PostMessage(Handle, WM_CLOSE, 0, 0);end;end;end;procedure TFrm_main.my_cmd_mouse(var Message: TMessage);
varX, Y: Integer;
begintryX := Message.LParam div 10000;Y := Message.LParam mod 10000;do_cmd_mouse(Message.WParam, X, Y);excepton e: Exception dobeginwrite_log('my_cmd_mouse ' + e.Message);end;end;
end;end.

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

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

相关文章

日拱一卒(4)——leetcode学习记录:路径总和

一、任务&#xff1a; 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶…

二叉树(四)

一、二叉树的性质 二、练习 1.某二叉树共有399个节点&#xff0c;其中有199个度为2的节点&#xff0c;则二叉树中的叶子节点数为&#xff08; &#xff09;。 A.不存在这样的树 B.200 C.198 D.199 答案&#xff1a;B 参考二叉树的性质第三条 2.在具有2…

【Hadoop】核心组件深度剖析:HDFS、YARN与MapReduce的奥秘

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《大数据前沿&#xff1a;技术与应用并进》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Hadoop简介 2、Hadoop生态系统概览 二、Hadoo…

如何做萤石开放平台的物联网卡定向?

除了用萤石自带的4G卡外&#xff0c;我们也可以自己去电信、移动和联通办物联网卡连接萤石云平台。 1、说在前面 注意&#xff1a;以下流程必须全部走完&#xff0c;卡放在设备上才能连接到萤石云平台。 2、大致流程 登录官网→下载协议→盖章&#xff08;包括骑缝章&#…

多平台编译libexif

下载地址&#xff1a;https://github.com/libexif/libexif/releases 1. ubuntu x64 &#xff08;银河麒麟系统aarch64步骤相同&#xff09; # 解压 > tar -jxvf libexif-0.6.24.tar.bz2 > cd libexif-0.6.24 # 配置 > ./configure # 编译 > make # 安装 > mak…

【C++】String类:标准库介绍

目录 一.预备知识 1.auto关键字 2.范围for 3.迭代器 二.标准库里的string 1.string类的基本介绍 2.构造函数 ​编辑 3.访问及遍历操作 3.1 operator [] 3.2 基于范围for 3.3 使用迭代器 4.迭代器 5.容量操作 5.1 size和length 5.2 capacity 5.3 reserve和resiz…

备考2024年美国数学竞赛AMC10:吃透1250道真题和知识点(持续)

有什么含金量比较高的初中生数学竞赛吗&#xff1f;美国数学竞赛AMC10是个不错的选择。那么&#xff0c;如何备考AMC10美国数学竞赛呢&#xff1f;做真题&#xff0c;吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。 通过做真题&#xff0c;可以帮助孩子找到真实竞赛…

Python使用Selenium进行Web自动化测试详解

目录 引言 一、Selenium简介 Selenium的核心组件 二、环境搭建 1. 安装Python 2. 安装Selenium库 3. 下载并配置浏览器驱动 三、基础用法 1. 启动浏览器 2. 定位页面元素 3. 元素操作 4. 等待元素加载 1. 测试目的 2. 测试步骤与代码实现 3. 注意事项 结论 引言…

ViT笔记学习

1.VIT ViT原理讲解 ViT结合代码 1.3 ViT模型架构 我们先结合下面的动图来粗略地分析一下ViT的工作流程&#xff0c;如下&#xff1a; 将一张图片分成patches将patches铺平将铺平后的patches的线性映射到更低维的空间添加位置embedding编码信息将图像序列数据送入标准Transfor…

labview经验分享1-任意16进制字符类型匹配

系列文章目录 1、任意16进制字符类型匹配 文章目录 系列文章目录问题导入实现任意16进制字符类型匹配在这里插入图片描述 总结 问题导入 labveiw的字符串匹配&#xff0c;使用的是正则表达式&#xff0c;可以让我们很方便的对字符串进行字符处理操作。 但是某些情况下&#…

【python】Python实现XGBoost算法的详细理论讲解与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

encoding with ‘idna‘ codec failed (UnicodeError: label empty or too long)

今天在使用Flask连接mysql的时候&#xff0c;遇到了一个报错&#xff1a;encoding with ‘idna’ codec failed (UnicodeError: label empty or too long) 网上查了一下说是字符集的问题&#xff0c;然后尝试修改了一下字符集&#xff0c;结果还是不行。 最后去翻阅SQLAlchemy…

使用docker-compose运行kafka及验证(无需zookpeer)

前言&#xff1a;要求安装docker-compose kafka镜像版本&#xff1a;apache/kafka:3.8.0 可能存在镜像拉不下来的情况&#xff1a; 1、vim /etc/docker/daemon.json {"data-root":"/data/docker","registry-mirrors": ["https://docker.m…

力扣第 411 场周赛题解

3258. 统计满足 K 约束的子字符串数量 I 给你一个 二进制 字符串 s 和一个整数 k。 如果一个 二进制字符串 满足以下任一条件&#xff0c;则认为该字符串满足 k 约束&#xff1a; 字符串中 0 的数量最多为 k。字符串中 1 的数量最多为 k。 返回一个整数&#xff0c;表示 s …

【数据结构-哈希前缀】力扣2845. 统计趣味子数组的数目

给你一个下标从 0 开始的整数数组 nums &#xff0c;以及整数 modulo 和整数 k 。 请你找出并统计数组中 趣味子数组 的数目。 如果 子数组 nums[l…r] 满足下述条件&#xff0c;则称其为 趣味子数组 &#xff1a; 在范围 [l, r] 内&#xff0c;设 cnt 为满足 nums[i] % mod…

JVM -垃圾回收器

本人在这篇文章中讲解了垃圾回收机制&#xff0c;这为前置知识 美团一面面经&#xff1a;Threadlocal&#xff08;线程局部变量的原理&#xff09;-&#xff1e;内存泄漏问题-&#xff1e;垃圾回收机制_threadlocal回收-CSDN博客 首先对前置知识漏洞做一个补充&#xff1a;ja…

open Euler22.03系统安装宝塔面板

环境&#xff1a;华为云open Euler22.03操作系统 配置&#xff1a;2核4G 1、安装宝塔面板。 登录弹性云服务器。 执行以下命令&#xff0c;下载并安装宝塔面板。 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh &&…

STM32裸机和RTOS中的线程安全问题及STM32cubeMX中的线程安全策略

STM32线程安全问题 术语“线程” 和“多线程” 适用于裸机和基于RTOS的应用程序&#xff0c;线程安全问题并不只存在于基于RTOS的应用程序中&#xff1b;裸机应用程序中也存在这个问题&#xff0c;在裸机应用程序中&#xff0c;中断服务程序允许调用C库函数。线程安全问题可能…

Python实现水果忍者(开源)

一、整体介绍&#xff1a; 1.1 前言&#xff1a; 游戏代码基于Python制作经典游戏案例-水果忍者做出一些改动&#xff0c;优化并增加了一些功能。作为自己Python阶段学习的结束作品&#xff0c;文章最后有源码链接。 1.2 Python主要知识&#xff1a; &#xff08;1&#xf…

Python爬虫——爬取某网站的视频

爬取视频 本次爬取&#xff0c;还是运用的是requests方法 首先进入此网站中&#xff0c;选取你想要爬取的视频&#xff0c;进入视频播放页面&#xff0c;按F12&#xff0c;将网络中的名称栏向上拉找到第一个并点击&#xff0c;可以在标头中&#xff0c;找到后续我们想要的一些…