编程导航阅读话题讨论

阅读

96 参与
分享

快来分享你的内容吧~

点击登录,快来和大家讨论吧~
表情
图片
话题
打卡
综合
交流
文章
问答

刻意练习(人人皆可成天才) 天才与正常人的区别,就在于刻意练习自己。这是一套属于自己的系统性学习方法,这套方法在于不断突破自己的边界。我看的这本书给我们带来了一个不可思议的未来,原来认为只有个别人才能完成的事情,现在通过事实,通过论证,通过实验,证明这是完全有可能的。将刻意练习的方法引入到生活学习中的时候,我们都可能变得更加专业,更加厉害!无论年少还是年长,我们都会成为大师,只要掌握了刻意练习的方法。历史上有一个著名的一万小时理论,就是无论你在什么领域,只要你练习的时间达到一万小时,你就能成为天才,但是今天我们要打破这个理论。 1.天才举例 (所谓天赋是可以被训练出来的) 例:莫扎特,是在音乐领域具有极高天赋的奇才,具有完美音高绝对音域。后来才知道是他的父亲在他小时候对他进行了练习。 例:帕格尼尼,练小提琴的天才,曾经在演出时,只用一根弦演奏完整场曲目,当时轰动一时,人人皆称他为“神人”。后来才知道他是刻意为之。 2.突破一万小时理论 (只要你训练自己,挑战自己,你一定能够不断的突破前人的这些成绩) 例:记数字:曾经有一位大学生兼职记数字记得越多越好,每周大概一个小时时间,一共大概记了两年;大概练习了100多个小时,之后竟然可以一口气记住82个数,人们惊呼,为最强大脑! 例:1908年,马拉松比赛,马耶斯夺冠并创造了世界纪录。两个小时55分钟18秒的成绩,但是在今天记录被刷新到了两个小时,两分钟57秒,被刷新了将近一个小时。而且假如你是18岁到30岁之间的男性,想要参加马拉松比赛,你的成绩不能低于三小时五分钟.…换句话说,那时候的世界纪录在今天刚刚能够达到入选资格。 例:跳水、背诵圆周率、做俯卧撑等等的可查数据,都在不断的被刷新。 以上证明,并不是非要到达一万个小时才能成为天才,而是你刻意练习的时间足够长就可以。 3.刻意练习(步骤) 刻意练习,从新手到大师。我们认为杰出的人都是因为天赋,而那些天才其实是来自正确的刻意练习。 *第一步:具有明确的目标(最好是可衡量的) *第二步:专注(这个很重要,最重要!) 例:富兰克林下国际象棋做休闲活动,自己总是很苦恼,不能成为大师的原因就在于他没有专注。但是他是写作的高手,因为他在写作上进行了刻意练习,从小时候开始他家很穷,但他就很想写作,然后就找了一本杂志,看完一篇文章往边上一放,然后进行仿写,就是假装又写一遍这个课文,然后再拿去和原文对照。 *第三步:努力的挑战走出舒适区(大脑有极强的适应能力)每一次的练习都要与上一次不一样,哪怕进步一点点。 *第四步:每次练习都要有反馈。(找个教练) 4.心理表征(我们要接受这个新概念) 概念:你对一个事物所形成的一个反应(下意识),形成方法记忆,这是刻意练习的核心! 5.论证刻意练习 曾经有人做过实验,找了一群拉小提琴的小孩儿,当然,这个数字很大的。统计他们在18岁之前刻意练习的时间。最后,他们将拉小提琴的人主要分为三类:优秀、优异、杰出;他们之间的刻意练习时间 … 优秀:3420小时 优异:5301小时 杰出:7402小时 得出的结论,优秀程度与刻意练习的时间有关。 6.3F原则(在刻意练习中的原则) ——focus,专注,认真(过程是枯燥的,而在这个过程中,我们不断的去坚持,才能和别人不一样) ——feedback,找人给自己做反馈(实现自己的梦想,比如有一门比较棒的外语) ——fix it 修正,(发现有问题的时候,改正它不断修正,不断练习进步) 7.普通人到大师经历的四个阶段 ——产生兴趣(自己或外部给自己创造机会,看看兴趣会不会在这里发生) ——变得认真(开始有节奏,有规律的投入) ——全力投入(一段时间内做一件事,专注) ——开始创新(当你在现有学习的基础上,开始创新思维,开始整理自己的新理解) 最后我想说 千万不要给自己设立疆界,不要认为这辈子就完了,不要认为我们没有学习就没有所谓的天赋,是我认为特别学术型的一本书,内容可能很枯燥,但是他离我们的生活,离我们的工作很近,记得,鱼皮曾经讲过一种心流,我觉得与刻意练习中的系统的学习方法大同小异,无非就是专注一件事情,只有专心致志的做一件事情,才能赢得最后的胜利,才能取得最后的成功,人人皆可成才,通过刻意练习的方法,就可以论证人人皆可成才,人人都将有成才的机会。

知行合一(二):达到知行合一,要摒弃所有的欲望,会不会是个骗局呢?

