破解软件

破解软件,破解密码,破解工具,破解论坛,破解技术

黑客的学习路径(黑客怎么学)

本文目录一览:

黑客的成长道路

要想成为黑客,你必须搞清楚黑客是什么,,专门在网上搞破坏的那些人不叫黑客。。是骇客,,真正的黑客是不会去搞破坏的

黑客最早源自英文hacker,早期在美国的电脑界是带有褒义的。但在媒体报导中,黑客一词往往指那些“软件骇客”(software cracker)。黑客一词,原指热心于计算机技术,水平高超的电脑专家,尤其是程序设计人员。但到了今天,黑客一词已被用于泛指那些专门利用电脑网络搞破坏或恶作剧的家伙。对这些人的正确英文叫法是Cracker,有人翻译成“骇客”。

怎样规划linux网络安全学习路线?

防火墙的原理

防火墙的作用

主要作用:过滤两个网络之间的数据包

INERNET------fire wall------server------LAN

Linux内核的Netfilter

Linux内核空间和应用程序空间是不一样的

内核空间是受保护的,任何进出服务器的数据包都要经过内核处理

所有发送给本地的数据包都要经过INPUT

任何从本机产生的数据包发送给其它人都要经过OUTPUT

一个数据从本机路由转发,目标不是自己,是发给别人的将从FORWARD经过

INPUT/OUTPUT保护的是本机FORWARD保护的是局域网用户

包过滤原理

一个数据包要经过本地的路由,要判断怎么走,ROUTING是非常重要的,它决定了要怎么走

如果一个包和我本地网卡地址一样,本地可以收到,进入INPUT,否则FORWARD

如果一个包是本地产生的,发出去的经过OUTPUT

包过滤就是在这三个地方设置条件,设置障碍,阻止或通过数据包,及设置包的处理方式

包的处理方式

iptable -A INPUT -p icmp -j DROP

包的处理方式常见的有目标(Target) 丢弃(DROP) 接受(ACCEPT) (弹回)REJECT 日志(LOG)等

iptables命令

iptables -A INPUT -p icmp -j DROP 增加一个过滤规则

ping 192.168.0.101

iptables -L -n查看过滤规则

iptables -F清空过滤规则

iptables --help | more

iptables -L -n –line-number

增加一条规则把拒绝所有访问21端口的数据包

iptables -A INPUT -p tcp -d 192.168.0.101 --dport 21 -j DROP

iptables -F修改的时候要把防火墙的门全部关起来 然后一个一个端口打开

iptables -L -n –line-numbers

假设我们一个服务器只开启一个http

那么我们要开启http/ssh(远程管理)

所有的http 端口grep http /etc/services

打开ssh grep ssh /etc/services

iptables -A INPUT -p tcp -d 192.168.0.101 --dport 22 -j ACCEPT 接收进来,目标IP是本地IP,目标端口是22

iptables -A OUTPUT -p tcp -s 192.168.0.101 --sport 22 -j ACCEPT 发送出去,源IP是本地IP,源端口是22

iptables -L -n

iptables -P INPUT DROP改变防火墙的默认策略为DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

iptables -A INPUT -p tcp -d 192.168.0.101 --dport 80 -j ACCEPT

iptables -A OUTPUT -p tcp -s 192.168.0.101 --sport 80 -j ACCEPT

iptables -L -n

iptables -L -n --line-numbers

netstat -tnl 就算本地开启了很多服务,但只有22和80端口可以被访问到

service iptables save保存当前的设置或用iptables-save /etc/sysconfig/iptables

对于作何一个服务器来说都少不了DNS解析请求,自己作为客户机

grep domain /etc/services 搜索域名服务的端口号

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT DNS解析回应,目标端口是53

iptables -A INPUT -p udp --sport 53 -j ACCEPT 请求DNS解析,源端口是53

检查客户机DNS服务器配置

more /etc/resolv.conf

host

如果这台服务器本身也是DNS服务器

iptables -A INPUT -p udp --dport 53 -j ACCEPT 接收来自别的机器的DNS解析请求

iptables -A OUTPUT -p udp --sport 53 -j ACCEPT这台DNS服务器发送DNS解析回应

