LintCode 71 -- 二叉树的锯齿形层次遍历

LintCode 71 - 二叉树的锯齿形层次遍历自己ac了一遍之后, 发现google排名靠前的少有Java版的实现, 这里贴上我自己的实现.思路非常简单, 使用双端队列作为层次遍历的支持结构, 然后用一个布尔型变量控制下一层遍历是队头出还是队尾出.public class Solution {...

2017-08-06 17:20:24

阅读数 412

评论数 0

浅谈CSRF攻击方式

原文链接: https://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html 一.CSRF是什么?   CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one cl...

2017-04-16 21:37:18

阅读数 644

评论数 0

八幅漫画理解使用JSON Web Token(JWT)设计单点登录系统

原文链接:   http://blog.leapoahead.com/2015/09/07/user-authentication-with-jwt/ 用户认证八步走 所谓用户认证(Authentication),就是让用户登录,并且在接下来的一段时间内让用户访问网站时可以使用其账户,而不需要...

2017-04-16 20:34:17

阅读数 4250

评论数 0

JWT(JSON Web Token) - 在Web应用间安全地传递信息

原文链接: http://blog.leapoahead.com/2015/09/06/understanding-jwt/ JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 让我们来假想一下一个场景。在A...

2017-04-16 20:31:27

阅读数 3209

评论数 0

微服务--分布式事务的实现方法及替代方案

微服务–分布式事务的实现方法及替代方案这两天正在研究微服务架构中分布式事务的处理方案, 做一个小小的总结, 作为备忘. 如有错误, 欢迎指正!概念澄清 事务补偿机制: 在事务链中的任何一个正向事务操作, 都必须存在一个完全符合回滚规则的可逆事务. CAP理论: CAP(Consistency, A...

2017-04-16 13:41:02

阅读数 59457

评论数 11

Spring核心技术--AOP

Spring核心技术–AOP在OOP中, 模块化的单位是class, 在AOP中, 模块化的单位是aspect.Spring IoC容器并不直接与AOP模块耦合, AOP模块是作为一个中间件方案提供给IoC容器使用的.声明式事务管理就是AOP在Spring框架中的一个典型实现, 另外, 池化也是一...

2017-04-11 14:38:39

阅读数 1058

评论数 0

Spring核心技术--IoC container用法详解

一直在使用Spring提供的IoC容器, 但是始终没有系统化的梳理一下. 今天在这里写下, 也是以备以后参考之用.Ioc container的核心是BeanFactory接口, 它提供的方法能够管理任何类型的对象. ApplicationContext是它的子接口, 集成了Spring AOP的特...

2017-04-10 20:01:16

阅读数 2111

评论数 0

MyBatis Mapper XML文件详解

MyBatis Mapper XML文件详解首先需要澄清几个概念: namespace 就是Mapper XML对应的Java接口名. 联合查询: 也就是多表的各种join查询 关联映射: 也就是嵌套映射, 用在一个POJO中包含其他POJO的情况 Mapper XML顶级配置元素 cache 启...

2017-04-09 15:40:39

阅读数 2955

评论数 0

Spring 缓存使用

生效原理 抽象而不是实现Spring框架中, 缓存服务是一组抽象, 也就是一组API, 由 org.springframework.cache.Cache org.springframework.cache.CacheManager 抽象. 抽象中并不包含多线程或者多进程处理逻辑, 这些逻辑应该由...

2017-04-08 19:45:49

阅读数 4071

评论数 0

Java日志全解析(上) - 源流

作为Java程序员,幸运的是,Java 拥有功能和性能都非常强大的日志库;不幸的是,这样的日志库有不止一个——相信每个人都曾经迷失在JUL(Java Util Log), JCL(Commons Logging), Log4j, SLF4J, Logback,Log4j2 等等的迷宫中。在我见过的...

2017-03-31 16:28:28

阅读数 907

评论数 0

JVM - 内存区域划分 与 内存溢出异常

主要介绍以下内容: Java虚拟机内存的各个区域, 这些区域的作用, 服务对象以及其中可能产生的问题运行时数据区域概览图程序计数器(Program Counter Register)可以看做当前线程所执行的字节码的行号指示器. 在多线程程序中, 为了线程切换后能恢复到正确的执行位置, 每条线程都需...

2017-03-20 22:17:18

阅读数 713

评论数 0

JVM - 垃圾收集器与内存分配策略

当前GC技术已经基本自动化了, 为什么我们需要了解GC和内存分配呢? 答案是: 当需要排查各种内存溢出, 内存泄露问题时, 当垃圾收集成为系统达到更高并发量的瓶颈时, 我们就需要对这些”自动化”的技术实施必要的监控和调节.在GC上, 程序计数器, 虚拟机栈, 本地方法栈这三个区域随着线程而生灭, ...

2017-03-20 22:15:53

阅读数 379

评论数 0

JMX学习笔记(一)-MBean

一个MBean是一个被管理的Java对象,有点类似于JavaBean,一个设备、一个应用或者任何资源都可以被表示为MBean,MBean会暴露一个接口对外,这个接口可以读取或者写入一些对象中的属性,通常一个MBean需要定义一个接口,以MBean结尾, 例如: EchoMBean, 格式为XXXM...

2017-03-20 19:24:11

阅读数 367

评论数 0

java Future用法和意义 - 一句话击破

在并发编程时,一般使用runnable,然后扔给线程池完事,这种情况下不需要线程的结果。  所以run的返回值是void类型。  如果是一个多线程协作程序,比如菲波拉切数列,1,1,2,3,5,8...使用多线程来计算。  但后者需要前者的结果,就需要用callable接口了。  ca...

2017-03-07 14:49:40

阅读数 750

评论数 0

Java并发编程 - 基础

并发的历史操作系统的发展使得多个程序能够同时运行, 由操作系统来分配资源, 如果需要的话, 进程会通过一些原始的机制相互通信, 主要分为消息传递和共享内存两种: 消息传递: Socket, 信号处理(signal handlers), 信号量(semaphores)和文件等. 共享内存线程共享其所...

2017-03-07 09:41:13

阅读数 393

评论数 0

Java并发编程 - 锁 - 原理详解

Java并发编程中, 锁机制对控制线程间共享内存的使用有重要的意义. 那么在Java内部锁是如何实现的呢?首先要明确一个概念. Java中的锁是对象级别的概念, 也就是每个对象都天生可以作为一个锁使用. 究其底层实现, 实际上锁是存在于Java对象头的MarkWord字段里的, 根据锁的级别,...

2017-03-07 09:40:31

阅读数 607

评论数 0

Java并发编程 - 常用容器(ConcurrentHashMap, ConcurrentLinkedQueue)

ConcurrentHashMap的实现原理与使用传统的HashMap不是线程安全的, 所以多线程进行put()和get()操作的时候可能会引发问题. 还有一个叫做HashTable的数据结构, 它使用的是synchronized来保证线程安全, 但是效率很低, 因为不能并发读.Concurre...

2017-03-07 09:40:09

阅读数 1573

评论数 0

Java解惑 - sleep和wait/notify机制, 线程阻塞和等待的区别

sleep()方法sleep()方法是定义在Thread上的native方法, 在设定时间段内(精度取决于CPU)阻塞线程的执行, 但是并不更改线程的锁持有情况.wait/notify机制wait()方法是定义在Object上的方法, 是java语言级的方法, 需要在同步块或者同步方法中进行调用,...

2017-03-07 09:39:24

阅读数 9435

评论数 1

Java并发编程 - volatile, synchronize关键字实现原理

Java代码在编译后会变成Java字节码, 字节码被ClassLoader加载到JVM中, JVM执行字节码, 最终要转化为汇编指令在CPU上执行, Java中所使用的并发机制依赖于JVM的实现和CPU的指令.volatile原语volatile是轻量级的synchronized, 它在多CPU...

2017-03-07 09:38:38

阅读数 755

评论数 0

Java - 迭代器的使用

迭代器主要是为了支持容器类的遍历, 发展历程如下.Java 1.5 之前的做法如果你用的是Java 1.5之前支持的类库, 那么很可能采用的是如下的做法来遍历集合元素: 使用iterator()要求容器返回一个Iterator, Iterator将准备好返回序列的第一个元素; 使用next()获...

2017-03-07 09:37:28

阅读数 7126

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