- 博客(79)
- 收藏
- 关注
原创 上次谁说要Java开源项目来着?来!
今天推荐的几款主要包括后台管理项目、电商项目和微服务项目。项目一项目名称:Java项目简介: 这是一个基于Java的数据结构与算法的实现项目。里面包含了几乎常用所有数据结构的实现,以及诸多算法题和LeetCode习题的Java实现。主要包括:加解密算法进制转换各种数据结构分治动态规划数学类问题搜索问题排序问题LeetCode习题其他杂项算法题等对于我们的作用: 基于Ja...
2020-05-06 14:13:56 639
原创 不敢想象,你写了3年程序,竟然很少写单元测试!
一、前言有同学可能看到这个标题,又以为是标题党了,你真莫笑,你可以小声去问问你在中小型公司的同学,有多少在写单测?可能有的同学就只知道Junit,连Mockito是什么都不知道,希望本文能帮助你深入的了解单测框架。相信做过开发的同学,都多多少少写过下面的代码,很长一段时间我一直以为这就是单元测试…@SpringBootTest@RunWith(SpringRunner.class)pub...
2020-04-30 12:49:06 426
原创 你这代码写得真丑,满屏的try-catch,全局异常处理不会吗?下
统一返回结果在验证统一异常处理器之前,顺便说一下统一返回结果。说白了,其实是统一一下返回结果的数据结构。code、message 是所有返回结果中必有的字段,而当需要返回数据时,则需要另一个字段 data 来表示。所以首先定义一个 BaseResponse 来作为所有返回结果的基类;然后定义一个通用返回结果类CommonResponse,继承 BaseResponse,而且多了字段data;...
2020-04-27 16:53:59 753
原创 五十岁的创业者告诉我们,奋斗其实没有终点
一我曾经提到过最终改行从事美缝行业的老w,他靠自己的“不够努力”,最终离开了行业。但是,这个世界其实有点讽刺。在沉迷于安逸小日子的老w每天朝九晚五,只想拿钱,不想干活的那段日子,隔壁的总经理办公室却经常通宵达旦、灯火通明,那位五十五岁的老板Y总,正在为了自己的梦想努力奋斗着。二在加入公司之前,我曾经见过一次Y总,那是在一个茶室,跟Y总有过一番简单的沟通后,我打算去公司看看,以便了解公司实...
2020-04-25 18:19:17 271
原创 我的天,你工作5年了,连Java agent都不知道...下篇
老规矩,先看测试代码,测试代码很简单,每隔 100ms 运行一次 sayHi 方法,并随机随眠一段时间。packageorg.xunche.app;publicclassHelloTraceAgent{publicstaticvoidmain(String[] args)throwsInterruptedException{HelloTraceAgent helloTraceAgent =new...
2020-04-24 16:42:59 349
原创 我的天,你工作5年了,连Java agent都不知道...上篇
引言在本篇文章中,我会通过几个简单的程序来说明 agent 的使用,最后在实战环节我会通过 asm 字节码框架来实现一个小工具,用于在程序运行中采集指定方法的参数和返回值。有关 asm 字节码的内容不是本文的重点,不会过多的阐述,不明白的同学可以自己 google 下。简介Java agent 提供了一种在加载字节码时,对字节码进行修改的方式。他共有两种方式执行,一种是在 main 方法执行...
2020-04-24 16:37:24 304
原创 支付宝架构师的总结:为什么他们能抗住万亿级流量的高并发?(下篇)
集群对于用户访问集中的业务独立部署服务器,应用服务器,数据库,nosql数据库。核心业务基本上需要搭建集群,即多台服务器部署相同的应用构成一个集群,通过负载均衡设备共同对外提供服务, 服务器集群能够为相同的服务提供更多的并发支持,因此当有更多的用户访问时,只需要向集群中加入新的机器即可, 另外可以实现当其中的某台服务器发生故障时,可以通过负载均衡的失效转移机制将请求转移至集群中其他的服务器上,因...
2020-04-23 16:28:26 424
原创 支付宝架构师的总结:为什么他们能抗住万亿级流量的高并发?
前言高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己业务场景的高并发处理方案。在电商相关产品开发的这些年,我有幸的遇到了并发下的各种坑,这一路摸爬滚打过来有着不少的血泪史,这里进行的总结,作为自己的归档记录,同时分享给大家。服务器架构业务从...
2020-04-23 16:23:13 378
原创 你做得这个SpringBoot监控,看起来真炫酷!(下篇)
使用场景:根据个人经验和实践,总结如下:有自然(物理)上界的浮动值的监测,例如物理内存、集合、映射、数值等。有逻辑上界的浮动值的监测,例如积压的消息、(线程池中)积压的任务等,其实本质也是集合或者映射的监测。举个相对实际的例子,假设我们需要对登录后的用户发送一条短信或者推送,做法是消息先投放到一个阻塞队列,再由一个线程消费消息进行其他操作:public class GaugeMain {...
2020-04-22 12:51:35 934
原创 你做得这个SpringBoot监控,看起来真炫酷!(中篇)
GaugeGauge(仪表)是获取当前度量记录值的句柄,也就是它表示一个可以任意上下浮动的单数值度量Meter。Gauge通常用于变动的测量值,测量值用ToDoubleFunction参数的返回值设置,如当前的内存使用情况,同时也可以测量上下移动的”计数”,比如队列中的消息数量。官网文档中提到Gauge的典型使用场景是用于测量集合或映射的大小或运行状态中的线程数。Gauge一般用于监测有自然上...
2020-04-22 12:47:53 961
原创 你做得这个SpringBoot监控,看起来真炫酷!(上篇)
前提spring-actuator做度量统计收集,使用Prometheus(普罗米修斯)进行数据收集,Grafana(增强ui)进行数据展示,用于监控生成环境机器的性能指标和业务数据指标。一般,我们叫这样的操作为”埋点”。SpringBoot中的依赖spring-actuator中集成的度量统计API使用的框架是Micrometer,官网是Micrometer.io。在实践中发现了业务开发者滥...
2020-04-21 12:48:44 1340
原创 Java是未来的第一编程语言吗?
一、前言Java语言长期以来一直霸占多数热门编程语言榜单的榜首,可见这是一个备受程序员热捧的编程语言。Java语言具有什么魅力?想必这都是已经为大多数人们所熟知的了,不值得过多赘述。而Java语言发展至今,面对发展势头迅猛又十分简单易学的python,以及各种层出不穷的高级语言,Java程序员的份额已经逐步下降,那它是否还能在未来保持领先的优势呢?本文就主要从Java语言所不擅长的领域,以及它在...
2020-04-20 14:45:10 762
原创 面向对象编程,再见!
作为程序员,你是使用函数式编程还是面向对象编程方式?在本文中,拥有 10 多年软件开发经验的作者从面向对象编程的三大特性——继承、封装、多态三大角度提出了自己的疑问,并深刻表示是时候和面向对象编程说再见了。几十年来我都在用面向对象的语言编程。我用过的第一个面向对象的语言是 C++,后来是 Smalltalk,最后是 .NET 和 Java。我曾经对使用继承、封装和多态充满热情。它们是范式的三...
2020-04-20 14:40:57 227
原创 NPE,让我们太头疼了,该如何优雅的处理null呢?
判空灾难作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerException。不过NullPointerException对于很多猿们来说,也是Exception家族中最亲近的一员了。为了避免NullPointerException来找我们,我们经常会进行如下操作。if (data != null) {do sth.}如果一个类...
2020-04-18 13:08:38 318
原创 推荐几款压箱底的IDEA插件,撸码利器
前言Idea作为我们日常使用的编辑工具之一,因其强大和人性化而被各大神推荐。笔者闲来无事学了下Idea的操作,在找插件的过程中发现了一些宝藏插件,对我们日常开发或者提升代码功力都挺有帮助的吧,特此选出十个来推荐给大家~FindBugs虽说Idea本身提供的代码检查工具已经很强大了,但Idea提供的更多是规范性的检查,如果需要深入地检查异常,可以使用此插件。使用方式:右键点击项目、包或者...
2020-04-18 13:02:48 623
原创 太恐怖了,我的Linux服务器感染了kerberods病毒...
一、症状及表现1、CPU使用率异常,top命令显示CPU统计数数据均为0,利用busybox 查看CPU占用率之后,发现CPU被大量占用。注:ls top ps等命令已经被病毒的动态链接库劫持,无法正常使用,大家需要下载busybox。2、crontab 定时任务异常,存在以下内容;3、后期病毒变异,劫持sshd,导致远程登陆失败,偶尔还会跳出定时任务失败,收到新邮件等问题4、 存在异常...
2020-04-17 14:00:11 798
原创 老板说,我请你来,不是叫你"无脑"拷贝的,竟然在线上搞出这么大的一个BUG...
本人是做游戏服务器开发的,碰到一个需求,给符某些要求的玩家的发送道具奖励,奖励的数量根据离线的天数计算。这个需求实现起来很简单,只需要在玩家上线的时候计算上次离线时间和当前时间间隔的天数,然后根据策划的算法,计算出道具种类与数量,发一封邮件给玩家就可以了。实现计算两个时间间隔天数的函数,没有现成的,我又懒得写,就上谷歌搜了下,选了第一条结果,代码如下public static int dif...
2020-04-17 13:55:53 213
原创 一个奇怪的MySQL慢查询,打懵了一群不懂业务的DBA!
前言最近,开发人员需要定期的删除表里一定时间以前的数据,SQL如下:mysql > delete from testtable WHERE biz_date <= ‘2017-08-21 00:00:00’ AND status = 2 limit 500\G前段时间在优化的时候,我们已经在相应的查询条件上加上了索引,如下:KEY idx_bizdate_st (biz_d...
2020-04-16 13:31:00 235
原创 最烂密码榜单TOP 100,那个是最烂之王?
近日,SplashData 公布了最烂密码榜单TOP 100,123456”这个烂密码,从2013年开始一直连续夺冠!而根据《中国网民个人隐私状况调查报告》,以“几个密码通用于大多数账号”的中国网民占比达到50.8%。对自己拥有的所有账号都采取同一套密码的人占14.9%。在信息泄露时,58.9%的人选择仅修改泄露平台的密码。大多数人还在“一套密码走天下”!我们应该如何设置自己的密码呢?0...
2020-04-16 13:16:45 510
原创 面经分享:网友问我,怎样才能在谷歌匹兹堡办公室里写代码?下篇
算法和数据结构我用来准备面试的那本书是我本科时用过的:托马斯·h·科曼(Thomas H. Cormen)、查尔斯·e·雷瑟森(Charles E. Leiserson)、罗纳德·l·里维斯特(Ronald L. Rivest)和克利福德·斯坦(Clifford Stein)合著的《算法导论》(Introduction to Algorithms)。这里并没有太多需要了解的算法和数据结构,但是...
2020-04-14 15:32:49 574
原创 面经分享:网友问我,怎样才能在谷歌匹兹堡办公室里写代码?上篇
Pablo Samuel Castro是谷歌Brain的一名高级研究员,其研究内容包括强化学习、机器学习等。近日,Pablo分享了他作为谷歌面试官的一些经验,以期对有意向到谷歌工作或从事软件工程工作的研究者有所帮助。大家经常问我,怎么才能拿到谷歌的 Offer?虽然这个问题没有固定答案,但我还是有一些可以帮助其他人(包括我自己)的技巧。我在谷歌的面试过程不算完美,但我确实感觉整个过程都很好、很...
2020-04-14 15:28:34 317
原创 如何一句话“暴击”程序员,网友:哭了!
俗话说得好每个程序猿都有一颗坚强的心据说有几句话一旦对程序猿开口会立马激怒他,外加100点暴击如下↓↓↓1下班了,故意从程序员边上飘过淡定的来一句:哟,还在改 bug 呢看着程序猿难过的眼神再加一句:加油!我先下班了啦~2这个应该很简单吧?为什么淘宝都能做到,你做不到程序猿:你行你上啊3亲戚:你会修电脑么?程序猿:不会亲戚:你不是学计算机的不会修电脑?OS...
2020-04-13 12:53:16 277
原创 分享一个牛逼的 Java 开源后台管理系统,不要造轮子了!
还是那句话,重复造轮子是个苦逼的活,能搞懂搞会一个好轮子,是多么美好的事情,今天介绍一款杠把子级别的Java开源后台管理系统,RuoYi 基于SpringBoot开发分普通交互前段bootstrap版本,和vue前后端分离版本;bootstrap版本开源地址:https://gitee.com/y_project/RuoYi/vue前后端分离版本开原地址:https://gitee.co...
2020-04-11 13:55:18 1037
原创 知乎:一个程序员的水平能差到什么程度?
最近,知乎上有一则灵魂拷问“一个程序员的水平能差到什么程度?”让各位程序员们纷纷有感而发。小编精选了两个有趣的高赞回答只为抛砖引玉,欢迎大家说出你的故事!图片来自 Pexels1来自知乎网友“Benny”想起了一件十多年前的往事,有一次帮客户的 Java 项目组升级框架。入场之后屡次听到项目组的运维小哥抱怨 war 包过大,导致每次发布要等很久很久,用过 WebSphere 的童鞋可能知...
2020-04-11 13:51:07 582 2
原创 我去,你竟然不知道Spring 和 Spring Boot 之间有啥区别?
相信很多小伙伴和我一样,常用Spring 和Spring Boot 但是就是没有研究二者之间到底有什么区别?今天就来大揭秘 ↓概述对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累、我慢慢理解了这两个框架到底有什么区别,相信对于用了 SpringBoot很久的同学来说,还不是很理解 Spring...
2020-04-10 19:04:48 227
原创 我想打这个面试官,他给我挖坑,问我:URI中的 “//” 有什么用?
我们在浏览网页的时候,需要在浏览器中输入http://或者https://开头的URL地址,类似http://honeypps.com,那么这里的"????/“或者”//"有什么用呢?说到URL就不得不提URI了。用什么来标记服务器上的资源呢?用的就是URI(Uniform Resource Identifier),即统一资源标识符。URI经常出现在浏览器的地址栏里,有时候也会称它为“网络地址”,简称...
2020-04-10 14:15:04 352
原创 竟然可以在Windows上运行Linux,真好玩!
之前了解过一些适用于linux的Windows子系统,最近又听人提起,于是在自己的Windows 10专业版上安装了一个Ubuntu。运行起来还真方便,以后在windows上开发Linux程序就不需要安装桌面虚拟化应用了。下面讲下具体的步骤。首先需要在控制面板中启用“适用于Linux的Windows子系统”,然后去Microsoft Store搜索“在Windows上运行Linux”,当前可...
2020-04-09 12:38:53 334
原创 一次给女朋友转账引发我对分布式事务的思考
前两天发了工资,第一反应是想着要给远方的女朋友一点惊喜!于是打开了平安银行的APP给女朋友转点钱!填写上对方招商银行卡的卡号、开户名,一键转账!搞定!在我点击的那瞬间,就收到了app的账户变动的提醒,并且出现了图一所示的提示界面:“处理中,正在等待对方银行返回结果…”。嗯!毕竟是跨行转账嘛,等个几秒也正常!脑海开始浮现出女朋友收到转账后惊喜与感动的画面!然而,一切并没有那么顺利,刚过一会儿,ap...
2020-04-09 12:33:12 309
原创 重构:如何去掉代码中的S味
本次我们抛开 JAVA 虚拟机源码这些相对底层的东西,LZ 来与各位探讨一下几个代码重构的小技巧,这些内容部分来自于书籍当中,部分来自于 LZ 维护项目当中的一些实践经验。如果猿友们曾经用过这种手法,也不妨参与到文章的留言当中,将你的小心得、小体会共享与他人,也可以拿来冲击 LZ 自己定义的排行榜,LZ 不甚欢迎。重构的手法有很多种,相对而言,一篇文章的涵盖量自然是无法提到所有,LZ 这里也只能...
2020-04-08 13:08:31 178
原创 解惑:不要在多门语言间徘徊,把一门语言玩熟了,其他语言都是纸老虎...
刚才和我弟弟通电话聊了聊这一段时间的学习以及下一阶段的学习规划,我弟弟在读大二,是计算机专业。今天和他聊电话,感触颇多,倒不是因为我发现了新的东西,而是因为竟然连他都不相信我说过的一些我认为非常根本、非常核心的话,“连我的亲兄弟都不信我说的话,那些在XX网上随声附和我、捧我臭脚的同学右有几个真正信我说的话的同学呢?”,想到这里心里不禁一片悲凉。到底他说的那句话触动了我呢,那就是“我现在C++语法...
2020-04-08 13:05:37 286 2
原创 要获得中间件开发的Offer,难么?
前言本文主要是写给那些想从事中间件开发的同学看的 :)如果你没有这个打算,那么本文的学习路线非但不实用,还可能会影响你正常的工作 :)什么是中间件开发?随着国内软件行业的发展,国内互联网公司规模越来越大,业务越来越复杂,随之使用大量的中间件来提高后台服务性能。由此产生了中间件开发和维护人员。诚然,在小公司,中间件,例如缓存,MQ,RPC 等服务,极大可能是由业务开发人员自己维护,或者委托...
2020-04-07 14:09:07 433 1
原创 为什么SpringBoot构造的jar能直接运行?
SpringBoot提供了一个插件spring-boot-maven-plugin用于把程序打包成一个可执行的jar包。在pom文件里加入这个插件即可:org.springframework.bootspring-boot-maven-plugin打包完生成的executable-jar-1.0-SNAPSHOT.jar内部的结构如下:├── META-INF│ ├── ...
2020-04-07 14:07:06 465
原创 哀悼日网站全站变灰代码,最简单的还是ng这种方式...
一般在清明节,全国哀悼日,大地震的日子,以及一些影响力很大的伟人逝世或纪念日的时候,身为站长的我们都会让自己的网站的全部网页变成灰色(黑白色),以表示我们对逝者的悼念。那么今天就说说,通过几行简单的代码,来实现这个功能。第一种:修改CSS文件我们可以在网页的CSS文件中添加以下的CSS代码,来实现网页黑白色,也就是网站变灰。代码html { filter: progid:DXImageT...
2020-04-06 15:57:54 638
原创 2020年4月编程语言排行榜:少儿编程真有这么火吗?
程序员4月份工资已公布《2020 年 4月全国程序员工资出炉!》,请注意查收。今天,我们再来分享一下TIOBE公布的4月份编程语言排行榜。相比上个月编程语言Top 5并没有太大的变化,其中Java依旧稳坐榜首,随后分别是C、Python、C++、C#;Scratch进入了前20名。肯定有很多同学都不知道这门编程语言,我在这里科普一下,这是一门少儿编程语言。Scratch是麻省理工媒体实验室终...
2020-04-06 13:23:49 1641
原创 纯手工打造一个高性能轻便的序列化组件
别的不说,先上两张图,这两张图是jvm序列化对比测试(https://github.com/eishay/jvm-serializers)的结果。这个对比测试涵盖了适用于java的大部分序列化组件,测试内容包括首先进行一段时间的预热(默认序列化+反序列化3000次),然后分别进行500次序列化和反序列化,最后统计运行时间和序列化之后的大小。如图所示,我们的glowworm并未名列前茅,可以说只是...
2020-04-03 13:16:35 253
原创 要实现单点登录,难吗?
一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系3c91a3bf-25d8-4b1f-8e4a-68535c51aaa8但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服...
2020-04-03 13:12:10 425
原创 20年3月数据库排行榜
DB-Engines 根据受欢迎程度对数据库管理系统进行排名,排名每月更新一次,这不3月份的排行榜已经发布。整体排名与上月比较,前10名基本没有什么大的变化,只是Oracle 和 MySQL 的分数下降最多。排名前20的名单如下:前十名的趋势变化图:我们再来分别看看每种类型数据库的排名情况。关系数据库前 15 名如下:https://mmbiz.qpic.cn/mmbiz_png/i...
2020-04-02 14:05:05 287
原创 v2ex:飞机上用的是什么操作系统?
之前波音737MAX空难失事事件牵动人心,让人对航空出行又平添了一份不信任,根据最新消息显示,美国联邦航空局对737 MAX机型的大量评估授权给波音公司自身进行,安全评估存在严重缺陷。也传出了波音737 MAX客机的培训都是通过平板电脑软件进行这样让人毛骨悚然的内幕。最终的结果出来之前我们很好奇,也恰巧在V2EX 看到了有人发问:飞机上用的是什么操作系统?根据 V友转自百度知道的答案:航空软...
2020-04-02 13:49:33 393
原创 项目一上线,遇到内存泄漏,排查坑哭了我...
背景为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+AlwaysPr...
2020-04-01 12:42:56 375
原创 外包公司,就真的那么“垃圾”吗?
从毕业至今,我已经工作三年,从毕业开始至今一直是在做外包,现在跟大家分享一下自己的工作经历。毕业后,有幸进入了一家创业型公司从事手机相关的开发业务,从此,我与Android相识了,由于没有这方面的开始经验,开始有些吃力,在公司是一边工作一边学习,还好老板人很好,在学习工作中给了我很多的帮助。在公司本部的一年多的时间,虽说工作上遇到过很多的困难,也时常加班,但还是学到了很多东西,在此感谢老板或者说...
2020-04-01 12:35:36 773
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人