iptables -D INPUT 5删除在INPUT上的第5条规则

如果这台服务器也要连上其它服务器的SSH

到目前为止,在本机访问本机的服务给忽略

在本机上,有很多服务都守护在127.0.01上,所以我们要打开本地的回环设备

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

^IN^OUT命令替换功能

iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

service iptables save

现在我们注意一下22端口

Chain INPUT (policy DROP)

1 ACCEPT tcp -- 0.0.0.0/0 192.168.0.101 tcp dpt:22

Chain OUTPUT (policy DROP)

1 ACCEPT tcp -- 192.168.0.101 0.0.0.0/0 tcp spt:22

所有进来的包都要通过22端口

所有出去的包都要通过22端口,但是如果由于系统漏洞或是病毒,从22端口主动送出包出去,而不是通过请求进来的包回应的,这时就会出现比较大的问题

所以我们要增加一条规则看这个包是不是别人请求我,我回应别人的

iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

iptables -D OUTPUT 1删除第一条规则

iptables -n -L --line-numbers

Chain OUTPUT (policy DROP)

6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22 state ESTABLISHED

针对80端口也是一样

iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

service iptables save

作为客户机访问别人的SSH也是有问题的

iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT从客户机发送出去的包,肯定被无条件接受

iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT接受别人的服务

器SSH回应如果有病毒,是主动发给本客机的,就出现问题了,这时加上必须是我请求过SSH服务数据包回应的

LOG目标

iptables -A INPUT -p tcp –dport 22 -j LOG –log-level 5 –log-prefix “IPTABLES”

编辑/etc/syslog.conf

注意:日志级别5要跟syslog.conf中的级别一致。级别可以通过syslog的manual帮助获得。

iptables -A INPUT -p tcp --dport 22 -j LOG --log-level 5 --log-prefix "iptable:"

vi /etc/rsyslog.conf

kern.=notice /var/log/firewall.log

这里为什么是notice?

man syslog查看消息的级别

#define KERN_EMERG "0" /* system is unusable */

#define KERN_ALERT "1" /* action must be taken immediately */

#define KERN_CRIT "2" /* critical conditions */

#define KERN_ERR "3" /* error conditions */

#define KERN_WARNING "4" /* warning conditions */

#define KERN_NOTICE "5" /* normal but significant condition */

#define KERN_INFO "6" /* informational */

#define KERN_DEBUG "7" /* debug-level messages */

在防火墙中我们定的级别是5,所以对应的内核是notice

iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

iptables -n -L –line-number

iptables -D INPUT 8

iptables -I INPUT 6 -p tcp --dport 22 -j LOG --log-level 5 --log-prefix "iptable:"

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -D INPUT 1 把前拥同样规则的移到日志后面

service iptables save

tail /var/log/firewall.log -f

NAT地址转换

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT允许本地互联网访问

iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT

光这样还不行,还要打开内核里的转发文件

more /proc/sys/net/ipv4/ip_forward

echo 1 /proc/sys/net/ipv4/ip_forward

这时只能临时生效,若服务器重启,这个值又变成0

vi /etc/sysctl.conf

# Controls IP packet forwarding

net.ipv4.ip_forward = 1

service iptables save

此时我们还是不能用,因为局域网通过本机转发到互联网上,网络上的地址并不知道本地局域网的IP

所以我们要通过NAT

iptables -t nat -L -n

Netfilter的NAT表

内核空间----PREROUTING----ROUTING----FORWARD----POSTROUTING

SNAT发生在POSTROUTING

PREROUTING----FORWARD----POSTROUTING

destination: 11.22.33.1:22 destination: 11.22.33.1:22

source: 10.0.0.1:port source: 11.22.33.44:port

proto: tcp proto: tcp

本机地址:

eth0: 10.0.0.254

eth1: 11.22.33.44

SNAT应用

10.0.0.241 eth0:10.0.0.254 /eth1:192.168.0.254 192.168.0.1

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT –to-source 192.168.0.254

IP:10.0.0.241 getway: 10.0.0.254 subnet mask:255.255.255.0

ping 192.168.0.1若能ping通,说明访问成功

在实际的运用中

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE支持动态的翻译

回来时自动找到源IP

