热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安全测试基本知识入门

1引言1.1为什么要学习安全测试以及什么是安全测试为了安全、有效的进行权限控制、不能随意提交数据进行修改、避免跨站式脚本的攻击。安全测试:提供证据表明,在面对敌意和恶意的时候,应用

 


1引言


1.1为什么要学习安全测试以及什么是安全测试

 为什么要学习安全测试:

  为了安全、有效的进行权限控制、不能随意提交数据进行修改、避免跨站式脚本的攻击。我们偶尔会听到这么一些报道,说某个网站的首页被篡改,敏感数据被泄露或者是重要信息被更改。其实这些问题就是因为黑客利用了系统安全漏洞,对系统进行攻击导致而成,从而导致损失的代价也是不言而喻的。因此安全测试也成为了系统质量保证中必不可少的一部分,那么安全测试具体有什么好处呢?





    • 提升产品的安全质量

    • 尽量在发布前找到安全问题予以修补降低成本

    • 度量安全等级(因为我们知道其实安全测试和找bug一样,我们不可能把系统所有的安全问题都能找到并解决,通过安全测试,我们可以大体的估计系统的安全等级)

    • 验证安装在系统内的保护机制能否在实际应用中对系统进行保护,使之不被非法入侵,不受各种因素的干扰。



 什么是安全测试:  

  提供证据表明,在面对敌意和恶意的时候,应用仍能充分满足它的需求。安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品是否符合安全需求定义和产品质量标准的过程。也就是说安全测试是建立在功能测试的基础上进行的测试。简要的说安全测试主要发现包含如下的问题:





    • 信息泄露、破坏信息的完整性

    • 拒绝服务(合法用户不能够正常访问网络服务)

    • 非法使用(非授权访问)、窃听

    • 业务数据流分析

    • 假冒、旁路控制

    • 授权侵犯(内部攻击即局域网攻击)

    • 计算机病毒、恶意软件

    • 信息安全法律法规不完善




1.2什么是web应用及web应用简介

  Web应用:一切使用HTTP进行通信的软件。

  Web应用程序是一种可以通过Web访问的应用程序,最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。

  应用程序主要有两种网络结构模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式

技术分享图片

  客户端使用浏览器(IE、FireFox等),通过网络(Network)连接到WEB服务器上,使用HTTP协议发起请求(Request),现在的所有请求都先经过一个WEB Server Plugin(服务器插件)来处理,此插件用于区分是请求的是静态资源(.htm或者是.htm)还是动态资源

  如果WEB Server Plugin发现客户端请求的是静态资源(.htm或者是.html),则将请求直接转交给WEB服务器,之后WEB服务器从文件系统中取出内容,发送回客户端浏览器进行解析执行。

  如果WEB Server Plugin发现客户端请求的是动态资源(.jsp、.asp/.aspx、.php),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。


1.3 安全测试与常规测试的区别



































序号


对比项


常规测试


安全测试


1


目标差异


常规测试以发现Bug为目标


安全测试以发现安全隐患为目标


2


假设条件差异


常规测试假设导致问题的数据是用户不小心造成的,接口一般只考虑用户界面


安全测试假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径


3


思考域差异


常规测试以系统所具有的功能为思考域


安全测试的思考域不但包括系统的功能,还有系统的机制、外部环境、应用与数据自身安全风险与安全


4


问题发现模式差异


常规测试以违反功能定义为判断依据


安全测试以违反权限与能力的约束为判断依据



1.4 安全测试与渗透测试的区别

  安全测试不同于渗透测试,渗透测试侧重于几个点的穿透攻击,而安全测试是侧重于对安全威胁的建模,系统的对来自各个方面,各个层面威胁的全面考量。安全测试可以告诉您,您的系统可能会来自哪个方面的威胁,正在遭受哪些威胁,以及您的系统已经可抵御什么样的威胁。当然,安全测试涵盖渗透测试的部分内容。具体可参考如下:









































序号


对比项


渗透测试


安全测试


1


出发点差异


渗透测试是以成功入侵系统,证明系统存在安全问题为出发点


安全测试则是以发现系统所有可能的安全隐患为出发点


2


视角差异


渗透测试是以攻击者的角度来看待和思考问题


安全测试则是站在防护者角度思考问题,尽量发现所有可能被攻击者利用的安全隐患,并指导其进行修复


3


覆盖性差异


渗透测试只选取几个点作为测试的目标


