自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xpzhang123的专栏

专注Java,Linux,Flex开发

  • 博客(117)
  • 收藏
  • 关注

原创 后端开发之多应用之间单点登录

早上还没到公司,电话就响了,电话那头一个妹子的声音,我一听,咦!第一感觉系统有问题,然后还没等某人开口,我就问系统啥问题???她说你别慌,我就让你赶紧到公司帮我刷个数据而已啊,难道你们程序员脑子都是bug吗?我系统用户名密码忘记了,帮我重置下,公司系统太多了,都要记,我是一个文科生哎!难为我,能不能只让我登录一次系统其他系统我点点点直接跳转进去行不行。。。真想自...

2020-03-11 23:42:01 903 1

原创 后端开发之接口幂等性设计

微信公众号连接:https://mp.weixin.qq.com/s/tSnOVPJJvjZjCYyCSp2E8w关注:一、天天在写Bug,好难哦 今天晨会结束后,领导叫上了陈同学,到会议室说,小陈啊,我现在手头有一个比较紧急的任务,需要你帮忙处理下。大致的情况是项目二组领导找他了,需要我们这边提供一个创建客户/供应商接口。然后巴拉巴拉说了一大堆的话,最后说jira已经...

2020-03-07 22:33:06 5800

原创 分布式系统如何保证接口幂等性?

这里我不详细说明直接说一般常见的解决方案1、数据表增加state字段,数据修改成功后,把state字段改为已完成等2、插入修改历史,以修改的数据ID作为唯一建,插入历史表中,如果已存在,代表重复执行3、当前请求存在redis里面,下次请求过来,判断Redis里面是否已经存在,如存在代表重复执行,如支付成功,结果存redis...

2019-10-28 22:40:42 366

原创 Finally是为什么都能被执行?

这个事情是由编译器来实现的,现在的做法是这样的,编译器在编译Java代码时,会复制finally代码块的内容,然后分别放在try-catch代码块所有的正常执行路径及异常执行路径的出口中。...

2019-08-06 00:00:33 370

原创 使用异常捕获的代码为什么比较耗费性能?

因为构造异常的实例比较耗性能。这从代码层面很难理解,不过站在JVM的角度来看就简单了,因为JVM在构造异常实例时需要生成该异常的栈轨迹。这个操作会逐一访问当前线程的栈帧,并且记录下各种调试信息,包括栈帧所指向方法的名字,方法所在的类名、文件名,以及在代码中的第几行触发该异常等信息。 当你new一个exception的时候,jvm已经在exception里构建好了所有的...

2019-08-05 23:52:55 634

转载 Servlet,Spring,SpringMVC三个容器的关系图

Web容器中有Servlet容器,Spring项目部署后存在Spring容器和SpringMVC容器。其中Spring控制Service层和Dao层的bean对象。SpringMVC容器控制Controller层bean对象。Servlet容器控制Servlet对象。项目启动是,首先 Servlet初始化,初始化过程中通过web.xml中Spring的配置加载spring配置,初始...

2019-05-29 00:00:13 818 1

翻译 Java锁技术:Synchronized