iptables -t nat -F

DNAT发生在PREROUTING

PREROUTING----FORWARD----POSTROUTING

destination: 11.22.33.44:22 destination: 10.0.0.1:22

source: 11.22.33.1:port source: 11.22.33.1:port

proto: tcp proto: tcp

本机地址:

eth0: 10.0.0.254

eth1: 11.22.33.44

DNAT应用

10.0.0.241 eth0:10.0.0.254 /eth1:192.168.0.254 192.168.0.1

iptables -t nat -A PREROUTING -d 10.0.0.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1

192.168.0.1这是一台实际的服务器,不让访问者10.0.0.241看到,访问者看到只是一个防火墙

本文来自CSDN博客,转载请标明出处:

黑客要知道些什么基本知识?

一、学习技术:

互联网上的新技术一旦出现,黑客就必须立刻学习,并用最短的时间掌握这项技术,这里所说的掌握并不是一般的了解,而是阅读有关的“协议”(rfc)、深入了解此技术的机理,否则一旦停止学习,那么依靠他以前掌握的内容,并不能维持他的“黑客身份”超过一年。

初级黑客要学习的知识是比较困难的,因为他们没有基础,所以学习起来要接触非常多的基本内容,然而今天的互联网给读者带来了很多的信息,这就需要初级学习者进行选择:太深的内容可能会给学习带来困难;太“花哨”的内容又对学习黑客没有用处。所以初学者不能贪多,应该尽量寻找一本书和自己的完整教材、循序渐进的进行学习。

二、伪装自己:

黑客的一举一动都会被服务器记录下来,所以黑客必须伪装自己使得对方无法辨别其真实身份,这需要有熟练的技巧,用来伪装自己的IP地址、使用跳板逃避跟踪、清理记录扰乱对方线索、巧妙躲开防火墙等。

伪装是需要非常过硬的基本功才能实现的,这对于初学者来说成的上“大成境界”了,也就是说初学者不可能用短时间学会伪装,所以我并不鼓励初学者利用自己学习的知识对网络进行攻击,否则一旦自己的行迹败露,最终害的害是自己。

如果有朝一日你成为了真正的黑客,我也同样不赞成你对网络进行攻击,毕竟黑客的成长是一种学习,而不是一种犯罪。

三、发现漏洞:

漏洞对黑客来说是最重要的信息,黑客要经常学习别人发现的漏洞,并努力自己寻找未知漏洞,并从海量的漏洞中寻找有价值的、可被利用的漏洞进行试验,当然他们最终的目的是通过漏洞进行破坏或着修补上这个漏洞。

黑客对寻找漏洞的执著是常人难以想象的,他们的口号说“打破权威”,从一次又一次的黑客实践中,黑客也用自己的实际行动向世人印证了这一点--世界上没有“不存在漏洞”的程序。在黑客眼中,所谓的“天衣无缝”不过是“没有找到”而已。

四、利用漏洞:

对于正派黑客来说,漏洞要被修补;对于邪派黑客来说,漏洞要用来搞破坏。而他们的基本前提是“利用漏洞”,黑客利用漏洞可以做下面的事情:

1、获得系统信息:有些漏洞可以泄漏系统信息,暴露敏感资料,从而进一步入侵系统;

2、入侵系统:通过漏洞进入系统内部,或取得服务器上的内部资料、或完全掌管服务器;

3、寻找下一个目标:一个胜利意味着下一个目标的出现,黑客应该充分利用自己已经掌管的服务器作为工具,寻找并入侵下一个系统;

4、做一些好事:正派黑客在完成上面的工作后,就会修复漏洞或者通知系统管理员,做出一些维护网络安全的事情;

5、做一些坏事:邪派黑客在完成上面的工作后,会判断服务器是否还有利用价值。如果有利用价值,他们会在服务器上植入木马或者后门,便于下一次来访;而对没有利用价值的服务器他们决不留情,系统崩溃会让他们感到无限的快感!

第二节、黑客应掌握的基本技能