安全测试是在分析系统架构并找出系统所有可能的攻击界面后进行的具有完备性的测试


4


成本差异


渗透测试需要投入的时间和人力相对较少


安全测试需要对系统的功能、系统所采用的技术以及系统的架构等进行分析,需要投入更多的时间和人力


5


解决方案差异


渗透测试无法提供有针对性的解决方案,所以难以解决系统自身实质性的安全问题,所以提供渗透测试的厂商一般都是自己买什么防护设备,以自己防护设备针对的威胁为主要渗透点,找到你有类似的问题,解决方案就以卖对应的防护设备作为手段,针对具体的威胁,通过防护设备 采取被动的防护


安全测试会站在开发者的角度分析问题的成因,提供更有效的解决方案


在另外一篇博客中看到,渗透测试和安全测试的区别如果用图片来形容,很容易理解,如下:

渗透测试-安全测试区别:

技术分享图片

渗透测试着重点在攻击,渗透测试的目的是攻破软件系统,以证明软件系统存在问题。

安全测试的着重点在防御,对整个系统的防御的功能进行一个系统的考虑。

技术分享图片

渗透测试的目的是攻破系统,所以只要选择一些薄弱的环节,选择一些点来攻击系统,达到攻破系统的目的就可以了。

安全测试必须从整个的防御面上来考虑系统的安全性。


1.5 安全测试的类型

















































































类型


简单描述


失效的身份验证机制


只对首次传递的COOKIE加以验证,程序没有持续对COOKIE中内含信息验证比对,攻击者可以修改COOKIE中的重要信息以提升权限进行网站数据存取或是冒用他人账号取得个人私密资料(测试对象:可以进行传参的URL,提交请求页面,登录后的COOKIE)


会话管理劫持


检测Web应用程序会话机制是否存在安全隐患,能否被非法利用(会话劫持,伪装成合法用户)而影响Web应用程序的安全。


SQL注入


注入攻击漏洞,这些攻击发生在当不可信的SQL语句作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。


XPath注入


XPath注入攻击是指利用XPath 解析器的松散输入和容错特性,能够在URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知识的情况下,通过XPath查询得到一个XML文档的完整内容。


XSS跨站脚本攻击


恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。


CSRF跨站请求伪造


攻击者通过调用第三方网站的恶意脚本来伪造请求,在用户不知情的情况下,攻击者强行递交构造的具有“操作行为”的数据包。(测试对象:网页中可进行输入的表单)


不安全的直接对象引用


在具有导出/下载功能的页面参数中修改内容,WEB服务器便会导出/下载程序源代码或者指定文件(测试对象:URL中有用户参数的地址,可以进行下载操作的地址)或者当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙, 就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控这些引用去访问未授权数据


安全配置错误


Config中的链接字符串以及用户信息,邮件,数据存储信息等都需要加以保护,如果没有进行保护,那么就是安全配置出现了问题。


不安全的加密存储


未对需要保护的数据进行加密或者加密算法太弱都是不安全的加密存储


没有限制URL访问


系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击者能够很容易的就伪造请求直接访问未被授权的页面(测试对象:需要身份验证的页面)


传输层保护不足


在身份验证过程中没有使用SSL/TLS,因此暴露传输数据和会话ID,被攻击者截听。它们有时还会使用过期或者配置不正确的证书。(测试对象:登录模块)


未验证的重定向(redirectUrl)和转发


攻击者可以引导用户访问他们所要用户访问的站点。而最终造成的后果,重定向会使得用户访问钓鱼网站或是恶意网站。


敏感信息泄露


许多Web应用程序没有正确保护敏感数据,如信用卡、税务ID和身份验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡诈骗、身份窃取或其他犯罪。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。


功能级访问控制缺失


大多数Web应用程序的功能在UI页面显示之前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。


使用含有已知漏洞的组件


组件,比如:库文件、框架和其他软件模块,几乎总是以全部的权限运行。如果使用含有已知漏洞的组件,这种攻击可以造成更为严重的数据丢失或服务器接管。应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,并使一系列可能的攻击和影响成为可能。危害比较严重


缓冲区溢出


当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。


LDAP注入


利用LDAP注入技术的关键在于控制用于目录搜索服务的过滤器。使用这些技术,攻击者可能直接访问LDAP目录树下的数据库,及重要的公司信息。情况还可能比这更严重,因为许多应用的安全性依赖于基于LDAP目录的单点登录环境。


