- 博客(37)
- 资源 (3)
- 收藏
- 关注
原创 Tech Lead 成长之团队合作
在做某个项目的时候,对接一个 OA 系统。OA 系统是比较老的系统,集团员工都使用这套系统来完成日常审批工作。发送请求时,OA 系统有概率生成两个一模一样工单记录,只有 ID 不一样。导致回调时候,ID 匹配不上,导致状态更新失败。OA 系统完成审批时,异步回调并且有概率失败,会导致状态更新失败。乍一看,两个都是对方系统的 BUG,和自己团队没有关系。我们修改代码,自己生成业务唯一 ID,抛弃 OA 系统的唯一 ID,OA 系统回调时把 ID 发回给我们。
2023-09-05 15:41:26
164
原创 Git 进阶之 Hooks 妙用
开篇先想象以下几个场景看着同事提交信息,怎么判断那个提交在做什么?拉取同事最新的代码,发现编译失败,耽误自己开发怎么办?提交代码后忘记触发 CI(Continuous Integration)怎么办?这些问题答案也很简答:问同事,自己写一个检查清单来保证自己提交步骤。低频操作下这个方案也许确实可行,高频操作的时候这不免有些繁琐。因为忘记部署,测试人员提的 bug,你在本地死活无法复现,心情是不是很崩溃?那么上述问题有没有自动化的解决方案呢?编译失败就不让提交,提交了就自动跑 CI 部署。以上
2021-01-17 18:10:26
883
原创 浅谈Java8的HashMap为什么线程不安全
PS:本文使用的Java源码是JDK1.8。之前写过一篇类似的文章,但是因为给出的 demo 错误,所以删除原文章重写一份。 public static void main(String[] args) { Map<String, String> map = new HashMap<>(); for (int j = 0; j < 100; j++) { double i = Math.random() * 1
2020-05-31 20:07:12
1480
原创 记一次 MySQL 查询功能实现
单纯的记录一个 sql 语句的修改过程。业务场景运营后台需要对用户金币变动信息按照时间段(以天为最小单位)统计查询。数据表抽象id(记录数据唯一标识,主键,account(用户登录唯一标识)cost(单日金币变动汇总)type(变动类型,收入和支出)vip(记录当前的 vip 等级)date(当天变动的最新时间)特殊说明一个用户一天最多两条记录汇总,一个...
2019-01-23 13:40:30
422
原创 种树栽花
一年之计,莫如树谷;十年之计,莫如树木。---题记最近我看完了四本书,分别是:《设计模式之禅》、《姚兆丰经济学讲义:来自超过25万人的经济学课堂》、《番茄工作法图解:简单易行的时间管理方法》、《深度工作:如何有效使用每一点脑力》;如果十年后再回首,我觉得这四本书应该至关重要。设计模式之禅最开始读这本书的原因–看框源码。这是一个很迫切也很实际的需求,框架包含一堆设计模式的组合应用,不懂设...
2018-12-17 16:55:46
409
原创 MySQL 事务隔离级别
Hello,一周不见,这周过得好吗?最近学习 MySQL 相关知识,刚好学习到了这个知识点,就整理出来和大家一起学习。什么是事务 事务就是一组原子性的 SQL 查询,或者一个独立的工作单元。 –《高性能 MySQL》这段话好像也比较抽象,通俗一点说,事务里面包含的 SQL 语句,要么全部执行成功,要么全部执行失败。比较经典的例子就是银行转账了,这个都烂大街了,不再重复叙述...
2018-09-16 23:40:30
212
原创 Java 进阶基础知识汇总
我断断续续花费一周的时间整理了这份 Java 进阶基础知识的思维导图。以前觉得这是一个简单的事情,感觉不就是跟着书上的知识点抄一遍嘛,但真的自己动手写过后,才发现并不是那么一回事。说说自己整理心得吧。首先克服的是畏难情绪,整理过程中,我不止一次想放弃。像枚举那块,平时用的都比较少,关于一些特定的用法根本没有太多资料,只能去看官方英文文档自己翻译理解。整理好了,自然要发布自己的思维导图共享给...
2018-09-04 09:55:26
473
原创 再论递归和动态规划
在上篇文章「初探动态规划」里面,我提到要写好动态规划需要先写好递归,今天就再谈谈怎么写好递归。为什么要写好递归?写递归符合动态规划的原理,同时也容易被人理解。那么该怎么写好这个递归呢?大量的实战练习,直接上例题。 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 题目分析题干给的是一个整数数组,...
2018-08-17 23:01:50
246
原创 初探动态规划
Q:为什么要学动态规划? A:因为笔试必考。Q:为什么笔试喜欢考动态规划? A:因为动态规划比较好出题,可以检验思考方式,而且相对比较难。Q:为什么动态规划难? A:就像高考最后的物理大题一样,解题思路大同小异,但每个人做出来都不一样,更何况很多人都还做不出来。Q:什么是动态规划? A:这个自己 Google 吧,不在论述范围之内。Q:看懂这篇文章需要什么水准? A:懂递...
2018-08-16 09:55:05
239
原创 浅谈 Java 四种引用类型
好久没有写技术博客了,虽然写了一些面经(微信公众号:卡戎),但技术才是根本。今天就谈一谈 Java 对象的四种引用方法吧。StrongReference(强引用)A a = new A();这就是强引用,也是最常见的引用方式。如果对象是一个强引用,那么 JVM 绝对不会回收他,绝对到哪种程度呢?宁愿牺牲自己抛出 OutOfMemoryError 挂掉程序,也不会去回收。正如「在我死...
2018-08-08 16:12:58
1988
1
原创 HTTP 常见的状态码
说到 404 Not Found 估计大家都很熟悉,资源没有被找到,这是一个很常见的错误状态码。今天就聊一聊有 HTTP 的一些常见状态码。HTTP 状态码分五类: - 1xx 信息性状态类,接收的请求正在处理 - 2xx 成功状态类,请求正常处理完毕 - 3xx 重定向状态类,需要进行附加操作以完成请求 - 4xx 客户端错误码状态类,服务器无法处理请求 - 5xx 服务器错误状态...
2018-07-23 14:57:08
565
原创 Java 趣事之 a=a++ 和 a=++a
如果问 a++ 和 ++a 的区别,估计很多都能回答上来。a++ 是先取 a 的值使用,再 a 自增加 1 。而 ++a 刚好相反,是先自增再赋值。这里有点编程基础都可以理解,不做过多解释,但是在 Java 里面有些事情不像表面那么简单的。int a = 1;a = a++;System.out.println(a);凭借自己所学,在不测试的情况之下,你能给出答案吗?第一次看见...
2018-07-16 15:16:22
17349
8
原创 初识 Java 垃圾回收
Java 和 C++ 之间有一堵内存管理围成的高墙,墙外的人想进去,墙里的人想出去!什么是垃圾回收Java 不需要手动管理内存,对象的分配都由 JVM 帮我们完成,不用自己申请内存。既然申请了内存,自然就要释放内存,释放内存的过程就是垃圾回收。为什么要垃圾回收随着程序的运行,内存中实例对象和各种变量会越来越多,占用的内存会越来越大,内存容量是有上限的,如果不进行垃圾回收...
2018-07-12 11:02:12
273
原创 初识Java序列化和反序列化
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...
2018-07-03 16:40:59
296
原创 SpringBoot 入门例子
SpringBoot 入门例子如果你学习过 Spring ,那么你一定体会过 Spring 繁琐的配置文件,不否认 Spring 框架的强大功能,但是每次都需要配置,是不是觉得苦恼呢?有抱怨的地方就有机会, SpringBoot 应运而生,无需繁琐的配置,只需简单的注释就可以便捷的开发,让我们一起学习这个框架吧。IDE:IntelliJ IDEA1.创建一个 Maven 项目 ...
2018-06-26 11:25:43
355
原创 Java设计模式之单例模式
如果说设计模式也有知名度排名,个人觉得单例模式应该排到第一名。单例模式说简单也简单,说难也难,主要在于不同情况之下应该有不同的选择。单例特点单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。 饿汉模式(线程安全)public class SingletonDemo { private static final Sin...
2018-06-18 22:28:50
257
原创 Java对象的创建方式
好久不更文了,今天聊一聊 Java 对象的创建方式,Java 对象创建一共有四种。 - 关键字 new - 反射 newInstant() - Object 的 clone() - 序列化 readObject()关键字 newStudent s = new Student();这段代码看着是不是特别熟悉,稍微学过一点Java的都写过类似的代码的,也是我们最初实例化对象的方式...
2018-06-08 17:01:58
379
原创 Java中String、StringBuffer、StringBuilder的区别
如果你学过 Java 你应该对 String 很熟悉,如果你学的不深,可能对后面两个都没有听说过吧。一个偶然机会在某个源码里面看到了 StringBuilder 这个类,一百度,别人写的攻略都是零几年写的了,知识储备差了十年。如果你使用过,那么恭喜你,你在Java性能优化上走出了第一步。在上一篇文章聊一聊String那些事情中,我提到过 String 是一个被申明为 final class,所...
2018-05-25 17:56:24
339
原创 聊一聊String那些事情
消失了一段时间,也不知道在远方的电脑面前是否有人惦记着我。–pluto在Java里面String肯定是最常用的数据类型没有之一,但是很多人真的了解String这个类吗?String类是一个final修饰的,这表明String是一个不能被继承的类。我当初还傻乎乎想过要继承String,编译器报错,网上查了一查才发现String是fianl修饰,如果当时小手一点看一看,我自己就可以节省一下上网...
2018-05-19 11:27:40
301
原创 昨天是五四青年节
日子总是过得很快,时间感觉太少,满满的全是紧迫感。愿我们每个人的努力都能得到自己想要的回报,而不是仅仅只被自己感动。昨天是五四青年节,可能是在群里的大佬接触多了,导致经常忘记自己的学生身份。学校举办了一场盛大的“青春典范”优秀学子的颁奖仪式。不看不知道,一看吓一跳。各种全国XXX比赛一等奖、二等奖(冠军、亚军、金奖、银奖),真的把我给刺激到了,原来自己身边还有这么多优秀人物。尤其是那些一个学院...
2018-05-05 10:38:05
537
原创 读书总结
在学校的日子过得很快,不知不觉又过了一周了,本来打算五一第一天就写了,结果拖到现在才写。没做项目,遇不见什么问题的,那就聊聊自己最近都看了一些什么书吧。深入理解Java虚拟机这是一本很多大牛都推荐的一本好书,也是Java进阶的必备书籍。这本书基于JDK1.7来讲解的和JDK1.8略有出入。这本书从我辞职回来就陆陆续续的开始看了,到现在已经完整的看过一遍了。这本书的知识点通俗易懂,理解起来非...
2018-05-01 11:08:35
630
原创 两场在线笔试的反思和总结
上周参加了两次在线笔试:爱奇艺和美团,都选择的后台方向,趁着还有一些零碎的记忆,写一写自己关于这两场在线笔试的总结。爱奇艺爱奇艺的在线笔试时间是2.19号19.00-21.00,总共两个小时的时间,20道选择题和3道编程题。说说这个过程吧,先做20道选择题,都是问了一些比较基础的知识,整体感觉中等难度,刷过一些的题的人应该都能轻松的回答上的。说说3道编程题吧,我只有第二道题的通过率为1...
2018-04-23 10:37:22
524
原创 谈谈==和equals()那些事情
一转眼好几天都没有写些什么东西了,今天正好周末,我们就聊聊==和equals使用时的那些事情吧。==和equals的区别是什么?有一点Java基础的人都会回答,==是基于内存地址的比较,equals()是基于对象内容的比较。但事情就真的就这么简单吗? 上一段测试代码public class Animal { public String name; public ...
2018-04-14 11:08:38
400
1
原创 基于Java8的抽象类和接口的区别
抽象类和接口有什么区别?这是一个出现频率非常高的问题,也是很容易忽略的问题。很多人可以凭借强悍的实战经验总结出来,但这种总结往往带有一些不完美。相同点:都不能被实例化。 不同点:1.接口都是抽象方法,抽象类可以拥有方法实体。2.类只能单继承(extends),但是接口可以多继承(extends)。3.抽象类可以拥有各种数据类型,接口数据只能是静态(static)的常量(final)。我相...
2018-04-09 11:52:04
1280
原创 基于Java8的ArrayList常用方法详解
在Java里面ArrayList算得上是一个常用的数据结构,同时也是一个线程不安全的数据结构。构造函数 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } public ArrayList(int initialCapacity) { ...
2018-04-02 17:40:37
1123
原创 浅谈Java8的HashMap的扩容策略
PS:本文基于JDK8的源码进行分析前几天看到一个问题HashMap是先扩容后插入还是先插入后扩容?这样选取的优势是什么?,恰好自己最近在看了一下HashMap源码,答案是:先插入后扩容。对后面一个问题感觉有点懵我刚开始想的是,如果先增加数据总量,万一数据还没有完全写入,就被读取那就就是读取到脏数据(多线程并发读取写入)。又一想,HashMap本来就是线程不安全的,并发用HashMap的简...
2018-03-30 11:46:42
6399
5
原创 Java之面向对象概述
初学Java的时候看过一个视频,视频中的老师说过这么一段话:对于那些拥有多年开发经验的开发者来说,怎么衡量彼此之间的能力?或者说怎么进行一个能力比较?开发者的能力这是一个很难定义的问题,事实上也无法给出衡量的标准,如果真的存在这么一种标准,唯一的可能就是对面向对象的理解深度了。刚开始入门学习的我,自然无法体会这段话的深意,但是现在回头再看这段话,确实有一定的道理。对面向对象理解深的一定开发能力...
2018-03-29 11:37:32
245
原创 Java三大特性之多态
Java三大特性:封装,继承,多态。请记住这三个词语,重要的事情说三遍。封装和继承查看我之前的文章。Java三大特性之封装Java三大特性之继承其实不是很想写多态的,自认为能力不够,无法解释清楚多态优越性,或者说为什么Java会有这种特性能做什么的,对于初学者来说,Java三大特性好像体现不出什么优势的。但我还是厚着脸皮写了,三大特性需要写完的,不能半途而废。什么是...
2018-03-26 12:04:27
412
原创 Java三大特性之继承
Java三大特性:封装,继承,多态。记住这个三个关键词。每次我都要强调。这篇文章讲继承。封装、多态可以查看其余两篇文章。Java三大特性之封装Java三大特性之多态什么是继承?通俗一点讲,子类拥有父类的部分特性,这个特性包含数据结构和方法。 上一组代码public class Animal { public String name; public Stri...
2018-03-21 18:55:58
439
原创 Java三大特性之封装
Java三大特性:封装,继承,多态。 请记住这三个关键词,只要你不放弃学Java,这三个关键字就会一直伴随你整个Java学习过程。今天我就先讲讲封装,继承和多态可以查看我其余两篇文章。Java三大特性之继承Java三大特性之多态Java是一个面向对象语言,这个是基础也是核心,如果你不知道这个概念,那么请点击右上角的×,出门右转。 什么是封装?对调用者隐藏...
2018-03-19 14:18:02
312
原创 Java简单爬虫实现
最近闲来无事,就自己写了一个爬虫程序。可能有人会好奇,为什么不用python写呢?答案是:傲娇。我就傲娇的用java写了,怎么滴!其实我是用python写过的,不是说了闲来无事的嘛,用java写写又怎么滴? 首先说说爬虫思路: 1.找到需要爬取的网页。 2.分析网页上面的html元素 3.爬取解析自己想要的信息 话不多说,直接开干。 我觉得大家应该都比较关心房价的,那我们就从链家爬取房...
2018-03-13 21:30:49
710
原创 maven打包成可执行jar,本地依赖包打包失败的问题
上一篇我们讲了,怎么用javadoc和Doclet配合解析自己想要的注释(链接)。既然是一个工具,自然就要生成可执行的jar包。这貌似是一个很合理的要求,然后坑就来了。 我上篇说的是直接复制的tool.jar到lib包下面,添加进资源包就可以了,但是maven项目肯定不能这样做的,这样不规范。我在网上去搜索了tools.jar的依赖教程。 <dependency> ...
2018-02-28 17:28:43
7590
原创 javadoc和Doclet使用的一些事情
最近项目有要求,需要我把方法上面的文档注释导出,给测试那边阅读。 首先说说Java里面的注释,一共有三种。1.//单行注释 2./* */区块注释,可以有多行 3./** */文档注释ps:上面那个不换行,不能正确显示。本文重点就在第三种:文档注释。说到文档注释,我们很自然的就想到了javadoc,这个官方提供的工具是相当好用,直接在命令行运行就可以生成html...
2018-02-25 17:13:35
3041
原创 关于Android文件下载路径的坑
最近做一个项目,对方提出了一个要求APP能自动检测更新,我当时想APP自动检测更新,这个问题很简单嘛,于是乎我就开始做了。实现思路很简单的,就是检测本地的版本号和服务器上面的版本号是否一致,如果本地的版本号小于服务器上面的版本号,就弹出一个提示框,提示更新。因为这是我第一个项目,也是第一次做这么一个功能,就上网搜索了一下,不得不说,就这么一个功能,网上有很多的实现方式的,具体可以自行搜索...
2017-05-07 11:13:19
13952
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人