自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 写在开通CSDN博客的今天

从事JAVA开发马上满四年,一直没有系统性的整理和总结工作内容和技术点的习惯,从这篇文章起,开始记录自己的技术职业历程;我相信七年定律,如果我把工作相关的精力全身心的投入,在第七年可以达到行业顶尖的水准;经历过这几年的书写代码和处理问题的经验,接下来是整理总结再吸收和继续更专心学习的三年;三年后See U,Mike。

2017-06-06 17:05:01 431

原创 死锁的问题分析和解决策略

死锁的问题分析、方案实例、解决策略

2022-08-30 16:55:15 118

原创 持久化数据&缓存数据双写一致性

背景缓存中数据更新一般有两个入口,数据缓存过期,数据在访问时发现缓存中无数据时重新查库然后更新至缓存;场景和问题等同于缓存查询,相关solution参考“缓存数据查询的注意事项”;缓存未过期,数据库数据有变动主动更新至缓存;比较常见的场景;也即为双写的概念:有新版本的数据需要同时写入持久化层和缓存层中;问题点数据一致性是指数据库持久化数据与高速缓存库中缓存数据的...

2019-03-26 15:47:55 665

原创 缓存数据查询-简述

背景缓存数据查询流程:simple_flow_A:Get+Cahce查询缓存是否有数据;若有直接返回;如无则查询数据库是否有数据;如无直接返回;若有则将查库数据更新至缓存;返回最新数据;问题来源高并发;要保证缓存机制能在高并发的情况下照常执行;异常请求对缓存机制的影响;异常:业务范围之外的请求参数;需要过滤或处理异常请求,防止跳过缓存,使缓存机制失效;问...

2019-03-26 12:28:56 632 1

原创 分布式锁-Redis-简述

背景:分布式锁的背景(应用场景&需求&要解决的问题);带来的挑战;分布式的实现方式;(常见的三种);分布式锁的要求:功能要求互斥;基本要求,即同一时间最多只能有一个客户端获取锁;也可以在互斥的前提现通过代码实现重入锁;For_Redis:setNX;容错;分布式锁所依赖的服务需要有容错性,保证服务的健壮性;For_Redis:RedLo...

2019-03-26 12:28:11 364

原创 Git-方案篇-项目版本管理方案-简单示例

前言我们都在口口称道Git给我们做版本控制带来的好处:1、底层文件存储系统为版本切换时带来的快捷性;2、去中心化为版本库的安全性提供了更高的水准,并拥有了离线使用的便利;在以上两项为基础下,分支的优势被放大,本文记录当前的Git使用分支管理方案;示例假如项目组有三明后端开发工程师,Mike,Jary,Amy;管理思路在实际项目中,版本控制的核心内容可分为:个人版本的管理、个人...

2018-10-27 11:37:41 1761 2

原创 Git-总结篇-给我们带来了什么?

前言  最初个人并不认为有必要专门准备一片文章记录Git的优势或者如题“给我们带来了什么”这样的主体,但是想到这是Git相关学习和使用的总结,所以决定单独记录一篇文章; 本文仅记录本人使用学习Git中实际接触过的范围,并且会持续更新;Smart的本源 smart;有道翻译:聪明的;巧妙的;敏捷的;厉害的;潇洒的;剧烈的;时髦的;  在使用Git恰好一年的时间节点...

2018-07-29 14:05:27 276

转载 Martin Fowler关于microservices(微服务)的原文和翻译

原文链接: https://martinfowler.com/articles/microservices.html 翻译链接:(巨赞) http://blog.cuicc.com/blog/2015/07/22/microservices/#进化式设计

2018-01-29 18:07:56 3183 1

原创 JVM运行时数据区

