阅读《码农翻身》有感

2019-11-24

最近看完了《码农翻身》这本书,全书总共六个章节,每个章节都是独立的,每个章节有由多篇独立的文章组成,作者通过一个个幽默风趣的故事来讲述苦涩的知识点。 文章的内容深度并不深,所以读起来特别轻松,完全可以当做一个业余读物来看,很多篇文章都以第一视觉来描述,比如《我是一个线程》,《我们是一个进程》,《我是一块硬盘》通过这种方式作者从计算机的底层来讲述设计原理。整本书读起来没什么难度,可以用来扩充自己的知识面,并没有对某个知识点深入讲解,对于书中提到的具体技术点,完全可以查询资料详细学习。 全书最后一章主要是对技术人生了一些建议和思考,分享几句我觉得不错的话给大家 对于性格内向的程序员,很多时候你认为基本准备好了其实就够了,凡事必先骑上虎背,勇敢地迈出去,努力地争取一下,你就会发现自己登上了更高一层的台阶。 停下来,思考,才是进步的本质。 要用技术的影响力来领导人,而不是威权和职位。

我在 GitHub 上的开源项目

2019-10-06
  1. solo Java 🤩1  ⭐️0  🖖0 personal website, clone from b3log/solo 2. zhuSilence.github.io HTML 🤩1  ⭐️0  🖖1  🏠http://home.zxsilence.cn/ 独立域名,欢迎点击广告 3. typora-images 🤩1  ⭐️0  🖖0 图片文件 4. solo-blog 🤩1  ⭐️0  🖖0  🏠http://home.zxsilence.cn:29090 ziyou(朱翔) 的个人博客 - 技术人生 X 人生技术 5. ARTS Java 🤩1  ⭐️0  🖖0 6. silence-study JavaScript 🤩2  ⭐️0  🖖0 7. test Java ....

我与微笑哥以及 Java 极客技术的前世今生

2019-10-06

Hello,大家好,我是子悠,Java 极客技术团队的作者之一,细心的读者可能早就知道我,看过我写的几篇文章,没注意过的也没关系,因为后面我们还会经常见面。首先关于 Java 极客技术公众号的介绍可以去看文章搞事情,今天这篇文章主要想跟大家分享一下我是如何跟微笑哥以及 Java 极客技术团队结缘的。 相信很多人跟我一样,知道微笑哥都是从学习 SpringBoot 开始的。遥想起当年青涩荡漾意气风发在网上找着 SpringBoot 的学习资料,看着微笑哥的 SpringBoot 系列文章,一步步从初识 SpringBoot 到渐渐的熟悉掌握,再到现在的必备技能;从 1.x 到现在的 2.x,一点一滴的积累学习。 那么我是如何认识微笑哥以及到加入 Java 极客技术作者团队的呢?这一切都要从关注公众号《纯洁的微笑》和加入微笑哥的知识星球《微笑和他的朋友们》说起,清晰的记得那是在 2017 -11-23 花了 66 元以排名第 57 名加入了微笑哥的第一个知识星球,从此跟微笑就结下了不解之缘。刚开始大家都是在星球上分享技术,解决问题,进行思想碰撞,互相推荐好的开源项目以及一些自己觉得不错的问....

Docker 安装 Redis、MySQL、Gogs

2019-10-03

人生有涯,学海无涯 最近接到一个项目,由于项目的独特性需要自己搭建一些环境,刚好之前学了一些 Docker(这里如果大家不熟悉 Docker 可以查看公号前面松哥写的 Docker 的系列文章),所以就决定采用 Docker 搭建,毕竟搭建方便、简单、快速。 01、Docker 安装 Redis 搜索镜像 docker search redis:使用该命令可以搜索出所有的 redis 镜像列表 如果没有特殊版本需求,可以使用:docker pull redis 命令直接安装最新版本 Redis 下载过后使用 docker images | grep redis 命令查看已经获取到的镜像 启动 Redis 服务:docker run --name redis -d -p 6379:6379 redis --requirepass "zxcvbnmdfghjk09876" docker run:表示创建并运行一个容器; --name redis:表示创建一个名字为 redis 的容器; -d:表示后台运行; -p 6379:6379:表示将宿主机的 6379 端口映射到容器的 6379 端....