一、基本介绍Java 语言提供的Synchronied关键字,是锁的一种实现,可以用来修饰方法、程序代码块、静态方法等。如代码:class Test { // 修饰非静态方法 synchronized void t1() { // 临界区 } // 修饰静态方法 synchronized static void t2() { // 临界区 }...

2019-04-09 23:49:49 363

翻译 MySQL自增主键删除后,在插入一条记录主键值是否会等于删除的主键值

问题描述:Mysql主键自增,加入当前主键是20,删掉该记录之后,在插入一条,主键是20还是21?不同的引擎对于自增值得保存策略不同。1、MySAM 引擎的自增主键保存在数据文件中2、InnoDB 引擎的自增值,其实就是保存在了内存里,并且到了Mysql8.0版本后,才有了“自增持久化”的能力,也就是说“如果发生重启,MySQL自增主键可以恢复为Mysql重启前的值”,具体情况如下...

2019-04-02 23:50:02 1349 3

翻译 MySQL Distinct 和 Group By执行流程

具体如下:1、创建一个临时表,临时表有一个字段 a,并且在这个字段 a 上创建一个唯一索引;2、遍历表 t,依次取数据插入临时表中 2.1 如果发现唯一键冲突,就跳过 2.2 否则插入成功;3、遍历完成后,将临时表作为结果集返回给客户端。...

2019-04-01 23:28:25 607

转载 聊聊 Redis 使用场景

使用场景说明计数器数据统计的需求非常普遍,通过原子递增保持计数。例如,点赞数、收藏数、分享数等。排行榜排行榜按照得分进行排序,例如,展示最近、最热、点击率最高、活跃度最高等等条件的top list。用于存储时间戳类似排行榜,使用redis的zset用于存储时间戳,时间会不断变化。例如,按照用户关注用户的最新动态列表。记录用户判定信息记录用户判定信息的

2016-12-09 17:08:42 1004

转载 [SpringMVC]自定义注解实现控制器访问次数限制

我们需要根据IP去限制用户单位时间的访问次数,防止刷手机验证码,屏蔽注册机等,使用注解就非常灵活了1 定义注解查看文本打印@Retention(RetentionPolicy.RUNTIME)  @Target(ElementType.METHOD)  @Documented  //最高优先级  @Order(Ordered.HIGHES

2016-11-03 15:29:52 1377

翻译 为什么不能用memcached存储Session

Memcached创建者Dormando很早就写过两篇文章[1][2],告诫开发人员不要用memcached存储Session。他在第一篇文章中给出的理由大致是说,如果用memcached存储Session,那么当memcached集群发生故障(比如内存溢出)或者维护(比如升级、增加或减少服务器)时,用户会无法登录,或者被踢掉线。而在第二篇文章中,他则指出,memcached的回收机制可能会导致用

2016-09-19 18:36:39 358

转载 KMP算法

1.kmp算法的原理:  本部分内容转自:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html  字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"A

2016-05-25 23:14:51 471

原创 BlockingQueue

package com.ctrip.ctripimapp.listener;import com.ctrip.ctripimapp.presenter.LoginPresenter;import org.jivesoftware.smack.packet.Message;import java.util.concurrent.ArrayBlockingQueue;/** * Cr

2016-04-28 00:04:52 433

原创 Tomcat性能优化大杀器APR

APR是从操作系统级别来解决异步的IO问题,大幅度的提高性能. (http://apr.apache.org/).APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server 2.x的核心.能更好地和其它本地web技术集成,总体上让Java更有效率作为一个高性能web服务器平台而不是简单作为后台容器.在产品环境中,特别是直接

2016-02-25 10:40:24 542

原创 ionic调试跨域(Access-Control-Allow-Origin)问题

使用ionic serve用浏览器调试的时候会遇到跨域请求的问题导致无法调用远程数据。错误信息:已阻止跨源请求:同源策略禁止读取位于 http://192.168.1.107:8090/gtslweb/login/json 的远程资源。(原因:CORS 头缺少 ‘Access-Control-Allow-Origin’)。处理方法(以chrome浏览器为例子)1、使用Allow

2016-01-27 11:28:09 5397 1

原创 ArrayList删除元素并发异常ConcurrentModificationException解决方案

/ 1 使用Iterator提供的remove方法,用于删除当前元素 for(Iterator it = myList.iterator(); it.hasNext();) {     String value = it.next();      if(value.equals( "3")) {          it.remove();

2015-12-09 14:54:53 1452

原创 Java判断一个字符串能否在顺序重组后成为回文串

public class Test2 {public static void main(String args[]) {int result = huiwen("level");if(result == 1) {System.out.println("是回文串 ");} else {System.out.println("不是回文串 ");}}p

2015-12-09 13:59:09 1316

原创 理解和掌握类的加载过程以及子类继承父类后,重写方法的调用问题

public class Base {private String baseName = "base";public Base() {callName();}public void callName() {System.out.println(baseName);}}public class Child extends Base {p

2015-12-07 17:20:59 406

转载 美团Android资源混淆保护实践

前言Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被破解或者汉化的应用,破解者可以非常简单的通过破解工具就能对一个APK进行反编译、破解、汉化等等,这样就可以修改原有代码的逻辑、添加新代码、添加或修改资源、或者更有甚者植入病毒等等,从而破坏原有APK的安全和用户体验,最终伤害到用户和原有的开发者。而事物都是有两方面的,有矛就有盾,针对Android应用安全的各种方案应

2015-12-07 14:49:54 388

原创 好问题

1.数据库锁一共分为几种?锁一般在什么情况下使用?2:怎样处理百万级的数据? 怎样去优化查询3:现在要有一个关键字aa 要查询文章内容包括aa字符的信息 不能用%aa%和aa%,请问还有什么方法可以查询到包含aa的字符文章信息??4:临时表一共分为几种?它们之间有哪些区别?1.数据库锁一共分为几种?锁一般在什么情况下使用?--锁作为一种安全机制,用于控制多个用户的并发操作,

2015-12-06 23:46:15 432

转载 MySQL内存使用 – 全局共享

全局共享内则主要是 MySQL Instance(mysqld进程)以及底层存储引擎用来暂存各种全局运算及可共享的暂存信息,如存储查询缓存的 Query Cache,缓存连接线程的 Thread Cache,缓存表文件句柄信息的 Table Cache,缓存二进制日志的 BinLog Buffer, 缓存 MyISAM 存储引擎索引键的 Key Buffer以及存储 InnoDB 数据和索引的 I

2015-12-04 16:58:14 328

转载 MySQL内存使用-线程独享

对于任何一个数据库管理系统来说,内存的分配使用绝对可以算的上是其核心之一了,所以很多希望更为深入了解某数据库管理系统的人,都会希望一窥究竟,我也不例外。从内存的使用方式MySQL 数据库的内存使用主要分为以下两类线程独享内存全局共享内存今天这篇文章暂时先分析 MySQL 中主要的 “线程独享内存” 的。在 MySQL 中,线程独享内存主要用于各客户端连接线程

2015-12-04 16:24:46 581

转载 理解Explain命令输出中的filesort

DISTINCT 实际上和 GROUP BY 操作的实现非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已。所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,没有太大的区别。同样可以通过松散索引扫描或者是紧凑索引扫描来实现,当然,在无法仅仅使用索引即能完成 DISTINCT 的时候,MySQL 只能通过临时表来完成。但是,和 GROUP BY 有一点差别的

2015-12-04 15:47:54 692

转载 MySQL DISTINCT 的基本实现原理

DISTINCT 实际上和 GROUP BY 操作的实现非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已。所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,没有太大的区别。同样可以通过松散索引扫描或者是紧凑索引扫描来实现,当然,在无法仅仅使用索引即能完成 DISTINCT 的时候,MySQL 只能通过临时表来完成。但是,和 GROUP BY 有一点差别的

2015-12-04 15:33:11 3527 1

转载 MySQL 中 Join 的基本实现原理

在 MySQL 中,只有一种 Join 算法,就是大名鼎鼎的 Nested Loop Join,他没有其他很多数据库所提供的 Hash Join,也没有 Sort Merge Join。顾名思义,Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与 Join,则再通过前两

2015-12-04 15:15:22 786

转载 MySQL 中 GROUP BY 基本实现原理

之前连着写了几篇关于 MySQL 中常用操作的一些基本实现原理,如,MySQL ORDER BY,MySQL Join,这次再写一篇 MySQL 中 GROUP BY 的基本实现原理。由于 GROUP BY 实际上也同样会进行排序操作,而且与 ORDER BY 相比,GROUP BY 主要只是多了排序之后的分组操作。当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函

2015-12-04 14:52:51 431

转载 MySQL ORDER BY 的实现分析

总的来说,在 MySQL 中的ORDER BY有两种排序实现方式,一种是利用有序索引获取有序数据,另一种则是通过相应的排序算法,将取得的数据在内存中进行排序。下面将通过实例分析两种排序实现方式及实现图解:假设有 Table A 和 B 两个表结构分别如下:sky@localhost : example 01:48:21> show create table A\G

2015-12-04 14:24:56 668

转载 MySQL数据库性能优化之存储引擎选择

MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系。由于各存储引擎功能特性差异较大,这篇文章主要是介绍如何来选择合适的存储引擎来应对不同的业务场景。MyISAM特性不支持事务:MyISAM存储引擎不支持事务,所以对事务有要求的业务场景不能使用表级锁定:其

2015-12-04 14:13:43 372

转载 MySQL 数据库性能优化之SQL优化

作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明 链接:http://isky000.com/database/mysql-performance-tuning-sql |  del.icio.us | Twitter it | Hosted On DreamHost 可以通过我的折扣码 iMySQLer 获得优惠折扣

2015-12-04 14:06:31 332

转载 MySQL 数据库性能优化之索引优化

大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引可以提高数据访问效率。为什么索引能提高数据访问性能?他会不会有“副作用”?是不是索引创建越多,性能就越好?到底该如何设计索引,才能最大限度的发挥其效能?这篇文章主要是带着上面这几个问题来做一个简要的分析,同时排除了业务场景所带来的特殊性,请不要纠结业务场景的影响。索引为什么能提高数据访问性能?很多人只知道索

2015-12-04 12:05:25 300

转载 MySQL数据库性能优化之硬件瓶颈分析

在过往与很多人的交流过程中发现,在谈到基于硬件来进行数据库性能瓶颈分析的时候,常被大家误解为简单的使用更为强劲的主机或者存储来替换现有的设备。个人觉得这其中可能存在一个非常大的误区。我们在谈论基于硬件进行优化的时候,不能仅仅将数据库使用的硬件划分为主机和存储两部分,而是需要进一步对硬件进行更细的分解,至少也应该分解到如下范畴:主机CPU:仅仅只能决定运算速度,及时是运算

2015-12-04 11:53:25 322

转载 MySQL数据库性能优化之硬件瓶颈分析

在过往与很多人的交流过程中发现,在谈到基于硬件来进行数据库性能瓶颈分析的时候,常被大家误解为简单的使用更为强劲的主机或者存储来替换现有的设备。个人觉得这其中可能存在一个非常大的误区。我们在谈论基于硬件进行优化的时候,不能仅仅将数据库使用的硬件划分为主机和存储两部分,而是需要进一步对硬件进行更细的分解,至少也应该分解到如下范畴:主机CPU:仅仅只能决定运算速度,及时是运算

2015-12-04 11:52:07 257

转载 MySQL 数据库性能优化之表结构优化

很多人都将 数据库设计范式 作为数据库表结构设计“圣经”,认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求。殊不知,在N年前被奉为“圣经”的数据库设计3范式早就已经不完全适用了。这里我整理了一些比较常见的数据库表结构设计方面的优化技巧,希望对大家有用。由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 pa

2015-12-04 11:49:19 330

转载 MySQL 数据库性能优化之缓存参数优化

在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣的朋友们有所帮助。这是 MySQL数据库性能优化专题 系列的第一篇文章:MySQL 数据库性能优化之缓存参数优化数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工

2015-12-04 11:41:47 374

转载 索引扫描还是全表扫描(Index Scan Or Full Table Scan)

作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明 链接:http://isky000.com/database/index_scan_or_full_table_scan |  del.icio.us | Twitter it | Hosted On DreamHost 可以通过我的折扣码 iMySQLer 获得优惠折

2015-12-04 11:26:48 3155

转载 MySQL执行计划解读

Explain语法EXPLAIN SELECT ……变体:1. EXPLAIN EXTENDED SELECT ……将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT ……用于分区表的EXPLAIN执行计划包含的信息 id

2015-12-04 11:25:28 327

转载 Android的ADT不能自动生成R.java

【问题】之前用Android的ADT编译android项目,都是正常的,都可以正常在gen下面生成对应的R.java。最近遇到问题是:在更新了ADT到最新的22版本后:【记录】在Eclipse 4.3.1 Kepler中安装最新版的ADT 22.3.0结果却遇到问题了:在gen目录下,不能生成对应的R.java了。(另外一个Bui

2015-11-15 23:30:33 1197

转载 各种排序算法的分析及java实现

排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。  内排序有可以分为以下几类:  (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。  (2)、选择排序:简单选择排序、堆排序。  (3)、交换排序:冒泡排序、快速排序。  (4)、归并排序

2015-11-13 13:25:46 350

原创 Android 实用工具Hierarchy Viewer实战

步骤1 设计界面  在我们的这个例子中,有三个不同的界面,以方便我们演示使用Hierarchy Viewer。每一个界面都使用了LinearLayout和FrameLayout布局,以及文本框TextView及图片框ImageView控件。如下图,三个界面中的图案分别用了一只小猫,一个鱼缸,一条金鱼,它们各自的位置布局见下图:

2015-11-12 11:52:22 351

空空如也

空空如也

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

TA关注的人

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