个人博客源码,如何才能学好linux?
linux系列有两种发行版本
1).Red
Hat系,包括RHEL、fedora、centos等
2).Debian系,包括Debian、Ubuntu、Mint等
想要学习的话如果个人学习,推荐使用Ubuntu。如果是工作的话,则使用centos学习
1.学习Linux,首先就是安装Linux系统,通过镜像安装,这个过程可以先大概的了解一下linux的启动过程,对一些概念有个大致的印象
2.在安装好的系统之上,学习一些基本命令的操作,比如ls . 列出当前文件夹下的子文件和子目录,cd /root 切换到root的目录下,top命令查看一些进程的cpu,内存等资源的使用情况,ps命令同样也可以查看进程的内存等资源使用情况,pwd查看当前所在的路径等等,将这一些命令熟练的掌握
3.在掌握了linux的一些基本命令之后,那么可以进行一些服务的安装搭建练习,比如在Linux下安装搭建DNS服务器,搭建nginx服务器等等
4.进阶阶段的话,可以尝试进行内核参数的调优,比如tcp关闭连接之后保持高速通道,扩大linux系统的最大句柄打开数之类的内核参数的优化,sysctl -a可以查看目前已经加载的内核参数
5.学会了造句子,那么之后就可以写作文了。同理学会了linux的命令之后,那么可以学习一下shell的基本语句,awk sed的学习,用shell实现一些特定功能的脚本,比如可以通过cat /proc/cpuinfo加上awk命令来实现对cpu相关信息的统计等
有什么自学it技术的好网站?
推荐几个高质量的、适合程序员们的网站(论坛):
1. 博客平台类
1.1 华为云开发者社区
网址:https://developer.huaweicloud.com/华为云开发者社区为广大云开发者提供了资源工具、学习交流、应用实践、大赛活动等一站式服务的平台,里面也提供了很多上云教程供大家免费学习观看,当然利用华为强大的云上资源可以帮助开发者更好地学习到云计算相关知识,社区汇聚各领域精品博客、课程、活动等内容,覆盖鲲鹏、昇腾、云计算、AI 等热门领域,形成开发者和技术爱好者交流与分享主阵地。当然华为云经常举办包括线上线下在内的各种开发者活动,让开发者在快乐中收获知识,充实自己。1.2 51CTO
网址:https://www.51cto.com/51CTO博客是一个面向程序员、运维/网络工程师、以及即将成为程序员的大学生、程序开发爱好者的技术博客平台,提供初中级程序员最新技术实践、程序员面试笔试、程序员职场经验的综合论坛。2. 项目资源类
2.1 github
网址:https://github.com这是程序员们最重要的网站,GitHub是一个软件源代码托管服务平台,其托管版本数量非常之多,其中不乏知名开源项目jQuery、python等。除了允许个人和组织创建和访问保管中的代码以外,它也提供了一些方便社会化共同软件开发的功能,即一般人口中的社群功能,包括允许用户追踪其他用户、组织、软件库的动态,对软件代码的改动和bug提出评论等。2.2 码云代码托管平台
网址:https://gitee.com/码云属于中国的一个代码托管平台,由 http://OSCHINA.NET推出。简单说,相当于GitHub的精简版,且其官方语言为中文。其中也有很多源代码供大家下载。3. 知识学习类
3.1 哔哩哔哩bilibili
网址:https://www.bilibili.com/第一个网站肯定不必多说,就是我们经常逛的小破站,也就是所谓的B站。这个网站原本的定位是一个二次元动漫类的网站,可是走着走着,越走越偏,B站自己也万万没想到自己会变成一个学习类的网站。对于我们程序员而言,这里有海量的编程类的学习资料。不管是什么类型的编程语言,编程技术,你几乎都可以在这里找到对应的视频教程。而且最重要的是,视频播放的时候,不会有任何烦人的广告,几乎不会受到任何打扰。3.2 菜鸟教程
网址:https://www.runoob.com/菜鸟教程提供了编程的基础技术教程, 介绍了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识。我们从它的主页面看过来,教程真的是非常的全面。同时,这里面也提供了非常多的工具,甚至还提供了各种编程语言的在线工具,你甚至都不需要开启代码编写程序就可以直接运行代码,非常方便!3.3 中国大学 MOOC
网址:https://www.icourse163.org/中国大学 MOOC(慕课) 是国内优质的中文 MOOC 学习平台,由爱课程网携手网易云课堂打造。平台拥有包括 985 高校在内提供的千余门课程,每一个有提升愿望的人,都可以在这里学习优质高校课程,与名师零距离交流,并获得认证证书。这个网站中基本上名校的各种专业的视频,这个上面都有,是一个非常好的学习网站,也是强烈推荐的一个网站。4. 论坛交流类
4.1 知乎
网址:https://www.zhihu.com/可信赖的问答社区,上面程序员还是相当多的,或许你对编程学习路线有问题、或许你想要找些资料,这个社区都能毫无保留的满足你。各类各样的程序员问题只有你想不到,没有你找不到。不过要注意,别被其他话题吸引走了目光。4.2 StackOverFlow
网址:https://stackoverflow.com/stack overflow是一个程序员问答平台,你有程序员相关的问题都可以在这边搜索并得到比较专业的回答。这里比某度专业多了,毕竟某度是个综合性的搜索引擎。大家搜索的时候,尽量用英文,你用中文搜索的话,可能得不到太多结果。而很多很专业,直击要点的回答,往往都是用全英文写的。所以大家一定要习惯用英文去获取自己想要的答案。5. 在线编程类
5.1 LeetCode(力扣)
网站:https://leetcode-cn.com无需多说的一个网站,面试必备,上面有大量的面试题,比如最常见的算法面试题,是学习算法必刷的一个站点。5.2 菜鸟工具
网址:https://c.runoob.com/菜鸟教程提供了编程的基础技术教程, 介绍了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识。 同时本站中也提供了大量的在线编程平台,可以帮助开发者进行简单的代码在线运行。5.3 牛客网
网址:https://www.nowcoder.com/牛客网是一个集笔面试系统、题库、课程教育、社群交流、招聘内推于一体的招聘类网站。牛客网题库中包含几万道题目,内容覆盖笔试题解析、面试技巧和机器学习等。6. 总结
程序员的工作和日常生活非常的枯燥,其实每天程序员做的最多的不是写代码,也不是修bug,更不是改程序,而是搜索各种学习网站!程序员几乎每天70%都是在网上查资料。所以优秀的网站可以帮助我们提高工作学习效率,当然也不要忘记在最朴实无华的书籍中获取知识~本文分享自华为云社区《收藏好,程序员必逛的那些网站》,作者:乌龟哥哥 。
如何高效阅读源代码?
下面是之前写的一篇文章:《如何快速阅读源码》
本文探讨在需要了解一个开源项目时,如何快速的理清开源项目的代码逻辑!
以下是个人认为行之有效的方法:
先「跑起来」自顶向下拆解深入细节延伸改进本文以Mybatis为例来进行演示!
先“跑起来”程序界有个老传统,学习新技术时都是从「Hello World」开始的!无论是学习新语言时,打印「Hello World」;还是学习新框架时编写个demo!那为什么这里的「跑起来」要打个引号呢?
实际上,当你想要阅读一个开源项目的源码时,绝大部分情况下,你已经能够使用这个开源项目了!所以这里的“跑起来”就不是写个「Hello World」,也不是能跑起来的程序了!而是能__在你的脑子里「跑起来」__!什么意思?
Mybatis你会用了吧?那么请问Mybatis是如何执行的呢?仔细想想,你能否用完整的语句把它描述出来?
这里是Mybatis的官方入门文章!你是如何看这篇文章的?读一遍就行了吗?还是跟着文章跑一遍就够了吗?从这篇文章里你能获得多少信息?
我们来理一下:
安装如何在项目中引入Mybatis?Mybatis的groupId是什么?artifactId又是什么?目前最新版本是多少?从 XML 中构建 SqlSessionFactorySqlSessionFactoryBuilder可以通过xml或者Configuration来构建SqlSessionFactory,那是如何构建的呢?xml配置了哪些信息?既然使用了xml,那肯定有xml解析,用什么方式解析的?xml里的标签都是什么意思:configuration,environments,transactionManager,dataSource,mappers。以及这些标签的属性分别是什么意思?SqlSessionFactory的作用是什么?不使用 XML 构建 SqlSessionFactoryBlogDataSourceFactory,DataSource,TransactionFactory,Environment,Configuration这些类的作用是什么?*Mapper的作用是什么?为什么提供基于XML和Java的两种配置方式?这两种配置方式的优缺点是什么?从 SqlSessionFactory 中获取 SqlSessionSqlSession的作用是什么?selectOne和getMapper的执行方式有什么区别?探究已映射的 SQL 语句*Mapper.xml的配置是什么?命名空间,id的作用是什么?*Mapper.xml是如何和*Mapper.java进行匹配的?匹配规则是什么?基于注解的映射配置如何使用?为什么提供基于XML和基于注解的两种映射配置?有什么优劣?作用域(Scope)和生命周期SqlSessionFactoryBuilder应该在哪个作用域使用?为什么?SqlSessionFactory应该在哪个作用域使用?为什么?SqlSession应该在哪个作用域使用?为什么?Mapper实例应该在哪个作用域使用?为什么?回答出了上面这些问题!你也就基本能在脑子里把Mybatis「跑起来」了!之后,你才能正真的开始阅读源码!
当你能把一个开源项目「跑起来」后,实际上你就有了对开源项目最初步的了解了!就像「书的索引」一样!基于这个索引,我们一步步的进行拆解,来细化出下一层的结构和流程,期间可能需要深入技术细节,考量实现,考虑是否有更好的实现方案!也就是说后面的三步并不是线性的,而是__不断交替执行__的一个过程!最终就形成一个完整的源码执行流程!
自顶向下拆解继续通过Mybatis来演示(限于篇幅,我只演示一个大概流程)!我们现在已经有了一个大概的流程了:
SqlSessionFactoryBuilder通过xml或者Configuration构建出SqlSessionFactory可以从SqlSessionFactory中获取SqlSessionSqlSession则是真正执行sql的类虽说每个点都可以往下细化,但是也分个轻重缓急!
我们是先了解怎么构建SqlSessionFactory呢?还是了解如何获取SqlSession呢?还是了解SqlSession如何执行sql的呢?很明显,SqlSession去执行 sql才是Mybatis的核心!我们先从这个点入手!
首先,你当然得先下载Mybatis的源码了(请自行下载)!
我们直接去看SqlSession!它是个接口,里面有一堆执行sql的方法!
这里只列出了一部分方法:
SqlSession就是通过这些方法来执行sql的!我们直接看我们常用的,也是Mybatis推荐的用法,就是基于Mapper的执行!也就是说「SqlSession通过Mapper来执行具体的sql」!上面的流程也就细化成了:
SqlSessionFactoryBuilder通过xml或者Configuration构建出SqlSessionFactory可以从SqlSessionFactory中获取SqlSessionSqlSession则是真正执行sql的类SqlSession获取对应的Mapper实例Mapper实例来执行相应的sql那SqlSession是如何获取Mapper的呢?Mapper又是如何执行sql的呢?
深入细节我们来看SqlSession的实现!SqlSession有两个实现类SqlSessionManager和DefaultSqlSession!通过IDE的引用功能可以查看两个类的使用情况。你会发现SqlSessionManager实际并没有使用!而DefaultSqlSession是通过DefaultSqlSessionFactory构建的!所以我们来看DefaultSqlSession是如何构建Mapper的!
它直接委托给了Configuration的getMapper方法!
Configuration又委托给了MapperRegistry类的getMapper方法!
在MapperRegistry类的getMapper中:
通过type从knownMappers中获取对应的MapperProxyFactory实例如果不存在则抛出异常如果存在则调用mapperProxyFactory.newInstance(sqlSession)创建对应的Mapper在这里knowMappers是什么?MapperProxyFactory又是什么?mapperProxyFactory.newInstance(sqlSession)具体做了什么?
其实很简单,knowMappers是个Map,里面包含了class与对应的MapperProxyFactory的对应关系!MapperProxyFactory通过newInstance来构建对应的Mapper(实际上是Mapper的代理)!
快接近真相了,看mapperProxyFactory.newInstance(sqlSession)里的代码:
这里干了什么?
通过sqlSession,mapperInterface和methodCache构建了一个MapperProxy对象然后通过Java的动态代理,来生成了Mapper的代理类将Mapper方法的执行都委托给了MapperProxy去执行如果是Object里的方法则直接执行否则执行MapperMethod的execute方法最终实际还是委托给了sqlSession去执行具体的sql!后面具体怎么实现的就自行查看吧!
延伸改进现在我们的流程大概是这样的一个过程:
SqlSessionFactoryBuilder通过xml或者Configuration构建出SqlSessionFactory可以从SqlSessionFactory中获取SqlSessionSqlSession则是真正执行sql的类SqlSession获取对应的Mapper实例DefaultSqlSession.getMapperConfiguration.getMapperMapperRegistry.getMappermapperProxyFactory.newInstance(sqlSession)通过sqlSession,mapperInterface和methodCache构建了一个MapperProxy对象然后通过Java的动态代理,来生成了Mapper的代理类Mapper实例来执行相应的sql将Mapper方法的执行都委托给了MapperProxy去执行如果是Object里的方法则直接执行否则执行MapperMethod的execute方法最终还是委托给sqlSession去执行sql现在我们大概知道了:
为什么Mapper是个接口了Mybatis基于这个接口做了什么那么,
什么是动态代理(基础哦)?为什么使用动态代理来处理?基于动态代理有什么优点?又有什么缺点?除了动态代理,还有其它什么实现方式吗?比如说cglib?如果是其它语言的话,有没有什么好的实现方式呢?......这个问题列表可以很长,可以按个人需要去思考并尝试回答!可能最终这些问题已经和开源项目本身没有什么关系了!但是你思考后的收获要比看源码本身要多得多!
再循环一轮结束后,可以再次进行:
自顶向下拆解深入细节延伸改进不断的拆解->深入->改进,最终你能__通过一个开源项目,学习到远比开源项目本身多得多的知识__!
最重要的是,你的流程是完整的。无论是最初的大致流程:
SqlSessionFactoryBuilder通过xml或者Configuration构建出SqlSessionFactory可以从SqlSessionFactory中获取SqlSessionSqlSession则是真正执行sql的类还是到最终深入的细枝末节,都是个完整的流程!
这样的好处是,你的时间能自由控制:
你是要花个半天时间,了解大致流程还是花个几天理解细节流程还是花个几周,几个月来深入思考,不断延伸你都可以从之前的流程中快速进行下去!而不像debug那样的方式,需要一下子花费很长的时间去一步步的理流程,费时费力、收效很小,而且如果中断了就很难继续了!
总结本文通过梳理Mybatis源码的一个简单流程,来讲述一个个人认为比较好的阅读源码的方式,并阐述此方法与传统debug方式相比的优势。
如何在博客设密码?
代码: 代码说明: 这段代码粘贴在模块里面的话,别人打开你的博客就要输入你的用户名和密码,才能进入. 如果粘贴在文章里面的话,别人看你这篇文章就要输入你的用户名和密码,才能观看. 粘贴代码: 把以上代码复制--然后在显示源代码情况下粘贴在发表BLOG文章中或者一个已经有内容的模块中即可.
怎么学好编程?
无论你选择哪条路线,只要你练习一下就不难了。查看最流行的语言并确定您要使用哪种语言。我将使用以下其中一项:Java,Swift,Python,C,C ++,smalltalk,PHP。在你找到工作之前,选择哪门语言并没有什么影响。
我不能一步步教你,只能给你一些简单的意见。请注意这些,不要只是“喜欢什么”遵循这些意见会让你学习更快,如果你真的完全遵循这些意见,你可能会成为历史上学习最快的程序员。没有人遵循这些意见,直到他们拥有自己的方式,并且每个人都不一样。这不是一个大问题,因为每个人都这样做,但你可以认真地做出巨大的改变。如果你每天练习并做这些事情,你可以在3个月内轻松就业。如果你不这样做,我会说你至少在任何人雇用你之前,你可能会需要大约1 - 3年的练习。
所以没必要很麻烦,并且在某种程度上不一定按顺序来,大多数不重要,这里是我如何编程的指南:
比你学习/阅读更多的练习方式。不要只是阅读如何做,要去尝试它们。你会发现大多数时候,文本中没有提到复杂性,你会学到更多。仅仅因为你认为你知道如何用C ++创建一个类并不意味着你甚至不知道如何编译代码。这是迄今为止最重要的一点。
不学习编程语言,学会编程。当然,你将使用编程语言并熟练掌握它,但它只是一个工具。如果你从一开始就用语言拿起一本书,你就会学到很多你永远不会用的东西。如果您坚持使用教科书,请使用强调示例的教科书,或者教您编程实践,如Web开发或机器学习。大多数以编程语言为重点的教科书都不是一个好的参考。此外,重要的是不要束缚任何一种语言,特别是作为初学者。那里有很多很棒的材料,用某种语言教授,但是非常重要。您应该能够学习用您从未使用过的语言编写的示例。
尝试随机的东西。尝试新的框架,包,语言,想法等,只是为了看看它们是如何工作的。从未制作过应用程序?试试吧。从未使用过前端JS框架?试试吧。买arduino。获取一本面向对象设计的书。尝试将NoSQL数据库用于下一个项目,或尝试在AWS上使用托管数据库。
不要休息几天。休假可以带你离开这个区域。你总是在脑海中想到这些问题。休息几天迫使你回到区域,记住事情。无论我是下班回家还是在健身房,我总是想出解决问题或冷静思路的方法。
使编程成为一种爱好。学会享受它。这可以避免阅读教科书和练习更多。获得经验。不要说“我听说这是一个坏主意。”说“这是一个坏主意,这就是我在尝试时发生的事情。”我保证,没有人会对你在教科书中读到的东西大肆宣传。好吧,至少没有他们关心你亲身经历的那么多。
完成项目100%。不要说'呃它已经完成了。' 然后继续前进。完成它。发布它。告诉你的父母和朋友使用它。你永远不会知道实际剩下多少工作。项目的最后可能会在代码中引入大量漏洞。更重要的是,一旦你推出它,你的用户会发现更多。将其发布并让人们使用它。
网络。github上各种开源项目,他们有很多知识可以给我。我还与一些kickass工程师/开发人员合作,给了我很多无价的知识。尽可能在团队中工作,它将教会你公司如何大规模地做事。在与他人合作项目时,版本控制,任务管理,代码文档,代码可读性,对象的松散耦合等等都变得更加重要。
阅读科技博客和信息网站。Techcrunch,Techmeme,Medium,Stackoverflow,Linkedin和facebook是我最常用的。这些的新闻都充满了科技行业的最新信息。