精华内容
下载资源
问答
  • 像谁的想怎么写
    千次阅读
    2019-03-11 22:35:32

    #品读《你不努力,谁也给不了你想要的生活》

    这几天利用空闲时间读了一本励志书:《你不努力,谁也给不了你想要的生活》。
    本文将对文中的内容做简要的概述,并且写一些自己的心得体验。

    ##一。关于这本书的作者: 这本书的作者的笔名是:一颗丸子 是一个专栏作家, 也是五月天的粉丝, 同时也是一个坚强,自信,有理想,并且坚持到成功的一个小姑娘。 如果有想法的同学可以看看。

    封面:
    1

    封面2:
    2

    ##二。这本书的内容目录内容:

    自序:少年回头望,笑我还不快跟上。

    ###1.我不怕千万人阻挡,只怕自己投降

    如果你有机会做梦,请别放弃做梦的机会。
    你要相信,尽管黑夜漫长,但是黎明总会到来。
    在梦想面前,我们都是不被世界了解的神经病,有我陪你一起走过最孤独的日子。

    ###2.你不努力,谁也给不了你想要的生活

    你总说:一如职场深似海,活多钱少加班汪,为什么我每天总累得像狗一样?
    你错了,狗都没有你累啊。
    同病相怜的我,觉得有必要抱抱你。
    你不知道为什么有人工作轻轻松松,薪水却比你高几倍。
    这一切都是为什么呢?

    (1)你才25岁,究竟在害怕什么
    (2)你一直在等,所以一事无成。
    (3)一个人,学着长大。
    (4)你想要的自由只是无所事事。
    (5)明明没有自制力,却说自己多努力。
    (6)为什么你不付出,就要求回报?
    (7)没有经历过孤独,怎么能飞得高?
    (8)你不努力,谁也给不了你想要的生活!
    
    

    ###3.不相信爱情,是因为你还没遇到对的人

    相遇太早和太晚,都不是缘分。
    刚刚好,才是真缘分。
    爱情,应该是一种归属。
    TA会循着缘分的甬道找到你,TA会懂你爱你,请你再次相信爱情。

    ###4.爱情里最大的过错就是错过

    有的人,莫名其妙地闯进你的生活。
    原以为只是个过客,你的心就出现了缺口。
    所以你总是在熟悉的场景里想起TA,总是清晰地记得TA说的每句话,却独独想不起TA的样子。

    ###5.愿此生你的善良不负温柔

    因为那些善良的人,我们才相信这个世界存在着奇迹。
    有些事,并不是我们的义务,却是我们的善良。
    这个世界并不完美,但你有伸手拥抱,缺憾会更少一点。
    只要心还透明,就能折射出希望。

    ##三。读完这本书的感想 这本书是以一种轻松的散文形式来书写的, 并且文笔不错,有很多恰当的小例子, 作者的思路和言语也是很容易引起我们20-30岁之间的人很大的共鸣。 这本书对生活迷茫和对生活不满的人有比较大的帮助, 虽不一定能帮助你走出困境,但是也是能够让你的心情放松,心境开阔。

    这本书的名字给人的感觉就是要勤奋努力才能成功,也许有人会对之嗤之以鼻。
    但是,我想说人就是要努力,才能做大事,一点都没有错啊。
    你也许会看到别人轻轻松松的工作,就可以赚大钱,
    或者生来就可以享受各种良好的资源和生活,
    但是你有没有想过他们背后发生的故事,
    也许是他们个人奋斗了十几年,也可能是他们父辈或祖辈奋斗了几十年,
    才有他们后面的生活。
    所以一个事件想要没有开始和过程就要很好的结果那是不现实的!
    也有人会说,奋斗是很重要,但是在不对的道路上越走越远,这样的努力又有什么意义呢?
    其实,我想说还是有意义的。
    因为,一个事情发生了想要好的结果,大都是要经过努力的。
    比如上学读书,比如研究项目。。。
    哪怕你在这个事情上没有得到很好结果。
    只要你保持着良好的心态,和努力的习惯,难道后面所有的事情都会不成功吗?
    所以说努力很重要,只要是锻炼出了良好的心态,哪怕这次不成功,也是为下一次做铺垫。

    加油吧少年。
    累一点算什么,
    苦一点算什么,
    只要还活着就有希望,
    身体还是要保重的,毕竟那是革命的本钱。
    多做一些有意义的事情,少看一点手机,少看一些电视和电影。
    少熬夜,心态要放好,其实没有什么事情需要我们担心太多,
    如果一个事情,我们能解决,那我们为啥需要担心,只要我们努力去做就可以了,
    如果这个事情,我们不能解决,那么我们也没必要去白白担心它了。

    更多相关内容
  • 优秀的程序员真的不注释吗?

    万次阅读 多人点赞 2020-05-11 07:02:23
    我在很多地方看到这样一个观点,“请停止注释,因为只有烂的代码才需要注释。”这个观点非常巧妙,它让我想起了孟子的一句话,“杨氏为我,是无君也;墨氏兼爱,是无父也。无父无君,是禽兽也。” 动不动就骂别人...

    我在很多地方看到这样一个观点,“请停止写注释,因为只有烂的代码才需要注释。”这个观点非常巧妙,它让我想起了孟子的一句话,“杨氏为我,是无君也;墨氏兼爱,是无父也。无父无君,是禽兽也。”

    动不动就骂别人是“禽兽”,我总觉得有点不妥,这很不符合孟子的浩然之气啊。有些大牛也有孟子这样的觉悟,如果有人要他给自己的代码加上注释,就好像是对他的一种侮辱:“我的代码写得这么优雅,你难道看不懂吗?注释是多余的!”

    我必须得承认,每个程序员都应该有一颗追求“优雅”的心,力争自己的代码更易阅读和理解——不只是针对机器,还有我们程序员同行。但不是每个程序员在一开始都能写出“高标准”的代码的,就好像不是所有君王和百姓都能搞清楚孟子的治国齐家理念的。

    在我刚回洛阳的那段时间,过得非常痛苦。因为我刚接手了别人留下的一个项目,关于大宗期货交易的。后端代码是用 Java 写的,但有很多 bug 在里面,动不动就资金结算失败,甚至内存溢出,要解决这些问题,只有一个办法,就是彻底搞懂这些代码。

    否则,根本无从下手。这就好像,你和朋友开车出去自驾游,去很远很远的地方,朋友开累了,需要休息,这时候,如果你没考过驾照,那就抓瞎了,只能把车停路边,等朋友的疲劳消退了,才能继续上路。

    我就抓瞎了。凭良心说,前同事留下的代码是精彩绝伦的,如果换做是我来写,真不一定能写得出来。毕竟大宗期货交易本身还是有点难度的,需要竞价撮合,这个业务理解起来比股票还要复杂些。

    股票涨了就赚,跌了就亏。期货不同的,买涨能赚,买跌也能赚。不过业务上的复杂还是次要的,重要的是代码里的注释非常稀有,就好像詹姆斯高斯林头上的发丝一样稀有。

    况且,国内程序员的英语功底你懂的,变量、方法、类、接口、枚举的命名无法做到真正意义上的名如其意。再加上,有些方法的行数多达三四百行,从头看到尾,看得只想捶自己。

    没办法,我的解决办法就是,看懂一行就加一行注释,毕竟注释总比代码要容易理解啊。就好像,我们在调用一个不熟悉的 API 时,只要代码的文档说清楚它是干嘛的,我们就可以用,就敢用,至于实现的细节,暂时没有理解也没关系。

    差不多花了两个月的时间(非常漫长、非常煎熬)吧,我总算是把项目中核心的代码给研究清楚了。搞清楚之后,那些之前怎么改都改不掉的 bug 也就迎刃而解了。

    这也就是为什么,我倡导大家去读源码的一部分原因了,除了学习,读源码是解决 bug 的杀手锏。要读懂源码,注释是必不可少的。不信,你看看 Java 的源码,每个变量、每个方法、每个类,注释都非常详细,详细到你替源码的作者感到心累。

    在我看来,Java 源码的作者绝对是这个世界上最优秀的程序员,连他们都写注释,那些声称“请停止写注释”的号召者是不是要啪啪啪地打脸,直到打肿为止。

    不要怀疑自己,写注释并不会证明你的代码就是烂代码。我相信,你应该买过电子产品,比如说鼠标、键盘、耳机、手机等等,所有的产品包装里除了产品本身,使用说明书是必不可少的。我就问一句,“手机没有使用说明书,咱这些后浪还能不会用?”

    写注释不是我们的错,软件本来就是复杂的。尤其是我们这些英语不是主力语言的人来说,注释显得尤为重要。我可能属于记忆力不好的那一种,隔个十天半个月,再去回头看那些我自己敲的代码,有时候真有点见着陌生人的感觉:“这代码是我写的吗?怎么有点面生啊?”

    大部分人写的代码都要升级重构,对吧?不论是语言本身版本的升级,还是我们自身能力的成长。假如在升级重构的时候,没有这些注释的帮助,真有点爬泰山的感觉,累啊,亲。

    再者说,大牛也不敢保证自己的代码是没有问题的,对吧?但注释是不会骗人的,它的意义是明确的。你可能会忘记代码是干嘛的,但我敢保证,注释能够唤醒你的记忆。

    写出好的、有意义的注释其实是有难度的,就像写代码一样。在追求卓越的路上,代码和注释其实是相辅相成的。注释会让你的代码更易阅读,代码会让你的注释更富有逻辑。

    即便是你的代码已经优雅到不需要注释,那只是在你的层面上。对于你的同事,你代码后来的负责者,就不一定了。所见略同的英雄并不会很多,你以为很优雅的代码没准在别人眼里就是一坨垃圾,而你的注释很可能会帮助别人“恍然大悟”,明白代码的意义。乖乖地写注释吧,对你对别人都有好处。

    另外,我想说一句,注释就好像是代码的一个蓝图,也或者是对代码的一个总结。在你写代码之前,脑子里肯定要想清楚你要实现什么,怎么实现,把这些作为注释写下来绝对可以帮助你写出更优雅的代码。在代码写完之后,通过注释进行总结,还能对代码进行一些升华,没准还能在总结的过程中想到更好的代码方案。

    我还见到有大牛信誓旦旦地说,写注释就好像是给不会游泳的人扔一个救生圈,他永远也学不会游泳。咋眼一看,这句话说得很有道理,对吧?在大牛们看来,要让一个新人快速成长,最好的办法就是把没有注释的代码扔给他看。

    纯属扯淡,恐怕这个新人没入门就放弃了吧?我已经三十一岁了,不,我已经十八岁了,还不会游泳呢?别听那些大牛们的鬼话,我就不信,他自己没写过注释。

    总之一点,注释并不会妨碍你写出优雅简洁的代码,它只是程序固有的一部分而已

    如果觉得文章对你有点帮助,请微信搜索「 沉默王二 」第一时间阅读。本文已收录 GitHub,传送门~ ,里面更有大厂面试完整考点,欢迎 Star。

    我是沉默王二,一枚有颜值却靠才华苟且的程序员。关注即可提升学习效率,别忘了三连啊,点赞、收藏、留言,我不挑,嘻嘻

    展开全文
  • Java 开发最容易的 10 个bug

    万次阅读 多人点赞 2021-10-09 10:56:12
    那个,今天又 bug 了,没错,他说的好像就是我。。。。。。 作为 Java 开发,我们在代码的过程中难免会产生各种奇思妙想的 bug ,有些 bug 就挺让人无奈的,比如说各种空指针异常,在 ArrayList 的迭代中进行...

    原文链接:10 个让人头疼的 bug

    那个谁,今天又写 bug 了,没错,他说的好像就是我。。。。。。

    作为 Java 开发,我们在写代码的过程中难免会产生各种奇思妙想的 bug ,有些 bug 就挺让人无奈的,比如说各种空指针异常,在 ArrayList 的迭代中进行删除操作引发异常,数组下标越界异常等。

    如果你不小心看到同事的代码出现了我所描述的这些 bug 后,那你就把我这篇文章甩给他!!!你甩给他一篇文章,并让他关注了一波 cxuan,你会收获他在后面像是如获至宝并满眼崇拜大神的目光。

    废话不多说,下面进入正题。

    错误一:Array 转换成 ArrayList

    Array 转换成 ArrayList 还能出错?这是哪个笨。。。。。。

    等等,你先别着急说,先来看看是怎么回事。

    如果要将数组转换为 ArrayList,我们一般的做法会是这样

    List<String> list = Arrays.asList(arr);
    

    Arrays.asList() 将返回一个 ArrayList,它是 Arrays 中的私有静态类,它不是 java.util.ArrayList 类。如下图所示

    image-20211005232205213

    Arrays 内部的 ArrayList 只有 set、get、contains 等方法,但是没有能够像是 add 这种能够使其内部结构进行改变的方法,所以 Arrays 内部的 ArrayList 的大小是固定的。

    image-20211006094537453

    如果要创建一个能够添加元素的 ArrayList ,你可以使用下面这种创建方式:

    ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
    

    因为 ArrayList 的构造方法是可以接收一个 Collection 集合的,所以这种创建方式是可行的。

    image-20211006094827686

    错误二:检查数组是否包含某个值

    检查数组中是否包含某个值,部分程序员经常会这么做:

    Set<String> set = new HashSet<String>(Arrays.asList(arr));
    return set.contains(targetValue);
    

    这段代码虽然没错,但是有额外的性能损耗,正常情况下,不用将其再转换为 set,直接这么做就好了:

    return Arrays.asList(arr).contains(targetValue);
    

    或者使用下面这种方式(穷举法,循环判断)

    for(String s: arr){
    	if(s.equals(targetValue))
    		return true;
    }
    return false;
    

    上面第一段代码比第二段更具有可读性。

    错误三:在 List 中循环删除元素

    这个错误我相信很多小伙伴都知道了,在循环中删除元素是个禁忌,有段时间内我在审查代码的时候就喜欢看团队的其他小伙伴有没有犯这个错误。

    image-20211006101709155

    说到底,为什么不能这么做(集合内删除元素)呢?且看下面代码

    ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
    for (int i = 0; i < list.size(); i++) {
    	list.remove(i);
    }
    System.out.println(list);
    

    这个输出结果你能想到么?是不是蠢蠢欲动想试一波了?

    答案其实是 [b,d]

    为什么只有两个值?我这不是循环输出的么?

    其实,在列表内部,当你使用外部 remove 的时候,一旦 remove 一个元素后,其列表的内部结构会发生改变,一开始集合总容量是 4,remove 一个元素之后就会变为 3,然后再和 i 进行比较判断。。。。。。所以只能输出两个元素。

    你可能知道使用迭代器是正确的 remove 元素的方式,你还可能知道 for-each 和 iterator 这种工作方式类似,所以你写下了如下代码

    ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
     
    for (String s : list) {
    	if (s.equals("a"))
    		list.remove(s);
    }
    

    然后你充满自信的 run xxx.main() 方法,结果。。。。。。ConcurrentModificationException

    为啥呢?

    那是因为使用 ArrayList 中外部 remove 元素,会造成其内部结构和游标的改变。

    在阿里开发规范上,也有不要在 for-each 循环内对元素进行 remove/add 操作的说明。

    image-20211006100608623

    所以大家要使用 List 进行元素的添加或者删除操作,一定要使用迭代器进行删除。也就是

    ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
    Iterator<String> iter = list.iterator();
    while (iter.hasNext()) {
    	String s = iter.next();
     
    	if (s.equals("a")) {
    		iter.remove();
    	}
    }
    

    .next() 必须在 .remove() 之前调用。 在 foreach 循环中,编译器会在删除元素的操作后调用 .next(),导致ConcurrentModificationException。

    错误四:Hashtable 和 HashMap

    这是一条算法方面的规约:按照算法的约定,Hashtable 是数据结构的名称,但是在 Java 中,数据结构的名称是 HashMap,Hashtable 和 HashMap 的主要区别之一就是 Hashtable 是同步的,所以很多时候你不需要 Hashtable ,而是使用 HashMap。

    错误五:使用原始类型的集合

    这是一条泛型方面的约束:

    在 Java 中,原始类型和无界通配符类型很容易混合在一起。以 Set 为例,Set 是原始类型,而 Set<?> 是无界通配符类型。

    比如下面使用原始类型 List 作为参数的代码:

    public static void add(List list, Object o){
    	list.add(o);
    }
    public static void main(String[] args){
    	List<String> list = new ArrayList<String>();
    	add(list, 10);
    	String s = list.get(0);
    }
    
    

    这段代码会抛出 java.lang.ClassCastException 异常,为啥呢?

    image-20211006162921268

    使用原始类型集合是比较危险的,因为原始类型会跳过泛型检查而且不安全,Set、Set<?> 和 Set<Object> 存在巨大的差异,而且泛型在使用中很容易造成类型擦除。

    大家都知道,Java 的泛型是伪泛型,这是因为 Java 在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java 的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的,使用泛型的时候加上类型参数,在编译器编译的时候会去掉,这个过程成为类型擦除

    如在代码中定义List<Object>List<String>等类型,在编译后都会变成List,JVM 看到的只是List,而由泛型附加的类型信息对 JVM 是看不到的。Java 编译器会在编译时尽可能的发现可能出错的地方,但是仍然无法在运行时刻出现的类型转换异常的情况,类型擦除也是 Java 的泛型与 C++ 模板机制实现方式之间的重要区别。

    比如下面这段示例

    public class Test {
    
        public static void main(String[] args) {
    
            ArrayList<String> list1 = new ArrayList<String>();
            list1.add("abc");
    
            ArrayList<Integer> list2 = new ArrayList<Integer>();
            list2.add(123);
    
            System.out.println(list1.getClass() == list2.getClass());
        }
    
    }
    

    在这个例子中,我们定义了两个ArrayList数组,不过一个是ArrayList<String>泛型类型的,只能存储字符串;一个是ArrayList<Integer>泛型类型的,只能存储整数,最后,我们通过list1对象和list2对象的getClass()方法获取他们的类的信息,最后发现结果为true。说明泛型类型StringInteger都被擦除掉了,只剩下原始类型。

    所以,最上面那段代码,把 10 添加到 Object 类型中是完全可以的,然而将 Object 类型的 “10” 转换为 String 类型就会抛出类型转换异常。

    错误六:访问级别问题

    我相信大部分开发在设计 class 或者成员变量的时候,都会简单粗暴的直接声明 public xxx,这是一种糟糕的设计,声明为 public 就很容易赤身裸体,这样对于类或者成员变量来说,都存在一定危险性。

    错误七:ArrayList 和 LinkedList

    哈哈哈,ArrayList 是我见过程序员使用频次最高的工具类,没有之一。

    image-20211006165557687

    当开发人员不知道 ArrayList 和 LinkedList 的区别时,他们经常使用 ArrayList(其实实际上,就算知道他们的区别,他们也不用 LinkedList,因为这点性能不值一提),因为看起来 ArrayList 更熟悉。。。。。。

    但是实际上,ArrayList 和 LinkedList 存在巨大的性能差异,简而言之,如果添加/删除操作大量且随机访问操作不是很多,则应首选 LinkedList。如果存在大量的访问操作,那么首选 ArrayList,但是 ArrayList 不适合进行大量的添加/删除操作。

    错误八:可变和不可变

    不可变对象有很多优点,比如简单、安全等。但是不可变对象需要为每个不同的值分配一个单独的对象,对象不具备复用性,如果这类对象过多可能会导致垃圾回收的成本很高。在可变和不可变之间进行选择时需要有一个平衡。

    一般来说,可变对象用于避免产生过多的中间对象。 比如你要连接大量字符串。 如果你使用一个不可变的字符串,你会产生很多可以立即进行垃圾回收的对象。 这会浪费 CPU 的时间和精力,使用可变对象是正确的解决方案(例如 StringBuilder)。如下代码所示:

    String result="";
    for(String s: arr){
    	result = result + s;
    }
    

    所以,正确选择可变对象还是不可变对象需要慎重抉择。

    错误九:构造函数

    首先看一段代码,分析为什么会编译不通过?

    image-20211006172246303

    发生此编译错误是因为未定义默认 Super 的构造函数。 在 Java 中,如果一个类没有定义构造函数,编译器会默认为该类插入一个默认的无参数构造函数。 如果在 Super 类中定义了构造函数,在这种情况下 Super(String s),编译器将不会插入默认的无参数构造函数。 这就是上面 Super 类的情况。

    要想解决这个问题,只需要在 Super 中添加一个无参数的构造函数即可。

    public Super(){
        System.out.println("Super");
    }
    

    错误十:到底是使用 “” 还是构造函数

    考虑下面代码:

    String x = "abc";
    String y = new String("abc");
    

    上面这两段代码有什么区别吗?

    可能下面这段代码会给出你回答

    String a = "abcd";
    String b = "abcd";
    System.out.println(a == b);  // True
    System.out.println(a.equals(b)); // True
     
    String c = new String("abcd");
    String d = new String("abcd");
    System.out.println(c == d);  // False
    System.out.println(c.equals(d)); // True
    

    这就是一个典型的内存分配问题。

    后记

    今天我给你汇总了一下 Java 开发中常见的 10 个错误,虽然比较简单,但是很容易忽视的问题,细节成就完美,看看你还会不会再犯了,如果再犯,嘿嘿嘿。

    image-20211005230533419

    点赞在看分享朋友圈是基操哦!快来一键三连!!!

    展开全文
  • 博客的2年,我有12万+粉丝了,还上了百度百科!

    万次阅读 多人点赞 2021-06-21 10:10:48
    如果你了就去做,没有能代表的了你。说割韭菜,你割得动才行! 19年5月左右因为工作需要,去查询了一些关于 JVM 的字节码等内容,但网上的资料大多是Copy来Copy去,找到要的那一丢丢有用的内容,指不定翻阅...


    作者:小傅哥
    博客:https://bugstack.cn

    沉淀、分享、成长,让自己和他人都能有所收获!😄

    一、粉丝还不少!

    12万+的粉丝,在哪?

    公众号:3万+、CSDN:5万+、思否: 2万+、Github: 1万+,其他平台:1万+,😄合计 12万+ 粉丝。

    如果仅公众号粉丝12万+,那就更帅了,哈哈哈,不过早早晚晚的事!毕竟拿到我PDF书籍收藏吃灰的存量用户在50万以上,希望他们能醒醒🦍!

    截止到今天,小傅哥闯入号主圈子也差不多有两年时间了,从开始起步的跌跌撞撞到能站起来走稳,从用代码写文章到学会了用文字描述过程,从粗粗赖赖的格式效果到文章精细化排版,从没有配图的生硬讲解到绘制出漂亮的技术图稿,就这样一直折腾于技术输出的两年,让我从一个只会编码的程序员像茶壶一样道不出因为所以,现在也能有条理的给别人分享了。当然,这过程中也从开始的时候把文章分享到别人群被踢出去,到现在我也踢别人了毕竟是他先动手的

    所以呢,很多时候只有当你挂了挡给了油上了路走远了,才会看到都有些什么玩楞的妖魔鬼怪,在那里欺行霸市!还技多不压身学PS,学什么PS,都学Java吧

    但同样,在这条路上,或者说每一条你正在走的路上,只要走的够远,就一定能收获到在这条路上的果实。你会遇到陪你一起成长的同好、给你提供机会的平台、与你互惠合作的社区,你会收到来自出版社的橄榄枝、来自技术平台的证书、来自服务社区的礼物,还有与大佬约饭的机会,当然你还可能被CSDN这样的大平台推荐,duangduangduang的展示你,就像下面又第一了!:


    其实喜欢做一件事,往往来自于做了一件喜欢的事情。因为有不少粉丝伙伴问小傅哥,你是什么时候开始写文章的都是码农你咋有时间写文章呢一篇文章要怎么写呢我写了没人看怎么办呢写着写着就坚持不下来了咋整呢好像没啥可写的呢写文章能赚钱吗码农35岁以后的危机吗,等等问题。

    其实小傅哥从最开始写文章,并没有想过这么多,也没考虑说写的好不好、有没有粉丝看、能不能赚钱等,算仅仅是爱好并一头扎进来了而已。但从现在来看,如果你需要写写文章,并希望能把文章内容写的清楚一些,那么可以看看我接下来对小傅哥自己的一个在编程文章上的成长过程,作为一条参考路线。

    也许我们除了都做技术以外,也有很多的不同,即使是编写了两年多的文章,也没法说是这个圈子里的资深,以我的经历也只是我视角范围内的局限,我们都需要不断的扩充自己的视野广度和感兴趣事项上的纵深,所以仅以当做参考即可,有不同的内容同好之间再共同讨论、共同进步👣。

    二、怎么开始的?

    拒绝躺平,可能来自于不服?

    • 对别人给予你的认知,不服。我不是你认为你觉得的那个样子
    • 对自己技术上的成长,不服。我不喜欢百度里搜到的洗搞水文
    • 对限定做事中的规矩,不服。我不希望只成为执行的零件工具

    当然,不服不一定完全就是正确的,但稍有来自骨子里的硬气,是你能敢证实自己的根本。如果你想了就去做,没有谁能代表的了你。说割韭菜,你割得动才行!


    19年5月左右因为工作需要,去查询了一些关于 JVM 的字节码等内容,但网上的资料大多是Copy来Copy去,想找到要的那一丢丢有用的内容,指不定翻阅多久。

    可能就是这份不服,按照 JVM 的虚拟机规范以及 GO 语言写的 JVM,开始用 Java 实现了一个 JVM,虽然不是能实际使用,但通过 Java 代码来实现一个 JVM 的基础功能(搜索解析class文件、字节码命令、运行时数据区等),可以让 Java 程序员通过最熟知的 Java 程序,学习 JVM 是如何将 Java 代码一步步跑起来的。

    也正是因为这份自主学习并记录文档到博客平台和 Github 的经历,算是正式开启了自己沉淀资料,写博客文章的开始。

    虽然刚开始把文章写到公众号,没有什么阅读,也没有人和你讨论。但好在自己并不一定以做文章弄流量为主,所以才能在喜欢的事情上持续下来。

    三、都写了什么?

    2年时间,写了8个专题,22个类别,245篇文章!

    从不会写到会写,从会写再到一点点写,从来没有觉得非得要写的多快,只是希望在自己确认的路上,一点点往前走。因为追求快,可能是最大的障碍!

    所以即使这样有规律的“慢”,两年时间里也创作出8个专题,22个类别,245篇文章。整理了三个PDF、推出了两个专栏小册、发版了一本《重学Java设计模式》

    • Java&Spring:以讲解Java、Spring核心知识为基础,用数学逻辑思维分析关于Java、Spring、Mybatis、Dubbo等核心源码技术内容。其中如《Java 面经手册》是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。包括正在编写的《手撸 Spring》通过手写简化版 Spring 框架,了解 Spring 核心原理。在手写的过程中会简化 Spring 源码,摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、资源处理等内容实现。这些都程序员学习技术成长过程中非常重要的知识,如果能深入学习那么对以后的个人成长帮助非常大。
    • 算法逻辑和数据结构:这部分内容主要以Java源码为入手,讲解其中的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、斐波那契(Fibonacci)散列法还有黄金分割点的使用等等,这也正式《Java 面经手册》的核心内容所在。
    • 面向对象《Java 设计模式》的知识是在Java基础铺平,数据结构、算法逻辑有了一定的了解后,在深入学习和使用的技术。同样是一个需求在学过设计模式后,也阅读了不少别人优秀的代码,那么在他实现需求的时候,会拆分出很多的接口和接口的继承、抽象类的职责隔离实现、具体业务模块的分层、功能服务组件的细化、具体实现过程中对设计模式的运用等等。这样的代码实现后会非常具有易扩展和可维护的特点,否则一篇的ifelse不是坑自己就是坑下一个人。
    • 中间件:可能很大一部分研发并不会接触到中间件,也不太可能有人告诉你可以使用中间件的方式解决一些实际遇到的问题。因为大部分时候你都会认为中间件只是公司专门部门的人写的,或者是技术大牛搞的,总之与你没关系。但其实代码知识对数学逻辑的具体实现,业务开发有业务开发的方式,《Spring 中间件和开发》也只是对Spring的关于容器中一些特定接口和类的使用,具体的还是普通的逻辑代码,比如暴露服务、采集日志、监控系统等。但如果你能早些学到这样技术的核心思想,那么对于升值、加薪、跳槽,都是非常有帮助的。
    • 通信专题:其实Netty是一项非常重要的技术,比如在RPC服务实现中的Dubbo、或者MQ、以及很多时候的通信里都是能用到的技术。就连小傅哥的第一次面试大厂也是靠着对Netty的学习,刷进来的!所以小傅哥编写了很多Netty从基础入门讲解到核心原理,告诉你如何处理半包、粘包,怎样定义消息协议,并开发了一个基于Netty的仿微信聊天项目,这些技术内容你都可以在我的博客学习到学习到。
    • 字节码编程:这项技术可能大多数研发,哪怕35岁的,可能也不一定接触到。但这样的技术你却基本都用过,比如你的IDEA是购买的吗,你怎么给让它能用的!你用过一些非入侵的全链路监控系统的,你通过字节码插桩搞过一些事情吗,那你用过Cglib吧,它的底层就是通过ASM字节码框架对字节码进行的一些列操作。
    • 故事:除了技术学习以外,还有很多伙伴会经常问我一些关于学习、成长以及在职场中怎么活下去。所以我结合我自己在大厂互联网中的学习和成长经历,给读者伙伴写了不少此类的内容。如简历编写、招聘要求、技术资料、代码规范、评审晋升、薪资待遇、副业收入等等。这些内容可能很多会帮助你度过一个安定的职场生涯!

    以上这些内容你都可以在我的Github找到:https://github.com/fuzhengwei/CodeGuide/wiki 记得点个Star,方便找到!

    四、有哪些成绩?

    证书、礼包(AirPods、云台、玩偶)、勋章、奖杯、出书、专栏,还有百度百科!

    来自于掘金、CSDN、InfoQ、开源中国、腾讯云+社区、华为云+社区等各个平台的证书、礼包、奖杯、玩偶真的非常非常多,这些平台对我的认可也是我不断创作的动力。

    同时你在平台写文章不仅会获得认可,还可能得到一些收入,比如你在CSDN上传自己的付费PDF、在掘金写的小册、签约InfoQ的文章、参与开源中国的活动,或者像腾讯发布的任务你可能也会拿到一个AirPods耳机和手持云台,很香!

    除此之外,20年我还给自己定了一个小目标,希望21年的时候京东、当当这样的平台可以搜索的自己的写的书,嗯,现在实现了,拼多多也可以搜到我的书了《重学Java设计模式》!另外还发现,竟然还可以有一条关于自己的百度百科,哈哈哈

    五、以后嘎哈呢?

    无论何时,都保持初心,努力成为一个简单、干净、纯粹的技术人!

    在21年的7月,算是做公众号的第二年,未来三年依旧也是做着这件自己喜欢的事情。不过像短视频、直播并没有真正的接触进去,知识星球也只是小范围开放,先与一部分加入的用户进行1对1聊天,看看是否能通过这样的方式给读者提供有价值的服务,包括后续再给星球创作一些专属内容等。

    • 写文章:不断的通过技术文章的创作,既满足自己的学习需求,也在不断的铺整个属于我个人标签范围内容的技术价值。当然可能在Java铺设完以后,也会扩展其他我感兴趣的技术语言,比如Python、Go等。
    • 拉粉丝:酒香不怕巷子深?不,永远需要更多的人知道我,但也不会希望于通过太多的营销类型活动拉粉,这样的粉丝很多时候是没有粘性的,还可能招来一堆的僵尸粉,既没有阅读量,也没有转换率。
    • 写专栏:把一些核心的内容写成专门的成体系的技术文章,也像各个社区平台的优秀作者一样,创作出可以有口皆碑的技术系列内容。硬核,是我不断的追求目标,把复杂的东西写简单,才是核心目的。
    • 出书呢:后面每当沉淀好了一项内容,就会考虑出书,虽然出书整体是不太赚钱的,但IP价值还是不错的。比如你的书可以被粉丝收藏阅读、被图书馆采购、被公司宣传等等,同时出书也是每一位技术人在技术道路上的成长打卡!
    • 短视频:其实关于视频的录制还没有什么技巧,也不太会剪辑,刚刚到手的云台也在学习中。不过整个过程还是蛮有趣的,希望后面也能通过视频类内容给更多的读者传播技术。
    • 小星球:最早小傅哥是弄了一个微信的圈子,不过今年微信平台就要把圈子下调了,有这个类似圈子的平台,是希望能让更多的读者做一些核心的技术交流,并把这些内容留存下来。关于星球也是刚刚起步,目前提供了技术解答、简历批阅、内容分享、成长指导、语音对话等内容,后续还会专门创作一些属于星球的内容。
    • 其他的:直播?、合作?、大佬?,可能后续也会有现在还想不到的内容,因为在一条路上走的越来越远以后,就会碰到很多以前没遇到的事情,但无论如何都会以技术为核心给粉丝用户和我自己带来成长!

    做技术的我终究是希望以技术为本,通过自身对技术的热爱,编写有价值的技术文章,沉淀、分享,让自己和他人都能有所收获!

    六、系列文章项!

    展开全文
  • 我在淘宝帮别人代码,月入10万!

    千次阅读 2021-07-12 00:09:20
    该网友说,干这行其实会容易迷失自己,就打游戏一样,完成一个任务立马就有回报,且根据任务难度不同,得到的回报大小也不一样,在这种机制下,干活就和打游戏一样上瘾。况且时薪比较高,周末随便搞一搞一两万就...
  • 工作两年简历成这样,要你呀!

    万次阅读 多人点赞 2020-04-12 09:55:07
    那么简历不好,相应的内容又没做好准备,你不失败失败。 二、我的简历都石沉大海 这是一份模拟真实的简历,如下; 这份简历有哪些问题: 简历格式不规整,由于是 word 格式在不同版本下展示可能有不兼容的问题。...
  • 程序员个人技术博客的价值与意义

    万次阅读 多人点赞 2019-11-08 21:31:07
    被别人超越想写,但不知道写什么技术含量低,写出来没意义,怕别人嘲笑写博客最初的想法写博客的价值与意义加深对技术点的理解,记录足迹,反映成长,分类检索,方便日后查阅观点碰撞,分享收获结交更多志同道...
  • 面试官:Zookeeper怎么解决读写、双并发不一致问题,以及共享锁的实现原理?
  • 20万行代码完,毕业了找一份工作不是问题! 刚一毕业因为找不到工作,就得报名去参加Java培训的大有人在。并不是说参加培训就不好,只不过以你现在这个毕业的时间点参加,就会显得特别匆忙。因为你的压力既来自于...
  • 什么从什么造句一年级一句话例句,复杂长一点的.我不家庭是从说谎开始的,这令人厌恶。.聪明的人是从人家的眼泪中吸取教训。.这些水果,都是从家乡带来的,虽是篱壁间物却也礼轻义重。.凡是从事教学工作的人都必须...
  • 如何好项目规划和方案设计文档

    万次阅读 多人点赞 2018-07-27 09:49:14
    再强调一下,做什么和怎么做就是手段,既然是手段,就要得足够具体,具体到有明确的可落地实施的事情,有明确可以衡量的标准,或者针对当前存在的一个具体问题,不要在这个地方又目标,没有明确的可执行的点...
  • 参加工作时间久一点的工程师应该有这样一个体会:自己平时代码得再多再好,可一旦要用文档去描述或者表达某一个事情或者问题时,都感觉非常...这就我们刚学编程时,一顿学、一顿模仿,但是总感觉缺了点什么,自己再
  • 我入职阿里后,才知道原来简历这么

    万次阅读 多人点赞 2020-03-13 13:26:31
    私下里,有不少读者问我:“二哥,如何才能出一份专业的技术简历呢?我总感觉自己的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有过简历了,但我认识的一个同行,他在阿里,给我说了...
  • 作为一个在互联网公司面一次拿一次offer的面霸(请允许我使用一下夸张的修辞手法),打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚,在一个寂寞难耐的夜晚,我痛定思痛,决定开始《吊...
  • 求助,但是又能帮你?   你在当地人生地不熟,家人朋友远在国外,甚至当地语言你都不一定懂,你能做什么?   威胁,辱骂,恐吓,裸体视频,肢体损害,他们有的是方法吓唬你,不要忘了,敢做博彩的人,都不是...
  • 书单号怎么文案?整理了100条抖音抖音爆款文案,直接套用就能火 文章首发“公众号”【书单号教程】,关注可领取价值3888的运营资料,仅限50个名额。 不看后悔系列!!! 情感、励志、共鸣、实用、反转、提问等6大...
  • 如何从零开始一个操作系统?

    万次阅读 多人点赞 2019-08-20 18:17:55
    如何从零开始一个简单的操作系统? 关注问题 回答 操作系统 编程学习 如何从零开始一个简单的操作系统? 看了这个:从零开始一个简单的操作系统 求指教。 关注者 4,787 被浏览 352,884 关注问题 ...
  • 给那些做程序员和不做程序员的人

    万次阅读 多人点赞 2015-10-25 10:47:25
    给那些做程序员和不做程序员的人》 首先说一说进入计算机专业的目的,我个人是因为十分喜欢IT业,很喜欢折腾电脑,所以在填报志愿是毫不犹豫的在报了的所有的学校都填写的计算机专业,梦想着进入计算机专业...
  • 极简罗列法怎么作文

    千次阅读 2020-12-19 05:45:19
    极简罗列法怎么作文以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!1. 作文罗列式怎么开头列举式案例一:“争渡,争渡,惊起一滩鸥鹭。”李清照争的...
  • 哇塞,可以用Python实现电脑自动小说了!!!

    千次阅读 多人点赞 2021-04-03 21:57:02
    作家,是多么一个让人感到向往的职业。 我也幻想着,有一天能够靠小说赚稿费,来实现自己的另一份可靠的收入。 可惜,理想是美好的。...因此,怎么不明白的我,也就干脆不去了。 我用自己的方法,实现
  • 2.好一封工作邮件,重要的不是“怎么”,而是“什么该,什么不该”。 3.重要的备忘、通知和需要留底的话,最好通过工作邮件传递。 I、如何做到位极人臣?(奏章和来往批复的文件得好) 回到古代,司马光跟...
  • 一个项目需求文档怎么?

    千次阅读 2020-12-16 10:47:09
    很多产品新人,入门产品时,最先了解的都是如何画原型,如何需求文档,这很奇怪。 一个产品一个需求文档,就在平台上可以搜到很多关于需求文档的文章;看了这么多文章,就没有一个需求文档是统一的,这是为...
  • 去银行代码是种什么体验?

    万次阅读 多人点赞 2021-07-23 17:11:24
    本文转载自程序员技术 一线互联网岗位和银行/国企还是有点区别的,这篇文章,讲详细讲一讲银行或者金融科技...但我应该还是有不少同学,是打算找一个轻松点的工作的。 而银行,就是轻松的首选(关键是妹子也多~)
  • 我自己都不敢相信,我竟然在半夜冒着大雨跑到一家网吧来这篇文章,这真是太刺激了!!!!一种激情澎湃的感觉在心底跃跃欲试,仿佛就要冲破身体的枷锁。我能体会到耶稣在被钉十字架后复活的那种感觉,真的。
  • 如何使用CSDN中的Markdown博客——纯小白篇

    千次阅读 多人点赞 2019-09-03 23:11:27
    这篇博客用来学习如何使用CSDN中的Markdown写博客 在写这篇博客前,我找了很多教程,摸索了很...那天我心血来潮,突然想写一篇博客,于是我激动的点击了写博客按钮,对于我这样没写过博客的纯小白来说,我以为 ...
  • 精神小伙: 代码是世界上最好的工作, 不接受反驳

    万次阅读 多人点赞 2020-04-17 07:58:43
    据说今年毕业季找工作是地狱难度, 最近我加了个 计算机应届生 找工作的群, 青年学子们林林总总的只言片语 让我触景生情, 毕业时不带着 对未知的慌恐, 当年刚毕业时我也是一个小白 !
  • 跟我一起 Makefile(完整版)

    万次阅读 多人点赞 2020-01-15 13:36:45
    的文章比较少,这是我想写这篇文章的原因。当然,不同产商的 make 各不相同,也有不同的语法,但其本质都是在“文件依赖性”上做文章,这里,我仅对 GNU 的 make 进行讲述,我的环境是 RedHat Linux 8.0 , make 的...
  • 摘要: 在前面 不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。然而“梦想是美好的,...
  • 程序员是否该文档?

    千次阅读 2018-01-16 21:37:13
    不论是需求的原型,测试使用的TestCase,离职时候的交接文档,个人的学习笔记,或者是怕忘记做的备忘录,这些都算是文档,你有文档的习惯吗? 甲:要求的时候,不要求的时候懒得 乙:有时候记点儿东西,...
  • 使用“不用代码的IDE”是一种怎样的体验?

    千次阅读 多人点赞 2021-05-27 11:39:22
    可能有些人还不知道我指的是啥,以一款今年比较流行的全自动软件开发平台为例,所谓「全自动」,就是你在开发一个项目时,不需要你代码,只需要你画好对应的逻辑流程图,平台便可以自动帮你生成对应的代码。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 265,778
精华内容 106,311
热门标签
关键字:

像谁的想怎么写