怎么让你的 Java 技术变得牛逼

2019-09-26

​ 每个Java技术人员心里多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。 第一:心态 其实最大的困难是在于克服自己。只要你有恒心,学好Java并不难。就算你没有基础,没有经验,没有任何概念。可是即使是发明Java的人,发明计算机的人在起初也是一张白纸。 他们也是不断琢磨,不断学习和实践才出结果的。所有的Java高手都是从什么也不会学到什么都会的。兴趣很重要,只要你有兴趣,就会发现学习Java和打篮球一样简单。 第二:学习方法 掌握好的学习方法,就是事半功倍的效果。很多同学在写代码的时候,都是照葫画瓢,没有自己半点的理解,往往是把从书上背下来的再全堆上去。这样写着写着就没有了思路,这是缺少编程思想的原因。所以说,理解最重要。一旦建立起编程思想,有了自己的想法,写东西自然就会容易多了! 第三:坚持 Java刚开始的时候相对还是简单一些,大家都还有学习的积极性。越到后面越难,很多人开始打退堂鼓,甚至产生想要放弃的念头。这和爬山是一个道理,你都快到山顶了,肯定是走不动了,但是如果再坚持一下下,就会看到胜利的日出。 推....

这么多优秀的面试题,你不心动吗?

2019-07-27

人生有涯,学海无涯。 今天给大家分享一些《Java 极客技术》知识星球的部分优质的面试题内容,在分享这些内容之前先解答几个大家疑惑的问题。既然有了《Java 极客技术》的公众号,为什么还要有《Java 极客技术》的知识星球?直接在公众号里面看文章不行吗,为什么要加入到知识星球中去? 解惑 大家有问题,有疑惑很好,人的成长中最怕的是没有问题。那么既然有了问题,下一步自然是提出问题,可惜很遗憾,由于微信的规定导致,我们的《Java 极客技术》的公众号没有留言功能!!!没有留言功能,自然无法让你们提问。大家可能会说,那我在后台留言啊。很好,这是一个方案,但是遗憾的告诉大家,首先后台留言的消息只能保存短暂的几天时间,我们很难在第一时间内看到并回复;其次我们做的是公众号,不是服务号,大家除了日常的工作还要为星球中的用户输出优质的内容,时间不够用,而且我们还要创造更多有趣好玩的干货;最后也是最重要的一个原因是,后台留言的回复只能一对一!!!这个是最严重的问题,同一个问题,成千上万的用户询问,难道我们要一一回复吗?可以很明确的说,这是不可能,也不现实的。 由于上面的种种原因才有了《Java 极客技术....

聊聊目标管理之 OKR

2019-07-24

这篇文章我们不谈技术,聊点轻松的,那聊什么呢?聊一下最近很火的目标管理 OKR。不知道小伙伴你们的公司什么情况,我的公司今年开始推行 OKR,用了大半年的时间,感觉效果还不错,上周六又参加了一天的复盘培训会,刚好借此机会总结一下顺便跟大家分享一下这个优秀的工具。 什么是 OKR OKRs:Objectives & Key Results(目标与关键结果)。是一种企业,团队,个人目标设定与沟通的工具,是通过结果去衡量过程的方法与实践。 上面的解释说起来可能比较虚无缥缈,用通俗的语言来说就是一种自我激励督促的手段。对企业来说以前对员工的考核大部分情况都是采用 KPI 的方式,只要员工完成了 KPI 就可以了。OKR 是一种与 KPI 类似的工具,但是两者的出发点是完全不同的。KPI 强调的硬性指标,自上而下分配的任务,完全完全指导考核结果;但是 OKR 不一样,OKR 是一种激励督促的方式,强调的是创新性与挑战性,而且有自上而下或者自下而上两种方式,并且最大的特点是 OKR 的打分不直接与绩效考核挂钩。当然这里说的是不直接,但是还是会影响的~~。 简史 OKR 的创立是英特尔前首席....

分布式下必备神器之分布式锁

2019-07-11

