1 #region * 在一个TR中,解析TD,获取一期的号码
2 ///
3 /// 在一个TR中,解析TD,获取一期的号码
4 ///
5 ///
6 ///
7 private void ResolveTd(ref WinNo wn, string trContent)
8 {
9 List<int > redBoxList = null ;
10 // 匹配期号的表达式
11 string patternQiHao = " " ;
12 Regex regex = new Regex(patternQiHao);
13 Match qhMatch = regex.Match(trContent);
14 wn.QiHao = trContent.Substring(qhMatch.Index + 17 + patternQiHao.Length, 7 );
15 // 匹配蓝球的表达式
16 string patternChartBall02 = " " ;
17 regex = new Regex(patternChartBall02);
18 Match bMatch = regex.Match(trContent);
19 wn.B = Convert.ToInt32(trContent.Substring(bMatch.Index + patternChartBall02.Length, 2 ));
20 // 存放匹配出来的红球号码
21 redBoxList = new List<int >();
22 // 匹配红球的表达式
23 string patternChartBall01 = " " ;
24 regex = new Regex(patternChartBall01);
25 MatchCollection rMatches = regex.Matches(trContent);
26 foreach (Match r in rMatches)
27 {
28 redBoxList.Add(Convert.ToInt32(trContent.Substring(r.Index + patternChartBall01.Length, 2 )));
29 }
30 // 匹配红球的表达式
31 string patternChartBall07 = " " ;
32 regex = new Regex(patternChartBall07);
33 rMatches = regex.Matches(trContent);
34 foreach (Match r in rMatches)
35 {
36 redBoxList.Add(Convert.ToInt32(trContent.Substring(r.Index + patternChartBall07.Length, 2 )));
37 }
38 // 排序红球号码
39 redBoxList.Sort();
40 // 第一个红球号码
41 wn.R1 = redBoxList[0 ];
42 // 第二个红球号码
43 wn.R2 = redBoxList[1 ];
44 wn.R3 = redBoxList[2 ];
45 wn.R4 = redBoxList[3 ];
46 wn.R5 = redBoxList[4 ];
47 wn.R6 = redBoxList[5 ];
48 }
下面这块的代码是某招聘网站的截取数据,就是一串的截取HTML标签的内容,哈哈,当时在写这个时候相当的头痛,不知有做个这方法工作的人是不是有同感,当你解析比较多网站的数据就更加了(我写了抓取前程无忧、猎聘网、前程无忧和拉勾网的数据),O(∩_∩)O哈哈~想死呀,使用正则表达是去截取数据,再去提取相应信息的工作。
// 正则表达式过滤:正则表达式,要替换成的文本
private static readonly string [][] Filters =
{
new [] { @" (?is).*? " , "" },
new [] { @" (?is).*? " , "" },
new [] { @" (?is) " , "" }, // 过滤Html代码中的注释
new [] { @" (?is).*? " ,"" },
// new[] { "(?is).*?
",""}
new [] { @" (?is)常用链接:.*? " ,"" }
};
private void GetJobInfoFromUrl(string url)
{
try
{
JobInfo info = new JobInfo();
// --
string pageStr = GetHtmlCode.GetByget(url, " utf-8 " );
if (string .IsNullOrEmpty(pageStr))
{
return ;
}
// --
pageStr = pageStr.Replace(" \r\n " , "" );// 替换换行符
// 获取html,body标签内容
string body = string .Empty;
string bodyFilter = @" (?is) " ;
Match m = Regex.Match(pageStr, bodyFilter);
if (m.Success)
{
body = m.ToString().Replace(" " , " " ).Replace(" \r\n " , "" );
}
// 过滤样式,脚本等不相干标签
foreach (var filter in Filters)
{
body = Regex.Replace(body, filter[0 ], filter[1 ]);
}
// --
if (!string .IsNullOrEmpty(mustKey) && !body.Contains(mustKey))
{
return ;
}
body = Regex.Replace(body, " \\s " , "" );
info.Url = url;
string basicInfoRegexStr0 = " (.*?) " ; // 职位名称
string position = Regex.Match(body, basicInfoRegexStr0).Value;
info.Position = string .IsNullOrEmpty(position) ? "" : position.Substring(position.IndexOf(" > " ) + 1 , position.IndexOf(" " ) - position.IndexOf(" > " ) - 1 );// 职位名称
string basicInfoRegexStr1 = " (.*?) " ;// 公司名称
string company = Regex.Match(body, basicInfoRegexStr1).Value;
info.Company = string .IsNullOrEmpty(company) ? "" : company.Substring(company.IndexOf(" " ) + 4 , company.IndexOf(" " ) - company.IndexOf(" " ) - 4 );// 公司名称
string basicInfoRegexStr2 = " (.*?) " ;// 工作地点
string address = Regex.Match(body, basicInfoRegexStr2).Value;
info.Address = string .IsNullOrEmpty(address) ? "" : address.Substring(address.IndexOf(" " ) + 6 , address.IndexOf(" " ) - address.IndexOf(" " ) - 6 );// 工作地点
string basicInfoRegexStr3 = " 企业性质: (.*?)" ;// 公司性质
string nature = Regex.Match(body, basicInfoRegexStr3).Value;
info.Nature = string .IsNullOrEmpty(nature) ? "" : nature.Substring(nature.IndexOf(" " ) + 7 , nature.IndexOf(" " ) - nature.IndexOf(" " ) - 7 );// 公司性质
if (string .IsNullOrEmpty(info.Nature))
{
string basicInfoRegexStr3_1 = " 性质: (.*?)" ;
string nature_1 = Regex.Match(body, basicInfoRegexStr3_1).Value;
info.Nature = string .IsNullOrEmpty(nature_1) ? "" : nature_1.Substring(nature_1.IndexOf(" " ) + 7 , nature_1.LastIndexOf(" " ) - nature_1.IndexOf(" " ) - 7 );// 公司性质
}
string basicInfoRegexStr4 = " 企业规模: (.*?)" ;// 公司规模
string scale = Regex.Match(body, basicInfoRegexStr4).Value;
info.Scale = string .IsNullOrEmpty(scale) ? "" : scale.Substring(scale.IndexOf(" " ) + 7 , scale.IndexOf(" " ) - scale.IndexOf(" " ) - 7 );// 公司规模
if (string .IsNullOrEmpty(info.Scale))
{
string basicInfoRegexStr4_1 = " 规模: (.*?)" ;
string scale_1 = Regex.Match(body, basicInfoRegexStr4_1).Value;
info.Scale = info.Nature = string .IsNullOrEmpty(scale_1) ? "" : scale_1.Substring(scale_1.IndexOf(" " ) + 7 , scale_1.LastIndexOf(" " ) - scale_1.IndexOf(" " ) - 7 );// 公司规模
}
string basicInfoRegexStr5 = " (.*?) " ;// 工作经验
string experience = Regex.Match(body, basicInfoRegexStr5).Value;
info.Experience = string .IsNullOrEmpty(experience) ? "" : experience.Substring(experience.IndexOf(" > " ) + 1 , experience.IndexOf(" " ) - experience.IndexOf(" > " ) - 1 );// 工作经验
string basicInfoRegexStr6 = " (.*?) " ;// 最低学历
string education = Regex.Match(body, basicInfoRegexStr6).Value;
info.Education = string .IsNullOrEmpty(education) ? "" : education.Substring(education.IndexOf(" " ) + 6 , education.IndexOf(" " ) - education.IndexOf(" " ) - 6 );// 最低学历
string basicInfoRegexStr7 = " (.*?)< " ;// 月薪
string salary = Regex.Match(body, basicInfoRegexStr7).Value;
info.Salary = string .IsNullOrEmpty(salary) ? "" : salary.Substring(salary.IndexOf(" > " ) + 1 , salary.LastIndexOf(" < " ) - salary.IndexOf(" > " ) - 1 );// 月薪
string timeInfoRegexStr = " 发布时间:(.*?) " ;// 发布时间
string time = Regex.Match(body, timeInfoRegexStr).Value;
info.Time = string .IsNullOrEmpty(time) ? "" : time.Substring(time.IndexOf(" " ) + 4 , time.IndexOf(" " ) - time.IndexOf(" " ) - 4 );// 发布时间
if (GetJobEnd != null )
{
GetJobEnd(pageStr, info);
}
}
catch (Exception exMsg)
{
throw new Exception(exMsg.Message);
}
}
}
从以上代码可以看出都是在截取(正则表达式)相应内容,非常复杂,稍微一不注意就截取不到网站数据,写起来相当的费劲,最后通过QQ群(186841119 )里的朋友的介绍采用了Fizzler来提取网站数据,一下子感觉就容易多了,下面着中来介绍一下Fizzler这个工具(好像这个是开源的),相关介绍可以去网站查询到。
首先提供这个工具的下载地址:Fizzler
这个里面包括三个文件:Fizzler.dll、Fizzler.Systems.HtmlAgilityPack.dll、HtmlAgilityPack.dll三个文件,在VS2010里引用里直接进行引用就可以了。
完成以上即完成了对Fizzler的引用。
using HtmlAgilityPack;
using Fizzler;
using Fizzler.Systems.HtmlAgilityPack;
以上就可以在CS里进行了引用,
下面来进行代码的实现,
private static WebDownloader m_wd = new WebDownloader();
///
/// 获取HTML内容
///
/// 链接
/// 字符集
///
public static string GetHtml(string Url, Encoding Code)
{
return m_wd.GetPageByHttpWebRequest(Url, Code);
}
public string GetPageByHttpWebRequest(string url, Encoding encoding)
{
Stream sr = null ;
StreamReader sReader = null ;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = " Get " ;
request.Timeout = 30000 ;
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
if (response.ContentEncoding.ToLower() == " gzip " )// 如果使用了GZip则先解压
{
sr = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress);
}
else
{
sr = response.GetResponseStream();
}
sReader = new StreamReader(sr, encoding);
return sReader.ReadToEnd();
}
catch
{
return null ;
}
finally
{
if (sReader != null )
sReader.Close();
if (sr != null )
sr.Close();
}
}
以上即实现抓取HTML数据代码,,以上代码基本上也没啥区别,就是普通抓取数据的方法。
///
/// 获取相应的标签内容
///
/// 链接
/// CSS路径
/// 字符集
///
public static IEnumerable GetUrlInfo(string Url, string CSSLoad, Encoding Code)
{
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument
{
OptionAddDebuggingAttributes = false ,
OptionAutoCloseOnEnd = true ,
OptionFixNestedTags = true ,
OptionReadEncoding = true
};
htmlDoc.LoadHtml(GetHtml(Url, Code));
IEnumerable NodesMainContent = htmlDoc.DocumentNode.QuerySelectorAll(CSSLoad);// 查询的路径
return NodesMainContent;
}
///
/// 获取相应的标签内容
///
/// html内容
/// CSS路径
///
public static IEnumerable GetHtmlInfo(string html, string CSSLoad)
{
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument
{
OptionAddDebuggingAttributes = false ,
OptionAutoCloseOnEnd = true ,
OptionFixNestedTags = true ,
OptionReadEncoding = true
};
htmlDoc.LoadHtml(html);
IEnumerable NodesMainContent = htmlDoc.DocumentNode.QuerySelectorAll(CSSLoad);// 查询的路径
return NodesMainContent;
}
以上两个方法即实现对相应路径标签数据的抓取,一个方法是根据URL进行抓取,一个是根据HTML内容去抓取相应的数据,下面着重介绍CSSLoad的获取方法,这个需要安装火狐浏览器即可,火狐浏览器需要安装FireBug插件进行查询,如下图(网站工具栏):
再点击像蜘蛛一样的图标,这样可以看到如下:
这样可以看到所有的HTML标签,那么紧接着如何去获取CSS路径呢,那相对来说就非常简单了。
点击蓝色的箭头选取网站相关的内容,
这样相应的HTML同样选中了,这样离我们拿到CCS路径更近一步了,紧接着点击右键即可复制CCS路径即可。如下:
点击复制CSS路径就可以了,复制出CSS路径如下:
html body#Posts form#frmMain table#BodyTable tbody tr td#Body div#Main div#Editor_Edit div#Editor_Edit_Contents div#edit_container div#Editor_Edit_APOptions div#Editor_Edit_APOptions_Contents.Edit div.edit_option div#Editor_Edit_APOptions_Advancedpanel1 div#Editor_Edit_APOptions_Advancedpanel1_Header.subCollapsibleTitle
看到这一串路径别急,我们也不需要把这串路径全部复制到我们程序里,否则这样显得太负责了,我们只需要将最后的部分节点放到上面的方法里面,我们就能读取到HTML标签相应的内容,下面举一个简单例子就进行说明。
1 ///
2 /// 解析每一条招聘信息
3 ///
4 ///
5 private void GetJobInfoFromUrl(object Url)
6 {
7 try
8 {
9 JobInfo info = new JobInfo();
10 info.Url = Url.ToString();
11 // --获取HTML内容
12 string html =AnalyzeHTML.GetHtml(Url.ToString(), Encoding.UTF8);
13 if (string .IsNullOrEmpty(html)) { return ; }
14 // --职位名称
15 IEnumerable NodesMainContent1 = AnalyzeHTML.GetHtmlInfo(html, " div.title-info h1 " );
16 if (NodesMainContent1.Count()>0 )
17 {
18 info.Position = NodesMainContent1.ToArray()[0 ].InnerText;
19 }
20 // --公司名称
21 IEnumerable NodesMainContent2 = AnalyzeHTML.GetHtmlInfo(html, " div.title-info h3 " );
22 if (NodesMainContent2.Count() > 0 )
23 {
24 info.Company = NodesMainContent2.ToArray()[0 ].InnerText;
25 }
26 // --公司性质/公司规模
27 IEnumerable NodesMainContent4 = AnalyzeHTML.GetHtmlInfo(html, " div.content.content-word ul li " );
28 if (NodesMainContent4.Count() > 0 )
29 {
30 foreach (var item in NodesMainContent4)
31 {
32 if (item.InnerHtml.Contains(" 企业性质 " ))
33 {
34 string nature = item.InnerText;
35 nature = nature.Replace(" 企业性质: " , "" );
36 info.Nature = nature;
37 }
38 if (item.InnerHtml.Contains(" 企业规模 " ))
39 {
40 string scale = item.InnerText;
41 scale = scale.Replace(" 企业规模: " , "" );
42 info.Scale = scale;
43 }
44 }
45 }
46 else // 第二次解析企业性质和企业规模
47 {
48 IEnumerable NodesMainContent4_1 = AnalyzeHTML.GetHtmlInfo(html, " div.right-post-top div.content.content-word " );
49 if (NodesMainContent4_1.Count() > 0 )
50 {
51 foreach (var item_1 in NodesMainContent4_1)
52 {
53 string [] arr = item_1.InnerText.Split(" \r\n " .ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
54 if (arr != null && arr.Length > 0 )
55 {
56 foreach (string str in arr)
57 {
58 if (str.Trim().Contains(" 性质 " ))
59 {
60 info.Nature = str.Replace(" 性质: " , "" ).Trim();
61 }
62 if (str.Trim().Contains(" 规模 " ))
63 {
64 info.Scale = str.Replace(" 规模: " , "" ).Trim();
65 }
66 }
67 }
68 }
69 }
70 }
71 // --工作经验
72 IEnumerable NodesMainContent5 = AnalyzeHTML.GetHtmlInfo(html, " div.resume.clearfix span.noborder " );
73 if (NodesMainContent5.Count() > 0 )
74 {
75 info.Experience = NodesMainContent5.ToArray()[0 ].InnerText;
76 }
77 // --公司地址/最低学历
78 IEnumerable NodesMainContent6 = AnalyzeHTML.GetHtmlInfo(html, " div.resume.clearfix " );
79 if (NodesMainContent6.Count() > 0 )
80 {
81 foreach (var item in NodesMainContent6)
82 {
83 string lable = Regex.Replace(item.InnerHtml, " \\s " , "" );
84 lable = lable.Replace(" " , "" );
85 string [] arr = lable.Split(" " .ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
86 if (arr != null && arr.Length > 2 )
87 {
88 info.Address = arr[0 ];// 公司地址
89 info.Education = arr[1 ];// 最低学历
90 }
91 }
92 }
93 // --月薪
94 IEnumerable NodesMainContent7 = AnalyzeHTML.GetHtmlInfo(html, " div.job-title-left p.job-main-title " );
95 if (NodesMainContent7.Count() > 0 )
96 {
97 info.Salary = NodesMainContent7.ToArray()[0 ].InnerText;
98 }
99 // --发布时间
100 IEnumerable NodesMainContent8 = AnalyzeHTML.GetHtmlInfo(html, " div.job-title-left p.release-time em " );
101 if (NodesMainContent8.Count() > 0 )
102 {
103 info.Time = NodesMainContent8.ToArray()[0 ].InnerText;
104 }
105 // --
106 if (GetJobEnd != null )
107 {
108 GetJobEnd("" , info);
109 }
110 }
111 catch (Exception exMsg)
112 {
113 throw new Exception(exMsg.Message);
114 }
115 }
以上这个方法也是解析某招聘网站标签的内容,但已经看不到复杂的正则表达式去截取HTML标签了,这样显得代码更加干练、简单,再整一个配置页面既可应付抓取网站标签经常变化的难题,这样就显得抓取别人网站数据就是一件非常简单的事情了,O(∩_∩)O哈哈~是不是啦!!!
以上只代表个人观点!!!如有兴趣一起加QQ群:(186841119 ),参与谈论和学习交流
转载于:https://www.cnblogs.com/luoyuhao/p/4174772.html
你可能感兴趣的:(抓取网站数据不再是难事了,Fizzler(So Easy)全能搞定)
标签转换脚本 - VOC格式转COCO格式,即voc2coco,xml2json 附VOC及COCO标签格式详解
Limiiiing
YOLO训练/写作脚本 YOLO 计算机视觉 目标检测 深度学习
前言本文的脚本功能为将VOC数据集的标签文件xml转成COCO的标签文件,指定自己的VOC数据集的标签文件路径后,可一键运行转成COCO的标签文件。专栏目录:YOLO训练/写作脚本目录一览|涉及标签转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件专栏地址:YOLO训练/写作脚本——丰富文章内容,增强实验信服力,助力发文!!!文章目录前言一、VOC数据集介绍1.1总体结构1.2各标
标签转换脚本 - VOC格式转YOLO格式,即voc2yolo,xml2txt 附VOC及YOLO标签格式详解
Limiiiing
YOLO训练/写作脚本 YOLO 深度学习 计算机视觉 目标检测
前言本文的脚本功能为将VOC数据集的标签文件xml转成YOLO的标签文件,指定自己的VOC数据集的标签文件路径后,可一键运行转成YOLO的标签文件。专栏目录:YOLO训练/写作脚本目录一览|涉及标签转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件专栏地址:YOLO训练/写作脚本——丰富文章内容,增强实验信服力,助力发文!!!文章目录前言一、VOC数据集介绍1.1总体结构1.2各标
如何用python做一个小程序进行炒股?
大懒猫软件
python 小程序 开发语言
使用Python分析股票的完整程序以下是一个完整的Python程序,展示如何获取股票数据、进行数据清洗、计算技术指标、并进行简单的价格走势分析。1.安装必要的库首先,确保安装了必要的库:bash复制pipinstallrequestspandasmatplotlibyfinance2.获取股票数据使用yfinance库获取股票数据。yfinance是一个流行的库,可以方便地从雅虎财经获取股票数据。
[RA-L 2023] Coco-LIC:基于非均匀 B 样条的连续时间紧密耦合 LiDAR-惯性-相机里程计
十年一梦实验室
c++
这段代码是一个基于C++的均匀B样条(UniformB-spline)实现,专门用于表示SE(3)变换(即三维空间中的刚体变换,包括旋转和平移)。以下是对代码的总结:1.许可证和版权使用BSD3-ClauseLicense,允许在满足条件的情况下自由分发和修改。版权归VladyslavUsenko和NikolausDemmel所有,属于Basalt项目的一部分。2.功能概述文件定义了一个模板类Se
ArcGIS 10.1 Engine Developer Kit 和 ArcGIS 10.1 Engine 快速入门指南
冷月宫主
arcinfo
http://resources.arcgis.com/zh-cn/help/quick-start-guides/10.1/index.html#//01q100000004000000ArcGIS10.1EngineDeveloperKit和ArcGIS10.1Engine快速入门指南
Android Api Demos登顶之路(九十五)Media-->AudioFx
fishtosky
Android ApiDemos apidemon audio mediaplayer visulizer equalizer
/**这个demon演示了在进行音频播放时如何使用Visualizer和Equalizer类为音频定制*示波器和均衡器。*/publicclassMainActivityextendsActivity{//定义示波器界面的高度(单位为dip)privatestaticfinalfloatVISUALIZER_HEIGHT_DIP=50f;//定义一个媒体播放器privateMediaPlayerm
The import android.media.audiofx.AcousticEchoCanceler cannot be resolved
Dev_Hanyu
Android开发
RT.android.media.audiofx.AcousticEchoCanceler,AddedinAPIlevel16需要将App的目标SDK版本变成16选择项目右键properties,选择Android,然后勾选版本SDK-16.版本选择最好是看下工程的AndroidManifest.xml,选择一样的。target:SDK-16。成功!
工程化与框架系列(9)--前端监控体系
一进制ᅟᅠ
前端工程化与框架 前端
前端监控体系前端监控是现代Web应用不可或缺的组成部分,它帮助我们了解应用的运行状况、用户行为和潜在问题。本文将详细介绍如何构建一个完整的前端监控体系。监控体系概述小知识:前端监控体系通常包括性能监控、错误监控、用户行为分析和业务监控四大模块,通过这些数据可以全面了解应用的健康状况和用户体验。为什么需要前端监控在复杂的前端应用中,监控系统能够帮助我们:及时发现问题捕获JS运行时错误监控API请求异
Spring Boot 整合 Redis 使用教程
小小鸭程序员
spring java spring boot mysql redis
Redis是一种高性能的键值存储数据库,常用于缓存、会话管理和消息队列等场景。SpringBoot通过SpringDataRedis提供了简洁的整合方式。1.环境准备1.1添加依赖在pom.xml中添加Redis依赖(SpringBoot3.x):org.springframework.bootspring-boot-starter-data-redisredis.clientsjedis2.配置
数据集格式转换——json2txt、xml2txt、txt2json【复制就能用】
kay_545
YOLO11改进有效涨点 python 人工智能 机器学习
秋招面试专栏推荐:深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转本专栏所有程序均经过测试,可成功执行专栏地址:YOLO11入门+改进涨点——点击即可跳转欢迎订阅目录json2txt脚本xml2txttxt2json
链上赋能:智能合约重塑供应链管理
Echo_Wish
前沿技术 人工智能 智能合约 linux 运维
链上赋能:智能合约重塑供应链管理供应链是现代经济活动的核心,而复杂的供应链环节常常面临诸多挑战:数据孤岛、信息不透明、操作低效甚至信任危机。这些问题不仅增加了运营成本,还导致资源浪费。随着区块链技术的兴起,供应链管理迎来了新的解决方案,其中智能合约(SmartContract)作为区块链的重要组成部分,正在颠覆传统的供应链管理模式。在本文中,我将结合Python开发与智能合约,探讨智能合约在供应链
量子信息理论入门:探索量子世界的奇妙信息处理方式
Echo_Wish
Python 进阶 量子计算
量子信息理论入门:探索量子世界的奇妙信息处理方式在日益智能化的现代世界,信息论是各个领域的“幕后英雄”,从通信、数据压缩到加密,无处不在。而量子信息理论则是它的升级版,利用量子力学的奇妙特性,为信息处理开辟了全新的天地。那么,什么是量子信息理论?它与传统信息论有何不同?今天,我,Echo_Wish,将带你解锁量子信息理论的奥秘,用通俗的方式让你感受到这门学科的魅力。一、什么是量子信息理论?量子信息
AVX-512近似计算double浮点数倒数指令
东北豆子哥
数值计算/数值优化 C++ 线性代数
AVX-512指令集提供了对双精度浮点数(double)的高效支持,包括近似计算倒数的操作。你可以使用VRCP14PD指令来近似计算双精度浮点数的倒数。1.VRCP14PD指令VRCP14PD指令用于计算packeddouble-precisionfloating-point值的近似倒数,精度约为14位。2.代码示例以下是一个使用AVX-512指令集计算双精度浮点数倒数的示例代码:#include
量子计算+AI:未来AI Agent的计算范式
AI天才研究院
计算 ChatGPT DeepSeek RL 强化学习 agent agi 推理模型 智能驾驶
量子计算+AI:未来AIAgent的计算范式关键词:量子计算,人工智能,AIAgent,量子算法,量子机器学习,量子优化,量子数据处理摘要:量子计算和人工智能(AI)的结合正在改变AIAgent的计算范式。通过量子计算的超强算力和独特性质,AIAgent在数据处理、算法优化和决策能力方面展现出巨大潜力。本文将详细探讨量子计算与AI结合的核心概念、算法原理、系统架构,并通过实际案例展示量子AIAge
AI人工智能深度学习算法:在量子计算中的应用
AI天才研究院
AI大模型企业级应用开发实战 AI大模型应用入门实战与进阶 DeepSeek R1 & 大数据AI人工智能大模型 计算科学 神经计算 深度学习 神经网络 大数据 人工智能 大型语言模型 AI AGI LLM Java Python 架构设计 Agent RPA
1.背景介绍随着科技的不断发展,人工智能和量子计算成为了当今世界的热门话题。人工智能的深度学习算法在处理大规模数据和复杂任务方面取得了显著的成果,而量子计算则具有强大的并行计算能力和高效的信息处理能力。将人工智能与量子计算相结合,为解决一些具有挑战性的问题提供了新的思路和方法。本文将探讨人工智能深度学习算法在量子计算中的应用,包括其背景、意义和应用场景。2.核心概念与联系在人工智能中,深度学习是一
【Java】StampedLock浅谈
风起云涌~
java 开发语言
1,概述在多读少写的环境,相比于ReadWriteLoock,StampedLock性能更胜一筹。试着想一下,如果使用ReadWriteLoock,当1万个读请求过来时,写的操作插入,就会被阻塞。但StampedLock不会,后者不基于AQS实现,它采用乐观锁的思维。所谓的乐观,即读取的时候,不会阻塞当前线程,相应会返回一个邮票,state。读取完毕后,只要验证手上的邮票判断数据是否变化即可,随后
Unity 设计模式-单例模式(Singleton)详解
白茶等风12138
Unity 设计模式 单例模式 设计模式
设计模式设计模式是指在软件开发中为解决常见问题而总结出的一套可复用的解决方案。这些模式是经过长期实践证明有效的编程经验总结,并可以在不同的项目中复用。设计模式并不是代码片段,而是对常见问题的抽象解决方案,它提供了代码结构和模块间交互的一种设计思路,帮助开发者解决特定的设计问题。设计模式总共有23种,总体来说可以分为三大类:创建型模式(CreationalPatterns)、结构型模式(Struct
数字孪生技术在工业制造中的应用探索
知识产权13937636601
计算机 制造 人工智能
一、数字孪生:工业4.0的虚实纽带1.1技术定义与发展脉络数字孪生(DigitalTwin)通过实时数据映射,在虚拟空间构建物理实体的动态镜像。其演进历程:概念萌芽(2002年):NASA首次提出用于航天器健康监测技术成型(2012年):通用电气(GE)将其引入工业领域规模化应用(2020年至今):全球市场规模达$86亿美元,年增速31%(Gartner数据)1.2工业场景的核心价值维度传统模式数
TCP/IP协议栈全解析:从分层模型到核心协议
学习的时候
网络 tcp/ip 网络 服务器
TCP/IP(TransmissionControlProtocol/InternetProtocol)是互联网的核心协议簇,定义了数据如何在网络中传输。本文将深入探讨TCP/IP的七层模型与五层架构、DNS与FTP等协议的工作原理,以及TCP的三次握手与四次挥手过程及其报文结构。目录一、TCP/IP协议族概述二、OSI七层模型与五层架构OSI七层模型框架TCP/IP五层架构TCP/IP协议的应用
Android第四次面试总结(基础算法篇)
每次的天空
android 面试 算法
一、反转链表//定义链表节点类classListNode{//节点存储的值intval;//指向下一个节点的引用ListNodenext;//构造函数,用于初始化节点的值ListNode(intx){val=x;}}classSolution{//反转链表的方法publicListNodereverseList(ListNodehead){//初始化前一个节点为nullListNodeprev=n
芒格的“清晰思考“方法在量子计算商业模式设计中的应用
AGI大模型与大数据研究院
DeepSeek 量子计算 网络 运维 ai
芒格的"清晰思考"方法在量子计算商业模式设计中的应用关键词:芒格、清晰思考方法、量子计算、商业模式设计、应用策略摘要:本文聚焦于将芒格的“清晰思考”方法应用于量子计算商业模式设计。首先介绍了背景信息,包括目的范围、预期读者等。接着阐述了核心概念,如“清晰思考”方法和量子计算商业模式的原理及联系,并给出相应示意图和流程图。详细讲解了核心算法原理及操作步骤,结合数学模型和公式进行说明。通过项目实战案例
YARN 的任务提交流程是怎样的?思维导图 代码示例(java 架构)
用心去追梦
java 架构 开发语言
YARN的任务提交流程是一个复杂但有序的过程,它涉及到多个组件之间的交互。以下是详细的任务提交流程描述、思维导图结构化描述以及Java代码示例,帮助你理解如何在YARN中提交任务。YARN任务提交流程客户端提交应用程序客户端通过YARN的API向ResourceManager提交一个新应用程序。提交时需要提供ApplicationMaster的启动信息(如JAR包路径、主类名等)以及其他配置参数。
Android第三次面试(Java基础)
每次的天空
面试 职场和发展 java android
面试题一:在Android里,Array和ArrayList区别?定义与大小:数组声明时要指定大小,之后固定;ArrayList动态,无需提前定大小。性能:二者访问元素快,时间复杂度O(1);数组插入删除繁琐,ArrayList尾部添加快,其他位置操作慢。数据类型:数组能存基本类型和对象,ArrayList只能存对象,存基本类型需用包装类。方法功能:数组自身方法少,靠Arrays类;ArrayLi
企业信息化架构(业务架构、应用架构、数据架构、技术架构)方案PPT
数智化领地
数字化转型 数据治理 主数据 数据仓库 智能制造 数字工厂 制造业数字化转型 工业互联网 架构 微服务 云原生
这份文件是关于企业信息化架构的综合解决方案,涵盖了业务架构、应用架构、数据架构和技术架构四个核心部分,以及企业架构的概述、元模型、视图和管控。以下是文件的核心内容总结:企业架构概述:企业架构框架被描述为“四横五纵”模型,其中“四横”指策略层、管理层、设计层和实施层四个层次,分别关注全局性、整体性,关联性、可控制性,可实现性,以及可操作性。“五纵”则包括业务架构、应用架构、数据架构和技术架构四大领域
集团企业IT信息化数据架构规划设计方案
数智化领地
数字化转型 数据治理 主数据 数据仓库 架构
集团企业IT信息化数据架构规划设计方案集团企业IT信息化数据架构规划设计方案项目背景与目标集团企业现状分析IT信息化发展趋势数据架构规划需求与目标项目实施范围及预期成果数据架构规划原则与策略遵循行业标准及最佳实践确保数据安全性、完整性和可用性支持业务灵活拓展与创新需求优化资源配置,提高投资回报率数据架构总体设计方案逻辑架构设计物理架构设计数据集成与交换平台规划数据治理体系建立关键业务应用场景及解决
基于 ArkTS 的混合式开发示例:静态页面与本地数据交互
qq_55376032
harmonyos 华为 鸿蒙
一、实现效果1、H5段混合式开发效果图2、静态页面与本地数据交互效果图二、技术栈分析ArkTS:用于构建页面结构和逻辑,支持声明式UI和组件化开发。WebView:通过@ohos.web.webview调用H5页面,支持JavaScript交互。资源管理:使用@kit.ArkTS的util模块读取并解析本地JSON文件。自定义对话框:通过@CustomDialog实现自定义弹窗,支持动态数据加载。
Django CSRF验证失败请求为什么会中断?
字节王德发
python django csrf python
在使用Django框架进行Web开发时,CSRF(跨站请求伪造)是一个需要特别注意的安全问题。CSRF保护是Django中内置的一项关键特性,它的目的是为了防止恶意网站通过用户的浏览器向你的应用程序发送不法请求。当用户在你的站点上进行敏感操作时,CSRF保护会验证请求的合法性,以阻止未授权的访问。不过,有时候开发者可能会遇到CSRF验证失败导致请求中断的情况。今天咱们就来深入聊聊这个问题,看看发生
为什么Django能有效防御CSRF攻击?
字节王德发
python django csrf okhttp
在当今这个互联网高度发达的时代,Web安全问题层出不穷,其中跨站请求伪造(CSRF,Cross-SiteRequestForgery)就是一个比较常见的威胁。攻击者利用用户的身份信息,发送恶意请求,改变用户的属性或执行用户不想要的操作,这就会造成很大的损失。Django作为一个流行的Web框架,内置了一些机制来安全地防御这种攻击。今天,就让我们深入了解一下Django是如何抵御CSRF攻击的,尤其
如何在Spring Boot中配置和使用MyBatis-Plus
字节王德发
java技术 spring boot mybatis 后端
在当今的Java开发中,SpringBoot已经成为了一个非常流行的框架,而MyBatis-Plus则是一个强大的ORM框架,为开发人员提供了更简便的数据库操作方式。很多开发者都在使用SpringBoot和MyBatis-Plus的组合来快速构建高效的应用。今天就来聊聊如何在SpringBoot项目中配置和使用MyBatis-Plus,帮助你更好地理解这两者的结合。创建SpringBoot项目首先
Sublime Text 3 安装与配置指南
戴宣千Red
SublimeText3安装与配置指南SublimeText3软件安装PackageConrtol手动安装及配置插件安装以汉化包ChineseLocalizations为例项目地址:https://gitcode.com/Resource-Bundle-Collection/f8e42本仓库提供了一个详细的指南,帮助用户在Windows10(64位)操作系统下安装和配置SublimeText3。内
java短路运算符和逻辑运算符的区别
3213213333332132
java基础
/*
* 逻辑运算符——不论是什么条件都要执行左右两边代码
* 短路运算符——我认为在底层就是利用物理电路的“并联”和“串联”实现的
* 原理很简单,并联电路代表短路或(||),串联电路代表短路与(&&)。
*
* 并联电路两个开关只要有一个开关闭合,电路就会通。
* 类似于短路或(||),只要有其中一个为true(开关闭合)是
Java异常那些不得不说的事
白糖_
java exception
一、在finally块中做数据回收操作
比如数据库连接都是很宝贵的,所以最好在finally中关闭连接。
JDBCAgent jdbc = new JDBCAgent();
try{
jdbc.excute("select * from ctp_log");
}catch(SQLException e){
...
}finally{
jdbc.close();
utf-8与utf-8(无BOM)的区别
dcj3sjt126com
PHP
BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如
JAVA Annotation之定义篇
周凡杨
java 注解 annotation 入门 注释
Annotation: 译为注释或注解
An annotation, in the Java computer programming language, is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, pa
tomcat的多域名、虚拟主机配置
g21121
tomcat
众所周知apache可以配置多域名和虚拟主机,而且配置起来比较简单,但是项目用到的是tomcat,配来配去总是不成功。查了些资料才总算可以,下面就跟大家分享下经验。
很多朋友搜索的内容基本是告诉我们这么配置:
在Engine标签下增面积Host标签,如下:
<Host name="www.site1.com" appBase="webapps"
Linux SSH 错误解析(Capistrano 的cap 访问错误 Permission )
510888780
linux capistrano
1.ssh -v
[email protected] 出现
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
错误
运行状况如下:
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuratio
log4j的用法
Harry642
java log4j
一、前言: log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包。由于log4j出色的表现, 当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代jdk1.4 的日志工具类,但当时jdk1.4已接近完成,所以sun拒绝使用log4j,当在java开发中
mysql、sqlserver、oracle分页,java分页统一接口实现
aijuans
oracle jave
定义:pageStart 起始页,pageEnd 终止页,pageSize页面容量
oracle分页:
select * from ( select mytable.*,rownum num from (实际传的SQL) where rownum<=pageEnd) where num>=pageStart
sqlServer分页:
 
Hessian 简单例子
antlove
java Web service hessian
hello.hessian.MyCar.java
package hessian.pojo;
import java.io.Serializable;
public class MyCar implements Serializable {
private static final long serialVersionUID = 473690540190845543
数据库对象的同义词和序列
百合不是茶
sql 序列 同义词 ORACLE权限
回顾简单的数据库权限等命令;
解锁用户和锁定用户
alter user scott account lock/unlock;
//system下查看系统中的用户
select * dba_users;
//创建用户名和密码
create user wj identified by wj;
identified by
//授予连接权和建表权
grant connect to
使用Powermock和mockito测试静态方法
bijian1013
持续集成 单元测试 mockito Powermock
实例:
package com.bijian.study;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import or
精通Oracle10编程SQL(6)访问ORACLE
bijian1013
oracle 数据库 plsql
/*
*访问ORACLE
*/
--检索单行数据
--使用标量变量接收数据
DECLARE
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
BEGIN
select ename,sal into v_ename,v_sal
from emp where empno=&no;
dbms_output.pu
【Nginx四】Nginx作为HTTP负载均衡服务器
bit1129
nginx
Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处:
负载均衡的好处
增加可用资源
增加吞吐量
加快响应速度,降低延时
出错的重试验机制
Nginx主要支持三种均衡算法:
round-robin
l
jquery-validation备忘
白糖_
jquery css F# Firebug
留点学习jquery validation总结的代码:
function checkForm(){
validator = $("#commentForm").validate({// #formId为需要进行验证的表单ID
errorElement :"span",// 使用"div"标签标记错误, 默认:&
solr限制admin界面访问(端口限制和http授权限制)
ronin47
限定Ip访问
solr的管理界面可以帮助我们做很多事情,但是把solr程序放到公网之后就要限制对admin的访问了。
可以通过tomcat的http基本授权来做限制,也可以通过iptables防火墙来限制。
我们先看如何通过tomcat配置http授权限制。
第一步: 在tomcat的conf/tomcat-users.xml文件中添加管理用户,比如:
<userusername="ad
多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
bylijinnan
java 多线程
public class IncDecThread {
private int j=10;
/*
* 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
* 两个问题:
* 1、线程同步--synchronized
* 2、线程之间如何共享同一个j变量--内部类
*/
public static
买房历程
cfyme
2015-06-21: 万科未来城,看房子
2015-06-26: 办理贷款手续,贷款73万,贷款利率5.65=5.3675
2015-06-27: 房子首付,签完合同
2015-06-28,央行宣布降息 0.25,就2天的时间差啊,没赶上。
首付,老婆找他的小姐妹接了5万,另外几个朋友借了1-
[军事与科技]制造大型太空战舰的前奏
comsci
制造
天气热了........空调和电扇要准备好..........
最近,世界形势日趋复杂化,战争的阴影开始覆盖全世界..........
所以,我们不得不关
dateformat
dai_lm
DateFormat
"Symbol Meaning Presentation Ex."
"------ ------- ------------ ----"
"G era designator (Text) AD"
"y year
Hadoop如何实现关联计算
datamachine
mapreduce hadoop 关联计算
选择Hadoop,低成本和高扩展性是主要原因,但但它的开发效率实在无法让人满意。
以关联计算为例。
假设:HDFS上有2个文件,分别是客户信息和订单信息,customerID是它们之间的关联字段。如何进行关联计算,以便将客户名称添加到订单列表中?
&nbs
用户模型中修改用户信息时,密码是如何处理的
dcj3sjt126com
yii
当我添加或修改用户记录的时候对于处理确认密码我遇到了一些麻烦,所有我想分享一下我是怎么处理的。
场景是使用的基本的那些(系统自带),你需要有一个数据表(user)并且表中有一个密码字段(password),它使用 sha1、md5或其他加密方式加密用户密码。
面是它的工作流程: 当创建用户的时候密码需要加密并且保存,但当修改用户记录时如果使用同样的场景我们最终就会把用户加密过的密码再次加密,这
中文 iOS/Mac 开发博客列表
dcj3sjt126com
Blog
本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息。
本博客列表涉及的文章内容支持 定制化Google搜索,特别感谢 JeOam 提供并帮助更新。
本博客列表也提供同步更新的OPML文件(下载OPML文件),可供导入到例如feedly等第三方定阅工具中,特别感谢 lcepy 提供自动转换脚本。这里有导入教程。
js去除空格,去除左右两端的空格
蕃薯耀
去除左右两端的空格 js去掉所有空格 js去除空格
js去除空格,去除左右两端的空格
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g
SpringMVC4零配置--web.xml
hanqunfeng
springmvc4
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置。
ServletContainerInitializer:启动容器时负责加载相关配置
package javax.servlet;
import java.util.Set;
public interface ServletContainer
《开源框架那些事儿21》:巧借力与借巧力
j2eetop
框架 UI
同样做前端UI,为什么有人花了一点力气,就可以做好?而有的人费尽全力,仍然错误百出?我们可以先看看几个故事。
故事1:巧借力,乌鸦也可以吃核桃
有一个盛产核桃的村子,每年秋末冬初,成群的乌鸦总会来到这里,到果园里捡拾那些被果农们遗落的核桃。
核桃仁虽然美味,但是外壳那么坚硬,乌鸦怎么才能吃到呢?原来乌鸦先把核桃叼起,然后飞到高高的树枝上,再将核桃摔下去,核桃落到坚硬的地面上,被撞破了,于是,
JQuery EasyUI 验证扩展
可怜的猫
jquery easyui 验证
最近项目中用到了前端框架-- EasyUI,在做校验的时候会涉及到很多需要自定义的内容,现把常用的验证方式总结出来,留待后用。
以下内容只需要在公用js中添加即可。
使用类似于如下:
<input class="easyui-textbox" name="mobile" id="mobile&
架构师之httpurlconnection----------读取和发送(流读取效率通用类)
nannan408
1.前言.
如题.
2.代码.
/*
* Copyright (c) 2015, S.F. Express Inc. All rights reserved.
*/
package com.test.test.test.send;
import java.io.IOException;
import java.io.InputStream
Jquery性能优化
r361251
JavaScript jquery
一、注意定义jQuery变量的时候添加var关键字
这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:
$loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的
二、请使用一个var来定义变量
如果你使用多个变量的话,请如下方式定义:
. 代码如下:
var page
在eclipse项目中使用maven管理依赖
tjj006
eclipse maven
概览:
如何导入maven项目至eclipse中
建立自有Maven Java类库服务器
建立符合maven代码库标准的自定义类库
Maven在管理Java类库方面有巨大的优势,像白衣所说就是非常“环保”。
我们平时用IDE开发都是把所需要的类库一股脑的全丢到项目目录下,然后全部添加到ide的构建路径中,如果用了SVN/CVS,这样会很容易就 把
中国天气网省市级联页面
x125858805
级联
1、页面及级联js
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&l