- 浏览: 805463 次
- 性别:
- 来自: 杭州
最新评论
-
huan19900606:
像haskell这些脚本语言很容易定义DSL,实现对应的词法语 ...
DSL的基本介绍(groovy来进行构建) -
express_wind:
https://yq.aliyun.com/album/130 ...
qlexpress规则引擎初探 -
readxuxuegang:
博主你好。如果groovy的代码是保存在数据库里,不是文件,这 ...
在java中使用groovy怎么搞 (java and groovy) -
express_wind:
hi,兄弟,有没有兴趣来阿里巴巴专门做这方面的研究,https ...
qlexpress规则引擎初探 -
langcaiye:
有2个问题请教:1. 这里的base32算法为什么需要以负数的 ...
【原】geohash算法详解
文章列表
【原】空间索引技术分析
- 博客分类:
- 算法
上周在团队里面进行了一次分享,对于空间数据的索引做了简单介绍,现在把pdf文档贴在这里,文件就不再重复搞了,感兴趣的可以留言讨论呵呵,或者私信联系:iamzhongyong@126.com
ppt地址如下:
http://vdisk.weibo.com/s/36nqy
【原】高效程序员的45个习惯-读书笔记
- 博客分类:
- 读书笔记
最近阅读了《高效程序员的45个习惯》,看完后整体的感受是:
目前很多方法我们已经在使用了,有的一些已经成为项目以及日常的流程了,非常欣慰,有一些习惯个人感觉不是很合适使用,例如结对编程,这个我感觉貌似 ...
【原】CountDownLatch使用
- 博客分类:
- java
最近遇到一个问题,需要批量的从数据库中读取数据,但是对于数据的处理需要等待一部分完成之后再进行下一批的数据。抽象出来就是一个任务,分成N份来执行,每一份由多个线程去执行,一份完成之后再执行下一份。于是想起了CountDownLatch。
网上关于CountDownLatch的文章很多,搜了一些,也大体看了一下,但是感觉最好的还是CountDownLatch官方代码里面的两个例子,现在把这两个例子简单说明一下。
CountDownLatch一个线程同步的工具,是的一个或者多个线程等待其他线程操作完成之后再执行。
CountDownLatch通过一个给定的数值count来进行初始化,方法 ...
【原】java线程温故
- 博客分类:
- java
java线程相关的东西一直处于模糊的状态,现在写篇文章整理一下,从头理一下一些概念。
---------------------------------------------------------------------------------
自己目前的一些理解:
(1)java的线程机制是一套java中最底层的代码实现,目前看核心的代码有两个,一个是Runnable接口,一个是Thread类。
(2)在编写多线程并发程序是,使用底层的api来进行写代码,稍有不慎,或者对于线程机制了解不是特别深入,很容易出现死锁、饥饿锁、线程安全等问题。
(3)java.util.courren ...
【原】java定时器简单了解
- 博客分类:
- java
前几看了一下《thinking in java》了解到java原生的Times类有两个问题:
(1)Timer是启动单个线程来处理所有的时间任务,如果一个任务耗时很久,那么如果在执行这个过程中,下个定时任务开始,就会对接下来的任务造成影响;
...
UML用例图 用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,所以是设计系统分析阶段的起点,设计人员根据客户的需求来创建和解释用例图,用来描述软件应具备哪些功能模块以及这些模块之间的调用关系,用例图包含了用例和参与者,用例之间用关联来连接以求把系统的整个结构和功能反映给非技术人员(通常是软件的用户),对应的是软件的结构和功能分解。
用例是从系统外部可见的行为,是系统为某一个或几个参与者(Actor)提供的一段完整的服务。从原则上来讲,用例之间都是独立、并列的,它们之间并不存在着包含从属关系。但 ...
基于地址进行数据的检索,这个貌似有点难度,如果是小的应用的话,可以根据经纬度信息来直接进行查询或者通过数据库本身的空间数据检索方案,但是如果数据量以及访问请求变大时,这中方案就显然不是很合适,往往会使请求变的很慢。
经过一系列的沟通下来,可以通过geohash的方案来解决这个问题。
基本流程可以是这样:
(1)原始详细地址数据--->经纬度数值--->geohash字符串编码--->数据冗余保存,主键换为geohash,然后原始数据后置保存
(2)请求接口,参数为详细地址,详细地址进行转换成geohash,然后基于geohash编码来进行搜索和排序,返回结果
...
【转】UML类关联关系详解
- 博客分类:
- 架构设计
对于UML类图的几种关联关系一直比较疑惑,在晚上找了一篇比较不错的文章,学习一下,后面在项目和日常过程中用起来。
-------------------------------------------------------------------------------------------------------------------------
本篇主要就以前自己一直感觉很迷糊的几种class之间的关系进行整理,让我们在真正用UML进行比如类图设计时能够更加清晰明了;以下就分别介绍这几种关系:
一、继承
指的是一个类(称为子类、子接口)继 ...
【转】eclipse进行debug的说明
- 博客分类:
- java
早晨来到公司发现一片比较好的文章,如果早看到,就不用自己一点一点的摸索debug的技术了。
转发记录一下。
Debug视图
认识debug视图,红色部分框为线程堆栈视图,黄色部分框为表达式、断点、变量视图,蓝色部分为代码视图。
线程堆栈视图
分别介绍一下这几个按钮的含义:
1.表示当前实现继续运行直到下一个断点,快捷键为F8。
2.表示打断整个进程
【原】JDK自带分析问题工具
- 博客分类:
- java
工欲善其事必先利其器,这里把jdk自带的工具熟悉一下,有问题能够直接拿过来用。
JDK自带了几个比较实用的工具,这里汇总用法,主要是介绍一些参数的用法,排查问题的时候很有用的。
常用的是后面三个,需要对于java的内存区域有一定的了解之后用起来会更加的心应手,需要了解java内存模型的可以参照一下我之前系的一篇简单的入门博客。
(1)jsp打印出java的进程号,类似于linux的ps,不是很常用,一般用linux的 ps -ef | grep java来代替
A. -q 只显示pid,不显示class名称,jar文件名和传递给main 方法 ...
【原】java(maven工程)包冲突解决办法
- 博客分类:
- java
开发java应用,包冲突是经常遇见的,如何快速的定位冲突,并且解决十分重要。
下面通过工作中的一个例子来引出一些排查的常用工具。
(1)查看某一个方法是引用的那个包,可以在debug的时候通过反射中的这个方法看一下 ...
【转】java热部署,即改即看
- 博客分类:
- java
写java代码 时候打包部署是个很头疼的问题,很是打击写代码的士气,decvm的使用能够很好的提高开发自测的效率,尤其是web类应用。收集了java中间件团队和阿里巴巴团队的两片博客,对于这个的使用做了介绍,希望做java web开发的可以使用一下呵呵。
----------------------------------------------------------------------------------------
关于hotswap(该补丁的网址http://ssw.jku.at/dcevm/)
Hotswap 是一个允许在运行状态下无限制的修改加载 ...
【转】java运维相关
- 博客分类:
- java
公司的以为大神的博客,写的通俗易懂,运维的思路基本上就是目前淘宝java运维发展的过程。
淘宝的运维系统也是这位大神推动构建的bluedavy。
后半部分是facebook的另一位大神的见解,一起保存下来吧。
对于互联网产 ...
【原】java问题排查常用linux命令
- 博客分类:
- linux
最近部门的测试环境总是半夜挂掉,有感于线上问题排查的种种困惑,所以打算彻底扫盲一下问题排查的一些关键命令,在真正火灾来临的时候,能够迅速的定位问题。
重用的linux命令总体分为几个大类,以前自己觉得,这些命令,在用的时候现查就行,但是经历了几次事情之后,我觉得对于这些工具在问题真正来临的会后需要灵活运用,灵活运用需要平时对这些就很熟悉,自己很多没有熟悉,所系需要恶补一下,在问题真正来临的时候,自己能够冷静准确的处理问题。
(1)ping :
功能是检测主机,执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因 ...
【原】java内存区域理解-初步了解
- 博客分类:
- java
最近测试环境总是报OOM的异常,正好赶上毕玄的JVM培训,于是花了一天的时间去参加培训,培训后,对于JVM内存的管理有了初步的印象,最起码不那么疑惑了,之后又找了两本书细化的看了一下,现在总结记录下来。
(1)JVM内存区域框图
程序计数器:是一块较小的内存空间,作用可以看做是当前线程所执行的字节码的行号的指示器,线程私有。
JVM方法栈和本地方法栈:在sun的jdk中,JVM方法栈和本地方法栈是算在一起的,虚拟机栈为虚拟机执行java方法,本地方法栈为虚拟机执行Native方法,线程私有。
java heap:是虚拟机中内存区域最大的一块 ...