03 2018 档案

摘要:Java 8 新特性 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。 新特性 Java8 阅读全文
posted @ 2018-03-29 23:33 跨境电商杂货铺 阅读(320) 评论(0) 推荐(0) 编辑
摘要:二、流 2.1 流介绍 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现)。就现在来说,你可以把它们看成遍历数据集的高级迭代器。此外,流还可以透明地并行处理,你无需写任何多线程代码了! 2.2 使用流 上面是Stream API的一些常用操作 阅读全文
posted @ 2018-03-29 23:31 跨境电商杂货铺 阅读(1956) 评论(0) 推荐(1) 编辑
摘要:一、十大特性 1.Lambda表达式 2.Stream函数式操作流元素集合 3.接口新增:默认方法与静态方法 4.方法引用,与Lambda表达式联合使用 5.引入重复注解 6.类型注解 7.最新的Date/Time API (JSR 310) 8.新增base64加解密API 9.数组并行(para 阅读全文
posted @ 2018-03-29 23:28 跨境电商杂货铺 阅读(544) 评论(0) 推荐(0) 编辑
摘要:put和get都首先会调用hashcode方法,去查找相关的key,当有冲突时,再调用equals(这也是为什么刚开始就重温hashcode和equals的原因)! HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键 阅读全文
posted @ 2018-03-29 23:23 跨境电商杂货铺 阅读(200) 评论(0) 推荐(0) 编辑
摘要:数组和链表组合成的链表散列结构,通过hash算法,尽量将数组中的数据分布均匀,如果hashcode相同再比较equals方法,如果equals方法返回false,那么就将数据以链表的形式存储在数组的对应位置,并将之前在该位置的数据往链表的后面移动,并记录一个next属性,来指示后移的那个数据。注意数 阅读全文
posted @ 2018-03-29 23:19 跨境电商杂货铺 阅读(166) 评论(0) 推荐(0) 编辑
摘要:Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执行 Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再执行 Semaphore控制同时访问的线程个数countdownlatch等待多个线程执行完本身线程再 阅读全文
posted @ 2018-03-29 23:16 跨境电商杂货铺 阅读(326) 评论(0) 推荐(0) 编辑
摘要:CountDownLatch用法 等待多个线程执行完才执行 CountDownLatch用法 等待多个线程执行完才执行 CountDownLatch用法 等待多个线程执行完才执行 CountDownLatch用法 等待多个线程执行完才执行 一.CountDownLatch用法 CountDownLa 阅读全文
posted @ 2018-03-29 23:11 跨境电商杂货铺 阅读(450) 评论(0) 推荐(0) 编辑
摘要:public void await() throws InterruptedException { }; //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行 public boolean await(long timeout, TimeUnit unit) throws 阅读全文
posted @ 2018-03-29 23:06 跨境电商杂货铺 阅读(177) 评论(0) 推荐(0) 编辑
摘要:测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。 阅读全文
posted @ 2018-03-29 16:38 跨境电商杂货铺 阅读(219) 评论(0) 推荐(0) 编辑
摘要:先抛出一个问题,如何解决互联网项目中的高并发问题? 1.网络层 2.服务器层面,常用的有nginx分流,负载均衡,负载权重。这些就是为了减轻单台服务器的压力。 3.业务划分 这才是高并发解决方案的重点,系统应该被细粒度地分割成多个模块,如天猫的购物车系统、结算系统等,在具体划分出来的系统上做负载均衡 阅读全文
posted @ 2018-03-28 15:34 跨境电商杂货铺 阅读(224) 评论(0) 推荐(0) 编辑
摘要:监听器实现的主要设计模式是观察者模式, 但一般实现的时候,往往会结合装饰者模式、职责链模式或者模板方法模式给监听器添加额外的灵活性和功能。 阅读全文
posted @ 2018-03-28 11:19 跨境电商杂货铺 阅读(302) 评论(0) 推荐(0) 编辑
摘要:JAVA NIO是同步非阻塞io。同步和异步说的是消息的通知机制,阻塞非阻塞说的是线程的状态 。下面说说我的理解,client和服务器建立了socket连接:1、同步阻塞io:client在调用read()方法时,stream里没有数据可读,线程停止向下执行,直至stream有数据。 阻塞:体现在这 阅读全文
posted @ 2018-03-23 17:59 跨境电商杂货铺 阅读(297) 评论(0) 推荐(0) 编辑
摘要:最近在学习java NIO,发现java nio selector 相对 channel ,buffer 这两个概念是比较难理解的 ,把学习理解的东西以文字的东西记录下来,就像从内存落地到硬盘,把内存中内容换成该知识点的索引。 在介绍Selector之前先明确以下3个问题: 1、selector的作 阅读全文
posted @ 2018-03-23 17:51 跨境电商杂货铺 阅读(415) 评论(0) 推荐(0) 编辑
摘要:为什么使用Selector? 仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事实上,可以只用一个线程处理所有的通道。对于操作系统来说,线程之间上下文切换的开销很大,而且每个线程都要占用系统的一些资源(如内存)。因此,使用的线程越少越好。 但是,需要记住,现代的操作系统和 阅读全文
posted @ 2018-03-23 17:37 跨境电商杂货铺 阅读(191) 评论(0) 推荐(0) 编辑
摘要:当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。 Java NIO和IO的主要区别 下表总结了Java NIO和IO之间的主要差别,我会更详 阅读全文
posted @ 2018-03-23 17:10 跨境电商杂货铺 阅读(1437) 评论(0) 推荐(1) 编辑
摘要:要使用Selector,得向Selector注册Channel,然后调用它的select()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等。 阅读全文
posted @ 2018-03-23 16:01 跨境电商杂货铺 阅读(130) 评论(0) 推荐(0) 编辑
摘要:首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 Java小组 工具资源 - 导航条 - 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 Java小组 工具资源 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 Java小组 工具资源 JVM调优总结(7):调优方法 201 阅读全文
posted @ 2018-03-23 15:54 跨境电商杂货铺 阅读(5493) 评论(0) 推荐(0) 编辑
摘要:JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里 JProfiler:商业软件,需要付费。功能强大。详细说明参考这里 VisualVM:JDK自带,功 阅读全文
posted @ 2018-03-23 15:49 跨境电商杂货铺 阅读(179) 评论(0) 推荐(0) 编辑
摘要:线程池工作队列饱和策略 Java线程池会将提交的任务先置于工作队列中,在从工作队列中获取(SynchronousQueue直接由生产者提交给工作线程)。 那么工作队列就有两种实现策略:无界队列和有界队列。 无界队列不存在饱和的问题,但是其问题是当请求持续高负载的话,任务会无脑的加入工作队列,那么很可 阅读全文
posted @ 2018-03-23 15:39 跨境电商杂货铺 阅读(389) 评论(0) 推荐(0) 编辑
摘要:线程池的处理流程: 线程池执行示意图: 1,首先线程池判断基本线程池是否已满(< corePoolSize ?)?没满,创建一个工作线程来执行任务。满了,则进入下个流程。 2,其次线程池判断工作队列是否已满?没满,则将新提交的任务存储在工作队列里。满了,则进入下个流程。 3,最后线程池判断整个线程池 阅读全文
posted @ 2018-03-23 14:44 跨境电商杂货铺 阅读(732) 评论(0) 推荐(0) 编辑
摘要:ExecutorService接口继承自Executor接口,定义了终止、提交,执行任务、跟踪任务返回结果等方法 1,execute(Runnable command):履行Ruannable类型的任务, 2,submit(task):可用来提交Callable或Runnable任务,并返回代表此任 阅读全文
posted @ 2018-03-23 14:43 跨境电商杂货铺 阅读(191) 评论(0) 推荐(0) 编辑
摘要:线程池实现原理详解: ThreadPoolExecutor是线程池的实现类: [java] view plain copy public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, Tim 阅读全文
posted @ 2018-03-23 14:41 跨境电商杂货铺 阅读(238) 评论(0) 推荐(0) 编辑
摘要:Future必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果 阅读全文
posted @ 2018-03-23 14:37 跨境电商杂货铺 阅读(201) 评论(0) 推荐(0) 编辑
摘要:1.应用程序未采用预编译的方式或使用框架提供的方式不正确,直接将客户端传递的参数拼接在SQL语句中并执行将导致SQL注入产生。 2. 采用floor()函数让MySQL报错来实现SQL注入,由此可从报错信息中直接获取管理员账号密码信息。 在SQL注入攻击中,如果应用程序返回了第一个(原始)查询得到的 阅读全文
posted @ 2018-03-22 17:29 跨境电商杂货铺 阅读(226) 评论(0) 推荐(0) 编辑
摘要:1、Semaphore信号量:跟锁机制存在一定的相似性,semaphore也是一种锁机制,所不同的是,reentrantLock是只允许一个线程获得锁,而信号量持有多个许可(permits),允许多个线程获得许可并执行。可以用来控制同时访问某个特定资源的操作数量,或者同时执行某个指定操作的数量。 示 阅读全文
posted @ 2018-03-22 15:46 跨境电商杂货铺 阅读(327) 评论(0) 推荐(0) 编辑
摘要:locks部分:包含在java.util.concurrent.locks包中,提供显式锁(互斥锁和速写锁)相关功能。 atomic部分:包含在java.util.concurrent.atomic包中,提供原子变量类相关的功能,是构建非阻塞算法的基础。 executor部分:散落在java.uti 阅读全文
posted @ 2018-03-22 15:02 跨境电商杂货铺 阅读(2986) 评论(0) 推荐(0) 编辑
摘要:-闭锁(Latch) 闭锁(Latch):一种同步方法,可以延迟线程的进度直到线程到达某个终点状态。通俗的讲就是,一个闭锁相当于一扇大门,在大门打开之前所有线程都被阻断,一旦大门打开所有线程都将通过,但是一旦大门打开,所有线程都通过了,那么这个闭锁的状态就失效了,门的状态也就不能变了,只能是打开状态 阅读全文
posted @ 2018-03-22 14:51 跨境电商杂货铺 阅读(524) 评论(0) 推荐(0) 编辑
摘要:synchronized 快速回顾: 1.当代码块 加上 synchrozized之后,代码会发生什么改变? 答案:有两条改变。一个是原子性(atomicity),一个是可见性(visibility)。原子性意味着一次只能有一个线程获得代码锁,进入synchronized 包围的代码块中执行。而可见 阅读全文
posted @ 2018-03-22 14:14 跨境电商杂货铺 阅读(176) 评论(0) 推荐(0) 编辑
摘要:concurrent.locks包下常用类 1. Lock 首先要说明的是Lock,它是一个接口: [java] view plain copy public interface Lock { void lock(); void lockInterruptibly() throws Interrup 阅读全文
posted @ 2018-03-22 11:47 跨境电商杂货铺 阅读(270) 评论(0) 推荐(0) 编辑
摘要:synchronized的缺陷 我们知道,可以利用synchronized关键字来实现共享资源的互斥访问。Java 5在java.util.concurrent.locks包下提供了另一种来实现线程的同步访问,那就是Lock。既然有了synchronized来实现线程同步,Java为什么还需要提供L 阅读全文
posted @ 2018-03-22 11:38 跨境电商杂货铺 阅读(318) 评论(0) 推荐(0) 编辑
摘要:volatile跟Java的内存模型有关,非volatile变量时,平常情况,线程执行时会将变量从主内存加载到线程工作内存,建立一个副本,在某个时刻写回。 valatile指的每次都读取主内存的值,有更新则立即写回主内存。 “volatile保证了线程之间的可见性”:因为线程看到volatile变量 阅读全文
posted @ 2018-03-22 10:52 跨境电商杂货铺 阅读(846) 评论(0) 推荐(0) 编辑
摘要:作者:xyzZ链接:https://www.zhihu.com/question/49656589/answer/117826278来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 .因为非原子性,volatile往往不能保证线程安全 .因为非原子性,volatile往 阅读全文
posted @ 2018-03-22 10:43 跨境电商杂货铺 阅读(171) 评论(0) 推荐(0) 编辑
摘要:本文转自http://blog.csdn.net/gs80140/article/details/51496925 一直对zookeeper的应用和原理比较迷糊,今天看一篇文章,讲得很通透,分享如下: 场景一 有这样一个场景:系统中有大约100w的用户,每个用户平 均有3个邮箱账号,每隔5分钟,每个 阅读全文
posted @ 2018-03-22 10:32 跨境电商杂货铺 阅读(175) 评论(0) 推荐(0) 编辑
摘要:作者:只是因为情非得已链接:https://www.zhihu.com/question/31216211/answer/244613756来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 第一部分 Java高并发编程 1. Java 线程、锁基础知识 2. 深入剖析v 阅读全文
posted @ 2018-03-22 10:12 跨境电商杂货铺 阅读(206) 评论(0) 推荐(0) 编辑
摘要:1.rocketmq持久化: RocketMQ 的所有消息都是持久化的, 先写入系统 PAGECACHE, 然后刷盘, 可以保证内存与磁盘都有一份数据,访问时,直接从内存读取。 RocketMQ 的所有消息都是持久化的, 先写入系统 PAGECACHE, 然后刷盘, 可以保证内存与磁盘都有一份数据, 阅读全文
posted @ 2018-03-22 10:11 跨境电商杂货铺 阅读(642) 评论(0) 推荐(0) 编辑
摘要:推荐看下RocketMQ,使用文件做持久化, 并支持分布式事务(虽然可能造成较多的写脏), 异步刷盘,内存预分配, 高可用采用了同步双写及异步复制的方式, 通信是用netty做的,基本上所有耗时的操作都采用了异步的方式, 另外与NameServer之间的通信是通过HTTP的,这里可能要加入多个nam 阅读全文
posted @ 2018-03-22 10:09 跨境电商杂货铺 阅读(476) 评论(0) 推荐(0) 编辑
摘要:乐观锁悲观锁是一种思想。可以用在很多方面。 比如数据库方面。悲观锁就是for update乐观锁就是 version字段 JDK方面:悲观锁就是sync乐观锁就是原子类(内部使用CAS实现) 本质来说,就是悲观锁认为总会有人抢我的。乐观锁就认为,基本没人抢。 适用场景: 悲观锁:比较适合写入操作比较 阅读全文
posted @ 2018-03-22 09:59 跨境电商杂货铺 阅读(615) 评论(0) 推荐(0) 编辑
摘要:乐观锁说白了并不是锁,而只是版本号检查而已 乐观锁说白了并不是锁,而只是版本号检查而已 乐观锁说白了并不是锁,而只是版本号检查而已 先说乐观锁和悲观锁的机制:1. 乐观锁是一种思想,具体实现是,表中有一个版本字段,第一次读的时候,获取到这个字段。处理完业务逻辑开始更新的时候,需要再次查看该字段的值是 阅读全文
posted @ 2018-03-22 09:53 跨境电商杂货铺 阅读(1710) 评论(1) 推荐(0) 编辑
摘要:高频全表扫描 0.5 表大小超过200M,且SQL高频执行(15分钟内超过500次),PIR 3级,表大小超过高速缓存的1.5%,报PIR 2级。 禁止使用select * 0.5 禁止使用select * ,必须明确选择所需的列,每句SQL扣0.5分。 禁止出现重复查询子句 0.5 可以使用wit 阅读全文
posted @ 2018-03-22 09:48 跨境电商杂货铺 阅读(248) 评论(0) 推荐(0) 编辑
摘要:threadlocal里面使用了一个存在弱引用的map,当释放掉threadlocal的强引用以后,map里面的value却没有被回收.而这块value永远不会被访问到了. 所以存在着内存泄露. 最好的做法是将调用threadlocal的remove方法. 在threadlocal的生命周期中,都存 阅读全文
posted @ 2018-03-21 15:03 跨境电商杂货铺 阅读(177) 评论(0) 推荐(0) 编辑
摘要:本文转自http://blog.csdn.net/huachao1001/article/details/51970237 ThreadLocal的使用相信大家都比较熟悉,但是ThreadLocal内部是如何做到为不同线程保存不同的副本的呢?能看到这篇文章,说明你也跟我一样好奇。接下来我们一层一层解 阅读全文
posted @ 2018-03-21 14:58 跨境电商杂货铺 阅读(457) 评论(0) 推荐(0) 编辑
摘要:本文转自https://www.cnblogs.com/coshaho/p/5127135.html 感谢作者 一、用法 ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。 阅读全文
posted @ 2018-03-21 14:45 跨境电商杂货铺 阅读(450) 评论(0) 推荐(0) 编辑
摘要:作者:Jaskey Lam链接:https://zhuanlan.zhihu.com/p/25069846来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 RocketMQ服务端的组件有三个,NameServer,Broker,FilterServer(可选,部署于和B 阅读全文
posted @ 2018-03-21 10:39 跨境电商杂货铺 阅读(710) 评论(0) 推荐(0) 编辑
摘要:1. 服务器启动时期的Leader选举 若进行Leader选举,则至少需要两台机器,这里选取3台机器组成的服务器集群为例。在集群初始化阶段,当有一台服务器Server1启动时,其单独无法进行和完成Leader选举,当第二台服务器Server2启动时,此时两台机器可以相互通信,每台机器都试图找到Lea 阅读全文
posted @ 2018-03-20 18:12 跨境电商杂货铺 阅读(1061) 评论(0) 推荐(0) 编辑
摘要:已经凌晨2点多了,看来今天是失眠了,反正睡不着,写篇日记总结一下我的第一次社招面试经历吧。2015年12月1日办理了离职手续,离开了万通中心,也算是和我的第一个东家正式说了再见,其实还是很喜欢国贸的,这是个美妙的地方,容纳着很多金融界人才们的梦想,每每晚上走到这里你会感叹帝都的夜景好美,只可惜这里的 阅读全文
posted @ 2018-03-20 18:09 跨境电商杂货铺 阅读(211) 评论(0) 推荐(0) 编辑
摘要:一个客户端修改了某个节点的数据,其它客户端能够马上获取到这个最新数据吗 ZooKeeper不能确保任何客户端能够获取(即Read Request)到一样的数据,除非客户端自己要求:方法是客户端在获取数据之前调用org.apache.zookeeper.AsyncCallback.VoidCallba 阅读全文
posted @ 2018-03-20 17:49 跨境电商杂货铺 阅读(1125) 评论(0) 推荐(0) 编辑
摘要:针对消息中间件的选择可以从以下方面进行考虑:(主要对比ActiveMQ和RocketMQ) 优先级:我们的项目对此需求不是特别明显,RocketMQ需要新建一个特殊队列来接收优先级高的队列,无法实现从0-65535这种细粒度的控制,ActiveMQ可以精细控制 顺序:我们的消息总线中的消息应该都是无 阅读全文
posted @ 2018-03-20 17:45 跨境电商杂货铺 阅读(546) 评论(0) 推荐(0) 编辑
摘要:RocketMQ(7)——通信协议 RocketMQ的通信协议其实很简单,但是无论是官方的用户手册,还是网上的博客,并没有很清晰简单地把其中所有的内容和原理讲明白。 对于需要扩展其他语言SDK的开发来说,意味着必须要深入到Java源码才能弄懂其概念。 笔者通过深入源码,本文希望以尽量简短的语言描述清 阅读全文
posted @ 2018-03-20 17:44 跨境电商杂货铺 阅读(946) 评论(0) 推荐(0) 编辑
摘要:1、Producer使用指南--发送消息注意事项 1、正常情况下一个业务系统尽可能用一个Topic,消息子类型用tags来标识,tags可以由业务系统自由设置。只有发送消息设置了tags,消费方在订阅消息时,才可以利用tags在broker做消息过滤。 MQCPMessage msg = new M 阅读全文
posted @ 2018-03-20 17:02 跨境电商杂货铺 阅读(10198) 评论(0) 推荐(1) 编辑
摘要:同时每个 Broker 与NameServer 集群中的所有节点建立长连接,定时注册 Topic 信息到所有 NameServer 中。 Producer 与 NameServer 集群中的其中一个节点(随机选择)建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Top 阅读全文
posted @ 2018-03-20 16:51 跨境电商杂货铺 阅读(167) 评论(0) 推荐(0) 编辑
摘要:Broker Broker 是 RocketMQ 系统的主要角色,其实就是前面一直说的 MQ。Broker 接收来自生产者的消息,储存以及为消费者拉取消息的请求做好准备。 Name Server Name Server 为 producer 和 consumer 提供路由信息。 阅读全文
posted @ 2018-03-20 16:49 跨境电商杂货铺 阅读(126) 评论(0) 推荐(0) 编辑
摘要:二.开发实现方案 经刚才沟通, 1. 架构变更:开通钱包实体到短信平台防火墙。 阅读全文
posted @ 2018-03-20 10:40 跨境电商杂货铺 阅读(633) 评论(0) 推荐(0) 编辑
摘要:1.zookeeper羊群效应, 2.薅羊毛 3.缓存雪崩,缓存穿透 阅读全文
posted @ 2018-03-19 15:07 跨境电商杂货铺 阅读(155) 评论(0) 推荐(0) 编辑
摘要:本文转自https://www.cnblogs.com/felixzh/p/5869212.html Zookeeper的功能以及工作原理 1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者, 阅读全文
posted @ 2018-03-19 14:59 跨境电商杂货铺 阅读(172) 评论(0) 推荐(0) 编辑
摘要:如果不用锁机制如何实现共享数据访问。(不要用锁,不要 用sychronized 块或者方法,也不要直接使用 jdk 提供的线程安全的数据结构,需要自己实现一个类来保证多个线程同时读写这个类中的共享数据是线程安全的,怎么 办 ?) 无锁化编程的常用方法 :件 硬件 CPU 同步原语 CAS(Compa 阅读全文
posted @ 2018-03-19 11:48 跨境电商杂货铺 阅读(945) 评论(0) 推荐(0) 编辑
摘要:CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术。简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替换当前变量的值。这听起来可能有一点复杂但是实际上你理解之后发现很简单,接下来,让我们跟深入的了解一下 阅读全文
posted @ 2018-03-19 11:40 跨境电商杂货铺 阅读(162) 评论(0) 推荐(0) 编辑
摘要:7、冗余 网站需要7×24小时连续运行,那么就得有相应的冗余机制,以防某台机器宕掉时无法访问,而冗余则可以通过部署至少两台服务器构成一个集群实现服务高可用。数据库除了定期备份还需要实现冷热备份。甚至可以在全球范围内部署灾备数据中心。 阅读全文
posted @ 2018-03-19 11:32 跨境电商杂货铺 阅读(410) 评论(0) 推荐(0) 编辑
摘要:二、架构模式 1.分层:是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。一般分为应用层、服务层、数据层,应用层还可细分为视图层和业务逻辑层,服务层也可细分为数据接口层(适配各种输入和输出的 阅读全文
posted @ 2018-03-19 11:18 跨境电商杂货铺 阅读(210) 评论(0) 推荐(0) 编辑
摘要:Mysql InnoDB 排他锁 用法: select … for update; 例如:select * from goods where id = 1 for update; 排他锁的申请前提:没有线程对该结果集中的任何行数据使用排他锁或共享锁,否则申请会阻塞。 for update仅适用于In 阅读全文
posted @ 2018-03-19 11:04 跨境电商杂货铺 阅读(312) 评论(0) 推荐(0) 编辑
摘要:悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op 阅读全文
posted @ 2018-03-19 10:32 跨境电商杂货铺 阅读(327) 评论(0) 推荐(0) 编辑
摘要:举个实际应用场景:用户A在网页上发起一笔游戏充值请求,浏览器引导用户去银行支付,支付成功后系统给用户进行充值。 协议设计上,我们通过全局唯一的充值订单号贯穿整个业务流程,使该业务支持幂等。 应用实现上,我们列举在银行支付成功后回调系统,进行充值的步骤进行说明。 阅读全文
posted @ 2018-03-19 10:28 跨境电商杂货铺 阅读(396) 评论(0) 推荐(0) 编辑
摘要:本文转自https://www.cnblogs.com/weidagang2046/archive/2011/06/04/2063696.html#!comments 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中, 阅读全文
posted @ 2018-03-19 10:26 跨境电商杂货铺 阅读(170) 评论(0) 推荐(0) 编辑
摘要:1.uuid 2.雪花算法 阅读全文
posted @ 2018-03-19 10:24 跨境电商杂货铺 阅读(213) 评论(0) 推荐(0) 编辑
摘要:举个例子:有一个订单系统,对外提供了一个处理接口,如果有个订单001是要扣除用户的100块钱,那么订单001被多次调用,也只会处理成功一次,也就是只会扣除用户100块。也可以理解为去除重复调用 例如: 1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 2. 我们发起一笔付款请 阅读全文
posted @ 2018-03-19 10:03 跨境电商杂货铺 阅读(3777) 评论(0) 推荐(1) 编辑
摘要:如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。锁定(Locking)发生在当一个事务获得对某一资源的“锁”时,这时,其他的事务就不能更改这个资源了,这种机制的存在是为了保证数据一致性。 简单的说,进程A等待进程B释放他的资源,B又等待A释放他的 阅读全文
posted @ 2018-03-16 00:24 跨境电商杂货铺 阅读(225) 评论(0) 推荐(0) 编辑
摘要:本文转自http://blog.csdn.net/zhuqiuhui/article/details/51849692 今天研读Java并发容器和框架时,看到为什么要使用ConcurrentHashMap时,其中有一个原因是:线程不安全的HashMap, HashMap在并发执行put操作时会引起死 阅读全文
posted @ 2018-03-16 00:15 跨境电商杂货铺 阅读(1073) 评论(0) 推荐(0) 编辑
摘要:本文转自http://blog.csdn.net/jks456/article/details/71453053 在微服务架构下,我们在完成一个订单流程时经常遇到下面的场景: 一个订单创建接口,第一次调用超时了,然后调用方重试了一次 在订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了 阅读全文
posted @ 2018-03-16 00:11 跨境电商杂货铺 阅读(3359) 评论(0) 推荐(0) 编辑
摘要:这个问题源自于,我想找一个分布式下的ID生成器。 这个最简单的方案是,数据库自增ID。为啥不用咧?有这么几点原因,一是,会依赖于数据库的具体实现,比如,mysql有自增,oracle没有,得用序列,mongo似乎也没有他自己有个什么ID,sqlserver貌似有自增等等,有些不稳定因素,因为ID生成 阅读全文
posted @ 2018-03-16 00:00 跨境电商杂货铺 阅读(2337) 评论(0) 推荐(0) 编辑
摘要:Java内存回收机制 本文转自https://www.cnblogs.com/prophet-it/p/6498275.html 1.java的内存 java的内存结构分为 堆 (是gc的主要区域) 线程共享,主要是用于分配实例对象和数组 栈 线程私有,它的生命周期和线程相同,又分成 虚拟机栈和本地 阅读全文
posted @ 2018-03-15 23:49 跨境电商杂货铺 阅读(347) 评论(0) 推荐(0) 编辑
摘要:电话面试: 第一次面试关注的问题,1)java基础: jvm 内存回收,垃圾回收基本原理,Java并发包的线程池,Java8的新特性。nio 堆排序。conrenthashmap , concurrenthashmap 的size实现, spring的事务 2)数据库基础: 事务隔离级别,数据库连接 阅读全文
posted @ 2018-03-15 23:42 跨境电商杂货铺 阅读(2025) 评论(0) 推荐(0) 编辑
摘要:ZK的数据结构特点 ZooKeeper这种数据结构有如下这些特点: 1. 每个子目录项如NameService都被称作znode,这个znode是被它所在的路径唯一标识,如Server1这个znode的标识为/NameService/Server1 2. znode可以有子节点目录,并且每个znod 阅读全文
posted @ 2018-03-15 18:27 跨境电商杂货铺 阅读(877) 评论(0) 推荐(0) 编辑
摘要:最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。 接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。 分布式事务是企业集成中的一个技术难点,也是每一个分布式系 阅读全文
posted @ 2018-03-15 18:19 跨境电商杂货铺 阅读(190) 评论(0) 推荐(0) 编辑
摘要:1.获取分布式锁的总体思路 在获取分布式锁的时候在locker节点下创建临时顺序节点,释放锁的时候删除该临时节点。客户端调用createNode方法在locker下创建临时顺序节点, 然后调用getChildren(“locker”)来获取locker下面的所有子节点,注意此时不用设置任何Watch 阅读全文
posted @ 2018-03-15 17:58 跨境电商杂货铺 阅读(1288) 评论(0) 推荐(0) 编辑
摘要:Exists - 检查Znode的存在 ZooKeeper类提供了 exists 方法来检查znode的存在。如果指定的znode存在,则返回一个znode的元数据。exists方法的签名如下: path- Znode路径 watcher - 布尔值,用于指定是否监视指定的znode path- Z 阅读全文
posted @ 2018-03-15 14:43 跨境电商杂货铺 阅读(2132) 评论(0) 推荐(0) 编辑
摘要:连接到ZooKeeper集合 ZooKeeper类通过其构造函数提供connect功能。构造函数的签名如下 : connectionString - ZooKeeper集合主机。 sessionTimeout - 会话超时(以毫秒为单位)。 watcher - 实现“监视器”界面的对象。ZooKee 阅读全文
posted @ 2018-03-15 14:36 跨境电商杂货铺 阅读(2190) 评论(0) 推荐(0) 编辑
摘要:ZooKeeper API的核心部分是ZooKeeper类。它提供了在其构造函数中连接ZooKeeper集合的选项,并具有以下方法: connect - 连接到ZooKeeper集合 create- 创建znode exists- 检查znode是否存在及其信息 getData - 从特定的znod 阅读全文
posted @ 2018-03-15 11:28 跨境电商杂货铺 阅读(230) 评论(1) 推荐(1) 编辑
摘要:检查状态 状态描述指定的znode的元数据。它包含时间戳,版本号,ACL,数据长度和子znode等细项。 语法 示例 输出 移除Znode 移除指定的znode并递归其所有子节点。只有在这样的znode可用的情况下才会发生。 语法 示例 输出 删除(delete/path)命令类似于 remove  阅读全文
posted @ 2018-03-15 11:26 跨境电商杂货铺 阅读(470) 评论(1) 推荐(1) 编辑
摘要:Watch(监视) 当指定的znode或znode的子数据更改时,监视器会显示通知。你只能在 get 命令中设置watch。 语法 示例 输出 输出类似于普通的 get 命令,但它会等待后台等待znode更改。<从这里开始> 设置数据 设置指定znode的数据。完成此设置操作后,你可以使用 get  阅读全文
posted @ 2018-03-15 11:25 跨境电商杂货铺 阅读(541) 评论(0) 推荐(0) 编辑
摘要:获取数据 它返回znode的关联数据和指定znode的元数据。你将获得信息,例如上次修改数据的时间,修改的位置以及数据的相关信息。此CLI还用于分配监视器以显示数据相关的通知。 语法 示例 输出 要访问顺序节点,必须输入znode的完整路径。 示例 输出 阅读全文
posted @ 2018-03-15 11:22 跨境电商杂货铺 阅读(213) 评论(0) 推荐(0) 编辑
摘要:Zookeeper CLI 由 xpproen 创建,youj 最后一次修改 2016-12-27 Zookeeper CLI Zookeeper CLI 由 xpproen 创建,youj 最后一次修改 2016-12-27 ZooKeeper命令行界面(CLI)用于与ZooKeeper集合进行交 阅读全文
posted @ 2018-03-15 11:20 跨境电商杂货铺 阅读(144) 评论(0) 推荐(0) 编辑
摘要:ZooKeeper服务器是用Java创建的,它在JVM上运行。 创建配置文件 使用命令 vi conf/zoo.cfg 和所有以下参数设置为起点,打开名为 conf/zoo.cfg 的配置文件。 一旦成功保存配置文件,再次返回终端。你现在可以启动zookeeper服务器。 步骤2.4:启动ZooKe 阅读全文
posted @ 2018-03-15 11:16 跨境电商杂货铺 阅读(285) 评论(0) 推荐(0) 编辑
摘要:让我们分析如何在ZooKeeper集合中选举leader节点。考虑一个集群中有N个节点。leader选举的过程如下: 所有节点创建具有相同路径 /app/leader_election/guid_ 的顺序、临时节点。 ZooKeeper集合将附加10位序列号到路径,创建的znode将是 /app/l 阅读全文
posted @ 2018-03-15 11:15 跨境电商杂货铺 阅读(130) 评论(0) 推荐(0) 编辑
摘要:我们知道写入过程比ZooKeeper集合中的读取过程要贵,因为所有节点都需要在数据库中写入相同的数据。因此,对于平衡的环境拥有较少数量(例如3,5,7)的节点比拥有大量的节点要好。 阅读全文
posted @ 2018-03-15 11:11 跨境电商杂货铺 阅读(146) 评论(0) 推荐(0) 编辑
摘要:ZooKeeper本身是一个分布式应用程序,为写入分布式应用程序提供服务。 作为ZooKeeper架构的一部分的每个组件在下表中进行了说明。 客户端,我们的分布式应用集群中的一个节点,从服务器访问信息。对于特定的时间间隔,每个客户端向服务器发送消息以使服务器知道客户端是活跃的。 类似地,当客户端连接 阅读全文
posted @ 2018-03-15 10:57 跨境电商杂货铺 阅读(237) 评论(0) 推荐(0) 编辑
摘要:分布式应用的优点 可靠性 - 单个或几个系统的故障不会使整个系统出现故障。 可扩展性 - 可以在需要时增加性能,通过添加更多机器,在应用程序配置中进行微小的更改,而不会有停机时间。 透明性 - 隐藏系统的复杂性,并将其显示为单个实体/应用程序。 可靠性 - 单个或几个系统的故障不会使整个系统出现故障 阅读全文
posted @ 2018-03-15 10:53 跨境电商杂货铺 阅读(132) 评论(0) 推荐(0) 编辑
摘要:1. 配置管理 Zookeeper提供了这样的一种服务:一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感兴趣的都可以获得变更。这样就省去手动拷贝配置了,还保证了可靠和一致性。 2. 名字服务 这个可以简单理解为一个电话薄,电话号码不好记,但是人名好记,要打谁的电话,直接查人名 阅读全文
posted @ 2018-03-15 10:49 跨境电商杂货铺 阅读(642) 评论(0) 推荐(1) 编辑
摘要:ZooKeeper 允许客户端向服务端注册一个 Watcher 监听, ZooKeeper 允许客户端向服务端注册一个 Watcher 监听, ZooKeeper 允许客户端向服务端注册一个 Watcher 监听, 当服务端的一些指定事件触发了这个 Watcher,那么就会向指定客户端发送一个事件通 阅读全文
posted @ 2018-03-14 11:49 跨境电商杂货铺 阅读(116) 评论(0) 推荐(0) 编辑
摘要:回调函数最经典解释--有个回调函数注册这一步,说白了就是将回调函数像参数一样注册传递给调用方 阅读全文
posted @ 2018-03-14 11:44 跨境电商杂货铺 阅读(534) 评论(0) 推荐(0) 编辑
摘要:ephemeral 英[ɪˈfemərəl]美[ɪˈfɛmərəl]adj. 朝生暮死; 短暂的,瞬息的; 朝露; 一年生; ZooKeeper Watcher 机制 集群状态监控示例 为了确保集群能够正常运行,ZooKeeper 可以被用来监视集群状态,这样就可以提供集群高可用性。使用 ZooKe 阅读全文
posted @ 2018-03-14 11:43 跨境电商杂货铺 阅读(120) 评论(0) 推荐(0) 编辑
摘要:本文转自https://www.cnblogs.com/fanguangdexiaoyuer/p/7077520.html 感谢作者 可以设置观察的操作:exists,getChildren,getData 可以触发观察的操作:create,delete,setData zookeeper观察机制; 阅读全文
posted @ 2018-03-14 11:29 跨境电商杂货铺 阅读(113) 评论(0) 推荐(0) 编辑
摘要:22. 原子性布尔 AtomicBoolean AtomicBoolean 类为我们提供了一个可以用原子方式进行读和写的布尔值,它还拥有一些先进的原子性操作,比如 compareAndSet()。AtomicBoolean 类位于 java.util.concurrent.atomic 包,完整类名 阅读全文
posted @ 2018-03-14 11:13 跨境电商杂货铺 阅读(218) 评论(0) 推荐(0) 编辑
摘要:20. 锁 Lock java.util.concurrent.locks.Lock 是一个类似于 synchronized 块的线程同步机制。但是 Lock 比 synchronized 块更加灵活、精细。顺便说一下,在我的《Java 并发指南》中我对如何实现你自己的锁进行了描述。 Java Lo 阅读全文
posted @ 2018-03-14 11:11 跨境电商杂货铺 阅读(237) 评论(0) 推荐(0) 编辑
摘要:19. 使用 ForkJoinPool 进行分叉和合并 ForkJoinPool 在 Java 7 中被引入。它和 ExecutorService 很相似,除了一点不同。ForkJoinPool 让我们可以很方便地把任务分裂成几个更小的任务,这些分裂出来的任务也将会提交给 ForkJoinPool。 阅读全文
posted @ 2018-03-14 11:10 跨境电商杂货铺 阅读(283) 评论(0) 推荐(0) 编辑
摘要:16. 执行器服务 ExecutorService java.util.concurrent.ExecutorService 接口表示一个异步执行机制,使我们能够在后台执行任务。因此一个 ExecutorService 很类似于一个线程池。实际上,存在于 java.util.concurrent 包 阅读全文
posted @ 2018-03-14 10:59 跨境电商杂货铺 阅读(168) 评论(0) 推荐(0) 编辑
摘要:semaphore英[ˈseməfɔ:(r)]美[ˈsɛməˌfɔr, -ˌfor]n. 臂板信号系统,(铁道)臂板信号装置; Semaphore 用法 信号量主要有两种用途: 保护重要部分 如果你将信号量用于保护一个重要部分,试图进入这一部分的代码通常会首先尝试获得一个许可,然后才能进入重要部分( 阅读全文
posted @ 2018-03-14 10:56 跨境电商杂货铺 阅读(137) 评论(0) 推荐(0) 编辑
摘要:latch 英[lætʃ]美[lætʃ]n. 门闩; 弹簧锁; 锁是每个类的成员变量,它是这个类的固有属性,当然要声明为成员变量。 成员变量的初始化是通过对象的构造函数的。 锁是每个类的成员变量,它是这个类的固有属性,当然要声明为成员变量。 成员变量的初始化是通过对象的构造函数的。 锁是每个类的成员 阅读全文
posted @ 2018-03-14 10:52 跨境电商杂货铺 阅读(271) 评论(0) 推荐(0) 编辑
摘要:本文转自http://blog.csdn.net/defonds/article/details/44021605/ 感谢作者 1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这 阅读全文
posted @ 2018-03-14 10:42 跨境电商杂货铺 阅读(181) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-03-09 14:35 跨境电商杂货铺 阅读(1) 评论(0) 推荐(0) 编辑
摘要:如果你定义了一个单实例的java bean,它有若干属性,但是有一个属性不是线程安全的,比如说HashMap。并且碰巧你并不需要在不同的线程中共享这个属性,也就是说这个属性不存在跨线程的意义。那么你不要sychronize这么复杂的东西,ThreadLocal将是你不错的选择。 举例来说: 输出解释 阅读全文
posted @ 2018-03-08 20:15 跨境电商杂货铺 阅读(220) 评论(0) 推荐(0) 编辑
摘要:在二叉查找树中:(01) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(02) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(03) 任意节点的左、右子树也分别为二叉查找树。(04) 没有键值相等的节点(no duplicate nodes)。 在实际应 阅读全文
posted @ 2018-03-08 19:36 跨境电商杂货铺 阅读(113) 评论(0) 推荐(0) 编辑
摘要:树的介绍 1. 树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:(01) 每个节点有零个或多个子节点;(02) 没有父节点的节点称为根节点;(03) 每一个非根节点有 阅读全文
posted @ 2018-03-08 19:31 跨境电商杂货铺 阅读(123) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/l_215851356/article/details/77659462 java数据结构与算法 http://blog.csdn.net/cf406061841/article/details/72783964 阅读全文
posted @ 2018-03-08 19:24 跨境电商杂货铺 阅读(151) 评论(0) 推荐(0) 编辑
摘要:网站都是从小网站一步一步发展为大型网站的,而这之中的挑战主要来自于庞大的用户、安全环境恶劣、高并发的访问和海量的数据,任何简单的业务处理,一旦需要处理数以 P 计的数据和面对数以亿计的用户时,问题就会变的很棘手。 初始阶段 大型网站都是由小型网站演变而来的,网站架构也一样 小型网站最开始没有太多人访 阅读全文
posted @ 2018-03-08 18:21 跨境电商杂货铺 阅读(238) 评论(0) 推荐(0) 编辑
摘要:一、网站性能测试 (1)性能测试指标:①响应时间;②并发数;③吞吐量;④性能计数器; (2)性能测试方法:①性能测试;②负载测试;③压力测试;④稳定性测试; (3)性能优化策略: ①性能分析:检查请求处理各个环节的日志,分析哪个环节响应时间不合理,检查监控数据分析影响性能的因素; ②性能优化:Web 阅读全文
posted @ 2018-03-08 18:00 跨境电商杂货铺 阅读(282) 评论(0) 推荐(0) 编辑
摘要:2、动态代理: 不用写代理类,虚拟机根据真实对象实现的接口产生一个类,通过类实例化一个动态代理,在实例化动态代理时将真实对象及装备注入到动态代理中,向客户端公开的是动态代理,当客户端调用动态代理方法时,动态代理根据类的反射得到真实对象的Method,调用装备的invoke方法,将动态代理、 Meth 阅读全文
posted @ 2018-03-08 15:37 跨境电商杂货铺 阅读(260) 评论(0) 推荐(0) 编辑
摘要:tomcat重启应用和tomcat重启是两回事。热部署就是重启应用 tomcat重启应用和tomcat重启是两回事。热部署就是重启应用 tomcat可以设置检测到新的class后重启该应用(不是重启tomcat),reloadable="true" 阅读全文
posted @ 2018-03-08 15:20 跨境电商杂货铺 阅读(596) 评论(0) 推荐(0) 编辑
摘要:在一台服务器的情况下,现在都是多核并发编程,保证串行操作也不是容易的事啊。问得太好了,我这大半年写的系列文章,都是为了解决这个问题,你需要的是actor模型。异步编程加上进程内的消息队列,可以高效地对并发操作进行串行的处理。 阅读全文
posted @ 2018-03-08 11:45 跨境电商杂货铺 阅读(414) 评论(0) 推荐(0) 编辑
摘要:状态无关的服务,才可以放心地水平扩展,事实上,状态无关的服务,通常只有“读”服务。 阅读全文
posted @ 2018-03-08 11:42 跨境电商杂货铺 阅读(116) 评论(0) 推荐(0) 编辑
摘要:现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库。Master库负责数据更新和实时数据查询,Slave库当然负责非实时数据查询。因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用 阅读全文
posted @ 2018-03-08 11:36 跨境电商杂货铺 阅读(208) 评论(0) 推荐(0) 编辑
摘要:使用size()方法输出列表中的元素数量。需要注意的是,这个方法返回的值可能不是真实的,尤其当有线程在添加数据或者移除数据时,这个方法需要遍历整个列表来计算元素数量,而遍历过的数据可能已经改变。仅当没有任何线程修改列表时,才能保证返回的结果是准确的。 阅读全文
posted @ 2018-03-08 11:30 跨境电商杂货铺 阅读(189) 评论(0) 推荐(0) 编辑
摘要:用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字 阅读全文
posted @ 2018-03-08 10:20 跨境电商杂货铺 阅读(100) 评论(0) 推荐(0) 编辑