那么什么叫知易行难呢?也就是知道一个道理很容易,但真正付诸实践却很难。 其实在写这篇文章的时候,我就在想,我真能够把这个写好?写好的前提,也就是得我真的已经改变了知易行难,达到了知行合一。 ## 1、读书的例子 接下来就给大家分享一个例子,关于读书的例子,19年的时候,我就了解到读书的一个好处,能够扩充一个人的知识储备和眼界,但是同样的,我也遇到了上面的问题,读书,很枯燥,很无味,远没有手机去刷短视频,看电影来的那么的刺激多巴胺。所以呢,经常读一会,就不想读了。我看了一下,19年,我读完了一本书,然后再看看20年的阅读量,我很意外,哎,怎么没有呢?居然一本都没有读,21年读完了3本,22年读完了3本,4年总共加起来读了有7本书。 可以说是知易行难的最好例子。 但在23年的时候,我就读了有14本书,可以说,是前面4年总和的两倍。在这一年中,看了一本非常好的书,叫做如何阅读一本书,那个时候我就知道,原来很多事情都是需要学习的,不仅仅是拿起来就做,然后做的方法不需要优化,遇到困难就放弃。看了那本书之后,解决了为什么读书会很枯燥,如何找一本适合自己的书,不同类别的书,应该采取什么样的方式去读,个人成长类的书应该如何读,长篇小说类的书应该怎么读。读书应该采用什么方法,是读一篇,还是读很多篇,有些书略读,有些书速读,有些精读。并且我了解到了,阅读其实也是有一个阶梯的,就是说,阅读是一个不断提升阅读能力和理解能力的一个过程,所以我们不仅只读同类型的书籍,也要挑战一些心理学,经济学,长篇小说等等,找有挑战的书。所以那一年,阅读的速度也变快了,理解能力增加了。 但就真的已经改变了知易行难?,依然没有,14本书平均下来,也不过一个月读了一本书差不多。我依然遇到了上述的问题,想累呀,困呀,手机的影响呀,等等,但随着阅读量的增长,也逐渐清晰了问题,找到了一些方法去解决,比如累和困,那么就小睡一会,然后还看了一些休息的书籍,但依然没有解决的太好,然后有一年,基哥在群里面分享了咖啡的好处,可以说是一个非常好的一个东西,我就在家里买了一台咖啡机,晚上的时候就喝,非常的提神,你会发现,注意力变得很集中了,变得更加专注了,也不累了。两种方法结合,解决了这个问题,但我想其实并不仅仅是这两种方法解决的,之前的积累的阅读,年龄的增长,身边的变化,也有一定的影响。 在比如说手机的问题,也有了方法,比如以其深处诱惑的环境去抵抗诱惑,倒不如原理诱惑的环境。等等,问题还有很多,还需要一个一个去解决。 那么知易行难的问题就解决了吗?其实远没有达到我想要的那种效果,还是存在很多的欲望,我发现之前能看很多书,是在有那么的几个月,确实改变了知易行难,达到这种效果,但是这种状态在几个月以后,就消失了,即使我很努力的想了解我为什么会有这种状态,但怎么都总结不出来,也就是处于一种不可控的状态,不能收放自如。 但是我依然在24年的时候就看了有21本书,但依然还是存在缺陷。 ## 2、长达6年,找到方法 最近哪吒不是很火?饺子导演也受邀参与了一个采访,采访就问,在电影里面为什么会有一个这样的片段呢,就是,哪吒从小就受冷眼,因为他是魔童,大家都很害怕他,喜欢捣乱。然后还有一个敖丙,同他差不多,也是有着同样的经历,哪吒就教他“不要在意别人的目光”,但后来的片段中,哪吒依然会受这个影响,还是会不自觉的在意别人的目光,为什么呢?然后饺子导演就说:一个人要强大到什么样的状态,才能完全的不在意别人的评价呢?如果说他说就能一辈子的去践行这个道理的话,那么这个人是不真实的,真实的人是复杂的。 我也在想,我们真的能够完全摒弃欲望,不受欲望的影响?在春节前,有个给我分享了关于王阳明的一些书籍章节给我,王阳明想做圣贤,那么朱熹的理论是,要去人欲,存天理,他在这个过程中,非常的努力去悟,但是都悟不到精髓,有一天他去庙里,遇到了禅师,就问他,有家吗?禅师说有,然后再问,家中尚有何人?母亲尚在,你想她?禅师沉默了许久,然后感叹的说,怎能不想啊,然后王阳明就说,想念自己的母亲,没有什么好羞愧的,这是人的本性,禅师没说话,默默的留下了眼泪,第二天他就告辞返乡了。 王阳明也悟出了一个道理,不论何时,何地,有何种理由,人性都是不能,也不会被泯灭的。欲望也是一样,人虽然有着种种欲望,但是也合乎情理,强行用所谓的天理去压制,只能适得其反。但为什么呢?他还需要一个理去支持,最后他悟出来,要随心而动,随意而行,万法自然,也就是,要遵从内心的真实的感受和想法,要以一种平和的心态去接受和应对挑战和困难,要尊重自然规律,不过度的去追求一些功力和成功。 到这里,如何改变知易行难呢,并不是说我们就摆烂,我们一定要追求他,不管他有多困难,因为我们所付出的努力远远没有达到所谓的一个过度。 只有知道前方有困难,才会无所顾忌的前进,正因为他很困难,我们才能懂得,不要因为一点失败,就气馁,就消极,关键是我们要在这条路上,找到更优的方法。 改变知易行难,需要总结的东西有很多,需要我们在路上,不断的解决,不断的思考,实验才能找到方法。知行合一这本书,我在21年的时候就看了,我但是也觉得是神书一本,得此书犹如得尚方宝剑一般,可披荆斩棘,开启狂暴人生,冷静下来以后,才发现,不是看看就可以了,还需要时间。 好了,以上就是我的全部内容,谢谢大家。

给大伙分享 某谷内部的Vue3和Ts的快速入门笔记,希望对新入门前端的大伙有帮助[西瓜],如果对你有帮助动动小手点个赞,后续有比较不错的资料会继续分享[奸笑] #资源# #阅读# #前端# #技术#

#阅读# 读到了一句话,“工作只是让我们变的原子化,当社会分工越来越细化的时候,我们都是屈从的,闲暇的时光才决定了你要成为什么样的人。”不是我们没有闲暇的时间,而是我们学不会闲暇了。今天很累,但是仍然在床上刷了一晚上抖音,然后说我还是感觉很空虚,我感觉今天什么都没有看过。经历了闲暇的时光却得不到休息,我们变得更疲惫更焦虑。这个社会给大家制定了各种各样的kpi,我们怕输在起跑线上,怕输在各种各样的节点上,我们认为只要出现了一段空窗,一段时间的闲暇,就不被社会定义为成功者,我们就在慢于这个社会,被这个社会抛弃。但是我们的人生轨道本来就不一样,人生不是一场马拉松。我们活的越来越焦虑的原因是找不到价值感的来源,做什么事情都要求得到反馈,把价值感来源放在了客观的标准,只会让我们活的越来越焦虑。套用越来越多功利的标准让我们闲暇的时光越来越累。所以你要学会闲暇,做你想做的事,爱你想爱的人。我不是为了提供一套方法论,我是在找真正的自己。 最后,不是工作的价值决定了你成为谁,那些独属于你的时光才决定了你是谁。

《代码整洁之道 - 程序员的职业素养》读后感