篡改输入


利用一些命令或者工具等篡改一些字段的值,从而达到恶意的效果。例如,篡改商品的单价和数量等。




2渗透测试


2.1 内容简介

 技术分享图片

渗透测试必要性:利用网络安全扫描器、专用安全测试工具以及人工经验对网络中的核心服务器及重要的网络设备,包括模拟黑客对服务器、网络设备、防火墙等设备进行非破坏性质的渗透。

目的是侵入系统并获取机密信息并将入侵的过程和细节产生报告给用户。


2.2 环境安装


2.2.1下载Kali Linux

Kali是由Offensive Security团队设计的一款渗透测试操作系统。它是继承BackTrack Linux发行版,预装了Debian Linux的工具。

打开官网,选择对应虚拟机下的镜像文件进行下载,如图:

 技术分享图片

下载地址如下:

https://www.offensive-security.com/kali-linux-vm-vmware-virtualbox-hyperv-image-download/


2.2.2 kali Linux与Backtrack区别

Kali Linux就是Backtrack的升级版。Kali默认账号:root 密码:toor(账号反过来写)


2.2.3 安装kali Linux && 全屏显示kali Linux

 技术分享图片

更多基本命令,如下链接:

http://blog.csdn.net/u010953692/article/details/54604325

技术分享图片

在官网下载的kali linux OVA一键安装包,放到指定路径,然后打开VM VirtualBox,选择管理->导入虚拟电脑,选择指定路径下的OVA安装包,进行默认安装,如图:

 技术分享图片

安装地址如下:

https://jingyan.baidu.com/article/454316ab70941bf7a7c03adb.html

PS:在安装完全后,点击开启,系统会报错,需要进行USB设备禁用掉,再次开启就可以正常进入系统了

 技术分享图片


2.2.4 比较好用的软件平台

乌云网:http://www.anquan.us/

漏洞盒子:https://www.vulbox.com/

360网站安全检测:http://webscan.360.cn/

其他:appsans、axws


2.3 渗透测试步骤

渗透测试步骤主要分4个:侦察->扫描->漏洞利用->维持访问

 技术分享图片技术分享图片


2.4 渗透测试类型


2.4.1 白盒测试

白盒测试也称为白帽测试,是指渗透测试者在拥有客户组织所有知识的情况下进行测试。


2.4.2 黑盒测试

黑盒测试,是指模拟一个对客户组织一无所知的攻击者所进行的渗透测试。


2.5 渗透测试实战流程图

如下为xxx公司安全测试工程师做的流程图如下:

信息的收集和分析伴随着每一个渗透测试步骤,每一个步骤有三个组成部分:操作、响应、结果分析。

 技术分享图片


3侦察


3.1内容简介

侦察即信息收集,典型的侦察策略包含主动侦察和被动侦察。

主动侦察:与目标系统的直接交互,但在这个过程中,目标系统可能会记录下我们的IP地址及活动。

被动侦察:则利用从网上获取的海量信息。


3.2侦察工具


3.2.1网址复制机:HTTrack

HTTrack是一款工具,将整个网站逐页复制下来,能够创建与目标网站完全相同的脱机副本。复制的内容包含原始网站所有的网页、链接、图片和代码。

windows下安装:http://www.httrack.com

Kali linux下安装:apt-get install webhttrack(或sudo apt-get install webhttrack)

如图:

http://kali:8080/server/index.html

 技术分享图片


3.2.2 The Harvester:挖掘并利用邮箱地址

The Harvester是一款用于侦察的优秀工具。

用于搜索对应网站的电子邮箱、子域名、主机。theharvester用于调用这个工具,-d用来指定目标的域名,-l用来限定返回的搜索结果的数目,-b用来指定将要搜索的公共知识库,可以选择Google、Bing、PGP、LinkedIn

命令如下:theharvester -d syngress.com -l 10 -b google

 技术分享图片


3.2.3 Whois

收集与目标相关的额外信息。Whois服务,用来查询域名的IP以及所有者等信息的传输协议。可以获取与目标相关的具体信息,包括IP地址或公司DNS主机名以及地址和电话号码等联系信息。

命令:whois syngress.com

 技术分享图片

网页版:

https://shop.whois.com/domain-registration/index.php

 技术分享图片

 技术分享图片


3.2.4 Netcraft