从这一节开始,我们就真正踏上学习黑客的道路了,首先要介绍的是作为一名初级黑客所必须掌握的基本技能,学习这可以通过这一节的阅读了解到黑客并不神秘,而且学习起来很容易上手。为了保证初学者对黑客的兴趣,所以本书采取了循环式进度,也就是说每一章节的内容都是独立、全面的,学习者只有完整的学习过一章的内容,才能够进而学习下一章的内容。

一、了解一定量的英文:

学习英文对于黑客来说非常重要,因为现在大多数资料和教程都是英文版本,而且有关黑客的新闻也是从国外过来的,一个漏洞从发现到出现中文介绍,需要大约一个星期的时间,在这段时间内网络管理员就已经有足够的时间修补漏洞了,所以当我们看到中文介绍的时候,这个漏洞可能早就已经不存在了。因此学习黑客从一开始就要尽量阅读英文资料、使用英文软件、并且及时关注国外著名的网络安全网站。

二、学会基本软件的使用:

这里所说的基本软件是指两个内容:一个是我们日常使用的各种电脑常用命令,例如ftp、ping、net等;另一方面还要学会有关黑客工具的使用,这主要包括端口扫描器、漏洞扫描器、信息截获工具和密码破解工具等。因为这些软件品种多,功能各不相同,所以本书在后面将会介绍几款流行的软件使用方法,学习者在掌握其基本原理以后,既可以选择适合自己的,也可以在“第二部分”中找到有关软件的开发指南,编写自己的黑客工具。

三、初步了解网络协议和工作原理:

所谓“初步了解”就是“按照自己的理解方式”弄明白网络的工作原理,因为协议涉及的知识多且复杂,所以如果在一开始就进行深入研究,势必会大大挫伤学习积极性。在这里我建议学习者初步了解有关tcp/ip协议,尤其是浏览网页的时候网络是如何传递信息、客户端浏览器如何申请“握手信息”、服务器端如何“应答握手信息”并“接受请求”等内容,此部分内容将会在后面的章节中进行具体介绍。

四、熟悉几种流行的编程语言和脚本:

同上面所述一样,这里也不要求学习者进行深入学习,只要能够看懂有关语言、知道程序执行结果就可以了。建议学习者初步学习C语言、asp和cgi脚本语言,另外对于htm超文本语言和php、java等做基本了解,主要学习这些语言中的“变量”和“数组”部分,因为语言之间存在内在联系,所以只要熟练掌握其中一们,其他语言也可以一脉相同,建议学习C语言和htm超文本语言。

五、熟悉网络应用程序:

网络应用程序包括各种服务器软件后台程序,例如:wuftp、Apache等服务器后台;还有网上流行的各种论坛、电子社区。有条件的学习者最好将自己的电脑做成服务器,然后安装并运行一些论坛代码,经过一番尝试之后,将会感性的弄清楚网络工作原理,这比依靠理论学习要容易许多,能够达到事半功倍的效果

/本篇文章来源于 新贵网 原文出处:

请问自学编程,怎么才能做到让自己成功学习顺利,并且一个明确的计划或者方向(包含各个阶段的进级)

如果能重学一次编程,会怎么规划自己的学习路径?

大部分人重新回顾自己的学习编程的经历,往往会发现自己走了很多弯路,踩了很多坑。或许是一本久负盛名的书,花了很多精力看完之后却发现名不符实;或许是追求一些时髦的新技术,却发现竹篮打水,镜花水月;或许是听信了一些一面之词,因傲慢和偏见而固步自封;或许是对某些看上去艰深晦涩的领域心存畏惧,导致无法理解很多问题的本质……

所以本期话题的主题为如果能重回初学编程的时候,会怎么规划自己的学习路径,希望大家分享自己的故事。

为了避免大家出于个人的认同而不是对于内容本身的认同来点赞,所以从本期开始,所有参加话题的参与人的身份将会匿名,直到话题结束后才公开显示ID。请大家也遵守该项规则,不要猜测回复者的身份或是主动暴露自己的身份。

大学的时候,军训结束后开始正式上课了。终于要学编程了,好激动!我也要像传说中的黑客,噼里啪啦敲一顿键盘,世界便尽在掌控之中……上课的前一天,领到了崭新的编程教材,我兴奋地睡不着觉,熬夜用手机的补光灯照着看……

