- 博客(16)
- 收藏
- 关注
原创 秒杀系统设计的要点
一、秒杀系统涉及到的知识点高并发,cache,锁机制基于缓存架构redis,memcached的先进先出队列稍微大一点的秒杀,肯定是分布式集群的。数据库压力秒杀超卖问题如何防止用户来刷,黑名单?IP限制?利用memcached的带原子性特性的操作做并发控制二、秒杀简单设计方案比如有10件商品要秒杀,可以放到缓存中,读写时不要加锁。 当并发量大的时候,可能有25个人秒...
2018-07-08 20:32:53
470
原创 HTTPS的单向认证和双向认证
一、HTTPHyper Text Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有www文件必须遵循的标准。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息是不安全的。 使用TCP端口为80二、HTTPSHyper Text Transfer Protocol over Secure Socket Layer,...
2018-07-08 16:48:11
658
原创 Maven常用命令
Maven命令的格式为 mvn [plugin-name]:[goal-name],可以接收的参数如下:-D 指定参数,如-Dmaven.test.skip=true 跳过单元测试; -P 指定Profile配置,可以用于区分环境; -e 显示maven运行出错的信息; -o 离线执行命令,即不去远程仓库更新包; -X 显示maven允许的debug信息; -U 强制去远程更新sna...
2018-07-08 16:23:43
281
原创 Java RMI和RPC的区别
RPC远程过程调用RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。RPC 系统采用XDR来编码远程调用的参数和返回值。一次RPC调用的过程大概有10步:执行客户端调用语句,传送参数调用本地系统发送网络消息消息传送到远程主机服务器得到消息并取得参数根据调用请求以及参数执行远程过程(服务)执行过程完毕,...
2018-07-08 16:07:02
611
原创 Mybatis连接MySQL:No operations allowed after connection closed.
原因分析:服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8小时,MySQL将自动断开该connection,这就是问题的所在。在C3P0 pools中的connections如果空闲超过8小时,MySQL将其断开,而C3P0并不知道该connection已经失效,如果这时有Client请求connection,C3P0将该失效的connectio...
2018-06-25 14:33:24
1199
1
原创 阿里一面遇到的一个智力题
面试阿里的时候,面试官最后出了一道智力题,感觉自己答得不好。 题目:现有两条相同但粗细不均匀的绳子,点燃其中一根绳子,燃尽需要1个小时。现在需要测出15分钟这个时间长度,请给出方案。解答:取一根绳子,同时点燃两端,这样半个小时该绳子就会燃尽。所以可以同时点燃第一根绳子的两端,并在此时点燃另一根绳子的一端,这样第一根绳子半小时后燃尽,此时第二根绳子也燃烧了半个小时,接着迅速点燃这跟绳子的另一端...
2018-03-20 20:19:34
2483
原创 深入理解Java虚拟机【总结】
1. 虚拟机内存区域: (1)程序计数器。这是一块比较小的内存区域,可以看作是当前线程所执行字节码的行号指示器。Java虚拟机多线程是通过线程轮流切换并分配处理器运行时间来实现的,为了使线程切换后能恢复到正确的位置,每条线程都需要一个独立的计数器,各条线程的程序计数器独立存储,互不影响,线程私有。如果当前线程执行的是一个Java方法,那么程序计数器里存放的就是线程所执行字节码的地址,如果当前线程...
2018-02-24 15:39:01
172
原创 交换两个int型变量的方法
一、中间变量 比较常用的方法,利用一个临时变量来存储。int a = 1, b = 2, tmp;tmp = a;a = b;b = tmp;二、两数之和加减运算(可能整型溢出)a = a + b; //计算两数之和b = a - b; //用和减去b得aa = a - b; //用和减去a(此时的b已经被赋予了a的值)得b三、异或a = a ^ b; b = a ^ b;
2017-12-06 11:04:24
384
原创 Java基础--注解
一、 什么是注解定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。通俗地讲,就是符合一定格式的语法。作用: ①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】 ②代码分析:通过代码里标识的元数据对代码进
2017-10-23 22:03:31
230
原创 集群/分布式环境下5种session处理策略
前言在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A、B两台服务器,用户在第一次访问网站时,Nginx通过其负载均衡机制将用户请求转发到A服务器,这时A服务器就会给用户创建一个Session。当用户第二次发送请求时,Nginx将其负载均衡到B服务器,而这时候B服务器并不存在Session,所以就会...
2017-10-23 10:46:20
312
原创 常见排序算法总结
1. 冒泡排序 普通版:public static void bubbleSort(int[] nums){ int len = nums.length; for(int i = 0; i < len - 1; i++){ for(int j = 0; j < len - 1 - i; j++){ if(nums[j +...
2017-10-18 22:04:17
219
原创 IDEA中 Invalid bound statement (not found)解决方法
Mybatis的mappers映射配置中,一般都会使用批量加载mapper,如:<mappers> <package name="com.ztq.mapper" /></mappers>指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载。遵循一些规范: 需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中上边规范的前提是:
2017-10-17 18:10:38
1677
原创 Linux中grep命令总结
grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具。无论何种原因,如果系统没有预装它的话,可以通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和RHEI/CentOS/Fedora系中的yum)sudo apt-get install grep#sudo yum install grep1. 搜索和寻找文件 例:假设你已经在你的电脑上安装了一个全新的Ub
2017-10-11 15:07:14
511
原创 Java基础--反射
反射:一个Java类中,包含成员变量、成员方法等信息。反射就是把类中的这些信息映射成一个个的类。反射的基本使用:获取类的字节码对象有三种方法:类名.class对象名.getClass()Class.forName(类的全名) Class对象提供了如下常用方法: public Constructor getConstructor(Class...p
2017-10-09 17:01:33
197
原创 Spring中InitializingBean接口使用
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承改接口的类,在初始化bean的时候都会执行该方法。测试程序:import org.springframework.beans.factory.InitializingBean;public class TestInitializingBean impleme
2017-09-22 11:28:34
1130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人