关于学习的一些建议

本文的主要讲的内容如图?

image

文末附有整个Java的学习路线、能力提升和学习建议的思维导图。

快过新年了!在过去的一年里,你们收获了什么呢?在未来的一年里,你们有什么新目标吗?

1.定目标

过去的我往往喜欢在新年里定下宏伟目标,迎来的却是年底猛烈的打击。目标过大往往难以实现,反而信心遭受打击,没有动力继续坚持。我的建议是分成两种目标

长期目标:比如这一年要达到一个什么样的层次

短期目标:比如这个月要完成哪些知识的学习

根据个人水平,先定制可行的长期目标,却莫贪,求实际,实事求是;

再将长期目标细分为多个短期目标,比如每个月要完成哪些知识的学习;

还可以再分为每周目标,一周一周的完成并回顾。

切莫目标定的过细,不要定那些,每天7点起床,8点学习,12点吃饭……22点半睡觉这些目标,你只需要确保每天的学习量达到了短期目标的预期,不会对你的短期计划造成影响即可,多的时间爱干嘛干嘛,劳逸结合才是持续成长的硬道理。

2.学习记录

版本控制工具存档

做开发的都知道版本控制工具GitSVN,将笔记提交到Github或Gitee个人私有仓库。

每次学习记了笔记,文档都会有提示哪些文档未提交,下次学习打开文档就知道上次学到哪里了。文档的提交按个人定的短期目标来,每次提交笔记像是打怪升级一样充满成就感,不断的完成了一个个小目标,促使自己不断学习。除此之外,还可以避免笔记丢失和记录学习过程——Git或SVN有提交记录,可以在年底看看自己都学了些什么,有没有达到最初定好的长期目标。

思维导图统全局

使用思维导图工具梳理知识脉络,对知识有个系统的认识起到统领全局的作用,也方便记忆。但不适合保存过于细节的内容,细节的内容可以使用下面介绍到的。

思维导图的工具有很多,比如:XMind思维导图。

文档图片存细节

使用docx来保存笔记的细节内容,并建好docx文档的目录。在梳理和记录笔记的同时,加强独立思考、提高记忆和方便后续回顾知识点,所以目录要建好,方便后续查找。关于图的绘制就推荐常见的Visiodraw.io或在线画图ProcessOn。

备忘和待办

在工作和学习建议使用OneNote工具来做备忘和待办等操作,不建议使用手机的备忘录(怕你拿了手机就忘记了学习),生活上的备忘和待办才建议在手机上记录。

注1:工具的使用还是看个人习惯,毕竟思维导图、文档、绘图这些工具非常多样化,只要能达到效果即可。

注2:如果不知道怎么分类笔记,可以参考文末Java学习路线作为笔记文件夹名

3.编程建议

我是否适合编程?适合!天才不能说没有,但不管是谁都需要经历不断学习积累,仍是厚积薄发。看到他人辉煌时,定知背后的艰辛,没有等待出来的伟大,只有汗水铸就的辉煌。所以别问是否适合,问就是:适合。刻意练习相同的程序,多次编写,别眼高手低

看得懂别人写的程序,那是很正常,如果看都看不懂更别谈其他的,看懂只是开始,不代表你会写,换了个写法可能你就蒙圈了。所以必须从看懂到能写出来,再到熟练掌握。化繁为简,逐一击破,练习缺陷、弱点地方。

分享:在学习的道路上,总结了一个不太完善的公式,拿出来分享下,知识=基础+受教+思考,经验=知识+实践,由其一二得其三:经验=基础+受教+思考+实践。要知道经验才是你一生受用的,知识只是理论前提,没有实践过的知识只是空谈的理论。在编程上,工作要的是编程经验,而不是口头谈的理论,所以实践是你必经之路,不管难易亦是如此。

4.其它

提高阅读能力

推荐一本书:《如何阅读一本书》

自我升华三阶段

  • 从学会使用(知其表)

  • 到深入架构设计原理(知其理)

  • 再到自研技术(思想铸造)

整个Java的学习路线、能力提升和学习建议的思维导图

Java全栈学习路线、学习资源和面试题一条龙

image

image

Java 可重入锁的那些事(一)

Java中的线程安全与线程同步

Java线程状态(生命周期)--一篇入魂

自己编写平滑加权轮询算法,实现反向代理集群服务的平滑分配

Java实现平滑加权轮询算法--降权和提权

Java实现负载均衡算法--轮询和加权轮询

Java全栈学习路线、学习资源和面试题一条龙

更多优质文章,请关注WX公众号:Java全栈布道师

