自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangxing

乾坤未定,谁主沉浮,厚积薄发待有时,一揽九天捣黄龙

  • 博客(242)
  • 资源 (21)
  • 论坛 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 git reflog让程序猿有后悔药可吃

目录前言git reflog 使用场景git log与git reflog的区别如何在git中卖后悔药前言世人皆说,这个世界上是没有后悔药可吃的!所以在做某件事之前,需要考虑到事情的后果!但是今天笔者想说的是,在git维护的代码版本的世界里,后悔药常有,卖后悔药的人却不常有!今天笔者就分享下如何做一个卖后悔药的人。git reflog 使用场景很多时候,我们需要回退代码版本,但是可能在操作的过程中,我们误回退了些许,或者删除了些许,那么如何还原之前回退的或删除的commitId呢?这个时候gi

2020-11-18 16:35:46 48

原创 经典算法之冒泡算法

前言冒泡算法是一种经典的排序算法,在大学起初学习C语言的时候,冒泡算法是笔者接触编程的第一个算法。冒泡,顾名思义就是轻(小)的往上冒,重(大)的往下沉,也称鸡尾酒算法。算法解析首先我们需要确立两层嵌套for循环,第一层for循环主要控制总体循环的趟数,第二层for循环主要是比对相邻的两个数,运用CAS的思路将每一趟的第二层for循环执行完成,就会将一个最大的数沉到最下面。来张图,理解效果会更佳!算法实战public class BubbleSort { public static

2020-11-20 18:11:54 72

原创 Dockerfile之最佳实践

文章目录Docker 简介Dockerfile 最佳实践Dockerfile 是什么?Dockerfile 命令详解Dockerfile 最优编写策略Docker 简介Docker 是一个开源,轻量级的应用容器引擎,基于 Golang 语言开发,用于创建、管理和编排容器。与 VMware 虚拟机相比,Docker 使用容器承载应用程序,而不使用操作系统,所以它的开销很少,性能很高。但是 Docker 对应用程序的隔离不如虚拟机彻底,所以它并不能完全取代 VMware。Docker 运用 Dockerfi

2020-11-14 13:37:26 54

原创 git commit --amend如何合并多个commitId

前言很多时候,由于自己的疏忽,把该提交的文件没有提交上去,但是考虑到后期代码的code review,最好是一个功能对应一个commitId,这是最理想的状态。那么问题来了?如何合并多个commitId呢?如何合并多个commitId当然笔者在之前的Git专栏文章里面已经介绍了相关的方法,相信看了笔者的Git专栏后,就很容易知道其中的两种方案;第一种:git reset;第二种:git rebase;今天笔者再介绍另一种方案:git commit --amend。首先对于某个功能来个不完整的

2020-11-13 22:55:38 104

原创 Maven依赖优化

前言先谈谈自身的项目经验,每次在接手二次开发项目的时候,笔者都能发现一个明显却又广泛被忽视的问题:maven依赖很杂乱,甚至多有冗余的嫌疑;虽然说对于项目的运行没有什么障碍,但是对于后期的jar依赖的版本维护会很痛苦的,每次改升级某个JAR包版本的时候,还需要全局搜索并依次修改其版本。可想而知,这种方法是最笨且失误率是最大的。Maven依赖优化排除无用重复的基础JAR包每个jar包可能会依赖多个基础jar包,在工程中可能存在不同的jar包的基础jar相互重复,也就是我们经常见到的omitted

2020-11-11 16:21:19 73

原创 Mysql获取最新记录

前言怎么获取Mysql表中同一标识(flag)下多条记录的最新记录呢?这里的宗旨是先order by time desc,其结构作为一个父表,然后再在父表中进行group by flag;这里值得注意的是,如果order by 与 group by在同一维度中的话,group by应该放在order by之前。SQL示例对于多张维表 select task.* from task_info task left join( select *

2020-10-30 14:48:35 2609 6

原创 老生常谈的ArrayList与LinkedList

ArrayList与LinkedList再常见不过的数据结构了,也是平常面试中极易遇到的面试题之一,如果还没搞清楚的,赶紧过来看下星哥的解读,撸掉它!就是干!小王最近刚被公司裁员了,迫于生计,一天也不敢消停,这不魔鬼面试周已经拉开了帷幕。面试官:你能说说ArrayList与LinkedList的区别吗?小王:ArrayList底层是基于动态数组的,而LinkedList底层是基于双向链表的。面试官:那你能分别说说两者分别适合什么场景使用?小王:好的。ArrayLsit适用于随机查询...

2020-10-16 16:07:27 97

原创 谁在贩卖焦虑?

前天发表的《30+的程序猿,路在何方》热度暴涨,一时炸开了锅,这个结局却是我始料未及的。从评论区络绎不绝的回复,字里行间无不感同身受,表现出一种隐隐的焦虑。谁在贩卖大龄程序猿的焦虑?又是谁在贩卖成年人的焦虑?当今局势羸弱,疫情肆虐,米国夹逼,国内乃至世界经济低迷下行,像我等这般千千万万普通老百姓能够苟活于世,焦虑实属在所难免。昨天有个粉丝私信我,“星哥,我被公司裁员了,到现在还没找到工作,怎么搞啊?”。语气分外焦灼却又万般无奈,姑且来个推己及人的设想:一旦工作丢了,家里老婆孩子等着养,房贷车贷指

2020-10-15 16:17:26 117 1

原创 岁月如白驹过隙,抓住了你就是黑马

依稀记得,那是个炎热的夏天,一个身穿黑色短袖,戴着一副黑色镜框眼镜的少年,被公司HR领到我面前,略显得有些怯羞;已记不清我当时又在研究什么黑科技,想着来了,咱就好好给人面试,毕竟大热天的出个门,跟蒸桑拿根本没有什么两样。面试过程中,我大概问了些关于Java基础知识及项目实践中所遇到的棘手问题的处理方案,当时看来面试少年面试情况还算满意。我顺理成章的跟老板如是说,“X总,这个相比之前的面试者,回答的稍微好些,总体感觉还行!”X总风风火火的跑过去跟少年说,“明天你就过来上班吧”;X总向来豪横惯了,薪资一

2020-10-13 15:57:20 298 4

原创 30+的程序猿,路在何方?

​最近,由于岗位招聘要求,电话面试了许多程序猿,他们的年龄大都分布在22-25岁之间,多么好的黄金敲码阶段啊,不禁地生出一丝丝羡慕。面试期间,大概算了下,估计有个40+份的简历吧,出于工作稳定性考虑,我还是倾向于选择年龄稍微大的程序猿。这里不是有意鄙视年纪较轻的程序猿,这完全取决于岗位jd要求,而且我相信,年轻者更有活力,更富有创造力。当捕捉到一个32岁的求职者,面试职位:高级开发工程师。我心里一阵欢喜,便毫无吝啬的拨通了对方的电话,电话大抵嘟嘟嘟的连续了50秒,接电话的是一个声音暗沉的中年男人。中

2020-10-12 15:38:46 3531 27

原创 葵花宝典之Git All-in

文章目录前言Git 分区Git 流程规范分支的创建项目的分支规范开发中需要注意的点Git 的棘手场景分析拉取最新主干代码,进行功能迭代或 bug 修复如何重命名远程分支功能开发一半,临时修复线上紧急 bug如何挑拣别人的 commit如何回退版本如何撤销某一个 commit如何合并分支前言Git 是一款优秀的分布式版本控制工具,对于大型项目的多人开发场景,Git 能够基于粗粒度功能 branch 或更细力度的 commitId 来进行版本控制。总而言之,学好 Git,老板再也不用担心代码被覆盖呢!给我一

2020-10-11 20:09:50 409

原创 如何自定义注解实现拦截

1.前言在springmvc及springboot中,注解随处可见,我们几乎每天都在跟他打交道;那么如何自定义注解呢?自定义注解会不会更香呢2.Java注解理解Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然

2020-09-18 15:40:12 273

原创 .gitignore过滤配置无效

1 .gitignore是什么?通俗来讲,.gitignore是基于Git控制版本用来过滤指定每次提交的文件或文件夹的配置文本;一旦配置在.gitinnore中,后续提交就配置的文件或文件夹中的代码,系统就不显示更新;一般地,.gitignore会过滤一些自动生成的配置类。2 .gitignore样式仅供参考HELP.mdtarget/*/target/!.mvn/wrapper/maven-wrapper.jar!**/src/main/**!**/src/test/**###

2020-09-12 17:05:54 57

原创 Java8屌炸天的Stream用法

1.Stream简介Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时

2020-09-10 17:33:35 171

原创 oss多线程分片上传

1. 前言oss是阿里巴巴研发的分布式存储中间件,可以存储各种文件:图片,文档等;今天博主就oss多线程分片上传作个分享。2. 分片代码2.1 主线程代码 private static final long EACH_PART_SIZE = 2 * 1024 * 1024; // 创建InitiateMultipartUploadRequest对象 InitiateMultipartUploadRequest request = new Initia

2020-09-08 11:42:23 131

原创 docker一键安装mysql

1. 场景还原在传统的mysql安装教程中,惯用的方法就是去官网下载mysql zip或tar包,然后再去对应的系统手动进行安装;这一系列的操作甚是繁琐,一招不慎,很可能会安装失败。今天就docker安装mysql以单独的篇幅做个记录。2. 安装命令docker run --name some-mysql --net=host -e MYSQL_ROOT_PASSWORD=my-secret-pwd -d mysql:5.7或docker run --name some-mysql -p 3

2020-09-01 19:57:43 86

原创 史上最简单的springboot docker部署大法

1.创建一个简单的springboot应用@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})public class SpringbootwithdockerApplication { public static void main(String[] args) { SpringApplication.run(SpringbootwithdockerApplication.class, args

2020-08-28 15:56:28 166

原创 Java全局异常捕捉

1.场景还原 在项目开发中,对于各种异常都有不同的报错提示或策略,无疑对于用户或者开发来说,是一个很好的用户体验;如何在java定义一个全局异常捕捉呢?2.实现方案2.1 自定义一个业务异常类@Setter@Getterpublic class BizException extends RuntimeException { private static final long serialVersionUID = -6233506444097954612L; ...

2020-08-21 18:04:17 499

原创 MySQL单条insert语句,插入多条数据记录

1.场景分析 当一条sql语句中包含多个insert,且以分号隔开,对于不同的mysqlb版本,有的可以执行成功,有的却直接报错com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException2.实现方案

2020-08-17 17:47:29 143

原创 git 查看某commitId的提交内容

1.场景还原 在开发过程中,可能会对某次提交的commit的内容进行查看或进行代码确认,这个时候git的这个查看内容的命令就显示的格外重要。2.命令详解 要实现上述需求,可以运用一下两个git命令2.1 git show commitIdgit show commitId2.2 git log -p -ngit log -p -n这里的n表示提交的最近的次数;欢迎加入博主的Java博客党VIP群,群号:779015139;如果还有什么不懂的地方,可以私信博主,...

2020-08-16 15:38:25 1526

原创 SpringMVC中filter实现跨域请求

1.需求背景 如果在项目中有需要暴露某一接口给外部服务调用,那么对于web项目势必会出现跨域情况,那么如何解决这个跨域呢?2.实现方案i. CORSFilterpublic class CORSFilter implements Filter { private static final Logger logger = LoggerFactory.getLogger(CORSFilter.class); @Override public void init(F..

2020-07-27 15:49:51 213

原创 泛型的今生来世

1.什么是泛型? Java 泛型是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。2.为什么要用泛型?3.泛型的分类...

2020-07-01 14:46:33 107

原创 git reset及git revert撤销骚操作

1.命令应用场景 在开发的过程中,当发现有需要撤回的commit的时候,这两个命令就起到了关键作用,那么问题来了,git reset与git revert之间有什么区别?我们怎么在不同的场景更好的应用他们呢?2.两者的区别 先讲git reset, git reset可以将之前的多个commit回退到某次提交,等修改后需要git push -f 提交到远程,无形中,远程的多个commit合成了一个commit,那么这个操作有些骚呢?骚从何来?如果存在多个人开发的场景,或者前后端交...

2020-06-30 14:36:15 92

原创 java jar包如何指定程序执行入口

1.需求背景 很多时候,我们需要单独开发一个工具类方便特殊的操作;这个可以理解为工具开发,那么怎么指定jar包的启动类呢?2.实现方案i.将pom中打包形式改为jar <packaging>jar</packaging>ii.如图注意:MANIFEST.MF在src下iii.导出jar包ok,就这样点击jar包就可以执行指定的入口程序呢!...

2020-06-16 16:44:44 1077

原创 springboot 策略+工厂模式优化if..else..

1.策略接口public interface IStrategy { /** * 根据id获取对应的图表数据 * @param dispatchQuery */ <T> T getGraphData(DispatchQuery dispatchQuery);}2. 策略工厂@Componentpublic class StrategyFactory { /** * 关键功能 Spring 会自动将 EntSt

2020-05-18 15:52:26 498

原创 前后端分离全局跨域实现

@Configurationpublic class WebAppConfigurer extends WebMvcConfigurerAdapter { private static List ORIGINS = Arrays.asList("http://localhost:8080"); //改用过滤器CorsFilter 来配置跨域,由于Filter的位置是在Interceptor之前的,问题得到解决 @Bean public CorsFilter corsF.

2020-05-13 18:54:01 143

原创 【源码探索系列】Helllo!!! HashMap

面试官:你可以讲下hashmap的底层原理呢?被面试者:啥原理不原理?我上来就是一梭子,而且梭子穿梭的出神入化。面试官:行吧,稍等下,我让我们HR跟你聊下。各位看官,面试结果可否用脚趾头想想?哈哈…有道无术,可攻于术;有术无道,然止于术那就开始把,好好攻术!HashMap工作原理HashMap底层数据结构是数组+链表,当然jdk1.8后当链表长度大于8时候,链表会自动树化,转换成...

2020-04-02 21:23:57 152

原创 【源码探索系列】 modCount知多少?

很多面试官都会问modCount是啥?看了本文,我相信你可以解脱了1.modCount是什么?相信很多同学都会在List或hashMap近亲系列源码中都会看到这个modCount变量,简言之,从字面意思理解modCount,修改的次数。2.modCount的作用通常地,在集合源码中存在这个modCount变量时,基本上可以说明这个类是线程不安全的。这个变量在集合初始化的时候,就将mo...

2020-03-31 17:16:21 883

原创 分分钟搞定面试官必问的Git

1.Git简介Git 是一款优秀的分布式版本控制工具,是目前支持多人同时开发最six的工具,记住没有之一,比之SVN,绝对是遥遥领先,母庸置疑。2.Git分区2.1 为什么要搞清楚Git分区呢?谈及Git分区,其实很多开发者脑袋都是懵逼状态?我在哪?我是谁?对于一些对git掌握不熟练的同学,这个疑问是普遍存在的;或者当面试官提问,请问你了解git的分区么?那么是时候一次性搞清楚git是如何...

2020-03-21 20:29:57 457

原创 git --cached 暂存区操作

1.操作场景 当你将修改的文件提交到暂存区的时候,这时你发现之前的提交有问题,想把之前的提交在暂存区的文件撤回来,或者需要看看之前提交暂存区与工作区的不一样,这个时候 --cached命令就起作用呢。2.命令解释①查询提交前后文件的具体差异git diff --cached②撤销之前在暂存区的文件git rm --cached hello.java...

2020-03-20 18:06:15 386

原创 线程池的拆分

线程池的拆分可根据具体的业务进行拆分,每个线程执行的业务逻辑应该是一样且同步执行,talk is cheap, show you codeint columns = 10;ExecutorService pool = Executors.newFixedThreadPool(columns);final CountDownLatch countDownLatch = new Cou...

2020-01-22 14:43:39 262

原创 极光推送集成解决方案

1. 极光推送集成背景 最近在研究推送和长连接,研究了几家这方面的平台之后,最后综合考虑选择了极光推送。长连接保活一直是一个大问题,尤其的android方面,最近谷歌公司的几次更新,android应用保活是越来越难做,android方面的推送的到达率更是惨不忍睹。国内android大环境大都以云端和客户端保持长连接的方式实现的。本文主要是说一下极光推送普通集成和极光推送厂商通道的集成...

2020-01-06 10:47:29 774

原创 Java Mail发送邮件

①pom依赖<dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.2</version> </dependency>②代码实现 @Ov...

2019-12-25 17:52:59 139

原创 线程池异步消费

①新建一个重试线程 class RetryThread implements Callable<JSONArray> { String appType; String formInstId; String token; public RetryThread(String appType, String form...

2019-12-23 17:06:02 253

原创 git stash 保存及恢复当前工作进度

应用场景: 当你正在开发某新功能时,某一紧急bug需要修复,这时你不能让之前的工作量白做,然后就可以使用git stash保存当前的工作进度,等bug修复完成,再恢复当前的进度继续开发即可命令使用:1. git stash 将当前的代码保存到缓存中2.git stash save "stash msg" 保存当前的代码,并加上注释3.git stash list ...

2019-11-29 15:14:49 151

原创 git 删除远程分支

git push origin --delete <branchName>

2019-11-14 10:01:27 118

原创 golang中jinja动态模板渲染

1.jinja模板如何传值 ①(key-value)键值对的方式单值传入,{{ key }} => value ②以对象的形式传入:{{ user.username}} =>username ③以map的形式传入:vlaue可以传入list,然后迭代渲染2.jinja模板如何渲染 在golang 中可以引入pongo2库,https://githu...

2019-05-13 20:10:04 1589

原创 golang dep安装

1.dep简介 dep是Go的依赖管理工具,它需要Go 1.9或更新版本才能编译。2.安装步骤①ubunut中fetch dep包go get -u github.com/golang/dep/cmd/dep②dep默认在$GOPATH/bin下,然后将dep命令剪切到/usr/binsudo mv dep /usr/bin③检测是否安装成功dep...

2019-04-24 16:50:00 1191

原创 git checkout撤销本地修改

1.使用场景 在开发的过程中,可能因为手误或者有些文件不想提交,这是需要git命令撤销相关文件2.使用方法① 撤销本地所有的更改git checkout .② 撤销指定的文件git checkout -- file...

2019-04-24 16:31:15 3357

原创 ubuntu golang 环境安装

1.golang tar下载 选择适合自己系统的golang 包,下载链接:https://golang.org/dl/2.golang环境配置vim /etc/profileexport GOROOT=/usr/local/goexport GOPATH=/home/admin/goprojexport GOBIN=$GOPATH/binexport PATH...

2019-04-18 15:22:34 140

BmobDataAysc|BmobDataAysc.rar

BmobDataAysc

2016-10-06

sourceTree

代码托管工具

2017-07-05

MD5签名生成器

2017-04-11

progressDialogDemo

自定义progressDialog

2016-12-21

webviewCacheDemo

webview的缓存,内存泄漏的处理及加载

2016-12-18

实现app后台更新进度

实现app后台更新进度

2016-12-14

android6.0权限适配

android6.0权限适配

2016-12-08

日期选择器

日期选择控件

2016-11-30

自定义设置刻度控件

自定义设置刻度控件

2016-11-27

MaterialRefreshLayout

这是一种新的上拉刷新,下拉加载更多的控件

2016-10-25

listview的自动显示与隐藏

toolbar的自动显示与隐藏

2016-10-23

Zxing jar包

这是一个zxing的架包

2016-10-19

Zxing二维码生成与扫描

二维码生成与识别的demo

2016-10-19

百度key的shh1生成工具

这是一个自动生成百度地图的SHH1值的工具

2016-10-17

baiduMap1Demo

百度地图Demo,涵括了基础地图,定位,检索等功能

2016-10-17

GsonTrainDemo

这是一个利用Gson解析json数据的Demo

2016-10-12

gson开源架包

Gson开源架包

2016-10-12

JsonWeather

json解析天气信息

2016-10-11

HiJson.exe

格式化json数据的工具

2016-10-11

ShareSDKDemo

这是一个一键分享至各个平台大的demo

2016-10-09

自定义View

自定义View

2016-09-29

eagle-zhang的留言板

发表于 2020-01-02 最后回复 2020-01-02

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除