- 浏览: 103277 次
- 性别:
- 来自: 深圳
-
最新评论
文章列表
http://blog.csdn.net/fox_lht/article/details/16952683
http://dubbo.io/Home-zh.htm
oracle主目录:D:\Program Files (x86)\PLSQL Developer\instantclient_12_1
oci库配置:D:\Program Files (x86)\PLSQL Developer\instantclient_12_1\oci.dll
登录历史设置固定用户名与密码
1 秒杀业务分析
正常电子商务流程(1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货
秒杀业务的特性(1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高;
2 秒杀技术挑战
假设某网站秒杀活动只推出一件商品,预计会吸引1万人参加活动,也就说最大并发请求数是10000,秒杀系统需要面对的技术挑战有:
对现有网站业务造成冲击秒杀活动只是网站营销的一个附加活动,这个活动具有时间短,并发访问量大的特点,如果和网站原有应用部署在一起,必然会对现有业务造成冲击,稍有不慎可能导致整个网站瘫痪。解 ...
一、Propagation (事务的传播属性)
Propagation : key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。有以下选项可供使用:PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION ...
ssssssssssssssssssssssssssssssssssssssssssssssssss
package com.tty.youl.bank.service.util;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.security.KeyManagementException;
i ...
SpringIOC:
IOC容器
控制反转,
DI:
构造函数注入:通过调用类的构造函数,将接口实现类通过构造函数变量传入
属性注入:通过Setter方法完成调用类所需依赖的注入,更加灵活方便。
接口注入:将调用类所有依赖注入的方法抽 ...
SSO体系结构:
1—-认证中心
2---用户与账号系统,用户数据获取接口
3---客户端模块
4---令牌(token)
单点登录:
业务资源请求,判断token是否存在,token是否有效,
成功访问资源,
如果token不存在将请求Redirect至SSO认证页面,要求用户授权
授权成功,生成token,否则提示授权失败。
携带token再次发起业务资源请求。
ZooKeeper技术
- 博客分类:
- ZooKeeper技术
Master选举 当主机断掉的时候,其他的服务器通过选择,推选出一台新的服务器作为Master主机。
应对网络抖动,所有的服务器监听到master被删除的时候,判断自己是否是Master,
ZooKeeper实现Master选举
ZooKeeper分布式锁:
测试本地需要安装三台虚拟机作为服务器,
集群模式,
单机模式,
伪集群模式, 所有的集群服务都是在一台服务器上,端口号还是有区分的,
客户端使用:
./zkcli.sh -timeout 0 -r -server ip:port
./zkcli.sh -timeout 5000 -server 192.168.1.1 ...
java面试总结知识点
- 博客分类:
- java面试总结知识点
== 与 equalse 的区别
== 比较的是两个对象的地址是否相同 ,equalse实践源码是先比较两个对象地址是否相同,相同直接返回 true 否则,再判断值是否相同,相同返回true,否则返回false.
&与&& 的区别
&是按位运算符,
&&是短路运算,第一个条件为false的时候,第二个条件就不执行了。
&在条件判断的时候两个条件都会执行的。
switch()中的值在jdk1.7之后才支持字符串类型。
跳出for循环的方法,在java中有两种方法,一种是在外层for循环代码块前面用ok:标识,
在内层for循环中 ...
Redis是一个开源的分布式的key-value数据库。
使用C语言编写,单线程运行的。
支持5中数据类型。
高性能,并能提供持久化机制。
支持一致的hash的集群分布,也支持主从复制的高可用方案 。
优点:
高性能: 读写8万/秒 单机性能 。
读性能比写也要好点。
易用性:
支持5种数据类型。
易扩展:
支持集群,
支持高可用。
数据可靠及完整性。
提供两种持久化机制,
一定事务的支持。
生产实践多。
社区活跃度高。
考虑成本最低,
满足用户需求,后期扩展
系统稳定性好,
足够的灵活,
数据量维度,并发量维度(无状态化),部署运维维度。
和hibernate一样,mybatis也有缓存机制
一级缓存是基于 PerpetualCache(mybatis自带)的 HashMap 本地缓存,作用范围为session,所以当session commit或close后,缓存就会被清空
二级缓存默认也是基于 PerpetualCache,但是可以为其制定存储源,比如ehcache
一级缓存缓存的是SQL语句,而二级缓存缓存的是结果对象,看如下例子(mybatis的日志级别设为debug)
?
1
2
3
4
5
6
7
8
List<User> users = sqlSession.selectList("c ...
在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode)(class文件的内容),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行。
...