码上实战

其他

4 种主流的 API 架构风格对比: SOAP vs REST vs GraphQL vs RPC

的紧密耦合使得可伸缩性要求和松散耦合的团队难以实现。因此,客户端要么会担心调用特定端点的带来的任何可能的副作用,要么需要尝试弄清楚要调用的端点,因为客户端不了解服务器如何命名其函数。可发现性低。
2022年5月5日
其他

如何快速实现一个聊天室?

WebSocket(`ws://localhost:8082/websocket/room`);
2021年5月18日
其他

Java8 接口改变:静态方法与默认方法

接口静态方法与默认方法类似,只是我们不能在实现类中重写它们。这个特性有助于我们避免实现类中的糟糕实现带来的不希望的结果。让我们用一个简单的例子来研究这个问题。package
2019年12月7日
其他

为什么我要使用Optional ?

就是一个可以包含NULL值的容器,或者你直接叫做一个包装类,只包装了一个属性,这个属性的值可有可无。它是box类型,保持对另一个对象的引用是不可变的,不可序列化的没有公共构造函数只能是present
2019年11月18日
其他

面对数据库死锁差点跪!

InnoDB如果你的系统日志突然报这种错误,就问你慌不慌?心想:MD,之前遇到过,但完全不记得该怎么办了!!!完了完了!被领导知道我解决不了这个问题,不会被开除吧!2019-10-23
2019年11月7日
其他

为什么数组下总是从0开始呢?

用非自然数来表示一个自然数集合内的范围显然不是一个好的选择。说法二我们常说的数组下标最精确的意思是”偏移量“,a[0]的偏移量是0,即为首地址。a[i]的偏移量是i,寻址公式:a[i]地址
2019年10月28日
其他

这种方式更优雅,秒表计时!

你有看过学校百米赛跑时,体育老师手里的秒表吗?老师是怎么记八个跑道中的学生跑了多少时间的呢?今天我们要做的就是实现老师手中的秒表,但是我们是没有办法同时跑N个任务的,只能一个跑完继续下一个。许多人统计用时会向下面这样,但方式并不优雅!现在我们来一起实现一个秒表让统计更加优雅吧。public
2019年10月17日
其他

一句话说一下volatile

这就符合了上面内存模型的解释了。然后把变量flag加上关键字volatile,再次运行,你会发现改变flag后,线程就立刻运行结束了。线程不安全情况public
2019年7月22日
其他

揭开ArrayList的外衣,看本质

源码还是比较多的,安安静静的读完确实不易,所以我们读源码要有着重点。ArrayList的继承和实现关系ArrayList的成员ArrayList的构造ArrayList的容量与扩容问题ArrayList的遍历删除修改操作1
2019年7月1日
其他

八张图带你认识Java

SynchronizationJava同步机制可以通过类似于建筑物来说明。6.
2019年6月14日
其他

千万不要这样使用 Arrays.asList !

使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合。而一开始asList的设计时用于打印数组而设计的,但jdk1.5开始,有了另一个比较更方便的打印函数Arrays.toString(),于是打印不再使用asList(),而asList()恰巧可用于将数组转为集合。1
2019年6月3日
其他

数据库优化第一步:数据类型

为什么选择合适的数据类型很重要?因为数据类型会影响存储空间的开销,也会影响数据的查询效率,可以说这是你优化数据库的第一步要做的事情。疑问本文的前提环境是:MySQL
2019年5月27日
其他

合并分支使用Merge还是Rebase?

request,由其他人来负责对你的代码进行review并确定是否通过请求,这样可以看到每个人开发合并的历史记录。不知道你是如何做的呢?往期文章一览1.
2019年5月20日
自由知乎 自由微博
其他

把「模板方法」应用到实际项目中

如果不在工作中思考,模板方法模式的概念和定义即使背再多遍估计也是徒劳,今天我思考如何解决实际项目中的问题时发现,模板方法正是解决问题的良策。需求我们项目中要实现一个创建会议的需求,但我们系统可设置将会议同步到其他第三方系统中。而在创建会议前要经过几个必须的步骤,比如验证冲突,计算循环规则,对比时间段是否符合等。思路不同点创建会议的方式不同:本地系统创建第三方系统创建相同点
2019年4月30日
其他

把「策略模式」应用到实际项目中

无论你知不知道这个设计模式,但必定在项目中都似曾相识。倘若仅仅聊理论必然枯燥乏味,只有理论和实战相结合方可达到人剑合一的境界。首先,我来说个需求,倘若是你遇到该如何做?你可停留几分钟,想出你的解决方式,可在下方留言,说出你的想法。需求用户有文件上传的需求,而我们要负责对文件进行存储,由于我们的系统可能会单独给个别客户私有化部署(部署尽量少依赖中间件能服务等),同时我们也会自己运营成为自己的SaaS服务(保证服务的高可用等)。所以我们有两点需求:1.
2019年4月24日
其他

造个轮子,我学到了什么

听说的最多的是不是“不要重复的造轮子”?不要被这句话蒙骗了,这句话应该还没说完整,在什么情况下不要造轮子?实际项目中由于工期和质量原因,肯定不希望你造轮子,你造轮子花费时间且质量不如现有的轮子。但是!不造轮子怎么去装X!不造轮子怎么去了解其中原理!不造轮子怎么成长!那在造参数校验器轮子的过程中我学到了什么呢?注解的定义与使用反射的应用Spring
2019年4月17日
其他