命运给我开了个玩笑,这本书的作者叫谭浩强,据说,这书里面每一页都有错误。等我发现的时候,我只好重新学了一次C语言……因为我对于C语言的理解几乎都是错误的……

顺便一提,我重学选用的书是:C语言程序设计:现代方法。

经过C语言的教训,我发现看一本烂书不如不看。这时来到了大二,开始学习Java了。这次我再也不信国内的那些大学教材了,豆瓣上搜了下,发现评分最高的是Java编程思想,评论都说好。果断买买买,奉为圭臬,每日研读。

这次我的Java确实学的不错了,期末Java大作业的时候,大部分人还在懵逼的时候我脑子里面已经知道该怎么实现了。最后大家发现我很靠谱,于是整个小组把写代码的任务都交给我了(大作业除了写代码还有写文档之类的杂活),我也不负众望,一个通宵搞定,感觉自己强无敌。

然而等我到了工作中的时候发现了两个问题:

第一,Java编程思想成书于2006年,主要讲的还是Java SE 6,然而等我工作的时候,Java SE 8已经推出,并以疾风骤雨之势成为了大部分的公司线上环境。而Java SE 8的引入的诸多新特性以及SE 6和7里面的废弃不用的类和方法,也需要花时间重新学习和整理。语法的特性还好说,在这个技术和思想日新月异的年代,一本十年前的语言入门书,可能里面潜藏着很多初学者不容易发现的过时的思想,这才是真正致命的。

第二,Java编程思想只是帮你入Java SE的门,离工业实战开发还有很长的一段距离。公司中版本控制用的是GIT,包管理用的是Maven,类的命名原则,代码重构,以及流行的Java EE和Spring框架等等知识都没有提及。我毕业的时候根本不知道这些,导致了我找工作的时候吃了很多亏。这些东西只好在工作中一点一点重新学起,当然,还包括重新学习Java SE 8……

实际上,Java编程思想已经过时了,虽然豆瓣上评分一片大好。这里我推荐的是最新版的Java核心技术。

另外我发现,Amazon美国上搜Java排名第一的是一本2014年出版的书(基于 Java SE 8),然而国内的Amazon搜索Java,排名第一的仍然是Java编程思想。可见国内仍然很多人在Java SE 6上浪费时间……

我现在选书的几条原则:

大家的评论,以国外的书评网站为主,评价不好的千万别看

讲的是否技术已经过时,优先选择最新出版的技术书

不要买中文书,除非有特别的理由(国内优质原创技术书,不包括翻译书)

坑2 - 提问和交流

学习和开发总是会遇到问题,遇到问题总是需要请教别人,上哪去请教呢?

单独请教身边的高手:可高手一般懒得理你,如果是查Bug或者非常细节的问题,更是没高手愿意理你。基本上高手只会回答观点性的问题

Q群:大部分都在吹水聊天,提问题基本上没人理,并且Q群里面贴代码的体验很差

CSDN:这下有人理你了,可很多人回答问题都是很不负责任的,并且提问需要积分,然而获取积分又非常麻烦

SegmentFault:比CSDN的体验好很多,提问也不需要积分,国内比较专业技术问答网站

国内差不多就这些方式了,直到后来我发现了StackOverflow。不好意思,上面都是垃圾。然而StackOverflow是用英文交流的,好多编程术语都不知道,怎么玩?后来,我发现问题的本质在于,看的技术书是中文的。

因为看的技术书是中文的,所以只知道这些技术的中文说法,只能和中国人交流,然而编程的世界的语言却是英文。第一,大部分项目的文档和介绍都是用英文写的。第二,GitHub上交流用的也是英文。第三,语言和协议的标准也都是用英文写的……

所以,为了和世界接轨,我开始把我学的东西大部分重新看了一遍英文版的书,不为别的,就为积累技术术语,当然也顺便复习一下。所以后来我选书,基本都是在英文书网站里面挑,很少再看中文书了,避免学习术语的成本。况且中文翻译书,翻译质量参差不齐,指不准就看了一本瞎翻译的书,误入歧途。

那么我现在遇到:

有明确答案的知识性问题(比如程序报错,有小Bug之类的),去StackOverflow问。如果还没有得到解决,考虑:

这个问题是否可以通过查阅相关文档解决?

这个问题是否可以通过查阅相关语言和协议标准解决?

这个问题是否可以通过在邮件组里面提问或者项目讨论区(GitHub Issue)里面提问解决?

这个问题是否可以通过自行阅读代码解决?

绝大部分知识性问题,都可以通过上述方法解决,如果这还解决不了,可见你在使用一个没有开源,没有友好的社区氛围,没有什么人在使用的过气技术,应该思考下你用的这个技术是不是该进博物馆了?

没有明确答案的观点性问题(比如某技术的优势或者未来发展趋势之类的问题),可以考虑:

StackExchange的子站点programmers里面提问

Reddit的Programming区里面发帖

看该技术领域里面明星人物的博客或者书籍

请教身边的技术大牛

关注各种技术会议的视频和讲稿

自己思考

观点性质的问题,本没有标准答案,当然会比知识性的问题更难获取答案,可是这些问题,却比知识性问题更加重要。知识性的问题,只有对或者错两个结果,你违背了知识,你会立即得到错误。而观点性的问题,就比如选书或者如何交流,如果没有自己的一套方法或者错误的方法,就会原地踏步乃至于南辕北辙。

坑3 - 赶时髦

搬业务代码的过程中,学了很多库的用法,比如说HTTP相关的用过Java的HTTPClient和Python的requests库,写并发会用并发的库,写TCP会用Socket相关的库,做Web用过NodeJS和PHP等……发现很多框架也不难学习,于是折腾了更多的新框架和新语言(Go、Rust)……然而一路折腾下来感觉就是不生产代码,只是做了一把框架的搬运工,搭个架子然后吭哧吭哧写业务代码。最后发现追求新技术有两个问题:

第一,用户并不会在乎你用的什么技术,只要他们用着爽就行了。而这往往会意味着,赶时髦的新技术会因为不好招人以及担心有坑而导致不会被公司采用。

第二,搬运框架并不会真正提升你的技术,除非你能理解整个框架的实现,到源码级别的掌控。

所以赶时髦并不会让你升职加薪,也不会真正提升你自己的技术,那么到底该学什么呢?

学习路径

有篇很有名的文章,Teach Yourself Programming in Ten Years,认为编程专家需要10年的学习时间。并且给出了一些学习目标:

学习十来门语言

参与(有技术含量的)项目开发

维护(有技术含量的)项目

对计算机底层的了解

参与制定一门语言的标准

等等。这些学习目标我也认可,但是比较抽象。

有一份比较实际一点的文章,程序员练级攻略(这篇文章有个坑,它推荐了W3School,实际上W3School是一个过时的有很多坑的网站,我比较推荐movethewebforward)。

这里我谈一下我自己的学习规划:

学几门流行的编程语言,当然需要找一本靠谱的英文书来学。学习的目标在于熟练使用大部分语法特性以及相关的库函数,也包括引入第三方包以及调试优化等内容。学了之后也可以适当看下中文的技术书,方便中文技术交流。

学习编程相关的开发工具(IDE,版本控制,文本编辑等),提高自己的开发效率。

成为一名熟练的框架搬运工,比如搬一下Linux+Nginx+Mysql+PHP搭网站,ELK搭一个日志收集查询展示系统之类的。这些技能只需要阅读下官方文档的就行了。

阅读语言和协议的标准,参与一两门技术的发展和讨论

学习操作系统和编译原理,了解语言和协议设计的背后的思路,了解计算机的底层到应用层之间的实现,包括网络并发等领域

目前我只做到第三步……我目前正在看一些语言和协议的标准,以及学习操作系统和编译原理等……

2016-09-12 00:43:45 6条评论

isaacpei, ifelse程序猿

首先说明我讨厌固定的方法

每个人都是不同的,各位大牛也应该有自己的方法,比如教教学生啊,睡前读两章啊,打打炉石啊。。。 所以我所说的,可能有用,也可能是扯淡(当然我就是爱扯淡)

学习路径我认为是一个迭代加深的过程

学习-使用-学习更深入-使用更深入

以下使用入门举例

从入门来讲,语言我还是觉得两个比较好C/Python 。

