自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

西召

公众号「西召」作者,关于技术,还有阅读,写作和思考...

  • 博客(107)
  • 资源 (5)
  • 收藏
  • 关注

原创 DevOps: 使用Maven插件实现分环境配置和版本检查

目录一个故事(事故)分环境分环境实现指定环境打包的缺点只打一个包版本检查git-commit-id-plugin版本检查地址总结相关资源DevOps是Development和Operations的组合词,作为一名软件工程师或者系统架构师,对于系统的开发和部署需要有充分的了解和把控。下面我们通过一个故事,把软件发布中的分环境配置和版本检查的解决方案为你娓娓道来…...

2019-04-20 23:35:32 770

原创 从一个电商平台的库存同步谈性能优化和方案落地

背景库存同步相关概念库存流转过程方案问题分析头脑风暴确定方案细化方案实施业务精简和标准化优化消息处理的逻辑队列操作高性能CPU使用过高总结下面的案例来自笔者的实际工作经历,涉及到的系统是笔者负责开发和维护的,一个国外的电商平台。如果你对电商系统有所了解,将有助于你理解下面提到的业务。如果你没有相关的知识背景,也没有关系,我会尽可能简化地将业...

2019-04-16 17:54:10 2536

原创 MySQL索引与查询优化

目录About MySQLWhy MySQLMySQL IndexWhy Index索引是如何工作的如何使用创建索引查看索引删除索引索引的使用原则写操作比较频繁的列慎重加索引索引越多占用磁盘空间越大不要为输出列加索引考虑维度优势对短小的值加索引为字符串前缀加索引复合索引的左侧索引索引加锁覆盖索引聚簇索引选择合适的索引类型查询优化建...

2019-04-15 18:04:29 187

原创 分布式架构之详解幂等

在计算机领域,幂等是指多次调用对系统产生的影响是一样的,即对资源的作用是一样的,但是返回值允许不同。

2023-02-23 11:56:47 653

原创 二倍均值随机算法之抢拼手气红包场景应用

拼手气类的游戏,更能激发用户购物和社交的趣味性,以及游戏竞争心理,拼手气类的活动甚至可以影响人们消费心理。拼手气红包就是最简单的例子。顾名思义,二倍均值算法的核心思想是根据每次剩余的总金额M和剩余人数N,执行M/N再乘以2的操作得到一个边界值E,然后制定一个从0到E的随机区间,在这个随机区间内将产生一个随机金额R, 此时总金额M将更新为M-R,剩余人数N更新为N-1。再继续重复上述执行流程,以此类推,直至最终剩余人数N-1为0,即代表随机数已经产生完毕。

2023-02-21 19:56:20 485

原创 被误读的设计模式

目录概要设计模式的开山之作对设计模式的误解关于使用设计模式的3个问题无处不在的设计模式如何解释设计模式设计模式的开山之作1994年10月21日,有四个哥们儿出版了一本书,名字叫做《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)。这四个哥们儿后来以“四人帮”...

2019-05-07 16:09:00 248

原创 在线数据库关系图设计工具 dbdiagram.io

前段时间,笔者在设计某个系统模块的时候,需要增加十几张表。为了简单快速地把这十几张表设计并定义出来,我找到了一个可以在线设计数据库关系图(database relationship diagram)且可以导出DDL SQL的工具——dbdiagram.io。dbdiagram.io是holistics.io这款商业产品的社区版。dbdiagram.io使用DSL语言,可以简单快速地创建数据库...

2019-05-02 21:27:35 20241 3

原创 认识Redis与Redis的数据类型

本文作为Redis的入门教程,旨在让大家对Redis有一个概念性和整体性的认识,并且可以快速上手,为深入Redis打下基础。文章概要:Redis的介绍Redis与其他数据库的对比Redis与其他缓存实现对比Redis的数据结构类型Redis命令操作几种数据类型Spring Data Redis操作几种数据类型ZSET(有序集合)保证顺序SET(集合)随机获取元素目录...

2019-05-02 19:26:27 275

原创 SpringBoot实现发送电子邮件