image

本文转载于网络 如有侵权请联系删除

相关文章

  • 有规律格式化文本文件插入数据库

    现有以下文本文件:*理光(深圳)工业发展有限公司(D15)(位于福田区) 1.厨师1名;男;30岁以下;高中以上学历;中式烹调师中级以上,需备齐身份证/毕业证/流动人口婚育证明原件及复印件1份.经公司体检不合格者将不予录用,不合格者体检费自理.福利及待遇:工作时间8小时/天.5天/周,双休及国家规定之法定假日休息,免费中餐,免费住宿,为员工投养老工伤医疗保险.提供学习机会. 本公司经营范围:设计,生产复印机,传真机,打印机等; 有意者请于11月9日到本大厦二楼面试。 $ *百佳超市(C10)(位于罗湖区) 1.会计文员1名;女;中专以上学历;有1年以上财务工作经验;财会专业,有对帐经验者优先,成熟稳重,能适应较强的工作压力。 2.便衣保安2名;男;高中以上学历;沟通表达能力好,能吃苦耐劳,有一定的稽查及防损经验,为人正直,有同职工作经验优先。 以上职位要求应聘者身体健康,能自行解决食宿,有年薪假及社保等福利。 有意者请于11月9日、11月11日到本大厦二楼面试。 $ *山姆会员店(A14)(位于福田区) 1.防损员1名;25岁以上;大专以上学历;富有敬业精神和团队合作意识,个性稳定,有

  • 在CentOS中部署多节点Citus集群的详细步骤

    前言本文主要介绍了关于CentOS中部署多节点Citus集群的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。1、在所有节点执行以下步骤Step01添加CitusRepostory#AddCitusrepositoryforpackagemanager curlhttps://install.citusdata.com/community/rpm.sh|sudobash复制Step02安装Citus并且初始化DB#installPostgreSQLwithCitusextension sudoyuminstall-ycitus72_10 #initializesystemdatabase(usingRHEL6vs7methodasnecessary) sudoservicepostgresql-10initdb||sudo/usr/pgsql-10/bin/postgresql-10-setupinitdb #preloadcitusextension echo"shared_preload_libraries='citus'&q

  • 开发项目初始需要做什么?

    四叶草项目起步阶段,往往是与产品确认需求,先是头脑风暴,然后便是开发设计,但是在此过程中还有一点很重要.那便是要与开发团队约定开发规范,例如代码规范,数据库规范,接口规范,设计规范等等.为什么要定这些,怎样定.我之前的经验是,这些东西完全就我自己出了,然后跟同事review一下就完事了,这样就会有很多问题,首先便是,在review时,并没有太多人会上心,多是都是走过场,这就为将来埋下隐患了。如果每个程序员都是脑力劳动者,经常会出现同行相轻的情况,相信这种情况大家见得很多了.你我也是,在代码上谁服谁啊,都以为自己天下无敌,有几个能做到清醒的自我认识。特别是现在搜索网站这么发达,很多时候一个人宁可去相信百度,也不相信你的规范,更多的时候都是拿百度的搜索结果质疑你的规范。所以,最近我思考改变后的做法便是,每个规范都拿出不到一个小时的时间,然后让所有的程序员坐在一起,大家很民主的共同讨论这个规范,有任何争议,每个人先阐述各自的理由,如果仍然有争议,那么便通过投票来处理,这样最后的结果就作为整个团队的规约,并且言明,如果在项目开发过程中,仍然有人不按照游戏规则来,那么就是这个人的问题了,那这个人

  • CAD2007操作教程上

    目录第一章初识AutoCAD20074页第二章辅助绘图6页第三章绘制简单二维图形对象9页1.绘制直线、构造线、射线9页2.绘制点、矩形、正多边形10页3.绘制圆、圆弧、椭圆、椭圆弧14页第四章绘制复杂的二维图形17页绘制多线、多段线、修订云线、样条曲线17页第五章使用面域与文字的创建22页第六章图案填充与创建管理块命令23页第七章使用图形编辑命令30页1.删除、复制、镜像、偏移30页2.阵列、移动、旋转、缩放、拉伸33页3.修剪、延伸、打断与打断于点36页4.倒角与圆角、分解40页第八章图层的使用与管理42页第九章尺寸标注的创建与编辑47页1.尺寸标注的组成、创建与设置标注的样式47页2.尺寸标注的类型57页第十章三维对象的创建及编辑61页1.绘制三维实体61页2.三维实体的编辑71页3.渲染三维实体76页第十一章图形的输出、打印81页第十二章设计理念82页课程表第一周周一初识AutoCAD2004周二辅助绘图周三直线、构造线、射线周四点、矩形、正多边形周五圆、圆弧、椭圆、椭圆弧第二周周一多线、多段线、修订云线、样条曲线周二文字、面域、测量工具周三填充、块命令周四删除、复制、镜像、偏移

  • 俺好像看懂了公司前端代码

    ●●●他来了,他来了,他掉着头发走来了。大家好,我是前端开发者卜壮,经过笔者上篇《俺咋能看懂公司前端项目?》之后,不知道大家有没有学到其设计思想并应用到自己的项目中。我相信你们,肯定没有。趁着头发茂密,让我们步入正题!今天的主角React,它作为当今社会的前端主流框架,在前端框架江湖中算是一哥的存在,凭借小巧高效灵活等特点,完成了众多企业级的大项目,并且衍生了很多其他的框架,比如像跨平台移动开发ReactNative,它的一套代码可以运行在Android和iOS。然而这些都不是本篇文章的重点。今天的重点是React或ReactNative如何高效管理调用后端接口,和上篇讲到Vue管理后端接口一样,它们有很多相似性,也有不同之处,因为我们知道它们开发模式和方法有些不同。起初的想法,Vue有自己单独的状态管理器Vuex,React也可以用Redux来管理状态;Vue提供了混入(mixins)的开发方式,虽然React起初也有混入的功能,后来被舍弃掉了,但是React可以通过高阶组件来实现混入的功能。基于这些想法,该出手时就出手,风风火火参北斗啊。后来,我终于学会了让自己爱自己,搞错了,我终

  • R实现PCA降维

    PCA(PrincipalComponentAnalysis),即主成分分析方法,是一种使用广泛的数据降维算法。详细的概念可以参照https://zhuanlan.zhihu.com/p/37777074 一般将多个样本降维就可以得到二维的分布,相似的样本成为一群,但有时候我们想知道哪些特征导致了这样的分群。 这里我们主要讨论怎么样用R实现以及提取我们需要的特征: 用R实现PCA有多个方法: prcomp()andprincomp()[built-inRstatspackage], PCA()[FactoMineRpackage], dudi.pca()[ade4package], andepPCA()[ExPositionpackage]install.packages(c("FactoMineR","factoextra")) library("FactoMineR") library("factoextra") #输入的data.frame data(decathlon2) head(decathlo

  • Hack the box靶机实战:Haystack

    介绍目标:10.10.10.115(Linux) Kali:10.10.16.61HayStack在HTB里面的难度评级是简单,但其实它一点都不简单。在一堆西班牙语中找到用户名和密码真的好头痛。对于root权限,你应该对ELK有基本的理解。因此,这台机器还是比较新颖的。随带提一句,前段时间出现的KibanaRCE漏洞就可以拿来利用。信息枚举老规矩,用nmap扫一轮:#Nmap7.70scaninitiatedSunJun3001:10:532019as:nmap-sT-p---min-rate1500-oNports10.10.10.115 Nmapscanreportfor10.10.10.115 Hostisup(0.27slatency). Notshown:65532filteredports PORTSTATESERVICE 22/tcpopenssh 80/tcpopenhttp 9200/tcpopenwap-wsp复制检测到的服务:#Nmap7.70scaninitiatedSunJun3001:13:052019as:nmap-sC-sV-p22,80,9200-oN

  • LintCode-8.旋转字符串

    题目描述给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)样例对于字符串"abcdefg".offset=0=>"abcdefg" offset=1=>"gabcdef" offset=2=>"fgabcde" offset=3=>"efgabcd"复制解答思路乍一看的思路是建立新的数组往里面填,空间复杂度O(n),时间复杂度O(1)。看了一下“挑战“是空间复杂度O(1),那么就是循环咯(没百度,可能有更6的办法)。按照字面意思往后偏移。offset是多少偏移多少次。 注意时间限制(TimeLimitExceed):offset=offset%length。代码publicclassSolution{ /** *@paramstr:anarrayofchar *@paramoffset:aninteger *@return:nothing */ publicvoidrotateString(char[]str,intoffset){ //writey

  • MATLAB 批量文件重命名(详细解释)

    版权声明:本文为博主原创文章,未经授权禁止转载。https://blog.csdn.net/u010099080/article/details/49915743这段时间在用matlab做手写数字识别,处理样本的时候需要对样本文件进行重命名,可是有好多,总不能一个一个重命名吧,于是上网百度了好多,不过大多都一样,但是没有解释,只有干巴巴的程序,弄了好一会才弄清楚(我太菜了……),于是写下了以备后用。更新这里我会列出对本文的更新。2017年3月21日:优化排版,去除多余和易误导人的语句。2017年3月25日:优化代码,增加重命名成功失败提示,增加程序的一点说明。问题假设我有0.bmp,1.bmp,2.bmp,……,99.bmp等100个bmp图像文件,出于某种需要我要在名字前加上一个RH_字符串。代码files=dir('*.bmp'); len=length(files); fori=1:len oldname=files(i).name; newname=strcat('RH_',oldname); command=['rename&

  • 关于《决战大数据》读这50条就够了

    老师在其决战大数据一书中,强调的更多的是一种数据思考方式,书中范例介绍的小偷思维、先开枪后瞄准、CEO关注的三个问题等,都属于数据思考方式重构解决问题的过程。 全书从为什么大数据说起来容易做起来难出发,以大数据构建未来商业利器结束,总共花费了11个章节,中间穿插着其在阿里的数据实践经验,本人结合自己的读书体会,特将其总结归纳为以下50条:1、大数据从来都不是免费的午餐,因为数据来源渠道的宽泛,难免出现偏倚误差。2、人的断层是是大数据应用面临最严重的问题,这个断层包括沟通的断层、建模的断层,譬如现在收集数据的人不知道未来使用数据的人要什么?创建模型的人不知道未来数据是否稳定,使用模型的人不知道数据的来龙去脉。3、从数据化运营到运营数据,是从看到用的过程。这个过程需要主动管理,需要更多的创新,需要学会问问题,问问题的过程就是寻找答案的过程,好的问题就是答案。4、从商业角度讲,大数据的本质就是还原用户的真实需求。5、数据价值的如何判定?首先看这个数据与你的目标是否一致,对你的价值是什么?其次看这个数据能否清楚的识别用户身份,以及反应出的对应的场景。6、学会双向思考,关于数据的价值,对于企业而

  • linux下快速查找文件

    大家好,又见面了,我是你们的朋友全栈君。在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。  区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。(3)which查看可执行文件的位置,只有设置了环境变量的程序才可以用(4)whereis寻找特定文件,只能用于查找二进制文件、源代码文件和man手册页(5)locate配合数据库查看文件位置,详情:locate-h查看帮助信息一.find命令    基本格式:findpathexpression    1.按照文件名查找    (1)find/-namehttpd.conf  #在根目录下查找文件httpd.conf,表示在整个硬盘查找     (2)find/etc-namehttpd.conf  #在/etc目录下文件httpd.conf     (3)find/etc-name‘*srm*’  #使用通配符*(0或者任意多

  • 前端基础进阶(十六):ES6常用基础合集

    变量声明方式let/const与var不同,新的变量声明方式带来了一些不一样的特性,其中最重要的两个特性就是提供了块级作用域与不再具备变量提升。通过2个简单的例子来说明这两点。{ leta=20; } console.log(a);//aisnotdefined复制而这个简单的例子,会被编译为:{ let_a=20; } console.log(a);//aisnotdefined复制//ES5 console.log(a);//undefined vara=20; //ES6 console.log(a);//aisnotdefined leta=20;复制 变量提升demo示例我们常常使用let来声明一个值会被改变的变量,而使用const来声明一个值不会被改变的变量,也可以称之为常量。当值为基础数据类型时,那么这里的值,就是指值本身。 而当值对应的为引用数据类型时,那么这里说的值,则表示指向该对象的引用。这里需要注意,正因为该值为一个引用,只需要保证引用不变就可以,仍然可以改变该引用所指向的对象。当我们试图改变const声明的变量时,则会报错。写几个例子,大家可以仔细揣摩一下

  • 用户注册_前端实现

    <!DOCTYPEhtml> <html> <headlang="en"> <metacharset="UTF-8"> <title>注册</title> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> <metaname="format-detection"content="telephone=no"> <metaname="renderer"content="webkit"> <metahttp-equiv="Cache-Control"content="no-siteapp"/> <linkrel="styleshee

  • 我把Redis复制、哨兵和集群的流程图整理了一遍

    最近在二刷《Redis设计与实现》,顺便把Redis的源码也撸了一遍。以下是我对照Redisv3.0的源码将Redis复制、哨兵和集群相关流程整理了一遍供大家参考。 流程图使用OmniGraffle做的,为了方便分析尽量都对每个流程按照不同视角或是不能功能部分分了图层处理。以下也都会先以分图层展示,最后再合并展示主流程。 复制流程 SlaveView MasterView 完整流程 哨兵 哨兵启动流程 SentinelTimer 完整流程 集群 集群节点启动流程 clusterCron 集群文件时间处理(普通客户端命令与集群消息) 集群完整流程 以上源文件可以私信我索取。源代码注释可以从我的代码仓库。

  • dart中factory关键词的使用

    一.官方的描述 Usethefactorykeywordwhenimplementingaconstructorthatdoesn’talwayscreateanewinstanceofitsclass.Forexample,afactoryconstructormightreturnaninstancefromacache,oritmightreturnaninstanceofasubtype. 当你使用factory关键词时,你能控制在使用构造函数时,并不总是创建一个新的该类的对象,比如它可能会从缓存中返回一个已有的实例,或者是返回子类的实例。 二.与构造函数的差别 构造函数不能有返回值,而factory必须有 三.3个使用场景 Afactoryconstructorcancheckifithasapreparedreusableinstanceinaninternalcacheandreturnthisinstanceorotherwisecreateanewone. 避免创建过多的重复实例,如果已创建该实例,则从缓存中拿出来。 Youcanforexample

  • 常用类课后作业

           

  • ES6 19Promise状态特点

    要点:1.状态特点2.更多方法 一、状态特点 1.Promise解决了异步多层回调混乱,且执行顺序的问题 2.Promise对象异步操作的三种状态: (1).Pending(进行中) (2).Fulfilled(已完成) (3).Rejected(已失败) 3.当异步操作执行之后,它得到的结果来决定其状态,其他任何操作都无法改变 4.Promise状态只有两种运行方式:从Pending到Fulfilled或Rejected 5.当状态已经固定后,此时就变成Resolved(已完成)  Pending ->resolve方法 -> Fulfilled-> Resolved Pending ->reject方法 -> Rejected -> Resolved 测试当前状态,在浏览器环境下比较直观:console.log(p1),在不同阶段执行   二、更多方法 1.Promise实例可完成异步的排序输出问题 2.Promise提供了一个all(

  • 内核通知链

    2022-09-2318:07:48星期五 Linux内核品读/基础组件/通知链快速入门

  • java设计模式:简单实现生产者和消费者模式

    ? 博客搬家:初版发布于 2016/04/1520:31 ? 原博客地址:https://my.oschina.net/sunqinwen/blog/660881 本实例中单独为生产者和消费者各开辟一个线程作为生产者和消费者的执行线程,在生产者消费者设计模式中存在一个数据缓冲区,使生产者和消费者的“生产”和“消费”动作都在该缓冲区进行,这样做的目的就是保证了生产者和消费者的完美解耦,试想一下如果没了这个缓冲区,生产者和消费者中的方法互调,那么两个类的关联度(耦合度)就会很高,一旦一个发生变化,势必会影响另外一个; 下面开始我们的实例: 首先是生产者的代码: /** *生产者 */ publicclassProductimplementsRunnable{ privateQueuequeue; publicProduct(Queuequeue){ this.queue=queue; } @Override publicvoidrun(){ try{ for(inti=0;i<10;i++){ queue.product("Product--

  • clr via c# 读书笔记

    WOW64 WOW64(Windows-on-Windows64-bit)是一个Windows操作系统的子系统,它为现有的32位应用程序提供了32位的模拟,可以使大多数32位应用程序在无需修改的情况下运行在Windows64位版本上。复制   com对象 COM:TheComponentObjectModel组件对象模型 COM组件是遵循COM规范编写、以Win32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行二进制代码,能够满足对组件架构的所有需求。恩,就是dll跟exe文件。复制   线程同步你说完,我再说。与ajax异步相反。 lock是比较简单的线程同步方式,通过为给对象获取互斥锁实现同步。它可以保证当一个线程在关键代码段的时候,另一个线程不会进来,它只能等待,等到那个线程对象被释放,也就是说线程出了临界区。 publicvoidFunction() { objectlockThis=newobject(); lock(lockThis) { } }复制  

  • dom4j读取某个元素的某个属性

    一、dom4j介绍dom4j是一个Java的XMLAPI,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的JavaXMLAPI,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBMdeveloperWorks上面可以找到一篇文章,对主流的JavaXMLAPI进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包,Hibernate用它来读写配置文件。dom4j主要接口都在org.dom4j这个包里定义:AttributeAttribute定义了XML的属性BranchBranch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为,CDATACDATA定义了XMLCDATA区域CharacterDataCharacterData是一个标识借口,标识基于字符的节点。如CDATA,Comment,

相关推荐

推荐阅读