Other

NX二次开发-Winfrom使用Adobe提供的ActiveX控件显示PDF

文章讨论主题 有的时候可能需要在我们的二次开发界面上来显示PDF,那么怎么在对话框界面上面来加PDF控件呢?  这张自由拥抱是我设计的一张海报,本来和喜欢的女孩子约好,一起去陆家嘴天桥上做活动,录制自由拥抱视频的, 结果因为新冠疫情,去不上了。该死的 新冠疫情~~ 妈的 步骤 1.首先电脑要安装 AbodeReader11.exe 这个PDF阅读器软件  2.新建一个winfrom的NX二次开发项目,不会的看这篇文章 NX二次开发-基于Winform界面对话框与NXOPEN C#交互的开发(对话框嵌套) 3.向winform的工具箱里添加 Adobe的ActiveX控件     已经加进来了,我们把控件拖到winform界面上  我们在添加一个button按钮,来弹出选择pdf对话框,来加载 用户当前选择的pdf文件  双击按钮,去回调里面添加代码。 OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = PDF文档(*.pdf)|*.pdf; if (ofd.ShowDialog() == DialogResult.OK) { axAcroPDF1.LoadFile(ofd.FileName); }  演示  阿飞 2022年4月19日

Idea集成GitHub

获取登录口令 使用口令登录 分享项目到远程库 代码推送到远程库 从远程库拉取代码 clone远程库代码 或者idea初始化界面 )

.NET Core中Startup.cs文件的作用