输入域名,进行输入,它将能模糊查询所有的相关网站。点击查看site report,可以查看目标网站的IP地址、web服务器的操作系统及DNS服务器。

 技术分享图片

 技术分享图片 


3.2.5 host工具

Host工具指将IP地址翻译成主机名。Kali linux内置了该工具,通过命令去执行即可。

命令中使用:host baidu.com或host IP,如图:

  技术分享图片

 技术分享图片

Man host:是host的帮助指令

技术分享图片


 3.2.6 从DNS中提取信息:NS Lookup、Dig

Nslookup 常用命令:http://www.t086.com/article/5138

使用host、nslookup确定目标公司(syngress.com)的电子邮件服务器

 技术分享图片

其次还有其他方法,比如google指令、从电子邮箱中提取信息、MetaGooFil、社会工程学、筛选信息以寻找可攻击的目标。

侦察的结果就是:整理出一个简易的列表,用来集中记录收集到的IP地址。


4扫描


4.1内容简介

扫描分阶段进行:系统是否正在运行->扫描系统的端口->扫描系统中的漏洞


4.2 ping扫描

Ping扫描是一种特定类型的网络数据包,称为ICMP数据包。

Ping用于给计算机或网络设备上的某些特殊接口发送特定类型的网络流量,这种特定类型的网络流量叫做ICMP回显请求数据包(ICMP Echo Request packet).

 技术分享图片

 

比如字节=32表示发送的数据包的大小;

时间=38ms表示告诉我们数据包到目标往返一趟花费的时间;

TTL=55表示是个生存时间值,它用来限定数据包自动终止前可以经历的最大跳数。

在Linux中,执行ping扫描最简单的方法就是使用FPing。

命令:fping -a -g 172.16.45.1 172.16.45.254>host.txt

-a表示在输出中只显示活动主机;

-g表示用于指定我们想要扫描的IP范围,开始IP和结束IP。

>重定向地址,且重定向到指定地址host.txt

 技术分享图片 


4.3 端口扫描

端口扫描的目的是为了识别在我们的目标系统上哪些目标端口是开启的,以及哪些端口是启用的。使用Nmap进行端口扫描。

Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。

最简单的端口扫描,命令:nmap 127.0.0.1(针对本机进行扫描),如图:

 技术分享图片

 


4.3.1 使用Nmap进行TCP连接扫描

域名:scanme.nmap.org

命令:nmap -sT -p- -PN 14.104.82.184

-sT表示:nmap目前连接的是TCP连接扫描。

-s表示:nmap要运行哪种类型的扫描。

-T用来执行一个TCP连接类型扫描。

-p-表示nmap要扫描所有的端口,而不只是默认的1000个端口。

-PN表示跳过主机发现阶段,对所有地址进行扫描。如图:

 技术分享图片

 

对一个IP范围进行扫描:nmap -sT -p- -PN 14.104.82.184-254

对不连续的IP进行文件创建:nmap -sT -p- -iL IpAdressPath


4.3.2 使用Nmap进行SYN扫描

命令:nmap -sS -p- -PN 172.16.45.135

-sS:表示nmap运行的是SYN扫描而不是TCP连接扫描。


4.3.3 使用Nmap进行UDP扫描

命令:nmap -sUV 172.16.45.135

-V表示:添加版本扫描信息


4.3.4 使用Nmap进行Xmas扫描

命令:nmap -sX -p- -PN 172.16.45.135


4.3.5 使用Nmap进行Null扫描

命令:nmap -sN -p- -PN 172.16.45.135 


4.4 漏洞扫描

Nessus工具


5漏洞利用

5.1内容简介

漏洞利用:获得系统控制权限的过程。


5.2 密码破解:John the Ripper

密码破解分2个步骤:



  1. 定位并下载目标系统的密码散列文件

  2. 利用工具将散列(加密过)的密码转化为明文密码


 技术分享图片 技术分享图片

 

基本概念:

在Linux上,用户名/密钥方面的详细信息存储在下面这两个文件中:

/etc/passwd(密码文件存放点)
/etc/shadow(散列存放点)

http://blog.csdn.net/yaofeino1/article/details/54616440

john、unshadow命令:

adduser happy :创建一个用户happy,密码为chess

Unshadow /etc/passwd /etc/shadow  > ~/file_to_crack  输出结果进行重定向到/etc/shadow

