- 浏览: 562732 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (478)
- lucene (45)
- oracle (19)
- nutch (2)
- blog (2)
- 垂直搜索 (19)
- java综合 (89)
- spring (15)
- Hibernate (9)
- Struts (9)
- Hadoop (16)
- Mysql (12)
- nosql (10)
- Linux (3)
- MyEclipse (4)
- Ant (1)
- 设计模式 (19)
- JBPM (1)
- JSP (1)
- HtmlParser (5)
- SVN (2)
- 插件 (2)
- 收藏 (7)
- Others (1)
- Heritrix (18)
- Solr (4)
- 主题爬虫 (31)
- 内存数据库 (24)
- 分布式与海量数据 (32)
- httpclient (14)
- Tomcat (1)
- 面试宝典 (6)
- Python (14)
- 数据挖掘 (1)
- 算法 (6)
- 其他 (4)
- JVM (12)
- Redis (18)
最新评论
-
hanjiyun:
本人水平还有待提高,进步空间很大,看这些文章给我有很大的指导作 ...
JVM的内存管理 Ⅲ -
liuxinglanyue:
四年后的自己:这种方法 不靠谱。 使用javaagent的方式 ...
计算Java对象占用内存空间的大小(对于32位虚拟机而言) -
jaysoncn:
附件在哪里啊test.NoCertificationHttps ...
使用HttpClient过程中常见的一些问题 -
231fuchenxi:
你好,有redis,memlink,mysql的测试代码吗?可 ...
MemLink 性能测试 -
guyue1015:
[color=orange][/color][size=lar ...
JAVA同步机制
#Get going with JRedis - here's how:
Introduction
So how do you use JRedis? Pull the code (r16) or download from github.
Details
JRedis is a specification and a reference implementation. Currently there is one implementation providing (blocking semantics on method calls) for a passive client (that uses the caller's thread to do its job).
This initial client can not be shared across threads, but you can certainly either put it behind a synchronized gate, or, fire up a whole bunch for each one of your threads, as you prefer.
If you do share an instance from behind a facade, do note that redis connections are stateful, and if you plan on using the facility to switch between dbs using jredis.select(db) SELECT db it is almost guaranteed to be bad idea to share a single connection across multiple threads. However, if you will not be using select, then there should be no problems with sharing a single connection from behind a facade. If switching dbs is required, then you will need to create dedicated JRedis instances per thread. (This is very much a server issue and not JRedis specific.)
Alright, that said, here is a barebones JRedis app -- HelloAgain:
package org.jredis.examples; import org.jredis.ClientRuntimeException; import org.jredis.Command; import org.jredis.JRedis; import org.jredis.RedisException; import org.jredis.connector.ProviderException; import org.jredis.ri.alphazero.JRedisClient; import org.jredis.ri.alphazero.support.Encode; /** * Note this program will set a (hopefully non-coliding!) key in your DB 13. * * @author Joubin Houshyar * */ public class HelloAgain { public static final String key = "jredis::examples::HelloAgain::message"; public static void main(String[] args) { String password = ""; if(args.length > 0) password = args[0]; new HelloAgain().run(password); } private void run(String password) { try { JRedis jredis = new JRedisClient(); if(!password.equals("")) jredis.auth(password); jredis.ping().select(13); if(!jredis.exists(key)) { jredis.set(key, "Hello Again!"); System.out.format("Hello! You should run me again!\n"); return; } String msg = Encode.toStr ( jredis.get(key) ); System.out.format("%s\n", msg); } catch (RedisException error){ if (error.getCommand()==Command.PING){ System.out.format("I'll need that password! Try again with password as command line arg for this program.\n"); } } catch (ProviderException bug){ System.out.format("Oh no, an 'un-documented feature': %s\nKindly report it.", bug.getMessage()); } catch (ClientRuntimeException problem){ System.out.format("%s\n", problem.getMessage()); } } }
The essentials:
1) Get a connection implementing JRedis interface. (You'll want to code to this interface to minimize the impact of changes behind the scene) like this: 2) Do you have a requirepass jredis in your 'redis.conf' ? Then do this: Want to bind a value to a key (map semantics)? Use the Redis 'String' commands: What can 'myKey' be? Any java.lang.String value that does not contain \r, \n, and space. Other than that, Redis and JRedis support UTF-8 keys: JRedis is to the metal. So you can pass byte[]. In fact, if you are after high performance, you'll want to avoid passing java.lang.String, unless that is precisely what you want stored. Redis itself will accept anything for the value. You can pass up to 1MB of \r\n or zeros, if you feel like it. Its a blob. So, do you have a Java (Serializable) object you want to add as a member of a set? Here is how: So, to repeat, Redis treats values as blobs, just byte[]s, so JRedis api reflects that and returns either byte[] or List<byte[]> (for set and list ops). So, to help out there is (as of r16 but this will be improved so remember this bit is in flux), Encode. Here's how we get our objects back using Encode.decode(byte[] bytes), which which have imported using import static to make things easier: byte[]s go in, and byte[]s come out. If you want to convert to Number and String, check out the methods in DefaultCodec class. And its as simple as that. /Enjoy! JRedis jredis = new JRedisClient();
jredis.auth(password);
3) Use the JRedis api, which is an analog of the Redis command set.
jredis.set(myKey, myValue);
String asciiKey = "ascii-key";
String utf8key_Russian = "фывапро";
String utf8key_Chinese = "漢字[汉字]";
String utf8key_Persian = "مهندس";
String variousKeys[] = {asciiKey, utf8key_Russian, utf8key_Chinese, utf8key_Persian};
String value = "some data";
for(String key : variousKeys){
System.out.format("using %s as key for SET ...", key);
redis.set(key, value);
System.out.format("...and we get:\n\t %s => '%s'\n", key, value);
}
What can 'myValue' be?
// lets make a 100 SimpleBean instances and add them to our
// 'object_set' key (which is a Redis SET)
int objcnt = 100;
System.out.format ("Creating and saving %d Java objects to redis ...", objcnt);
for(int i=1; i<objcnt; i++){
// instance it
SimpleBean obj = new SimpleBean ("bean #" + i);
// get the next available object id from our Redis counter using INCR command
int id = redis.incr("SimpleBean::next_id")
// we can bind it a unique key using map (Redis "String") semantics now
String key = "objects::SimpleBean::" + id;
// voila: java object db
redis.set(key, obj);
// and lets add it to this set too since this is so much fun
redis.sadd("object_set", obj);
}
System.out.format (" and done.\n");
And how do I get my values back to proper types?
// lets get all those objects in that object set
// (Remember: JRedis is NOT maintaining a type system for you, so
// if you have other kinds of blobs in that set, the object stream is not going to like it
List<SimpleBean> members = decode (redis.smembers("object_set"));
for(SimpleBean obj : members) {
System.out.format("a member of 'object-set' => %s\n", obj.toString());
}
And there you are.
发表评论
-
Redis: under the hood(收藏)
2011-01-03 10:54 1137Redis: under the hood How ... -
Redis指令文档(非常有用的)
2011-01-01 15:32 1633连接控制QUIT 关闭连接AUTH (仅限启用时)简单的密 ... -
Webdis – 为 Redis 提供 HTTP 接口
2010-12-31 09:24 2088Redis 一直以来只提供纯文本操作协议(只有在 C ... -
Redis几个认识误区
2010-12-05 09:25 1065来自timyang的博客:Redi ... -
Redis tutorial, April 2010
2010-12-01 13:38 1355文章太长了,下面是其中的一小部分 转:http://simo ... -
redis常用命令
2010-12-01 13:22 21141、redis-benchmark redis基准信息,red ... -
使用Jredis做的小例子(入门级)
2010-11-30 16:02 5848redis入门级例子: package com. ... -
Redis命令总结
2010-11-30 13:03 805Redis提供了丰富的命令(command)对 ... -
Redis, from the Ground Up
2010-11-30 10:58 789Redis, from the Ground Up A ... -
Redis, from the Ground Up(4)
2010-11-30 10:57 920Redis Virtual Memory The go ... -
Redis, from the Ground Up(3)
2010-11-30 10:56 1044Expiry The EXPIRE command e ... -
Redis, from the Ground Up(2)
2010-11-30 10:55 678Key Disadvantages Redis req ... -
Redis, from the Ground Up(1)
2010-11-30 10:52 836A deep dive into Redis' orig ... -
深入Redis,读redis-from-the-ground-up有感(转)
2010-11-30 10:50 1142上有一篇介绍Redis的文章,由浅入深地讲解了Redis: ... -
键值数据库—Redis(一) 基础入门
2010-11-29 21:46 1526Redis的知识准备 redis的基础介绍:http:/ ... -
Redis配置文件redis.conf参数解读
2010-11-29 20:43 1869转:http://blog.csdn.net/Java2K ... -
linux下redis的安装
2010-11-29 20:41 1006源地址:http://hanqunfeng.iteye.c ...
相关推荐
数学建模拟合与插值.ppt
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
mysql相关资源.txt
此项目为一个HTML+CSS+JS的国漫分享网站,用户可以在此网站中观看自己喜欢的国漫。此网站共有4个页面,分别为首页,最新动态,热门推荐,分类。页面动漫图片齐全,内容可更改。可用于期末课程设计或个人课程设计。
Python爬虫爬取漫画
模拟退火算法应用。C++语言编程用模拟退火算法解决旅行商问题。该资源包含模拟退火算法C++语言的源代码。模拟退火算法是一种基于概率的全局优化算法,最初来自于物理学中的退火过程。它通过模拟金属冷却时原子排列逐渐趋于最低能量状态的过程来寻找问题的最优解。模拟退火算法常用于解决非线性、组合优化问题,特别适合于大规模、复杂的搜索空间。
传感器试题及答案.doc
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
本文档主要讲述的是MongoDB数据表基本操作;希望对大家会有帮助;感兴趣的朋友可以过来看看
本数据集提供了2011至2021年间全国各省废气和废水中主要污染物的排放量统计数据。数据涵盖了二氧化硫、氮氧化物、烟尘和颗粒物等关键污染物的排放量,为研究中国环境状况和污染物排放趋势提供了宝贵信息。数据显示,2011-2021年间,各省的二氧化硫排放量从数十万吨到数百万吨不等,其中广东、广西、海南等省份的排放量较高。氮氧化物排放量同样显示出地域差异,北京、天津等北方城市的排放量相对较低,而一些工业大省如河北、山西的排放量较高。颗粒物排放量统计显示,工业源和生活源是主要的排放源,其中工业源排放量占比较大。这些数据不仅对环保政策制定者具有参考价值,也为学术研究提供了实证基础。
脉冲宽度测量单片机课程设计.doc
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
全国矢量地图数据【国道+高速公路】ArcGIS Shape格式数据集是一种专门用于地理信息系统(GIS)的矢量数据集,包含中国范围内国道和高速公路的详细路网信息。该数据集广泛应用于交通规划、导航、物流分析和灾害应急等领域,具有高精度和易用性。 数据集特点: 1. 数据内容: 国道:包括以“G”开头的国家级公路,如G1京哈高速、G107国道等。 高速公路:包括全国范围内的所有高速公路网,覆盖主要经济区、城市和边境口岸。 属性数据: 道路编号(国道或高速公路编号)。 道路名称。 道路等级(如一级、二级、快速路等)。 起点和终点坐标。 道路长度(单位:公里)。 相关属性(如路段建成年份、设计速度、车道数等)。 2. 数据格式: **Shapefile(.shp)**格式,支持主流GIS软件(如ArcGIS、QGIS)及数据处理工具(如Python、Matlab)。 3. 投影坐标系: 一般采用WGS84地理坐标系,或可根据需求转换为**GCJ-02(火星坐标系)**以配合国内导航应用。
4
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。 感兴趣的朋友可以过来看看
商道融绿ESG评级季度数据及分项ESG评级2015-2022年的数据集提供了一个全面评估上市公司在环境、社会和公司治理(ESG)方面表现的视角。该数据集覆盖了2015至2022年间的数据,包含了沪深A股上市公司以及港股通的香港上市公司。数据集包含了多个维度的指标,如公司代码、公司名称、评级日期、ESG综合评级、历史评级、财务状况和所属行业等,共计13个指标。这些指标不仅包括了ESG评级,还涵盖了公司的财务分析,例如总市值、流通市值、市盈率PE(TTM)、每股收益EPS(TTM)、每股营业收入(TTM)以及每股经营活动产生的现金流量净额(TTM)等。此外,数据集还提供了证监会行业和Wind行业的分类信息,为研究者提供了一个多角度分析上市公司ESG表现的工具。该数据集对于投资者、资产管理公司以及企业自身在可持续发展报告撰写和风险管理中具有重要参考价值。
WPF树菜单拖拽功能,下级目录拖到上级目录,上级目录拖到下级目录.zip