对于入门书籍的选择,我觉得无所谓,很多人喜欢比较谁的书写的好谁的写的不好,但是不同人有不同的偏好,我觉得意义不大。你能找到的书基本都不会错太多,就算是谭浩强也有无数人看着他的书学会了不少再回来批判他,当然现在他的书已经不多见了。事实上大部分学校的教科书都能达到基本的要求。

入门很简单,C语言看到指针前面,这就够了,我看的是c bible,就是C作者写的那本。

Py也很简单,更加接近自然语言,我是看的learn python the hard way。

甚至某种语言官方文档也是很好的入门资料。

想了想即使到现在这两本也足够入门,简单易懂。

我不理解有人喜欢推荐那种又厚又重,未定义行为都讲一遍的书,这种东西既没啥重要性又不适合入门,看起来真是痛苦。

至于书是中文还是英文,我也觉得无所谓,但是最终要看一遍英文。如果你先看的中文,之后一遍英文的也是十分简单的事情,顶多几个小时。

学习完之后就到了使用阶段

随便选个oj刷10道水题。

课后习题做了

迭代这个过程

再往后我就不讲了,因为我水平就到这里了~

使用工具

书是工具,但是我觉得有点过时(因为我懒得看)。

我觉得现在更好的工具是网络。

个人喜欢直接搜遇到的问题,blog就是很好的地方,stackoverflow也是。

使用工具最重要的问题是选择适合自己的,比如blog搜出来靠前的可能讲的并不是很适合自己的阅读习惯。

正确使用工具是及其重要的能力。

实用主义

我不是理论派,我喜欢讲学以致用,如果没啥用但是好玩也行,去解决问题就是从学到用的过程。

个人认为大部分程序猿都是在这个阶段学到大部分东西的。

比如:

题目tle了,那么可能你会因此学了某种高效算法。

需要做大作业了,那么可能你因此仿写了2048,学会了js里面的动画。

踩坑再爬出来就是提升

总有人喜欢给后面人说自己遇到了多少坑以后别碰。但是我觉得对于学习,踩坑是货真价实的提升。

卧槽我懒得继续写了。。。

学习技术还是上个大学把。。。

最后一句话,证明你能力的最重要的地方是:

你解决了这个问题

你把这个东西用傻逼都懂的方式解释清楚了

天天扯图灵机/P=NP的要么是研究理论的要么是装逼的。

技术的发展是为了简单不是为了复杂。

卧槽我写了这么长?

2016-09-13 12:08:56 0条评论

mickeyandkaka,

我认为字数越多,赞数越高,这样的现象是不好的。

战略性的方向:

读个好点的大学的计算机专业

原因不在于学校,在于你接触了什么样的人,什么样的环境,你就会变成什么样的人。这个甚至比你各种努力还重要。

大学逼自己多写代码多刷题。为进入大公司做准备。

只有规模足够大的工资才有平台,才有可能发挥的机会。代码不是为了自我满足,而是要真正服务于千万用户的。除非你眼光毒,不然你赌不起你的时间。

战术性的意见:

兴趣是最好的老师

大学专业课别挂,有点印象。以后好随时捡起来

了解简单的英语

独立思考,解决问题

若都能做到,几无敌手。

我认为对于不同的时代,介绍不同的术意义不大,c++精通的人,难道不能几周学会java、Python、Golang么;大学高绩点的人,相信对于最新的技术也能有所认知并学习精髓。编程是用于工作,工程中迟早会遇到你完全不会的问题,这个时候能帮你的只有解决问题的能力。

随便聊下,不爽你打我呀。

黑客从什么学起?

跟普通一样,先学会硬件组装,懂基本的硬件常识,安装常见系统,包括Linux、FreeBSD等。接下来再学点黑客攻击和安全防范,黑客攻击经典思路:踩点、扫描、漏洞分析、漏洞攻击、入侵、留后门、伪造日志。

  • 评论列表:
  •  语酌独语
     发布于 2022-08-24 21:14:27  回复该评论
  • 原理等……2016-09-12 00:43:45 6条评论isaacpei, ifelse程序猿首先说明我讨厌固定的方法每个人都是不同的,各位大牛也应该有自己的方法,比如教

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.