技术面试中的软技能

作为求职者时,只听别人说如何面试,按部就班的做,没有特别的体会。如今作为面试官,面试别人时,才发现什么才是重要的事情。形象形象包括衣着发型和五官。衣着不必太正式(西装),但也不能够太随意,比如肥胖的T恤和外套。头发最好在面试当天洗洗吹吹,简简单单就好。千万不要把发型弄的太个性,发胶发蜡把头发打理的笔直笔直,锃亮锃亮的,会认为你个性比较张扬,这种人不太容易管理。五官几乎是不可改变的,但也要搭理干净,胡子如果没有特殊爱好,一定要刮干净,鼻子千万不要露出你的鼻毛。最重要的就是有烟瘾的,千万不要在面试前吸烟,面试时可能和面试官坐的近,你一张口,面试官就能闻到你的烟味,这种烟味不吸烟的人是受不了的,他当然也不会录用,以后工作会经常沟通,他可不想一直闻烟味。沟通这是我司录用的最大标准!无论技术再牛,只要沟通不顺畅,不要!录用后是要一起工作的,沟通是少不了的!那么怎么才算沟通顺畅呢?这个可能靠点运气了,不同的面试官知识面的不同,个性的不同都会导致不同的结果。但有一点可以判断你俩是否沟通顺畅,那就是面试官问的问题你是否能理解!如果你不理解,面试官又愿意引导的话,这还有点戏;如果你不理解,面试官再而三的引导或不愿意继续这个话题,那我估计你几乎已经凉了。精神状态就是你说话的语气,眼神和表情。说话要大声点,咬字要清晰点,不要说话吞吞吐吐。说话时眼睛不要东张西望或者眼皮耷拉下来,会让人感觉你心不在焉或精神萎靡。眼睛可以平视面试官,炯炯有神这个词就是通过眼睛表达的。表情不要一直保持一个,要根据说话的语境进行转化,不然面试官会感觉和你聊天很枯燥。态度有些人感觉面试官问的问题太简单太low,完全配不上自己的水平,简单两句略过了。如果你也有这个想法,那么你只能去找高大上的公司了。这态度是所有公司都不会接受的!总会有比你水平低的同事来请教你,来和你合作,这种态度完全不能共赢!简单的问题你也要谦虚的仔细说,如果面试官听到满意的答案自然会让你停下来,继续下个话题。如果遇到不会的问题,可以停下来思考几秒钟,然后说出你的想法或推论,这点能表现你是否有主动思考能力;如果没有思路,可以直接说不知道或者让面试官引导一下,不要自己思考太久,这会拖慢面试进程,面试官不希望如此。如果面试官引导你,那么你可以一步步走下去,一旦走不下去了,立马和面试官反馈,并请面试官给出方向或关键词以便之后去学习了解。提问问你入职要做的事情。这个行业这个项目是否你能接受的,很多人入职后发现不喜欢当前的行业,项目和业务,只能辞职,这不仅耽误自己也耽误公司。问公司开发规模,规范及流程。看看是否标准,有什么优点,这对你以后的发展很重要,野生的和正规的就在于规范和标准。问公司对员工的提升有哪些帮助。帮助是双向的,没有提升的地方,谁愿意待呢。看看公司的办公环境是否能接受。不要问公司福利,薪资,加班情况,这你要等到HR面时再问。就说到这吧,你们从求职者或面试官的角度有什么想法呢?交流才能擦出火花,期待大家的留言!海内存知己,天涯若比邻,喜欢就关注吧
2019年4月11日
其他

不同时重写equals和hashCode又怎样!

可能一问到equals和hashCode相关的问题,就会有人讲他们的自反性,对称性,一致性,传递性等几条约定了,此时我不得不佩服,这么多约定竟然都能记得,但我不知道你是不是真的理解呢。我不同时重写又能如何呢?我只能说只要你不碰到这几个主,你也没什么事的!为什么不能遇到它们几个呢?因为它们几个会用到hashCode方法。他们用hashCode方法来干嘛?hashCode方法是根据对象的地址生成的一个int整数,默认它和地址一一对应的,如果不重写,那么只有对象地址一样的情况下,哈希值才相等。equals默认用来比较地址是否相同,但当集合中元素增多时,再使用equals判断,效率是比较低的;而哈希值是可以快速定位到指定的元素的,所以默认Java就使用哈希值来比较定位,因此有了Object.hashCode的约定。Set怎么实现存储不重复的元素的?HashMap怎么判断相同的key的?有兴趣可去深入了解一下。例子小王在「堆」中有两套房产,这两套房产位于不同的地址。现在我想要判断这两套房子是否是同一个主人?于是我去问Object,而Object告诉我这两套房产不是一个人的!我:为什么呢?Object:
2019年4月8日
其他

轻松搞定Java位运算

我们日常开发中为运算使用的并不多,但如果能巧妙的使用位运算可以减少运行开销和优化算法,通过Java的源码可知,如HashMap。单位换算1.
2019年3月13日