Giter VIP home page Giter VIP logo

notes's Introduction

blog

notes's People

Contributors

vscanf avatar

Watchers

James Cloos avatar

notes's Issues

面试注意事项

推荐书目:
- 亚马逊、当当搜索相关技术+“面试” 关键字
- 挑选一本最新的。
- 看完后哪个地方不清楚再补充。
- 知识是无限的,平常我们应该靠兴趣探索,如果找工作,那就直接点,我们应该针对需求去学习。

  • 简历格式

    • 标题、简历附件标题:
      • 姓名-学历-求职意向
    • 格式
      • 一般为.pdf
    • 无错别字
    • 突出优势、不写对求职无关信息
      • 例:会PPT,EXCEL等,这些不需要呈现的技能
    • 数据化自己的过人之处、贡献、成果
    • 避免无关信息
  • 面试

    • 自我介绍
      • 自己的优势!成绩?项目?大奖?捡最重要的说。
      • 真诚,不说假话。但不主动说短处,除非被问到跟工作有关的需要坦诚。
    • 回答问题
      • 问清楚具体场景,免得文不对题
      • 代码的效率、安全、快速、全面、扩展、维护、规范、测试
      • 控制节奏
        • 氛围要和谐愉悦
        • 不能尴尬收场
        • 不能流水账的无聊
      • 不要回答是不是
        • 应该给予适当补充,猜想他想考查的知识点,展现自己思考的深度、全面。
        • 相对的留些悬念,引起兴趣,使其追问。
      • 态度:不卑不亢
        • 态度谦逊礼貌、且自信沉稳
        • 不要太过自傲,不要过分懦弱
      • STAR原则描述:
        • 情景,目标,行为,结果

待整理


title: 待整理
date: 2017-11-04 13:17:12
tags: learn

勤学不是不经思考不选方向不用方法的死学,而是终身学习的意识。

利用碎片时间

有时间就想一想:

  • 三省吾身
    • 为人谋不忠?朋友交不信?传不习?
  • 展望未来
    • 结合自身和环境趋势
  • 闭目养神
    • 起码不会浪费精力在无聊的事情上

3B

Bus交通时间
  • 忌东张西望,胡思乱想,属羊无聊。
    • 看书听书
      • 能看书就带本书,太吵就看电子书,太挤听书听讲座,听政治,金融,健康,科技新闻。
Bed睡前时间
    • 失眠
      • 白天过的太安逸?
        1. 别强迫自己睡,就别想事情,脑子想着眼前看到的黑色(闭着眼什么都看不到),放空自己。
        2. 也可以耗费精力干点别的,累了就睡了,但第二天一定要按时起。
      • 压力过大,悟已往之不谏,知来者之可追,科学可持续的走好以后的生活,急是没用的
    • 睡太晚
      • 如非必须,熬夜会耗费第二天的精力,值得嘛?