/usr/share/john/password.lst(John随带的密码列表路径)

 john --wordlist=/usr/share/john/password.lst ~/file_to_crack (使用了密码列表)

john ~/file_to_crack


5.3 密码重置:破墙而入

./chntpw -i /mnt/sdal/WINDOWS/system32/config/SAM

-i:表示以交互模式运行该程序,并可以选择你想要重置的用户。

/mnt/sdal/WINDOWS/system32/config/SAM:目标计算机上所挂载的包含SAM文件的目录。

Sdal不是必备的,有时候需要fdisk -l可以确定挂载的驱动器是否正确。


5.4 利用Medusa获得远程服务的访问权限

命令:

medusa -h target_ip -u username -P path_to_password_dictionary -M    authentication_server_to_attck

Medusa:目的是启动暴力破解程序

-h:指定目标IP

-u:置顶用户名,如果是用户名列表,修改为-U

-p:用来指定一个密码,-P:指多个密码的完整列表

-M:用来指定我们想要攻击的服务

https://www.cnblogs.com/Te7m/p/5938441.html


5.5 泛洪攻击交换机:macof

Macof -i eth0 -s 172.16.45.123 -d 172.16.45.2

-i:用来指定计算机的网卡,即网卡

-s:用来指定来源地址

-d:用来指定目的地或目标攻击对象


5.6 自动化漏洞攻击:Fast-Track Autopwn

Fast-track是一个工具,原理:先对端口进行扫描,然后根据扫描到的信息,向目标系统发送所有已知或可能匹配的漏洞攻击程序。


5.7 Metasploit

对目标计算机发起攻击的备忘单:



  1. 启动Metasploit:/pentest/exploits/framework3/msfconsole

  2. 输入“search”命令,搜索漏洞攻击程序: search missing_patch_number

  3. 输入“use”命令,选择所需要的漏洞攻击程序:


use exploid_name_and_path_as_shown_in_2a



  1. 输入“show payloads”命令,显示可用的攻击载荷:show payload

  2. 输入“set”命令,选择攻击载荷:set payload path_to_payload_as_shown_in_4a

  3. 输入“show options”,查看对目标进行漏洞攻击之前需要设置的所有选项:show options

  4. 输入“set”,对F)进行设置

  5. 输入“exploit”命令,对目标发起漏洞攻击:exploit



6 基于web的漏洞利用


6.1 内容简介


6.2 Nikto:扫描web服务器

Nikto是一个web服务器漏洞扫描工具。Nikto与perl配套使用。

Kali linux内置Nikto

kali linux路径:/pentest/scanners/nikto

输出所有可用的参数:Perl nikto.pl

Perl nikto.pl -h 172.16.45.129 -p 1-1000

参数-h:指定IP地址;参数-p:指定端口号

Kali linux自带nikto工具,直接使用即可:nikto -h ipaddress -p port


6.3 Websecurify:自动化的web扫描

一个工具,输入IP地址,然后就可以进行扫描了。Websecurify提供了一个易操作的界面,包括SQL注入、跨站脚本、文件包含、跨站请求伪造等。


6.4 网络爬虫:抓取目标网站

与目标WEB服务器进行交互的工具是webscarab,可从OWASP网站进行下载。它是一个强大的框架,模块化的,允许用户加载大量的插件。当nikto和websecurify完成漏洞扫描后,下一步逻辑步骤:在目标网站上运行网络爬虫程序。


6.5 使用WebScarab拦截请求

Webscarb是一个非常强大的工具,充当代理服务器只是它的功能之一。

如下代理配置:

 技术分享图片

 


6.6 代码注入攻击

注入攻击可以用于任何目的,包括绕过认证、操纵数据、查看敏感数据,甚至在远程主机上执行命令。注入攻击主要是:提交、发送、操纵用户驱动的输入的数据。最经典的例子是SQL注入。

如:select * from users where uname=’admin’and pwd=’’ or 1=1--

--:是一个程序注释符


6.7 跨站脚本:轻信网站的浏览器

跨站脚本:XSS,是一个将脚本程序注入web应用程序中的过程。

比如:

基于DOM的跨站脚本攻击,客户端攻击、会话管理、源代码审计等。

存在2种类型:非持久化的跨站脚本攻击和持久化的跨站脚本攻击。

反射型:非持久,一般为一个url,需要用户单击,在url中参数传入

持久型:常存在于评论等交互中,常见于

推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
author-avatar
平平您好
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有