Java
文章平均质量分 56
牛刀杀鸡
这个作者很懒,什么都没留下…
展开
-
SSO之CAS备忘
自己负责的公司基于CAS单点登录平台架构已经上线运行,很多细节的东西是时候备忘一下了,开源的东西,具体需要记得倒不是很多,跟着debug看源码理解,学习为主。 首先说说整个框架的思路:由于这段时间连续上了几个项目,用户登录管理这一块一直在做重复的工作,所以考虑将这些模块抽出来单独做成一个系统。最初的想法只是做一个简单的用于登录检测方面的东西,想的也很简单,选memcached来做分布式缓原创 2015-01-07 22:28:23 · 510 阅读 · 0 评论 -
CountDownLatch和CyclicBarrier的区别
在网上看到很多人对于CountDownLatch和CyclicBarrier的区别简单理解为CountDownLatch是一次性的,而CyclicBarrier在调用reset之后还可以继续使用。那如果只是这么简单的话,我觉得CyclicBarrier简单命名为ResetableCountDownLatch好了,显然不是的。我的理解是,要从他们的设计目的去看这两个类。javadoc里面的描述是转载 2015-01-22 10:57:22 · 374 阅读 · 0 评论 -
浅析 Java Thread.join()
引用网上一位网友的解释,一句话:你和朋友一起吃饭(主线程),突然你肚子痛要拉屎(子线程),这个时候你去了厕所拉屎,拉了很久,但是你的朋友们要等你(join)拉完回来在一起AA。更详细的解释:http://www.open-open.com/lib/view/open1371741636171.html原创 2015-01-22 10:06:53 · 390 阅读 · 0 评论 -
BlockingQueue
import java.util.Scanner;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;原创 2015-01-21 13:08:11 · 373 阅读 · 0 评论 -
多线程-Java原子变量-java.util.concurrent.atomic.*
转载地址:http://blog.csdn.net/hong0220/article/details/38958121一个没有并发控制的计数器:[java] view plaincopypublic class Counter implements Runnable { private static int count;转载 2015-01-21 17:17:48 · 455 阅读 · 0 评论 -
ABA问题模拟
项目中多次遇到了ABA的问题,对现有的解决方案都不太满意。最近在学习concurrent包中找到了一个解决方案。package cas;import java.util.concurrent.CountDownLatch;import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.ato原创 2015-01-22 14:39:10 · 617 阅读 · 0 评论 -
深入理解Java内存模型(五)——锁
转自:http://www.infoq.com/cn/articles/java-memory-model-5?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除转载 2015-01-23 17:44:27 · 2083 阅读 · 0 评论 -
深入理解Java内存模型(四)——volatile
转自:深入理解Java内存模型系列http://www.infoq.com/cn/articles/java-memory-model-4?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clkvolatile的特性当我们声明共享变量为volati转载 2015-01-23 17:09:19 · 506 阅读 · 0 评论 -
从netty项目组织入门maven的多modules模块配置
Netty是一套提供异步的、事件驱动的网络应用程序框架,同时也是工具包。我们可以将它作为项目的核心框架,同时也可以用他提供的部分功能来对项目进行支持,因此项目功能的模块化就显得很重要,这也是我们平时做项目所追求的可重用性。 netty一个项目整体的组织如下: 。 这里不说项目的各个子模块的功能,只是看如何实现项目模块的分离和组织。在我们平时的开发中可能会有一个这样子的结构: 如果是一个小原创 2015-02-10 15:58:22 · 2324 阅读 · 0 评论 -
301与302的区别
在web开发的时候经常会遇到页面重定向的问题,说起重定向就不得不说HTTP STATUS CODE 301 和302. 301 是Moved Permanently,也就是”永久转移”, 302则是Temporarily Moved,是”暂时转移”。在生产环境,建议使用301永久重定向,不使用302临时跳转,因为对于搜索引擎来说,会自动将原来页面的收录和权重转移到新的页面,有利于SEO.301状态码原创 2015-03-14 14:58:34 · 872 阅读 · 0 评论 -
Session机制详解
转自http://justsee.iteye.com/blog/1570652虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答。 一、术语sessio转载 2016-01-27 13:57:00 · 611 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充
转自http://ifeve.com/disruptor-cacheline-padding/作者:Trisha 译者:方腾飞 校对:丁一我们经常提到一个短语Mechanical Sympathy,这个短语也是Martin博客的标题(译注:Martin Thompson),Mechanical Sympathy讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。我转载 2016-01-28 11:26:06 · 495 阅读 · 0 评论 -
JDK 7 中的 Fork/Join 模式 简单入门
任务类:@SuppressWarnings("serial")public class MyTask extends RecursiveTask { List i; public MyTask(List list) { this.i = list; } @Override protected Integer compute()原创 2016-01-12 18:25:31 · 645 阅读 · 0 评论 -
Intellij Idea中运行tomcat 报內存溢出 PermGen space 解决方案
在Run/Debug configuration 的你要运行行的tomcat里面的 vm options里面输入-server -XX:PermSize=128M -XX:MaxPermSize=256m转载 2016-02-18 12:49:06 · 13570 阅读 · 0 评论 -
windows下gitbash可以连接但是idea无法连接的问题
问题解决的办法:1.将idea中的git设为本地2.将git执行文件路径指向本地 githome\cmd\git.exe而非githome\bin\git.exe原创 2016-02-19 10:35:58 · 1504 阅读 · 0 评论 -
三个Java多线程循环顺序周期打印1-75个数
三个Java多线程循环顺序周期打印1-75个数看到有这样一个关于并发的小题目,花了2分钟写一个demo问题的描述 启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20….以此类推, 直到打印到75. 程序的输出结果应该为package com.tig原创 2017-09-05 23:31:49 · 2470 阅读 · 0 评论 -
java多线程Callable和Future
package cas;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.CompletionService;import java.util.concurrent.ExecutionException;im原创 2015-01-20 15:55:35 · 408 阅读 · 0 评论 -
web项目测试环境
dependency> groupId> junitgroupId > artifactId> junitartifactId > version> 4.10version >原创 2015-01-07 22:28:33 · 985 阅读 · 0 评论 -
Memcached入门--1.服务器端部署安装
windows下略。linux下:1.官网下载memcached 和libevent2.安装libevent# tar zxvf libevent# cd libevent# ./configure –prefix=/usr (这一步最好指定在usr目录下,linux系统会默认去usr/下找lib,如果在其他地方安装则需手动在/usr添加软链接)# make# ma原创 2015-01-07 22:28:09 · 352 阅读 · 0 评论 -
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue使用场景总结
转自http://www.xuebuyuan.com/2220967.html适用阻塞队列的好处:多线程操作共同的队列时不需要额外的同步,另外就是队列会自动平衡负载,即那边(生产与消费两边)处理快了就会被阻塞掉,从而减少两边的处理速度差距。当许多线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。LinkedBlockingQu转载 2015-01-27 17:25:27 · 666 阅读 · 0 评论 -
java.util.Collections与线程安全
在看Java Concurrency In Practice时看到Collections.unmodifiableMap的使用,于是去看了下Collections的源码,其中几个知识点做一个记录:首先关于static修饰类:摘自http://stackoverflow.com/questions/7486012/static-classes-in-java:Can a clas原创 2015-01-28 10:37:28 · 995 阅读 · 0 评论 -
synchronized的深刻认识
转自synchronized的深刻认识JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、object reference(对象引用,例如this)、static函数和class literals(类名称字面常量)身上。下面讨论synchronized用转载 2015-01-28 14:45:34 · 611 阅读 · 0 评论 -
聊聊并发-Java中的Copy-On-Write容器
转自http://ifeve.com/java-copy-on-write/#more-10403Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrit转载 2015-01-28 11:31:41 · 437 阅读 · 0 评论 -
从ThreadLocal 理解线程安全
看到很多框架中都使用了ThreadLocal ,单从名字来说很可能把他理解成为一个“本地线程”之类的玩意儿。。。先上代码:package com.tiger.Thread.concurrent;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.u原创 2015-01-30 01:10:00 · 843 阅读 · 2 评论 -
Memcached入门--2.java客户端
目前java的memcached主要有Java-Memcached-Client,Xmemached,Spymemcached三种。选用Java-Memcached-Client,具体性能比较网上专业分析的文章很多,可以自行了解,根据具体需要选用吧。在pom中引入: com.whalin Memcached-Java-Client 3.0.2Memc原创 2015-01-07 22:28:13 · 424 阅读 · 0 评论 -
cas keytools 导入 jks
keytool -export -alias 1 -keystore xxx.jks -rfc -file server.cerkeytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file ./server.cer -alias 1原创 2015-01-11 21:59:36 · 591 阅读 · 0 评论 -
Java NIO 系列教程
转自Java NIO 系列教程 Java NIO提供了与标准IO不同的IO工作方式: Channels and Buffers(通道和缓冲区):标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Asynchronous IO(异步IO):Java NIO可以让你转载 2015-02-03 23:17:58 · 427 阅读 · 0 评论 -
线程中断方法interrupt() 与 cancel()以及Runtime.getRuntime().addShutdownHook()
转自线程中断方法interrupt() 与 cancel()(一).关于interrupt() interrupt()并不直接中断线程,而是设定一个中断标识,然后由程序进行中断检查,确定是否中断。 1. sleep() &interrupt() 线程A正在使用sleep()暂停着:Thread.sleep(100000); 如果要取消他的等待状态,可以在正在转载 2015-01-29 17:56:24 · 820 阅读 · 0 评论 -
java 运行时判断jdk版本
今天在看netty中bytebuf的实现的时候无意间看到一个运行时判断jdk版本的实现,有点意思。。。io.netty.util.internal.PlatformDependent类,名字就很直白--平台依赖。@SuppressWarnings("LoopStatementThatDoesntLoop") private static int javaVersion0() {原创 2015-02-05 01:49:51 · 2352 阅读 · 0 评论 -
微框架 - spring boot快速入门
每次搭建项目可能是最浪费时间的一个环节,不管你是想做个什么东西,特别是要发布web环境,即使你讲tomcat或者jetty都集成在maven中,这一套下来可能在你脑海里划过的一些思绪早已无影无踪。今天发现了一个好用的spring的“微框架”: Spring Boot。Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该原创 2015-02-05 01:28:20 · 1231 阅读 · 0 评论 -
java多线程的信号量Semaphore
java中提供的信号量操作由java.util.concurrent.Semaphore类实现 http://www.apihome.cn/api/java/Semaphore.htmlpublic void acquire() throws InterruptedException从此信号量获取一个许可,在提供一个许可前一直将线程阻塞,否则线程被中断。获取一个许可(如果原创 2015-01-20 02:35:23 · 438 阅读 · 0 评论 -
多系统sso架构分析
首先感谢http://blog.chinaunix.net/uid-25508399-id-3431705.html提供的分析和思路。 这里继续对cas做进一步的分析。 单点登录里的几个票据LT,TGT,ST等等,其中着重看TGT,cas登录过程其实无非就是在不同阶段拿着‘票据’换取下一阶段的进入权限,而这里的TGT票据,在cas里具体实现其实就是cookie。原创 2015-01-19 15:33:45 · 810 阅读 · 0 评论 -
关于java io 的 write 与 操作系统
熟悉linux 的同学 对 sync、fsync与fdatasync 应该不会陌生 如果不熟悉可以看下这篇总结不错的文章http://www.cnblogs.com/bhlsheji/p/5222271.html但是java和其关系如何呢? 先上个栗子@Test public void file(){ try (FileOutputStream fo = new FileO原创 2017-09-21 18:03:22 · 1368 阅读 · 0 评论