我们在建立.net core项目中Startup.cs文件必不可少,最近在面试中别人提问到Startup.cs中有哪三种方法,以及对应的作用是什么,没有答复的很好,因此也总结记录一下。 以前我们在创建.net项目的时候会看到两个文件: global.asax 文件,可以在启动 Web 应用程序期间编写代码来执行的一个地方 web.config 文件,用来包含应用程序需要执行的所有配置参数 在 ASP.NET Core 中,这些文件全部消失,取而代之的是使用 Startup.cs 加载配置和启动代码 Startup.cs 文件中有一个 Startup 类,在这个类中可以配置应用程序,甚至配置配置源 下面先看看原文件的结构 using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; namespace HelloWorld { public class Startup { // 该方法在运行时被调用。 // 可以使用该方法将服务添加到容器中 // 更多信息配置应用程序的信息,可以查看 https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { } // 该方法在运行时被调用 // 可以使用该方法来配置 HTTP 请求管道 public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.

leetcode312 戳气球

思路: 逆向思维,一个一个移除气球不好处理,改为一个一个增加气球,就可以使用区间dp计算了。 实现: 1 class Solution { 2 public: 3 int maxCoins(vector<int>& nums) { 4 int n=nums.size(); 5 vector<int>a(n+2,1); 6 for(int i=0;i<n;i++){ 7 a[i+1]=nums[i]; 8 } 9 vector<vector<int>>dp(n+2,vector<int>(n+2,0)); 10 for(int i=n+1;i>=0;i--){ 11 if(i+2<=n+1)dp[i][i+2]=a[i]*a[i+1]*a[i+2]; 12 for(int j=i+3;j<=n+1;j++){ 13 for(int k=i+1;k<j;k++){ 14 dp[i][j]=max(dp[i][j],dp[i][k]+a[k]*a[i]*a[j]+dp[k][j]); 15 } 16 } 17 } 18 return dp[0][n+1]; 19 } 20 };

实验三

一 运行代码为 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<windows.h> #define N 80 void printText(int line, int col, char text[]); void printSpaces(int n); void printBlankLines(int n); int main() { int line,col,i; char text[N] = Hi,May~~; srand(time(0)); for (i = 0; i <= 10; i++) { line = rand() % 25; col = rand() % 80; printText(line, col, text); Sleep(1000); } return 0; } void printBlankLines(int n) { int i; for (i = 1; i <= n; i++) printf(\n); } void printSpaces(int n) { int i; for (i = 1; i <= n; i++) printf( ); } void printText(int line, int col, char text[]) { printBlankLines(line - 1); printSpaces(col - 1); printf(%s, text); } 功能

Azure虚拟桌面 (1) 配置用户配置文件保存到Azure Storage File中

《Windows Azure Platform 系列文章目录》   Azure虚拟桌面支持把用户配置文件(User Profile)保存到Azure Storage File中,这里记录一下关键步骤。   我们需要准备的环境如下:  1.创建Azure Windows Server VM,配置域控制器(Domain Controller)  2.创建虚拟机桌面主机池,准备3台主机  3.在Windows域控制里,创建3个用户avd01, avd02, avd03  4.在Windows域控制器里,创建用户组avdusergroup,该组包含上面3个用户  5.创建Azure Storage和Azure File   需要参考的脚本:  https://github.com/leizhang1984/AzureVirtualDesktop/tree/main/AzFilesHybrid   关键步骤:  1.以域管理员账户,通过RDP登录到Azure Windows Server域控制器上  (1)在域控制上,安装Azure Az Module,具体请参考:https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-7.4.0  (2)把上面github的文件,都复制到域控制器的硬盘上,修改02.AFS-StoracctjoinAD.ps1里的参数变量  (3)运行02.AFS-StoracctjoinAD.ps1,建议一步一步执行  (4)运行完毕后,Azure File就支持域验证,如下图:    2.通过RDP,登录到Azure AVD的第一台虚拟机上,登录名为本机管理员账户  (1)下载GitHub的文件,修改03.AssignAFS.ps1里的参数  (2)运行完毕后,Azure File Share就可以查看到IAM分配的用户和用户组,如下图:   (3)在Azure AVD的第一台虚拟机的远程桌面里,修改并运行04.mount.ps1

Spring.Day11.MyBatis

01. 什么是MyBatis   02. MyBatis的开发步骤  a. 添加 MyBatis 的坐标;    b. 创建user数据库表  c. 编写user数据库表对应的 User实体类    d. 编写映射文件 UserMapper.xm;    e. 编写核心配置文件 SqlMapConfig.xml    f. 编写测试类;    >> 注意不同方式下事务的提交方式不同     03. 映射文件的概述    04. 插入业务  >> 映射配置:    >> 测试用例    >>插入操作应注意的问题    05.修改  >> 配置映射

Dora.the.Explorer(1-4)季480p英文原版,找了好久才下载下来

「Dora.the.Explorer.S01.48...B-DL.AAC2.0.H264.AR」https://www.aliyundrive.com/s/XE6CjZRh5kk 提取码: un67 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 「Dora.the.Explorer.S02.WEB-DL.AAC2.0.H.264-AR」https://www.aliyundrive.com/s/cLqH57oBwBx 提取码: un67 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 「Dora.The.Explorer.S03.48...MZN.WEBRip.DD2.0.x264-AR」https://www.aliyundrive.com/s/uojx6BErN27 提取码: un67 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 「Dora.The.Explorer.S04.48...MZN.WEBRip.DD2.0.x264-AR」https://www.aliyundrive.com/s/ngWvFpnEPor 提取码: un67 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

通过后缀表达式求表达式的值

通过后缀表达式求表达式的值 知识点:树的前中后序遍历(可以参考AK宝典),后缀表达式(逆波兰式),中缀转后缀,后缀表达式求值 引言: 对于一个数学表达式,比如说 1-(2+3/4)*5=?可以很容易地人工计算出结果。 然而如果想要用计算机求这样表达式的值似乎有一点麻烦,因为计算机不太方便处理运算符的优先级,尤其是括号对优先级的影响。 因此,想要用计算机求表达式的值,最好要找到一种方法可以排除括号,运算符优先级的干扰。 一.表达式与树: 事实上,任何一个数学表达式都可唯一转化为一棵树,比如说:1-(2+3/4)*5=?可以转化为如下一棵二叉树: 树的特性: 可以看出,这棵二叉树的每一个叶子节点都是一个数,而每两个节点的父节点都是一个运算符,比如最右边子树3,4,/,它代表3/4 如果能拿到这样的一颗二叉树,求上述表达式的值就很简单了,我们只需要先算出子树3/4=0.75,再计算子树2+0.75=2.75,再计算子树5*2.75=13.75,最后计算根节点处1-13.75=-12.75即可求出表达式的值 不难发现,这颗二叉树的中序遍历结果为:1-2+3/4*5,也就是原表达式去掉括号的样子。 因此,原数学表达式也被称为中缀表达式,对这棵树后序遍历得到的结果称为后缀表达式 树的求法: 而这样的树的求法也很很简单,我们只需要找出原表达式中最先计算的运算( 3/4 ),把它作为一颗子树,然后我们就可以把这个运算(3/4)视为一个整体,找出原式中其次优先的运算(2+3/4)和之前的子树组成一颗更大的树,直至把所有运算都处理完,就可以得出一整棵树 不过,对于计算机而言,无论是求树的过程,还是通过树求值的过程都还是有些复杂,需要进一步简化 二.使用后缀表达式求值: 首先,这颗树对应的后缀表达式为 1 2 3 4 / + 5 * -,不难看出,后缀表达式不含括号,数字的排列顺序与原式相同,原式中优先级越高的运算符在该后缀表达式中越先出现。 因此,一定存在某种方案能够使得计算机在处理一个后缀表达式时能够先把运算优先级高的运算计算出来,使其能够用于后续的低优先级运算。 而对于中缀表达式,由于运算级高的运算不一定排在前面,因此计算机必须反复扫描中缀表达式,先算优先级高的,再算优先级低的运算,这就是后缀表达式更加易于求值的原因。 具体而言: 我们依次处理后缀表达式中的每一个数字或符号a[i]: 如果a[i]是一个数字,就直接将其压入栈s中 如果a[i]是一个运算符,则将栈s顶端的第一个元素a,第二个元素b分别从栈中取出并清除,计算 c=b运算a (比如c=b-a),然后再将c压入栈中,进行后续操作 对于后缀表达式1 2 3 4 / + 5 * -,运算过程如下: 后缀表达式 栈(从底到顶) 运算过程 1 2 3 4 / + 5 * - 1 1入栈 1 2 3 4 / + 5 * - 1 2 2入栈 1 2 3 4 / + 5 * - 1 2 3 3入栈 1 2 3 4 / + 5 * - 1 2 3 4 3入栈 1 2 3 4 / + 5 * - 1 2 0.

Gitee码云

创建远程库 Idea集成Gitee ​ 安装码云插件 ​ 登录码云账号 Gitee连接GitHub 进行代码复制和迁移 可以更新GitHub项目代码