<html> <head></head> <body> <div class="content ql-editor"> <p>大家好,我是阿星,今天不分享技术,分享我最近读完的一本书《代码整洁之道》。这是我在微信读书读完的第五本书,有图为证: <img src="https://pic.code-nav.cn/planet_post_image/1619930914211520514/zr676vwa.jpeg" alt="image.png"> 《代码整洁之道》这本书,算是我看完的第一本技术类书籍。下面我想分享一下我为什么要看这本书,为什么要写这个读后感,以及我是怎么读的,最后分享我从本书中收获到的知识,我会实践哪些行动</p> <p></p> <h2>起因</h2> <p><br></p> <p>您可能会问,为什么要阅读这本书呢?其实,我选择阅读这本书的原因非常简单,那就是为了提升自身的工作技能。不知道大家使用过老鱼简历没?如果您正好想要为自己准备一份简历,不妨前往:<a href="https://www.laoyujianli.com/" target="_blank">https://www.laoyujianli.com/</a> 进行尝试。但是老鱼简历开发到现在,我处理了无数的 bug,老鱼简历的代码质量也还有待提高。即使有人查看了我的代码,并对我进行指责或批评,我也不会反驳或回击,因为我无从辩解。因此,我决定阅读一本关于如何编写优质代码的书籍,希望能够提升自己的代码编写水平,得到同事们的认可。Bob大叔的《代码整洁之道》就来了,(豆瓣指引:<a href="https://book.douban.com/subject/26919457/" target="_blank">https://book.douban.com/subject/26919457/</a>) <img src="https://pic.code-nav.cn/planet_post_image/1619930914211520514/305t7mdm.jpeg" alt="image.png"> 在简单了解了作者以及其他读者对这本书的评价之后,我决定开始阅读。我为何要写下这篇读后感呢?实际上,在阅读完这本书之后,我并未计划专门写一篇文章,因为我更倾向于先将书中的理论付诸实践,只有在获得了实际的正向反馈之后,我才会考虑分享自己的感悟。然而,在我们公司的一次团建活动中,大家分享了各自的兴趣爱好,我提及了自己正在阅读这本书,随后有同事表示,这样的好书应该与大家分享,于是我便决定写下这篇读后感。此外,我认为这本书确实写得非常好。阅读它就像是在聆听一位拥有数十年编程经验的长者,向你讲述他在编程道路上的心得体会和个人总结,而非普通技术书籍那样专业、晦涩难懂。</p> <p></p> <h2>阅读</h2> <p></p> <p>我花了四个半小时,读完了这本书。不知道有没有小伙伴读过?你花了多长时间?<strong>在阅读过程中,我选择了有针对性的阅读方式</strong>。因为这本书中涉及到的某些内容,我并未亲身经历过,或者我认为在当前阶段并不需要深入了解,因此我选择了略读,例如:自动化测试。我认为这些内容需要在实践中逐步掌握,因此我将其暂时搁置。但当我阅读到第2、3、4章时,我会更加深入地思考,因为其中的许多内容都是我正在面临的问题。例如:我常常会在匆忙之中编写代码,或者在情绪不佳、状态不佳的情况下编写代码,这时所编写的代码往往质量较差。所以我应该先调整自己的情绪和状态,再开始进行代码编写。我认为这是一本值得反复阅读的好书,每次阅读都会有新的收获。</p> <p></p> <h2>收获</h2> <p></p> <p>通过阅读这本书,我对一个优秀程序员的基本形象有了初步的了解,不知道我的理解是否准确。按照书中的理论,一个优秀的程序员应该具备以下几个方面的素质:</p> <p></p> <ol> <li data-list="ordered"><span class="ql-ui"></span>具有职业精神,是一个专业的、能够承担责任的人,不随便说“是”,但会努力说“是”,信守承诺,并且能够终生学习。</li> <li data-list="ordered"><span class="ql-ui"></span>能够写出高质量、简洁、清晰、可读、好维护的代码。</li> <li data-list="ordered"><span class="ql-ui"></span>使用测试驱动开发(TDD),不在状态(情绪)不好的时候编程。</li> <li data-list="ordered"><span class="ql-ui"></span>是一个好的导师,能够帮助新人入门,融入团队;是一个好的搭档,能够和别人很好地合作,共同进步;是一个谦虚的倾听者,愿意接受别人的帮助和批评。</li> <li data-list="ordered"><span class="ql-ui"></span>能够让自己的工作保持高效,遇到难题能够及时通过一些措施来调整。 例如:去吃饭,放空,洗澡,或者直接下班,哈哈</li> <li data-list="ordered"><span class="ql-ui"></span>能实践敏捷开发,预估自己的工作,并推动工作。</li> <li data-list="ordered"><span class="ql-ui"></span>能有效地和其他人沟通,减少误解和冲突,完成产品的交付。</li> </ol> <p></p> <p>接下来,我将实践以下几个方面:</p> <p></p> <ol> <li data-list="ordered"><span class="ql-ui"></span>测试驱动开发:前端有测试框架,但我从未使用过,接下来我将尝试编写测试代码。</li> <li data-list="ordered"><span class="ql-ui"></span>开源:参与开源项目,加入社区,提高自己的影响力。</li> <li data-list="ordered"><span class="ql-ui"></span>做练习:刷leecode,从0到1做项目,整合自己所有的知识到一个项目,并不断完善。</li> </ol> <p></p> <p>一个只会写代码的程序员,一定不是一个优秀的程序员。我希望自己能成为一个很好打交道的程序员,更希望自己的代码简单、易懂、好维护,加油!</p> <p>#读书笔记# #前端#</p> </div> </body> </html>

Java核心技术卷感悟:第三章 Java 的程序设计结构

