bat 的blog

不得不看:黑客必须了解的网络知识

作为一个最基本的黑客,必须了解相关的网络知识,例如IP 地址、端口和服务等。

IP 地址

IP 地址就是一个网络上的地址,在外网上的IP 地址都是唯一的,就像身份证号码一样,给每台进入网络的电脑一个身份证号码。但是对于大部分用户来说,IP 地址并不是固定的,在重新连接到互联网时,IP 地址可能会被重新分配。如果申请了固定的IP 地址,可以便于其他电脑找到它,并提供服务。

一般的 IP 地址的格式为:a.b.c.d(0<=a,b,c,d<=255),该格式为点分10 进制,例如218.242.161.231,IP 地址的标准形式是二进制形式, 例如212.13.123.52 的二进制110101000000000011010111101100110100 .....由192.168 开头的是局域网的IP 地址,127.0.0.1是用来检测网络的自己的IP 地址,也就是说任何一台电脑不管是否连接到互联网上,127.0.0.1 对应于本地的IP 地址。

端口

【技术分享】代码安全保障技术趋势前瞻

应用安全测试

近年来,由于网络边界愈发模糊、新型攻击手段层出不穷,软件安全的重要性也愈加突显,越来越不容忽视。应用安全测试(Application Security Testing,简称AST)作为保障软件安全的核心手段,自然也取得了快速发展。Gartner在2017年6月的《全球信息安全预测分析报告》中指出:“预计2021年之前,应用安全测试领域的市场将保持14.3%以上的综合年度增长率(CAGR),这是所有信息安全环节中增长率最高的部分” 。

代码作为构建各种应用、系统的基础组件,其安全问题是软件安全的根源性问题。因此,AST领域中有多类技术都可以应用在代码安全保障中,例如静态应用安全测试技术(Static Application Security Testing,简称SAST)技术、动态应用安全测试技术(Dynamic Application Security Testing,简称DAST)技术、软件成分分析(Software Component Analysis,简称SCA)技术等。

Java程序员必须知道的系列辅助开发工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用、正在使用或将来一定会用到的高效工具。这份列表名单包括集成开发环境、集成工具、测试和质量工具等。

1、集成开发环境

Eclipse是最有名也最广泛使用的Java集成开发环境(IDE),允许开发者结合语言支持和其他功能到任何的默认包中,而且Eclipse市场有许多定制和扩展的插件。

IntelliJ已经引起了开发者的“追捧”,甚至比Eclipse还受宠,有免费版和专业版。IntelliJ为众多Java EE框架提供了针对框架的编码帮助和提升生产效率的功能,还有大多数应用服务器的部署工具。

NetBeans的也属于IDE类,允许开发者快速、简便地开发桌面应用、移动应用和Web应用。NetBeans是免费开源的,还拥有全球性的用户和开发者社区。

JDeveloper是Oracle提供的一个免费的集成开发环境,它为Oracle融合中间件和融合应用产品提供完整的端到端开发,支持整个开发生命周期。

2、测试

每个程序员都应该知道的基础数论

这篇文章讨论了数论中每个程序员都应该知道的几个重要概念。本文的内容既不是对数论的入门介绍,也不是针对数论中任何特定算法的讨论,而只是想要做为数论的一篇参考。如果读者想要获取关于数论的更多细节,文中也提供了一些外部的参考文献(大多数来自于 Wikipedia 和 Wolfram )。

0. 皮亚诺公理

整个算术规则都是建立在 5 个基本公理基础之上的,这 5 个基本公理被称为皮亚诺公理。皮亚诺公理定义了自然数所具有的特性,具体如下:
• 0是自然数;
• 每个自然数都有一个后续自然数;
• 0不是任何自然数的后续自然数;
• 不同自然数的后续自然数不同;
• 如果集合S包含了数字0,并且包含S中每一个数字的后续自然数,那么集合S就包含了所有的自然数。

上述第5个公理也被称为“数学归纳法的基础”。

通常,除了我们想要证明其他算术定理的情况,我们很少直接使用上述公理。但作为算术的基石,这些公理是值得我们去了解的。

1. 算术基本定理和除法运算法则

终于,期待已久的 Java 9 正式发布了!

经过4次跳票,历经曲折的 Java 9 正式版终于发布了! 你可以通过这里下载 Java 9 正式版。JDK9 提供超过 150 项新功能特性,包括备受期待的模块化系统、可交互的 REPL 工具 jshell,以及安全增强、扩展提升、性能管理改善等。

同时发布的还有 Java EE 8

JDK 9 特性一览:

102: Process API 更新
110: HTTP 2 Client

每个程序员都该知道的五大定理

定律-或称法则,可以指导我们并让我们在同伴的错误中学习。这篇文章中,我将介绍我每次设计或实现软件时出现在我脑海的五大定律。其中有些和开发有关,有些和系统组织有关。它们可以帮助你成为合格的软件工程师。

墨菲定律

“凡事可能出错,就一定出错。”

