1 | @startmindmap |
数字图像处理
dotNetCore 异常处理
QQs :在.net程序中,处理因网络连接问题或者服务端故障造成的请求异常,应该捕获异常类型?
ChatGPT :
在处理因网络连接问题或者服务端故障造成的请求异常时,应该捕获相应的异常类型,以便能够进行正确的处理和响应。
在.Net中,常见的网络连接相关的异常包括SocketException、WebException、HttpRequestException等。这些异常通常都是由于网络连接问题或者服务端故障造成的。
在捕获这些异常时,可以根据具体的情况进行处理。例如,在SocketException中,可以根据不同的SocketError类型进行不同的处理,如SocketError.ConnectionReset、SocketError.ConnectionRefused等等。在WebException中,可以根据StatusCode、Response等内容进行判断和处理。
需要注意的是,捕获网络连接异常时,不应该过于通用,而是应该针对性地捕获相关的异常类型。过于通用的捕获会导致程序无法准确地判断和处理异常,从而可能造成不必要的后果。
QQs :开发异常处理逻辑时,如何模拟socket exception的异常场景?
ChatGPT :
要模拟socket exception的异常场景,可以使用一些技巧来使网络连接不可用或出现异常。
使用无效IP地址:使用一个无效的IP地址来模拟连接被拒绝的情况。可以使用“0.0.0.0”或“localhost”等无效的IP地址。
使用无效的端口号:使用一个未使用的端口号来模拟连接失败的情况。可以使用大于65535或小于0的端口号,或者使用已被占用的端口号。
断开网络连接:可以断开计算机连接网络的网线或关闭Wi-Fi,模拟网络连接失败的情况。
阻止网络流量:可以使用网络防火墙或代理服务器等工具来阻止网络流量,模拟无法连接到网络的情况。
模拟超时:可以使用延迟工具或人为地使服务器响应变慢,模拟连接超时或响应超时的情况。
需要注意的是,在进行模拟异常的时候,应该先测试代码是否可以正确处理常规情况下的流程,避免把程序带入模拟异常的陷阱中。同时,需要保证模拟异常的环境不能影响其他程序的正常运行。
QQs :举例的SocketException和WebException,能给出具体代码吗?
ChatGPT :
当Socket遇到连接重置或连接拒绝时,可以通过SocketException捕获异常并进行相应处理。例如:
1 | try { |
当网络请求发生错误时,可以通过WebException捕获异常并进行相应处理。例如:
1 | try { |
需要注意的是,在处理异常时,需要根据具体的异常类型、异常代码等信息进行判断和处理,从而保证能够处理所有可能出现的异常情况。
OpenCV 颜色识别
参考C++版Determining object color with OpenCV
参考python多边形形状及颜色
1 | # coding=utf-8 |
OpenCV-Polygon
approxPolyDP 多边形逼近
参数1是源图像的某个轮廓;参数2(epsilon)是一个距离值,表示多边形的轮廓接近实际轮廓的程度,值越小,越精确;参数3表示是否闭合。
contourArea 区域面积
double contourArea(InputArray contour, bool oriented = false);
contour,输入的二维点集(轮廓顶点),可以是 vector 或 Mat 类型。
oriented,面向区域标识符。有默认值 false。若为 true,该函数返回一个带符号的面积值,正负取决于轮廓的方向(顺时针还是逆时针)。若为 false,表示以绝对值返回。
arcLength 曲线长度
arcLength 函数用于计算封闭轮廓的周长或曲线的长度。
double arcLength(InputArray curve, bool closed);
curve,输入的二维点集(轮廓顶点),可以是 vector 或 Mat 类型。
closed,用于指示曲线是否封闭。
dotNetCore-AppStartupTime
关于冷启动
启动 WPF 应用程序所需的时间可能存在极大差异。冷启动发生在系统重启后第一次启动应用程序时,或启动应用程序、将其关闭,然后在很长一段时间后再次启动应用程序时。 应用程序启动时,如果所需的页面(代码、静态数据、注册表等)不在 Windows 内存管理器的待机列表中,会发生页面错误。 需要磁盘访问权限,以便将这些页面加载到内存中。
当已将主要公共语言运行时 (CLR) 组件的大多数页面加载到内存中时,则发生热启动,这样可节省宝贵的磁盘访问时间。 这就是为什么再次运行托管的应用程序时,该程序的启动速度更快的原因。
QQs: 冷启动是关于app资源从硬盘到内存的访问权的unefficient
使用初始屏幕增强体验
在app启动就绪之前,渲染一个初始屏幕以安慰等待用户
添加图像资源(BMP、GIF、JPEG、PNG 或 TIFF 格式)到项目,在解决方案资源管理器中打开图像Properties—>Build Action选择SplashScreen
I/O
重新启动后,立即启动 WPF 应用程序,并决定用于显示的时间。 如果应用程序的所有后续启动(热启动)相较之下快很多,则冷启动问题很可能是 I/O 所致。
模块加载
进程资源管理器 Procexp.exe
命令行工具 tasklist /M (显示进程调用的dll)
React-style
CSS Modules:CSS Modules将CSS文件的类名作为局部作用域进行处理,以避免全局命名冲突,同时方便了在组件中使用CSS。在React中,您可以使用Webpack和css-loader来加载CSS Modules。
Styled Components:Styled Components是一个CSS样式解决方案,它通过将CSS作为模板字符串嵌入到JavaScript中来直接在组件中定义样式,从而使组件的样式与其它代码逻辑紧密耦合。
CSS-in-JS:CSS-in-JS是使用JavaScript来动态地管理CSS样式的方法。这种方法的好处是可以通过JavaScript组合样式,动态修改样式以及动态响应用户交互。
jenkins-slave
Jenkins的Master/Slave相当于Server和agent的概念,Master提供web接口让用户来管理Job和Slave,Job可以运行在Master本机或者被分配到Slave上运行。一个Master可以关联多个Slave用来为不同的Job或相同的Job的不同配置来服务。
其显而易见的意义在于使用同一个管理界面调用不同的开发环境
新建节点
在开发环境上安装一个jenkins作为slave
在服务器jenkins上添加slave node: Dashboard > Manage Jenkins > Manage Nodes and Clouds
create后进行slave node配置
- Remote root directory 这个是slave上的jenkins工作目录,job会在此拉取项目并构建
- Labels 标签 将多个slave标记为一组 用于创建job时选择宜用的slave
如果需要调用slave机器上应用,可能需要设置环境变量,如使用某路径下的签名软件对构建的程序打签名,路径变量在此处
调用git拉取代码也要指定路径,否则会在master上看到无法定位到git
保存后会提供 连接命令,需要在slave端执行
使用slave构建
Markdown UML
流程图
1 | start |
1 | start |
时序图
1 | Main -> PubClientApplication |
思维导图
1 | @startmindmap |