Web渗透测试实战:基于Metasploit 5.0

Web渗透测试实战:基于Metasploit 5.0_第1张图片

在当今快速发展的技术世界中,信息安全行业正以惊人的速度变化,与此同时,针对组织的网络攻击数量也在迅速增加。为了保护自己免受这些来自真实世界的攻击,许多组织在其流程管理中引入了安全审计以及风险和漏洞评估机制,旨在评估与其业务资产有关的风险。为了保护IT资产,许多组织聘请信息安全专业人员,以识别组织的应用程序和网络中可能存在的风险、漏洞和威胁。对于信息安全专业人员来说,掌握并提高自己的专业技能以及熟悉最新的攻击方法至关重要。同样,为了提高效率,许多人在进行渗透测试和漏洞利用时都将Metasploit作为首选。

对于网络漏洞利用和后渗透,我们可以找到大量资源,但是就Web应用渗透测试而言,选择Metasploit的人并不多。

这里介绍一本新书《Web渗透测试实战:基于Metasploit 5.0》,本书将帮助安全顾问和专业人士了解Metasploit在Web应用渗透测试中的作用,使读者能够在Metasploit的帮助下更有效地进行Web应用渗透测试。

Web渗透测试实战:基于Metasploit 5.0_第2张图片Web渗透测试实战:基于Metasploit 5.0_第3张图片

扫码了解 ↑

读者对象


本书专为渗透测试人员、白帽黑客、信息安全顾问以及对Web应用渗透测试有一定了解,并且想要了解更多相关知识或深入研究Metasploit框架的人而设计。

涵盖内容

  • 第1章 介绍Metasploit的安装和配置,以及渗透测试的生命周期、OWASP Top 10和SANS Top 25。

  • 第2章 介绍Metasploit从安装到漏洞利用的基础知识,还涵盖基本的Metasploit术语以及Metasploit中其他较不常用的选项。

  • 第3章 在深入探讨其他主题之前,对Metasploit社区版Web界面进行简单介绍。

  • 第4章 介绍渗透测试生命周期中的第一个过程:侦察(reconnaissance)。从标识(banner)抓取到WEBDAV侦察,我们将借助特定Metasploit模块来说明基本的侦察过程。

  • 第5章 着重介绍Web应用渗透测试中重要的过程之一—枚举。本章将首先介绍文件和目录枚举的基本知识,然后介绍网站爬虫和抓取,之后介绍和枚举相关的Metasploit模块。

  • 第6章 主要介绍Metasploit框架中用于扫描Web应用的WMAP模块。

  • 第7章 主要介绍通过Metasploit使用Nessus漏洞扫描程序对目标进行漏洞评估扫描。

  • 第8章 主要介绍针对WordPress的漏洞枚举以及如何进行漏洞利用。

  • 第9章 主要介绍针对Joomla的漏洞枚举以及如何进行漏洞利用。

  • 第10章 主要介绍针对Drupal的漏洞枚举以及如何进行漏洞利用。

  • 第11章 介绍针对JBoss服务器进行漏洞枚举、利用和获得访问权限的方法。

  • 第12章 介绍针对Tomcat服务器进行漏洞枚举、利用和获得访问权限的方法。

  • 第13章 介绍针对运行Jenkins的服务器进行漏洞枚举、利用和获得访问权限的方法。

  • 第14章 主要介绍针对Web应用业务逻辑缺陷的利用,并详细介绍通过对Web应用进行模糊测试来挖掘漏洞的一些实例。

  • 第15章 涵盖报告编写的基础知识以及如何使用不同的工具来自动执行报告编写过程。

目录

上拉下滑查看目录 ↓

译者序

前言

关于作者

关于审校者

第一篇 导论

第1章 Web应用渗透测试简介2

1.1 什么是渗透测试2

1.2 渗透测试的类型3

1.2.1 白盒渗透测试3

1.2.2 黑盒渗透测试3

1.2.3 灰盒渗透测试3

1.3 渗透测试的阶段3

1.3.1 侦察和信息收集4

1.3.2 枚举4

1.3.3 漏洞评估与分析5

1.3.4 漏洞利用5

1.3.5 报告6

1.4 重要术语6

1.5 渗透测试方法学7

1.5.1 OSSTMM7

1.5.2 OSSTMM测试类型9

1.5.3 ISSAF10

1.5.4 PTES11

1.6 通用缺陷列表14

1.6.1 OWASP Top 1014

1.6.2 SANS Top 2514

1.7 小结15

1.8 问题15

1.9 拓展阅读15

第2章 Metasploit基础知识16

2.1 技术条件要求16

2.2 MSF简介16

2.3 MSF术语17

2.4 安装与设置Metasploit18

2.4.1 在*nix系统上安装MSF19

2.4.2 在Windows上安装MSF21

2.5 MSF入门23

2.5.1 使用msfconsole与MSF交互23

2.5.2 MSF控制台命令24

2.6 小结43

2.7 问题43

2.8 拓展阅读44

第3章 Metasploit Web界面45

3.1 技术条件要求45

3.2 Metasploit Web界面简介45

3.3 安装和设置Web界面46

3.3.1 在Windows上安装Metasploit社区版46

3.3.2 在Linux/Debian上安装Metasploit社区版50

3.4 Metasploit Web界面入门53

3.4.1 界面53

3.4.2 项目创建56

3.4.3 目标枚举58

3.4.4 模块选择64

3.5 小结76

3.6 问题76

3.7 拓展阅读76

第二篇 Metasploit的渗透测试生命周期

第4章 使用Metasploit进行侦察78

4.1 技术条件要求78

4.2 侦察简介78

4.2.1 主动侦察79

4.2.2 被动侦察90

4.3 小结96

4.4 问题96

4.5 拓展阅读97

第5章 使用Metasploit进行Web应用枚举98

5.1 技术条件要求98

5.2 枚举简介98

5.2.1 DNS枚举99

5.2.2 更进一步—编辑源代码100

5.3 枚举文件105

5.3.1 使用Metasploit进行爬行和抓取操作108

5.3.2 扫描虚拟主机111

5.4 小结112

5.5 问题112

5.6 拓展阅读112

第6章 使用WMAP进行漏洞扫描113

6.1 技术条件要求113

6.2 理解WMAP113

6.3 WMAP扫描过程114

6.3.1 数据侦察114

6.3.2 加载扫描器120

6.3.3 WMAP配置121

6.3.4 启动WMAP124

6.4 WMAP模块执行顺序125

6.5 为WMAP添加一个模块128

6.6 使用WMAP进行集群扫描133

6.7 小结139

6.8 问题139

6.9 拓展阅读140

第7章 使用Metasploit(Nessus)进行漏洞评估141

7.1 技术条件要求141

7.2 Nessus简介141

7.2.1 将Nessus与Metasploit结合使用142

7.2.2 通过Metasploit进行Nessus身份验证143

7.3 基本命令145

7.4 通过Metasploit执行Nessus扫描149

7.4.1 使用Metasploit DB执行Nessus扫描153

7.4.2 在Metasploit DB中导入Nessus扫描156

7.5 小结157

7.6 问题157

7.7 拓展阅读157

第三篇 渗透测试内容管理系统

