过多的信息

一家大型零售商臭名昭著的2013年数据泄露事件表明,其监控软件发出的安全警报通常被忽略,或者至少被认为不值得进一步调查。 这不足为奇。 安全分析人员遭到误报,没有任何相对风险的迹象,因此无法对分析进行优先排序。

攻击者进入网络内部后,更糟糕的是,他们通常能够窃取其他凭据并获得对组织数据库服务器中驻留的“皇冠上的宝石”的不受限制的访问权限。 然后,攻击者可以花费自己的时间,并在很长一段时间内执行此操作,而不会被发现。 同样,在应用程序特权下发生SQL注入攻击也可能能够在正常状态下伪装访问敏感数据。

本文介绍了一种通过增强智能来扩展传统数据库监视的方法,以帮助您了解基于行为相对变化的风险。

V10.1.2中的增强功能摘要

自从本文的早期版本首次发布以来,离群值检测有了许多新的增强功能。 总之,这些更改包括:

  • 现在每小时学习一次(以前称为培训)。
  • 新的更详细的异常原因指标。
  • 现在可以在聚合器上运行异常值挖掘,而不仅仅是收集器,这使您可以更广泛地了解潜在的异常值威胁。
  • 支持文件活动监视。
  • 新的异常值挖掘状态屏幕可帮助您确定异常值是否已配置并正确运行。
  • 在10.1.2之前,“数量”是指活动(或错误)的数量。 现在的数量是受活动影响的记录数或发生的错误数。
  • 受影响的记录数来自Guardium收集的数据。 (要求您启用受检查引擎配置影响的记录。
  • 异常检测功能已经过修订,并导致API发生了变化。 如果您使用的是V10.1.2之前的离群值检测版本,请参阅本文的旧版本。

上一篇文章的此版本已更新,以反映这些更改。

离群值检测如何提供帮助:方案

例如,如果观察到乔DBA所访问的表比过去多得多,则可能是随着时间的推移他正在缓慢下载少量数据。 如果应用程序产生SQL错误数量超过过去,则可能正在发生SQL注入攻击。

考虑一个有效的银行转账交易,该交易可以转换为数十或数百个SQL语句,以确保进行正确的验证和授权,获取帐号,计算余额明细等。 攻击者或恶意内部人员很可能会访问大量记录,而正常的应用程序活动只会影响少量记录。 Guardium离群检测确实会查看受影响的记录数,以确定高于正常量。

心怀不满的DBA决定将整个联系人列表提取为CSV文件或他们可以随身携带的其他格式,或者将所有敏感数据转储到数据库中。 离群值检测算法可以检测到对该特定源的访问来自不应从操作数据中提取的DBA。 随着用户绕过访问控制机制并尝试学习所需的结构和特权,异常(错误)也可能会增加。 在时间窗口内通过下载创建的卷也可能是例外。 这些事件中的任何一个或全部都可能触发异常值指示。

DBA尝试将一些错误代码放入存储过程中,这些代码在消失后将证明需要的代码数量“增加”。 该算法可以识别出异常数量的错误,因为不应假定DBA访问存储过程对象。 它还可以检测是否临时授予了DBA特权以入侵存储过程。

离群值检测如何工作

IBM Guardium数据活动监视和文件活动监视包括高级的机器学习算法,可帮助及早发现操作过程中可能发生的攻击。 该算法自动建模用户活动的正常模式,而无需任何监督。 也就是说,它主要基于无监督学习技术。

出于安全和合规性原因,异常检测算法使用正常收集的数据。 如果尚未通过Guardium安全策略对数据进行审核,那么Guardium将无法对其进行分析。

请参阅图1,以快速了解Guardium在其正常运行期间如何收集审核数据。

图1. Guardium如何收集和记录数据库事件数据
  1. 数据库用户登录并输入数据库命令。
  2. 数据库服务器上的Guardium软件分接头(S-TAP)捕获活动,并将副本发送到Guardium收集器,该收集器是经过加固的硬件或软件设备。
  3. 收集器上的分析引擎解析该命令,并将其分解为组成部分以进行报告或其他分析。 记录的活动包括用户,他们发出命令的时间,他们从(客户端IP)登录的位置,他们使用了什么源程序(例如JDBC),他们访问了哪个数据库服务器以及访问了什么数据。

离群值检测对审计数据的子集进行操作,该子集定期从收集的审计数据中透明地提取到单独的数据集市中。 此提取每小时进行一次。 离群值检测有两个过程:学习和分析。

完成初始学习后,将激活分析。 通过分析,将新活动与代表正常行为的现有模型进行比较。 为超出已建立的模型规范的事件分配异常分数和该分数的原因。

下一节将更详细地介绍学习和分析过程。

学习

通过学习,既有创建初始模型的初始学习期,又有进行中的学习,后者根据新信息精炼模型。 学习检查用户活动的以下方面:

  • 谁:数据库用户和操作系统用户。 对于文件活动监视,这是OS用户
  • 内容:对象–表,存储过程,视图或同义词–以及动词,例如选择,更新,删除或插入。 对于文件,对象是文件名,动词是file命令。
  • 时间:静态确定的工作时间(上午9点至下午5点)以及周末(星期六和星期日)和下班时间。 (工作时间可以自定义。)
  • 其中:源程序,数据库名称和数据库服务器。 对于文件活动监视,这是文件服务器。
  • 多少:执行了多少动作? 有多少记录受到影响? (请注意,只有启用了“受影响的日志记录”检查引擎配置,受影响的记录才可用。)

从上述每个方面的角度对活动和用户(角色)的正常行为进行建模。

下面的图2显示了说明学习过程的示意图。

图2.异常值的学习过程

初始学习需要7天左右的时间来构建初始模型并生成警报,但是创建改进的模型需要3-4周的学习时间。 学习每小时运行一次,并且每小时更新一次模型。 您可以通过使用Guardium API命令来缩短初始学习时间,但是通常不建议这样做。 由于模型不成熟,您可以预期会有更多的误报。

下面的图3是用户'assange'的每周异常值模型输出以及他对临时表的使用的高度简化表示。 它提供了他在工作时间内使用临时表(18)的平均值和标准差(3)。

图3.每周培训生成了正常行为的增强模型

重要说明:临时表的过去使用只是用户行为的许多方面之一,该行为经过训练和建模以能够与新观察到的行为进行比较。 其他方面包括,例如,临时应用程序的使用,活动量,一天中的时间/周的活动,活动的稀有性等。 这些方面中的每一个都与上面显示的处理类似,以创建单独的依存或独立分数。 将分数合并并加权以产生最终分数。

重新学习:建立模型后,每小时重新执行一次学习。

分析

分析是将学习到的典型历史行为模型与Guardium捕获的新活动进行运行时比较。 对模型进行适当的训练后,将对传入的数据活动进行分析,并且异常数据开始出现在Guardium界面和报告中。

下面的图4显示了学习和分析都处于活动状态时的流程。

图4.离群值检测流程:学习和分析

下面的图5显示,在正常工作时间里,用户'assange'对临时表的使用超出了根据先前行为建模的范围。 该增加足够显着以产生异常信号。

图5.每小时运行时分析触发一个异常事件

请记住,将根据您的安全策略不断向数据集市提供新的活动数据,因此,可以根据配置的1小时检测间隔来检测新的异常值。

您可以通过指示何时可以忽略特定事件来影响分析算法的准确性。 有关更多信息,请参阅从异常检测中排除事件 。

重要提示:任何敏感数据对象(敏感对象组中的那些)或admin用户(例如,可以访问敏感数据的特权用户组中的用户)的得分都会提高。 这些是默认情况下得分较高的组。 要添加其他组,请参阅定制离群值检测 。

表1.得分提高的默认组
Guardium组ID 描述
1个 管理员用户
5 敏感物体
242 敏感文件

配置离群值检测

先决条件

异常检测是在9.1版(版本9,GPU 100)中引入的。 但是,本文涵盖了V10.1.3(带有GPU 230的V10)中包含的功能。 以下先决条件和建议适用:

  • 我们建议您仅在具有至少24GB RAM的64位收集器或聚合器上启用离群值。

使用聚合器进行异常值处理

在版本10.1.2中,异常检测已启用,可以在聚合器上运行。 通过使学习阶段能够跨收集的活动进行,这消除了异常值检测的主要障碍,例如审核数据在多个收集器之间进行负载平衡的情况。

在这种情况下,数据将从受管理单元中提取,并且学习和分析阶段将在聚合器上进行,如下图6所示。

图6.离群值学习和分析发生在聚合器上

每小时将数据发送到聚合器。 请注意,此提取的数据明显小于收集的数据。

API命令启用和禁用离群值检测

您可以在收集器或聚合器上启用异常检测:

  • 如果在聚合器上启用异常检测,请不要在关联的收集器上显式启用它。
  • 如果在收集器上启用异常值检测,则所有数据将在本地处理,而不发送到聚合器。

以下GuardAPI命令在收集器上启用异常值检测功能。 使用此命令,异常检测将在每小时的当前日期开始提取到数据集市中。

grdapi enable_outliers_detection schedule_interval=1 schedule_units=HOUR DAM_FAM=DAM

离群值将在每小时的当前日期开始提取到数据集市中。

如果要延迟异常值检测,可以在命令中添加计划的开始日期:

grdapi enable_outliers_detection schedule_interval=1 schedule_units=HOUR DAM_FAM=DAM schedule_start="2015-06-10 00:00:00"

注意: DAM_FAM是可选的。 默认值为DAM

要在聚合器上启用异常检测,请从中央管理器中运行以下命令:

grdapi enable_outliers_detection_agg schedule_interval=1 schedule_units=HOUR aggregator_host_name=<aggregator host name> DAM_FAM=DAM

如果要延迟异常值检测,可以在命令中添加计划的开始日期:

grdapi enable_outliers_detection_agg schedule_interval=1 schedule_units=HOUR aggregator_host_name=<aggregator host name> DAM_FAM=DAM schedule_start="2015-06-10 00:00:00

要禁用离群值检测(这将禁用数据集市的提取,学习和分析),请输入以下命令:

grdapi disable_outliers_detection

验证异常值是否有效

版本10.1.2中的新增功能是异常状态挖掘状态报告。 该报告指示该单元是否正在运行以及是否启用了异常挖掘和快速搜索。 对于受管单元,它指示是否已计划将数据提取发送给聚合器。

图7.离群挖掘状态报告

您可以在“ 管理”>“维护”>“异常挖掘状态”下找到此报告

解释异常结果

在分析阶段变为活动状态之后,异常数据将通过其实时事件分析结果填充到Guardium系统中。 您可以在调查仪表板的图表上查看此信息。 要进入调查仪表板,请从Guardium标语中选择“数据”(用于数据活动)或“文件”(用于文件活动),或转到“调查”菜单。

图8.打开快速搜索UI
图9.调查菜单

要查看异常警报,请参阅“基本预设调查”仪表板顶部的“活动”图表。 您也可以将活动图表添加到任何现有或新的仪表板。 要查看详细信息,请添加结果表图表。

下图10中的活动图包括一条蓝线(带圆圈),用于指示所选选项卡的活动量(活动,错误或违规)。

图10.选定选项卡的活动量

离群值显示为红色和黄色指示符,可反映一个时间间隔(通常为一小时)的严重性或总离群值。 红色指示符表示高度异常事件,需要立即关注。 黄色指示器代表不太严重的异常现象,值得其他研究或相关研究的一部分。 离群值是基于离群量与一天中给定时间的离群值的预测量,单个离群值的严重性和其他因素相比的计算得出的合计值。

如果一个小时内有多个异常值来源,则显示的分数是这些来源中最高的。

图11.异常值在调查仪表板上的显示方式

通过将鼠标悬停在一个异常值图标上,您可以查看该时间段内的活动量,并直接链接到结果表图表中相关时间段内的详细异常值或活动。

图12.悬停在异常警报上

离群值结果的“摘要”选项卡包含每个源(数据库或用户)每小时发现异常的一行,并包括异常得分和异常原因。 每个原因都有一个列,以使结果排序更容易。

离群值结果的详细选项卡为每个离群值包含一行,并包含其他数据,例如源程序,对象和动词。

为什么此活动是异常值?

以下是为什么将活动称为异常值的原因。 每个原因在异常结果中都有自己的列。

原因 描述
高音量 疾病的异常高发。
异常大量的新的或罕见的行为。
错误 错误情况的发生率异常高。
温度 对临时表的访问量异常大。
多样的 不同类型的活动数量异常多,这意味着用户正在执行许多不同类型的活动。 这可能意味着用户出于正当理由可能在做不同的事情,但这也可能意味着用户的特权被盗并且其他人正在这样做。
进行中 表示在最近几个小时中此数据库或用户的异常得分很高。 这可能表明数据库或用户随着时间的推移正在缓慢地改变行为。

对于文件活动,受支持的原因是:

  • 高音量
  • 错误
  • 进行中

需要时,将异常原因组合在一起进行分配。 例如,如果用户在同一小时对某张表的访问量异常大,并且对临时表的访问数异常高,则异常值可能会同时标记为临时和高容量。

自定义离群值检测

尽管Guardium异常检测功能的设计要求运行时需要最少的干预,但是您可以做一些事情来优化您的环境的功能,例如添加其他特权用户或敏感对象组,或者告诉系统忽略某些事件。

另外,尽管它有点高级,但是您可以调整与该算法有关的其他内容,例如异常分数阈值。

提升用户和对象的分数

如本文开头所述,有两个默认组获得得分“提升”:管理员用户和敏感对象。 另外,如果您有文件活动监视,则有“敏感文件”组。 但是,您可能已经在正常操作过程中设置了其他组,这对于检测异常值也很有用。 例如,您可能正在维护一组可疑用户,或者您可能具有与不同应用程序对齐的几组不同的敏感对象。

您可以使用grdapi命令将其他组添加到异常值检测算法中。

先决条件:此命令要求您知道Guardium组ID。 要获取组ID,可以使用命令grdapi list_group_by_desc 。 例如,如果您有一个名为“ BadGuys”的组,则可以输入以下命令以获取其Guardium组ID:

grdapi list_group_by_desc desc="BadGuys"

拥有ID(假设它是1234)之后,可以按如下方式将其作为特权用户组包括在内(请注意,如果您也想为其增加分数,则还必须包括默认组1):

grdapi set_outliers_detection_parameter parameter_name="privUsersGroupIds" parameter_value=1,1234

您可以对敏感对象执行相同的操作:

set_outliers_detection_parameter parameter_name="sensitiveObjectGroupIds" parameter_value=333,156

从异常值检测中排除事件

如果要从异常值检测中排除事件,例如测试应用程序中的活动,则可以右键单击特定的异常值,然后选择“ 忽略”

您可以按原样忽略整个事件,如下图13所示。

图13.忽略此特定事件

或者,您可以通过删除特定的事件参数来扩大范围。 例如,如果要在特定数据库服务器主机上针对ON1PARTR运行时忽略源程序SQLPLUS,则将删除所有其他参数,然后单击“确定”。

图14.通过单击红色的X删除条件

注意:除数据库用户,源程序,服务器,数据库,对象和动词之外的其他字段的值将被忽略,并且不会影响排除标准。

该反馈会被记录下来,并可以在“分析用户反馈”报告中进行报告,如下图15所示。 报告中的第一行显示了如果您选择没有排除条件的活动,则其外观。 第二行显示了如果您选择字段的子集作为条件会是什么样子。

图15.分析用户反馈报告

如果您的用户反馈中包含一个不带星号的标准(用户,服务器IP,数据库等),它也会自动填充现有的分析排除组之一:

  • 分析排除数据库用户
  • 分析排除OS用户
  • 解析排除服务器IP
  • 解析排除服务名称
  • 解析排除源程序

例如,如果从过滤器窗口中删除除DB User之外的所有条件,则可以转到Group Builder,编辑Analytic Exclude DB User组,然后查看您在此处输入的项目,如下面的图16所示。

图16. Guardium Group Builder

当然,您还可以使用组构建器的所有功能来批量填充组,包括从查询中填充。

您还可以使用Guardium API使用单个排除条件填充组:

grdapi create create_member_to_group_by_desc desc="Analytic Exclude DB User" member="DB_USER_X"

要包含以前忽略的事件,请查看“分析用户反馈”报告,双击以前忽略的事件,然后选择“ 调用”>“ delete_analytic_user_feedback”

图17.从忽略的事件中删除事件

您可以选择立即调用删除操作,也可以将生成的命令添加到脚本中以稍后运行。

其他配置和自定义(API)

我们已经为几种不同的情况建议了Guardium API set_outliers_detection_parameter的用户,例如添加其他用户组或敏感对象以进行离群值检测。 可以使用此API修改异常值检测的其他方面,包括增加或减少发出警报的时间,警报限制等。

建议:通常,除非您与异常数据挖掘方面的知识渊博的人员合作,否则请勿修改默认值。

您可以通过输入以下内容查看当前设置:

grdapi get_outliers_detection_info

参数包括:

参数 描述
cleanupKeepDays 这是将模型数据保留在收集器上的天数。 默认值为90天。
sensitiveObjectGroupIds 对象(表,视图等)的Guardium组ID,以提高得分。
privUsersGroupIds 数据库用户的Guardium组ID可获得更高的评分。
minDaysForAlerts 产生异常警报之前需要进行的活动天数。 默认值为7。此参数的值不得超过参数budgetTrainingDays,否则将发出错误。
maxMessageAlertsTopScores 有关异常值摘要行的高分评分消息警报的数量。 默认值为20。
任何异常值的“摘要”行都有许多“详细信息”行。 这些行是一个小时内发生的异常的样本。 “高容量”异常值的详细信息是X的异常得分最高的行数,其中X是此参数的值。
maxMessageAlertsSampleSizePerAlertType 这与非大容量离群值有关。 这是摘要警报的样本异常数。
非高容量离群值具有Y个样本行,它们之间没有顺序,因为分数与这些离群值无关(没有对象比另一个离新。)Y是此参数的值。 默认值为5。
alertsPerDay 这是一天要发布的异常值(摘要级别)的数量。 默认值为24。
使用此参数来控制安全分析师可以管理的警报输入。 这样可以控制数字,并为您提供得分最高的数字。 该数字基于最近的budgetTrainingDays天参数(例如14天)的统计信息。 该过程将计算一个额外的阈值(总是高于intervalAlertsThreshold),该阈值将(或多或少)产生此数量的异常值。
重要:

  • 一天中的异常值可能少于AlertPerDay的异常值,这仅仅是因为那天没有太多异常值。
  • 如果存在许多异常,则离群值的数量不再受限制,您将获得所有离群值。 这样做是为了避免因预算而隐藏紧急情况。
budgetTrainingDays 系统回顾学习的天数。 预设值为14。
intervalAlertsThreshold 超出此阈值的异常分数将作为异常值发出。 默认值为0.99。 如果降低,系统将对异常更加敏感。 得分较低的异常将作为异常值发出,并且可能会有很多错误的阳性结果。 如果升高,则系统对异常的敏感度将降低。

操作上的考虑

本节详细介绍如何结合使用Guardium功能,以将异常检测与操作过程集成在一起。

使用分布式报告查看多个收集器的异常值

要查看来自所有收集器或一组收集器的合并的异常值数据,您可以基于现有的“分析异常值列表”报告创建分布式报告,如下图18所示。

图18还显示了分布式报告,其中每个收集器都按计划将其数据发送到Central Manager。 (还有一个选项可以创建一个在线版本,允许您临时查看集中的报告数据。)

作为输入,您需要包含异常数据的收集器组。 有关创建分布式报告的详细信息,请参阅产品文档。 直接链接位于参考资料主题中 。

注意:如果您使用的是Guardium V10,则已经使用Quick Search for Enterprise在收集器之间合并了异常值。

使用工作流自动化分发报告数据

与Guardium中的任何报告一样,您可以设置一个自动过程来分发和查看异常报告数据。 有时称为合规性工作流程自动化。 使用Guardium UI中的“审核流程构建器”来创建此流程(包括适当的接收者),并将异常值报告添加为任务。 有关创建审计过程的详细信息,请参阅链接相关主题 。

注意保留期

由于异常值警报(算法输出数据)与也写入到Guardium存储库中的两个快速搜索索引相关联,因此异常值警报会受到两个快速搜索索引文件(默认为3天)以及存储在其中的Analytics(分析)异常值信息的保留期的影响。 Guardium数据库(默认为60天)。 另请注意,快速搜索受包括磁盘空间在内的单位利用率阈值的影响,并且可能会更频繁地清除数据,或者如果磁盘空间存在问题,则快速搜索将完全停止索引编制。

设置相关(阈值)警报

由于异常检测是与安全策略规则和执行分开的过程,因此无法在它们上设置实时警报。 但是,由于报告中包含异常数据,因此您可以创建关联警报。 相关警报由查询触发,该查询在指定时间段内进行回溯以确定是否已达到警报阈值。

例如,您可以基于名为“按日期分析异常值摘要-增强”的报告中使用的查询创建警报。

图18.按日期划分的分析异常值摘要-增强的报告

假设您希望将警报写入系统日志或使用电子邮件发送。 您可以创建一个警报,该警报定期运行此报告查询,并将警报设置为在过去四个小时中,当报告中有一个或多个行的异常得分大于或等于99时将被触发。 产品文档中提供了创建关联警报的说明(请参阅参考资料 )。

结论

我们希望您能像在我们的新版Guardium中一样发现数据挖掘的这种新用途。 目的是帮助您的信息安全团队将他们的分析技能集中在最重要的事件上,以及那些可能被忽视的事件


翻译自: https://www.ibm.com/developerworks/security/library/se-guardium-outlier-hidden-threats-v10.1.2/index.html

新型和增强的Guardium离群值检测相关推荐

  1. 使用Guardium离群值检测来检测隐藏的威胁

    编者注:有关V10.1.2增强功能,请参考文章"新的和增强的Guardium离群值检测" . 过多的信息 一家大型零售商臭名昭著的2013年数据泄露事件表明,其监控软件发出的安全警 ...

  2. 机器学习 聚类篇——DBSCAN的参数选择及其应用于离群值检测

    机器学习 聚类篇--DBSCAN的算法原理.参数选择及其应用于离群值检测 摘要 1. DBSCAN算法原理 1.1 基本概念定义 1.2 算法流程 2. 参数选择 2.1 领域半径:Eps的选取方法( ...

  3. sklearn自学指南(part46)--新颖性和离群值检测方法概述

    学习笔记,仅供参考,有错必纠 文章目录 新颖性和离群值检测 离群点检测方法概述 新颖性检验 离群值检测 拟合椭圆包络 孤立森林 局部离群因子 基于局部离群因子的新颖性检测 新颖性和离群值检测 离群点检 ...

  4. sklearn自学指南(part45)--新颖性和离群值检测概述

    学习笔记,仅供参考,有错必究 新颖性和离群值检测 概述 许多应用程序要求能够判断一个新的观测值是否与现有的观测值属于相同的分布(它是内值),还是应该被视为不同的分布(它是离群值).通常,这种能力用于清 ...

  5. 汽车价格离群值检测案例

    <数据科学导引>汽车价格离群值检测案例 第二章案例4(评论可以私发数据表) 文章目录 <数据科学导引>汽车价格离群值检测案例 前言 一.数据集描述 二.导入数据集并切分 三.特 ...

  6. 市政管网检测机器人收费标准_泰州泰兴新街镇市政管道机器人检测怎么收费

    泰州泰兴新街镇市政管道机器人检测怎么收费可对(1#-10#)化粪池进行机械抽取,人工清掏.维修改造和"清底"(池内所有污物).本公司与物业.单位.酒店.社区.学校.工厂.合作,价格 ...

  7. C# 9 新特性 —— 增强的模式匹配

    C# 9 新特性 -- 增强的模式匹配 Intro C# 9 中进一步增强了模式匹配的用法,使得模式匹配更为强大,我们一起来了解一下吧 Sample C# 9 中增强了模式匹配的用法,增加了 and/ ...

  8. C# 9 新特性 —— 增强的 foreach

    C# 9 新特性 -- 增强的 foreach Intro 在 C# 9 中增强了 foreach 的使用,使得一切对象都有 foreach 的可能 我们来看一段代码,这里我们试图遍历一个 int 类 ...

  9. cpu序列号唯一吗_怎么看电脑硬件是不是新的 有什么软件能检测吗?

    怎么看电脑硬件是不是全新的很多人比较关心的问题,毕竟现在很多奸商为了最求利润什么招式都用的出来,其中依旧重新,依次充好是最常见的伎俩了. 怎么看电脑硬件是不是新的 有什么软件能检测吗? 这个时候大家可 ...

最新文章

  1. go语言笔记——append底层实现和Cpp vector无异,只是有返回值,double后返回了新的vector地址而已...
  2. [云炬ThinkPython阅读笔记]1.7 调试
  3. Anaconda装OpenCV
  4. HarmonyOS之JS/Java跨语言调试
  5. 【算法导论学习-29】动态规划经典问题02:最长公共子序列问题(Longest common subsequence,LCS)...
  6. 一次线上商城系统高并发优化,涨姿势了~
  7. ubuntu E: Could not get lock /var/lib/dpkg/lock - open
  8. vue从s3(AWS)中获取图片并展示
  9. 盗版windows xp摇身一变成正版(不用算号器)
  10. 壁面函数matlab,Y+的查看及FLUENT壁面函数的选择
  11. mac安装linux时触控板不能用,Linux 下 MacBook 触摸板设置
  12. python做数字识别_用python实现手写数字识别
  13. 【C#】AutoCAD二次开发笔记
  14. apple watch 微信连接不上手机
  15. linux reedme常用单词,【每天打卡记单词】高中英语必背单词3500(Q/R)
  16. linux下回收站无法清空 解决
  17. 雅虎将收购什么类型公司?梅耶尔:移动!移动!移动!
  18. python可以替代office吗_哪些办公软件可以完美替代 Microsoft Office?
  19. 基本算法总结,力扣题目整理
  20. hana服务器销售资质,hana认证服务器

热门文章

  1. python 简单TCP通信实例 TCP断线自动重连 客户端服务端没有启动顺序
  2. 当年锥子的大爆炸,如今12个语言版本都可轻松搞定!
  3. I Gree的心房(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019))
  4. 服务器如何数据备份?
  5. Python squeeze()函数
  6. XSS-Libs通关详解
  7. 钉钉应用开发,提示Warning: Invalid CERT Authority
  8. android 4.4.3和4.4.4,刷机大师V3.4.4发布 完美支持一加、红牛等Android 4.4系统
  9. 我的世界(12)-服务器领地(Residence插件)
  10. Android数据存储(内部,外部,SharedPreferences,SQlite)