<html> <head></head> <body> <div class="content ql-editor"> <p>本章主要介绍程序设计的基本概念(如数据类型、分支以 及循环)在 Java 中的实现方式。</p> <p><br></p> <p><strong>一个简单的 Java 应用程序</strong></p> <p><br></p> <p>public class FirstSample {</p> <p><br></p> <p>​ public static void main(String[] args) {</p> <p><br></p> <p>​ System.out.println("We will not use 'Hello, World!"');</p> <p><br></p> <p>​ }</p> <p><br></p> <p>}</p> <p><br></p> <p>1. 首先,Java 区分大小写。 如果出现了大小写拼写错误(例如, 将 main 拼写成 Main), 程序将无法运行</p> <p><br></p> <p>2. 关键字 public 称为访问修饰符(access modifier), 这 些修饰符用于控制程序的其他部分对这段代码的访问级別</p> <p>3. 关键字 class 表明 Java 程序中的全部内容都包含在类中,Java 应用程序中的全部内容都必须放置在类中</p> <p>4. 关键字 class 后面紧跟类名。 Java 中定义类名的名字必须以字母开头,后面可以跟字母和数字的任意组合,但是不能使用 Java 保留字</p> <p>5. 标准的类命名规范为(FirstSample)大驼峰:类名是以大写字母开头的名 词,如果名字由多个单词组成,每个单词的第一个字母都应该大写</p> <p>6. 源代码的文件名必须与公共类的名字相同,并用 .java 作为扩展名</p> <p>7. 在编译这段源代 码之后就会得到一个包含这个类字节码的文件,Java 编译器将字节码文件自动地命名为 FirstSample. class, 并与源文件存储在同一个目录下</p> <p>8. 每个 Java 应用程序都 必须有一个 main 方法</p> <p>9. 在 Java 中,每个句子必须用分号结束。 特别需要说明,回车不是语句的结束标志</p> <p>10. 在这里,使用了 System.out 对象并调用了它的 println 方法。注意, 点号( • )用于调用 方法</p> <p><br></p> <p><strong>注 释:</strong></p> <p><br></p> <p>Java 中的注释不会出现在可执行程序中。因此, 可以在 源程序中根据需要添加任意多的注释,而不必担心可执行代码会膨胀。在 Java 中,有 3 种标 记注释的方式。</p> <p><br></p> <p>1. 最常用的方式是使用 //,其注释内容从 // 开始到本行结尾。</p> <p>2. 当需要长篇的注释时, 既可以在每行的注释前面标记 //,也可以使用 /* 和 */ 将一段比较 长的注释括起来。</p> <p>3. 第 3 种注释可以用来自动地生成文档。这种注释以 / ** 开始, 以 */ 结束</p> <p><br></p> <p>在 Java 中,/* **/ 注释不能嵌套 „ 也就是说, 不能简单地把代码用 /* *和 */ 括起来 作为注释, 因为这段代码本身可能也包含一个 */</p> <p><br></p> <p><strong>数 据 类 型:</strong></p> <p><br></p> <p>Java 是 -种强类型语言。这就意味着必须为每一个变量声明一种类型。在 Java 中, -共有 8 种基本类型( primitive type ), 其中有 4 种整型、2 种浮点类型、 1 种用于表字符类型 char 和 1 种用于表示真值的 boolean 类型。</p> <p><br></p> <p>1. 整型</p> <p>1. byte型,1字节,</p> <p>2. short型,2字节</p> <p>3. int型,4字节</p> <p>4. long型,8字节,长整型数值有一个后缀 L 或 1 ( 如 4000000000L。)</p> <p><br></p> <p>​ 注意, Java 没有任何无符号(unsigned) 形式的 int、 long、short 或 byte 类型。</p> <p><br></p> <p>2. 浮点类型</p> <p><br></p> <p>1. float类型,4字节,float 类型的数值有一个后缀 F 或 f (例如,3.14F)</p> <p>2. double类型,8字节,没有后缀 F 的浮点数值(如 3.14 ) 默 认为 double 类型。</p> <p><br></p> <p>下面是用于表示溢出和出错情况 的三个特殊的浮点数值:</p> <p><br></p> <p>•正无穷大 ,常量 Double_POSITIVE_INFINITY</p> <p><br></p> <p>•负无穷大,Double.NEGATIVEJNFINITY</p> <p><br></p> <p>•NaN (不是一个数字),Double.NaN,特别要说明的是, 不能这样检测一个特定值是否等于 Double.NaN:</p> <p>if (x = Double.NaN) // is never true 所有“ 非数值” 的值都认为是不相同的,然而,可以使用 Double.isNaN 方法:</p> <p><br></p> <p>​ if (Double.isNaN(x)) // check whether x is "not a number"</p> <p><br></p> <p>注意: 浮点数值不适用于无法接受舍入误差的金融计算中。 例如,命令 System.out.println ( 2.0-1.1 ) 将打印出 0.8999999999999999, 而不是人们想象的 0.9。这种舍入误差的主要 原因是浮点数值采用二进制系统表示, 而在二进制系统中无法精确地表示分数 1/10。</p> <p><br></p> <p>3. char 类型</p> <p><br></p> <p>char 类型原本用于表示单个字符,如今,有些 Unicode 字符可以用一个 char值描述,另外一些 Unicode 字符则需要两个 char 值。char 类型的字面量值要用单引号括起来。例如:‘A’ 是编码值为 65 所对应的字符常量。它与 "A" 不同,"A" 是包含一个字符 A 的字符串。</p> <p><br></p> <p>char 类型的值可以表示为十六进制值,其 范围从 \u0000 到 \Uffff。例如:\u03C0 表示希腊字母 π。除了转义序列 \u 之外, 还有一些用于表示特殊字符的转义序列,\b 退格,\n 换行(\u00A0),\t 制表(对应\u0009)。更隐秘地, 一定要当心注释中的 \u。注释 // \u00A0 is a newline。会产生一个语法错误, 因为读程序时 \u00A0 会替换为一个换行符。</p> <p><br></p> <p>4. boolean 类型</p> <p><br></p> <p>boolean (布尔)类型有两个值:false 和 true, 用来判定逻辑条件 整型值和布尔值之间 不能进行相互转换</p> <p><br></p> <p><strong>变 量:</strong></p> <p><br></p> <p>1. 在 Java 中,每个变量都有一个类型( type)。在声明变量时,变量的类型位于变量名之 前。</p> <p>double salary;</p> <p><br></p> <p>2. 尽管 $ 是一个合法的 Java 字符, 但不要在你自己的代码中使用这个字符。它只用 在 Java 编译器或其他工具生成的名字中。</p> <p><br></p> <p>3. 声明一个变量之后,必须用赋值语句对变量进行显式初始化, 千万不要使用未初始化的 变量。要想对一个已经声明过的变量进行赋值, 就需要将变量名放在等号(=) 左侧, 相应取值 的 Java 表达式放在等号的右侧。</p> <p>int vacationDays;</p> <p>vacationDays=12;</p> <p><br></p> <p>4. 在 Java 中, 变量的声明尽可能地靠近变量第一次使用的地方, 这是一种良好的程序编写 风格</p> <p><br></p> <p>5. 在 Java 中, 利用关键字 final 指示常量。final double CM_PER_INCH = 2.54;关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上, 常量名使用全大写。</p> <p><br></p> <p><strong>运 算 符:</strong></p> <p><br></p> <p>在 Java 中,使用算术运算符 + 、-、 * 、/ 表示加、减、 乘、除运算。</p> <p><br></p> <p>1. 当参与 / 运算的两个 操作数都是整数时, 表示整数除法;否则, 表示浮点除法。</p> <p>2. 整数的求余操作(有时称为取模) 用 % 表示。例如,15/2 等于 7 ,15%2 等于 1 , 15.0/2 等于 7.50</p> <p><br></p> <p>3. 在 Math类中,包含了各种各样的数学函数。println 方法和 sqrt 方法存在微小的差异。println 方法处理 System.out 对象。但是, Math 类中的 sqrt 方法处理的不是对象,这样的方法被称为静态方法。Java 还提供了两个用于表示 TC 和 e 常量的近似值Math.PI Math.E</p> <p><br></p> <p>4. 自动类型转换:</p> <p>byte ——short——int——long ——float——double</p> <p>char——int——long——float——double</p> <p><br></p> <p>5. 强制类型转换:</p> <p><br></p> <p>在必要的时候, int 类型的值将会自动地转换为 double 类型。但另 一方面,有时也需要将 double 转换成 int。 在 Java 中, 允许进行这种数值之间的类型转换。 当然, 有可能会丢失一些信息。在这种情况下,需要通过强制类型转换( cast) 实现这个操 作。double x = 9.997;</p> <p>int nx = (int) x;</p> <p>这样, 变量 nx 的值为 9。强制类型转换通过截断小数部分将浮点值转换为整型。</p> <p><br></p> <p>6. 如果想对浮点数进行舍人运算, 以便得到最接近的整数(在很多情况下, 这种操作更有 用,) 那就需要使用 Math_ round 方法double x z 9.997;</p> <p>int nx = (int) Math.round(x);</p> <p>现在, 变量 nx 的值为 10。 当调用 round 的时候, 仍然需要使用强制类型转换( int) 其原因 是 round 方法返回的结果为 long 类型</p> <p><br></p> <p>7. X += 4; 等价于: x = x + 4;</p> <p>如果 X 是一个 int, 则以下语句 x += 3.5; 是合法的, 将把 X 设置为(int)(x + 3.5)。</p> <p><br></p> <p>8. n++ 将变量 n 的当前值加 1, n-- 则将 n 的值减 1</p> <p>上面介绍的是运算符放在操作数后面的“ 后缀” 形式。 还有一种“ 前缀” 形式:++n。后缀和前缀形式都会使变量值加 1 或减 1。但用在表达式中时, 二者就有区别了。前缀形式会先完成加 1; 而后缀形式会使用变量原来的值。</p> <p><br></p> <p>9. &amp;&amp; 和丨| 运算符是按照“ 短路” 方 式来求值的: 如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。</p> <p>&amp; 和丨运算符也会得到一个布尔值。这些运算符与 &amp;&amp; 和丨丨运 算符很类似,不过 &amp; 和丨运算符不采用“ 短路” 方式来求值, 也就是说,得到计算结果之前两个操作数都需要计算。</p> <p><br></p> <p>10. Java 支持三元操作符?:,这个操作符有时很有用。如果条件为 true, 下面的 表达式 condition ? expressioni : expression</p> <p><br></p> <p>11. 自定义枚举类型。枚举类型包括有限个命名的值,enum Size { SMALL, MEDIUM, LARGE, EXTRA.LARCE };现在,可以声明这种类型的变量: Size s = Size.MEDIUM</p> <p><br></p> <p><strong>字 符 串:</strong></p> <p><br></p> <p>1. Java 没有内置的字符串类型, 而是在标准 Java 类库中提供了 一个预定义类,很自然地叫做 String。每个用双引号括起来的字符串都是 String类的一个实 例</p> <p><br></p> <p>2. String 类的 substring 方法可以从一个较大的字符串提取出一个子串。</p> <p>String greeting = "Hello";</p> <p>String s = greeting.substring(0, 3);创建了一个由字符“ Hel” 组成的字符串。</p> <p><br></p> <p>3. Java语言允许使用 + 号连接(拼接)两个字符串。当将一个字符串与一个非字符串的值进行拼接时,后者被转换成字符串</p> <p><br></p> <p>4. String 类没有提供用于修改字符串的方法,由于不能修改 Java 字符串中的字符, 所以在 Java 文档中将 String 类对象称为不可变字 符串, 如同数字 3 永远是数字 3 —样。不可变字符串却有一个优点:编译器可以让字符串共享。总而言之,Java 的设计者认为共享带来的高效率远远胜过于提取、 拼接字符串所带来的 低效率。</p> <p><br></p> <p>5. 可以使用 equals 方法检测两个字符串是否相等,要想检测两个字符串是否相等,而不区分大小写, 可以使用 equalsIgnoreCase 方法。一定不要使用==运算符检测两个字符串是否相等! 这个运算符只能够确定两个字串 是否放置在同一个位置上。</p> <p>当然, 如果字符串放置在同一个位置上, 它们必然相等。但是, 完全有可能将内容相同的多个字符串的拷贝放置在不同的位置上</p> <p>String greeting = "Hello"; //initialize greeting to a string</p> <p>if (greeting == "Hello") . // probably true</p> <p>if (greeting.substring(0, 3) == "HeV") . . . // probably false</p> <p><br></p> <p>6. 空串 "" 是长度为 0 的字符串。空串是一个 Java 对象, 有自己的串长度( 0 ) 和内容(空)。不过, String 变量还可以存 放一个特殊的值, 名为 null, 这表示目前没有任何对象与该变量关联</p> <p><br></p> <p>7. 调用 s.charAt(n) 将返回位置 n 的代码单元,n 介于 0 ~ s.length()-l 之间。</p> <p><br></p> <p><strong>输入输出:</strong></p> <p><br></p> <p>1. 打印输出到“ 标准输出流”(即控制台窗口)是一件非常容易的事情,只要 调用 System.out.println 即可。然而,读取“ 标准输人流” System.in 就没有那么简单了。要想通 过控制台进行输人,首先需要构造一个 Scanner 对象,并与“ 标准输人流” System.in 关联。Scanner in = new Scanner(System.in);</p> <p><br></p> <p>2. 现在,就可以使用 Scanner 类的各种方法实现输入操作了。String name = in.nextLine();</p> <p>要想读取一个整数, 就调用 nextlnt 方法。要想读取下一个浮点数, 就调用 nextDouble 方法</p> <p><br></p> <p>3. 可以使用 SyStem.0ut.print(x) 将数值 x 输出到控制台上。这条命令将以 x 对应的数据类型 所允许的最大非 0 数字位数打印输出 X。在 printf中,可以使用多个参数, 例如:</p> <p>System.out.printf("Hello, %s. Next year, you'll be SSd", name, age)</p> <p><br></p> <p>4. 每一个以 % 字符开始的格式说明符都用相应的参数替换。 格式说明符尾部的转换符将指示被 格式化的数值类型:f 表示浮点数,s 表示字符串,d 表示十进制整数。</p> <p><br></p> <p>5. 可以使用静态的 String.format 方法创建一个格式化的字符串, 而不打印输出:</p> <p>String message = String.format("Hello, %s. Next year, you'll be %d", name , age);</p> <p><br></p> <p>6. 要想对文件进行读取,就需要一个用 File 对象构造一个 Scanner 对象</p> <p>Scanner in = new Scanner(Paths.get("niyflle.txt"), "UTF-8")</p> <p><br></p> <p><strong>控 制 流 程:</strong></p> <p><br></p> <p>与任何程序设计语言一样, Java 使用条件语句和循环结构确定控制流程</p> <p><br></p> <p>1. 块(即复合语句)是指由一对大括号括起来的若干条简单的 Java 语句。块确定了变量的作 用域。一个块可以嵌套在另一个块中。</p> <p><br></p> <p>2. 在 Java 中,条件语句的格式为if (condition) statement。这里的条件必须用括号括起来。</p> <p><br></p> <p>3. 当条件为 true 时,while 循环执行一条语句(也可以是一个语句块)。一般格式为</p> <p>while { condition ) statement</p> <p>如果开始循环条件的值就为 false, 则 while 循环体一次也不执行 。</p> <p><br></p> <p>4. 如果希望 循环体至少执行一次, 则应该将检测条件放在最后。 使用 do/while 循环语句可以实现这种操 作方式。它的语法格式为: do statement while { condition);</p> <p><br></p> <p>5. for 循环语句是支持迭代的一种通用结构, 利用每次迭代之后更新的计数器或类似的变量 来控制迭代次数。</p> <p>for (int i = 1; i &lt;= 10; i++)</p> <p>System.out.println(i);</p> <p>特别指出,如果在 for 语句内部定义一个变量, 这个变量就不能在循环体之外使用。</p> <p><br></p> <p>6. 在处理多个选项时, 使用 if/else 结构显得有些笨拙。 Java 有一个与 C/C++ 完全一样的 switch 语句。switch语句将从与选项值相匹配的 case 标签处开始执行直到遇到 break 语句,或者执行到 switch i吾句的结束处为止。如果没有相匹配的 case 标签, 而有 default 子句, 就执行这个子句。</p> <p>有可能触发多个 case 分支。 如果在 case 分支语句的末尾没有 break 语句, 那么就 会接着执行下一个 case 分支语句。这种情况相当危险, 常常会引发错误。</p> <p><br></p> <p>7. Java 还提供了一种带标签的 break语句,用于跳出多重嵌套的循环语句。可以将标签应用到任何语句中, 甚至可以应用到 if语句或者块语句中</p> <p>最后,还有一个 continue 语句。与 break 语句一样, 它将中断正常的控制流程。continue 语句将控制转移到最内层循环的首部。</p> <p><br></p> <p><strong>大 数 值:</strong></p> <p><br></p> <p>如果基本的整数和浮点数精度不能够满足需求, 那么可以使用java.math 包中的两个 很有用的类:Biglnteger 和 BigDecimal,这两个类可以处理包含任意长度数字序列的数值。 Biglnteger 类实现了任意精度的整数运算, BigDecimal 实现了任意精度的浮点数运算。</p> <p><br></p> <p>使用静态的 valueOf方法可以将普通的数值转换为大数值: Biglnteger a = Biglnteger.valueOf(100);</p> <p><br></p> <p>遗憾的是,不能使用人们熟悉的算术运算符(如:+ 和 *) 处理大数值。 而需要使用大数 值类中的 add 和 multiply 方法</p> <p><br></p> <p><strong>数 组:</strong></p> <p><br></p> <p>数组是一种数据结构, 用来存储同一类型值的集合。通过一个整型下标可以访问数组中 的每一个值。例如, 如果 a 是一个整型数组, a[i] 就是数组中下标为 i 的整数。</p> <p><br></p> <p>1. 在声明数组变量时, 需要指出数组类型 ( 数据元素类型紧跟 []) 和数组变量的名字。下 面声明了整型数组 a:</p> <p>int[] a;</p> <p>不过, 这条语句只声明了变量 a, 并没有将 a 初始化为一个真正的数组。应该使用 new 运算 符创建数组</p> <p>int[] a = new int[100];</p> <p><br></p> <p>2. 创建一个数字数组时, 所有元素都初始化为 0。boolean 数组的元素会初始化为 false。 对 象数组的元素则初始化为一个特殊值 null, 这表示这些元素(还)未存放任何对象。</p> <p><br></p> <p>3. 要想获得数组中的元素个数,可以使用 array.length。一旦创建了数组, 就不能再改变它的大小(尽管可以改变每一个数组元素)。如果经常需 要在运行过程中扩展数组的大小, 就应该使用另一种数据结构—数组列表</p> <p><br></p> <p>4. Java 有一种功能很强的循环结构, 可以用来依次处理数组中的每个元素(其他类型的元 素集合亦可)而不必为指定下标值而分心。这种增强的 for 循环的语句格式为:</p> <p>for (variable : collection) statement</p> <p>定义一个变量用于暂存集合中的每一个元素, 并执行相应的语句(当然,也可以是语句块)。 collection 这一集合表达式必须是一个数组或者是一个实现了 Iterable 接口的类对象(例如 ArrayList)。</p> <p>for each 循环语句显得更加简洁、 更不易出错,不必为下标的起始值和终止值而操心。</p> <p><br></p> <p>5. 有个更加简单的方式打印数组中的所有值, 即利用 Arrays 类的 toString 方法。 调 用 Arrays.toString(a), 返回一个包含数组元素的字符串,这些元素被放置在括号内, 并 用逗号分隔, 例如,“ [2,3,5,7,11,13] ”</p> <p><br></p> <p>6. 在 Java中, 提供了一种创建数组对象并同时赋予初始值的简化书写形式</p> <p>int[] small Primes = { 2, 3, 5, 7, 11, 13 };</p> <p>这种表示法将创建一个新数组并利用括号中提供的值进行初始化,数组的大小就是初始值的 个数</p> <p><br></p> <p>7. 在 Java 中,允许将一个数组变量拷贝给 另一个数组变量。这时, 两个变量将引用同 一个数组。如果希望将 一个数组的所有值拷贝到一个新的数组中去, 就要使用 Arrays 类的 copyOf方法</p> <p><br></p> <p>8. 每一个 Java 应用程序都有一个带 String arg[],参数的 main 方法。这个参数表明 main 方法将接收一个字符串数组, 也就是命令行参数</p> <p>public static void main(String[] args)</p> <p>如果使用下面这种形式运行这个程序: java Message -g cruel world</p> <p><br></p> <p>9. 要想对数值型数组进行排序, 可以使用 Arrays 类中的 sort 方法</p> <p>int[] a = new int[10000];</p> <p>Arrays.sort(a)这个方法使用了优化的快速排序算法。快速排序算法对于大多数数据集合来说都是效率比较 高的</p> <p><br></p> <p>10. 多维数组将使用多个下标访问数组元素, 它适用于表示表格或更加复杂的排列形式。Java 实际上没有多维数组,只有一维 数组。多维数组被解释为“ 数组的数组。”</p> </div> </body> </html>

#学习# #阅读# #闲聊# 备战暑期实习 Day268 1. 随便聊聊时间~ 今天是青梅生日,然后,然后就没有然后了,早上定计划的时候定的非常好,非常满意:先狂学一个早上,终于参加青梅的生日会,晚上继续回来学习 实际情况:玩了一整天,然后晚上回来打 LeetCode 双周赛,只做出了第一道题 我的选择是,那就当今天不存在吧,晚上美美睡个觉,然后第二天再努力 寒假玩了几天,感觉人生都明朗了许多,明天重新开卷! 晚安[月亮][月亮][月亮]

#学习# #阅读# #闲聊# 备战暑期实习 Day215 1. 随便聊聊时间~ 太感动了,谢谢球友昨天的鼓励,我感觉好多了,现在又活蹦乱跳了,2 月的第一天过的很开心,这个月的开头不错~ 今天没有什么想说的东西,毕竟是随便聊聊,不随便就不聊了 2. 美食分享时间~ 今天中午吃了一顿咖喱鱼排饭,很好吃,饱食度回复 50 点,开心值回复 30 点,san 值回复 10 点,评价:如果可以,我明天还想吃一次这家店的咖喱 唯一可惜的就是忘记拍照了,如果明天再吃一顿就拍来分享一下 3. 每日一道面试题~ 问题: HTTPS 建立过程是怎么样的? 回答: 首先客户端要和服务端先进行 TCP 三次握手建立 TCP 连接。接下来,会进行 TLS 四次握手: 1)第一次 TLS 握手:客户端首先会发一个 Client Hello 消息,消息里面有客户端使用的 TLS 版本号、支持的密码套件列表、客户端生成的随机数,这个随机数是用来后面生成对称密钥元素之一。 2)第二次 TLS 握手:当服务端收到客户端的消息后,会返回 Server Hello 消息给的客户端,消息里面有服务器确认的 TLS 版本号、密码套件、服务端生成的随机数,接着服务端为了证明自己的身份,会发送服务器使用的证书(Server Certificate) 给客户端,这个消息里含有数字证书(服务器注册在 CA 机构的时候,CA 的私钥对服务端的公钥的加密,生成数字证书给服务端)。随后,服务端发了 Server Hello Done 消息,目的是告诉客户端,我已经把该给你的东西都给你了,本次握手完毕。 3)然后是 校验证书:客户端收到服务端的数字证书的时候,会对校验服务端的证书,如果证书是合法的,客户端会用 CA 机构的公钥解密数字证书拿到服务端的公钥。 4)第三次 TLS 握手:客户端再次生成一个随机数,用服务端的公钥加密后,并这个加密后的随机数传给服务端。服务端收到后,用服务端的私钥解密得到客户端的第二个随机数。到这里,服务端和客户端双方都有 3 个随机数,双方根据已经得到的三个随机数,会根据算法生成对称密钥。生成完对称密钥后,客户端会发一个消息告诉服务端开始使用对称加密方式发送消息,并且还会对之前所有发送的数据做个摘要,再用对称加密加密一下,让服务器做个验证,验证对称密钥是否可用,以及之前握手信息是否有被中途篡改。 5)第四次 TLS 握手:服务器也是同样的操作,发送消息告诉客户端开始用对称加密方式发送消息,并且也会对数据做个摘要,并用对称密钥加密一下,让客户端做个校验,如果双方都验证加密和解密没问题,那么 TLS 四次握手正式完成了。 最后,就可以用对称密钥加解密 HTTP 请求和响应了。 4. 读书分享时间~ 今天在快乐打游戏,明日方舟的新春活动更新了,今年讲的的“农”(图一) 明日方舟是我最喜欢的游戏,没有之一,我喜欢他讲的故事~ 【你听见那一方水土的心跳,它怀抱中的湿润与温热。】 【你嗅闻香火与饴糖,沿着绵延数里的水渠,在高粱秆中疯长。】 【你触到被双手举起的城市,白玉的,钢铁的,比土地更加年轻的躯体。】 【你见她走来,种子从指缝间落下,没入一个百年,与下一个百年的土壤。】 【为何还站在田垄上,难道大荒茫茫,不是你日夜耕耘的家乡?】 【——《戊子 · 凛冬手记》】 今天的闲聊就到这里啦~ 谢谢你能看到这里呀~ 我们明天的闲聊不见不散~~~

掌控自己的人生

<html> <head></head> <body> <div class="content ql-editor"> <p>哈喽,大家,我是晨光,这几天读了一本书《子弹笔记》,让我感触很多,很多点自己已经慢慢的悟了出来,但如果有前人宝贵的经验,那会少走很多弯路</p> <p><br></p> <p>看这本书你能学到啥?</p> <p>1、如果做选择</p> <p>2、学会写笔记</p> <p>3、提笔写字</p> <p><br></p> <p><strong>一、如何做选择</strong></p> <p><br></p> <p>或许这个标题不是很准确,但的确会让我们能够做出更好的选择</p> <p>现在拿出一张纸,分为 3 栏,写下</p> <ol> <li data-list="bullet"><span class="ql-ui"></span>你正在做的事</li> <li data-list="bullet"><span class="ql-ui"></span>你应该做的事</li> <li data-list="bullet"><span class="ql-ui"></span>你想要做的事</li> </ol> <p><br></p> <p>每件事都来问两个问题</p> <ol> <li data-list="bullet"><span class="ql-ui"></span>不做行不行?</li> <li data-list="bullet"><span class="ql-ui"></span>必须要做的原因</li> </ol> <p><br></p> <p>不用怕,不断的提问可以让自己的思绪更清晰,最终在不断的为什么里面找到自己真正应该做的事儿,可以让自己有意识的做选择,也不会有选择困难症,也会慢慢的杜绝拖延症。</p> <p><br></p> <p>曾经的我也很是选择困难症,纠结,常常在多个选择之间摇摆,忘记什么时候学会了列 1234,就是分别写出选择 a 会怎样,选择 b 会怎样,在根据不同选择的后果做出最终选择,虽然方法笨了些,但做决定也不在拖拉。</p> <p><br></p> <p>本书的第一部分,有一种让我们能够从日常琐事中抽离出来的感觉,慢慢的梳理自己,让自己更有条理性和规划性。</p> <p><br></p> <p><strong>二、学会写笔记</strong></p> <p><br></p> <p>今天计划做什么;做了什么,遇到了什么有趣的事,有什么感受;要做什么</p> <p><br></p> <p>类似上面这些,尽量简短的记录,未来有必要的时候,回顾时,记录的内容可能会对自己有帮助,有助于了解自己,或者认清朋友,失恋疗伤啥的,</p> <p><br></p> <p>不过截止目前,我没有实操去写子弹笔记。推荐大家看这本书,是想让大家学习一些书中的思想,在遇到困惑时,书中的思想可以让你保持冷静和理智。</p> <p><br></p> <p>当然,也不是非要去写什么笔记,只是有时候,在自己遇到一些难题,或是心神不稳定时,或是有某个好的 idea 时,或是晚上失眠时,等等,这些让你注意力无法集中时,可以尝试在纸上或者手机上列1234,写出来,让工具暂时替代你的大脑,可以有效的缓解压力,调整情绪等等。</p> <p><br></p> <p>重要的也不是笔记,重要的是写!写想法,或是别的让你困惑的东西,写出来,再站在第三者的角度审视你写出来的东西,或许你遇到的难题将会得到答案。</p> <p><br></p> <p><strong>三、提笔写字</strong></p> <p><br></p> <p>想问问大家,多久没有在纸上写字了?一周或者一个月?</p> <p><br></p> <p>有研究表明,提笔写字可以有效预防老年痴呆,有助于提高记忆力。之前刷到过一个 80 多岁的老奶奶,一直保持着记笔记、记账的习惯。经常给自己的孙子、重孙讲故事,很久以前发生的事也能准确的说出日期,最大的原因就是因为她长期保持写字的习惯。</p> <p><br></p> <p>写字在纸上的过程,会花时间,会经过深思熟虑再提笔。现在不管是手机还是电脑,键盘一顿噼里啪啦,输入的不正确还可以删除重新再来,而且好多时候,手机记的笔记好像没有在纸上写的印象深刻。</p> <p><br></p> <p>12 年的应试教育养成写字的习惯,到现在却发现好多字都不熟悉了,脑子迟钝了,有时候在纸上写写画画,还有些错别字,就很惭愧</p> <p><br></p> <p>而且拿起手机,时间总是过的很快很快,假如养成写字做笔记的习惯,可以每天有一小部分时间只属于自己,没有手机,只有自己,专注于自己。思考回顾,提笔落字,貌似也是一种仪式感。</p> <p><br></p> <p>慢就是快,一味的图快,有时候反而缺少了什么。</p> <p><br></p> <p><strong>四、总结</strong></p> <p><br></p> <p>1、推荐《子弹笔记》,不是让大家为了做笔记而做笔记,可以带有目标性,为了某个目标每天前进一点</p> <p>2、做笔记不是推荐给大家的理由,而是很多时候,看到鱼友们的提问,发现不知道自己要什么,如果没有目标,那么就无法做决定,这也是第一节提到的,如何做选择,问自己为什么。</p> <p>3、如果每天过的浑浑噩噩,那么可以尝试做笔记,看自己把时间都用到了哪里,是不是自己想要的</p> <p><br></p> <p>「让我们不要拖延,让我们每天清点生活。」</p> <p><br></p> <p>《子弹笔记》是上次和林哥面基,朋友送的,拖到现在才看完,很不错的一本书,看完感觉确实会对自己有帮助,所以推荐给大家。</p> <p><br></p> <p>以上,全文完,有收获点个赞呀~</p> </div> </body> </html>

#学习# #阅读# #闲聊# 备战暑期实习 Day2 1. 随便聊聊时间~ 每天在路上开完车的感受都是: “又活了一天” “自动驾驶怎么还没普及” “横穿马路的人他们是真的不怕死吗,每次这个时候我都紧张到分不清我的脚边,到底左边是刹车,还是右边是刹车” 今天刚从小区出门,必经的单行道上就停着一辆车(图一) 内心:“我 ** 谢谢你” 这么窄我都不知道我该怎么过去。。。以我这个水平 费了九牛二虎之力,我终于从这个小缝钻过去了 在一个十字的红绿灯路口又遇到一个奇葩 三条车道,我在中间的车道等着红灯,现在是左侧路口绿灯,就在这个时候,有一辆小面包车从左边往右边直行,在走到路中间之后突然停了下来,我:“?” 周围一辆车都没有,他就莫名奇妙停了下来,直到左侧路的绿灯转红,我这边的红灯转绿,我左右的车都在往前走,而我正前面就停着那辆车,车流从我两侧飞驰,前面的车堵住我前进的路,后面的车喇叭长鸣 求一个新手司机的心理阴影面积 可惜当时没能拍照(红绿灯路口司机不允许玩手机,我是遵纪守法好公民) 不过今天也不算没有收获,今日成就: 1)第一次将速度开到 70 2)前面有一辆大卡车,我施展操作左右横跳把它超过了,第一次在路上完成超车 2. 美食分享时间~ 今天是腊味煲饭,广东特色,特别是过年的时候,至少在我家,基本每天晚上都吃腊味饭,腊味饭的饭带着腊肠的肉香和腊味,吃起来非常美味 而且做法非常的简单,只需要将腊肠、腊肉(我们这边腊鸭做的比较多)在用电饭煲煮饭的时候,和饭一起下锅,和饭同时蒸熟,腊肠的油就会浸入到每一粒饭中,出锅的时候,整锅饭闪着腊肠的油光,带着淡淡的黄色,飘香十里 3. 每日一道面试题~ 问题: JWT 的原理和校验机制是什么样的? 回答: 1)JWT 令牌是 3 个部分组成,分别是头部、负载、签名。 头部是描述令牌使用的签名算法,负载描述的是用户信息,比如用户名称、过期时间等等,头部和负载都是不会被加密的,只是会用 base64 编码。 最后一部分,签名,它是对头部和负载两部分数据的签名,签名的过程是,使用头部的签名算法,通过服务器的密钥对前面两部分内容进行加密计算 2)校验 JWT 令牌的过程是服务端收到客户端发过来的 JWT 令牌后,服务端会取出头部和负载数据,然后用自己的密钥对这两部分数据进行加密计算,将得到的加密结果和客户端发过来 JWT 的签名进行对比,如果相同,就表示前面两部分没有被中间人篡改,这时候服务器就可以进行其他验证,比如检查 JWT 是否过期,如果也没问题,就会正常执行业务逻辑 4. 读书分享时间~ 今天继续读《https://wx.zsxq.com/mweb/views/weread/search.html?keyword=这里是中国》 罗布泊 又或者说,“楼兰” 自然景观依旧是如梦似幻 曾经西域繁盛的古城,如今也烟消云散了 能流传到我们身边的,就只剩缥缈的神话,还有,流传千古的诗句 “青海长云暗雪山,孤城遥望玉门关。黄沙百战穿金甲,不破楼兰终不还。” “五月天山雪,无花只有寒。笛中闻折柳,春色未曾看。晓战随金鼓,宵眠抱玉鞍。愿将腰下剑,直为斩楼兰。” ---分割线--- 我有罪,刚刚中断写闲聊和我妈打了一个多小时的游戏,今晚的闲聊又拖到了好晚 ---分割线--- 读书分享的思路断了,这篇闲聊就像是人生,总是不得圆满,但又无可奈何 那今天的闲聊就到这里啦~ 谢谢你能看到这里呀~ 我们明天的闲聊不见不散~~~ 【花开堪折直须折,莫待无花空折枝】 【你说】 【我们每天拼尽全力地学习和生活】 【最后】 【能达成我们想达成的目标吗】 【世事无常,我们能做的,只有尽己所能】 【无愧于心】 【——《戊子 · 凛冬手记》】

下载 APP