如果朋友走上了错误的人生道路,就算破坏友情也要阻止他
们将在这个小小的城镇中相互扶持,共同生活下去
今宵之月,绝不西沉。只此美梦,不再苏醒。从今往后,生生世世,长相厮守,为你立誓。
我们不能让这次冒险之旅没有意义没有收获
我们的本质就是血,一层层地重复,然后世代脉脉相传的血才是黑血的真实
当你知道自己被爱著的时候就不会自卑了asd
不要哭,我还没有努力到要哭的程度,不甘心就可以了das
既不回头,何必不忘;既然无缘,何必誓言;今日种种,似水无痕
空谈之类,是谈不久,也谈不出什么来的,它终必被事实的镜子照出原形,拖出尾巴而去
只愿涤荡四方,护得一世之隅。
你看你浪费了多少流星,哈哈……不牵个手也很浪费这样的夜晚呢
有形的东西迟早会凋零,但只有回忆是永远不会凋零的
已经无法回来的东西,得到和舍弃都很痛苦
Pain past is pleasure.11222
我因为后来离开村子,在远处看见这一村庄人的火焰。看见他们比熄灭还要寂静的那一场燃烧。我像一根逃出火堆的干柴,幸运而孤独地站在远处。
首页
统计
免费Chat GPT
关于
更多
友链
每日新闻
视频
高清壁纸
Search
1
2023彩虹易支付最新原版开源网站源码,完整的易支付源码,无后门
466 阅读
2
ThinkPHP6的常见问题解答
387 阅读
3
Spring Boot之七牛云分片上传
241 阅读
4
小狐狸ChatGPT付费创作系统V2.4.9独立版 +WEB端+ H5端 + 小程序端(支持分享朋友圈、破解弹窗)
230 阅读
5
国内最好用的六款虚拟机软件
212 阅读
技术分享
源码分享
课程分享
号卡套餐
移动专区
电信专区
联通专区
广电专区
软件仓库
电脑软件
安卓软件
活动线报
值得一看
Search
标签搜索
技术分享
源码
源码分享
css
安卓软件
活动线报
软件
课程分享
号卡
电脑软件
PHP
值得一看
HTML
js
教程
chatgpt
AI
小程序
ThinkPHP
联通
老K博客
累计撰写
420
篇文章
累计收到
339
条评论
今日撰写
0
篇文章
首页
栏目
技术分享
源码分享
课程分享
号卡套餐
移动专区
电信专区
联通专区
广电专区
软件仓库
电脑软件
安卓软件
活动线报
值得一看
页面
统计
免费Chat GPT
关于
友链
每日新闻
视频
高清壁纸
用户登录
登录
搜索到
117
篇与
的结果
2023-12-11
Python实现统计图像连通域的示例详解
数组统计函数ndimage提供一系列函数,可以计算标注后的数组的相关特征,比如最值、均值、均方根等。下列函数,如果未作其他说明,那么就有3个参数,分别是(input, labels=None, index=None),其中input为输入数组;labels为input的标签,形状和input相同;index为整数或者整数数列,为用于计算的label。示例如下import numpy as np import scipy.ndimage as sn x = np.random.randint(10, size=(3,3)) print(x) ''' [[0 3 5] [9 3 1] [1 5 7]] ''' sn.center_of_mass(x) # (1.1470588235294117, 1.088235294117647) sn.extrema(x) # (0, 9, (0, 0), (1, 0))连通域标记通过label函数,可以对数组中的连通区域进行标注,效果如下from scipy.ndimage import label import numpy as np a = np.array([[0,0,1,1,0,0], [0,0,0,1,0,0], [1,1,0,0,1,0], [0,0,0,1,0,0]]) labels, N = label(a) print(labels) ''' [[0 0 1 1 0 0] [0 0 0 1 0 0] [2 2 0 0 3 0] [0 0 0 4 0 0]] ''' print(N) 4在label函数中,还有一个用于规范何为“连通”的参数,即structure,其数据类型为二值数组,其维度与输入的input相同。在上面的示例中,连通域1,3,4尽管没有上下左右的联系,但在对角线上是有交集的,通过调整structure参数,可以提供一种将这三个区域连在一起的连通域方案。stru = np.ones([3,3]) bLab, bN = label(a, stru) print(bLab) ‘'‘ [[0 0 1 1 0 0] [0 0 0 1 0 0] [2 2 0 0 1 0] [0 0 0 1 0 0]] '‘'可见,这次只选出了两组连通域。连通域统计前面提到的所有统计函数,形参都有三个,分别是input, labels, index,其中input为输入数组,labels为将要处理的连通域,index为准备处理的连通域序号。np.random.seed(42) test = np.random.rand(5,5) test[test<0.8] = 0 labels, N = sn.label(test) print(N) # 2 print(labels) # ‘'‘ [[0 1 0 0 0] [0 0 2 0 0] [0 2 2 0 0] [0 0 0 0 0] [0 0 0 0 0]] '‘' print(test) ‘'‘ [[0. 0.95071431 0. 0. 0. ] [0. 0. 0.86617615 0. 0. ] [0. 0.96990985 0.83244264 0. 0. ] [0. 0. 0. 0. 0. ] [0. 0. 0. 0. 0. ]] '‘'接下来通过连通域统计函数,针对某个连通域进行计算>>> sn.mean(test, labels, 1) 0.9507143064099162 >>> sn.mean(test, labels, 2) 0.8895095462457837 >>> sn.mean(test, labels, 0) 0.0当index=1时,会找出labels中为1的位置,然后把test中这些位置的元素求平均。到此这篇关于Python实现统计图像连通域的示例详解的文章就介绍到这了,更多相关Python统计图像连通域内容请搜索老K博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持老K博客!
2023年12月11日
86 阅读
0 评论
0 点赞
2023-12-10
Spring Boot之七牛云分片上传
前言上传文件在各大网站中都是随处可见的,但是通常文件小到几KB,大到上百MB,如果不对上传接口做处理的话,会发现上传文件过大时就会导致等待时间过长,而且还存在失败的可能,所以我们就需要对接口进行处理。处理的方法通常都是进行分片上传分片上传本质就是在前端把一个完整的文件拆分成若干份文件上传,上传完成后,服务器再把上传的若干份文件合并成一个完整的文件,再删除若干份分片文件。本篇文章中我们使用七牛云来进行分片上传。为什么使用七牛云因为本博客就是使用的七牛云,O(∩_∩)O哈哈~上传代码 private String fragmentationUpload(MultipartFile file,String suffix){ //构造一个带指定 Region 对象的配置类 Configuration cfg = new Configuration(Region.region0()); cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本 cfg.resumableUploadMaxConcurrentTaskCount = 2; // 设置分片上传并发,1:采用同步上传;大于1:采用并发上传 String localFilePath = DateUtil.dateTimeToStr(DateUtil.getNowDate(), DateUtil.YYYYMMDD) +"_"+ DateUtil.getNowDate().getTime(); String key = null; Auth auth = Auth.create(qi_niu_accessKey, qi_niu_secretKey); String upToken = auth.uploadToken(qi_niu_bucket); String localTempDir = Paths.get(System.getenv("java.io.tmpdir"), qi_niu_bucket).toString(); FileInputStream inputStream = null; try { //设置断点续传文件进度保存目录 FileRecorder fileRecorder = new FileRecorder(localTempDir); UploadManager uploadManager = new UploadManager(cfg, fileRecorder); try { inputStream = (FileInputStream) file.getInputStream(); Response response = uploadManager.put(inputStream, localFilePath + "." + suffix, upToken,null,null); //解析上传成功的结果 DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class); key = qi_niu_url + putRet.key; } catch (QiniuException ex) { ex.printStackTrace(); if (ex.response != null) { System.err.println(ex.response); try { String body = ex.response.toString(); System.err.println(body); } catch (Exception ignored) { } } } } catch (IOException ex) { ex.printStackTrace(); } return key; }
2023年12月10日
241 阅读
4 评论
0 点赞
2023-12-03
thinkphp 在二级目录运行如何配置伪静态
前言最近在整理之前写的项目,想上一下演示网址,但又不想为每个项目都配置一个域名。打算全放到 另一个域名下。便研究起了如何配置 Nginx,以便让 thinkphp 在二级目录下运行。目录结构demo.fosky.top ├─reg │ ├─application │ ├─config │ ├─extend │ ├─public │ │ │─static │ │ │ └─css │ │ └─index.php │ ├─route │ ├─runtime │ └─thinkphp ├─shop │ ├─application │ ├─config │ ├─extend │ ├─public │ │ └─static │ ├─route │ ├─runtime │ └─thinkphp └─zy研究过程百度了蛮久的,但找到的教程都和 tp 的文档上写的差不多 URL访问 · ThinkPHP5.1完全开发手册 · 看云 (kancloud.cn) 如果你的应用安装在二级目录, Nginx 的伪静态方法设置如下,其中 youdomain 是所在的目录名称。location /youdomain/ { if (!-e $request_filename){ rewrite ^/youdomain/(.*)$ /youdomain/index.php?s=/$1 last; } }便尝试着配置了下。但是呢,我的运行目录在 public,我又不想改入口文件位置,毕竟那样我需要另外设置规则来屏蔽目录访问。那大家可能会说了,把文档里的规则改改,加上 public 不就好了吗?但这样会有个问题,直接访问目录显示 404。所以还是得研究怎么改。后面我想到,只要访问路径和二级目录名一样时,rewrite 到 index.php 不久好了吗?location /reg/ { if (!-e $request_filename){ rewrite ^/reg/(.*)$ /reg/public/index.php?s=$1 last; } if($request_uri=/reg/){ rewrite ^/reg/(.*)$ /reg/public/index/index last; } }然设置之后就可以了。但是还是有问题的,因为我的 public 目录下是有 static 目录来存放静态文件的,但由于项目目录下找不到文件,所以它就直接 rewrite 到 index.php 了,然后就会提示模块不存在,并返回 404 错误码。 然后我想到可以再加条匹配规则,检测到访问路径中有 static,就 rewrite 到 /public/static 去访问文件。这样问题就解决了。当然也可以匹配文件后缀名。
2023年12月03日
208 阅读
3 评论
0 点赞
2023-12-02
学会XPath抓取网页数据
一、前言XPath(XML Path Language)是一种用于在 XML 文档中定位和选择节点的语言。XPath的选择功能非常强大,可以通过简单的路径选择语法,选取文档中的任意节点或节点集。学会XPath,可以轻松抓取网页数据,提高数据获取效率。二、XPath基础语法节点(Nodes): XML 文档的基本构建块,可以是元素、属性、文本等。路径表达式: 用于定位 XML 文档中的节点。路径表达式由一系列步骤组成,每个步骤用斜杠 / 分隔。XPath的节点是指在XML或HTML文档中被选择的元素或属性。XPath中有7种类型的节点,包括元素节点、属性节点、文本节点、命名空间节点、处理指令节点、注释节点以及文档节点(或称为根节点)。元素节点:表示XML或HTML文档中的元素。例如,在HTML文档中,、、等都是元素节点。在XPath中,可以使用元素名称来选择元素节点,例如://div表示选择所有的元素。属性节点:表示XML或HTML文档中元素的属性。例如,在HTML文档中,元素的class、id、src等属性都是属性节点。在XPath中,可以使用@符号来选择属性节点,例如://img/@src表示选择所有元素的src属性。文本节点:表示XML或HTML文档中的文本内容。例如,在HTML文档中,标签中的文本内容就是文本节点。在XPath中,可以使用text()函数来选择文本节点,例如://p/text()表示选择所有元素中的文本内容。命名空间节点:表示XML文档中的命名空间。命名空间是一种避免元素命名冲突的方法。在XPath中,可以使用namespace轴来选择命名空间节点,例如://namespace::*表示选择所有的命名空间节点。处理指令节点:表示XML文档中的处理指令。处理指令是一种用来给处理器传递指令的机制。在XPath中,可以使用processing-instruction()函数来选择处理指令节点,例如://processing-instruction('xml-stylesheet')表示选择所有的xml-stylesheet处理指令节点。注释节点:表示XML或HTML文档中的注释。注释是一种用来添加说明和备注的机制。在XPath中,可以使用comment()函数来选择注释节点,例如://comment()表示选择所有的注释节点。文档节点:表示整个XML或HTML文档。文档节点也被称为根节点。在XPath中,可以使用/符号来选择文档节点,例如:/表示选择整个文档节点。本文使用XML示例如下<bookstore> <book category='fiction'> <title>活着</title> <author>余华</author> <press>作家出版社</press> <date>2012-8-1</date> <page>191</page> <price>20.00</price> <staple>平装</staple> <series>余华作品(2012版)</series> <isbn>9787506365437</isbn> </book> <book category='non-fiction'> <title>撒哈拉的故事</title> <author>三毛</author> <press>哈尔滨出版社</press> <date>2003-8</date> <page>217</page> <price>15.80</price> <staple>平装</staple> <series>三毛全集(华文天下2003版)</series> <isbn>9787806398791</isbn> </book> <book category='non-fiction'> <title>明朝那些事儿(1-9)</title> <author>当年明月</author> <press>中国海关出版社</press> <date>2009-4</date> <page>2682</page> <price>358.20</price> <staple>精装16开</staple> <series>明朝那些事儿(典藏本)</series> <isbn>9787801656087</isbn> </book> </bookstore>除了这些基本节点类型之外,XPath还支持使用通配符: 以及使用谓词来进一步筛选选择的节点集。谓词是一种用来对节点进行过滤和排序的机制,可以包含比较运算符、逻辑运算符和函数等,部分示例如下: XPath使用路径表达式来选取XML或HTML文档中的节点或节点集。下面是一些常用的路径表达式:三、XPath使用示例选择所有名称为title的节点://title选择所有名称为title,同时属性lang的值为eng的节点://title[@lang='eng']选择id为bookstore的节点的所有子节点:/bookstore/*选择id为bookstore的节点的所有子孙节点:/bookstore//*选择id为bookstore的节点的直接子节点中的第一个节点:/bookstore/*[1]选择id为bookstore的节点的属性为category的值:/bookstore/@category四、XPath的高级用法XPath语言提供了一些高级的功能,包括:轴(Axes):XPath提供了几种轴,用于在文档中导航。包括child(子元素)、ancestor(祖先元素)、descendant(后代元素)和following-sibling(后续同级元素)等。函数:XPath提供了一些内置的函数,如count(),concat(),string(),local-name(),contains(),not(),string-length()等,可以用于处理和操作节点和属性3。条件语句:XPath提供了条件语句(如if-else语句),使得我们可以根据某些条件来选择性地提取元素或属性3。五、.NET中使用// XML 文档内容 string xmlContent = @" <bookstore> <book category='fiction'> <title>活着</title> <author>余华</author> <press>作家出版社</press> <date>2012-8-1</date> <page>191</page> <price>20.00</price> <staple>平装</staple> <series>余华作品(2012版)</series> <isbn>9787506365437</isbn> </book> <book category='non-fiction'> <title>撒哈拉的故事</title> <author>三毛</author> <press>哈尔滨出版社</press> <date>2003-8</date> <page>217</page> <price>15.80</price> <staple>平装</staple> <series>三毛全集(华文天下2003版)</series> <isbn>9787806398791</isbn> </book> <book category='non-fiction'> <title>明朝那些事儿(1-9)</title> <author>当年明月</author> <press>中国海关出版社</press> <date>2009-4</date> <page>2682</page> <price>358.20</price> <staple>精装16开</staple> <series>明朝那些事儿(典藏本)</series> <isbn>9787801656087</isbn> </book> </bookstore>"; // 创建 XPath 文档 using (XmlReader reader = XmlReader.Create(new StringReader(xmlContent))) { XPathDocument xpathDoc = new XPathDocument(reader); // 创建 XPath 导航器 XPathNavigator navigator = xpathDoc.CreateNavigator(); // 使用 XPath 查询(选择所有位于bookstore下、其category属性值为'fiction'的book元素中的title元素) string xpathExpression = "//bookstore/book[@category='fiction']/title"; XPathNodeIterator nodes = navigator.Select(xpathExpression); // 检查是否有匹配的节点 if (nodes != null) { // 遍历结果 while (nodes.MoveNext()) { // 检查当前节点是否为空 if (nodes.Current != null) { Console.WriteLine(nodes.Current.Value); } } } }运行结果六、XPath在自动化测试中的应用XPath最常用的场景之一就是在自动化测试中用来选择HTML DOM节点。例如,在Selenium自动化测试中,可以使用XPath作为选择web元素的主要方法之一。通过XPath选择器,可以方便地定位页面中的任意元素,进行自动化测试操作。七、XPath的优势与不足XPath的优势在于其强大的选择功能,可以通过简单的路径选择语法,选取文档中的任意节点或节点集。此外,XPath还支持超过100个内建函数,可用于字符串处理、数值计算、日期和时间比较等等。这些函数可以大大提高数据处理的效率。然而,XPath也有其不足之处。首先,XPath对于复杂的文档结构可能会变得非常复杂,导致选择语句难以理解和维护。其次,XPath在处理大量数据时可能会出现性能问题,因为它需要遍历整个文档来查找匹配的节点。因此,在使用XPath时需要注意优化查询语句,提高查询效率。八、总结学会XPath,可以轻松抓取网页数据,提高数据获取效率。本文介绍了XPath的定义、基础语法、使用示例、高级用法、.NET中使用举例以及在自动化测试中的应用场景,同时也讨论了XPath的优势与不足。希望本文能够帮助读者更好地理解和掌握XPath的使用方法。
2023年12月02日
39 阅读
0 评论
0 点赞
2023-11-18
如何实现这样一款代码图片生成器
前言要学好一门技术,最好的方式就是实践。上面这样一个代码图片生成器,就是当初为了学习 React 技术开发,特地找的一个功能不是很复杂,但是涉及的技术点又不至于太单一, 于是找了这样一个工具型的项目(UI 参照 ray.so[2]),代码从零开始实现来检验自己学的知识是否牢固。简单来讲解下,实现这个项目用到的一些技术点和背后的原理:代码高亮选择了最主流的 highlight.js 库;网页元素界面转图片使用了 html2canvas 工具;代码编辑器实时高亮是上层使用了 textarea 输入框,设置字体和背景透明,下层使用 div 显示代码,并结合 highlight.js 做代码高亮;透明背景通过 CSS 属性背景图片设置线性渐变 linear-gradient 模拟实现;代码背景框的左右拖拽来改变宽度功能。实现详解代码编辑器这里的难点,可能有人就想如何实现一个代码实时编辑的区域,又能让代码高亮显示?代码编辑区域我们使用文本输入框 textarea, 代码高亮我们使用 highlight.js 帮助实现,但是如何对输入框中的代码进行高亮是个难点。这里我们实现的思路是通过绝对定位 ,上层使用输入框,设置背景透明和其中的文字颜色透明,然后下层放置一个 div 层做代码的显示。上层输入,下层显示。结构代码export default function Main () { // ... return ( <div className="codeEditor"> <textarea className="editorTextarea" spellCheck={false} autoComplete='off' tabIndex={-1} autoCorrect='off' autoCapitalize='off' value={code} onChange={e => setCode(e.target.value)} style={{ height: editorHeight + 'px' }} onInput={e => setEditorHeight(e.target.scrollHeight)}> </textarea> <div id={settings.lang} ref={codeRef} className={clsx("codeFormatted", settings.lang)} style={{ color: '#fefdfd', background: 'transparent' }} > {code} </div> </div> )样式代码.codeEditor { display: grid; width: 100%; grid-template: 1fr/1fr; } .editorTextarea { border: none; resize: none; background: transparent; z-index: 2; color: transparent; caret-color: white; text-size-adjust: none; } .editorTextarea, .codeFormatted { padding: 16px 16px 21px 16px; margin: 0; font: var(--ifm-font-size-base) / var(--ifm-line-height-base) var(--ifm-font-family-base); font-weight: 500; font-family: 'JetBrains Mono', monospace; font-variant-ligatures: none; grid-column: 1/1; grid-row: 1/1; tab-size: 2; white-space: pre-wrap; box-sizing: border-box; }从 CSS 代码中高亮的部分我们可以看出,针对 editorTextarea 和 codeFormatted 两个类设置了相同的字体类型、大小相同的样式,就是保证 代码的输入层和显示层上下相同文字处于完全重合的状态,来模拟看到的代码就是你实时输入的代码。highlight.js 实现代码高亮部分代码:import hljs from '../../config/highlight'; useEffect(() => { if (codeRef.current) { hljs.highlightElement(codeRef.current); } }, [code, settings.lang])代码背景区域拖拽改变宽度本功能我已经将核心代码抽出来,实现成了小组件。原理不难懂,就是通过添加页面元素的监听事件,按下鼠标之后跟随鼠标移动位置,来计算区块宽度改变后的大小。详细实现参考:【可左右拖拽改变大小的区块[3]】将页面元素转成图片导出得益于 html2canvas 工具库的帮助,我们很轻松将网页中某一部分通过 canvas 中转导出成图片。const exportImg = () => { if (!imgCode.current) return; html2canvas(imgCode.current, { useCORS: true, scale: 2, backgroundColor: 'transparent' }).then((canvas) => { const dataURL = canvas.toDataURL('image/png'); let newImg = new Image() const date = new Date() newImg.src = canvas.toDataURL('image/png') const a = document.createElement("a"); a.style.display = "none"; a.href = newImg.src; a.download = `spacexcode-${date.getMinutes()}${date.getSeconds()}.png`; a.rel = "noopener noreferrer"; document.body.append(a); a.click(); setTimeout(() => { a.remove(); }, 1000); }) }透明背景的模拟实现当我们将设置区域的背景按钮切换置灰时,显示出透明的样式: 这个其实是 通过 CSS 模拟出来的.grid { height: 200px; background-image: linear-gradient(45deg, #8d8b8b 25%, transparent 0), linear-gradient(-45deg, #8d8b8b 25%, transparent 0), linear-gradient(45deg, transparent 75%, #8d8b8b 0), linear-gradient(-45deg, transparent 75%, #8d8b8b 0); background-position: 0 0, 0 10px, 10px -10px, -10px 0; background-size: 20px 20px; }最后核心的功能实现的思路都讲解了,然后剩下细节部分需要完善的,比如主题,我们制作了8种好看的渐变颜色背景。通过改变内边距,来改变代码区域占整个图片的比例。总结实现一款好用的小工具,不仅仅要掌握实现的基本思路,核心代码的实现。后期的细节完善,页面的样式和用户的操作体验都是值得细细推敲的。经过这个工具的制作,基本掌握了一个框架 的大部分语法的使用。比如:React 中样式代码的几种写法表单中变量的响应式常见 hooks 的使用,比如:useCallback,useState,useEffect 等组件化的代码参考资料[1]https://spacexcode.com/codeimage: https://spacexcode.com/codeimage[2]ray.so: https://ray.so[3]可左右拖拽改变大小的区块: https://spacexcode.com/docs/snippet/component/resize-block
2023年11月18日
80 阅读
0 评论
0 点赞
1
...
18
19
20
...
24
CC BY-NC-ND