动易 swCMS6.5 网站的上传文件管理器及判断文件是否失效的功能模块分析
动易 cms6.5 网站后台的上传文件管理模块由 6 个页面组成,现分别简介如下:
1 ) Admin_UploadFile.asp
频道上传文件后台管理页的框架页
上框架为 Admin_UploadFile_Top.asp
下框架分左和右
左为 Admin_UploadFile_Left.asp
右为 Admin_UploadFile_Main.asp
2 ) Admin_UploadFile_Top.asp
框架页的头部
用于获取框架页传递的参数 UploadDir ,即该频道上传文件的目录名
3 ) Admin_UploadFile_Left.asp
上传文件的树形目录结构,设计成资源管理器的风格
通过 FSO 的 Folder 对象来获取上传目录的子目录集合,代码如下:
Set FolderObj = fso.GetFolder(Server.MapPath(UpFilesPath)) ' 获取上传根目录的绝对路径
Set SubFolderObj = FolderObj.SubFolders ' 上传根目录的子文件夹集合
以下是我测试时使用的注释代码:(因为我对 FSO 的 Folder 对象印象不深)
'response.Write(FolderObj) ' 输出上传根目录的绝对路径
' 例如 : G:/ 动易 SiteWeaver6.5 版 /swcms/jiaoxuekeyan/UploadFiles_3443
'response.Write(TypeName(SubFolderObj)) ' 输出的值为 Folders
' 备注 : SubFolderObj 不是数组类型的值 , 而是 Folder 对象的集合 Folders
'response.Write(SubFolderObj.Count) ' 子文件夹的个数
获取得到的子文件夹集合后,执行一个循环
For Each FolderItem In SubFolderObj
‘完成此目录下子文件夹的输出显示
……
If UpLoadNumber = SubFolderObj.Count Then '若为 true, 则所有的子文件夹显示完毕
Response.Write (GetChildFolderList(UpFilesPath & FolderItem.name, "", True, ""))
Else '否则继续输出子文件夹
Response.Write (GetChildFolderList(UpFilesPath & FolderItem.name, "", False, ""))
End If
UpLoadNumber = UpLoadNumber + 1 '累积已显示的子文件夹个数
Next
因为要逐级地输出所有目录的子目录以构成目录树的形式,
所以这里编写了一个“递归函数”来实现逐级获取子目录并显示
Function GetChildFolderList(FolderID, Str, EndNodeTF, TempAllParentID)
…………
Set FolderObj = fso.GetFolder(Server.MapPath(FolderID))
Set SubFolderObj = FolderObj.SubFolders
For Each FolderItem In SubFolderObj
…………
GetChildFolderList = GetChildFolderList & GetChildFolderList(FolderID & "/" & FolderItem.name, ImageStr, TempEndNodeTF, AllParentID)
‘ 执行递归函数实现逐级显示子目录
ChildFolderNumber = ChildFolderNumber + 1
‘ 累积已显示的子文件夹的个数
Next
Set FolderObj = Nothing
Set SubFolderObj = Nothing
End Function
该递归函数的完整代码可查看文件 Admin_UploadFile_Left.asp
主要由 4 个 JS 函数完成该目录树的前台功能
ClickClassImg(ClickObj,ClassID) // 展开和折叠目录
ShowChildClass(ID) // 显示目录所包含的子目录列表
ChangeImg(Obj,OpenTF) // 更换目录的状态图片
HideChildClass(ID) // 隐藏目录所包含的子目录列表
另外,整个目录树的表格 中增加了一个自定义属性 RootDir
例如: id='RootDir' RootDir='/jiaoxuekeyan/UploadFiles_3443/' …… >
RootDir 为自定义属性 , 表示频道上传文件的根目录
每个上传目录所在的表格的行 中增加了三个自定义属性 AllParentID,ParentID,ClassID
例如: AllParentID=”/jiaoxuekeyan/UploadFiles_3443/ “
ParentID=”/jiaoxuekeyan/UploadFiles_3443/ “
ClassID=”/jiaoxuekeyan/UploadFiles_3443/200802” …… >
AllParentID 表示该目录的所有上级目录(若存在多个则用“ , ”分隔)
ParentID 表示父目录
ClassID 表示当前目录
这些 JS 函数通过 DOM 对象获取相关的属性值后执行实现上传文件“目录树”的前台功能。
点击目录树中的目录名后将链接到 Admin_UploadFile_Main.asp 文件中
同时将 ChannelID , UploadDir , CurrentDir 参数传递
若不为上传目录下的文件夹,还要传递 ParentDir 参数
4 ) Admin_UploadFile_Main.asp
上传文件管理模块的核心文件,则文件管理器的功能有:
<1> 以 详细信息方式 或 以缩略图方式 显示上传文件列表及子目录列表
相关的过程是:
GetUploadFileStyle() ‘ 获取 cookie 中保存的 ShowFileStyle 参数值 .
接着执行注释中的操作:
Select Case ModuleType ' 根据频道模块类型获取该频道的所有图片 , 用字符 "|" 来分隔
strFiles = LCase(strFiles) ' 获取该频道的所有上传文件
<2> 全选 / 取消全选上传的文件 / 预览缩略图 / 左栏树形目录的开关 / 排序
相关的 JS 函数为:
function CheckAll(form)
function unselectall()
function preloadImg(src)
function switchBar(obj)
function reSort(which) ‘ 传递用于排序的文件属性,可为:文件名 / 大小 / 类型 / 修改时间
<3> 通过传递的参数值调用相应的过程来实现文件管理器的如下功能(即:注释的文本),
以下所有的过程都定义在本文件中
Select Case Action ' 根据传递的参数执行相应操作
Case "Del"
Call DelFiles '删除文件
Case "DelThisFolder"
Call DelThisFolder '删除目录
Case "DelCurrentDir"
Call DelCurrentDir '删除当前目录
Case "DelAll"
Call DelAll '删除全部
Case "DoAddWatermark" ‘ 以下两个过程的执行需要安装 Jpeg 图象处理组件
Call DoAddWatermark '给图片增加水印
Case "DoAddWatermark_CurrentDir"
Call DoAddWatermark_CurrentDir '给当前目录下的图片增加水印
Case Else
Call main
‘ 过程 main() 初始化本页内容的显示
End Select
过程 Main() 的代码主要就是实现文件的排序功能 以及 选择上传文件的浏览方式
所用到的知识点包括:
FSO 的 File 对象的属性
动态数组的运用
根据排序字段值的类型选择合适的方法进行排序,
例如:对字符串值的大小比较用 StrComp ()函数
对上传文件的数组完成要求的排序,通过执行一个二层循环来完成排序,省略的代码如下:
'======= 排序开始 =======
For i = FileCount To 0 Step -1
minmax = theFiles(0)(sortBy)
minmaxSlot = 0
For j = 1 To i
………………
Next
If minmaxSlot <> i Then
temp = theFiles(minmaxSlot)
theFiles(minmaxSlot) = theFiles(i)
theFiles(i) = temp
'排序完成后将序号作为元素的序号
End If
Next
'======= 排序结束 =======
有兴趣的朋友可以找到完整的代码来阅读。
<4> 最后根据 cookie 中保存的 ShowFileStyle 参数值来选择上传文件的显示方式:
If ShowFileStyle = 1 Then
Call ShowFileDetail '以缩略图方式显示文件的过程
Else
Call ShowFileThumb '以详细信息方式显示文件的过程
End If
下面将对以上提到的两过程 ShowFileDetail() 和 ShowFileThumb() 的部分代码进行分析 :
过程一: ShowFileDetail() 以详细信息方式显示 ,
其包含两个过程分别用于文件夹列表的显示和文件列表的显示 : :
Call ShowFileDetail_fol '输出当前目录下的文件夹列表
Call ShowFileDetail_Fil '输出当前目录下的文件列表
该过程还调用预览图片缩略图时显示提示信息的函数:
Function GetFileContent(ByVal sPath, sType)
缩略图的显示则由 JS 函数 function ShowADPreview(ADContent) 来实现
显示缩略图的浮动的 标签的显示和定位由 ShowJS_Tooltip 过程中的 js 代码来实现
若服务器安装了 Jpeg 图片处理组件 , 则输出如下内容 ; 若未安装 , 则不显示以下内容
If IsObjInstalled("Persits.Jpeg") = True Then
Response.Write " 给选中的图片添加水印' > value='给当前目录添加图片水印 ' >"
End If
过程二: ShowFileThumb() 以缩略图方式显示
该过程仅调用了本页中定义的分页函数 showpage2(strFileName, totalPut, MaxPerPage)
其代码按执行的顺序编写,条理清晰,顺着代码阅读即可。
重点提一下这句实现缩略图换行的代码。这里是 4 个 / 行
If FileNum Mod 4 = 0 Then Response.Write ""
'=========每行显示 4 个图片文件 , 满 4 个则换行 ==========
两过程删除文件夹及文件,全选和取消全选等操作所调用的过程和函数都是相同的。
这些过程和函数也都定义在本文件 Admin_UploadFile_Main.asp 中,
想具体了解的朋友可找来阅读。
5 ) Admin_UploadFile_Clear.asp
该文件的作用就是清理该频道无用的上传文件,
“判断文件是否失效”的核心代码就包含在该文件中。
该核心代码设计思路分析如下:
首先获取该频道的所有上传文件以及文章内容中所包含的所有 图片标签,
以文章频道来举例:
sql = "select UploadFiles,Intro from PE_Article where ChannelID=" & ChannelID
strFiles = strFiles & "|" & rs(0) ' 获取所有文章的上传文件 , 用 "|" 分隔
ItemIntro = ItemIntro & "|" & rs(1) ' 获取所有文章的内容 , 用 "|" 分隔
使用正则表达式选择出文章内容中所有的 标签
regEx.Pattern = " ]>" ' 查询内容中所有
Set Matches = regEx.Execute(ItemIntro)
将内容中所有的 标签累计起来:
tempStr = tempStr & "|" & Match.value ' 累计数组
再次通过正则表达式获取 src= 图片的链接
regEx.Pattern = "src/s*=/s*.+?/.(" & UpFileType & ")" ' 查询 src = 内的链接
再次通过正则表达式替换 ”src=” 字符
regEx.Pattern = "src/s*=/s*" ' 过滤 src =
tempStr = regEx.Replace(tempStr, "")
最后得到所有的上传文件和文件内容中的所有使用的图片文件名
strFiles = strFiles & tempStr
得到所有使用的图片文件名后,接下来就通过执行两个循环来判断上传目录
和上传目录下的子目录中的文件是否包含在数据库存储的上传文件名中,
即是否包含在变量 strFiles 的值中。
若在,则该文件有效;若不在则该文件无效,则被删除。
循环一:
For Each theFile In theFolder.Files ‘ 循环判断上传根目录下的所有文件
If InStr(strFiles, LCase(theFile.name)) <= 0 Then
theFile.Delete True
'若该上传目录下的文件不包含在数据库存储的上传文件名中,则被删除
i = i + 1 '累计被删除的文件个数
End If
Next
循环二:
For Each theSubFolder In theFolder.SubFolders ‘ 上传根目录下的所有子文件夹
For Each theFile In theSubFolder.Files ‘循环判断子文件夹下的所有文件
If InStr(strFiles, LCase(theSubFolder.name & "/" & theFile.name)) <= 0 Then
theFile.Delete True
'若该上传目录下的子文件夹中的文件不包含在数据库存储的上传文件名中,则被删除
i = i + 1 '接着“循环一”继续累计被删除的文件个数
End If
Next
Next
经过实验发现,
确实只能删除上传根目录下的无效文件和上传目录根目录下的子文件夹中的无效文件。
再深层次的目录则无法判断。
其实这也足够了,比如我在测试时
频道“科研天地”的上传根目录为 UploadFiles_3443
这是网站给我的自定义频道“科研天地”建立的上传文件根目录
当有文件上传时,会在 UploadFiles_3443 下再建立子文件夹 200802
子文件夹之所以取名为 200802 是因为存放的是 2008 年 2 月上传的图片文件
6 ) Admin_UploadFile_Style.asp
由于本文件的唯一作用就是通过回传上传文件显示方式的参数 ,
实现 Admin_UploadFile_Main.asp 中的上传文件
是以“ 详细信息方式 ”还是以“缩略图方式”来显示
将 http:/Admin_UploadFile_Style.asp?ShowFileStyle=1
传递的 ShowFileStyle 参数的值 1 保存到 cookies 中,代码为:
Response.cookies("ShowFileStyle") = ShowFileStyle ' 将上传文件的显示样式保存到 cookies 中
然后返回到刚才跳转到本页的源地址去,代码为:
Response.Redirect request.servervariables("http_referer") ' 从哪里链接到该文件的就回哪里去
即本文件起到一个“中转站”的作用。
其核心知识点就是 request.servervariables("HTTP_REFERER") 的应用
下面是我转的关于 request.servervariables("HTTP_REFERER") 的一帖子
以此来补充介绍一下 request.servervariables("HTTP_REFERER") 的用途:
其返回的是调用这个 asp 页面的是那个页面,
即看这个页面是被哪个页面所调用的,
这么跟你说吧:
有 a.asp 和 b.asp 两个页面,
在 a.asp 中点击链接到 b.asp ,
或是 a.asp 中用表单提交数据到 b.asp ,
或是用脚本跳转到 b.asp,
那么在 b.asp 中用 request.servervariables("HTTP_REFERER") 方法
取得的字符串就是 a.asp 的 URL 路径。
注意:该 URL 路径包括 a.asp 后传递的参数
若是由 a.asp?action=add 链接到 b.asp
则 b.asp 中调用 request.servervariables("HTTP_REFERER")
取得的字符串就是 a.asp?action=add
总结:
“上传文件管理器” 的核心知识点其实也就是 FSO 的应用
我转贴的一篇关于 FSO 的文章《 ASP中 FSO功能详细介绍 》 即可以作为学习也可以作为复习来阅读,
文章中包含的 FSO 的几个常用实例建议初次学习的朋友们实际操练以下其代码,
对理解和增加印象会很有帮助:
文章 《 ASP中 FSO功能详细介绍 》的链接: http://blog.csdn.net/kof98cs/archive/2008/03/09/2159320.aspx
“判断文件是否失效”
核心代码都包含在 Admin_UploadFile_Clear.asp 中,
通过阅读我们发现从数据库获取所有使用的上传文件信息后,
就是通过一系列的正则表达式对上面获取的信息进行筛选和替换的操作,
从而简化信息里多余的内容。
最后以上传文件是否包含在数据库信息中作为判断的条件来决定该上传文件是否有效
所以,“判断文件是否失效”的核心知识点还是对正则表达式的应用。
在动易网站中正则表达式的应用是比较多的,由此看出它在网站技术中的重要地位。
这里列出一篇文章《 正则表达式的常用方法和属性以及应用举例 》
http://blog.csdn.net/kof98cs/archive/2008/01/24/2063700.aspx
以便对正则表达式进行学习和复习
这篇文章我花一个星期左右的时间才写完,
主要是对该模块所用到的某些知识点和函数不熟,也因为懒所以知难而退
由于自己文笔不佳也写得语无伦次,
但通过自己在阅读时在模块文件中添加的注释可以很方便地查找某些细节代码。
所以想具体深入透彻了解此功能模块的朋友一定要亲自阅读以上几个模块文件的代码
不懂到知识点可以查找有关 ASP 和 VBSscript 的手册来学习,
尤其提高对 FSO 和正则表达式的运用能力。
你可能感兴趣的:(ASP)
自然语言处理_tf-idf
_feivirus_
算法 机器学习和数学 自然语言处理 tf-idf 逆文档频率 词频
importpandasaspdimportmath1.数据预处理docA="Thecatsatonmyface"docB="Thedogsatonmybed"wordsA=docA.split("")wordsB=docB.split("")wordsSet=set(wordsA).union(set(wordsB))print(wordsSet){'on','my','face','sat',
K近邻算法_分类鸢尾花数据集
_feivirus_
算法 机器学习和数学 分类 机器学习 K近邻
importnumpyasnpimportpandasaspdfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportaccuracy_score1.数据预处理iris=load_iris()df=pd.DataFrame(data=ir
APQP,ASPICE,敏捷,功能安全,预期安全,这些汽车行业的一堆标准
二大宝贝
安全架构
前言APQP,ASPICE,敏捷,功能安全,预期安全,PMP,PRICE2汽车行业的有这样一堆标准。我是半路出家来到汽车行业做项目经理的,对几个标准的感觉是,看了文档和各种解析之后还是一头雾水,不知道到底说了个啥,别人问我还是一脸懵逼。APQP(TS16949的最重要工具),ASPICE(软件)这些是质量标准,是优化整个公司体系的,但这套体系对项目管理有要求;敏捷,PMP这些是项目管理的标准;项目
leetcode中等.数组(21-40)python
九日火
python leetcode
80.RemoveDuplicatesfromSortedArrayII(m-21)Givenasortedarraynums,removetheduplicatesin-placesuchthatduplicatesappearedatmosttwiceandreturnthenewlength.Donotallocateextraspaceforanotherarray,youmustdoth
探索ASPICE V3.1:汽车行业软件开发的中文指南
阮懿同
探索ASPICEV3.1:汽车行业软件开发的中文指南ASPICE_V3.1中文版.pdf.zip项目地址:https://gitcode.com/open-source-toolkit/422a2在汽车软件工程领域,高质量的标准对于确保行车安全和提升用户体验至关重要。今天,我们为您介绍一个珍贵的开源宝藏——ASPICEV3.1中文版资源。这是一篇专为国内汽车行业开发者、质量管理者准备的深度解读,旨
python编写直方图和饼图
2301_80421078
python 开发语言
1.直方图#直方图的绘制#语法格式:plt.hist(x,bins),其中x:数据集;bins:统计数据的分布区间importmatplotlib.pyplotaspltimportpandasaspd#导入文件excel=pd.read_excel('成绩.xlsx')#print(excel)#避免乱码plt.rcParams['font.sans-serif']=['SimHei']x=ex
pythonpandas函数详解_Python pandas常用函数详解
Senvn
本文研究的主要是pandas常用函数,具体介绍如下。1import语句importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltimportdatetimeimportre2文件读取df=pd.read_csv(path='file.csv')参数:header=None用默认列名,0,1,2,3...names=['A','B','C'
SPI机制
我们仍未知道那天所看见的猫的名
1、SPI机制:ServiceProviderInterface:服务提供发现机制,类型IOCJavaSPI实现:ServiceLoader定义接口A;实现接口A的实现类,B和C;在/META-INF/services/下创建文件,文件名为A类的全名称,内容为B和C的类全名调用:ServiceLoaderload=ServiceLoader.load(A.class);Interatori=loa
python画出分子化学空间分布(UMAP)
Sakaiay
python
利用umap画出分子化学空间分布图安装pipinstallumap-learn下面是用一个数据集举的例子importtorchimportumapimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltimportseabornassnsfromsklearn.manifoldimportTSNEfromrdkit.Chemimport
Linux使用mjpg-streamer进行图像传输
—你的鼬先生
Linux驱动 linux 树莓派 图像传输
图像传输是一项在Linux操作系统中比较常见的一个操作,在视频图传时,一般是采用MJPG-streamer来进行图像传输,本文就以树莓派为例子,来示范一个图像传输。1.树莓派的摄像头激活首先更新树莓派sudoapt-getupdatesudoapt-getupgrade随后打开树莓派的配置界面,选择InterfaceOptionsudoraspi-config在InterfaceOption选择C
分享一个基于python的电子书数据采集与可视化分析 hadoop电子书数据分析与推荐系统 spark大数据毕设项目(源码、调试、LW、开题、PPT)
计算机源码社
Python项目 大数据 大数据 python hadoop 计算机毕业设计选题 计算机毕业设计源码 数据分析 spark毕设
作者:计算机源码社个人简介:本人八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流!学习资料、程序开发、技术解答、文档报告如需要源码,可以扫取文章下方二维码联系咨询Java项目微信小程序项目Android项目Python项目PHP项目ASP.NET项目Node.js项目选题推荐项目实战|p
python绘制等高线和等值面初步
bcbobo21cn
图形学和3D python 开发语言 Matplotlib NumPy 等高线
importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(-5,6,210)y=np.linspace(-5,6,210)x,y=np.meshgrid(x,y)z=(1-x/2+x**5+y**4)*np.exp(-x**2-y**2)plt.contour(x,y,z,levels=9,colors='black')plt.show()i
python读写CSV文件
bcbobo21cn
.Net python 开发语言 机器学习 CSV
做数据分析,有时候要分析的数据在CSV文件里;先看一下python读写CSV文件;importpandasaspddf=pd.read_csv('test1.csv')print(df)print('')print(df.head(2))companyname=["A1","B2","E3","F4"]legperson=["lier","yanqi","wangwu","zhangsan"]le
深入理解AOP(面向切面编程)及其应用
自身就是太阳
java 开发语言 spring
目录AOP的核心概念AOP的实现方式1.定义DAO接口和实现类2.定义通知类3.开启AOP注解驱动切入点表达式通配符的使用:AOP通知类型案例分析:测量业务层接口的执行效率结论概述:AOP(Aspect-OrientedProgramming,面向切面编程)是一种编程范式,主要用于将共性功能从具体的业务逻辑中分离出来,实现松耦合的代码设计。其作用是在不修改原始代码的情况下,对现有方法进行增强,广泛
如何“选择不同的“?跨越 pandas 中的多个数据框列?
潮易
pandas
在pandas中,如果你想要选择不同的列,你可以使用DataFrame的loc属性和iloc属性的组合。loc属性是基于标签的,iloc属性则是基于索引的。如果你想要选择多个列,你只需要将它们放入一个列表即可。以下是一个代码示例:```pythonimportpandasaspd#创建一个数据框df=pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]
通过C# 裁剪PDF页面
Eiceblue
C# .NET PDF c# pdf 开发语言 visual studio
在处理PDF文档时,有时需要精确地裁剪页面以适应特定需求,比如去除广告、背景信息或者仅仅是为了简化文档内容。本文将指导如何使用免费.NET控件通过C#实现裁剪PDF页面。免费库FreeSpire.PDFfor.NET支持在.NET(C#,VB.NET,ASP.NET,.NETCore)程序中实现创建、操作、转换和打印PDF文档等操作。可以从以下链接下载产品包后手动添加引用,或者直接通过NuGet安
详解 Pandas 的 query 函数
文刀小桂
Pandas pandas python 开发语言
Pandas的query()方法能够使用字符串表达式来筛选DataFrame数据的行,类似于SQL的where子句importpandasaspddf=pd.DataFrame({"A":[1,3,5,6,7],"B":[11,10,9,8,12],"C":["hello","pandas","python","java","shell"],"D":["2024-02-01","2023-12-1
详解 Pandas 的 isin 用法
文刀小桂
Pandas pandas python
Pandas的isin()方法可以判断数据值是否在某个数据集合中,若与集合中的某个值相等则返回True,反之返回False。importpandasaspddf=pd.DataFrame({"title":["one","two","three","four"],"type":["small","common","middle","large"],"num":[10,20,30,40]})#1.判
深入了解树莓派5:性能与功能的全面升级
像风一样自由2020
树莓派 ubuntu
深入了解树莓派5:性能与功能的全面升级引言2023年,树莓派基金会正式发布了备受期待的树莓派5(RaspberryPi5)。作为树莓派系列的最新一代产品,树莓派5在处理性能、连接性和功能扩展方面都有了显著的提升,为开发者、教育者和科技爱好者带来了更强大的工具。本文将详细介绍树莓派5的特性、规格和应用场景。一、产品概述树莓派5是基于ARM架构的单板计算机,延续了树莓派系列低成本、高性能的设计理念。它
信号与线性系统分析第4版吴大正课后习题答案
zgw100xuexi
考试 信号与线性系统分析 课后答案
完整版:http://zgw.100xuexi.com/SubItem/IndexInfoDetail.aspx?id=1d9ef631-a09d-4893-bb2f-597c745f5803第1章信号与系统1.1复习笔记本章是信号分析与系统分析的基础,详细介绍了信号与系统的概念与分类方法以及常用的连续信号与离散信号,讨论了冲激函数和冲激偶函数的重要性质,介绍了线性时不变(LTI)系统的特性,简要
SpringBoot—集成AOP详解(面向切面编程Aspect)
Hughman
AOP介绍AOP概述 AOP是Aspect-OrientedProgramming,即为面向(切面)方面编程。在维基百科中的解释:Aspect是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点。从关注点中分离出横切关注点是面向切面的程序设计核心概念。分离关注点使得解决特定领域问题的代码从业务逻辑中独立出来,业务逻辑代码不需要再包含针对特定领域问题代码的调用,比如一些公用模块的日志、
groupby 中如何显示 tqdm 的进度条?
domodo2020
在循环时调用tqdm显示进度已经是一个常规操作,常见的方式是foriiintqdm(...):...while循环的情况类似,whileicntintqdm(range(n)):...icnt+=1这里记录没有显式循环时,在groupby中的用法:importpandasaspdimportnumpyasnpfromtqdmimporttqdmdf=pd.DataFrame(np.random.r
aspcms webshell漏洞复现
青衫木牛马
asp aspcms getshell
1.【ip】/admin_aspcms/login.asp访问后台,admin123456登录2.点击【扩展功能】【幻灯片设置】点击【保存】开启代理进行抓包3.在抓取的数据包中修改slideTextStatus字段的值为以下代码并进行发包访问影响文件字段值1%25><%25密码是a影响文件/config/AspCms_Config.asp4.蚁剑连接
python 问题 ‘list‘ object cannot be interpreted as an integer 和‘int‘ object is not iterable
annekqiu
python
访问同一个excel表格(含有多个sheet)importnumpyasnpimportpandasaspdimportxlrd#读取excel的库importxlwt#写excel的库data=xlrd.open_workbook('./161005.xlsx')#打开excel文件读取数据table=data.sheets()[0]#读取sheet1h=table.ncols#获得列表数目a1
Python 将parquet文件转换为csv文件
一个小坑货
# python常用功能方法 python 开发语言
Python将parquet文件转换为csv文件使用pyarrow插件将parquet文件转换为csv使用pyarrow插件将parquet文件转换为csv```pythonimportosimportpyarrow.parquetaspqfromconcurrent.futuresimportThreadPoolExecutorimportcsvimporttime#定义一个函数来处理单个Par
WLS2(ubuntu22.04)使用windows2的代理上网
bglmmz
wls2
1.在wls2中,vim/etc/profile,添加如下配置后,source/etc/profile```exporthostip=127.0.0.1exportsocks_hostport=10800exporthttp_hostport=10800aliasproxy='exporthttps_proxy="https://${hostip}:${http_hostport}"exporth
asp.net core的入门教学
21软件外包1班-庞兴南
asp.net 后端
什么是ASP.NETCoreasp.netcore是一个基于HTML和ASP的动态Web开发框架,主要用于web应用程序的开发。它是一个轻量级框架,使用HTML、ASP、CSS、JavaScript等技术。它易于使用和部署,可以快速构建web应用程序。asp.netcore提供了丰富的功能,包括模板引擎、文件解析、数据处理和用户管理等。本文将介绍asp.netcore的主要功能和特点,并提供使用方
6.1 ASP.NET Core Web 入门
步、步、为营
.Net Core asp.net mvc
6.1ASP.NETCoreWeb入门ASP.NETCore中,严格来讲只有一个Asp.netCoreMVC一个框架,Asp.netCoreMVC既支持基于视图的MVC开发,也支持WebAPI和RazorPages开发。ASP.NETCoreMVC项目在VS2022中,一定选择ASP.NETCoreWeb应用(模型-视图-控制器)项目模板项目中wwwroot文件夹包含图片、JS、CSS等静态文件,
Linux+Nginx+Asp.net Core及守护进程部署
念童
linux nginx asp.net 运维 服务器
上篇《Docker基础入门及示例》文章介绍了Docker部署,以及相关.netcore的打包示例。这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完整的部署流程,.netcore在docker容器中的运行已经介绍,这里.netcore运行环境我会介绍直接在linux运行的场景,内容主要包含以下几个部分:1.基础工具和Linux环境准备2..NetCore环境安装
Linux+Nginx+Asp.net Core部署
dotNET跨平台
上篇《Docker基础入门及示例》文章介绍了Docker部署,以及相关.netcore的打包示例。这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完整的部署流程,.netcore在docker容器中的运行已经介绍,这里.netcore运行环境我会介绍直接在linux运行的场景,内容主要包含以下几个部分:1.基础工具和Linux环境准备2..NetCore环境安装
eclipse maven
IXHONG
eclipse
eclipse中使用maven插件的时候,运行run as maven build的时候报错
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
可以设一个环境变量M2_HOME指
timer cancel方法的一个小实例
alleni123
多线程 timer
package com.lj.timer;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer extends TimerTask
{
private int a;
private Timer timer;
pub
MySQL数据库在Linux下的安装
ducklsl
mysql
1.建好一个专门放置MySQL的目录
/mysql/db数据库目录
/mysql/data数据库数据文件目录
2.配置用户,添加专门的MySQL管理用户
>groupadd mysql ----添加用户组
>useradd -g mysql mysql ----在mysql用户组中添加一个mysql用户
3.配置,生成并安装MySQL
>cmake -D
spring------>>cvc-elt.1: Cannot find the declaration of element
Array_06
spring bean
将--------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3
maven发布第三方jar的一些问题
cugfy
maven
maven中发布 第三方jar到nexus仓库使用的是 deploy:deploy-file命令
有许多参数,具体可查看
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
以下是一个例子:
mvn deploy:deploy-file -DgroupId=xpp3
MYSQL下载及安装
357029540
mysql
好久没有去安装过MYSQL,今天自己在安装完MYSQL过后用navicat for mysql去厕测试链接的时候出现了10061的问题,因为的的MYSQL是最新版本为5.6.24,所以下载的文件夹里没有my.ini文件,所以在网上找了很多方法还是没有找到怎么解决问题,最后看到了一篇百度经验里有这个的介绍,按照其步骤也完成了安装,在这里给大家分享下这个链接的地址
ios TableView cell的布局
张亚雄
tableview
cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:[indexPath row]]];
CGSize itemSize = CGSizeMake(60, 50);
&nbs
Java编码转义
adminjun
java 编码转义
import java.io.UnsupportedEncodingException;
/**
* 转换字符串的编码
*/
public class ChangeCharset {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final Strin
Tomcat 配置和spring
aijuans
spring
简介
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。最重要的配置文件:server.xml 。要配置tomcat,基本上了解server.xml,context.xml和web.xml。
Server.xml -- tomcat主
Java打印当前目录下的所有子目录和文件
ayaoxinchao
递归 File
其实这个没啥技术含量,大湿们不要操笑哦,只是做一个简单的记录,简单用了一下递归算法。
import java.io.File;
/**
* @author Perlin
* @date 2014-6-30
*/
public class PrintDirectory {
public static void printDirectory(File f
linux安装mysql出现libs报冲突解决
BigBird2012
linux
linux安装mysql出现libs报冲突解决
安装mysql出现
file /usr/share/mysql/ukrainian/errmsg.sys from install of MySQL-server-5.5.33-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.61-4.el6.i686
jedis连接池使用实例
bijian1013
redis jedis连接池 jedis
实例代码:
package com.bijian.study;
import java.util.ArrayList;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoo
关于朋友
bingyingao
朋友 兴趣爱好 维持
成为朋友的必要条件:
志相同,道不合,可以成为朋友。譬如马云、周星驰一个是商人,一个是影星,可谓道不同,但都很有梦想,都要在各自领域里做到最好,当他们遇到一起,互相欣赏,可以畅谈两个小时。
志不同,道相合,也可以成为朋友。譬如有时候看到两个一个成绩很好每次考试争做第一,一个成绩很差的同学是好朋友。他们志向不相同,但他
【Spark七十九】Spark RDD API一
bit1129
spark
aggregate
package spark.examples.rddapi
import org.apache.spark.{SparkConf, SparkContext}
//测试RDD的aggregate方法
object AggregateTest {
def main(args: Array[String]) {
val conf = new Spar
ktap 0.1 released
bookjovi
kernel tracing
Dear,
I'm pleased to announce that ktap release v0.1, this is the first official
release of ktap project, it is expected that this release is not fully
functional or very stable and we welcome bu
能保存Properties文件注释的Properties工具类
BrokenDreams
properties
今天遇到一个小需求:由于java.util.Properties读取属性文件时会忽略注释,当写回去的时候,注释都没了。恰好一个项目中的配置文件会在部署后被某个Java程序修改一下,但修改了之后注释全没了,可能会给以后的参数调整带来困难。所以要解决这个问题。
&nb
读《研磨设计模式》-代码笔记-外观模式-Facade
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
* 百度百科的定义:
* Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,
* 隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
*
* 可简单地
After Effects教程收集
cherishLC
After Effects
1、中文入门
http://study.163.com/course/courseMain.htm?courseId=730009
2、videocopilot英文入门教程(中文字幕)
http://www.youku.com/playlist_show/id_17893193.html
英文原址:
http://www.videocopilot.net/basic/
素
Linux Apache 安装过程
crabdave
apache
Linux Apache 安装过程
下载新版本:
apr-1.4.2.tar.gz(下载网站:http://apr.apache.org/download.cgi)
apr-util-1.3.9.tar.gz(下载网站:http://apr.apache.org/download.cgi)
httpd-2.2.15.tar.gz(下载网站:http://httpd.apac
Shell学习 之 变量赋值和引用
daizj
shell 变量引用 赋值
本文转自:http://www.cnblogs.com/papam/articles/1548679.html
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)
中间不能有空格,可以使用下划线(_)
不能使用标点符号
不能使用bash里的关键字(可用help命令查看保留关键字)
需要给变量赋值时,可以这么写:
Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)
dcj3sjt126com
java jdk
Java SE 第一讲:
Java SE:Java Standard Edition
Java ME: Java Mobile Edition
Java EE:Java Enterprise Edition
Java是由Sun公司推出的(今年初被Oracle公司收购)。
收购价格:74亿美金
J2SE、J2ME、J2EE
JDK:Java Development
YII给用户登录加上验证码
dcj3sjt126com
yii
1、在SiteController中添加如下代码:
/**
* Declares class-based actions.
*/
public function actions() {
return array(
// captcha action renders the CAPTCHA image displ
Lucene使用说明
dyy_gusi
Lucene search 分词器
Lucene使用说明
1、lucene简介
1.1、什么是lucene
Lucene是一个全文搜索框架,而不是应用产品。因此它并不像baidu或者googleDesktop那种拿来就能用,它只是提供了一种工具让你能实现这些产品和功能。
1.2、lucene能做什么
要回答这个问题,先要了解lucene的本质。实际
学习编程并不难,做到以下几点即可!
gcq511120594
数据结构 编程 算法
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
1、确定目标
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到
Java面试十问之三:Java与C++内存回收机制的差别
HNUlanwei
java C++ finalize() 堆栈 内存回收
大家知道, Java 除了那 8 种基本类型以外,其他都是对象类型(又称为引用类型)的数据。 JVM 会把程序创建的对象存放在堆空间中,那什么又是堆空间呢?其实,堆( Heap)是一个运行时的数据存储区,从它可以分配大小各异的空间。一般,运行时的数据存储区有堆( Heap)和堆栈( Stack),所以要先看它们里面可以分配哪些类型的对象实体,然后才知道如何均衡使用这两种存储区。一般来说,栈中存放的
第二章 Nginx+Lua开发入门
jinnianshilongnian
nginx lua
Nginx入门
本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:
nginx启动、关闭、重启
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html
agentzh 的 Nginx 教程
http://openresty.org/download/agentzh-nginx-tutor
MongoDB windows安装 基本命令
liyonghui160com
windows安装
安装目录:
D:\MongoDB\
新建目录
D:\MongoDB\data\db
4.启动进城:
cd D:\MongoDB\bin
mongod -dbpath D:\MongoDB\data\db
&n
Linux下通过源码编译安装程序
pda158
linux
一、程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在linux下用man命令查看的命令的文档
二、linux下程序的存放目录 linux程序的存放目录大致有三个地方: /etc, /b
WEB开发编程的职业生涯4个阶段
shw3588
编程 Web 工作 生活
觉得自己什么都会
2007年从学校毕业,凭借自己原创的ASP毕业设计,以为自己很厉害似的,信心满满去东莞找工作,找面试成功率确实很高,只是工资不高,但依旧无法磨灭那过分的自信,那时候什么考勤系统、什么OA系统、什么ERP,什么都觉得有信心,这样的生涯大概持续了约一年。
根本不是自己想的那样
2008年开始接触很多工作相关的东西,发现太多东西自己根本不会,都需要去学,不管是asp还是js,
遭遇jsonp同域下变作post请求的坑
vb2005xu
jsonp 同域post
今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段
$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));
贴出我前端代码片段:
$.aj