第8章 渗透测试CMS——WordPress160

8.1 技术条件要求160

8.2 WordPress简介160

8.2.1 WordPress架构161

8.2.2 文件/目录结构161

8.3 对WordPress进行侦察和枚举162

8.3.1 版本检测163

8.3.2 使用Metasploit进行WordPress侦察166

8.3.3 使用Metasploit进行WordPress枚举167

8.4 对WordPress进行漏洞评估169

8.5 WordPress漏洞利用第1部分—WordPress任意文件删除177

8.5.1 漏洞流和分析178

8.5.2 使用Metasploit利用漏洞180

8.6 WordPress漏洞利用第2部分—未经身份验证的SQL注入187

8.6.1 漏洞流和分析187

8.6.2 使用Metasploit利用漏洞188

8.7 WordPress漏洞利用第3部分—WordPress 5.0.0远程代码执行188

8.7.1 漏洞流和分析189

8.7.2 使用Metasploit利用漏洞190

8.8 更进一步—自定义Metasploit漏洞利用模块198

8.9 小结201

8.10 问题201

8.11 拓展阅读201

第9章 渗透测试CMS——Joomla202

9.1 技术条件要求202

9.2 Joomla简介202

9.3 Joomla架构203

9.4 侦察和枚举204

9.4.1 版本检测204

9.4.2 使用Metasploit对Joomla进行侦察208

9.5 使用Metasploit枚举Joomla插件和模块209

9.5.1 页面枚举209

9.5.2 插件枚举210

9.6 对Joomla进行漏洞扫描211

9.7 使用Metasploit对Joomla进行漏洞利用212

9.8 上传Joomla Shell219

9.9 小结222

9.10 问题222

9.11 拓展阅读222

第10章 渗透测试CMS——Drupal223

10.1 技术条件要求223

10.2 Drupal及其架构简介223

10.2.1 Drupal架构223

10.2.2 目录结构224

10.3 Drupal侦察和枚举225

10.3.1 通过README.txt检测225

10.3.2 通过元标记检测226

10.3.3 通过服务器标头检测226

10.3.4 通过CHANGELOG.txt检测227

10.3.5 通过install.php检测228

10.3.6 插件、主题和模块枚举228

10.4 使用droopescan对Drupal进行漏洞扫描229

10.5 对Drupal进行漏洞利用231

10.5.1 使用Drupalgeddon2对Drupal进行漏洞利用231

10.5.2 RESTful Web Services漏洞利用—unserialize()237

10.6 小结249

10.7 问题250

10.8 拓展阅读250

第四篇 技术平台渗透测试

第11章 技术平台渗透测试——JBoss252

11.1 技术条件要求252

11.2 JBoss简介252

11.2.1 JBoss架构(JBoss 5)253

11.2.2 JBoss 文件及目录结构254

11.3 侦察和枚举256

11.3.1 通过主页检测256

11.3.2 通过错误页面检测257