今天这篇文章我们来聊聊在分布式环境下的一个神兵利器——分布式锁!在看这篇文章的时候,默认大家对锁已经了解了,如果不了解的朋友可以去翻翻公号前面的文章,有很多篇详细介绍了锁的一些知识。 写这篇文章的主要原因是之前星球中有朋友说面试中被问的频率有点高,虽然知道分布式锁是什么,但是还是不能很好的说出来,这篇文章就是帮助大家好好梳理一下分布式锁的原理,希望对大家有帮助。 另外欢迎到 Java 极客技术知识星球中,我们一起煮酒论技术~ 什么是分布式锁 首先我们先来简单了解一下什么是分布式锁(关于什么是锁,可以翻翻之前公号的文章或者到我们的网站 http://www.justdojava.com/ 上看看之前的文章)。 在引入分布式锁之前大家应该都知道经典的 CAP 理论提到任何一个系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)三者的,同一时刻只能满足两个,在这种情况下分布式锁就出现了,分布式锁就是用来解决数据一致性问题的。 在以前单体应用的环境下,Java 的 API 提供了很多控制并发的接口,包括 s....

聊聊 Redis 的事务

2019-07-02

背景 提到事务想必大家一定不会陌生,工作面试中多多少少都会了解到,这篇文章主要带大家再简单回忆一下事务的基本知识,然后重点介绍下 Redis 的事务,关于 Redis 的事务有何不同我们继续往下看就知道了。 什么事务 说到事务,首先我们需要知道什么是事务。首先事务是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行。事务是一个不可分割的逻辑单元。 事务的四大特性 A(原子性)事务的各步操作是不可分的,保证一系列的操作要么都完成,要么都不完成; C(一致性)事务完成,数据必须处于一致的状态; I(隔离性)对数据进行修改的所有并发事务彼此之间是相互隔离,这表明事务必须是独立的,不应以任何方式依赖或影响其他事务; D(持久性)表示事务对数据处理结束后,对数据更改必须持久化,不管是事务成功还是回滚。事务日志都能够保持事务的永久性。 以上是常规的事务以及事务的特性。下面我们来看一下什么是Redis的事务,以及Redis事务有什么特殊性质。 Redis 事务 关于Redis的性质官方文档如下 MULTI, EXEC, DISCARD and WATC....

面试你应该知道的 MySQL 的锁

2019-06-02

背景 数据库的锁是在多线程高并发的情况下用来保证数据稳定性和一致性的一种机制。MySQL 根据底层存储引擎的不同,锁的支持粒度和实现机制也不同。MyISAM 只支持表锁,InnoDB 支持行锁和表锁。目前 MySQL 默认的存储引擎是 InnoDB,这里主要介绍 InnoDB 的锁。 InnoDB 存储引擎 使用 InnoDB 的两大优点:一是支持事务;二是支持行锁。 MySQL 的事务 在高并发的情况下事务的并发处理会带来几个问题 脏读:**指在事务 A 处理过程里读取到了事务 B 未提交的事务中的数据。**比如在转账的例子中:小 A 开了一个事务给小 B 转了1000 块,还没提交事务的时候就跟小 B 说,钱已经到账了。这个时候小 B 去看了一下余额,发现果真到账了(然后就开开心心刷抖音去了),这个时候小 A 回滚了事务,把 1000 块又搞回去了。小 B 刷完抖音再去看下余额,发现钱又不见了。 不可重复读:**指在一个事务执行的过程中多次查询某一数据的时候结果不一致的现象,由于在执行的过程中被另一个事务修改了这个数据并提交了事务。**比如:事务 A 第一次读小明的年龄是 18 岁....

聊聊面试中的 ThreadLocal 原理和使用场景

2019-05-12

相信大家不管是在网上做题还是在面试中都经常被问过 ThreadLocal 的原理和用法,虽然一直知道这个东西的存在但是一直没有好好的研究一下原理,没有自己的知识体系。今天花点时间好好学习了一下,分享给有需要的朋友。 ThreadLocal 是什么 ThreadLocal 是 JDK java.lang 包中的一个用来实现相同线程数据共享不同的线程数据隔离的一个工具。 我们来看下 JDK 源码中是如何解释的: This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, independently initialized copy of the variable. ThreadLocal instances are typically private static fields in classes ....

聊聊面试中的 Java 线程池

2019-04-29

背景 关于 Java 的线程池我想大家肯定不会陌生,在工作中或者自己平时的学习中多多少少都会用到,那你真的有了解过底层的实现原理吗?还是说只停留在用的阶段呢?而且关于 Java 线程池也是在面试中的一个高频的面试题,就像 HashMap 的实现原理一样,基本上面试必问,估计都已经被问烂大街了。 题外话:HashMap 的实现原理真的已经被问烂了,在我自身的多次面试中都不知道被问了几遍了,有的时候想想很奇怪,为什么这个被问的烂大街的问题还是会一直被问呢?但是从面试官的角度来想一下,如果一个被问的都烂大街的问题你都不好好准备对待,那怎么能好好的对待工作呢(个人愚见)。 常用的几种线程池 我们先来看下常用的几种线程池的创建方式,以及底层采用的实现原理 单个线程: Executors.newSingleThreadExecutor(); public static ExecutorService newSingleThreadExecutor() { return new FinalizableDelegatedExecutorService (new ThreadPoolExecutor(....

基于ZK的 Dubbo-admin 与 Dubbo-monitor 搭建

2019-04-09

本文最初发布在 「Java极客技术」公众号 背景 最近项目中使用了 dubbo 在实现服务注册和发现,需要实现对服务提供者和调用者的监控,之前有研究过基于 redis作为注册中心的监控平台,不过本文基于 zk 作为注册中心,进行 dubbo-admin 和 dubbo-monitor 搭建。另外项目基于 dubbo 2.6.4版本,所以该监控版本调整为 dubbo2.6.4。 步骤 GitHub 官方组件目前在重构,采用前后分离技术,尚未完成。本文采用的还是 master 分支的老版本 dubbo-admin git clone https://github.com/apache/incubator-dubbo-ops 将项目根目录下的 pom.xml文件中的 dubbo 版本调整为2.6.4 <dubbo_all_version>2.6.4</dubbo_all_version> 将 dubbo-admin 项目下的 pom.xml文件中的 dubbo版本进行调整,并且增加 netty 依赖 <dependency> <groupId&gt....

看自己的文章被各大平台转载是一种什么样的体验

2019-04-07

Java Geek Tech 一个由纯洁的微笑发起的一个团队,共同维护一个公众号Java极客技术(Javageektech)。该公众号主要用来分享 Java 开发的一些技能。 文章的作者都是微笑哥知识星球群友写的,有 Java 基础,有 Java 高级特性,从多线程,JVM 等很多方面的技术,也有一些面试经历。主要帮助群友或者其他人成长。 Java Geek Tech 第一篇文章 加入Java极客技术两周,目前投稿了两篇文章,第一篇文章是《记一次蚂蚁金服的面试经历》被网上各大平台转载,看起来大家都很喜欢。而且也收到了很多网友的评论, 转载的平台有掘金,简书,知乎,头条等很多平台。文章最初是发表发表在Java极客技术(Javageektech)公众号上面的,原始地址如下: 博客地址 微信公众号地址 其实自己一开始并没有想到要写这一篇文章,本来就是一场面试经历而已,而且最终也没有拿到 offer。然后在微笑哥群里聊天的时候提到了这个事,微笑哥就说写出来,投稿到公众号里面,帮大家一起进步。想了想,觉得可以帮到大家挺好的, 然后周末就花了点时间记录了一下自己的受虐过程。没想到发到公众号后就一发....

Swagger2边写代码边写文档

2019-03-28

本文最初发布在 「Java极客技术」公众号 作为一个开发人员最怕的就是写文档了,但是要想成为一个合格的程序员,写好文档也是一个必备的技能。开发中我们经常要写接口服务,既然是服务就要跟别人对接,那难免要写接口文档,那么如何”优雅“的写接口文档呢?本文介绍一个在写代码的过程就可以写完接口文档的工具——Swagger2(江湖人称丝袜哥😂) 下文基于 SpringBoot + Maven 介绍 Swagger2 的使用 加入依赖 <!--Swagger-ui配置--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>sp....

2019-03-26-加入Java Geek Tech

2019-03-26

Java Geek Tech 一个由纯洁的微笑发起的一个团队,共同维护一个公众号Java极客技术(Javageektech)。该公众号主要用来分享 Java 开发的一些技能。 文章的作者都是微笑哥知识星球群友写的,有 Java 基础,有 Java 高级特性,从多线程,JVM 等很多方面的技术,也有一些面试经历。主要帮助群友或者其他人成长。 群友都可以投稿,但是必须写满六篇才能加入的运营团队,目前自己投稿了一篇,还要继续努力。 Java Geek Tech One more thing Personal Medium Home Page: https://medium.com/@zhuxiang134 Personal Website: https://zxsilence.cn/

2019-03-24-01读《岛上书店》有感

2019-03-24

简述 《岛上书店》顾名思义就是一个海岛上的一个书店。 故事讲述的是书店的主人 AJ在失去爱人之后,无儿无女,孤独袭人,未来一片茫然。在丢失了真贵的读本《帖木儿》后,还收养了一个弃婴。正是这个弃婴给 AJ 带来了人生的希望,一步一步拯救了 AJ,随着孩子玛雅的渐渐长大,AJ 也遇到了同样热爱书籍的真爱。 摘录 "因为从心底害怕自己不值得被爱,我们独来独往,然而就是因为独来独往,才让我们以为自己不值得被爱。有一天,你不知道是什么时候,你会驱车上路。有一天,你不知道是什么时候,你会遇到他(她)。你会被爱,因为你今生第一次真正不再孤单。你会选择不再孤单下去." "没有书店的地方不能称之为一个地方" "没有谁是一座孤岛,每本书都是一个世界." "没有人会漫无目的地旅行,那些迷路者是希望迷路。" "大多数人如果能给更多事情一个机会的话,他们的问题都能解决。" "想要了解一个人,你只需问一个问题:"你最喜欢那本书?"" "一旦一个人在乎一件事,就发现自己不得不开始在乎一切事。" "人这一生就是一部运动员回忆录……你努力训练,取得成功,但是到最后你的身体不行了,一切就结束了。" 感悟 生活中往往有很多....

2018年终总结

2018-12-29

2018 年终总结 ​ 2018年即将过去,一年的时间过的是如此的快,回顾自己这一年,无论是工作还是自身的学习都有很大的进步。 工作回顾 ​ 今年是自己工作的第三年,相对于前两年来说,今年的工作的更加得心应手,因为大部分功能自己都参与重构或者构建完成的;而且今年跟业务的接触更加频繁,很多地方都有了更深层次的认识。以前可能只会关注自己代码写的怎么样,功能是否能完成,现在考虑的更多的是为什么要这么做,更多的从业务的层面上去思考去理解。 ​ 技术都是为了业务服务的,在没有业务场景的前提下,技术再厉害也没有发挥的余地。 ​ 这一年也由于对业务更加熟悉了,对接的人也变多了,不管是业务人员,测试人员还是其他人,遇到问题的时候感觉都会习惯性的找到我,让我帮他们排查问题。加上我这个人本身不怎么会拒绝,往往很多时候会被这些琐事压住,事情本身并不复杂,解决起来也很简单,只能说繁琐,往往自己的事情还需要晚上加班处理。但是从另一个方面来说,责任越大,担子越大,想想为什么他们不去找其他人呢?在自己力所能及的范围里面能帮助到别人还是很开心的。 个人成长 ​ 这一年最大的收获是接触到了很多优秀的人,有强哥的纯洁的微....

The 16th Week of ARTS:Sliding Window Maximum_239

2018-12-09

Introduction Algorithm - Learning Algorithm Review - Learning English Tip - Learning Techniques Share - Learning Influence Let's do it!!! Algorithm Sliding Window Maximum Description Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position. Return the max sliding window. My Solution package com.silence.arts.leetcode.stack; impor....

The 15th Week of ARTS:KthLargest Element in a Stream_703

2018-12-01

Introduction Algorithm - Learning Algorithm Review - Learning English Tip - Learning Techniques Share - Learning Influence Let's do it!!! Algorithm KthLargest Element in a Stream Description Design a class to find the kth largest element in a stream. Note that it is the kth largest element in the sorted order, not the kth distinct element. Your KthLargest class will have a constructor which accepts an integer k and an integer array nums, which contains initial elements from the stream. For each ....