Bath洗澡时间
  • 个人来讲,我洗澡很享受,唱唱歌,想想游戏挺好的。没必要用洗澡的时间学习,而且人是活的,不能像机器一样得着空就学习,我需要这种休息。
  • 但是适合你吗?就像上面的几个零碎时间哪些是不适合你的。
  • 归根到底一个指导方法只是一种建议,针对到个人就要看合适不合适,合适就继续保持,不合适没有成效就放弃,不能死板照抄,要领会利用碎片时间学习的**,心中要有学习的意识,而不是什么都要尽信书,发展才是硬道理。所以我要去试试洗澡的学习了(逃

锁定目标

明确 Specific

可量化 Measurable

切实可行 Achievable

注重结果的 Result-oriented

时间限制 Time-limited

不要妄自菲薄

出生是随机的,上天给自己的肢体健全或是残缺,家庭美满或是破裂,容貌美或丑,都是随机的,幸运和不幸的先天条件只能接受,但认为自己不行就是妄自菲薄了,艰苦环境中放任自流的不被世界记住的人有很多,但也有被世界记住的各种名人。含着金汤匙出生的,有谨慎克制,充分发挥自己条件更上一层楼的,也有因为出身就以此为荣败光家底的。他们怎样都是天的安排,只要是积极面对对自己和周围有着积极影响的,人们都会给予尊重,而生活也会给自己汇报。而自己,不要限制自己,为了自己喜欢的,为什么不能去必要的尝试?为什么就非要认为自己是最无能的一个,这样就可以心安理得的什么都不做了嘛?

心态

  • 客观条件+自己主动。
  • 其实很多基础有用的理论或者指导方法都写在了从小以来的课本里了,一个国家花费总GDP的高百分比投放在教育上的各种投入、补贴不是没有原因的,虽然有蛀虫吃掉了部分、不妨碍大部分的投入。只不过小时候我们还不懂,只是想逃避痛苦的、无聊的知识和作业。回头看看数学教我们逻辑思维,语文教我们如何与人沟通表达,英语教会我们如何才能借鉴最先进国家美国的技术。他们都是有用的,而只有自己也认识到这种重要性,自己想学才会学的更顺利,被动的灌输不仅容易遗忘,而且处处找到机会我们就会抗拒,置之不理。所以要有对学习的强烈意识,学习是为了保持自身在人才济济的泱泱大国中的核心竞争力,自己不会不学不练,随便找个人都比自己强,那自己

不要妄自菲薄,不骄傲自满

心态

客观条件+自己主动。
好心态

勤奋
清晰的目标
坚持
合理安排
创造性
精力集中
正直
乐观
愿意与他人合作
接受他人合理建议
乐观向上,坚守道德,诚信可靠,换位思考,有建设性
正确认识自己
融入团队的速度
适应岗位的速度
听从指挥,按时保质保量完成任务,不找借口,改正错误
和客户良好的沟通,与团队协调发展
摆脱消极心态

过去已成事实,如果不在未来做出改变那么悔恨只是浪费时间。
还能改变的就是现在和未来。
给遇见的所有人打个招呼吧
多笑一笑
见到别人的优点多赞美
能力,心态交织

人财
能力高,心态好
创造的价值不仅高于需支付的薪水,而且是竞争中最实惠的的,所以要么你要价低,要么能力高。
人才
能力差,心态好
能力不好可以培养
人材
能力强,心态差
没有职业素养,容易出卖公司机密,但技术好,确实需要你的技术就会考虑。
人裁
无能力,无心态
懒惰,不自信,借口

某些时期,懒惰了你可能还会有其他机会,但再也没现在这个机会了。
怎么自信,在初中课本里都写到了,你不断的积累小的成功,不断学到骄傲的小本领,才会自信起来。
no excuse没有任何借口
沟通

设定的目标
信息,**,情感传递
有个结果
实时反馈

每天需要时,反馈进度,需要什么帮助,已经完成什么,有什么结果。
收到短信,通知,要进行回复,以表示收到确认,有原因不能做到要进行解释。
诚信
礼貌,友善。 吵架,发脾气容易使沟通终止。

正确的态度

不骄傲,不懦弱,不卑不亢。

礼仪

你希望别人怎么对你,你就怎么对别人。

别人希望你怎么对待他们,你就怎么对待他们。

电话铃声响几声接
公务乘车哪个是上座
两套西服
藏蓝色,深灰色,浅灰色,
单排扣
条纹间距:针点式条纹或者没有条纹
肩膀
遮住臀部
衬衫
干净
平整
浅色系
纯棉加厚
袖长领高两指
领带
高品质面料,图案含蓄,深蓝绛红保底,
禁黑色,团复杂,破损,领带夹
西装,衬衫,领带配色
渐变色
对比色
红色可信
黑色权力
粉色潮流
黄色随和
公务配饰三一定律
皮鞋,皮带,皮包颜色统一
袜子颜色一致
商务外套
深色系,米色
直线型,A字形
不要垫肩
不扣扣子
穿之前把袖子上的商标减掉。。。
西装最下面的扣子不扣
领带不能露出来
休闲西装与正装西装
发型问题
清洁,染发,奇异发型,
第一印象很重要,自信,微笑。
倾听

不要盲目打断。
微笑,传递真诚的笑意,传递积极的感染力。
耳朵听,眼睛看,脑子想。
给予肯定

握手礼仪

握手顺序:尊者为先
握手的力度:合适
握手时间:合适
握手禁忌:戴帽子,墨镜,手插兜,不尊敬
目光注视
名片礼仪

接名片:
双手接
点头致谢
看内容
收起来
禁忌:
玩弄名片
随便折,放在一边
名片上写字
递交名片:
双手呈递
文字正向对方,让对面不用翻就可以看。
电话礼仪

工作时间非重大事情不接私人电话。
尊者先挂电话。
介绍他人

把职位低的介绍给尊者(上级,长辈,客户,外籍,女士)
切勿手指,用掌心朝上介绍某人。
真诚。
汽车作为

司机旁边是上座
司机后面时vip上座,后座右边是公务接待上座。
开会

面门微商,以右为上,离远为上。
接电话

三声
接晚了,说声 抱歉让您久等了。
准备好纸笔做记录
接电话,您好,这里是xx。
进行确认。
结束语。请放心,谢谢。
仪态注意

动作迟缓,目光游移,弯腰驼背,神情不安,漫不经心,邋遢凌乱,趾高气昂,拘谨严肃。双手抱胸。

  • 胡思乱想

    • 真实记录下原始数据,如果需要,进行计算,或者其他形式的生成,不做删除。
    • 时间精力有限,需要才研究。
    • 风格可根据需求进行工具统一格式化。
    • 尽可能的不依赖工具,聚焦自我,不要浪费时间精力挑选工具。
    • 与时俱进,实时反馈,不要沉浸在老旧过时的标准中掌握奇技淫巧。

    • 需求优先级,分毫必争与抓住主要问题,风险与回报,不轻言放弃,不盲目坚持。
    ○ 抽象,封装,分等级,分模块。都是有这个需要,按需来的,功能抽象成什么程度,保留哪些可变,都时按需来。需要GUI供操作人员简单使用则写出常用的功能供给使用者来使用,更复杂的功能必须要是提供参数调整的接口,或是GUI,或是命令。
    ○ 谜团卖点金买了BKB终于守住高地,又是一波更新了华丽的不是至关重要的小装备而没有留买活一时疏忽被杀后被破了2路。时刻关注当下目标,到底是更肥看起来更具成长性好还是紧紧盯住胜利先过了当下,正如做笔记不是为了做笔记而是要学会东西一样,方式不应该作为一个不可放弃的东西,除非它变成了一个所需要的。如现在我需要提醒自己这发生的事以作日后参考。而这个的重要性,这个的需要到底什么程度,当然没有到不可或缺的程度,只是能想象到的一种需要,未经检验。而追求事物的华丽性应当是人生的一种追求,在以保证目标的前提下的追求,即活下来,再活的好。当然那波失误也很重要,主要在于买了宝石没有给队友协商好,我的沟通发出去而队友没理我,我应该坚持等他带上宝石或者我扔掉不太重要的装备而拿到宝石,也比冒着风险推炸弹人的塔强。所以做事要考虑风险,尽量考虑,当然有时候只能孤注一掷,还是要在可接受的范围内,比如输了怎么办,比如为什么不能等一下鸟,等到队友回答,等到队友拿到宝石,失之毫厘谬以千里。优势容易得意忘形,功亏一篑,同样在劣势的时候要紧盯住对方失误,不言放弃,只要继续下去,事实是输的概率会大,但还是有赢的机会,而放弃了,就是输了。
    • 小马过河分辨出真正需要的以及背后的意图
    ○ 没有完美的人,面对权威要有所思考,先模仿,理解先驱们良好的研究成果,在某一方面从活下来(必要),再到活的好。与此同时保留必要时刻(最低限度,当然没事你也可以优化,审视,反思,但值得嘛?人生是有限的精力,而人类发展过程中前赴后继的人才研究出的东西你能面面俱到的提出有效的建议?)的思考。
    ○ 进入某一行业问老人,他们喜欢吹嘘多难可能,注意是可能,当年付出多少汗水,以此显得当今的成果是理所当然和自身的优越。还有种可能确实很难。自己对一个东西的期待太简单才会觉得难。
    • 关于学习,抄袭,借鉴
    ○ 所有案例只可借鉴而不可绝对复制,因人而异。
    ○ 借鉴能找到的最优秀的资源,环境,人,思考他们的最佳实践,不断逼近,反思。

    • 为了想要的明天,根据需要:
    ○ 能达到的不可替代性,努力成为做出大部分贡献的那一小部分人
    ○ 重新造轮子,或者不造轮子。
    ○ 长线大鱼,还是现在吃饱
    ○ 直接和及时的反馈
    ○ 看清自己是现在解决还是以后解决遇到的问题
    ○ 按部就班还是跳跃重点
    ○ 完善到什么程度,因为寻找完美的方案是一种拖延。
    ○ 选择工具,语言,了解细节,而不是标榜会什么,掌握了什么细节。
    ○ 说服了别人,掌握了东西,都不能让你骄傲,是个人花了时间就能学会一些东西。真正让我骄傲的应该是自己的成长,对家人负责的能力,反馈朋友,环境,社会,国家,自然,以及在此之上个人理想。
    ○ 我有心爱的人,我做过很多错事,我要珍惜当下的生活。令行禁止,约束自己就是在迎接未来的洗礼。我不会昏昏沉沉最终连爱人的能力都没有。

    • 及时反馈:
    ○ logo和反馈链接是必要的,建立在双向可沟通的基础之上。
    ○ 哪里不会,如何解决。
    ○ 保持和矛盾方的沟通,除非结束游戏。
    • 恶习:
    ○ 熬夜,放纵。讨厌强迫,害怕失败,寻找完美。
    § 培养对自己更好的习惯,习惯的环境,调整身体状态进入专注,一次只做一件事,别人强迫不爽是拖延,害怕失败是拖延,寻找完美是拖延。如果是该做的那么就去做。
    § 人本身大脑需要的营养,休息。身体的节律,呼吸,进食,规律趋于常态会更加稳定。故作息要稳定放纵跟偶尔的小变化不同,量的不同。
    • 实践是检验真理的唯一标准,一切都是为了能够到来的明天,而不是意淫的完美世界。
    • 可操作:
    ○ 事实:认识自己:专注时间,记忆力,推理能力,拖延
    ○ 计划
    ○ 记录
    ○ 可视化
    ○ 总结
    • 做和休息
    ○ 多种角色暗示自己进行不同的做事,休息,运动等,身体各部分之间要轮流休息。如学习一直在动脑,感到疲倦了再去洗洗衣服什么的。
    ○ 确保休息的时候全身心在休息。
    § 冥想,愉快的场景,身体的排泄和活动,血液循环。

• 排列需求的优先级,而后选择。利用其优点,也要承担其不缺点。
○ 如编程语言在不同领域中的选择,侧重点如高效率,安全,开发周期短等中的某些选项,在其他方面就要妥协。C/C++偏向于注重效率的图像,底层构件,同时要付出开发周期相对缓慢的代价。
○ 如不同编码风格之间的选择。可能要考虑公司的编码规范,历史习惯。
○ 如算法中空间和时间代价的平衡,虽然每年都有新的算法更胜一筹,但排除面面俱到的提升,大部分都是根据需求调整舍弃和要得到的。
动态联系问题,回顾反思,避免盲目从众,墨守成规、戾气十足,钻牛角尖,以当下需求为导向,需要思考,需要变化,需要稳定,需要易读性,需要跟随事物新发展新动态,那就去做。

、 - 由于不加括号在阅读、修改、调试等环节容易出现优先级的问题,所以加上括号吧,少一点歧义,明确的指定我就是要这个运算块是一个整体而不会在修改后和其他地方形成新的运算优先级。

简历

  • 真实可信,简明扼要,重点突出
  • 个人情况,求职意向,具备技能
  • 经历中自己做了什么重要贡献,数据说话
  • 与众不同,插入相关技能,

面试

求职陷阱

  • 要求购买产品
  • 提前缴纳培训费
  • 试用期无薪水
  • 招聘信息不实,无法查询
  • 拉到一定客户或宣传业务

注意事项

  • 面试前

    • 了解公司
    • 了解相关技能点,大牛们的专业领域
    • 了解怎么去线下面试,所需材料
  • 自信

  • 心细

    • 手机静音,提前处理好要发生的事情
  • 学会争取

    • 给我一些建议
    • 或者能否给我一个机会
  • 接到要面试的电话

    • 不方便时诚恳的提出方便的时间。
    • 明确对方信息
    • 接受时则询问需要的时间地点所需材料
    • 向对方来电表示致谢。
  • 换位思考如果自己是面试官,这么多面试者会发offer给谁

  • 喜欢顺序提问的

    • 比较乏味,面试经验缺乏,按章回答就好了。
  • 喜欢提问工作细节

    • 技术前沿大牛
  • 漫不经心的提问

    • 经验丰富的面试官
  • 标新立异的提问

    • 喜欢挫败面试者来考验其受挫能力,要顽强向上,承认自己不足。
  • 大谈本单位

    • 荣誉感的面试官
  • 工资期望

    • 给个范围
  • 谈谈家庭

    • 强调和睦的家庭,父母对孩子的教育重视
    • 家庭责任感
  • 关于加班

    • 说明自己的工作是高效的,不会拖延影响进度。
    • 如果是工作需要,那就很乐意。
    • 上午家庭,加班会让自己客观上成长更快。
  • 关于和上级争执

    • 表明自己不会这么做,这是个不可能发生的事情。
    • 意见不一的时候不宜影响公司大局和领导的威信力,会对公司产生不良影响。
    • 自己意见不一,可能是自己见识太少,可以以学习的态度和周围人请教,如果必要才去浪费领导的时间。
    • 沟通后,以大局为重,公司的利益就是自己的利益。
  • 提问公司

    • 公司以后的主要发展方向。
  • 最后

    • 谢谢,期望有机会与您共事。
    • 谢谢,希望有机会大牛要带我飞。
  • 面试之后

    • 3天内表示感谢
    • 7天询问面试结果
  • 尊重事实

    • 事实是什么?事实不是自己臆想的、不是自己愿意相信的、也不是别人故意表现出来让你相信的、更不是有人拿着国家人道主义道德政策让你以为的。
    • 反例有:
      1. 自己赌博时渴望着赢,而事实上客人输才是赌场能够经营下去的原因。这里的输指的是金钱的减少,而不是某一场你赢的概率是50%,即便你赢了,你也没有获得50%的可能的收益,因为赌场有抽水。而更多数情况下,由于信息不全、情绪化、思考的模型不够贴合导致赢的概率都在50%以下。而有的人愈发强烈的必胜心,会忽略输的一面,只看赢的一面。轻则输钱难受,重则倾家荡产不能接受现实了结此生。
      2. 吵架的时候人总愿意相信自己是对的,别人都是错的,要认识到人产生这种看似是偏见到底是客观的,还是人本身的自我保护还是什么?
      3. 纳粹德国在向民众煽动时,将邪恶的战争描述成国家立国之本,民族自强的必经之路,国家机器极其具有煽动性的灌输偏离客观的爱国情怀,那么真实的事实是这样嘛?
      4. 传销描述着不需要创造价值的精神胜利法躺着就能赚钱,是客观事实嘛?
      5. 入门的时候读进阶的书籍,这叫好高骛远。
      6. 该进阶的时候读入门的书籍,这叫沉溺在舒适区,停滞不前。
      7. 妄自菲薄。忽略了信心的客观作用。
      8. 盲目自大妄图一步登天。忽略了客观规律的作用。
    • 事实是复杂的,没有人能掌握全部的事实,看到的不是全部的事实,据此推测的自己联想的也不是事实。道听途说的就更难以判断是不是事实。
    • 事实是复杂的,有些难以描述,但难以描述不意味着经历过思考过和没经历没思考过一样。事实的复杂,以至于冗余繁杂的对一个规律的描述只求对其精确的刻画、贴近真理。初学需要这种冗余,因为简洁全面意味着高抽象,枯燥,难以理解。这就要求通过不断的例子多角度哪怕重复冗余也要加强从基础水平到简介全面的公式的过渡。而这种过渡又是因人而异的,有的人训练的很少就可以融会贯通,有些人训练的多。究其本身,除去语言的歧义性、多变性还有事物固有的复杂度,每个人的掌握背景也不同,所以因材施教,对待自己的特质要有针对性的,可能是冏与常人的方法来对待。总结就是实践是检验真理的唯一标准。所有的理论,方法,都是来源于实践对规律的发现,从已知的实践中总结,而最终服务于实践。这种实践可能时间跨度会很长,不能立即见效,但最终还是要实践来检验。
    • 因材施教,发展才是硬道理。结合各方的说法,想要自身实践时,普遍的规律在适用个体的时候会有所出入,所以不能迷信某些教条,除非确实对自己有帮助
    • 性子是环境故意对自己造成的还是自我放纵,是有人设计好的让他人自爆影响个人生产力、幸福感、健康还是给自己带来了什么好处?
    • 事实到底是什么
    • 根据已知的事实说明的一些规律和道理,他们针对的具体场景是什么?
  • Love is wise, hatred is foolish.

    • 爱是智慧的,恨是愚蠢的。
  • Cost and Benefit

    • 有特定的收益,就会有所代价。
    • 例如:具体用哪些算法,要分析特定的问题,特定的需求,需求比如:时间上更快,还是空间更小,还是解决的数据是大量小段数据,还是少量大段数据,都会有特定的解决方案,每种方案侧重不同,收益和代价也不同。
  • 现在相比历史过去是信息获得,进化最唾手可得的时代,它不是最好,所以它还将进化,但它是对当下的我们最好的时代,很多信息都可以方便的利用前人们智慧的结晶进行当下数据的方便整合,开放,互联,别辜负了它。

  • 任务、场景、特质。

    • 明确任务、目标是什么。
    • 世界在发展,问题的特定背景在变化,抓住场景紧要的是什么,和过去解决类似问题的经验有什么区别,防止过去的知识在解决新问题时造成生搬硬套的问题。这意味着,所有的经验只是借鉴,而无绝对适用之说。
    • 明确了目标,认清了应用场景,还要立足于真实世界中自身的特质,这个特质包括了开始的水平,优劣势,能达到的高度等
  • 现实是复杂的,尊重事实而不是愤慨激昂的相信大脑的感觉。

    • 自己容易对反对自己的观点作斗争,只要是客观的,可以反对。
    • 个例与整体水平,随着认识的数据越多,所得到的规律就越接近真实,个例的存在要重视,整体的数据统计也要重视。个例的存在是提醒自己有这种可能,如各种危险行为,不健康的生活习惯等。整体的数据统计是提醒自己,整体的水平、规律是怎样的。
  • 个人的核心价值在于对世界的贡献

    • 这种贡献不应该能被机器、某个自动的流程、以及大部分人所能替代。
    • 如果自己的能力是机器能够替代的,那么机器高速在发展,物理设备在急速廉价的过程也就是自己价值在变链家的过程。
    • 这种能力和做出的贡献也不应该是别人所能轻易替代的,所以自己在大量的专业领域中要找到对世界贡献更多的领域,然后做难以或者不能被替代的贡献。
    • 反例有:
      1. 手动更改代码以求格式美观 不如 自动格式化代码高效准确
      2. 自己开发一套操作系统 不如 现在究竟考验、广泛使用、大量人员测试维护的系统的实用价值高
      3. 自己手动洗衣服 不如 洗衣机省时省力
    • 以上反例只针对特定目的,比如价值,但对自身的价值来说,自己开发的操作系统是不如已经成熟的,但自己通过倒腾能学到东西,也是一种价值。
  • 术业有专攻

    • 世界很大,领域很多,每个人有不同的环境,有其发展的特定领域,在特定领域又有特定领域。
    • 基于这样一个客观事实,我们就可以坦然接受很多领域不如别人的事实,即使是专业领域,也有所侧重,而不是作为专家的时候不能
  • 完美

    • 完美不存在。
    • 追求完美是积极的心态。
    • 害怕失败、害怕出错、害怕不完美只会束缚自己,失去一次次的机会,停滞不前。
    • 错误更能让人找出需要改进的地方,失败是失败,但不是完结,除非你无所反思无所动作,否则失败也是有利有弊。
  • 公司与员工的关系

    • 互利共赢,缺一不可。
  • 明确任务,积极沟通,及时反馈。

    • 任务不明确那么可以浪费时间的事情就太多了。
    • 沟通不到位,轻则影响团队效率,重则毁掉团队成果。
    • 进度要及时反馈,让自己和需要知道的人早作准备。
  • 拥抱变化,终身学习,与时俱进,迭代更新。

  • 如果不是必需的话,可以放下偏见,看看另外的路是什么样的,是不是你想的那样、听到的那样。

  • 有很多道理老生常谈,在阅读的时候经常不注重,就当作官话跳过去了,不是只有新的事物、闻所未闻的才是瑰宝,只要它是有道理的,就不管它是谁说出来的,也不管多么老套,情理上那么不能接受,事实就是事实,规律就是规律,顶多,它只是个令人讨厌的道理。

  • 放下自己无所谓的骄傲和固执(你可能认为是尊严的固执)、尊严是尊严,道理是道理,自己是会做错事情,自己会有自己不擅长的领域,自己擅长的领域也会有不如人的地方,想要成长就不能偏执。毕竟,这不可耻,这和尊严无关。

    • 流水不腐:场景的变化带来需求的变化。
      • 如面向机器效率的比重逐渐降低,面向快速迭代生产研发比重增高。
      • 各种编程语言的新生,衰落,标准的更新,为了适应更新的需求。
      • Java 从面向改变什么值,逐渐向面向函数式编程。
    • 胡思乱想

      • 真实记录下原始数据,如果需要,进行计算,或者其他形式的生成,不做删除。
      • 时间精力有限,需要才研究。
      • 风格可根据需求进行工具统一格式化。
      • 尽可能的不依赖工具,聚焦自我,不要浪费时间精力挑选工具。
      • 与时俱进,实时反馈,不要沉浸在老旧过时的标准中掌握奇技淫巧。

      • 需求优先级,分毫必争与抓住主要问题,风险与回报,不轻言放弃,不盲目坚持。
      ○ 抽象,封装,分等级,分模块。都是有这个需要,按需来的,功能抽象成什么程度,保留哪些可变,都时按需来。需要GUI供操作人员简单使用则写出常用的功能供给使用者来使用,更复杂的功能必须要是提供参数调整的接口,或是GUI,或是命令。
      ○ 谜团卖点金买了BKB终于守住高地,又是一波更新了华丽的不是至关重要的小装备而没有留买活一时疏忽被杀后被破了2路。时刻关注当下目标,到底是更肥看起来更具成长性好还是紧紧盯住胜利先过了当下,正如做笔记不是为了做笔记而是要学会东西一样,方式不应该作为一个不可放弃的东西,除非它变成了一个所需要的。如现在我需要提醒自己这发生的事以作日后参考。而这个的重要性,这个的需要到底什么程度,当然没有到不可或缺的程度,只是能想象到的一种需要,未经检验。而追求事物的华丽性应当是人生的一种追求,在以保证目标的前提下的追求,即活下来,再活的好。当然那波失误也很重要,主要在于买了宝石没有给队友协商好,我的沟通发出去而队友没理我,我应该坚持等他带上宝石或者我扔掉不太重要的装备而拿到宝石,也比冒着风险推炸弹人的塔强。所以做事要考虑风险,尽量考虑,当然有时候只能孤注一掷,还是要在可接受的范围内,比如输了怎么办,比如为什么不能等一下鸟,等到队友回答,等到队友拿到宝石,失之毫厘谬以千里。优势容易得意忘形,功亏一篑,同样在劣势的时候要紧盯住对方失误,不言放弃,只要继续下去,事实是输的概率会大,但还是有赢的机会,而放弃了,就是输了。
      • 小马过河分辨出真正需要的以及背后的意图
      ○ 没有完美的人,面对权威要有所思考,先模仿,理解先驱们良好的研究成果,在某一方面从活下来(必要),再到活的好。与此同时保留必要时刻(最低限度,当然没事你也可以优化,审视,反思,但值得嘛?人生是有限的精力,而人类发展过程中前赴后继的人才研究出的东西你能面面俱到的提出有效的建议?)的思考。
      ○ 进入某一行业问老人,他们喜欢吹嘘多难可能,注意是可能,当年付出多少汗水,以此显得当今的成果是理所当然和自身的优越。还有种可能确实很难。自己对一个东西的期待太简单才会觉得难。
      • 关于学习,抄袭,借鉴
      ○ 所有案例只可借鉴而不可绝对复制,因人而异。
      ○ 借鉴能找到的最优秀的资源,环境,人,思考他们的最佳实践,不断逼近,反思。

      • 为了想要的明天,根据需要:
      ○ 能达到的不可替代性,努力成为做出大部分贡献的那一小部分人
      ○ 重新造轮子,或者不造轮子。
      ○ 长线大鱼,还是现在吃饱
      ○ 直接和及时的反馈
      ○ 看清自己是现在解决还是以后解决遇到的问题
      ○ 按部就班还是跳跃重点
      ○ 完善到什么程度,因为寻找完美的方案是一种拖延。
      ○ 选择工具,语言,了解细节,而不是标榜会什么,掌握了什么细节。
      ○ 说服了别人,掌握了东西,都不能让你骄傲,是个人花了时间就能学会一些东西。真正让我骄傲的应该是自己的成长,对家人负责的能力,反馈朋友,环境,社会,国家,自然,以及在此之上个人理想。
      ○ 我有心爱的人,我做过很多错事,我要珍惜当下的生活。令行禁止,约束自己就是在迎接未来的洗礼。我不会昏昏沉沉最终连爱人的能力都没有。

      • 及时反馈:
      ○ logo和反馈链接是必要的,建立在双向可沟通的基础之上。
      ○ 哪里不会,如何解决。
      ○ 保持和矛盾方的沟通,除非结束游戏。
      • 恶习:
      ○ 熬夜,放纵。讨厌强迫,害怕失败,寻找完美。
      § 培养对自己更好的习惯,习惯的环境,调整身体状态进入专注,一次只做一件事,别人强迫不爽是拖延,害怕失败是拖延,寻找完美是拖延。如果是该做的那么就去做。
      § 人本身大脑需要的营养,休息。身体的节律,呼吸,进食,规律趋于常态会更加稳定。故作息要稳定放纵跟偶尔的小变化不同,量的不同。
      • 实践是检验真理的唯一标准,一切都是为了能够到来的明天,而不是意淫的完美世界。
      • 可操作:
      ○ 事实:认识自己:专注时间,记忆力,推理能力,拖延
      ○ 计划
      ○ 记录
      ○ 可视化
      ○ 总结
      • 做和休息
      ○ 多种角色暗示自己进行不同的做事,休息,运动等,身体各部分之间要轮流休息。如学习一直在动脑,感到疲倦了再去洗洗衣服什么的。
      ○ 确保休息的时候全身心在休息。
      § 冥想,愉快的场景,身体的排泄和活动,血液循环。

• 排列需求的优先级,而后选择。利用其优点,也要承担其不缺点。
○ 如编程语言在不同领域中的选择,侧重点如高效率,安全,开发周期短等中的某些选项,在其他方面就要妥协。C/C++偏向于注重效率的图像,底层构件,同时要付出开发周期相对缓慢的代价。
○ 如不同编码风格之间的选择。可能要考虑公司的编码规范,历史习惯。
○ 如算法中空间和时间代价的平衡,虽然每年都有新的算法更胜一筹,但排除面面俱到的提升,大部分都是根据需求调整舍弃和要得到的。
动态联系问题,回顾反思,避免盲目从众,墨守成规、戾气十足,钻牛角尖,以当下需求为导向,需要思考,需要变化,需要稳定,需要易读性,需要跟随事物新发展新动态,那就去做。

初读《大话数据结构》


title: 大话数据结构笔记
date: 2017-11-09 09:48:20
tags: algorithm

Chapter 1 绪论

喜欢做,做得好,得到市场认可,个人来来帮助,所以作者继续出书。

关于本书

  • 本书为自读书本,旨在靠自己独立学习本书作为学习主要方式,非教学大纲式教材
  • 趣引导,图文并,代码详,形式新。
  • 为了通用性,牺牲便利性,采用C89标准重写了代码。
  • 不停的练习。
  • 目标:默写基本的算法
  • 准备:作者阅读了大量数据结构和算法相关的书籍。
  • 感谢:家人奉献,朋友支持,出版社,已经所有给予帮助的人。

数据结构概念

  • 数据结构:是相互之间存在一种或多种关系数据元素的集合
  • 数据:描述客观事物的符号,是计算机可以操作的对象,能被计算机识别、处理的符号合集。
  • 数据元素:组成数据的、有一定意义的基本单位,在计算机中通常u哦为整体处理。亦被称作记录
  • 数据项:一个数据元素可由若干数据项组成。数据翔实数据不可分割的最小单位
  • 数据对象:性质相同的数据元素的集合,数据的子集。
  • 逻辑结构:数据对象中数据元素之间的相互关系。
    • 集合
    • 线性
    • 树形
  • 物理结构:数据的逻辑结构在计算机中的存储方式。(主要指内存)
    • 顺序
    • 链式
  • 数据类型:性质相同的值的集合+此集合上的操作
    • 原子类型
    • 复合类型
  • 抽象数据类型:ATD(Abstract Data Type)

小结

  • 数据
    • 数据对象
      • 数据元素
        • 数据项

想法

  • 考虑人类的独特

    客观事物的规律是冷冰冰的,可我们是人,为人服务,必须考虑人类的特性,比如喜欢幽默有趣的人和事物。

    • 幽默
      • 通过人接纳差异化信息,使信息产生隔断,信息具有多个开始和结束,方便记忆,大脑产生愉悦感,更有利于接下来的学习。
    • 已有事物的增删来认识新事物
      • 更符合人的省事的本质
      • 接纳新事物要具体化,链接到已有的知识点,改造旧知识而非完全建立新的概念,徒劳
    • 非理性
      • 不恰当的比喻
        • 例: 高价商品的衬托
      • 固有习惯的利用
        • 从小接受环境带来的思维习惯会成为被利用的对象
          • 先入为主
  • 世界是复杂的
    • 多角度看待
      • 和不同位置的人换位思考
  • 没有完美
    • 按流程走,即使不至善至美也要走下去,因为逆水行舟,不进则退
      • 例:rust lang 1.0的发布

regular_xpressions

干什么用

  • 匹配和处理文本字符串
  • 也叫作——文本模式匹配中的模式。

注意排版的时候我特意将正则表达式能来干什么放到了最开始,如果你没有这样一种需求,那么无需为此付出学习的代价。

是什么

  • 正则表达式(Regular Expressions, RE)。

参考资料

  • 入门:《正则表达式必知必会》
  • 搜索“在线正则小工具”

注意事项

  • 字母大小写敏感
  • 单一问题多解,没有你对了他错了之分。
  • 正则在不同语言环境中的具体实现是多样的,同一个表达式,可能有效,可能需要少量改动。

怎么用

匹配单个字符
  • .: 匹配任意单个字符,比如数字,字母,标点,甚至.本身,但不包含newline换行符????
  • \: 转义字符, 将.等有特殊功能的元字符转为普通的字符自己本身。
    • \\: 匹配\.
    • \.: 转义之后就只匹配.这个字符而非所有字符。
匹配多个字符
  • []: 匹配该括号中表示的的集合中的任意的一个元素.括号中除了-外,有些元字符可省略转义。。
    • [Rr]: 用来表示匹配大小写R或者r
    • [0123456890]: 指定某一位必须是数字
  • -: 在[]中为元字符, 表示ASCII的字符区间, 在[]外为普通字符, 无需转义.
    • [0-9]: 与[0123456789]等价, 区间表示的是ASCII对应字符的连续区间.
    • 错误用法: [A-z]: 不仅包含大小写字母, 还有ASCII中Z到a之间的其他字符.
    • [A-Za-z]: 才是只包含大小写字母.
    • [A-Za-z0-9]: 匹配大小写字母和数字.
  • ^:
    • [^]里紧跟着左括号的的^才是取非,操作面向的对象是整个集合。
    • ^: 还有其他用途,这个用途跟vim里的快捷键是类似的,初步估计一个时代的产物,然后就是键盘上的符号不够了,不然不会一个符号多个用途。
    • [^0-9]: 匹配不是数字的字符串
使用元字符
  • 元字符:默认下的.,[,\等是元字符,用转义字符\转义后是普通字符;以及在普通字符前加上\后,整体变为了元字符;还有诸如[]中的-是元字符,而在[]之外的-是普通字符。
    • \d: 与[0-9]等价, decimal, 数字.
    • \D: 与[^0-9]等价,非数字。
    • \w: 与[a-zA-Z0-9_]等价,任意一个大小写字母、数字、下划线;word, 字.
    • \W: 与[^a-zA-Z0-9_]等价,任意一个非大小写字母、非数字、非下划线的字符。
    • \s: 与[\f\n\r\t\v]等价,任意一个空白字符,这里没有[\b],这个退格字符都删完了怎么匹配它?它的存在表示什么。一会我要删除了左边的字符?什么时候?
    • \x:后跟16进制
    • \0:后跟8进制,大概的意思就是这个功能我提供,但是你非要别人都看不懂那你就用。
    • [:alnum:]: 与[A-Za-z0-9]等价, 更多POSIX字符都与具体等价,而且要两对方括号,一对表示上面的字符集,另一对表示内部POSIX字符,还有一对冒号,一点都不简练,我选择,不学省略。。
  • 空白元字符
    • [\b]: backspace键,回退删除一个字符.
    • \f: form feed 换页符
    • \n: newline换行符
    • \r: return 回车符
    • \t: tab 制表符
    • \v: vertical tab垂直制表符
    • 注:CR:Carriage Return, LF:Line Feed
重复匹配:
  • +: 一个或多个,在某一个字符(一个字符集限定的也只是一个字符)后加
    • [0-9]: 匹配单个数字
    • [0-9]+: 一个或多个数字
    • [0-9+]: 匹配单个数字或一个+。这个属于看起来对,实际上也对,只不过不是看起来的意思。同时意味着方括号里的元字符有时候可以省略转义字符,然而,规范起见还是加上吧。
  • *: 0个或多个,作用同+
  • ?: 0个或1个,即有或者没有,与{0,1}等价。
  • {}: 制定出现次数。
    • {3,5}:最少出现3次,最多出现5次。
    • {3,}:最少出现3次,最多不限
    • {3}: 出现3次。
    • [0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]: 匹配长度为6位的十六进制数.
    • [0-9A-Fa-f]{6}: 出现六次
    • *,+,{n,}:这三个无上限,意味着贪婪匹配,能找到则继续找。
    • *?,+?,{n,}?:在其后加?,意味着找到一次即停止。那不就对应 .{1}{n+1}了嘛
位置匹配:
  • 边界限定符
    • \b: boundary 边境限定符, 匹配\w\W之间的位置,不匹配任何字符。即字母、数字、下划线和非字母、非数字、非下划线之间的位置。
    • \bcat\b: 表示查找 cat 这个单词,并且cat周围没有其他字母数字等
      • 匹配cat(左右各一个空白)、cat(左右是换行符)等
      • 不匹配 category, recat
    • \bcat: 匹配 cat开头的单词诸如 catcategory
    • cat\b: 匹配 cat结尾的单词诸如catrecat
    • \B: 非边界限定符。 :空格、-等都不是\w所以他们是\W
      • \W\W:之间的位置就是\B
      • \w\w:之间的位置也是\B
  • 字符串边界
    • ^匹配到字符串的开头位置(非字符)
      • ^\s*<\?xml.*\?>:xml文件匹配(贪婪性的*只匹配开头)
        • ^制定了字符串开头位置后紧跟
        • \s:开头后加任意0或n个空白符
        • <:确定开始位置后只能跟空白字符之后只能跟左括号<
        • \?:转义为普通字符?
        • xml:普通字符串
        • .*?:懒惰性匹配,只要又能匹配成功的.的0或几个最少能满足就好,也就是遇到第一个?的时候满足就不继续匹配了。
      • </[Hh][Tt][Mm][Ll]>\s*$>:匹配</HTML>结尾。
      • ^.*$: 涉及到跨多行的时候newline是否算字符还是边界,各种实现返回的结果都不一样,放弃进一步研究,因为这个式子临时没需求。
    • 分配匹配模式: 改变其他元字符的作用范围
      • (?m): multiline mode,所有模式之前。作用是将换行分隔符作为字符串分割符,这个模式下每行开始都是一个新的string字符串,所以多个开头^,结尾$
        • (?m)^\s*//.*$: 每行匹配,开头位置后可能有空白字符的,含有//注释字符的,任意字符到结尾。如果没有(?m),则会跨越每行直到所有行的结尾。
子表达式
  • no-breaking space: 不换行空格 比如: Visual Studio死也要在一起。。即
    • Visual&nbsp&nbspStudio: 需要匹配的文本
    • (&nbsp;){2,}
  • 邮箱的正则进化史:
    • 要求:每种邮箱规定的长度,能否包含.-_,都不同,所以共同要求为:必须字母开头的
    • \w@\w\.\w: [email protected] 每个地方仅有一个字母
    • \w+@\w+\.\w+[email protected] 注意不能多一个点不能少一个点
    • [\w\.]+@[\w\.]+\.\w+: 第一个字母可以是点嘛?
    • \w+[\w\.]*@[\w\.]+\.\w+: 字母、数字、下划线开头的
  • 匹配空白行进化史,检测两次换行才会有一个空白行。
    • \r\n\r\n: windows下,\r\n 表示回车换行
    • \n\n: Unix/Linux下, \n 表示换行
    • \r?\n\r?\n:两个系统通用, 那么\r是可选的\n是必须的.
    • [\r]?\n[\r]?\n:作用同上,为什么加方括号?就像编程里加括号一样,容易阅读修改,?修饰的是括号里的字符集。

centos_on_virtualbox

CentOS on VirtualBox

Pre:

  • Virtual Box
  • rhel7.iso image

Settings:

  • Name: CentOS
  • Memory size > 2048MB
  • Hard Disk > 30GB
  • General > Advanced > Shared Clipboard & Drag'n'Drop
  • Display > Video Memory > 64MB
  • Storage > RHEL.iso
  • Shared Folders > C:\Users\FireCuckoo\SharedFolder > Auto-mount

Install:

  • Right Ctrl to escape vitual machine
  • Software Selection > Development and Creative Workstation
  • Network On
  • root:L & l:l
  • double click DONE to confirm weak passwd
  • Take Snapshot
  • Accept License & Network

Go:

  • WINDOWS+↑↓:Maximize,Restore
  • WINDOWS+PageUp:Last Desktop
  • WINDOWS+PageDown:Next Desktop

Open Terminal:

  • Right Click > Open Terminal

  • Settings > Keyboard > Shortcuts > Add > Name:Terminal > Command:/usr/bin/gnome-terminal > Click > Ctrl+Alt+T

  • Test Network: ping www.baidu.com

  • Full Screen: VirtualBox > Devices > Insert Guest Additions.. > yum install gcc kenel kernel-devel > reboot
    C++:

  • Install GCC > yum install gcc

  • Install g++ > yum install gcc-c++

  • Install CLion > /root/clion-2017.2.3/bin/clion.sh

  • Open CLion > WINDOWS > search > CLion
    Git:

  • yum install git

Google搜索技巧

谷歌

  • site:quora.com ~algorithm "data structure" -python 2014..2017:在quora网站上搜索data structure这个不可分割内容,近义词algorithm的,不要python,2014年到2017年
  • file:pdf design pattern intitle:java: 指定标题中含有Java的关于design pattern的pdf文件。

谷歌学术

  • author:Linus Linux: 指定Linus 写的关于Linux的内容

其他

  • 在线xx工具: 不想下载软件?试试想要的功能加上在线二字,诸如操作系统,各类软件,小工具等.
  • 谷歌快照:可能刚被删除的内容就可以在快照中找到。
  • 高级搜索: 打开各种排序,指定时间等。
  • Ctrl F: Find, 在繁杂的信息中迅速定位到目标。
  • Ctrl L: Link, 在标题栏中输入链接.
  • Ctrl 数字: 跳转到第几个标签页.
  • 不局限于Google: 其他的不被或者不轻易被Google索引的一些资源,可能也是你需要的, 如维基百科中参考的链接、图书馆里的期刊论文等。
  • 维基百科不等于权威:写论文的话要找可靠的参考论文,维基百科只是网络资源,并没有权威性,虽然一般来讲水平都很高。

职业素养

因材施教,发展才是硬道理。结合各种说法想要自身实践时,普遍的规律在适用个体的时候会有所出入,所以不能迷信某些教条,除非确实对自己有帮助,

利用碎片时间

有时间就想一想:

  • 反思做错了什么
  • 为接下来的时间做计划
  • 闭目养神

3B

Bus交通时间
  • 宜看书听书
    • 能看书就带本书,太吵就看电子书,太挤听书听讲座听新闻。
Bed睡前时间
Bath洗澡时间

锁定目标

明确 Specific

可量化 Measurable

切实可行 Achievable

注重结果的 Result-oriented

时间限制 Time-limited

不要妄自菲薄,不骄傲自满

心态

  • 客观条件+自己主动。

好心态

  • 勤奋
  • 清晰的目标
  • 坚持
  • 合理安排
  • 创造性
  • 精力集中
  • 正直
  • 乐观
  • 愿意与他人合作
  • 接受他人合理建议
  • 乐观向上,坚守道德,诚信可靠,换位思考,有建设性
  • 正确认识自己
  • 融入团队的速度
  • 适应岗位的速度
  • 听从指挥,按时保质保量完成任务,不找借口,改正错误
  • 和客户良好的沟通,与团队协调发展

摆脱消极心态

  • 过去已成事实,如果不在未来做出改变那么悔恨只是浪费时间。
  • 还能改变的就是现在和未来。
  • 给遇见的所有人打个招呼吧
  • 多笑一笑
  • 见到别人的优点多赞美

能力,心态交织

  • 人财
    • 能力高,心态好
    • 创造的价值不仅高于需支付的薪水,而且是竞争中最实惠的的,所以要么你要价低,要么能力高。
  • 人才
    • 能力差,心态好
    • 能力不好可以培养
  • 人材
    • 能力强,心态差
    • 没有职业素养,容易出卖公司机密,但技术好,确实需要你的技术就会考虑。
  • 人裁
    • 无能力,无心态

懒惰,不自信,借口

  • 某些时期,懒惰了你可能还会有其他机会,但再也没现在这个机会了。
  • 怎么自信,在初中课本里都写到了,你不断的积累小的成功,不断学到骄傲的小本领,才会自信起来。
  • no excuse没有任何借口

沟通

  • 设定的目标
  • 信息,**,情感传递
  • 有个结果

实时反馈

每天需要时,反馈进度,需要什么帮助,已经完成什么,有什么结果。
收到短信,通知,要进行回复,以表示收到确认,有原因不能做到要进行解释。
诚信
礼貌,友善。 吵架,发脾气容易使沟通终止。

正确的态度

不骄傲,不懦弱,不卑不亢。

礼仪

你希望别人怎么对你,你就怎么对别人。

别人希望你怎么对待他们,你就怎么对待他们。

  • 电话铃声响几声接

  • 公务乘车哪个是上座

  • 两套西服

    • 藏蓝色,深灰色,浅灰色,
    • 单排扣
    • 条纹间距:针点式条纹或者没有条纹
    • 肩膀
    • 遮住臀部
    • 衬衫
      • 干净
      • 平整
      • 浅色系
      • 纯棉加厚
      • 袖长领高两指
    • 领带
      • 高品质面料,图案含蓄,深蓝绛红保底,
      • 禁黑色,团复杂,破损,领带夹
    • 西装,衬衫,领带配色
      • 渐变色
      • 对比色
        • 红色可信
        • 黑色权力
        • 粉色潮流
        • 黄色随和
    • 公务配饰三一定律
      • 皮鞋,皮带,皮包颜色统一
      • 袜子颜色一致
      • 商务外套
        • 深色系,米色
        • 直线型,A字形
        • 不要垫肩
          不扣扣子
      • 穿之前把袖子上的商标减掉。。。
      • 西装最下面的扣子不扣
      • 领带不能露出来
      • 休闲西装与正装西装
  • 发型问题

    • 清洁,染发,奇异发型,
  • 第一印象很重要,自信,微笑。

倾听

  • 不要盲目打断。
  • 微笑,传递真诚的笑意,传递积极的感染力。
  • 耳朵听,眼睛看,脑子想。

给予肯定

握手礼仪

  • 握手顺序:尊者为先
  • 握手的力度:合适
  • 握手时间:合适
  • 握手禁忌:戴帽子,墨镜,手插兜,不尊敬
  • 目光注视

名片礼仪

  • 接名片:
    • 双手接
    • 点头致谢
    • 看内容
    • 收起来
  • 禁忌:
    • 玩弄名片
    • 随便折,放在一边
    • 名片上写字
  • 递交名片:
    • 双手呈递
    • 文字正向对方,让对面不用翻就可以看。

电话礼仪

  • 工作时间非重大事情不接私人电话。
  • 尊者先挂电话。

介绍他人

  • 把职位低的介绍给尊者(上级,长辈,客户,外籍,女士)
  • 切勿手指,用掌心朝上介绍某人。
  • 真诚。

汽车作为

  • 司机旁边是上座
  • 司机后面时vip上座,后座右边是公务接待上座。

开会

  • 面门微商,以右为上,离远为上。

接电话

  • 三声
  • 接晚了,说声 抱歉让您久等了
  • 准备好纸笔做记录
  • 接电话,您好,这里是xx。
  • 进行确认。
  • 结束语。请放心谢谢

仪态注意

  • 动作迟缓,目光游移,弯腰驼背,神情不安,漫不经心,邋遢凌乱,趾高气昂,拘谨严肃。双手抱胸。

Cracking_the_Coding_Interview5th

向面试官展现出你比其他应聘者更优秀

物竞天择

第1章 面试流程

  • 了解招聘公司具体的面试流程:投简历,内推,笔试,面试,机试,HR,CTO……

  • 面试内容跟投的岗位有关,取决于面试光恶人喜好:常见的基础(算法,网络,数据库)问题,或者工程中已解决、待解决的问题

  • 学习,项目,人脉,自己的博客,GitHub

  • 刷面试题,简历,模拟面试,参加各种炮灰面试,知道大概是什么样子

  • 积累错误,经验,调整自己状态。

    • 经验,项目,技能,证书,成绩绩点。
    • 避免自大,巧辩,对抗面试官,面试官也是人,人有的缺点,面试官也会有。
    • 面试不会精确反应你的能力,什么意外都会有,参考最好最差情况,淡定准备下一场面试。
    • 不用太在意全对,展现自己的想法,流露出的专业水准,对各个方面的考虑,解法是否最优,用时最短,代码规范等所有表现出来的比别的面试者更优秀的品质。
  • 着装

    • 整洁,令人赏心悦目(尽量。。毕竟审美不同)
      了解面试所需:
    • 需要用纸笔嘛?
    • 沉默太久会尴尬,保持沟通
    • 着急的后果就是思考不全面,问题没问清楚方向跑偏,情况有遗漏,重点不突出,说不出面试官想得到的答案。
    • 严谨规范的代码展现你各方面的能力,例如代码模块更清晰,考虑情况更多
    • 有错误不要紧,认真对待,展现你的态度。
    • 表现出解决问题的决心和不放弃的毅力。

1.8 常见问题

  • 遇到见过的问题要如实相告嘛:当然。
    • 有助于展现你本来的品质:诚实。
    • 脱口而出给人怀疑,故意伪装第一次遇见又很虚伪。
  • 该使用哪种语言:
    • 跟你应聘的岗位有关的,或者常用的,如C/C++, Java
  • 面试结束后没有收到面试:
    • 什么情况都有,被拒,没有及时通知,或者忘记等。可过几天联系一次。
  • 悲剧之后重新申请吗?
    • 过一段时间。半年一年。

第2章 面试解密

  • 聪明,灵活应变,对技术满怀热情,4~5轮面试,
  • 你为什么要加入微软:
    • 例子:自打接触计算机以来,我就一直用微软的软件,贵公司开发的软件产品令人赞不绝口。比如,我最近一直在Visual Studio开发环境中学习游戏编程,它的API实在是太好用了。注意这个答案是如何展示你对微软的真挚的态度和对技术的狂热。
  • 亚马逊,谷歌:
    • 互联网公司,意味着在意扩展性。所以关注他们公司文化,技术领域。
  • 请提前准备公司相关内容,投资情况,行业地位。
  • 针对好可能的面试官所在岗位的技术,产品的知识储备。
  • 自我介绍,项目经理,做个题吧

第3章 特殊情况

  • 你碰到过的最棘手的问题
    • 展现你的解决能力,深入,给人深刻印象。
  • 项目经理:处理情况迎难而上,有条不紊,客户至上的服务态度,多层次交流能力,技术热情,团队合作领导能力。

第4章 面试之前

  • 积累经验
  • 构建人际网络:
    • 主动打招呼,乐于助人
  • 写好简历:
    • 删去无所谓的与岗位不相关的描述
    • 列举要点,能表现招聘最需要的能力的就写进去。
    • 清晰,美观(简历是要给人看的)。

第5章 行为面试

  • 我有哪些缺点?
    • 真诚,介绍完缺点强调如何克服。
  • 最难处理的
    • 详细,突出的表现出自己在解决项目中的哪些探索,那些贡献。
  • 提问面试官
    • 展现自身对公司某些技术的认识和兴趣,因为只有事先充分调研,才能问出有深度的问题。
  • 抓主干,条理清晰,有深度,尊重对方和自己,不要没有重点,浪费所有人的时间。
    • 描述场景,自己的行动,结果。

第6章 技术面试题

  • 在纸上编写,测试,修改算法代码。
  • 将纸上代码输入计算机时,记录错误。
  • 设计一种列表排序算法
    • 具体是哪种列表?数组还是链表。
    • 数组里是数字,字符还是字符串?
    • 数字的范围是身份证号还是
    • 总共有多少数据?
  • 设计算法时考虑:
    • 空间,时间复杂度
    • 数据量
    • 某个操作快,可能另一个操作就慢,需要取舍哪些?
    • 测试特殊值。

第7章 录用通知及其他

  • 讨价还价是常见的套路:所以理直气壮的还价吧,稍微开出高的要求,然后降低。

Visual Studio Code 配置记录


title: VS code Record
date: 2017-12-01 14:22:04
tags: ["VS Code", "Markdown"]

Situation

Write down something after reading, coding and thinking.

Target

  • .md format, pure text.
  • Shortcuts for main editing oprations.
  • Frequently Updating to meet the developing world.
  • Flow chart supported.
  • Visible logic map, easy navigating content.

Extensions

  • Markdown All in One:

    • Ctrl b: Toggle bold
    • Ctrl i: Tggle italic
    • Ctrl Shift ]: Uplevel
    • Ctrl Shift [: Downlevel
    • ToC: Table of Content
    • Tab&Backspace: For indent&unindent
    • Alt c: Check box
    • Table formatter
    • Outline View
  • Markdown Preview Enhanced:

    • Flow chart

      st=>start: Start Name
      op=>operation: Operation Name
      cond=>condition: Condition Name
      e=>end
      
      st->op->cond
      cond(yes)->e
      cond(no)->op
      
    • Sequence

      Title: Here is a title
      A->B: Normal line
      B-->C: Dashed line
      C->>D: Open arrow
      D-->>A: Dashed open arrow
      Note left of A: Note to the\n left of A
      Note right of A: Note to the\n right of A
      Note over A: Note over A
      Note over A,B: Note over both A and B
      
    • Gantt

      gantt
          title 项目开发流程
          section 项目确定
              需求分析       :a1, 2016-06-22, 3d
              可行性报告     :after a1, 5d
              概念验证       : 5d
          section 项目实施
              概要设计      :2016-07-05  , 5d
              详细设计      :2016-07-08, 10d
              编码          :2016-07-15, 10d
              测试          :2016-07-22, 5d
          section 发布验收
              发布: 2d
              验收: 3dmaid
      
      
      Loading
    • More flowchart

      st=>start: Start|past:>http://www.google.com[blank]
      e=>end: End:>http://www.google.com
      op1=>operation: My Operation|past
      op2=>operation: Stuff|current
      sub1=>subroutine: My Subroutine|invalid
      cond=>condition: Yes
      or No?|approved:>http://www.google.com
      c2=>condition: Good idea|rejected
      io=>inputoutput: catch something...|request
      
      st->op1(right)->cond
      cond(yes, right)->c2
      cond(no)->sub1(left)->op1 
      c2(yes)->io->e
      c2(no)->op2->e
      
      st@>op1({"stroke":"Red"})@>cond({"stroke":"Red","stroke-width":6,"arrow-end":"classic-wide-long"})@>c2({"stroke":"Red"})@>op2({"stroke":"Red"})@>e({"stroke":"Red"})
      
  • Read more

shadowsocks_ubuntu_config

install shadowsocks-qt5 client

sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update
sudo apt-get install shadowsocks-qt5

config

  1. hit WIN key
  2. input shadowsocks to open ss-qt5 client
  3. File -> import...
  4. click connect button
  5. ubuntu -> settings -> Network -> Network Proxy -> Manual -> Socks Host, 127.0.0.1, 1080.leave ignore hosts blank.
  6. if still no works, check brower settings -> network -> proxy.

Java SE 学习记录


title: Java SE 备忘
date: 2017-11-29 19:42:51
tags:

搭建 Java 开发环境

  • 下载JDK
  • 下载 IDE:IntelliJ IDEA
  • 配置JDK
    • 删除在Path中的C:\ProgramData\Oracle\Java\javapath
    • 新建系统变量:JAVA_HOME: C:\Program Files\Java\jdk-9.0.1
    • Path中添加纪录:%JAVA_HOME%\bin
    • classpath需要时手动添加, 早版本可能需要配置这个,后来会自动在当前文件夹搜索,无需添加

JAVA 基础语法

  • 基础类型,常量变量
    • 整型:byte,short,int,long 所占1248个字节, 1个字节有8位。
      • 对应空间2的n次方个数据,其中一半,即2的n-1次方,用来表示负数的话,另一半表示0和正数(如byte,一个字节8位,一共表示256个数据,从-128~127)
      • 根据上述方法,各类型范围正数最大,128,32767(3万),2147483648(21亿),
      • 整数默认为int类型
      • long类型要带L后缀(这种语法他就是这么实现的,其实完全可以实现为不需要带L也不报错,避免错误那就都带上符号)
    • 浮点型:float,double 4,8个字节
      • 浮点数默认为double
      • float类型要强加F后缀(这里也不需要注意F和f,既然都可以,f又没什么作用,那就加F大写更突出好了) ^_^
    • 字符型:char 2个字节 (Unicode)
    • 布尔型:boolean 1个字节
  • 变量注意
    • 使用前必须赋值
    • 作用域内有用
    • 不能重复定义相同变量,嵌套作用域则会覆盖,如无必要不要定义重复定义相同名。
  • 类型转换
    • 类型转换这个在C++中各种类型之间的转换复杂晦涩难懂,其实在Java里也一样,实现肯定也复杂晦涩,但是用的时候只取需要的用法,这样就能相对于需要的场景简单了,而它本身并不简单。
    • 值域小转大,自动转换为更大的,double d = 1000;
    • 值域大转小,int i=(int)3.14;要加括号强制类型
  • 运算符
    • 前置++,--,先加后返回++后的值
    • 后置++,--,先复制再加返回原对象的复制品,所以值也是原先的值,但自己的值在执行完已经完成了自加,
    • 尽量不要写复杂的嵌套,在同一句中对同一变量前后左右的的自加自减,想干嘛?分开语句明确写明白想要什么效果,避免因为运算、结合的优先级,各种运算的副作用,时效性导致意外的结果。本来实现也是因平台编译器决定的。不要触碰这些灰色地带,写简单傻瓜的表达方式,除非复杂难懂的表达式它能明确带来什么好处。
  • 引用类型:Scanner
import java.util.Scanner;
public class ScannerDemo {
    Scanner sc = new Scanner(System.in);
    //创建一个扫描器,制定输入流为System.in
    System.out.println("输入一个数字");
    int n = sc.nextInt();
    System.out.println("n的值为"+n);
    System.out.println("输入一个字符串");
    int str = sc.next();
    System.out.println("str的值为"+str);
}
注意:上述代码有很多IDE自动生成,需要相应快捷键,也就是说不是每个字需要自己手打才叫自己动手,不然自己造个电脑,自己造个锤子,自己建个发电厂再写代码啊,用快捷键借助IDE的便捷性使得程序员可以节省些不变的繁琐的操作。
sout快捷键对应输出语句
新建Scanner时,IDE会自动提示导入某个包。
。。。等等,学习中
  • Random
import java.util.Random;
public class RandomDemo{
    public static void main(String][] args) {
        Random r = new Random();
        //创建一个随机器
        int i = r.nextInt(100);
        //0到100的随机整数
        double d = r.nextDouble();

    }
}
  • Break continue
hello:for (int i=1;i<100;i++)
{
    for (int i=1;i<100;i++) {
        if(i>3){
            break hello;
        }
    }
}
  • switch 从某个条件进去后顺序执行直到break或default
  • 数组
//动态初始化,自动赋初值,一般为0,null等。boolean 默认初始化值为false
int[] x = new int[100];
//静态初始化,手动赋值
int[] x = {1,2,3,4};

遍历:
for(int =0;i<x.length;i++){
    System.out.println(x[i]);
}

数组越界:x[n]从[0]到[n-1]
数组空指针场:x=null后再使用时会出错。

二维数组:
//动态初始化赋初值
int[][] x = new int[3][4];
//第二维的元素内容长度不定,未初始化初值。
int[][] x = new int[3][];
//手动静态:
int[][] x = {{1,2},{3,4,5,6},{7,8,9}};
向上面的内容,我纯粹好奇试了以下是不是初始化了赋值,如果没有必要不用再试,个语言提供的特性是无数的人的智慧结晶,个人的生都无法试完,只做需要的必要的部分。当然要辩证的看,就是你好奇心所到的地方可能在日后不定的对自己有帮助,所以有时间研究当然研究这些好奇的东西啊。
  • 方法
    • 一开始我老是记不住Java main方法的之前那一堆东西,感觉繁琐,是相较于c语言的int main(){}来说的。
    • public static void main(String[] args):
      • 后来发现无非是前面加了限定符 , 公共权限,静态
      • 然后传参为字符数组,也就是运行java时候给的参数列表。
    • 返回值和参数都不是必须的
  • 方法的重载
    • 有且仅有参数类型、个数有逐一对应有变化就是方法重载;
    • 权限限定符、返回值类型的修改是重复定义一个函数,是错误。
    • public void test(int x)和public void test(int y),仅仅参数标识符不同,是错误
  • 基本类型的参数在栈中,而引用(保存对象的地址)也在栈中,而引用对应的对象在堆中。
    • 所以传参时基本类型原先的不改变,传引用会改变堆上的引用数据。
    • String比较特殊,String str = "hello"这种String类型表现出和基本类型相同的行为
public class Demo{

}

Demo d = new Demo();
此处为指针,类的属性的初始化在堆内存上。

  • Array List
import java.util.ArrayList;
ArrayList<String> list = new ArrayList<String>();
list.add(Object obj);
list.get(int index);
list.size();
list.add(int index, Object obj);
list.set(int index, Object obj);
list.remove(int index);
list.clear;

//尖括号指定类型,必须是引用类型
//byte对应的引用类型Byte,short->Short, int -> Interger, 等,基本上为大写全拼。

Java 面向对象

  • 面向过程,面向对象
    • 做什么,由谁来做什么
    • 封装,继承,多态。
      • 封装
        • 复用代码
        • 隐藏细节,暴露必要接口
      • 继承
        • 可维护性
        • 复用代码
        • 产生父子关系,多态的前提
        • 弊端:耦合度高
        • 最高父类Object类。
  • 继承
    • 单继承,多接口,
    • 多层继承和多类继承一个类是允许的
    • 子类不能访问父类私有变量
    • 同名变量,调用父类用super
    • 同名变量重写,只调用子类
    • 重写时访问权限不能更小,其他权限,参数,返回类型都要一样
class Aa extends A{}
  • 局部变量,成员变量
    • 方法下的为局部,类下的为成员变量
    • 局部保存在栈中,类中的变量保存在堆中
    • 生命周期,方法结束,类对象消失
    • 局部无初始默认值,堆中的成员变量有初始值
    • x表示局部的时候,this.x表示成员变量
  • 传值,传引用
    • 方法入栈执行,调用其它方法时,其他方法压栈,方法结束出栈,所以方法之间的传值是直接在栈中赋值
    • 同样如果传值为对象的引用类型,那么是将堆内存地址传给其他方法,操作后值会在堆上改变。
  • 成员变量的private public
    • private避免在类外直接访问,需要时用Set,Get
  • 内存对象创建,使用
    • main()方法压栈
    • 新建对象时,堆内存开辟空间,分配地址,成员变量默认初始化,将地址保存在栈中的对象名中;
    • 对象的方法调用时,压栈,如果是传值,那么在栈中的值传给栈中的这个对象方法,执行完,出栈。
  • 抽象类
    • 方法功能生命相同,具体内容不同,可以抽取方法声明,是抽象方法。
    • abstract修饰抽象方法和抽象类
    • 抽象类无法创建对象,调用抽象方法没意义
    • 覆盖了所有的抽象方法的子类才可以创建对象,否则还是一个抽象类。
  • abstract
    • 无法和private共存,private无法被继承,也就无法被实现
    • 无法和final
    • 无法和static
//抽象方法
public abstract void hi();
//抽象类
abstract class {

}
  • 抽象类可以没有抽象方法,作用不让别人直接创建该类。
  • 接口
    • 被实现,可以多重实现接口。类之间对应继承A是B,对象和功能之间对应拥有A有B的功能。是仅对一系列方法的服用。
    • 接口的变量必须是public static final,公共,一次初始化,不被改变。
    • 接口的方法必须是public abstract 抽象方法
    • 子类必须实现所有抽象方法才可以创建对象,否则还是一个抽象类
//多实现接口
class Zi extends Fu implements SayHi,SaySorry{

}
//接口之间的多继承
interface SayHi extends Say,Wave {

}
  • 抽象类与接口
    • 相同:
      • 继承顶端,被继承或实现
      • 不能直接实例化
      • 包含抽象方法,子类必须全部覆盖
    • 不同:
      • 抽象类部分方法提供子类不同实现,接口只包含抽象方法,
      • 只能继承一个类(包括抽象类),而接口为了弥补单继承提供了对方法的服用。
      • 抽象类是某个类的共性抽象,is a的关系
      • 接口是某个功能的集合,like a的关系
  • 多用接口,只有为所有子类都有的不同实现的功能才用抽象方法
  • 多态
    • 继承的时候,如一只狗阿黄既可以初始化另一只狗老黄,也可以初始化另一个动物老老黄。因为狗本来也是动物啊。
    • 多态体现为,子类不仅可以初始化子类,也可以初始化父类,因为子类既是子类也是父类。
    • 当有重名成员时
      • 多态成员变量调用时,编译运行都看左边。编译时未找到则编译失败。
      • 堕胎成员方法调用时,编译看左运行看右。编译时未找到则编译失败。
    • 子类赋值给父类引用,向上转型。
    • 一个已经向上转型的子类对象可以强制将父类引用转回为子类引用,向下转型。
  • instanceof关键字
    • 返回是否为某个类true or false,例如一个类判断既是子类又是父类都会返回true
  • 多态使用需要判断再向下转型,向下转型后才能使用子类方法
  • 当不需要面对子类类型时,直接使用其父类进行操作
  • 当时用了子类特有功能,再进行向下转型
  • 构造方法
    1. main()方法压栈,执行new 对象时,
    2. 在对内存中分配一片区域,存放Person对象,对应内存地址,默认初始化成员变量。
    3. 执行构造方法。
    4. 构造方法之间的相互调用用this(指定参数);
  • 构造方法之间相互调用
    • main压栈,new对象
    • 堆内存开辟空间,分配地址,成员变量默认初始化
    • 例如传递了2个参数,那么拥有两个参数的构造方法先压栈,this(0x绑定内存地址),调用一个参数的构造方法时,一个参数的构造方法再压栈。一个参数的构造方法执行this(0x相同的内存中地址。)
    • 执行完参数赋值后,被调用的一个参数的构造方法先出栈,再执行两个参数中第二个参数的赋值。执行完弹栈。
    • 到此该对象创建完成,最后对象的对应内存地址再赋值给左边的引用。
  • super关键字
    • 创建子类对象时,依次从父类开始执行构造方法,对应隐藏super(),无参默认构造方法。
    • 因为子类继承父类内容,所以要先初始化父类的内容,当无指定时,就是默认构造父类的内容
    • 如果构造方法第一行调用了本类其他构造方法,那么不执行默认的super(),this(),super()只能定义在第一行。
    • 当父类没有空参构造方法时,通过super(参数)访问父类有参或者this(参数)访问本类其他构造方法
  • final
    • final class
class fu{}
final class Zi extends Fu{}
//Zi类不能再被其他类继承
  • final方法
    • final 方法不可被覆盖,可被继承。
  • final变量
    • final 变量为常量,只能赋值一次。
  • final 引用类型变量值为对象地址值,值不可变,值对应的对象内的值可以改变。
  • final 成员变量,需要在创建对象前赋值,否则报错,没赋值时,多个构造方法都要为其赋值。
  • static
    • static 修饰的成员变量属于类,不属于某个对象,是所有对象共享也就是这个类的,建议用类名调用。
    • static 内容是优先于对象存在的,只能访问静态,不能用this/super,静态内容存于静态区。
    • 同类中静态成员只能访问静态成员
    • main方法为静态方法,为程序执行入口。不属于任何一个对象。
  • 静态常量
public static final定义静态常量
般变量名为下划线连接的大写单词
使用类的静态成员时,不需要创建对象,直接使用类名。
  • 匿名对象
    • 用途:
      • 只创建对象,不把对象地址赋值给某个变量。
      • 因为没有变量名,也没有保存内存地址,所以无法使用第二次,第二次创建匿名对象时,新的匿名对象又会产生。
  • 内部类
    • 写在其他类的成员位置或方法中局部位置的类叫做内部类,包含内部类的类叫外部类
    • 一般当一个事物包含其他类时用内部类。
  • 成员内部类
class Body {
    public class eye{

    }
}
  • 访问成员内部类
Body.eye be = new Body().new eye();
be.xxxxx();
  • 局部内部类
class Body{
    public void kiss {
        class eye{
            public void close(){
                sout "close";
            }
        }
    }
}
  • 访问局部内部类
Body b = new Body{};
b.kiss();
//访问该方法时创建该类并运行对应方法
  • 内部类增强了耦合,但方便了调用外部类的内容
  • 常用内部类:匿名内部类
    • 作用:需要用某个抽象类的子类时不用专门定义,在用的时候临时定义某个抽象类的子类;定义后即刻创建这个类的对象,用完就扔。
    • 如果这个类没有赋值给引用,那么新定义的类创建的这个对象就是匿名对象。
  • 包和类名
    • 包即文件夹一一对应。
    • 其他包的类需要用包路径全名,可用import这个类,导入后再省去包路径直接用类名
  • 访问修饰符
    • public: 此类,同包,不同包,不同包的无关类。
    • protected:此类,同包,不同包
    • default: 此类,同包
    • private: 此类
    • public 修饰类,类名必须与文件名相同,一个文件中只能有一个public修饰的类。
  • 代码块
    • 构造代码块,类中与构造方法位置并列位置的地方,会优先与构造方法执行,
    • 静态代码块,优先于主方法执行,任意形式第一次使用该类时执行
    • 静态代码块只执行一次。可用于给静态变量赋值,给类而非对象初始化。
public class Dog {
    private String name;
    private int age;
    static {
        sout("");
    }
}
  • 修饰符细节
    • public:公共访问类、方法、成员变量
    • protected:
    • default:
    • private:
    • static:
    • final:
    • abstract:
  • abstract 与private不能同时使用
  • abstract 与static不能同时使用
  • abstract 与final不能同时使用
  • 修饰类的4种权限加abstract
  • 成员变量除了abstract
  • 构造方法只有4中权限
  • 成员方法都可以
  • 抽象类作为方法参数与返回值时需要一个实现所有抽象方法的子类对象。
  • 接口作为方法参数需要一个接口实现类对象
  • Object方法
    • equals: 内存地址比较,而常用需要比较对象属性值,所以一般都重写
    • toString: 返回对象的字符串表示类型@内存地址
  • String 对象对应的字符是固定不变的
    • 相同字符的String 对象时不同的内存值,但String重写了equals方法,重写后只判断内容而不是内存地址。
    • String对象新创建的字符串会在字符串常量池中,一般都要检查有就不创建新的同样的字符串了,但是,new String("xxxx")会直接在堆中创建新的同名字符串,对应的地址不一样哦。
    • 直接打印String对象时,默认调用toString();
  • StringBuffer
    • 线程安全
    • 可变字符
    • 转换成String要用toString();
  • StringBuilder
    • 线程不安全
    • 可变字符
  • 字符串中涉及正则表达式的方法
    • matches()
    • split(String regex)
    • replaceAll()
  • 常用正则表达式
"[0-9]{6,12}":6到12位的数字
"1[34578][0-9]{9}":手机号规则
"a*b":0到n个a,以一个b结尾
"[1-9][0-9]{4,14}":非0开头的5~15位数字:qq
"a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z_0-9]+))
String s = `18`
  • Date
    • 多个构造函数
    • getTime()
  • DateFormat
    • 日期与文本之间的转换
    • DateFormat是一个抽象类
  • SimpleDataFormat(String pattern)
    • String format(Date date):将一个Date格式化为日期/时间字符串
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");格式化类
Date date = new Date(1607616000000L);时间类
String str_time = df.format(date);字符串来存储格式化类创建的对象针对个时间对象的格式化
sout(str_time);
  • DateFormat类的作用,将Date对象和字符串按照指定格式相互转换
    • y year
    • M Month首字母为m,为什么指定大写是因为minute首字母也是m
    • d day
    • H Hour 小时为什么大写?
    • m minute
    • s second
    • String format(Date date)
    • Date parse(String source)
Date date = new Date(1607616000000L);
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");//除了相应字母转换,其他字符原封不动保存。
String str = df.format(date);
//以上为Date转为String
String str = ("2020年12月11日");
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
Date date = df.parse(str);
  • Calendar
    • 该类出现在Date后,将用到的时间信息封装为静态成员变量。
    • 该类为抽象类, 设定为静态方法创建。这里的语言敏感内容什么意思?
Calendar c = Calendar.getInstance(); //返回当前时间
  • 星期的开始为周日(西方)
  • Calendar类中月的(0-11)表示1~12月
  • 基本类型包装类(8个)
    • 首字母大写
    • 特殊的补全整个单词的有:Integer
  • String转换为基本类型
    • static byte parseByte(String s)
    • 唯独char没有这个方法,好可怜
  • 基本类型转String
    1. 32 + "" 加空字符串
    2. String.valueOf(32),包装类中的valueOf
    3. 包装类中的toString()
  • 基本类型和包裹类间的转换
//基本 -》 对象
Integer i = new Integer(4);//构造函数 Integer(int value)
Integer j = new Integer("4");//构造函数 Integer(String s)
Integer k = Integer.valueOf(4);//static Integer valueOf(int i);
Integer l = Integer.valueOf("4");//static Integer valueOf(String s)
//对象 -》 基本
int num = i.intValue();
  • 基本类型可以用运算符直接计算,但引用类型无定义时不可以。
  • 但是基本类型包裹类可以计算,是因为它自继承了转成了数据类型的功能。
  • 引用数据类型变量的值时new出来的内存空间地址,但是Integer i = 4;自动将数值转换成对象,自动装箱
  • i = i+5:自动拆箱为数值运算后,再装箱将数值转换为对象。
  • byte范围的值自动装箱,byte常量池。
  • System类
    • System类不能手动创建对象,构造方法被private修饰,创建需要静态方法。
    • static long currentTimeMillis():
    • static void exit(int status):终止当前运行的Java虚拟机
    • static void gc():垃圾回收器
    • static String getProperty(String key):获取指示的系统属性
      • 上面的key指代的有:
      • java.version
      • java.vendor 销售供应商
      • java.vendor.url
      • java.home
      • java.vm.xxxxx 虚拟机相关
      • java.specification 规范相关
      • java.类、io、os、文件分隔符、工作目录、用户名等
  • System.arraycopy();
  • Math类
    • static double
      • abs(double a)
      • ceil(doube a)天花板整数
      • floor(double a)地板整数
      • max(double a, double b)
      • min(double a, double b)
      • pow(double a,double b): a的b次幂
      • random()
    • static long round(double a)
  • Arrays
    • static int binarySearch(int[]a, int key): 二分法在数组中搜索指定值
    • static void sort(int[] a):对指定的int型数组按升序进行排序。
    • static String to String(int[] a)
  • 大整数
    • 超过Long类型的整数,只能作为对象存在,BigInteger类
    • 运算采用方法而非运算符
    • BigInteger(byte[] val):二进制补码的byte数组转为对象
    • bigInteger(int signum, byte[] magnitude)
    • 一堆构造函数
  • 大小数
    • BigDecimal:浮点数据高精度运算
  • 集合
    • 数组长度一定,集合长度可变
    • 集合元素必须是引用类型
  • Collection接口
    • List接口
      • ArrayList类,继承抽象类AbstractList,实现List接口
      • LinkedList类,
    • Set接口
      • HashSet类
      • LinkedHashSet类
  • Collection有的可以重复元素、不可以重复元素,有的可以有序、无序
  • 集合数据结构为数组,增删慢,查找快。决定了用它来做一些遍历和查询比较适合,注意是适合,但可以用来做别的,也有人用来做别的,但是要看这样做浪不浪费。
  • Collection基本方法
    • boolean add(E e)
    • void clear()
    • boolean contains(Object o)
    • boolean remove(Object o)
    • int size()
    • Object[] toArray()
  • Iterator迭代器
    • 对于集合判断有没有元素,有就取出来,直到没有元素。称为迭代。
    • boolean hasNext(); 有没有下一个元素可以迭代?
    • E next() 返回下一个元素
    • Collection接口定义了抽象方法iterator
      • Iterator iterator()
    • 随着jdk标准的更新,集合可以用来保存基本类型了,就是自动装箱为包裹类,存储时提升了Object用的时候需要将对象再转为基本类型。
Collection coll = new ArrayList();
coll.add("abc");
coll.add("aabbcc");
coll.add("shit");
//集合的元素类型可以不同,所以下面强转时可能出现java.ClassCastException的错误


Iterator it = coll.iterator();
//Iterator<String> it = coll.iterator();//如果指定了迭代器中的元素类型,不需要强转。
while(it.hasNext()) {
    String str = (String) it.next;//元素存储进集合时提升为Object,使用子类对象特有方法时需向下转型
    System.out.println(str.length());
}
  • 增强for循环:针对数组和Collection,适合遍历,不能增删
int[] arr = new int[]{11,22,33};
for (int n:arr) {
    System.out.println(n);
}
  • 泛型
    • 强类型语言中对于可能变化的类型进行指定后就可共用一套逻辑。即类型这个变量进行参数化,高效利用代码。
    • 含泛型的类:
      • class ArrayList ArrayList<Integer> list = new ArrayList<Integer>();
    • 含泛型的方法:
      • public T[] toArray(T[] a){}
    • 含泛型的接口:
      • public interface Iterator {}
    • 定义时确定泛型的类型
      • public final class Scanner implements Iterator {}
    • 始终不确定泛型的类型,直到创建对象时,确定泛型的类型
      • ArrayList<String> list = new ArrayList<String>();
      • Iterator<String> it = list.iterator();
  • 泛型带来的好处
    • 编译时即可确定是否失败,无需额外检查
    • 指定了类型就不要自己手动强转了
  • 泛型通配符
    • ?取出的时Object类型
    • Iterator<? extends Employee> it = array.iterator();:?继承Employee或其本身
    • Iterator<? super Employee> it = array.iterator();:?是Employee的父类或其本身
    • 编译器认为容器里装的东西虽然有继承关系,但是容器之间没有继承关系,所以有了上下界泛型指定,使得泛型转换更容易,保证了类型安全,实现了对输入输出的限制,也即保护了参数。
  • extends 可以取对象出来,且一定是这个类型,不保证具体是什么子类型,但不能插入因为插进去不一定符合这个引用指向的类型。
  • super 可以取出来一定是Object类对象,因为Object是最super的类型,但不能保证具体是什么子类型,可以插入指定类的所有子类,因为这个类的所有子类一定是这个类的对象,但不能插入super匹配的父类,因为这个列表可能指向这个类或者任意层级的父类,而这个类的所有子类一定满足这个类或者这个类的任意父类,所以只要是其本身或子类,随便插入。
  • PECS原则,Producer Extends Consumer Super
    • 你想从一个列表中去处对象,需要一个列表生产对象,那么用extends,不能添加
    • 你想用一个列表去放进对象,需要一个列表来存放,那么用super,不能保证取出类型是什么子类,
    • 既想生产又想消费用,不要用泛型通配符。
  • List有序的Collection
    1. 有序
    2. 带索引
    3. 可重复
  • List接口的常用子类有
    • ArrayList集合
    • LinkedList集合
  • 为解决iterator而出现的ListIterator
  • 数据结构
    • 栈Stack
    • 队列Queue
    • 数组Array
      • 查找快
      • 增删慢
    • 链表
      • 查找慢
      • 增删快
  • ArrayList 结构为数组,增删慢,查找快,适合查询遍历
  • LinkedList 结构为链表,适合经常添加删除的操作场景
  • Vector 早期JDK中的数组,被ArrayList代替
  • Set接口
    • HashSet
      • 不保证迭代顺序与元素存储顺序相同
      • 哈希表作为存储结构
      • 保证元素唯一性依赖
        • hashCode()
        • equals()
      • HashSet 存储API中的类型,已经内置
      • HashSet 存储自定义类型,
    • LinkdedHashSet
      • 链表哈希表,有序。
  • 元素唯一
    • ArrayList的contains判断依据为对象的地址值(默认),如果想根据对象内容判断,需要重写元素equals方法
    • HashSet的add/contains,
      • add前会判断是否重复,因为不能重复。
      • 先判断HashCode,不同则一定不同元素
      • 再判断equals,true则是同元素,因为什么呢,因为不同对象hash操作后的值可能相同。大数取余,所以hash值需要再对对象本身进行判断,到底是同一个对象的2次相同hash值,还是两个不同对象的相同hash值。
  • Collection 集合
  • Map 映射,也就是一对对的,key和value,数学中叫做单射,多个key可以指向一个value,但一个key只能指向一个value
  • HashMap<K,V>
    • 哈希表实现,元素无序,保证有序需要判断hashCode(),equals(),所以重写他们吧
  • LinkedHashMap<K,V>
    • 哈希+链表
    • 链表来支持元素存取顺序,
    • Entry键来表示这么一对
  • jdk1.5 可变参数(int...arr)??语法糖?
    • 多参数时,可变参数放在末尾位置
  • Cllection shuffle和sort
  • 集合嵌套
  • 异常
    • 子类继承时只能声明同样的异常或异常的子类
    • 父类多个异常,子类只能只能是其子集
    • 父类方法无异常,子类覆盖时无法声明异常
    • 举例:父类中会存在下列这种情况,接口也有这种情况
    • 问题:接口中没有声明异常,而实现的子类覆盖方法时发生了异常,怎么办?答:无法进行throws声明,只能catch的捕获。万一问题处理不了呢?catch中继续throw抛出,但是只能将异常转换成RuntimeException子类抛出。
    • 继承Exception,必须要throws声明,一声明就告知调用者进行捕获,一旦问题处理了调用者的程序会继续执行。
    • 继承RuntimeExcpetion,不需要throws声明的,这时调用是不需要编写捕获代码的,因为调用根本就不知道有问题。一旦发生NoAgeException,调用者程序会停掉,并有jvm将信息显示到屏幕,让调用者看到问题,修正代码。
  • IO
    • 字节流
    • fos 不为null才能关闭

Windows10 Reset

Reset Windows 10:

procedure for reset Windows 10

  • Backup: Desktop,C:,Download,Picktures,Documents
  • Setting > Update&security > Recovery > Reset this PC > Remove everything > only the.. > Where Windows.. > Just remove.. > Reset

Auto Dial-up Connection

Auto Dial-up to connect to Internet after logging in Windows 10

  1. launch "Task Scheduler" by search
  2. Create Basic Task
  3. Fill in the blanks
Name: AutoDial
Trigger: When I log in
Action: Start a program
Program/script: rasdial
Add arguments: 17863806350 17863806350 806350
//name,id,password
reboot PC

Update, Settings, and Installation

  • Settings, Update
  • File Explorer, View, File name extensions & Hidden items
  • Stretch taskbar to the right(save vertical space)
  • Taskbar, Select which icons appear.., Always.. ON
  • Installation
    • Shadowsocks
    • PotPlayer
    • VirtualBox
    • 7zip
    • Atom Editor
    • Git
    • PuTTY
    • Chrome
    • GIMP

avatar_by_gimp

How did I draw avatar by GIMP 2

Pick favorite prototype image

  1. Choose one topic for me:
  • I like wind.
  • Aquarius.
  • I enjoy the time when fire burning during my childhood.
  • Also I cherish the memory of cuckoo's singing.
  • ...
  1. Search Cuckoo simple to browse picture and download which interests me most as the prototype.(Then my body was full of power.)
  2. Try different combination of every characters in "FireCuckoo" to replace the lines in prototype image. Dawn on papers, it's interesting.

Draw FireCuckoo by GIMP

GIMP is an open-source, cross-platform and powerful GNU Image Manipulation Program.

  1. Search "GIMP", install, and open it.
  2. File, New, width:1024, Height:1024, OK.
  3. File, Open as layers...,choose the prototype image.
  4. Ctrl L to open Layers Brushes, Ctrl B to open Toolbox, Tab key for open/Close them.
  5. Right Click prototype.jpg, new layer, OK.
  6. Find A icon in Toolbox, Set text size:256,color red.
  7. Input "F".
  8. Hit ESC: Back to select mode.
  9. Shift R: rotate "F", Up & Down key is available. Shift T: move, scale "F". Enter: confirm modification.
  10. Put "F" to the appropriate location where it can fit partial lines of prototype image.
  11. Do Step 7 to 10 for every character in "FireCuckoo", notice that drag per-character layer on the front of prototype and background.
  12. Adjust more to make it look better.
  13. Layer, prototype image layer, Right Click, Delete Layer.
  14. Layer: Right Click. Merge all layers down into Background.
  15. File, Export.

Vim 常用快捷键


title: Vim 常用快捷键
date: 2017-11-30 20:38:37
tags: editor

Situation(情景):

无法将服务器中的文件下载至熟悉的GUI的IDE或者编辑器进行修改的情况下,由于vim在各大Linux发行版上的通用性,只能使用vim。

Task(任务):

  • 熟悉常用操作,节省时间。

多嘴两句:

  • 不求精通Vim!
    • 通用的IDE在整个项目上提供的各种特性不仅对每个人来说通用规整,而且方便。
  • 不求添加各种插件改造!
    • 热爱Vim的人们开发了适合自己的各种插件使其满足在编程时的各种需求。
    • Vim的效率和IDE相比我不知道,因为不了解最高水平。但是IDE由一个盈利的团队在开发,大量的人在使用测试,驱动力、与时俱进、通用性的能力是当年命令行下这款Geek所使用的软件所不具备的。
  • 所以,对我来说,没有明确产出,把如何配置生产环境交给更专业的人,比如专门研发IDE的那群人。
  • 本文只针对常用的操作,进阶请自行搜索相关书籍.(对,这个编辑器的使用是可以写成书的)

Action(行动):

  • 模式
    • 刚启动时的Normal模式:每个键位对应操作
      • 例:h,j,k,l: 代表将光标向左、下、上、右移动一次。
      • /: 搜索,后面跟搜索内容,n:next,跳转到搜索的下一个
      • G: 跳转当最后一行
      • x: 删除当前字符
      • dd: 删除本行
      • p: 粘贴
      • v: 进入选中状态,可以配合上下左右进行选中文字,然后再x删除等操作.
      • :wq: 保存并退出
      • :q!: 不保存强制退出
    • 从Normal到Insert模式
      • a:行尾追加
      • i:当前光标插入
      • o:在下一行进行编辑
      • O:在上一行进行编辑
    • 通过上述操作进入到Insert模式,每个键位对应字母
    • 通过ESC键, 从Insert模式到Normal模式

Result(结果):

主要曾经折腾过各种插件,这个编辑器对于C语言写个小程序算法题什么的还可以,大型项目的各种自带的功能,你看看IDE中的那些,这个编辑器真的能更好的实现嘛?

Hexo on GitHub

Preparation

  • GitHub:
    1. Register
    2. New repo: FireCuckoo.github.io
  • Install Git,Node.js
  • Open Git Bash by Run as administrator

Init GitHub via Git Bash

cd c:
cd Users/FireCuckoo
mkdir MyGit
cd Mygit
git init
git config --global user.name "FireCuckoo"
git config --global user.email "[email protected]"
ssh-keygen -t rsa -C "[email protected]"

Deploy key from C:\Users\FireCuckoo\.ssh\id_rsa.pub to GitHub's FireCuckoo.github.io

Settings for hexo

Init hexo via Git Bash

cd /c/Users/FireCuckoo/
mkdir hexo
cd hexo
npm install hexo-cli -g
hexo init
hexo g
hexo s

open URL: http://localhost:4000

Connect to GitHub

  • open ~/hexo/_config.yml

  • Ctrl F Search "deploy"

    deploy:
      type: git
      repository: [email protected]:FireCuckoo/FireCuckoo.github.io.git
      branch: master
    
  • Git bash:

    npm install hexo-deployer-git --save
    hexo d
    

Make it looks better

Connect GitHub to your domain name

Local Settings

  • New file

    • change directory to ~/hexo/source
    • new a file named CNAME, write in FireCuckoo.com, save.
  • Git Bash

    • open Git Bash
    • ping FireCuckoo.github.io
    • copy the ip address

DNS Settings

  • Go your domain name service:

    • add record
    CNAME WWW FireCuckoo.github.io
    A @ 151.101.197.147
    

First Post

  • Git Bash:

    • hexo new "Hexo on GitHub"
  • File Explorer:

    • ~/hexo/source/_posts
  • change the content of "Hexo on GitHub"

    • save.
  • Git Bash:

    hexo clean
    hexo g
    hexo d
    
  • Browser:

ALL DONE

Windows JDK 环境变量

  • Windows 10下的JDK 9
    1. 搜索JDK官网下载。
    2. JDK 9安装时默认在Path 添加了C:\ProgramData\Oracle\Java\javapath,该路径下其下有文件
    • java.exe,
    • javaw.exe
    • javaws.exe
    1. 删除在Path中的C:\ProgramData\Oracle\Java\javapath,手动指定。
    • 新建系统变量:JAVA_HOME: C:\Program Files\Java\jdk-9.0.1
    • Path中添加纪录:%JAVA_HOME%\bin
    • classpath:该环境变量指定了运行Java命令时时后要找的class路径,默认不需要创建此条环境变量,会自动识别当前目录的class,如果运行时需要其他路经的class(如导入其他jar包),则需要将需要的class文件或jar包路径加入classpath.

Linux培训视频第一天观后感

培训流程

准备

  • ftp地址
  • ftp地址中每个文件夹放的什么东西,用到再下载
    • Books 书籍,有基础书,其他需要的书,辅助资料
    • Exam 考试题公开,考试分数俯卧撑等性质的惩罚
    • Files 上课所做的笔记
    • isos 各个Linux版本的镜像,模仿手写一个内核。
    • PPTs 上课所用PPTs
    • Sources 所需各类服务安装包
    • Videos 上课录像存放目录
    • Class 上课计划课程表,注意学生学习状态要穿插休息,讲课过程中通过段子,俯卧撑唱个歌来调节放松,加强积极向上的**传播,勇于挑战。
  • 要求:没有规矩不成方圆。通过成语,名言加强学生对自律的认同,
    1. 手机静音,不得不接的电话可以接,但课程的持续性可能会影响自身学习。
    2. 给出上课时间,不准迟到。
    3. 作业
    • 写博客:
      • 整理当天学习的内容
      • 简明扼要,什么环境,做具体每一个操作,标准是没有基础的人看了就能理解。(因为自己也会遗忘知识点,当自己回头翻起含糊不清的笔记,早已经忘了其中晦涩难懂的符号和逻辑到底是什么意思。)
      • 博客内容每隔一段时间会检查,赞和批评,**教育。
      • 点开博客给出榜样。是什么,为什么,怎么做。
      • 博客作用:
        • 抵抗遗忘,留下记录,方便回顾。
        • 通过思考整理,形成再学习和框架体系。
        • 与他人沟通的媒介,分享知识是美德或者接受建议。
        • 防止以为会了,自己完全整理时会发现不足。
    1. 环境,休息,厕所,抗水,打扫卫生的安排,禁止抽烟(承认自己是个烟民,获得烟民认同感,为大家的方便自我牺牲,更认同禁烟,)。
    2. 自我介绍:
    • 姓名
    • 不需要自吹自擂,这不是我的习惯。这句话本身就是在夸自己。。
    • 做下简单介绍,真挚的交流,简陋的环境原因是不是成熟的商业,就业效果,
    • 怎么样才能3个月完成高薪就业:
      • 要有**准备,我讲课全力以赴,各位课下也要全力以赴。
      • 暂时落后没什么,举个逆袭的例子,证明起点不是问题,只是晚了一点。
      • 要保持如履薄冰,战战兢兢的心态。
      • 不抛弃不放弃,哪里都不缺人,今天你停止学习,马上回一大批人超越你。
      • 建立核心竞争力,就要努力比和你竞争的人更强。
      • 我不是针对谁,有人应付了事我可能态度不好,但我只针对事情,不是说对你本人有意见。
    1. 小组学习:
    • 集体荣誉,组内互助合作,组间竞争。
    • 连带责任。。。
    1. 上课禁止睡觉:
    • 罚两边的人做俯卧撑。。。
  • 基础
    (RHCE):
    • RH033 基础
    • RH133 系统管理
    • RH253 系统服务
  • RHCA:培训加认证3万5
    • RH401
    • RH423(LDAP) RedHat自己的商用软件
    • RH442 系统调优工作
    • RH436 集群和存储:负载均衡集群,高可用集群,高性能集群。
    • RHS333
  • MySQL,NoSQL,PostgreSQL的使用场景。
  • 如何投简历,面试,技术面,人事面,经理面试。
    • 运维工程师:运维
    • 系统工程师:架构,系统上线
    • 系统架构师:绘图
    • 数据库管理员:
  • “总分总”学习:大体了解原理,各个击破,删繁就简总结。
  • 算机体系结构:
    • 运算器
    • 控制器
    • 存储器,内存,平面编址
    • 输入
    • 输出
  • POST(Power on and Self-Testing): BIOS
  • 自举
  • 程序: 指令+数据

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.