`
jieke_ZJ
  • 浏览: 44767 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
redis真的是一个很好的技术,它可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。。。 redis之所以能解决高并发的原因是它可以直接访问内存,而以往我们用的是数据库(硬盘),提高了访问效率,解决了数据库服务器压力。 为什么redis的地位越来越高,我们为何不选择memcache,这是因为memcache只能存储字符串,而redis存储类型很丰富(例如有字符串、LIST、SET等),memcache每个值最大只能存储1M,存储资源非常有限,十分消耗内存资源,而redis可以存储1G,最重要的是memcache它不如redis安全,当服务器发生故障或者意外关机等情况时,r ...
dubbo 1,rpc的分布式集群支持:负载均衡是对外提供一个公共地址,请求过来时通过轮询、随机的形式来分摊压力,挂一台补一台 2,结合zookeeper解藕:(提供者注册和消费者订阅)客户端和服务端启动的时候都会把自己的机器IP注 ...
Tomcat有很多方面,我从内存、并发、缓存四个方面介绍优化方法。 一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数。 JAVA_OPTS参数说明 -server  启用jdk 的 server 版; -Xms    java虚拟机初始化时的最小内存; -Xmx   java虚拟机可使用的最大内存; -XX:PermSize    内存永久保留区域 -XX:MaxPermSize   内存最大永久保留区域 服务器参数配置 现公司服务器内存一般都可以加到最大2G ,所以 ...
http://www.cnblogs.com/loeng/p/6540104.html
synchronized关键字 synchronized,我们谓之锁,主要用来给方法、代码块加锁。当某个方法或者代码块使用synchronized时,那么在同一时刻至多仅有有一个线程在执行该段代码。当有多个线程访问同一对象的加锁方法/代码块时,同一时间只有一个线程在执行,其余线程必须要等待当前线程执行完之后才能执行该代码段。但是,其余线程是可以访问该对象中的非加锁代码块的。 synchronized主要包括两种方法:synchronized 方法、synchronized 块。 synchronized 方法 通过在方法声明中加入 synchronized关键字来声明 synchron ...
问题引出: 我们对数据库的操作是一个耗时过程,假如我们需要让数据库批量操作完成之后,再跳转到另外一个页面,注意:是批量操作完成之后再跳转。   分析:以上需求我们遇到2个难点, 第一个难点是怎么控制并发问题, 第二个难点是怎么使主线程等待所有子线程完成之后再执行。   首先,我们先解决并发问题
一、关于分布式锁 关于分布式锁,可能绝大部分人都会或多或少涉及到。 我举二个例子: 场景一:从前端界面发起一笔支付请求,如果前端没有做防重处理,那么可能在某一个时刻会有二笔一样的单子同时到达系统后台 ...
在分布式系统中,同时满足“一致性”、“可用性”和“分区容错性”三者是不可能的。分布式系统的事务一致性是一个技术难题,各种解决方案孰优孰劣? 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。 我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDBC、ADO.NET),结合关系型数据库自带的事务管理机制来实现事务性的需求。关系型数据库通常具有ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isola ...
想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。   以下是本文目录大纲:   一.对ThreadLocal的理解   二.深入解析ThreadLocal类   三.ThreadLocal的应用场景   若有不正之处请多多谅解,并欢迎批评指正。   请尊重作者劳动成果,转载请标明原文链接:    http://www.cnblogs.com/dolphin0520/p ...
<!-- Baidu Button BEGIN --> 关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下   1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  > ...
记得当初看教程的时候大家都说lock性能比好不少,最近需要自己设计一个缓存终于要自己尝试一番了。 1.关于两者的实现的比较 A).一般认为synchronized关键字的实现是源自于像信号量之类的线程同步机制,涉及到线程运行状态的切换,在高并发状态下,CPU消耗过多的时间在线程的调度上,从而造成了性能的极大浪费。然而真的如此么?B).lock实现原理则是依赖于硬件,现代处理器都支持CAS指令,所谓CAS指令简单的来说Compare And Set,CPU循环执行指令直到得到所期望的结果,换句话来说就是当变量真实值不等于当前线程调用时的值的时候(说明其他线程已经将这个值改变),就不会赋予变量 ...
本文为博主原创文章,转载请注明出处:http://blog.csdn.net/eson_15/article/details/51145788   前面已经学习完了List部分的源码,主要是ArrayList和LinkedList两部分内容,这一节主要总结下List部分的内容。 List概括         先来回顾一下List在Collection中的的框架图:     从图中我们可以看出:         1. List是一个接口,它继承与Collection接口,代表有序的队列。         2. AbstractList是一个抽象类,它继承与AbstractC ...
并发问题的症状 多线程put后可能导致get死循环 从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get()这个方法上了,重启程序后问题消失。但是过段时间又会来。而且,这个问题在测试环境里可能很难重现。 我们简单的看一下我们自己的代码,我们就知道HashMap被多个线程操作。而Java的文档说HashMap是非线程安全的,应该用ConcurrentHashMap。但是 ...
作者:Intopass链接:https://www.zhihu.com/question/20794107/answer/75164285来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。① 首先你要明白静态代理的作用我们有一个字体提供类,有多种实现(从磁盘,从网络,从系统) public interface FontProvider { Font getFont(String name); } public abstract class ProviderFactory { public static FontProvider getFo ...
Java中要实现将对象保存起来持久化,需要让对象实现Serializable接口,这样就能将java对象用二进制流保存并恢复。下面我将以保存到文件和保存到mysql来进行解析。先给出序列化类的定义:   [html] view plain copy print? package model;      import java.io.Serializable;   import java.util.Date;   /*    * 实现可序列化接口    */   public class Person implements Serializable{   ...
Global site tag (gtag.js) - Google Analytics