简介运行时数据区(Runtime Data Area)是保存JVM线程示例执行过程中数据的区域; 包括要加载的类文件信息、线程执行过程中的暂存数据、线程执行的位置、运行时数据区中分为以下个区域 - 虚拟机栈(VM stack) - 本地方法栈(native method stack) - 程序计数器(program counter register) - 堆(heap) - 方法区(

2017-11-17 17:47:31 298

原创 关于小程序&VUE上传文件的java处理方法

简述相关文章有很多,在此记录一下用起来个人一直在用的一种方式:使用servlet来独立处理文件上传,获取前端的文件之后向CDN同步,最后返回文件的最终相对路径,由前端访问CDN服务来展示图片; 使用servlet的方便性在于可以跟项目实现零耦合,方便快速移植。好了,废话不多说,直接上代码,注释都在代码里了;java处理servletpackage com.TVMall.web.filter;

2017-11-14 10:20:57 1991

原创 时间段预约库存功能的实现

时间段库存模块 预约 1、同一产品分时间段进行购买; 2、同产品有库存的概念:同产品同时间点的预约数量不能超过产品库存数量; 3、预约时间段需符合指定规则; 4、时间段分为进行中和未进行: 5、未进行的时间段空留出【固定分钟(设置时间)】整备时间; 6、整备:进行中的时间段未进入回收流程正常空留出整备时间;已进入回收流程的产品

2017-10-20 00:26:42 3854

原创 Git-理论篇-分支的交互

本地&远程跟本地版本库和远程版本库类似,分支也区分本地分支和远程分支两种。本地分支:本地版本库内的若干分支即称之为本地分支;远程分支远程版本库内的若干分支称之为远程分支; 甚至于我们可以将本地不同版本库内的分支设置为当前版本库内分支的远程分支; 本篇负责综述整理分支的交互;分支的交互示意图关联关系本地分支和远程分支之间的对应关系是

2017-08-03 20:00:56 441

原创 Git-理论篇-版本库的交互

版本库本地版本库我们将本机为工作空间创建的版本库成为本地版本库; 单机下可以有若干个本地版本库;远程版本库因为Git是分布式版本管理系统,所以我们将除本地之外的其他终端上的版本库成为远程版本库; 因为实际使用中也是会设置一个“中心版本库”; 所以上述的“远程版本库”包括“中心版本库”和当前管理系统内其他终端上的“本地版本库”;版本库交互示意图关联关系本地版本库与远程版本库的关联关系是“

2017-08-02 11:40:18 708

原创 Git-实战篇-分支相关操作-命令行

前言分支的位置和查看示意图在Git空间示意图中可见,工作区(work directory)对应的版本库中(repository)保存着暂存区(Stage),而版本库中除了暂存区中之外,主要的功能就是保留着各分支信息; 每个版本库在创建的时候默认生成一个主分支,默认命名master;命令行使用命令查看branch相关的信息; git branch #查看本地分支列表git branch -v

2017-07-28 15:11:06 947

原创 Git-实战篇-创建本地仓库和关联远程仓库-命令行

本地库创建本地库进入项目目录,启用Git Bash: git init可以看到项目目录新增了.get的隐藏文件夹 检查文件状态,提示未监控(Untracked)的文件列表git status如上所示,表示本次的本地版本库已经安装成功;查看初始化分支此时不显示分支情况,因为只是初始化了版本库,没有向版本库执行提交操作; 在执行add操作后查看分支,还是不显示; 执行commit之后查看: 关

2017-07-27 16:13:39 1442

原创 Git-理论篇-底层存储和分支结构

前言存储Git的底层存储是以文件快照实现的,对版本的存储是通过文件快照整体进行存储,重复的文件通过指针索引源文件,不重复存储;而非SVN和CVS存储各版本文件之间的差异;分支分支(Branch),是Git依靠底层文件快照存储系统为上层服务提供的解决方案;解决项目中同时存在多个父子版本在交叉进行创建版本和合并版本的需求; 分支存在于各个版本库中(本地版本库&远程版本库),个人认为有必要在实际操作之

2017-07-21 16:56:51 2470

原创 Intellij Idea-统一显示SpringMVC请求和处理方法映射列表

前言在SpringMVC中请求链接跟处理方法的映射关系因为@RequestMapping分布在项目的各个方法上,所以不能像Struts那样统一管理。 Intellij Idea提供了相关的支持;添加支持 IDEA 控制台下方默认有Spring功能签;默认为空,需要我们给项目添加Spring相关支持; “Project Structure”->“Modules”->选中指定模块,点击加号,选择S

2017-07-19 18:56:30 5862

原创 Git-实战篇-三个区域和交互-命令行

本实战篇对应的理论篇链接,本文将使用命令行(Git Bash)进行对理论篇的验证。前言本文操作交互部分的目录对应理论篇的目录,相关概念和示意图不再重复记录,如有需要请对应理论篇参考。Git Bash之前提到过Git的命令行(Git Bash)友好的命令提示和简洁明了的内容提示是一大亮点, Git Bash 需要将命令行目录定位置工作区目录,可在工作区直接右击点击“Git Bash Here”或者

2017-07-17 20:52:55 663

原创 Git-理论篇-三个区域和交互

Git中有很多特定的概念,在使用之前需要充分了解这些概念,才能更快更深入的学习Git的精髓。三个区域工作区(work directory)一般就是我们项目的根目录。 版本库(repository)我们在为项目添加本地库之后,会在工作区生成一个如下图所示的隐藏目录“.git”,.git目录即为当前工作区的本地版本库。 暂存区(stage)版本库中设立一个暂存区(Stage or Index),作

2017-07-17 17:06:33 974

原创 Git-番外篇-安装和基础配置

下载安装Windows官方下载地址:https://git-scm.com/downloads 网盘下载地址:http://pan.baidu.com/s/1o7ZmgsEGit的安装比较简单,安装过程中没有特殊配置项,按照默认值逐步完成安装就行。 完成安装后在任意处,右击菜单中存在“Git Bash Here”和“Git GUI Here”说明安装成功。 Git Bash:因为Git最初的

2017-07-17 16:11:40 522

原创 Git-番外篇-本机同时使用多个Git账号

本次操作为Windows环境;场景我们在实际使用Git的时候往往会出现在本机需要同时登录多个Git账户来进行操作,这个时候就需要在本机为多个Git分别生成SSH密钥对(私钥和公钥),然后将各自的公钥登记到对应的仓库中即可。分别生成密钥对在生成密钥对的时候添加“-f”指定生成秘钥文件的名称,为不同用户区分开来。ssh-keygen -t rsa -f ~/.ssh/id_rsa_defined -C

2017-07-17 15:14:54 840

原创 Git-理论篇-设计理念及相关概念

初步接触Git时,是因为它的分布式特性,在深入了解之后Git给我得印象如果用一个单词来形容的话那就是 smart; 反观之前所接触的版本控制系统,Git拥有无可比拟的存在的必要性。Git相比较其他版本控制系统最大的优势无异于: 1、底层文件存储系统 2、分布式的特性1、底层文件存储系统Git通过自身的以文件快照实现的文件存储系统为版本管理提供了Branch(分支)的支持。 具体相关的信

2017-07-14 19:49:17 1108

原创 Git-综述

简述前言之前在版本控制方面一直使用的SVN,然后在新项目的筹备阶段开始调研Git,调研完感触颇深; 在本次为期调研Git的过程中,信息量远远超乎之前的预期,得益于各位前辈的帖子和信息,加速了对Git的了解和认知,在此向各位前辈同仁致敬,本文最后贴出了个人认为较高质量的参考链接; 但是由于调研时间(下周得开始项目代码筹备了)确实紧凑,还有很多方便需要进一步调研完善,但是立足于项目管理

2017-07-14 16:48:21 565

原创 SpringMVC集成Swagger2,初尝试和遇到的相关问题

前言之前项目的接口文档都是手动编写Word文档来做,制作成本较高,并且在进行版本迭代的时候进行标注和说明不是很方便,后来发现Swagger之后进行了简单的操作。 截止目前还未深度使用,本文仅记录初次使用Swagger的过程和遇到的问题,后续进行补充。 前言: 当前项目使用SpringMVC,集成Swagger2配置Step1:添加依赖包 depen

2017-07-13 17:39:46 4422 1

原创 APP消息推送(APP Push)解决方案-服务端工作逻辑和实现

APP 推送概述:App推送消息是我们常见的一种app消息提醒方式。我们的实现需要第三方的支持,实现方式是后台通过接口将Push请求发送至第三方,第三方实现在App所在设备上的推送。APP推送后台处理逻辑:在与推送平台交互时,后台需要向第三方发送两部分信息,推送目标终端标示+推送内容推送目标终端标示:APP推送需要定位目标终端,也就是说要给那台设备进行推送,简单

2017-07-10 18:33:26 12378 1

原创 CentOS7的firewall和安装iptables

前言:CentOS7 的防火墙默认使用是firewall,而我们通常使用iptables;本文记录了firewall基础的命令和iptables的安装和使用。 firewall部分:part1 : 服务命令systemctl start firewalld#启动systemctl status firewalld #查看运行状态systemctl stop fi

2017-06-21 15:18:15 4953 4

原创 CentOS7 yum 安装 mysql5.6

前言:CentOS7的默认yum资源库中没有mysql的安装文件,需要手动获取对应的文件;本次安装的mysql版本号为5.6;    因为mysql安装时的依赖较多,目前为止还是习惯于使用yum进行安装。本文分为1:安装mysql2:mysql初始配置3:配置防火墙,开放端口     注:CentOS7 默认使用firewall,本次关闭了firewall,启用

2017-06-21 10:45:19 652

原创 centOS7 安装密码生成器

Linux下三种便捷的密码生成器pwgenmakepasswdpasswdmaker 注:目前仅尝试了pwgen和makepasswd,但是目前仅pwgen成功。=================================================================以下是安装过程 yum安装,报错sudo yum install m

2017-06-20 19:03:33 3051

原创 CentOS安装JDK常用的三种方法

CentOS环境下安装JDK通常有三种方法:一:通过压缩包进行安装二:通过yum集中安装三:使用RPM进行安装步骤大同小异:第一步:准备安装文件:(1)tar包;(2)目标yum文件;(3)RPM文件;第二步:解压或者使用对应的方式进行安装;第三步:修改配置文件,添加JDK对应的环境变量/etc/profile并生效配置文件;第四步:

2017-06-20 17:46:42 408

原创 SpringMVC集成Swagger2,初尝试和遇到的相关问题

之前项目的接口文档都是手动编写Word文档来做,制作成本较高,并且在进行版本迭代的时候进行标注和说明不是很方便,后来发现Swagger之后进行了简单的操作。截止目前还未深度使用,本文仅记录初次使用Swagger的过程和遇到的问题,后续进行补充。前言:当前项目使用SpringMVC,集成Swagger2Step1:添加依赖包 io.spr

2017-06-06 16:39:50 8703 2

[email protected]

阿里巴巴-码出高效,easy coding,彩色版,高清,很棒的资料

2019-06-18

阿里巴巴Java开发手册1.4.0

阿里巴巴Java开发规范1.4.0终极版,行业开发规范模板;

2018-10-17

chrome edit this cookie plugin-1.4.1

打开谷歌浏览器扩展程序列表, 将插件拖入列表即可进行安装,本版本的1.4.1

2017-07-11

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

TA关注的人

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