11.3.3 通过HTML标签检测257</p> <p>11.3.4 通过X-Powered-By检测258</p> <p>11.3.5 通过散列favicon.ico检测258</p> <p>11.3.6 通过样式表进行检测259</p> <p>11.3.7 使用Metasploit执行JBoss状态扫描259</p> <p>11.3.8 JBoss服务枚举261</p> <p>11.4 在JBoss AS上执行漏洞评估262</p> <p>11.4.1 使用JexBoss执行漏洞扫描263</p> <p>11.4.2 可被攻击的JBoss入口点264</p> <p>11.5 JBoss漏洞利用265</p> <p>11.5.1 通过管理控制台对JBoss进行漏洞利用265</p> <p>11.5.2 通过JMX控制台进行漏洞利用(MainDeployer方法)267</p> <p>11.5.3 使用Metasploit(MainDeployer)通过JMX控制台进行漏洞利用271</p> <p>11.5.4 通过JMX控制台(BSHDeployer)进行漏洞利用272</p> <p>11.5.5 使用Metasploit(BSHDeployer)通过JMX控制台进行漏洞利用274</p> <p>11.5.6 通过Web控制台(Java Applet)进行漏洞利用275</p> <p>11.5.7 通过Web控制台(Invoker方法)进行漏洞利用277</p> <p>11.5.8 使用Metasploit通过JMXInvoker-Servlet 进行漏洞利用285</p> <p>11.6 小结286</p> <p>11.7 问题286</p> <p>11.8 拓展阅读286</p> <p>第12章 技术平台渗透测试——Apache Tomcat287</p> <p>12.1 技术条件要求287</p> <p>12.2 Tomcat 简介288</p> <p>12.3 Apache Tomcat 架构288</p> <p>12.4 文件和目录结构289</p> <p>12.5 检测Tomcat的安装290</p> <p>12.5.1 通过 HTTP 响应标头检测—X-Powered-By 291</p> <p>12.5.2 通过HTTP响应标头检测 — WWW-Authenticate 291</p> <p>12.5.3 通过 HTML 标签检测—页面标题标签 291</p> <p>12.5.4 通过 HTTP 401未授权错误检测292</p> <p>12.5.5 通过唯一指纹(哈希值)检测292</p> <p>12.5.6 通过目录和文件检测293</p> <p>12.6 版本检测294</p> <p>12.6.1 通过 HTTP 404错误页面检测294</p> <p>12.6.2 通过Release-Notes.txt 泄露版本号294</p> <p>12.6.3 通过 Changelog.html 泄露版本信息294</p> <p>12.7 对Tomcat进行漏洞利用295</p> <p>12.7.1 Apache Tomcat JSP 上传绕过漏洞297</p> <p>12.7.2 Tomcat WAR shell 上传(经过认证)300</p> <p>12.8 Apache Struts简介 304</p> <p>12.8.1 理解OGNL 304</p> <p>12.8.2 OGNL表达式注入304</p> <p>12.8.3 通过OGNL注入测试远程代码执行306</p> <p>12.8.4 通过 OGNL 注入进行不可视的远程代码执行310</p> <p>12.8.5 OGNL带外注入测试310</p> <p>12.8.6 使用Metasploit 对Struts 2 进行漏洞利用311</p> <p>12.9 小结313</p> <p>12.10 问题313</p> <p>12.11 拓展阅读313</p> <p>第13章 技术平台渗透测试——Jenkins314</p> <p>13.1 技术条件要求314</p> <p>13.2 Jenkins简介314</p> <p>13.3 Jenkins术语315</p> <p>13.3.1 Stapler 库 315</p> <p>13.3.2 URL路由316</p> <p>13.3.3 Apache Groovy 316</p> <p>13.3.4 元编程 316</p> <p>13.3.5 抽象语法树 316</p> <p>13.3.6 Pipeline 317</p> <p>13.4 Jenkins 侦察和枚举317</p> <p>13.4.1 使用收藏夹图标哈希值检测Jenkins 317</p> <p>13.4.2 使用 HTTP 响应标头检测Jenkins 318</p> <p>13.4.3 使用 Metasploit 进行 Jenkins 枚举319</p> <p>13.5 对Jenkins进行漏洞利用321</p> <p>13.5.1 访问控制列表绕过322</p> <p>13.5.2 理解 Jenkins 的未认证远程代码执行324</p> <p>13.6 小结330</p> <p>13.7 问题331</p> <p>13.8 拓展阅读331</p> <p>第五篇 逻辑错误狩猎</p> <p>第14章 Web应用模糊测试——逻辑错误狩猎334</p> <p>14.1 技术条件要求334</p> <p>14.2 什么是模糊测试335</p> <p>14.3 模糊测试术语335</p> <p>14.4 模糊测试的攻击类型336</p> <p>14.4.1 应用模糊测试336</p> <p>14.4.2 协议模糊测试336</p> <p>14.4.3 文件格式模糊测试336</p> <p>14.5 Web应用模糊测试简介337</p> <p>14.5.1 安装Wfuzz337</p> <p>14.5.2 安装ffuf337</p> <p>14.6 识别Web应用攻击向量340</p> <p>14.6.1 HTTP请求动词340</p> <p>14.6.2 HTTP请求URI344</p> <p>14.6.3 HTTP请求标头352</p> <p>14.7 小结361</p> <p>14.8 问题361</p> <p>14.9 拓展阅读361</p> <p>第15章 编写渗透测试报告363</p> <p>15.1 技术条件要求363</p> <p>15.2 报告编写简介363</p> <p>15.2.1 编写执行报告364</p> <p>15.2.2 编写详细的技术报告365</p> <p>15.3 Dradis框架简介367</p> <p>15.3.1 安装前配置367</p> <p>15.3.2 安装和设置367</p> <p>15.3.3 开始使用Dradis369</p> <p>15.3.4 将第三方报告导入Dradis370</p> <p>15.3.5 在Dradis中定义安全测试方法372</p> <p>15.3.6 使用Dradis组织报告374</p> <p>15.3.7 在Dradis中导出报告375</p> <p>15.4 Serpico简介376</p> <p>15.4.1 安装和设置376</p> <p>15.4.2 开始使用Serpico376</p> <p>15.4.3 将数据从Metasploit导入Serpico380</p> <p>15.4.4 将第三方报告导入Serpico381</p> <p>15.4.5 Serpico中的用户管理381</p> <p>15.4.6 Serpico中的模板管理383</p> <p>15.4.7 生成多种格式的报告385</p> <p>15.5 小结385</p> <p>15.6 问题385</p> <p>15.7 拓展阅读386</p> <p>问题答案387</p> <p><a href="http://img.e-com-net.com/image/info8/a4c825f8bb50424ebdb9225cbd9ed8cf.gif" target="_blank"><img src="http://img.e-com-net.com/image/info8/a4c825f8bb50424ebdb9225cbd9ed8cf.gif" alt="7a36ad6ff53aaa891486a072e5b26811.gif" width="180" height="56"></a></p> <p style="text-align:center;"><a href="http://img.e-com-net.com/image/info8/b7314cf5535543b9847f1e8b36290fe8.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/b7314cf5535543b9847f1e8b36290fe8.jpg" alt="Web渗透测试实战:基于Metasploit 5.0_第4张图片" width="650" height="364" style="border:1px solid black;"></a><br></p> <p style="text-align:center;">扫码<strong>关注</strong>【华章计算机】视频号</p> <p style="text-align:center;">每天来听华章哥讲书</p> <p><a href="http://img.e-com-net.com/image/info8/dc6e9dc62d4e4c9dac6f6587fdfbe5cd.gif" target="_blank"><img src="http://img.e-com-net.com/image/info8/dc6e9dc62d4e4c9dac6f6587fdfbe5cd.gif" alt="c8b3911d27e703a4e8798725baff9aa8.gif" width="180" height="56"></a></p> <p>更多精彩回顾</p> <h1>干货 |C++都有哪些就业方向?是否应该学习C++?</h1> <h1>书单 | 成为优秀Java开发者,我看了这几本书<br></h1> <p style="text-align:center;">上新 |《Core Java》作者亲授视频免费看,学习Java更轻松</p> <h1>资讯 |提升研发效能:抵制无效加班文化</h1> <h1>资讯 | 又又叒更新,Win 12要来了?</h1> <h1>干货 |一文带你掌握计算机体系结构核心内容</h1> <h1>干货 | 一文带你理解算法策略</h1> <h1>书讯 | 2月书讯(下)| 新年到,新书到!<br></h1> <p style="text-align:center;">书讯 | 2月书讯 (上)| 新年到,新书到!</p> <p style="text-align:center;">【干货】什么是bug?bug的源头在哪里?</p> <p style="text-align:center;">【赠书】【第97期】2022 软件工程师状况报告:Go 最抢手</p> <p><a href="http://img.e-com-net.com/image/info8/b5bd3a6c9e684f4c8b453654b3a13277.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/b5bd3a6c9e684f4c8b453654b3a13277.jpg" alt="Web渗透测试实战:基于Metasploit 5.0_第5张图片" width="650" height="364" style="border:1px solid black;"></a></p> <p><a href="http://img.e-com-net.com/image/info8/751852d7c6fa4b91be17527dafb27d01.gif" target="_blank"><img src="http://img.e-com-net.com/image/info8/751852d7c6fa4b91be17527dafb27d01.gif" alt="Web渗透测试实战:基于Metasploit 5.0_第6张图片" width="300" height="300" style="border:1px solid black;"></a></p> <p>点击<strong>阅读全文</strong>购买</p> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1555427713752305664"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(信息安全,java,python,编程语言,linux)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1903375986448199680.htm" title="Spring Boot 3.2+ 升级Mybatis-Plus 3.5.x 兼容性问题与解决方案Invalid value type for attribute ‘factoryBeanObjectT" target="_blank">Spring Boot 3.2+ 升级Mybatis-Plus 3.5.x 兼容性问题与解决方案Invalid value type for attribute ‘factoryBeanObjectT</a> <span class="text-muted">z2637305611</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>一、当升级遭遇滑铁卢当我们将SpringBoot升级到3.2.0+版本时,熟悉的Invalidvaluetypeforattribute'factoryBeanObjectType':java.lang.String错误突然吞噬了控制台。这个看似神秘的错误频繁出现在整合Mybatis-Plus3.5.x时,甚至会附赠Invalidbeandefinitionwithname'xxxMapper'的</div> </li> <li><a href="/article/1903375734236311552.htm" title="JAVA泛型的作用" target="_blank">JAVA泛型的作用</a> <span class="text-muted">时光呢</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>‌1.类型安全(TypeSafety)‌在泛型出现之前,集合类(如ArrayList、HashMap)只能存储Object类型元素,导致以下问题:‌问题‌:从集合中取出元素时,需手动强制类型转换,容易因类型不匹配导致运行时错误(如ClassCastException)。//JDK1.4时代:非泛型示例Listlist=newArrayList();list.add("Hello");Integer</div> </li> <li><a href="/article/1903375230454263808.htm" title="Python——函数" target="_blank">Python——函数</a> <span class="text-muted">生如雪花</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>一、十进制小数转换成二进制小数【问题描述】编写程序,输入十进制小数(只考虑正数),把它转换为以字符串形式存储的二进制小数,输出该二进制小数字符串。对于转换得到的二进制小数,小数点后最多保留10位。小数点后不足10位,则输出这些位,尾部不补0;小数点后超出10位,则直接舍弃超出部分。【输入形式】十进制浮点小数【输出形式】对应输入小数的二进制小数字符串。若整数部分或者小数部分为0,则输出0。比如输入0</div> </li> <li><a href="/article/1903375103408795648.htm" title="Python Web框架 Flask vs Django vs FastAPI" target="_blank">Python Web框架 Flask vs Django vs FastAPI</a> <span class="text-muted">ZengDerby</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a> <div>如果您需要构建大型的、功能丰富的应用程序,Django可能是一个很好的选择。如果您需要更灵活的框架,可以选择Flask来定制开发。而对于追求极致性能和高并发处理的项目,FastAPI可能是一个更加理想的选择。优缺点Flask在小型项目或微服务理想的选择。Flask灵活且轻量,非常适合快速开发小型应用。Flask是一个非常灵活的框架,它允许您根据项目需求进行定制。您可以根据需要选择合适的插件和扩展。</div> </li> <li><a href="/article/1903375104067301376.htm" title="使用 React 和 Cypress 进行单元测试" target="_blank">使用 React 和 Cypress 进行单元测试</a> <span class="text-muted">pxr007</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/junit/1.htm">junit</a> <div>每个开发人员都希望发布一个没有错误的生产应用程序。为了实现这一点,我们需要考虑如何将测试集成到我们的应用程序中。我们可以使用许多测试工具、框架和测试类型。Cypress是一个现代化的自动化测试套件。它是一个基于JavaScript的完全开源的测试框架,由Mocha和Chai等支持BDD和TDD断言样式的库构建。此外,如果您熟悉用JavaScript编写测试,那么使用Cypress会很容易。Cypr</div> </li> <li><a href="/article/1903373463343656960.htm" title="无锁并发环形队列(Java版)" target="_blank">无锁并发环形队列(Java版)</a> <span class="text-muted">呆呆的蜗牛</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%92%8C%E7%AE%97%E6%B3%95/1.htm">数据结构和算法</a><a class="tag" taget="_blank" href="/search/%E9%98%9F%E5%88%97/1.htm">队列</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a> <div>环形队列是顺序队列的一种。普通的顺序队列,当队列不满且tail指针移动到数组的最后位置时,就需要将数组中的元素整体向前搬移,而环形队列却不用。这就提高了入队的效率。无锁并发主要基于CAS原理,在java中Unsafe类中提供了底层的CAS操作。但是我们可以不直接操作Unsafe类,JDK提供了一系列的Atomic类来满足一般的无锁需求。importjava.util.concurrent.atom</div> </li> <li><a href="/article/1903371825757351936.htm" title="Stream 流中 flatMap 方法详解" target="_blank">Stream 流中 flatMap 方法详解</a> <span class="text-muted">遇见伯灵说</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/stream%E6%B5%81/1.htm">stream流</a> <div>1.flatMap()到底是啥?flatMap()是Stream里的中间操作,它的作用可以分两步理解:第一步:对流里的每个元素,先**映射(转换)**成一个Stream。第二步:把多个子流拍平成一个大的扁平流。简单记忆:map()是一对一,flatMap()是一对多。️2.基础用法拆解来看个例子:Listlist=List.of("HelloWorld","JavaStream");Listres</div> </li> <li><a href="/article/1903370943913324544.htm" title="双一流软件工程大二听闻 Java 前景堪忧,是否该转C++或人工智能或者读研?" target="_blank">双一流软件工程大二听闻 Java 前景堪忧,是否该转C++或人工智能或者读研?</a> <span class="text-muted">程序员yt</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>今天给大家分享的是一位粉丝的提问,双一流软件工程大二听闻Java前景堪忧,是否该转C++或人工智能或者读研?接下来把粉丝的具体提问和我的回复分享给大家,希望也能给一些类似情况的小伙伴一些启发和帮助。同学提问:yt老师好,我是双一流软件工程的大二学生,一直在学习java方向,目前掌握了数据库,spring框架等内容,大一暑假在老家一个小公司找了段实习,有蓝桥杯java组b组国一,专业排名前2(保研名</div> </li> <li><a href="/article/1903369935640391680.htm" title="深入解析 Java Stream API:筛选根节点的优雅实现!!!" target="_blank">深入解析 Java Stream API:筛选根节点的优雅实现!!!</a> <span class="text-muted">小丁学Java</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">Lambda表达式</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Stream/1.htm">Stream</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Stream/1.htm">Stream</a><a class="tag" taget="_blank" href="/search/Lambda/1.htm">Lambda</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">表达式</a><a class="tag" taget="_blank" href="/search/Collectors/1.htm">Collectors</a> <div>深入解析JavaStreamAPI:筛选根节点的优雅实现大家好!今天我们来聊聊Java8中一个非常常见的操作:使用StreamAPI从List中筛选出特定条件的元素。具体来说,我们将深入分析以下代码片段:Listroots=inviteCodes.stream().filter(ic->ic.getCreatedBy()==null).collect(Collectors.toList());这段</div> </li> <li><a href="/article/1903369557049929728.htm" title="python if用法" target="_blank">python if用法</a> <span class="text-muted">IT技术土狗</span> <a class="tag" taget="_blank" href="/search/python%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E5%85%A5%E7%8B%B1/1.htm">python从入门到入狱</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>pythonif用法流程控制流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(用到if判断)、循环结构(用到while与for)1、分支结构分支结构就是根据条件判断的真假去执行不同分支对应的子代码2、为什么需要分支结构人类某些时候需要根据条件来决定做什么事情,比如:如果今天下雨,就带伞所以程序中必须有相应的机制来控制计算</div> </li> <li><a href="/article/1903367915642613760.htm" title="python与数值有关的问题" target="_blank">python与数值有关的问题</a> <span class="text-muted">cbxjsdg</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>1.复数的问题x=123+456j#后面没加j部分为实数,加j部分为虚数print('实数部分',x.real)#表示实数print('虚数部分',x.imag)#表示虚数2.查看数值的类型a=10b=10.0c=1.99E2#表示1.99*10的二次方的意思,这是科学计数法print('数值为',a,'数值类型为',type(a))print('数值为',b,'数值类型为',type(b))pr</div> </li> <li><a href="/article/1903367159153750016.htm" title="【架构设计】前置知识" target="_blank">【架构设计】前置知识</a> <span class="text-muted">GIS程序媛—椰子</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a> <div>架构设计是软件开发的进阶技能,需要结合理论知识和实践经验。以下是掌握架构设计所需的前置知识及其重要性,以及学习路径建议:一、基础编程能力1.编程语言与核心概念掌握至少一门主流语言(如Java、Python、C#、Go等),理解其语法、特性及生态。核心概念:面向对象(OOP)、函数式编程(FP)、并发/异步、内存管理等。示例:通过Java理解接口、多态、设计模式。通过Go学习并发模型(Gorouti</div> </li> <li><a href="/article/1903366403541495808.htm" title="Python, C ++开发家庭开支" target="_blank">Python, C ++开发家庭开支</a> <span class="text-muted">Geeker-2025</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>开发一款**家庭开支数字化记录与结算App**是一个非常有意义的项目,旨在帮助家庭用户高效管理开支、记录消费、分析财务状况,并提供结算和预算管理功能。以下是基于**Python**和**C++**的开发方案,结合两者在数据处理、实时通信和系统开发中的优势。---##1.**项目需求分析**家庭开支数字化记录与结算App的核心功能包括:1.**用户管理**:-用户注册、登录,支持家庭成员管理。2.*</div> </li> <li><a href="/article/1903364011118882816.htm" title="带你了解Java无锁并发CAS" target="_blank">带你了解Java无锁并发CAS</a> <span class="text-muted">高锰酸钾_</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91/1.htm">并发</a> <div>带你了解Java无锁并发CAS在多核处理器时代,并发编程已成为提升系统性能的核心手段。传统的同步机制(如synchronized和ReentrantLock)通过互斥锁实现线程安全,但其存在以下关键问题:性能损耗:线程阻塞/唤醒涉及内核态切换,单次操作耗时约1微秒(百万条指令时间)优先级反转:高优先级线程可能被低优先级线程阻塞死锁风险:不正确的锁顺序可能导致系统冻结今天带你了解另一种保证线程安全的</div> </li> <li><a href="/article/1903363633019154432.htm" title="dubbo服务META-INF.dubbo文件夹作用" target="_blank">dubbo服务META-INF.dubbo文件夹作用</a> <span class="text-muted">zhglhy</span> <a class="tag" taget="_blank" href="/search/dubbo/1.htm">dubbo</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a> <div>META-INF.dubbo文件夹是ApacheDubbo框架中的一个重要目录,通常用于存放Dubbo的SPI(ServiceProviderInterface)扩展配置文件。Dubbo是一个高性能的JavaRPC框架,支持分布式服务治理,而SPI机制是Dubbo实现可扩展性的核心设计之一。1.SPI机制简介SPI是Java提供的一种服务发现机制,允许框架在运行时动态加载实现类。Dubbo对其进行</div> </li> <li><a href="/article/1903363506820935680.htm" title="TreeNode底层实现原理" target="_blank">TreeNode底层实现原理</a> <span class="text-muted">zhglhy</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>TreeNode是树结构的基本单元,通常用于表示树形数据结构中的节点。其底层实现原理涉及以下几个方面:1.TreeNode的基本结构在Java中,TreeNode通常是一个类,包含以下核心属性:数据域:存储节点的数据。子节点引用:指向子节点的引用(对于二叉树,通常是左子节点和右子节点)。父节点引用:指向父节点的引用(可选,取决于具体实现)。以下是一个典型的二叉树节点的实现:classTreeNod</div> </li> <li><a href="/article/1903363380404613120.htm" title="Linux骨灰级玩家修炼秘籍!从零基础到精通,收藏这篇就够了!" target="_blank">Linux骨灰级玩家修炼秘籍!从零基础到精通,收藏这篇就够了!</a> <span class="text-muted">程序员肉肉</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>Linux骨灰级玩家修炼秘籍!99.99%的人已跪!Linux运维?想玩转它?那可得经历九九八十一难!咱得把这事儿分成四个阶段:新手村、进阶副本、高手进阶、以及最终的封神之路!之前爆肝半年,搞了篇云计算学习路线,新手直接起飞,从小白到大神!第一阶段:新手村新手村里,你得先把Linux这游戏的基本操作摸透。别急,一步一个脚印,咱得有个路线图。新手上路:Linux的前世今生、基本指令(比如cp、ls、</div> </li> <li><a href="/article/1903360731689054208.htm" title="Java设计模式——装饰模式" target="_blank">Java设计模式——装饰模式</a> <span class="text-muted">爱吃土豆的程序员</span> <a class="tag" taget="_blank" href="/search/Java%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">Java设计模式</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%A3%85%E9%A5%B0%E5%99%A8%E6%A8%A1%E5%BC%8F/1.htm">装饰器模式</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>目录模式动机模式定义模式结构类图代码分析示例:动态添加功能的流组件接口具体组件装饰抽象类具体装饰类客户端模式分析核心思想动态扩展功能组合优于继承优点动态扩展功能组合优于继承代码复用性高符合开闭原则缺点增加系统的复杂性类的膨胀复杂的调试适用环境动态扩展功能避免继承带来的类爆炸性增长高度可定制化的需求模式应用输入输出流GUI组件日志记录模式扩展多层次装饰结合其他设计模式总结模式动机一般有两种方式可以实</div> </li> <li><a href="/article/1903360101062864896.htm" title="linux执行python脚本conda库_Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))..." target="_blank">linux执行python脚本conda库_Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))...</a> <span class="text-muted">weixin_39992462</span> <div>Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))1.首先在PycharmTools->Deployment->Configurations打开新建SFTP输入host:ip地址username密码然后点击TestConnection出现下图,则测试成功因为已经连接成功,这时候已经可以读取远程服务器的目录了:2.选择项目mapping(可以跳过3.在Set</div> </li> <li><a href="/article/1903359345630965760.htm" title="brew mysql client_Mac安装mysqlclient过程解析" target="_blank">brew mysql client_Mac安装mysqlclient过程解析</a> <span class="text-muted">weixin_39630440</span> <a class="tag" taget="_blank" href="/search/brew/1.htm">brew</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/client/1.htm">client</a> <div>尝试在虚拟环境下通过pip安装:pipinstallmysqlclient然后报错:OSError:mysql_confignotfound找到官方文档https://github.com/PyMySQL/mysqlclient-python,解释说安装前需安装另一个模块:brewinstallmysql-connector-c但是报错:查看报错信息,在安装mysql-connector-c前先b</div> </li> <li><a href="/article/1903359345157009408.htm" title="macos安装python-nodejs_MAC平台基于Python Appium环境搭建过程图解" target="_blank">macos安装python-nodejs_MAC平台基于Python Appium环境搭建过程图解</a> <span class="text-muted">weixin_39612038</span> <div>前言最近笔者要为python+appium课程做准备,mac在2019年重新安装了一次系统,这次重新在mac下搭建appium环境,刚好顺带写个文稿给大家分享分享搭建过程。一、环境和所需软件概述1.1目前环境:MacOS(10.15.3)1.2所需软件:jdk-8u91-macosx-x64.dmg(jdk1.8及以上版本应该都可以)android-sdk_r24.4.1-macosx.zip(m</div> </li> <li><a href="/article/1903357455702749184.htm" title="python接口自动化" target="_blank">python接口自动化</a> <span class="text-muted">全世界最帅的男人</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Python是一种非常流行的编程语言,也是许多接口自动化测试框架的首选语言。下面是一个简单的接口自动化测试框架的思路:1.安装必要的库和工具:在Python中,我们可以使用requests库来发送HTTP请求,使用unittest库来编写测试用例,使用HTMLTestRunner库来生成测试报告。此外,我们还需要安装一个代码编辑器,如PyCharm或VSCode。2.创建测试用例:编写测试用例是接</div> </li> <li><a href="/article/1903355944075587584.htm" title="Python接口自动化" target="_blank">Python接口自动化</a> <span class="text-muted">花落同学</span> <a class="tag" taget="_blank" href="/search/Python%E8%87%AA%E5%8A%A8%E5%8C%96%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E6%94%BE%E5%BC%83/1.htm">Python自动化从入门到放弃</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a> <div>4接口自动化4.1使用python实现接口自动化如果不了解接口测试可参考https://ke.qq.com/course/4092904使用Python的request库实现接口测试:importjsonimportrequests#使用session管理:#1.可以自动关联set-cookie里面的内容#2.可以加快与服务器的连接速度session=requests.session()#auth</div> </li> <li><a href="/article/1903353172743745536.htm" title="Python异步编程:从基础到高级" target="_blank">Python异步编程:从基础到高级</a> <span class="text-muted">CarlowZJ</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>前言在现代软件开发中,异步编程已经成为一种必不可少的技能。Python的异步编程模型(基于asyncio)为开发者提供了一种高效的方式来处理高并发任务,而无需依赖多线程或多进程。异步编程不仅可以提高程序的性能,还能简化并发代码的复杂性。本文将带你从异步编程的基础概念出发,逐步深入到高级应用,帮助你掌握Python异步编程的核心技能。一、异步编程的基础概念1.1什么是异步编程?异步编程是一种编程范式</div> </li> <li><a href="/article/1903350904480919552.htm" title="使用Java爬虫按关键字搜索1688商品" target="_blank">使用Java爬虫按关键字搜索1688商品</a> <span class="text-muted">小爬虫程序猿</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在电商领域,获取1688商品信息对于市场分析、选品上架、库存管理和价格策略制定等方面至关重要。1688作为国内领先的B2B电商平台,提供了丰富的商品数据。虽然1688开放平台提供了官方API来获取商品信息,但有时使用爬虫技术来抓取数据也是一种有效的手段。本文将介绍如何利用Java按关键字搜索1688商品,并提供详细的代码示例。一、准备工作1.Java开发环境确保你的Java开发环境已经安装了以下必</div> </li> <li><a href="/article/1903350399599964160.htm" title="基于Linux的多进程并发服务器设计与实现" target="_blank">基于Linux的多进程并发服务器设计与实现</a> <span class="text-muted">名誉寒冰</span> <a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>基于Linux的多进程并发服务器设计与实现简介本项目实现了一个基于Linux的多进程并发服务器框架,采用进程池技术提高服务器并发处理能力,主要用于文件传输服务。该框架利用了Unix域套接字、管道通信、文件描述符传递和epoll机制等技术,实现了高效的任务分发和并发处理。系统架构该服务器采用主-从进程模型(Master-Worker模式):主进程(Master进程):负责监听客户端连接请求,并将连接</div> </li> <li><a href="/article/1903350273221390336.htm" title="[从零开始学习JAVA] Stream流" target="_blank">[从零开始学习JAVA] Stream流</a> <span class="text-muted">Cools0613</span> <a class="tag" taget="_blank" href="/search/%E4%BB%8E0%E5%BC%80%E5%A7%8B%E5%AD%A6Java/1.htm">从0开始学Java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>前言:本文我们将学习Stream流,他就像流水线一样,可以对我们要处理的对象进行逐步处理,最终达到我们想要的效果,是JAVA中的一大好帮手,值得我们了解和掌握。(通常和lambda匿名内部类方法引用相配合)Stram流:Stream流的核心思想是函数式编程(注意返回值必须是对象本身才能),它倡导将数据处理过程看作是一系列的转换操作。这种思想与传统的命令式编程方式不同,传统的命令式编程方式强调对数据</div> </li> <li><a href="/article/1903350146909925376.htm" title="python实现接口自动化" target="_blank">python实现接口自动化</a> <span class="text-muted">一只小H呀の</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>代码实现自动化相关理论代码编写脚本和工具实现脚本区别是啥?代码:优点:代码灵活方便缺点:学习成本高工具:优点:易上手缺点:灵活度低,有局限性。总结:功能脚本:工具自动化脚本:代码代码接口自动化怎么做的?第一步:python+request+unittest;具体描述?第二步:封装、调用、数据驱动、日志、报告;详细举例:第三步:api\scripts\data\log\report\until…脚本</div> </li> <li><a href="/article/1903346865622020096.htm" title="chokidar - chokidar 初识(初识案例演示、初识案例解读、初识案例测试)" target="_blank">chokidar - chokidar 初识(初识案例演示、初识案例解读、初识案例测试)</a> <span class="text-muted">我命由我12345</span> <a class="tag" taget="_blank" href="/search/Node.js/1.htm">Node.js</a><a class="tag" taget="_blank" href="/search/%E7%AE%80%E5%8C%96%E5%BA%93%E7%BC%96%E7%A8%8B/1.htm">简化库编程</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>一、chokidar1、chokidar概述chokidar是一个用于监视文件系统变化的Node.js库chokidar提供了一种简单、高效的方式来监视文件和目录的创建、修改、删除等操作chokidar是是fs.watch和fs.watchFile方法的增强版,解决了它们在一些平台上的不一致性和局限性2、chokidar的特点跨平台的支持:chokidar在Windows、Linux、macOS上</div> </li> <li><a href="/article/1903346737414729728.htm" title="探索Python中的集成方法:Stacking" target="_blank">探索Python中的集成方法:Stacking</a> <span class="text-muted">Echo_Wish</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在机器学习领域,Stacking是一种高级的集成学习方法,它通过将多个基本模型的预测结果作为新的特征输入到一个元模型中,从而提高整体模型的性能和鲁棒性。本文将深入介绍Stacking的原理、实现方式以及如何在Python中应用。什么是Stacking?Stacking,又称为堆叠泛化(StackedGeneralization),是一种模型集成方法,与Bagging和Boosting不同,它并不直</div> </li> <li><a href="/article/104.htm" title="springmvc 下 freemarker页面枚举的遍历输出" target="_blank">springmvc 下 freemarker页面枚举的遍历输出</a> <span class="text-muted">杨白白</span> <a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/freemarker/1.htm">freemarker</a> <div>spring mvc freemarker 中遍历枚举 1枚举类型有一个本地方法叫values(),这个方法可以直接返回枚举数组。所以可以利用这个遍历。 enum public enum BooleanEnum { TRUE(Boolean.TRUE, "是"), FALSE(Boolean.FALSE, "否"); </div> </li> <li><a href="/article/231.htm" title="实习简要总结" target="_blank">实习简要总结</a> <span class="text-muted">byalias</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>来白虹不知不觉中已经一个多月了,因为项目还在需求分析及项目架构阶段,自己在这段 时间都是在学习相关技术知识,现在对这段时间的工作及学习情况做一个总结: (1)工作技能方面 大体分为两个阶段,Java Web 基础阶段和Java EE阶段 1)Java Web阶段 在这个阶段,自己主要着重学习了 JSP, Servlet, JDBC, MySQL,这些知识的核心点都过 了一遍,也</div> </li> <li><a href="/article/358.htm" title="Quartz——DateIntervalTrigger触发器" target="_blank">Quartz——DateIntervalTrigger触发器</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/quartz/1.htm">quartz</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2208559 一.概述 simpleTrigger 内部实现机制是通过计算间隔时间来计算下次的执行时间,这就导致他有不适合调度的定时任务。例如我们想每天的 1:00AM 执行任务,如果使用 SimpleTrigger,间隔时间就是一天。注意这里就会有一个问题,即当有 misfired 的任务并且恢复执行时,该执行时间</div> </li> <li><a href="/article/485.htm" title="Unix快捷键" target="_blank">Unix快捷键</a> <span class="text-muted">18289753290</span> <a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a><a class="tag" taget="_blank" href="/search/Unix%EF%BC%9B%E5%BF%AB%E6%8D%B7%E9%94%AE%3B/1.htm">Unix;快捷键;</a> <div>复制,删除,粘贴: dd:删除光标所在的行                             &nbs</div> </li> <li><a href="/article/612.htm" title="获取Android设备屏幕的相关参数" target="_blank">获取Android设备屏幕的相关参数</a> <span class="text-muted">酷的飞上天空</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>包含屏幕的分辨率  以及 屏幕宽度的最大dp 高度最大dp   TextView text = (TextView)findViewById(R.id.text); DisplayMetrics dm = new DisplayMetrics(); text.append("getResources().ge</div> </li> <li><a href="/article/739.htm" title="要做物联网?先保护好你的数据" target="_blank">要做物联网?先保护好你的数据</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE/1.htm">数据</a> <div>根据Beecham Research的说法,那些在行业中希望利用物联网的关键领域需要提供更好的安全性。 在Beecham的物联网安全威胁图谱上,展示了那些可能产生内外部攻击并且需要通过快速发展的物联网行业加以解决的关键领域。 Beecham Research的技术主管Jon Howes说:“之所以我们目前还没有看到与物联网相关的严重安全事件,是因为目前还没有在大型客户和企业应用中进行部署,也就</div> </li> <li><a href="/article/866.htm" title="Java取模(求余)运算" target="_blank">Java取模(求余)运算</a> <span class="text-muted">随便小屋</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>        整数之间的取模求余运算很好求,但几乎没有遇到过对负数进行取模求余,直接看下面代码: /** * * @author Logic * */ public class Test { public static void main(String[] args) { // TODO A</div> </li> <li><a href="/article/993.htm" title="SQL注入介绍" target="_blank">SQL注入介绍</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/sql%E6%B3%A8%E5%85%A5/1.htm">sql注入</a> <div>二、SQL注入范例 这里我们根据用户登录页面 <form action="" > 用户名:<input type="text" name="username"><br/> 密 码:<input type="password" name="passwor</div> </li> <li><a href="/article/1120.htm" title="优雅代码风格" target="_blank">优雅代码风格</a> <span class="text-muted">aoyouzi</span> <a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81/1.htm">代码</a> <div>总结了几点关于优雅代码风格的描述: 代码简单:不隐藏设计者的意图,抽象干净利落,控制语句直截了当。 接口清晰:类型接口表现力直白,字面表达含义,API 相互呼应以增强可测试性。 依赖项少:依赖关系越少越好,依赖少证明内聚程度高,低耦合利于自动测试,便于重构。 没有重复:重复代码意味着某些概念或想法没有在代码中良好的体现,及时重构消除重复。 战术分层:代码分层清晰,隔离明确,</div> </li> <li><a href="/article/1247.htm" title="布尔数组" target="_blank">布尔数组</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%B8%83%E5%B0%94%E6%95%B0%E7%BB%84/1.htm">布尔数组</a> <div>  androi中提到了布尔数组;   布尔数组默认的是false,  并且只会打印false或者是true   布尔数组的例子;  根据字符数组创建布尔数组 char[] c = {'p','u','b','l','i','c'}; //根据字符数组的长度创建布尔数组的个数 boolean[] b = new bool</div> </li> <li><a href="/article/1374.htm" title="web.xml之welcome-file-list、error-page" target="_blank">web.xml之welcome-file-list、error-page</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/error-page/1.htm">error-page</a> <div>welcome-file-list 1.定义: <welcome-file-list> <welcome-file>login.jsp</welcome> </welcome-file-list>  2.作用:用来指定WEB应用首页名称。   error-page1.定义: <error-page&g</div> </li> <li><a href="/article/1501.htm" title="richfaces 4 fileUpload组件删除上传的文件" target="_blank">richfaces 4 fileUpload组件删除上传的文件</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/clear/1.htm">clear</a><a class="tag" taget="_blank" href="/search/Richfaces+4/1.htm">Richfaces 4</a><a class="tag" taget="_blank" href="/search/fileupload/1.htm">fileupload</a> <div> 页面代码               <h:form id="fileForm">            <rich:</div> </li> <li><a href="/article/1628.htm" title="技术文章备忘" target="_blank">技术文章备忘</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E6%96%87%E7%AB%A0/1.htm">技术文章</a> <div>Zookeeper http://wenku.baidu.com/view/bab171ffaef8941ea76e05b8.html http://wenku.baidu.com/link?url=8thAIwFTnPh2KL2b0p1V7XSgmF9ZEFgw4V_MkIpA9j8BX2rDQMPgK5l3wcs9oBTxeekOnm5P3BK8c6K2DWynq9nfUCkRlTt9uV</div> </li> <li><a href="/article/1755.htm" title="org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1解决方案" target="_blank">org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1解决方案</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>文章摘自:http://blog.csdn.net/yangwawa19870921/article/details/7553181   在编写HQL时,可能会出现这种代码: select a.name,b.age from TableA a left join TableB b on a.id=b.id  如果这是HQL,那么这段代码就是错误的,因为HQL不支持</div> </li> <li><a href="/article/1882.htm" title="sqlserver按照字段内容进行排序" target="_blank">sqlserver按照字段内容进行排序</a> <span class="text-muted">bozch</span> <a class="tag" taget="_blank" href="/search/%E6%8C%89%E7%85%A7%E5%86%85%E5%AE%B9%E6%8E%92%E5%BA%8F/1.htm">按照内容排序</a> <div>在做项目的时候,遇到了这样的一个需求:           从数据库中取出的数据集,首先要将某个数据或者多个数据按照地段内容放到前面显示,例如:从学生表中取出姓李的放到数据集的前面;          select * fro</div> </li> <li><a href="/article/2009.htm" title="编程珠玑-第一章-位图排序" target="_blank">编程珠玑-第一章-位图排序</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E7%8F%A0%E7%8E%91/1.htm">编程珠玑</a> <div> import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.Random; public class BitMapSearch { </div> </li> <li><a href="/article/2136.htm" title="Java关于==和equals" target="_blank">Java关于==和equals</a> <span class="text-muted">chenbowen00</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>关于==和equals概念其实很简单,一个是比较内存地址是否相同,一个比较的是值内容是否相同。虽然理解上不难,但是有时存在一些理解误区,如下情况: 1、 String a = "aaa"; a=="aaa"; ==> true 2、 new String("aaa")==new String("aaa</div> </li> <li><a href="/article/2263.htm" title="[IT与资本]软件行业需对外界投资热情保持警惕" target="_blank">[IT与资本]软件行业需对外界投资热情保持警惕</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/it/1.htm">it</a> <div>       我还是那个看法,软件行业需要增强内生动力,尽量依靠自有资金和营业收入来进行经营,避免在资本市场上经受各种不同类型的风险,为企业自主研发核心技术和产品提供稳定,温和的外部环境...       如果我们在自己尚未掌握核心技术之前,企图依靠上市来筹集资金,然后使劲往某个领域砸钱,然</div> </li> <li><a href="/article/2390.htm" title="oracle 数据块结构" target="_blank">oracle 数据块结构</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%9D%97/1.htm">块</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%9D%97/1.htm">数据块</a><a class="tag" taget="_blank" href="/search/%E5%9D%97%E7%BB%93%E6%9E%84/1.htm">块结构</a><a class="tag" taget="_blank" href="/search/%E8%A1%8C%E7%9B%AE%E5%BD%95/1.htm">行目录</a> <div>oracle 数据块是数据库存储的最小单位,一般为操作系统块的N倍。其结构为: 块头--〉空行--〉数据,其实际为纵行结构。 块的标准大小由初始化参数DB_BLOCK_SIZE指定。具有标准大小的块称为标准块(Standard Block)。块的大小和标准块的大小不同的块叫非标准块(Nonstandard Block)。同一数据库中,Oracle9i及以上版本支持同一数据库中同时使用标</div> </li> <li><a href="/article/2517.htm" title="github上一些觉得对自己工作有用的项目收集" target="_blank">github上一些觉得对自己工作有用的项目收集</a> <span class="text-muted">dengkane</span> <a class="tag" taget="_blank" href="/search/github/1.htm">github</a> <div>github上一些觉得对自己工作有用的项目收集 技能类 markdown语法中文说明 回到顶部 全文检索 elasticsearch bigdesk elasticsearch管理插件 回到顶部 nosql mapdb 支持亿级别map, list, 支持事务. 可考虑做为缓存使用 C</div> </li> <li><a href="/article/2644.htm" title="初二上学期难记单词二" target="_blank">初二上学期难记单词二</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>dangerous 危险的 panda 熊猫 lion 狮子 elephant 象 monkey 猴子 tiger 老虎 deer 鹿 snake 蛇 rabbit 兔子 duck 鸭 horse 马 forest 森林 fall 跌倒;落下 climb 爬;攀登 finish 完成;结束 cinema 电影院;电影 seafood 海鲜;海产食品 bank 银行</div> </li> <li><a href="/article/2771.htm" title="8、mysql外键(FOREIGN KEY)的简单使用" target="_blank">8、mysql外键(FOREIGN KEY)的简单使用</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>一、基本概念 1、MySQL中“键”和“索引”的定义相同,所以外键和主键一样也是索引的一种。不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确的索引。用于外键关系的字段必须在所有的参照表中进行明确地索引,InnoDB不能自动地创建索引。 2、外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接。 3、如</div> </li> <li><a href="/article/2898.htm" title="java循环标签 Foreach" target="_blank">java循环标签 Foreach</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%AD%BE/1.htm">标签</a><a class="tag" taget="_blank" href="/search/java%E5%BE%AA%E7%8E%AF/1.htm">java循环</a><a class="tag" taget="_blank" href="/search/foreach/1.htm">foreach</a> <div>1. 简单的for循环 public static void main(String[] args) { for (int i = 1, y = i + 10; i < 5 && y < 12; i++, y = i * 2) { System.err.println("i=" + i + " y=" </div> </li> <li><a href="/article/3025.htm" title="Spring Security(05)——异常信息本地化" target="_blank">Spring Security(05)——异常信息本地化</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a><a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E5%B8%B8%E4%BF%A1%E6%81%AF/1.htm">异常信息</a><a class="tag" taget="_blank" href="/search/%E6%9C%AC%E5%9C%B0%E5%8C%96/1.htm">本地化</a> <div>异常信息本地化          Spring Security支持将展现给终端用户看的异常信息本地化,这些信息包括认证失败、访问被拒绝等。而对于展现给开发者看的异常信息和日志信息(如配置错误)则是不能够进行本地化的,它们是以英文硬编码在Spring Security的代码中的。在Spring-Security-core-x</div> </li> <li><a href="/article/3152.htm" title="DUBBO架构服务端告警Failed to send message Response" target="_blank">DUBBO架构服务端告警Failed to send message Response</a> <span class="text-muted">javamingtingzhao</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/DUBBO/1.htm">DUBBO</a> <div> 废话不多说,警告日志如下,不知道有哪位遇到过,此异常在服务端抛出(服务器启动第一次运行会有这个警告),后续运行没问题,找了好久真心不知道哪里错了。    WARN 2015-07-18 22:31:15,272 com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(84)</div> </li> <li><a href="/article/3279.htm" title="JS中Date对象中几个用法" target="_blank">JS中Date对象中几个用法</a> <span class="text-muted">leeqq</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/Date/1.htm">Date</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%90%8E%E4%B8%80%E5%A4%A9/1.htm">最后一天</a> <div>近来工作中遇到这样的两个需求 1. 给个Date对象,找出该时间所在月的第一天和最后一天 2. 给个Date对象,找出该时间所在周的第一天和最后一天   需求1中的找月第一天很简单,我记得api中有setDate方法可以使用 使用setDate方法前,先看看getDate var date = new Date(); console.log(date); // Sat J</div> </li> <li><a href="/article/3406.htm" title="MFC中使用ado技术操作数据库" target="_blank">MFC中使用ado技术操作数据库</a> <span class="text-muted">你不认识的休道人</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mfc/1.htm">mfc</a> <div>1.在stdafx.h中导入ado动态链接库 #import"C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","end")2.在CTestApp文件的InitInstance()函数中domodal之前写::CoIniti</div> </li> <li><a href="/article/3533.htm" title="Android Studio加速" target="_blank">Android Studio加速</a> <span class="text-muted">rensanning</span> <a class="tag" taget="_blank" href="/search/android+studio/1.htm">android studio</a> <div>Android Studio慢、吃内存!启动时后会立即通过Gradle来sync & build工程。 (1)设置Android Studio a) 禁用插件 File -> Settings...  Plugins 去掉一些没有用的插件。 比如:Git Integration、GitHub、Google Cloud Testing、Google Cloud</div> </li> <li><a href="/article/3660.htm" title="各数据库的批量Update操作" target="_blank">各数据库的批量Update操作</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/sqlite/1.htm">sqlite</a> <div>MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了。本篇仅记录批量update操作的 sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了。   注意:下列批量更新语句都是作为一个事务整体执行,要不全部成功,要不全部回滚。 MSSQL的SQL语句  WITH R AS(   SELECT 'John' as name, 18 as</div> </li> <li><a href="/article/3787.htm" title="html禁止清除input文本输入缓存" target="_blank">html禁止清除input文本输入缓存</a> <span class="text-muted">xp9802</span> <a class="tag" taget="_blank" href="/search/input/1.htm">input</a> <div>多数浏览器默认会缓存input的值,只有使用ctl+F5强制刷新的才可以清除缓存记录。如果不想让浏览器缓存input的值,有2种方法: 方法一: 在不想使用缓存的input中添加 autocomplete="off"; eg: <input type="text" autocomplete="off" name</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>