自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 项目复盘都应当怎样做?

项目复盘的目的不是为了匹配谁,而是为了大家从复盘中找到问题,避免下一次犯同样的问题。那作为软件项目应当怎样来进行复盘呢?接下来我就介绍一下复盘的经验:会议名称:门店列表&详情统一改版项目复盘 会议时间:2019/08/06 会议地点:B7肯尼亚 参会人员(包括所有角色): leader:XXX、XX 后台:XXX、XXX 前台:XXX、X...

2020-04-01 11:15:46 934

原创 高并发,高可用架构的演进路线。

某些App怎么扛住1分钟10亿请求?架构的演进路线百万级并发:1秒100万次请求。千万级并发:一分钟6亿次请求,差不多就是需求的极限。架构的设计和架构优化要符合需求本身,不能无限制优化。基本概念(1)分布式(系统中,多个模块在不同服务器上部署)(2)集群(一个软件部署在多台服务器,并作为一个整体,提供一类服务)(3)高可用(系统中部分节点失效,其他节点能够接替它继续...

2020-03-29 22:29:18 561

原创 PM怎样建立好自己的项目管理文档目录?

作为一个项目或者产品,文档积累是必不可少的。很多时候大家在管理项目的时候,不知道需要积累什么问题,接下来我给大家展示一下我们研发项目的文档结构:门店列表&详情统一(项目名称)1.(门店列表&详情统一)PRD&原型图&UED设计图项目分解 说明及文档 对接人 更新时间 更新内容 目标用户 ...

2020-03-29 21:58:09 571

原创 怎样做好项目的上线工作?

项目上线任务名称:XXXX任务名称上线更新说明:1.xxxxxxxx。2.xxxx。上线提前准备:上线时间:XXXX年MM月DD日 HH:mm:ss上线配置:准备的具体配置参数或者参数对应文档路径地址,涉及参数的更新,需要记录历史值以便于回滚。前端上线分支:具体分支后端上线分支:具体分支上线方案:文档链接地址(各个应用统一操作文档)回滚方案:文档链接地址(各个应用统一操作...

2020-03-11 09:04:45 297

原创 项目计划模板是作为技术人带领项目成功的起点

2020-02-25 09:06:03 124

原创 什么是跨域?跨域的解决方法?

什么是跨域?要了解跨域,先要说说同源策略。同源策略是由 Netscape 公司提出的一个著名的安全策略,所有支持 JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。当页面在执行一个脚本时会检查访问的资源是否同源,如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。DOM同源策略:禁止对不同源页面DOM进行操作。这里主要场景是if...

2019-10-22 21:49:08 170

原创 redis集群环境搭建、扩容、缩容原理

一、背景 随着互联网的不断发展,用户体验要求越来越高,为了提高性能大家常常采用的方案是将我们的热点数据存储到缓存中,这样来减少服务与数据库的交互。怎样能搭建一个高可用的缓存集群也就成为了新的问题。 Redis3.0版本之前,可以通过Redis Sentinel(哨兵)来实现高可用 ( HA ),从3.0版本之后,官方推出了Redis Cluster,它的主要用途是实现数据...

2019-03-01 11:31:13 4083

转载 一致性Hash原理与应用

一、背景 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。判定哈希算法好坏的四个定义:1、平衡性(Balance):平衡性是指哈希的结果能...

2019-02-28 10:15:38 496

原创 从JVM原理到性能调优

一、Java加载过程类从被加载到JVM中开始,到卸载为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中类加载过程包括加载、验证、准备、解析和初始化五个阶段。  类加载器的任务就是根据一个类的全限定名来读取此类的二进制字节流到JVM中,然后转换为一个与目标类对应的java.lang.Class对象实例。BootstrapClass...

2019-02-22 09:03:22 350

原创 解密MYSQL索引机制

一、什么是非聚蔟索引和聚蔟索引  非聚蔟索引       数据库索引相当于书本的目录,目录里面的是对应的页码,索引也是,当查询走索引时,找到索引,索引里面也有找到对应数据的路径,就是数据在磁盘上的物理地址,主索引,次索引都是这么存的,索引与数据分开了。这类索引就是非聚簇索引,myisam索引默认是这种结构。聚蔟索引         聚簇索引是索引和数据放在一起了,这里的索引具体...

2019-02-21 20:49:18 161

原创 分布式事务、跨库事务的实现原理与JDBC实现XA分布式事务

一、背景     随着,互联网的不断发展,传统的单库已经无法满足我们业务上的需求。作为行业内的解决方案就是将数据库进行分区、分库、分表、分片。但是其中涉及分库的时候,事务的提交又变成了行业中难题。为了解决这个问题Mysql5.0后,开始支持分布式事务XA。二、XA原理       我们在实用单点数据库的一般的关系型数据库都有实现事务ACID属性的方法,一般使用诸如UNDO,REDO等。...

2019-02-19 10:09:27 934

原创 MySql分表、分库、分片和分区知识

一、前言    数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈。需要进行数据的处理,采用的手段是分区、分片、分库、分表。二、分片(类似分库)     分片是把数据库横向扩展(Scale Out)到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。Shard这个词的意思是“碎片”。如果将一个数据库当作一块大玻璃,将...

2019-02-18 20:52:29 49899 2

原创 mysql数据库安装环境部署

1、安装环境系统:linux工具:mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar,下载地址:官网,https://dev.mysql.com/downloads/mysql/2、安装步骤1)上传本地mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar文件到指定的服务器目录/root/tools2)解压mysql-...

2019-02-13 15:22:59 1484

原创 mac的liunx虚拟机安装solr7.6服务器以及解决安装过程中的问题

      solr5以前solr的启动都有tomcat作为容器,但是从solr5以后solr内部集成jetty服务器,可以通过bin目录中脚本直接启动。就是从solr5以后跟solr4最大的区别是被发布成一个独立的应用。一、环境准备   Centos7,Jdk1.8.0.144,solr7.6,solr7只能安装在jdk1.8及以上的jdk环境。   下载地址:http://www....

2019-01-30 21:25:35 280

原创 mac的linux安装tomcat全过程并解决宿主机mac不能访问虚拟机tomcat服务器

一、Linux下Tomcat8的安装配置安装tomcat前首先要安装对应的jdk并配置Java环境。1、环境准备jdk版本:1.8工具:mac自带终端2、安装步骤2.1 安装jdk2.1.1、下载安装包官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21331...

2019-01-30 19:38:18 935 1

原创 程序员,如何打破职业瓶颈期?

程序员经过知识的积累过程大致分为困惑期、发展期、瓶颈期和自由期四个阶段,困惑期、发展期和自由期这三个阶段随着工作经验的逐步丰富,过渡都是非常容易。与其相反,瓶颈期是很难渡过并且这个阶段是对事业和人生的非常关键的阶段。在这里学到的、掌握到的都是行走江湖的真功夫。经历了这个过程后,就基本能把程序员分出个三六九等。 很多程序员到了瓶颈期(工作5年左右)后,就会处于一个停滞状态。技术上已经驾轻就熟...

2018-12-28 10:22:00 557 2

原创 订单状态机设计

状态机整体设计: 说明:基本要素:状态(state)、事件(event)、流转(transition)、虚拟状态(virtual state)、条件(guard)、条件分支、默认分支; 基本流程:图中"开始"状态接收到事件"E1"后切换至"S1"状态,完成一次状态流转; 自转场景:图中"S1"接收"E11"后状态未发生改变,同样视为完整一次状态流转; 分叉场景:图中"S1&qu

2018-12-28 10:13:48 11648 1

原创 Java利用Redis实现分布式锁的代码封装

       当今互联网时代,单机服务器已经无法满足系统性能要求,各个公司都采用分布式部署,此时就涉及到分布式锁。常用处理分布式锁的方式是采用redis的setnx命令来实现,接下来我们看一下怎样来封装一个比较好的分布式锁结构。CacheService.java 缓存处理接口package com.jd.wyjm.front.service.common;import com.jd...

2018-12-23 22:39:41 851

原创 手写Netty实现RPC接口远程调用客户端与服务器

Java的IO分为BIO、NIO、AIO(NIO.2), 其中它们分别含义是:Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,...

2018-12-21 19:40:50 5553 4

原创 数据字典模版

        一个好的团队,工作之中应该有各种各样的模版,对应数据库设计也是一样,数据库字典是你对整个系统从各个环节的思考的细化。现在都实行敏捷开发,数据字典不于过重,所以最近工作之中自己设计了一个简易的数据字典模版。                                                                    XXXX3.2版本数据字典...

2018-11-21 22:46:25 23612 1

原创 怎样优化自己的统一处理异常类

     Java程序中,异常处理对于程序来说是非常基础。但是真正能很好理解并且很好的统一处理,这样会使得代码逻辑更清晰,更简单、更高效。下面就是程序中需要处理并且注意的异常统一处理案例:1、自定义异常类Controller异常类package com.jd.wyjm.front.common.exception;import com.jd.wyjm.front.common.en...

2018-10-14 22:10:53 823 1

原创 JAVA高效实现列表上下移动、置顶的高效计算方法

       大家可能常常遇到像文章列表、商品列表,业务要求我们实现列表能自动上下移动和置顶。遇到这样我们大多数往往想的是很简单,给个排序字段sort类型为INT不就行了吗?      它的实现方法,每当新增一条记录的时候,sort都会在前一条记录上+1。例如:我们用这5条记录来进行排序。记录1,sort:1;记录2,sort:2;记录3,sort:3;记录4,sort:4;记录5,sort:...

2018-07-18 10:31:46 5083 7

原创 Rest接口中,异常处理更通用。

       Java程序中,异常处理对于程序来说是非常基础。但是真正能很好理解并且很好的统一处理,这样会使得代码逻辑更清晰,更高效。下面就是程序中需要处理并且注意的异常统一处理案例:通用异常处理类:package com.jd.ccc.sys.biz.yb.mall.common.exception;import com.jd.ccc.sys.biz.yb.mall.common.enums...

2018-06-11 09:54:47 1960

原创 HashMap的数据结构?HashMap怎样解决KEY中hash值冲突问题?HashMap是否是线程安全?HashMap为什么属于线程非安全?

Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。HashMap利用“单向链表”解决key的hash值相等的问题。HashMap这个集合类属于非线程安全,HashMap初始容量大小16,有数据要插入的时候,会检查容量有没有超过...

2018-06-06 21:45:28 1730

原创 elasticsearch搜索中文分词理解、类似SQL语句中的"LIKE”条件的模糊搜索以及忽略大小写搜索

01》不进行分词的索引建立:URL:es_index_test{  "settings": {    "index": {      "number_of_shards": "4",      "number_of_replicas": "1"    }  },  "mappings": {    "es_index_type_test": {   

2018-06-05 15:25:29 15269

原创 程序员应该怎样使用MYSQL索引

MySQL索引的概念        索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。它分为聚簇索引和非聚簇索引:聚簇索引能提高多行检索的速度、非聚簇索引对于单行的检索很快。      " 聚簇索引"平时习惯逛图书馆的童鞋可能比较清楚,如果你要去图书馆借

2017-08-11 17:06:28 218

转载 CAS下ABA问题及优化方案

一、并发业务场景 库存业务,stock(sid, num),其中: sid为库存id num为库存值如上图所示,两个并发的查询库存操作,同时从数据库都得到了库存是5。接下来用户发生了并发的库存扣减动作: 如上图所示: 用户1购买了3个库存,于是库存要设置为2 用户2购买了2个库存,于是库存要设置为3 这两个设置库存的接口并发执行,库存会先变成2,再变成3,导致数据不一致(实际卖出了

2017-06-22 16:23:34 382

转载 什么是数据库散列存储?

网站在Web 2.0时代,时常面临迅速增加的访问量(这是好事情),但是我们的应用如何满足用户的访问需求,而且基本上我们看到的情况都是性能瓶颈都是在数据库上,这 个不怪数据库,毕竟要满足很大访问量确实对于任何一款数据库都是很大的压力,不论是商业数据库Oracle、MSSQL Server、DB2之类,还是开源的MySQL、PostgreSQL,都是很大的挑战,解决的方法很简单,就是把数据分散在不

2017-06-22 14:32:04 2033

原创 Java 装饰模式的应用

Java Web在filter中可以得到代表用户请求和响应的request、response对象,因此在编程中可以使用Decorator(装饰器)模式对request、response对象进行包装,再把包装对象传给目标资源,从而实现一些特殊需求。一、Decorator设计模式1.1、Decorator设计模式介绍  当某个对象的方法不适应业务需求时,通常有2种方式可以对方法进行增强:

2017-06-22 14:28:42 307

转载 Java 8 新特性总结

1.介绍     毫无疑问,Java 8发行版是自Java 5(发行于2004,已经过了相当一段时间了)以来最具革命性的版本。Java 8 为Java语言、编译器、类库、开发工具与JVM(Java虚拟机)带来了大量新特性。2.Java语言的新特性     Java 8都是一个变化巨大的版本。Java 8耗费了大量的时间才得以完成是为了实现了每个Java程序员所期待的特性。2.1 L

2017-06-22 14:25:54 213

原创 Java 8 新特性总结

[size=small][b]1.介绍[/b] 毫无疑问,Java 8发行版是自Java 5(发行于2004,已经过了相当一段时间了)以来最具革命性的版本。Java 8 为Java语言、编译器、类库、开发工具与JVM(Java虚拟机)带来了大量新特性。[b]2.Java语言的新特性[/b] Java 8都是一个变化巨大的版本。Java 8耗费了大量的时间才得以完成是为了...

2017-03-21 09:35:07 125

Java 装饰模式的应用

[size=small]Java Web在filter中可以得到代表用户请求和响应的request、response对象,因此在编程中可以使用Decorator(装饰器)模式对request、response对象进行包装,再把包装对象传给目标资源,从而实现一些特殊需求。[b]一、Decorator设计模式[/b][b]1.1、Decorator设计模式介绍[/b]  当某个对象的方法不...

2017-03-20 09:53:12 162

空空如也

空空如也

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

TA关注的人

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