- 浏览: 378219 次
- 性别:
- 来自: 杭州
最新评论
-
真的全站唯一:
描述的能不能准确一点,我也以为bigDecimal性能比dou ...
【性能】Java BigDecimal和double性能比较 -
zhanggang807:
学习到了。。以后会考虑往这方面设计
【java规范】Java spi机制浅谈 -
Xiong506:
xiyuan1025 写道你这是在linux下吗,我在linu ...
[监控]Btrace监控简单笔记 -
Xiong506:
xiyuan1025 写道你这是在linux下吗,我在linu ...
[监控]Btrace监控简单笔记 -
Bll:
找不到实现类
【java规范】Java spi机制浅谈
文章列表
ruby学习进入实践阶段。花了点时间用ruby实现了一个文件检索功能。小工具没什么好去说的,主要是本人通过这个熟悉ruby的一些api。
需求:根据输入的关键字在指定的目录下,搜索指定格式的文件。返回文件名或文件内容包含该关键子的文件列表。
输入:关键字 keyword,指定目录 path,文件格式 filepattern
输出:文件名或文件内容包含keyword的文件列表
效果如下,在"/home/yblin/rubyspace"下,*.rb的文件中,检索包含length关键字的文件:
git分支:
https://github ...
学习ruby,最基础的是理解ruby的对象模型,经过这几天抽空学习,大致总结了下。
先看一下代码示例
class Bird
@@legs=2
def eat
puts "i am eating"
end
def comefrom(location)
@birthplace=location
puts "i am come from #{@birthplace},i have #{@@legs} legs. "
end
end
class Crow < Bird
...
本文对ruby动态方法特性进行探讨。
结合以下例子:
#dynamic methods
class Dynamic
def a
puts "this is method a"
end
def b(bob)
puts "this is method b:#{bob}"
end
def c
puts "this is method c"
end
def ...
最近在学习ruby,我觉得学习一门语言要先了解语言的基本特性,然后再深入语法、细节特性等。
所以先从ruby语言的特性入手,结合例子简单总结了几点,才真正开始学没多久,绝对不全面,还需后续的学习再补充。
1.纯面向对象的
在ruby世界里所有的都是对象,包括方法、类、模块。也包括字符、数字、bool等基本类型。
如
3.times { puts "Hi!" } #完成三次循环输出
运行结果:
Hi!
Hi!
Hi!
3是一个整型对象,可以直接作为对象调用对象的方法times. 方法的参数是一个函数也是一个对象。
put ...
近期做了好长时间的项目,很久没写文档了,这次的项目很难得的自己做了很多的技术方案,且以前有些不一样,现成直接可用方案并没有。 今天闲来总结几点:
1.技术方案大部分从应用场景出来的
技术方案是为了解决 ...
最近因为项目,需要了解在不同的域名下,同步登陆状态等cookie。
于是兄弟公司那了解了一种跨域同步cookie的方案。
场景:
有时一个公司可能有多个不同域名的网站,比如sina.com和weibo.cn,比如taobao.com和tmall.com。
这些网站背后很多是同一套会员体系。由于http协议规定cookie是跟着域名走的,这时就需要在不同的域名下同步登陆状态,避免出现用户体验上出现需要二次登陆验证的情况。
假设下面这样一个场景:
用户在
bbb.com上已经登陆,现在要去aaa.com上玩,在aaa.com域名下暂未登录。需要访问的aaa.com/res ...
最近看到公司的一些框架和之前看到的开源的一些框架的一些服务发现和接入都采用了java的spi机制。
所以简单的总结下java spi机制的思想。
我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。
为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。java spi就是提供这样的一个机制:为某个接口寻找服务实现的机制。有点类 ...
ResourceBundle主要是用于和本地语言环境相关的一些资源绑定。特别是String资源。
从国际化的设计角度看,一般在代码里不编写和语言环境相关的东西。比如在代码里编写和语言环境相关的错误提示或信息。
以下面枚举为例:
public enum WeekdayEnum {
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday;
}
如果期望在不同的weekday的心情,不同语言环境输出不同的信息,如中文环境希望这样输出:
Monday:星期一郁闷
Tuesday:星期二忐忑
Wedne ...
前阵放假时候,帮人跑实验,需要在一台服务器上跑一堆java实验程序。
为了实验结果的公正性,要保证每次只跑一个实验,也就是需要串行的跑完所有java程序。
刚开始的时候,我每跑一个程序,隔一段时间去服务器上检查一下是否跑完,需要时时留意,实在有点不爽,人也不能走开。
于是写了个shell脚本:串行的去执行一批java程序任务列表。
过程如下:
1.新建任务列表
以实验为例的tasklist.txt:
java -cp fastPPV0318.jar -Xms512m -Xmx1024m -Dppv.config=/home/zhufw/fastppv/config/ppv_d ...
最近项目里需要创建一个多模块(子工程)的模板项目,所以研究了一下maven的archetype plugin。
创建了一个包含多个子模块工程的项目模板。记录下过程。
一个模板工程任务就是创建一个或多个默认的工程,并为每个工程填 ...
vim是linux下的开发利器,相信很多人都感受到了他的强大。
作为一款强大的编辑器,本人用得也蛮多的,不过不能算非常的精通。平时偶尔有些用法忘记了还得去查查。
以下是本人总结平常用得最多的几个,记录一下:
普通模式:
j:上移 5j上移5行
k:下移 5k下移5行
G:到文档的最后一行
nG:到第n行
gg: 到文档的第一行
h:左移,5h,左移5字符。
l:右移,5l,右移5字符。
0:行首
^:第一个非空字符
$:行尾是
ctrl+f: 下移一页
ctrl+b: 上移一页命令模式
: set nu: 显示行号
: set nonu: 取消 ...
java应用程序退出的触发机制有:
1.自动结束:应用没有存活线程或只有后台线程时;
2.System.exit(0);
3.kill 或 ctrl+C;
4.kill -9 强制退出;
如何做到应用程序平滑停止
程序的退出就像关机一样,我们希望关机时平滑关机,保证所有应用程序的数据都保存了。就像现在在写得blog,希望关机的时候能被保存好到草稿箱里。
我们的的java程序中经常有一种常驻的任务或服务,如消息消费端、服务提供者,我们期望停止也是平滑的不会出现事务执行到一半产生脏数据。
java对这块的支持是通过钩子线程实现。每个java进程都可以注册钩子线程 ...
Executor
框架是
juc
里提供的线程池的实现。前两天看了下
Executor
框架的一些源码,做个简单的总结。
线程池大概的思路是维护一个的线程池用于执行提交的任务。我理解池的技术的主要意义有两个:
1.
资源的控制,如并发量限制。像连接池这种是对数据库资源的保护。
2.
资源的有效利用,如线程复用,避免频繁创建线程和线程上下文切换。
那么想象中设计一个线程池就需要有线程池大小、线程生命周期管理、等待队列等等功能,下面结合代码看看原理。
Excutor
整体结构如下:
Executor
最近在看一些juc相关的设计和源码,接上文
:【java并发】基于JUC CAS原理,自己实现简单独占锁
本文探讨一下juc里面提供的一些高级锁机制和基本原理。
JUC高级锁机制简介
Juc
提供了高级锁的一些特性和应用 ...
synchronized的基本原理回顾
在jvm内部,所有对象都含有单一的锁,jvm负责跟踪监视被加锁次数,叫做对象监视器。当线程第一次给对象加锁的时候,计数器会加1,离开时会减1.同样任务是可重入的,每次重入也是加1,离开减1.
sy ...