目录电子邮件与Java发送邮件的历史电子邮件原理电子邮件服务器电子邮箱邮件客户端邮件传输协议邮件格式电子邮件发送和接收流程电子使用场景SpringBoot实现发送电子邮件准备账号构建项目并配置实现服务端代码新建邮件模板测试发送邮件总结相关链接从1969年10月世界上的第一封电子邮件发出,到2019年,已经过去将近半个世纪了。虽然即时通讯和...

2019-04-20 23:41:23 14776 6

原创 使用Github搭建Maven私有远程仓库

目录本地deploy上传到github项目配置依赖参考链接为了避免重复造轮子,我们可以在项目中引入依赖,使用现有的成熟解决方案。也许你不满足于“借”轮子,还想自己造轮子,这个时候你就可以把自己的代码放入公共的仓库,供大家使用。但使用公共的依赖仓库很麻烦,幸好github为我们提供了一种简便的大家自己的公共依赖仓库的方式。自从今年Github支持免费的个人私有仓库以后,...

2019-04-20 23:39:37 1104

原创 PostgreSQL Like查询与正则表达式

安装PostgreSQL之后,PostgreSQL会创建一个名为“postgres”的用户,创建一个名为“postgres”的数据库。我们就可以使用这个默认的库做实验。首先建表并插入数据:CREATE TABLE public.user( ID SERIAL PRIMARY KEY NOT NULL, UserID varchar(100) NOT NULL, UserName varc...

2019-04-20 23:37:43 5366 1

原创 树结构与Java实现

目录前言树的概念概述术语实际应用实现树TreeNodeTreeNodeIterator测试总结相关链接作者资源参考资源前言提到『树』这种数据结构,相信很多人首先想到的就是『二叉树』。的确,二叉树作为一种重要的数据结构,它结合了数组和链表的优点,有很多重要的应用。我们都知道,数组的特点是查询迅速,根据index可以快速定位到一个元素。但是...

2019-04-18 18:27:41 2776

原创 Redis管道技术的使用

目录Redis 管道技术SpringDataRedis 使用管道Redis 管道的性能测试使用管道技术的注意事项代码示例Redis 管道技术Redis是一种基于客户端-服务端模型(C/S模型)以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。服务端...

2019-04-16 14:07:11 1553

原创 Java并发之线程组ThreadGroup介绍

线程组介绍线程组的构造ThreadGroup方法介绍查看线程组信息终止线程组中的所有线程总结Links作者资源相关资源线程组介绍线程组(ThreadGroup)简单来说就是一个线程集合。线程组的出现是为了更方便地管理线程。线程组是父子结构的,一个线程组可以集成其他线程组,同时也可以拥有其他子线程组。从结构上看,线程组是一个树形结构,每个线程都隶属于一个线程...

2019-04-03 18:18:10 355

原创 Java并发 之 线程池系列 (2) 使用ThreadPoolExecutor构造线程池

Executors的“罪与罚”Executors的源码让你的JVM OutOfMemoryError阿里巴巴Java开发手册主角出场ThreadPoolExecutor的构造ThreadPoolExecutor构造参数说明当一个任务被加入线程池时ThreadPoolExecutor的使用ThreadPoolExample3执行结果总结Links作...

2019-04-01 21:59:52 209

原创 Java并发 之 线程池系列 (1) 让多线程不再坑爹的线程池

背景线程池的来由什么是线程池背景总结用法通过Executors创建线程池Executors及其服务的类Executors常用的几个方法一个线程池的例子任务池子测试说明总结Links文章友链相关资源背景线程池的来由服务端的程序,例如数据库服务器和Web服务器,每次收到客户端的请求,都会创建一个线程来处理这些请求。创建线...

2019-03-31 15:13:09 2097

原创 notepad++选中多行文本

notepad++ 如何选中多行文本呢?最近需要上传导入一批数据,但是数据太多了,一次上传完成不了,所以就要用到分批上传。数据全部都在一个文本文件(txt)里面,这时就想到一次复制出来一部分数据来导入,直到导入完成。但是问题来了,因为数据太多了,从第1行选择到第10000行,鼠标要拉好久好久,万一手不小心抖了一下,又要重新下拉选择,坑啊!那么能不能一次到位呢?这就可以用到notepad+...

2019-03-27 18:29:49 2014

原创 SpringBoot系列之服务端解析客户端国际化请求

文章目录国际化方案实现代码pom.xmlapplication.propertiesLanguageUtil.javaLanguageInterceptor.javaInterceptorConfig.javaLanguageController.java测试使用IDEA的Rest Client发起请求测试请求的response总结Links国际化方案前后端分离的国际化方案,如果每个接口都增加...

2019-03-27 17:53:26 665

原创 Java并发编程-Future系列之Future的介绍和基本用法

文章目录About FutureFuture Methods`get()``get()` Sample Example`get(long timeout, TimeUnit unit)``get(long timeout, TimeUnit unit)` Sample Example`isDone()``isDone()` Sample Example`cancel(boolean mayInte...

2019-03-26 17:38:37 12028

原创 MySQL 主键自增 Auto Increment用法

AUTO_INCREMENT简介MySQL的AUTO_INCREMENT属性可以用于在插入新的记录的时候,进行主键自增。例如执行下面的SQL:CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id));INSER...

2019-03-26 16:48:17 2279

原创 什么是package-info.java

在java项目中创建package以后,可以在package下放一个package-info.java文件。这个文件有什么作用?如何生成?三个作用:为标注在包上Annotation提供便利;声明友好类和包常量;比如一个包中有很多的内部访问的类或常量,就可以统一的放到package-info类中,这样就方便,而且集中管理,减少friendly类到处游走的情况,看例子://这...

2019-03-26 16:31:09 6732

原创 Maven依赖版本号引发的血案

项目版本升级用了relase版本,但是发布以后,依赖的jar包在编译以后的lib目录还是旧版本。原因是snapshot版本每次发布都会更新远程和本地仓库的文件,但是release版本会先在本地版本库中检查,如果存在就使用本地版本库的,没有才拉取远程仓库的。同样的,release版本的代码在远程仓库也是不会更新的。那么当发现relase版本的依赖有问题时该怎么办呢?下面是可以解决问题的几个方案...

2019-03-26 16:30:06 1339

转载 让谁搭车?

如果你在一个雨天开车经过一个公交车站,看到三个人在冒雨等车。一个是年迈的老太太。一个是你的救命恩人。一个是你的梦中情人。你的车子只有一个人的空位,你会选择让谁搭车?老太太最需要帮助,如果放任不管不仅你的朋友可能看不起你,连自己也可能愧疚终生;救命恩人拥有对你最大的恩情,你对他的亏欠是最大的;而梦中情人则可能是接下来陪绑你终身的人,这也许是唯一的表白机会了。看起来每个人都不能放弃。也许...

2019-03-24 20:56:35 175

原创 自定义git命令实现一步提交代码到仓库

说:把代码放仓库,拢共分几步?答:4步!add、commit、pull、push。每次通过git命令执行代码提交,都要像要“把大象装冰箱”一样不厌其烦地四步走,git add *git commit "我也不知道提交了点儿啥"git pullgit push俗话说:金钱如粪土。俗话又说:时间就是金钱。那么本着肥水不流外人田的精神,为了节省点“粪土”,能不能一步“把大象装冰箱”呢?...

2019-03-24 20:55:33 413

原创 Java并发编程之Wait和Notify

文章目录Background相关概念什么是多线程线程的状态轮询Sampleswait 和 notify方法介绍示例Links仓库地址参考链接Background相关概念什么是多线程我们把组成程序(Program)各个部分称为线程(Thread)。也可以说,线程就是程序中轻量级的进程(Process)。多线程(Multithreading)是Java的一个特性,它可以允许一个程序的多个部分...

2019-03-24 20:53:52 244

原创 Windows操作系统安装MySQL解压版

1、下载MySQL版本: MySQL Community Server下载地址: https://dev.mysql.com/2、解压安装包解压下载的安装包,放到电脑的安装目录下3、配置my.ini文件解压后,根目录下,有一个my-default.ini文件,这是官方的配置文件样版,把这个文件拷贝一份在同一个目录,名字改为my.ini。把如下内容复制到my.ini中...

2019-03-12 18:56:20 113

原创 处理Maven本地仓库.lastUpdated文件

处理Maven本地仓库.lastUpdated文件今天项目启动过程中,抛出了很多奇怪的异常,最终在同事的协助下发现,是因为项目依赖的jar文件没有下好,目录中存在很多类似aaaaa.jar.lastUpdated的文件。这是因为,项目使用maven管理jar包,很容易因为各种原因(网速慢、断网)导致jar包下载不下来,出现很多.lastUpdated文件。想要正常启动项目,需要删除这些.l...

2019-03-12 18:55:18 1341

原创 MySQL数据库存储引擎简介

MySQL 提供了多个存储引擎——包括处理事务安全表的引擎和处理非事务安全表的引擎,在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。存储引擎简介MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能...

2019-03-12 18:53:47 116

原创 解决SimpleDateFormat线程安全问题NumberFormatException: multiple points

SimpleDateFormat是线程不安全的类,一般不要定义为static变量,如果定义为static,必须通过加锁等方式保证线程安全。例如下面一段代码,启动10个线程,同时使用一个SimpleDateFormat实例去格式化Date。import java.text.ParseException;import java.text.SimpleDateFormat;public clas...

2019-03-10 11:55:53 555

原创 Java缓存浅析

拿破仑说:胜利属于坚持到最后的人。而正巧,咱们今天就是要聊一个,关于怎么让系统在狂轰乱炸甚至泰山压顶的情况下,都屹立不倒并坚持到最后的话题——缓存。Victory belongs to the most persevering.— Napoleon Bonaparte, French military and political leader目录体系下面我们先简单浏览一下这个分享的...

2019-03-10 11:02:47 211

原创 重试利器之Guava Retrying

在很多业务场景中,为了排除系统中的各种不稳定因素,以及逻辑上的错误,并最大概率保证获得预期的结果,重试机制都是必不可少的。尤其是调用远程服务,在高并发场景下,很可能因为服务器响应延迟或者网络原因,造成我们得不到想要的结果,或者根本得不到响应。这个时候,一个优雅的重试调用机制,可以让我们更大概率保证得到预期的响应。

2019-02-28 21:39:48 4533

原创 SpringBoot系列-前置知识

title: SpringBoot系列-前置知识date: 2019-02-19 13:08:25categories:techjavaframeworkSpringSpringBoottags: [Java,Spring,SpringBoot,Spring5,Maven]Spring 框架Spring框架是一个轻量的企业级的开发一站式解决方案,Spring框架已经是轻...

2019-02-19 13:27:21 2420

原创 HTML特殊字符转义

title: HTML特殊字符转义date: 2019-02-18 21:57:00categories:techlanguageHTMLtags: [tech,HTML,SpecialCharacters,Java,JavaScript]问题如果HTML的DOM元素的属性值中含有特殊字符,会造成属性值取值错误。例如:<input type="button" va...

2019-02-18 22:14:53 8246

原创 修改IDEA的配置目录

title: 修改IDEA的配置目录date: 2019-02-18 13:19:00categories:techtoolIDEIntelliJIDEAtags: [tech,tool,IDE,IntelliJIDEA,IDEA]在使用IDEA开发工具的过程中,难免会进行各种配置和插件的安装,这些配置花费了我们大量的心血。当我们的重新安装或者在新的设备上安装了IDEA以...

2019-02-18 13:47:48 3580

原创 使用GithubPage做图片库生成引用图片链接

title: 使用GithubPage做图片库生成引用图片链接date: 2019-02-17 23:00:25categories:techwebsitegithubgithubpagestags: [tech,github,gihubpages,picture,img]在平时写文档的时候,尤其是在类似Markdown这种纯文本的文档中,使用图片常常很麻烦。如果随意在网...

2019-02-18 13:46:17 2853

原创 HttpSession 的 invalidate() 方法介绍

By Li JiangtaoAt 2018-10-24 15:22:33 ShanghaiCatalogJavadocExperimentSummaryThinkingLinksJavadoc/** * Invalidates this session then unbinds any objects bound * to it. * * @exception...

2018-10-24 21:43:25 6653

原创 SQL实战:子查询的应用实例

本实例设计到的SQL语法包括:select ,delete,distict,not exists,not in,group by,having,min,max

2017-02-28 17:17:36 5926

原创 高并发与大数据解决方案概述

随着业务的不断丰富,高并发和海量数据的处理日益成为影响系统性能的重要问题。下面将提供一些针对并发问题和海量数据处理的解决方案。

2017-02-28 11:19:45 4886

转载 AJAX原理

1.什么是AJAX?AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。它使用:使用XHTML+CSS来标准化呈现;使用XML和XSLT进行数据交换及相关操作;使用XMLHttpRequest对象与Web服务器进行异步数据通信; 使用Javascript操作Docume

2017-02-24 11:20:42 628

转载 判断一个正整数是否是2的乘方

**虽然二进制的思维并不符合我们日常的思维习惯,但是由于计算机都是基于二进制的,因此位运算方法,常常能够让我们的算法更加高效简洁。**

2016-11-29 11:10:53 1006

责任链模式-文档+源码

责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

2015-12-30

Java求职笔试面试网络资源打包.rar

Java求职笔试面试网络资源,包括JavaSE,JavaEE,数据库技术等。

2015-06-10

EditPlus最新版破解汉化Winx64Winx86

EditPlus最新简体中文修正版,修正原版多个问题,解压后双击点我注册,确定导入注册表即为注册版!内含32位和64位版本。 EditPlus功能强大,界面简洁美观,且启动速度快;中文支持比较好;支持语法高亮;支持代码折叠;支持代码自动完成(但其功能比较弱),不支持 代码提示功能;配置功能强大,且比较容易,扩展也比较强。像PHP、Java程序等的开发环境,只要看一下资料,几分钟就可以搞定配置,很适合初学者学习 使用。有不错的项目工程管理功能。内置浏览器功能,这一点对于网页开发者来说很是方便。

2015-04-26

画图截屏图形操作工具(免费、免汉化、免安装)--pickpick

具备了截取全屏 活动窗口 指定区域 固定区域 手绘区域功能 支持滚动截屏 屏幕取色 支持双显示 器 具备白板 屏幕标尺 直角坐标或极坐标显示与测量 具备强大的图像编辑和标注功能 截图可以保存到剪贴板 自动或手动命名的文件(png gif jpg bmp) 全面支持Windows(完全支持Windows7) 多语言支持 超过28种语言 所有功能都可在双显示器下使用 不需要注册表 不需要系统目录 复制至USB即可运行 1 屏幕截图:支持全屏 活动窗口 滚动窗口 窗口控制 区域 固定区域 手绘 重复捕捉; 2 Ribbon界面图像编辑器: 箭头 线条等绘图工具 模糊 锐化 像素化 旋转 翻转 框架等特效 3 拾色器和调色板:支持RGB HTML c + + Delphi等代码类型 Photoshop风格转换 保存颜色; 4 屏幕放大镜 量角器 屏幕坐标计算功能;为你的演示文稿把屏幕当作白板自由绘画 ">具备了截取全屏 活动窗口 指定区域 固定区域 手绘区域功能 支持滚动截屏 屏幕取色 支持双显示 器 具备白板 屏幕标尺 直角坐标或极坐标显示与测量 具备强大的图像编辑和标注功能 截图可以保存到剪贴板 [更多]

2015-04-13

JavaEEAPI--开发javaee的参考文档

资源名称:Java+EE+6+API+Specifications.CHM 资源格式:.CHM 资源版本:6 资源语言:English 资源内容: JavaTM Platform, Enterprise Edition 6 API Specification,This document is the API specification for version 6 of the JavaTM Platform, Enterprise Edition.

2015-04-13

空空如也

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

TA关注的人

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