redis
未读
如何在ubuntu18.04上安装和保护redis
如何连接到Redis数据库
如何管理Redis数据库和Keys
如何在Redis中管理副本和客户端
如何在Redis中管理字符串
如何在Redis中管理list
如何在Redis中管理Hashes
如何在Redis中管理Sets
如何在Redis中管理Sorted Sets
如何在Redis中运行事务
如何使Redis中的Key失效
如何解决Redis中的故障
如何从命令行更改Redis的配置
Redis数据类型简介
介绍Redis是一个开源的内存中键值数据存储。设置在Redis的是储存在一个给定的钥匙串的集合。当保存在一组中时,单个记录值称为_成员_。与列表不同,集合是无序的,并且不允许重复的值。
本教程说明了如何创建集合,检索和删除成员以及比较不同集合的成员。
如何使用本指南本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。
本指南中显示的命令已在运行Redis版本4.0.9的Ubuntu 18.04服务器上进行了测试。要设置类似的环境,您可以按照我们的指南如何在Ubuntu 18.04上安装 ...
如何在ubuntu18.04上安装和保护redis
如何连接到Redis数据库
如何管理Redis数据库和Keys
如何在Redis中管理副本和客户端
如何在Redis中管理字符串
如何在Redis中管理list
如何在Redis中管理Hashes
如何在Redis中管理Sets
如何在Redis中管理Sorted Sets
如何在Redis中运行事务
如何使Redis中的Key失效
如何解决Redis中的故障
如何从命令行更改Redis的配置
Redis数据类型简介
介绍Redis是一个开源的内存中键值数据存储。在Redis的,排序集合类似于一个数据类型集在这两者都是串的非重复的组。不同之处在于,已排序集中的每个成员都与一个分数相关联,从而可以从最小分数到最大分数进行排序。与集合一样,排序集合中的每个成员都必须是唯一的,尽管多个成员可以共享同一分数。
本教程说明了如何创建排序集,检索和删除其成员以及如何从现有集合中创建新的排序集。
如何使用本指南本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。
本指南中显示的命令已在运行Redis版本4.0.9 ...
如何在ubuntu18.04上安装和保护redis
如何连接到Redis数据库
如何管理Redis数据库和Keys
如何在Redis中管理副本和客户端
如何在Redis中管理字符串
如何在Redis中管理list
如何在Redis中管理Hashes
如何在Redis中管理Sets
如何在Redis中管理Sorted Sets
如何在Redis中运行事务
如何使Redis中的Key失效
如何解决Redis中的故障
如何从命令行更改Redis的配置
Redis数据类型简介
介绍Redis是一个开源的内存中键值数据存储。无论您是在本地安装Redis还是在使用远程实例,都需要连接到该实例才能执行大多数操作。在本教程中,我们将介绍如何从命令行连接到Redis,如何验证和测试您的连接以及如何关闭Redis连接。
如何使用本指南本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。
本指南中显示的命令已在运行Redis版本4.0.9的Ubuntu 18.04服务器上进行了测试。要设置类似的环境,您可以按照我们的指南如何在Ubuntu 18.04上安装和保护Redis ...
引言什么是 ASM ?ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class 文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。
与 BCEL 和 SERL 不同,ASM 提供了更为现代的编程模型。对于 ASM 来说,Java class 被描述为一棵树;使用 “Visitor” 模式遍历整个二进制结构;事件驱动的处理方式使得用户只需要关注于对其编程有意义的部分,而不必了解 Java 类文件格式的所有细节:ASM 框架提供了默认的 “response taker”处理这一切。
为什么要动态生成 Java 类?动态生成 Java 类与 AOP 密切相关的。AOP 的初衷在于软件设计世界中存在这么一类代码,零散而又耦合:零散是由于一些公有的功能(诸如著名的 lo ...
您在采访中可能已经遇到过这个问题,锁和监视器之间有什么区别?好吧,要回答这个问题,您必须对Java多线程如何在后台工作有足够的了解。
答案很简短,锁为实现监视器提供了必要的支持。长答案在下面阅读。
lock锁是一种数据,在逻辑上是堆内存上对象标头的一部分。JVM中的每个对象都具有此锁(或互斥锁),任何程序均可使用该锁来协调对对象的多线程访问。如果有任何线程想要访问该对象的实例变量;然后线程必须“拥有”对象的锁(在锁存储区中设置一些标志)。试图访问该对象变量的所有其他线程必须等待,直到拥有该线程的线程释放该对象的锁(取消设置标志)。
线程拥有锁后,它可以多次请求相同的锁,但是在将锁提供给其他线程之前,必须释放相同的次数。例如,如果一个线程请求了三次锁,则该线程将继续拥有该锁,直到它“释放”了三次。
请注意,当线程明确要求锁时,它是由线程获得的。在Java中,这是通过synced关键字或通过waitand来完成的notify。
monitorMonitor是一种同步构造,它允许线程具有互斥(使用锁)和协作功能,即使线程能够等待某些条件成立(使用wait-set)的能力。
换句话说,连同实现 ...
1. Overview在本文中,我们将研究Gradle Java项目的不同配置文件。另外,我们将看到实际构建的细节。
您可以查看 Gradle简介以获得Gradle的一般介绍。
2. build.gradle假设我们只是通过运行gradle init –type java-application创建一个新的Java项目。这将为我们提供一个具有以下目录和文件结构的新项目:
123456789101112131415build.gradlegradle wrapper gradle-wrapper.jar gradle-wrapper.propertiesgradlewgradlew.batsettings.gradlesrc main java App.java test java AppTest.java
我们可以将build.gradle文件视为项目的心脏或大脑。本示例的结果文件如下所示:
12345678910111213141516plu ...
gradle教程
未读
帮助命令gradle –help
查看版本gradle -v
执行特定的任务gradle [taskName]
构建gradle build
跳过测试构建构建gradle build -x test
继续执行任务而忽略前面失败的任务gradle build –continue
试运行buildgradle -m build
产生build运行时间的报告gradle build –profile结果存储在build/report/profile目录,名称为build运行的时间。
显示任务间的依赖关系gradlle tasks –all
查看testCompile的依赖关系gradle -q dependencies –configuration testCompile
清空所有编译、打包生成的文件(即:清空build目录)gradle clean
使用指定的Gradle文件调用任务gradle -b [file_path] [task]
使用指定的目录调用任务gradle -q -p [dir] helloWorld
Gradle的图形界面 ...
gradle教程
未读1.简介在本教程中,我们将研究如何将Gradle构建文件转换为Maven POM文件。我们还将探讨一些可用的自定义选项。
2. Gradle Build File让我们以一个标准的摇篮Java项目开始,gradle这个对Maven的, 具有以下的build.gradle文件:
12345678910111213repositories { mavenCentral()} group = 'com.daicy'version = '0.0.1-SNAPSHOT' apply plugin: 'java' dependencies { compile('org.slf4j:slf4j-api') testCompile('junit:junit')}
3. Maven插件Gradle附带了Maven插件,该插件增加了将Gradle文件转换为Maven POM文件的支持。它还可以将工件部署到Maven存储库。
要使用此功能,我们将Mav ...
java并发教程
未读Java执行程序框架的好处之一是我们可以运行并发任务,这些并发任务在处理任务后可以返回单个结果。在Java并发 API实现了这一具有以下两个接口Callable和Future。
1. Java Callable和Future接口1.1.CallableCallable接口有call()方法。在这种方法中,我们必须实现任务的逻辑。该Callable接口是一个参数化接口,这意味着我们必须指示该call()方法将返回的数据类型。
2.2.FutureFuture接口具有获取Callable对象生成的结果并管理其状态的方法。
2. Java Callable Future示例在此示例中,我们正在创建FactorialCalculator类型为的Callable。这意味着我们将覆盖它的call()方法,并且在计算之后,我们将从call()方法返回结果。以后可以从Future主程序保存的引用中检索此结果。
12345678910111213141516171819202122232425FactorialCalculator.javapublic class FactorialCalculator ...
java
未读在Java编码中,我们容易犯一些错误,也容易疏忽一些问题,因此笔者对日常编码中曾遇到的一些经典情形归纳整理成文,以共同探讨。
1. 纠结的同名现象
很多类的命名相同(例如:常见于异常、常量、日志等类),导致在import时,有时候张冠李戴,这种错误有时候很隐蔽。因为往往同名的类功能也类似,所以IDE不会提示warn。
解决
写完代码时,扫视下import部分,看看有没有不熟悉的。替换成正确导入后,要注意下注释是否也作相应修改。
启示
命名尽量避开重复名,特别要避开与JDK中的类重名,否则容易导入错,同时存在大量重名类,在查找时,也需要更多的辨别时间。
2. 想当然的API现象
有时候调用API时,会想当然的通过名字直接自信满满地调用,导致很惊讶的一些错误:
示例一:flag是true?
boolean flag = Boolean.getBoolean("true");
可能老是false。
示例二:这是去年的今天吗(今年是2012年)?结果还是2012年:
Calendar calendar = GregorianCalendar.getInstance();
...