这条定律来源于 Edward Murphy —— 一名航天工程师在 50 年代初对火箭测试失败的回应。这条定律给我们的启示是永远在系统关键地方使用防御性设计,因为系统某些地方总会出错!

这条定律很容易引入软件工程领域。当你将软件暴露给终端用户,他们会创造性地输入一些出人意料的内容,使系统宕机。所以你需要让你的软件足够健壮,能够检测并警告非预期行为。

当你在机器上运行软件时,任何地方都有可能发生问题 —— 从硬盘上的系统到数据中心的电力供应。所以你必须确保你设计的架构在每个层级都可以应对故障。

程序员的八重境界

看到一篇有趣的文章The Eight Levels of Programmers。以前似乎看过不少这种程序员的多少个级别、境界,但这篇语言很风趣,而且分类比较细化,让人觉得挺合情合理、无法反驳的。绝大部分人想成为一名优秀程序员的人,通过努力可以避免1,因为在编程上的追求避开了2,最终可能都停留在4或5。但努力追寻是没有错的,不然没有梦想和咸鱼有什么分别:)。注意一点,作者并没有无脑地批判谁,并没有说会编程、代码写得好就怎样,其他都是不求上进、不务正业。他全文一直都在客观强调一点:每个人的追求不同,想好自己想要活成什么样子,然后就去努力。

下面就简单翻译一下,说是翻译,没有逐字逐句。而且加了一些自己想说的话,主要是传达一下作者的主要想法。另外倒排了一下八个Level的顺序,这样读起来可能更有意思。希望大家阅读愉快。

如何入门Python与机器学习

编者按:本书节选自图书《Python与机器学习实战》,Python本身带有许多机器学习的第三方库,但本书在绝大多数情况下只会用到Numpy这个基础的科学计算库来进行算法代码的实现。这样做的目的是希望读者能够从实现的过程中更好地理解机器学习算法的细节,以及了解Numpy的各种应用。不过作为补充,本书会在适当的时候应用scikit-learn这个成熟的第三方库中的模型。

“机器学习”在最近虽可能不至于到人尽皆知的程度,却也是非常火热的词汇。机器学习是英文单词“Machine Learning”(简称ML)的直译,从字面上便说明了这门技术是让机器进行“学习”的技术。然而我们知道机器终究是死的,所谓的“学习”归根结底亦只是人类“赋予”机器的一系列运算。这个“赋予”的过程可以有很多种实现,而Python正是其中相对容易上手、同时性能又相当不错的一门语言。本文打算先谈谈机器学习相关的一些比较宽泛的知识,再介绍并说明为何要使用Python来作为机器学习的工具。最后,我们会提供一个简短易懂的、具有实际意义的例子来给大家提供一个直观的感受。

具体而言,本章主要涉及的知识点有:

• 机器学习的定义及重要性;
• Python在机器学习领域的优异性;
• 如何在电脑上配置Python机器学习的环境;
• 机器学习一般性的步骤。

普通程序员如何向人工智能方向转型?

眼下,人工智能已经成为越来越火的一个方向。普通程序员,如何转向人工智能方向,是知乎上的一个问题。本文是我对此问题的一个回答的归档版。相比原回答有所内容增加。

一. 目的

本文的目的是给出一个简单的,平滑的,易于实现的学习方法,帮助 “普通” 程序员踏入AI领域这个门。这里,我对普通程序员的定义是:拥有大学本科知识;平时工作较忙;自己能获取的数据有限。因此,本文更像是一篇 “from the scratch” 的AI入门教程。

二. AI领域简介

AI,也就是人工智能,并不仅仅包括机器学习。曾经,符号与逻辑被认为是人工智能实现的关键,而如今则是基于统计的机器学习占据了主导地位。最近火热的深度学习正是机器学习中的一个子项。目前可以说,学习AI主要的是学习机器学习。

但是,人工智能并不等同于机器学习,这点在进入这个领域时一定要认识清楚。关于AI领域的发展历史介绍推荐看周老师写的《机器学习简介》。下面一个问题是:AI的门好跨么?其实很不好跨。我们以机器学习为例。

盘点2017年热度很高的编程语言

“世上语言千千万,我却独爱这一种!”这句话用来形容程序员和编程语言之间的爱恨情仇实在是再精准不过了。根据GitHub 2016年的开源报告,其上所有开源项目共包含了316种编程语言,这是一个什么概念呢?举个例子来说,世界上共有226个国家和地区,也就是说编程语言的数量比国家数量还多。

想要全部精通这些语言显然是个不可能事件,所以编程语言的选择就有了先后之分。编程语言的好坏之争娱乐性高于知识性,所以本文不以好坏论高下,而是以热度作为参考条件,盘点2017年哪些编程语言最受欢迎。

盘点2017年热度很高的编程语言
▲蓝色为Java,红色为Go,黄色为Swift,绿色为Python,紫色为Kotlin

同步内容
--电子创新网--
粤ICP备12070055号