
Java
西街恶人
Java Flex Linux Android
展开
-
后端开发之多应用之间单点登录
早上还没到公司,电话就响了,电话那头一个妹子的声音,我一听,咦!第一感觉系统有问题,然后还没等某人开口,我就问系统啥问题???她说你别慌,我就让你赶紧到公司帮我刷个数据而已啊,难道你们程序员脑子都是bug吗?我系统用户名密码忘记了,帮我重置下,公司系统太多了,都要记,我是一个文科生哎!难为我,能不能只让我登录一次系统其他系统我点点点直接跳转进去行不行。。。真想自...原创 2020-03-11 23:42:01 · 1020 阅读 · 1 评论 -
后端开发之接口幂等性设计
微信公众号连接:https://mp.weixin.qq.com/s/tSnOVPJJvjZjCYyCSp2E8w关注:一、天天在写Bug,好难哦 今天晨会结束后,领导叫上了陈同学,到会议室说,小陈啊,我现在手头有一个比较紧急的任务,需要你帮忙处理下。大致的情况是项目二组领导找他了,需要我们这边提供一个创建客户/供应商接口。然后巴拉巴拉说了一大堆的话,最后说jira已经...原创 2020-03-07 22:33:06 · 6062 阅读 · 0 评论 -
分布式系统如何保证接口幂等性?
这里我不详细说明直接说一般常见的解决方案1、数据表增加state字段,数据修改成功后,把state字段改为已完成等2、插入修改历史,以修改的数据ID作为唯一建,插入历史表中,如果已存在,代表重复执行3、当前请求存在redis里面,下次请求过来,判断Redis里面是否已经存在,如存在代表重复执行,如支付成功,结果存redis...原创 2019-10-28 22:40:42 · 460 阅读 · 0 评论 -
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 · 591 阅读 · 0 评论 -
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 · 473 阅读 · 0 评论 -
为什么不能用memcached存储Session
Memcached创建者Dormando很早就写过两篇文章[1][2],告诫开发人员不要用memcached存储Session。他在第一篇文章中给出的理由大致是说,如果用memcached存储Session,那么当memcached集群发生故障(比如内存溢出)或者维护(比如升级、增加或减少服务器)时,用户会无法登录,或者被踢掉线。而在第二篇文章中,他则指出,memcached的回收机制可能会导致用翻译 2016-09-19 18:36:39 · 399 阅读 · 0 评论 -
[SpringMVC]自定义注解实现控制器访问次数限制
我们需要根据IP去限制用户单位时间的访问次数,防止刷手机验证码,屏蔽注册机等,使用注解就非常灵活了1 定义注解查看文本打印@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @Documented //最高优先级 @Order(Ordered.HIGHES转载 2016-11-03 15:29:52 · 1431 阅读 · 0 评论 -
聊聊 Redis 使用场景
使用场景说明计数器数据统计的需求非常普遍,通过原子递增保持计数。例如,点赞数、收藏数、分享数等。排行榜排行榜按照得分进行排序,例如,展示最近、最热、点击率最高、活跃度最高等等条件的top list。用于存储时间戳类似排行榜,使用redis的zset用于存储时间戳,时间会不断变化。例如,按照用户关注用户的最新动态列表。记录用户判定信息记录用户判定信息的转载 2016-12-09 17:08:42 · 1048 阅读 · 0 评论 -
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 · 879 阅读 · 1 评论 -
理解和掌握类的加载过程以及子类继承父类后,重写方法的调用问题
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 · 440 阅读 · 0 评论 -
好问题
1.数据库锁一共分为几种?锁一般在什么情况下使用?2:怎样处理百万级的数据? 怎样去优化查询3:现在要有一个关键字aa 要查询文章内容包括aa字符的信息 不能用%aa%和aa%,请问还有什么方法可以查询到包含aa的字符文章信息??4:临时表一共分为几种?它们之间有哪些区别?1.数据库锁一共分为几种?锁一般在什么情况下使用?--锁作为一种安全机制,用于控制多个用户的并发操作,原创 2015-12-06 23:46:15 · 469 阅读 · 0 评论 -
应用枚举类型写单例
public enum Elvis {INSTANCE;public void leaveTheBuilding() {}}原创 2013-07-23 14:45:59 · 601 阅读 · 0 评论 -
Javascript Prototype
javascript的继承是通过prototype这个属性实现的。 每个javascript的变量都是一个对象,每个对象都有它自己的 原型(prototype),而每个对象默认的原型是 Object,和大多数面向对象语言一样,对象的祖先是 Object。 我们使用js对象的时候,通过 对象名.属性 来调用。当对象本事不包含该属性的时候,会去查找对象的 原型(Prototype),如转载 2013-09-10 18:13:33 · 515 阅读 · 0 评论 -
分治算法—对数组排序
1.分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。 分治法解题的一般步骤: (1)分解,将要解决的问题划分成若干规模较小的同类问题; (2)求解,当子问题划分得足够小时,用较简单的方法解决; (3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。package algorith转载 2014-03-12 22:17:32 · 886 阅读 · 0 评论 -
分治算法的时间复杂度分析
递归调用时, 最关键的就是递归调用栈的深度. 我们也可以理解为分治算法中, 被分成的段数。 也就是步骤中的第1步中所分成的子序列的个数。 假设这个递归调用深度我们用 D(n) 来表示。另外一个就是在每次处理一个具体子序列时,所用的时间复杂度,我们用C来表示。则最终的这个函数的时间复杂度为: C * D(n) (注:教科书上是:αT(n/b) + D(n) + C(n), 这个问题我们转载 2014-03-12 22:54:07 · 3919 阅读 · 0 评论 -
Java WeakReference的理解与使用
原文 http://itindex.net/detail/47754-面试-java-weakreference前言: 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak reference是什么, 怎么用, 只是期望有人能够提到这个concept和java的G转载 2015-04-03 00:15:11 · 414 阅读 · 0 评论 -
各种排序算法的分析及java实现
排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。 内排序有可以分为以下几类: (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。 (2)、选择排序:简单选择排序、堆排序。 (3)、交换排序:冒泡排序、快速排序。 (4)、归并排序转载 2015-11-13 13:25:46 · 380 阅读 · 0 评论 -
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 · 1376 阅读 · 0 评论 -
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 · 1519 阅读 · 0 评论 -
线性表学习笔记
线型表是最常用的一种数据结构。特点:每个数据元素最多只能有一个直接全趋,每个数据元素最多只能有一个直接后继。一般描述为:A=(a1,a2,...,an);A:线性表的名称当n等于0时表示线性表是空的。原创 2013-05-06 23:36:15 · 484 阅读 · 0 评论