自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(147)
  • 资源 (8)
  • 问答 (1)
  • 收藏
  • 关注

原创 解决 sharp: Installation error: unable to verify the first certificate

重点是这行:sharp: Installation error: unable to verify the first certificate。可知是安装sharp 有问题。设置中国镜像,问题解决。

2023-10-20 13:01:27 1172

原创 Codis命令快速查询

// 启动dashboardnohup ./bin/codis-dashboard –ncpu=1 –config=./config/dashboard.toml –log=dashboard.log –log-level=WARN &// 关闭dashboard./bin/codis-admin –dashboard=127.0.0.1:18080 –shutdown//...

2019-09-17 23:54:22 1528

原创 Codis 快速启动注意事项

按照 codis 的 tutorial 文档快速启动单机版测试 codis 集群,跟着文档走还是会遇到一些坑。下载安装各种组件的过程就不说了,就记录一下在虚拟机中快速启动codis集群遇到的问题。首先,单机版是“无任何外部组件依赖”的,这句轻描淡写的话需要你格外注意,如果你和我一样在启动codis-dashboard后,没有正常关闭它。要知道我是学习的时候在虚拟机中安装的,随意关闭虚拟机是常有...

2019-09-08 23:04:14 587

原创 Fork/Join的使用

一、概述Fork/Join框架是Java7提供的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。(http://www.infoq.com/cn/articles/fork-join-introduction)二、使用举例计算从1加到1亿的总和。当然这里只是用来说明Fork/Join框架的使用方法,从

2017-09-03 20:29:16 756

原创 Java8新特性的总结

一、Lambda表达式二、stream apipackage com.my.test9;import java.util.ArrayList;import java.util.Comparator;import java.util.List;import java.util.stream.Collectors;/** * Title: * Intenti

2017-09-02 17:01:18 438

原创 Zookeeper学习笔记(六)分布式Barrier

当我们需要多个线程同时启动时,我们可以使用jdk自带的CycliBarrier。先来看看它的常用用法:package com.my.CuratorTest;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** * Title: * Inte

2017-08-26 16:49:24 654

原创 Zookeeper学习笔记(五)分布式计数器

分布式计数器的思路是:指定一个Zookeeper数据节点作为计数器,多个应用实例在分布式锁的控制下,通过更新该数据节点的内容来实现计数功能。Curator中封装了实现,例如 DistributedAtomicInteger 和 DistributedAtomicLong。我写的一个测试用例却并没有达到我认为的结果,不知是哪里理解有误,望有缘人指出:package com

2017-08-23 00:13:29 3094

原创 Zookeeper学习笔记(四)分布式锁

一、排他锁与共享锁分布式锁是控制分布式系统之间同步访问共享资源的一种方式。分为排他锁和共享锁。排他锁排他锁(Exclusive Locks, 简称 X 锁),又称为写锁或独占锁,是一种基本的锁类型。如果事务T1对数据对象O1加上了排他锁,那么在整个加锁期间,只允许事务T1对O1进行读取和更新操作,其他任何事务都不能再对这个数据对象进行任何类型的操作——直到T1释放了排他锁。共享锁

2017-08-20 17:24:56 3181

原创 Zookeeper学习笔记(三)Master选举

Curator是一个非常流行的Zookeeper开源客户端,是Netflix公司开源的一套ZooKeeper客户端框架,作者是Jordan Zimmerman。它解决了很多ZooKeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等,目前已经成为Apache的顶级项目,是全世界范围内使用最广泛的ZooKeeper客户端之一。

2017-08-20 11:08:04 552

原创 Zookeeper学习笔记(二)通过Java API调用Zookeeper

sss

2017-08-06 00:20:23 1235

原创 Zookeeper学习笔记(一)简介

参考自官方文档   http://zookeeper.apache.org/doc/trunk/zookeeperStarted.htmlZookeeper的介绍可以参考这篇博客系列:http://www.cnblogs.com/leocook/p/zk_0.html  此外官网上的说明也可以看一下,这里就不再赘述。一、下载安装首先去官网上下载当前稳定版本:3.4.10

2017-07-16 11:42:50 464

原创 堆的应用

一、堆排序堆排序见之前的一篇博客   http://blog.csdn.NET/zhutulang/article/details/7746033这里用上一篇文章 http://blog.csdn.net/zhutulang/article/details/74139914 中实现的堆来写一个堆排序二、top k 问题三、优先队列

2017-07-07 22:48:56 1195

原创 一个堆的java实现

写了一个堆的java实现,既然可用数组来表示堆,为了方便,那么就用ArrayList吧。抽象类Heap:package com.my.test6;import java.util.ArrayList;/** * Title: 堆的抽象实现 * Intention: 参考:https://my.oschina.net/BreathL/blog/71602 * * Class

2017-07-02 17:45:06 688

原创 关于堆的一点总结

一、什么是堆堆是一颗被完全填满的二叉树,可能的例外是在底层,底层上的元素从左到右填入,这样的树被称为完全二叉树。二、堆的特性1、如果一个堆有N个节点,那么堆的高度为 h = [lgN] 。即N 在 2h 到 2h+1-1  之间。2、父节点的值大于(大顶堆)或小于(小顶堆)子节点的值。三、堆支持的操作1、上浮 shiftup2、下沉 shiftd

2017-07-01 23:22:02 510

原创 Netty使用websocket协议实现汽车行驶轨迹追踪demo

一、demo说明本demo使用netty实现了在网页上实时查看汽车行驶当前位置的功能。当然这里只是一个演示的demo,所有的位置数据都是预先在百度地图上采集好保存在服务端的。代码参考了《Netty权威指南》。效果如下:二、流程说明当打开网页时,创建一个websocket连接到服务端。服务端用一个map来保存ChannelHandlerContext,key是Channe

2017-03-26 21:42:18 2316 1

原创 NIO中ByteBuffer图解

ByteBuffer是java NIO中的缓冲区类。它有三个重要的索引,position:当前读写的位置,limit:最大能读写的位置,capacity:字节缓冲区的容量。三个重要的方法图示如下:

2017-02-15 21:56:36 557

原创 ANSI Common Lisp 笔记六(控制流)

一、区块有3个构造区块的基本操作符:progn , block 以及 tagbody 。1、在progn 主体中的表达式会依序求值,并返回最后一个表达式的值。2、一个 block像是带有名字及紧急出口的progn。第一个参数应为符号。这变成了区块的名字。在主体中的任何地方,你可以停止求值,并透过使用return-from指定区块的名字,来立即返回一个数值:CL-USER

2016-10-05 11:43:30 660

原创 ANSI Common Lisp 笔记五(哈希表)

摘自 《ANSI Common Lisp》一、make-hash-table 来构造一个哈希表,它不需要传入参数:CL-USER> (setf ht (make-hash-table))#一个哈希表,像是一个关联列表,是一种表达相关对象的方式。要取出与一给定键值有关的数值,我们调用 gethash 并传入一个键值与哈希表。预设情况下,如果没有与这个键

2016-09-26 21:39:45 544

原创 ANSI Common Lisp 笔记四(结构)

摘自 《ANSI Common Lisp》一、结构要定义一个结构,我们使用defstruct。在最简单的情况下,我们只要给出结构及字段的名字就可以了:CL-USER> (defstruct point  x  y  )POINT这定义了一个 point 具有两个字段 x 与 y。它也隐性地定义了 make-point , point-p, copy-point,

2016-09-17 22:46:17 655

原创 ANSI Common Lisp 笔记三(字符与字串)

摘自 《ANSI Common Lisp》一、字符与字串字串是字符向量。我们用一系列由双引号包住的字符来表示一个字串常量,一个字符 c  用# \ c  表示。函数 char-code 返回与字符相关的数字,而 code-char 返回与数字相关的字符。如:CL-USER> (char-code #\a)97CL-USER> (code-char 97)#\

2016-09-17 11:31:18 886

原创 ANSI Common Lisp 笔记三(数组)

一、数组可以调用 make-array 构造一个数组。第一个参数为一个列表,为数组的维度(如果只想要一个一维数组,可以给make-array第一个参数一个整数,而不是一个列表)。数组在 Common Lisp里至少可以有七个维度,每个维度至少可以有1023个元素。:initial-element参数是选择性的。如果提供了这个参数,整个数组会用指定的值作初始化。CL-USER> (s

2016-09-17 11:30:38 663

原创 ANSI Common Lisp 笔记二(列表)

摘自 《ANSI Common Lisp》一、构建cons函数可以用于构建列表,如:CL-USER> (cons 'a 'b)(A . B)CL-USER> (cons 'a '(1 2 3))(A 1 2 3)CL-USER> cons真正所做的事情是,把两个对象结合成一个有两部分的对象,称之为 Cons 对象。概念上来说,一个 Cons是一对指针;第

2016-09-16 21:43:19 632

原创 ANSI Common Lisp 笔记一

一、数据类型Lisp中有其它语言所没有的两种类型:符号(symbol)和表(lists)。符号是单词 (words)。无论你怎么输入,通常它们被转换成大写:CL-USER> 'mikeMIKECL-USER>注:输入 :abort 跳出错误 列表 是由被括号包住的零个或多个元素来表示。元素可以是任何类型,包括列表。你必须引用列表,不然  Li sp 会以为这是一

2016-09-13 23:02:08 920

原创 RocketMQ 入门部署

通过RocketMQ 项目主页的Quick start了解RocketMQ的安装部署(Linux下)。一、必备条件64bit OS, best to have Linux/Unix/Mac;64bit JDK 1.6+;Maven 3.xGitScreen二、基本安装步骤1、进入你的安装目录:我这里是/usr/local/development/rock

2016-09-04 23:24:00 2472

原创 关于用JAX-WS调用webservice异常:Server did not recognize the value of HTTP Header SOAPAction: .

在调用一个webservice接口的时候发现用wsimport 生成客户端代码调用正常,但是通过soap消息直接调用则抛异常:Server did not recognize the value of HTTP Header SOAPAction: .经过长时间搜索找到这篇文章:http://www.tuicool.com/articles/RBVrUv文章指出“在

2016-08-31 17:23:29 13485 2

原创 rest风格api实践初探

经常听到rest风格api这个词,那么到底什么是rest api呢?(Representational State Transfer)?表述性状态转移?《Spring实战》上说:REST就是将资源的状态已最合适的形式从服务器端转移到客户端。我在看了很多博客和资料后仍然感觉到头大,我个人感觉关于这方面的资料很混乱,当然我确实也没有那个心思去看REST提出者Roy Fielding的那篇博士论文Arc

2016-07-26 23:02:18 3119

原创 spring data redis 配置

参考:http://www.linuxidc.com/Linux/2015-04/116798.htm纠结了半天,最终还是放弃使用spring  data redis。因为它好像是不支持读写分离的。我想要一主多从,写在master上,读在slave上(我还配置了sentinel,用作主备切换),但是就我从spring官网上看的例子以及网络上找到的资料来看,spring  data redi

2016-07-23 14:13:38 3642

原创 redis.conf文件详解

redis.conf文件可以在github上查看,下面是我整理的其中的配置项(版本是3.2)的解析,尽量全面一些吧。1、include功能:引入其它配置文件。比如说当你有多个server,而有一些配置项是它们公用的,那么你可以将这些公用的配置项写进一个配置文件common.conf里,然后这些server再include这个配置文件,这些server自己的配置项则分别写在自己的配置文件里。

2016-07-21 17:13:29 16821 1

原创 Quartz基本概念

参考:http://geniuszhe.blog.163.com/blog/static/119346820141142437889/Quartz是一个超级强大的任务调度框架,基本上每一个java开发者都会用到它。首先来看一下Quartz中的一些基本概念,其中三个核心的概念是调度器(Scheduler)、任务(Job)、触发器(Trigger)。一、核心概念(1)任务 Jo

2016-07-21 17:11:45 2464

原创 Google Maps JavaScript API 使用

这两天用了Google Maps JavaScript API 中的一个自动填充地址表单的api,api地址是:https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform使用的时候,填入详细地址,google map api就会去获取这个地址的详细信息,

2016-06-16 17:51:46 5374

原创 通过spring JaxWsPortProxyFactoryBean调用webservice接口

以下是一个通过spring JaxWsPortProxyFactoryBean调用wenservice接口的实例。这个到目前还可用的、免费的webservice接口地址是:http://www.webservicex.net/globalweather.asmx?wsdl首先,我们需要用wsimport 生成客户端需要的java类:wsimport -d G:\tmp -keep -v

2016-06-16 16:42:10 8455 3

原创 Common Lisp入门笔记(五)书后习题

摘自 《Lisp语言- 陈光喜》P28 1.10 习题1、写出下列数学式子中的中缀表达式(+ (+ (* 3 3) (* (- (/ (* 17 5) 6) 4) 8)) 49)(+ (* 2 (sin (- (+ (/ x y) e) (* 3 y)))) (* 45 (* x x)))(+ (+ (+ (+ (+ (* (* a

2016-05-16 09:43:54 1080

原创 Common Lisp入门笔记(四)函数

一、函数1、defunCommon Lisp中定义函数使用defun来完成。通常需要3个以上的参数:函数名、参数表、函数体。例如:>(defun area(r)               (* PI   r   r))>AREA在Common Lisp中,每个函数的地位都是一样的,没有所谓的main函数。函数调用的求值规则就是表达式求值规则:首先对每个参数从左到右求值

2016-05-15 21:40:36 1108

原创 Common Lisp入门笔记(三)条件和循环

一、条件在Lisp中用原子t 表示真,nil表示假。 一般说来,函数名以字母 p 的 lisp 函数用于检验对象具有某种属性。例如,symbolp,listp,keywordp,boundp,fboundp,numberp,typep,oddp,evenp,zerop。像这一类返回值为真或假的函数称为微词 predicate 。1、typep 用于测试某个对象是否具有指定的类型。如

2016-05-15 15:48:25 2540

原创 Common Lisp入门笔记(二)赋值与输入输出

摘自 《Lisp语言- 陈光喜》一、赋值(1)letLisp中使用let来完成局部变量的定义。其形式为:(let  ((var1 exp1)(var2 exp2)…(varn expn))

2016-05-08 21:39:12 5927

原创 Common Lisp入门笔记(一)7个基本运算符

表达式实例:>(+ 1 2)>3Common Lisp表达式求值规则是:首先对每个参数从左到右进行求值;其次将这些已经求值的参数作为运算符函数的参数进行函数调用求值;所求得的值作为表达式的值返回。一、Lisp的数据类型Lisp有其它语言的一切类型,还提供另外其它语言没有两种类型: symbol(符号)和 list(表)。(1)符号显示时总是被转换为大写。一般

2016-05-08 18:13:36 5891

转载 TCP连接的11种状态变迁

转自:http://blog.csdn.net/engrossment/article/details/8104482            http://blog.csdn.net/xiaofei0859/article/details/6044694TCP连接的11种状态变迁 1、先上图:2、全部11种状态

2016-04-14 16:01:37 4909

转载 What is CyclicBarrier in Java

转自:http://javarevisited.blogspot.hk/2012/07/cyclicbarrier-example-java-5-concurrency-tutorial.htmlWhat is CyclicBarrier in Java CyclicBarrier in Java is a synchronizer introduced in JDK

2016-04-13 11:31:51 645

转载 What is CountDownLatch in Java

转自:http://javarevisited.blogspot.hk/2012/07/countdownlatch-example-in-java.htmlWhat is CountDownLatch in Java CountDownLatch in Java is a kind of synchronizer which allows one Thread  to wait fo

2016-04-13 11:30:17 736

原创 webservice 入门笔记五handler处理信息

Handler非常像Servlet技术中的Filter。我们知道,在Servlet中,当一个HTTP到达服务端时,往往要经过多个Filter对请求进行过滤,然后才到达提供服务的Servlet,这些Filter的功能往往是对请求进行统一编码,对用户进行认证,把用户的访问写入系统日志等。相应的,Web服务中的Handler通常也提供以下的功能:对客户端进行认证、授权; 把用户的访问写入系统日志

2016-04-11 21:40:42 1357

rest api java demo(一个记账工程)

(1)项目简介 这个demo很简单,是一个记账小工程。用户可以注册、修改密码,可以记账、查找记账记录等。 (2)接口介绍 用户操作相关: post /users 用户注册 post /users/login 用户登录(这里我把login当成一个名词) put /users/pwd?userId=xxx&sign=xxx 用户修改密码 delete /users?uerId=xxx&sign=xxx 删除用户 记账记录操作相关: post /records?userId=xxx&sign=xxx 增加一条记账记录 get /records/:id?userId=xxx&sign=xxx 查询一条记账记录详情 put /records/:id?userId=xxx&sign=xxx 修改一条记账记录详情 get /records?查询参数&userId=xxx&sign=xxx 分页查询记账记录 delete /records/:id?userId=xxx&sign=xxx 删除一条记账记录 其中url中带sign参数的表示该接口需要鉴权,sign必须是url中最后一个参数。具体的鉴权方法是:用户登录后,服务器生成返回一个token,然后客户端要注意保存这个token,需要鉴权的接口加上sign签名,sign=MD5(url+token),这样可以避免直接传token从而泄露了token。这里我觉得接口最好还带一个时间戳参数timestamp,然后可以在服务端比较时间差,从而避免重放攻击。而且这样还有一个好处,就是如果有人截获了我们的请求,他想伪造我们的请求则不得不改时间戳参数(因为我们在服务器端会比较时间),这样一来sign势必会改变,他是无法得知这个sign的。如果我们没有加时间戳参数的话,那么,他截获了请求url,再重发这个请求势必又是一次合法的请求。我在这里为了简单一些,就不加时间戳了,因为这在开发测试阶段实在是太麻烦了。 (3)关于redis和数据库的说明 服务端在用户登录后,生成token,并将token保存到redis中。后面在接口鉴权的时候会取出token计算签名MD5(除sign外的url+token),进行比对。 这个demo搭建了一个redis主从复制,具体可以参考:http://download.csdn.net/detail/zhutulang/9585010 数据库使用mysql,脚本在 src/main/resources/accounting.sql

2016-07-26

windows版的redis(3.0.501版)master-slave

1、windows下redis,版本是3.0.501。特意弄了三份,用于搭建一个master和2个slave的主从复制。 2、压缩包下共三个文件,一个master,端口号是9379,一个slave1,端口号是9380,一个slave2,端口号是9381。另外,每个文件夹下各有一个sentinel.conf,用于启动sentinel。启动命令是redis-server sentinel.conf --sentinel 3、redis.conf配置项可参考:http://blog.csdn.net/zhutulang/article/details/51969760 搭建主从复制可参考:http://www.linuxidc.com/Linux/2015-04/116798.htm

2016-07-24

webservice入门学习代码笔记

本人自己的webservice入门学习的笔记。非常粗糙和浅显,主要是自己看的。博客地址:http://blog.csdn.net/zhutulang/article/details/51125459

2016-04-11

微信订阅号开发java_demo

微信订阅号开发java demo,只是接收、发送消息的接口。

2016-01-31

“简易版飞鸽传书”源码

该程序可实现在局域网内收发文字信息和文件的功能。希望可以通过这个样例让读者对java网络编程和IO编程有所了解。其中,主要参考了李刚的《疯狂java讲义》,有一些代码直接拷贝自该书第17章,头像图片来源于网络,特此说明。另外需要说明的是:本程序在jdk1.8下开发,在笔者的局域网环境下测试通过,能实现发送文字消息和传输小文件的功能,但笔者并不能保证能在你的环境下也一定可以测试通过~ O__O “…

2015-10-23

java仿windows计算器

java写的仿windows风格计算器 注: 1、没有监听键盘事件 2、按一次“=”,只执行一次计算。而windows计算器不同,例如,按下“2+3”,每按一次“=”,会在结果上再加一次3。 3、“%”运算逻辑与windows的不同,这里认为是 当前数/100。

2012-11-12

字符验证码识别的算是比较新的论文吧

一篇字符验证码识别的论文,或许对你有启发

2012-06-08

Java高精度计算文件

Java高精度计算文件,很好用!!!非原创,特此向代码原作者致敬

2011-10-05

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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