自定义博客皮肤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

静心思考,谦逊做人

原创 泛型的今生来世

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

2020-07-01 14:46:33 46 0

原创 git 撤销骚操作

1.命令应用场景 在开发的过程中,当发现有需要撤回的commit的时候,这两个命令就起到了关键作用,那么问题来了,git reset与git revert之间有什么区别?我们怎么在不同的场景更好的应用他们呢? 2.两者的区别 先讲git reset, git reset可以将之前的多...

2020-06-30 14:36:15 22 0

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

1.需求背景 很多时候,我们需要单独开发一个工具类方便特殊的操作;这个可以理解为工具开发,那么怎么指定jar包的启动类呢? 2.实现方案 i.将pom中打包形式改为jar <packaging>jar</packaging> ii.如图 注意:MA...

2020-06-16 16:44:44 152 0

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

1.策略接口 public interface IStrategy { /** * 根据id获取对应的图表数据 * @param dispatchQuery */ <T> T getGraphData(DispatchQuery di...

2020-05-18 15:52:26 202 0

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

@Configuration public class WebAppConfigurer extends WebMvcConfigurerAdapter { private static List ORIGINS = Arrays.asList("http://localhos...

2020-05-13 18:54:01 56 0

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

面试官:你可以讲下hashmap的底层原理呢? 被面试者:啥原理不原理?我上来就是一梭子,而且梭子穿梭的出神入化。 面试官:行吧,稍等下,我让我们HR跟你聊下。 各位看官,面试结果可否用脚趾头想想?哈哈… 有道无术,可攻于术;有术无道,然止于术 那就开始把,好好攻术! HashMap工作原理 H...

2020-04-02 21:23:57 111 0

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

很多面试官都会问modCount是啥?看了本文,我相信你可以解脱了 1.modCount是什么? 相信很多同学都会在List或hashMap近亲系列源码中都会看到这个modCount变量,简言之,从字面意思理解modCount,修改的次数。 2.modCount的作用 通常地,在集合源码中存在这...

2020-03-31 17:16:21 837 0

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

1.Git简介 Git 是一款优秀的分布式版本控制工具,是目前支持多人同时开发最six的工具,记住没有之一,比之SVN,绝对是遥遥领先,母庸置疑。 2.Git分区 2.1 为什么要搞清楚Git分区呢? 谈及Git分区,其实很多开发者脑袋都是懵逼状态?我在哪?我是谁?对于一些对git掌握不熟练的同学...

2020-03-21 20:29:57 315 0

原创 git --cached 暂存区操作

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

2020-03-20 18:06:15 174 0

原创 线程池的拆分

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

2020-01-22 14:43:39 173 0

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

1. 极光推送集成背景 最近在研究推送和长连接,研究了几家这方面的平台之后,最后综合考虑选择了极光推送。长连接保活一直是一个大问题,尤其的android方面,最近谷歌公司的几次更新,android应用保活是越来越难做,android方面的推送的到达率更是惨不忍睹。国内android大环境大...

2020-01-06 10:47:29 450 0

原创 Java Mail发送邮件

①pom依赖 <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.2</v...

2019-12-25 17:52:59 114 0

原创 线程池异步消费

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

2019-12-23 17:06:02 201 0

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

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

2019-11-29 15:14:49 100 0

原创 git 删除远程分支

git push origin --delete <branchName>

2019-11-14 10:01:27 70 0

原创 golang中jinja动态模板渲染

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

2019-05-13 20:10:04 980 0

原创 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命令剪切到/u...

2019-04-24 16:50:00 893 0

原创 git撤销本地修改

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

2019-04-24 16:31:15 2076 0

原创 ubuntu golang 环境安装

1.golang tar下载 选择适合自己系统的golang 包,下载链接:https://golang.org/dl/ 2.golang环境配置 vim /etc/profile export GOROOT=/usr/local/go export GOPATH=/home/a...

2019-04-18 15:22:34 104 0

原创 configmap的创建及yaml渲染

1.configmap的创建 ①存储文件 kubectl create configmap cm-name --from-file=xx.pem ②存储key-value kubectl create configmap cm-name --from-literal=ip='...

2019-04-17 15:32:38 1223 0

原创 golang RSA公钥密钥生成及加解密

1.公钥私钥的应用 对于数据传输安全这块,加密是必要的;首先后端生成公钥私钥对及索引key,继而存储到相应的缓存库;然后将公钥和索引key返回给前端,前端通过公钥加密需要传输的明文;最后将密文和索引key传递给后端,后端通过索引key在缓存库中匹配相应的私钥,通过对应的私钥解密前端传来的密文...

2019-04-11 10:51:20 3305 0

原创 JVM GC收集器-Serial,Parallel,CMS,G1

1.Serial(串行收集器) Serial收集器是一个单线程的收集器,但它的“单线程”的意义并不仅仅是说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程(stop the world),直到它收集结束。CPU利用率最高,停顿时...

2019-03-07 16:53:34 218 0

原创 git rebase处理多次commit的合并

1.使用背景 在开发中,开发者可能对于某个功能的代码提交了多次,当需要将多个提交的commit合成一个commit的时候,就需要用到git rebase,俗称"变基" 2.实现方案 ①git log 查看多次提交历史 git log 现在需要将最近3次提交合...

2019-03-02 19:38:26 2506 0

原创 JVM垃圾回收机制

1.什么是垃圾回收机制       垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制。 2.什么时候进行垃圾回收 ①会在cpu空闲的时候自动进行回收   ②在堆内存存储满了之后...

2019-02-26 11:51:27 5922 0

原创 git cherry-pick冲突解决

1.git cherry-pick应用场景      当团队合作开发的过程中,线上环境master可能要合成dev中的部分功能,也可以理解为挑拣合成,这时候git cherry-pick就派上用场了 git cherry-pick commitId 2.冲突解决方案 ①切换到dev环境 ...

2019-02-20 15:21:48 8466 1

原创 如何对git commit内容进行撤销

1.查看git提交历史,并选取自己要返回的commitId git log 2.根据commitId进行撤销 git reset --hard commitId 3.返回到上个版本 git reset --hard HEAD^ 4.返回到n个版本,n为正整数 git re...

2019-02-19 18:03:43 3357 0

原创 idea中push代码git冲突解决

1.冲突出现情景      在团队合作开发的过程中,一处代码可能多人修改;例如当A更改代码后提交了,B在没有实时拉取代码的基础上进行同一文件的修改,然后进行提交,届时push会失败,需要手动解决冲突才行。 2.冲突解决方案 ①冲突出现后,一直merge 最左边的方框表示自己本地...

2019-02-19 17:39:04 2370 0

原创 gitlab Runner持续化自动部署

1.环境必备 ① gitlab的安装 ② docker的安装 2.gitlab、gitlab-ci以及gitlab-runner关联 3.持续化自动部署 ① docker安装gitlab Runner docker run -d --name gitlab-runner --re...

2019-02-15 16:51:15 534 0

原创 深度剖析之ThreadLocal

1.ThreadLocal是什么?     ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本变量做一个映射,各个线程之间的变量互不干扰,从而实现数据隔离的效果;在高并发场景下,可以实现无状态的调用,适用于各个线程依赖不同的变量值完成相应操作的场景,Thre...

2019-02-15 11:22:17 163 0

原创 Java线程池剖析

1.线程池的作用    线程池作用就是限制系统中执行线程的数量。根据系统的环境配置情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费系统资源,多了造成系统拥挤繁忙,效率不高。运用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列中取最前面的任务开始执行。若队列中没有等待...

2019-02-14 15:30:55 100 0

原创 centos7安装gitlab

1.gitlab 介绍      GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。与Github类似,GitLab能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并...

2019-02-01 15:20:30 134 0

原创 docker安装指南

1.docker简介       Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在GitHub...

2019-01-30 16:14:11 149 0

原创 Spring Framework 5 的新特性

1.相关介绍       Spring 5 于 2017 年 9 月发布了通用版本 (GA),它标志着自 2013 年 12 月以来第一个主要 Spring Framework 版本。它提供了一些人们期待已久的改进,还采用了一种全新的编程范例,以反应式宣言中陈述的反应式原则为基础。这个版本是很长...

2019-01-28 14:54:30 992 0

原创 oh-my-zsh安装

oh-my-zsh是一款实用又舒适的命令行工具,oh-my-zsh安装之前需要安装zsh 1.安装zsh: ① sudo apt-get install zsh 安装zsh ② zsh --version 验证zsh是否安装成功 ③ sudo chsh  -s  $(which zsh) ...

2019-01-18 11:21:07 308 0

原创 elasticsearch之全文搜索

1.场景还原    近期,笔者项目中需要通过关键字来搜索与之相关的数据,es的全文搜索终于派上用场了! 2.准备步骤 ①原理分析:      es主要采用倒排索引,即每一个文档都对应一个ID。倒排索引会按照指定语法对每一个文档进行分词,然后维护一张表,列举所有文档中出现的terms以及它们...

2018-11-21 20:30:39 341 0

原创 Es集群搭建及日志脚本

1.场景还原     近日,笔者项目中需要做系统化的日志采集,笔者灵机一动,elk最好不过;今天笔者就es集群搭建作此分享 2.实现方案 ①笔者集成的是elasticsearch-2.4.6,下载对应的tar包 ②集群配置 节点1配置: cluster.name: elasticse...

2018-11-02 19:58:16 410 0

原创 jenkins启动脚本

1.需求分析    笔者项目jenkins+svn实现了自动打包及自动部署,但是部署之前先得kill原来的进程,显示不是很智能,所以笔者再次分享下自关闭原来进程,启动新服务的脚本 2.脚本分享 #!/bin/sh ## 应用选项 source /etc/profile export ...

2018-11-01 21:05:36 847 0

原创 jenkins+svn自动构建项目

1.场景还原      随着微服务架构的日益盛行,自动化打包构建及部署,势在必行!今天,笔者就jenkins+svn自动化构建及部署做个相关的分享; 2.实现方案 ①jenkins官网下载jenkins war包 ②安装jdk,并在jenkins中配置jdk ③安装maven,并...

2018-10-31 20:32:09 8853 0

原创 nginx配置优化

1.场景还原     笔者在最近生产环境中,线上的nginx出现了负载均衡失败,抛出500服务器内部错误;今天就nginx配置优化做个分享。 2.解决方案 ①查询nginx当前连接数 netstat -nat | grep ":443"| grep EST | wc ...

2018-10-19 16:39:51 678 2

原创 mqtt实现前后端实时交互

1.场景还原     笔者在上篇已经介绍过mqtt相关介绍,教程链接:https://blog.csdn.net/zhangxing52077/article/details/80568244,今天笔者就实际项目中的前后端实时交互作个分享 2.设计思路    首先,后端在工程中配置需要订阅的...

2018-09-25 11:13:55 6813 1

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