自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序猿_三产

技术人生

  • 博客(113)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Nginx

Nginx编译 Nginx针对 Unix 环境下载 Nginx从 Nginx 官网 出下载想要编译版本的 Nginx,Nginx 官方提供三个版本:Mainline version主线版本,功能较新,稳定性较 Stable version 稍差,建议学习使用该版本,实际生产使用 Stable version。Stable version稳定版本Legacy v...

2019-10-17 18:56:58 7129 3

原创 Redis Lua脚本的使用

Redis提供了redis-cli、redis-server、redis-benchmark等Shell工具。它们虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题。Redis提供了redis-cli、redis-server、redis-benchmark等Shell工具。它们虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题。redis-cli详解用法:redis-c

2017-09-21 09:06:03 3231

原创 Redis Shell

Redis提供了redis-cli、redis-server、redis-benchmark等Shell工具。它们虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题。Redis提供了redis-cli、redis-server、redis-benchmark等Shell工具。它们虽然比较简单,但是麻雀虽小五脏俱全,有时可以很巧妙地解决一些问题。redis-cli详解用法:redis-c

2017-09-19 12:08:22 1648

原创 Redis 发布订阅功能

简介Redis提供了基于“发布/订阅”模式的消息机制,此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel)发布消息,订阅该频道的每个客户端都可以收到该消息(频道没有”创建“的概念,可以直接订阅、亦可直接发布消息)。命令发布消息PUBLISH 自2.0.0可用。 **时间复杂度:**O(N+M),其中 N 是频道 channel 的订阅者数量,而 M

2017-09-18 10:29:52 1228

原创 Redis 事务

事务相关命令MULTI 自1.2.0可用。 **时间复杂度:**O(1)。语法:MULTI说明:标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。返回值:总是返回 OK 。示例:# 下面命令在 客户端1 中执行coderknock> MULTIOKcoderknock> SET testMULTI

2017-09-15 11:49:03 911

原创 Redis 通信协议

简介几乎所有的主流编程语言都有Redis的客户端(http://redis.io/clients),不考虑Redis非常流行的原因,如果站在技术的角度看原因还有两个:客户端与服务端之间的通信协议是在 TCP 协议之上构建的。客户端和服务器通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 。客户端和服务器发送的命令或数据一律以 \r\n (CRLF)结尾。Redis制定了 RES

2017-09-08 15:47:41 2378

转载 Redis SCAN

SCANSCAN cursor [MATCH pattern] [COUNT count]SCAN 命令及其相关的 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements):SCAN 命令用于迭代当前数据库中的数据库键。SSCAN 命令用于迭代集合键中的元素。HSCAN 命

2017-09-07 14:53:59 1362

原创 Redis 数据库操作、配置以及慢查询

Redis 提供了几个面向 Redis 数据库的操作,例如之前已经介绍过或者使用过的 DBSIZE 、SELECT 、FLUSHDB/FLUSHALL 本节将通过具体的使用场景介绍这些命令。切换数据库SELECT 自1.0.0可用。 **时间复杂度:**O(1)。语法:SELECT index说明:切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。默

2017-09-04 00:59:11 2508

原创 Redis 列表

简介列表可以存储 多个 有序 可重复 的字符串。列表中的每个字符串称为元素(element),一个列表最多可以存储2 ^ 32 - 1个元素。在Redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等。列表是一种比较灵活的数据结构,它可以充当栈和队列的角色,在实际开发上有很多应用场景。 命令添加操作从右侧插入元素RPUSH 自1.0.

2017-09-01 11:33:54 1247

原创 Redis 键管理

单个键管理在 《Redis 概述》 中我们已经介绍过 DEL 、 EXISTS 、 EXPIRE 、SCAN 的用法了,下面我们介绍其他比较重要的命令。查看存储类型TYPE 自1.0.0可用。 **时间复杂度:**O(1)。语法:TYPE key说明:返回 key 所储存的值的类型。返回值:none (key不存在)string (字符串)list (列表)set (集合)zset

2017-08-30 17:18:30 1029

原创 Redis 有序集合

简介有序集合是给每个元素设置一个分数(score)作为排序的依据这一概念的集合,其也是不能有重复元素的。有序集合提供了获取指定分数和元素范围查询、计算成员排名等功能。 数据结构 是否允许重复元素 是否有序 有序实现方式 应用场景 列表 是 是 索引 时间轴、消息队列等 集合 否 否 无 标签、社交关系等 有序结合 否 是 分数

2017-08-28 09:09:12 2280

原创 Redis 集合

简介集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素。一个集合最多可以存储 232−12^{32}-1 个元素。Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在实际开发中解决很多实际问题。命令集合内操作添加元素SADD 自1.0.0可用。

2017-08-26 09:50:39 899

原创 Redis 哈希

哈希在 Redis 中,哈希类型是指键值本身又是一个键值对结果,其结构表示为:Redis 结构:key -> value在哈希中 上述的 value 结构:field -> value使用 json 表示:{key:{field1:value1,field2:value2,...fieldN:valueN}}常用命令设置值HSET 自2.0.0起可用。 时间复杂度: O(1)语法:H

2017-08-25 21:25:15 633

原创 Redis 字符串介绍及相关命令

字符串操作相关命令Redis 的命令及其选项时不区分大小写的(键以及值是区分大小写的),本文中采用 [] 表示可选项,命令中的关键字使用大写,参数值使用小写以便区分常用命令设置值SET 自1.0.0起可用。 时间复杂度: O(1)语法:SET key value [EX seconds] [PX milliseconds] [NX|XX]返回值:成功返回 OK 失败返回 nil示例:

2017-08-24 13:05:59 701

原创 SPI标准

SPI 要遵循的标准:一个目录:classpath下:META-INF/services一个配置文件:上面的目录下,满足:文件名是扩展的接口的全名文件内部内容是实现接口的实现类文件的编码必须为 UTF-8MySQL jar 示例├─com【该目录子目录省略】└─META-INF │ INDEX.LIST │ MANIFEST.MF │ └─service

2017-08-23 12:44:10 1963

原创 Redis 概览

Redis 键相关的通用命令:1. 查看所有键#### KEYS 自1.0.0起可用。 时间复杂度: O(N), N 为数据库中 key 的数量。语法:KEYS pattern说明:查找所有符合给定模式 pattern 的 key 。KEYS * 匹配数据库中所有 key 。KEYS h?llo 匹配 hello , hallo 和 hxllo 等。KEYS h*llo 匹配 h

2017-08-23 12:40:15 761

原创 Java 8 Lambda : Comparator 示例

在这个例子中,我们将向您展示如何使用 Java 8 Lambda 表达式来编写 `Comparator` 对 `List` 进行排序。

2017-04-26 12:29:55 8263 2

翻译 Java 8 Streams map() 示例

在Java 8中`stream().map()`,您可以将对象转换为其他对象。本文就举一些例子来介绍这些方法。

2017-04-25 17:04:53 43934 6

原创 Kotlin简介

Kotlin 是什么?Kotlin是JetBrains开发的针对JVM、Android 和浏览器的静态编程语言。JetBrains,作为目前广受欢迎的 Java IDE IntelliJ IDEA 的开发商,在 Apache 许可下已经开源其Kotlin 编程语言。JetBrains 作为最智能的 Java IDE 的开发商,对 Java 的了解是毋庸置疑的,在使用 Java 过程中,JetBrai

2017-04-06 17:00:53 1643

翻译 如何在java中创建不可变类?

原文【如何在java中创建不可变类?】地址今天我们将学习如何在java中创建不变的类。不可变对象是在初始化之后状态不变的实例。例如,String是一个不可变类,一旦实例化,它的值不会改变。不可改变的类对于缓存的目的是有益的,因为你不需要担心价值的变化。不可变类的其他好处是它本质上是线程安全的,所以在多线程环境的情况下,您不需要担心线程安全。在这里,我提供了一种通过一个例子来创建Java中不可变类的方

2017-03-24 15:25:18 909

翻译 自定义Queue

Queue(队列)是一种特殊类型的集合,旨在使用先进先出方式处理和排序之前保存元素。下面使用 Array 实现 Queue,并提供诸如enqueue(obj),dequeue()和isEmpty()等基本功能。/** * <p></p> * * @author 三产 * @version 1.0 * @date 2017-03-24 * @QQGroup 213732117 * @we

2017-03-24 15:05:15 731

原创 自己实现 ArrayList

英文原文ArrayList 类似于 Array 对象,但是当列表中的对象数量增加时,它提供了动态空间分配的功能。在 Array 对象中,我们需要在初始化时提供数组的大小,但这并不是 ArrayList 所必需的。实际上,当您初始化ArrayList时,它将自动将其容量分配为10。这里我用 Array 对象实现ArrayList,并提供 get(index),add(object) 和 remove(

2017-03-24 14:50:07 588

翻译 Java Clone

Java类自带了本地的clone()方法,该方法会返回现有实例的副本。如果要使用Java克隆,必须实现java.lang.Cloneable接口,以便它不会在运行时抛出CloneNotSupportedException。 如果clone()函数会返回对象副本,那么在什么情况下我们需要重写它? 让我们运行下面的java类来更好的理解。import java.util.HashMap;impor

2017-03-24 13:25:53 394

转载 全面解读Math对象及位运算

本文转载自:"https://segmentfault.com/a/1190000008786789" title="全面解读Math对象及位运算">全面解读Math对象及位运算Math方法和位运算几乎是被忽略得最严重的知识点, 和正则一样, 不用不知道, 一用到处查. 为了告别这种低效的编程模式, 我特地总结此篇, 系统梳理了这两个知识点. 以此为册, 助你攻破它们.原文: "http://

2017-03-23 13:43:06 1799

原创 Gradle 深度刨析

基本构建块每个 Gradle 构建都包含三个基本概念:project、task 和 property。 每个构建包含至少一个 project、一个或多个 task。project 和 task 暴露的属性可以用来控制构建。 Gradle 的核心组件直接的依赖关系如下: 在多项目构建中,一个 project 可以依赖于其他的 project 。在同一个 project 中一个 task 可以依

2017-03-22 17:01:13 650

原创 Gradle Wrapper

Why试想一下,你做好了一个 Gradle 构建的 Web 应用,并且要分享给他人,让他人可以参与到开发中,但对方下载代码后安装了 Gradle 却发现应用未能正常使用。经过多次长时候才发现原来是 Gradle 运行时版本不兼容。怎样解决这个问题呢?WhatGradle 包装器是 Gradle 的核心特性,能够让机器在没有安装 Gradle 运行时的情况下运行 Grade 构建。它也让构建脚本运

2017-03-14 16:19:50 739

原创 使用Gradle在嵌入式Web容器Jetty中运行Web应用

在使用Gradle第一次构建Web应用的代码基础上我们进行修改Jetty 插件在 Maven 等构建的项目中,我们要使用 Jetty 做嵌入式 Web 容器运行 Web 应用,通常需要添加 Jetty 相关依赖以及进行类似下面代码配置: package com.coderknock.jettystudy; import org.eclipse.jetty.server.Server;

2017-03-13 16:06:34 2620

原创 使用Gradle自定义配置构建Web应用

自定义配置War 插件默认使用 GBK 编码做为代码编码。当我们的代码中有中文字符,并且代码编码为非 GBK 编码时会报错编码GBK的不可映射字符此时我们需要自定义项目编译编码 “`groovy //设置编码 [compileJava, compileTestJava].options.encoding = ‘UTF-8’约定的项目结构也许并不能满足我们项目的情景,我们可以通过自定义配置

2017-03-13 15:21:54 633

原创 使用Gradle第一次构建Web应用

Gradle Web 插件Gradle 提供了打包 war 包的插件,可以将 Web 应用部署到本地 Servlet 容器中。使用 War 和 Jetty 插件Gradle 对构建和运行 Web 应用提供了对应扩展的支持。 下面我们介绍 War 和 Jetty 插件。 War 插件扩展自 Java 插件,为 Web 应用部署和组装 War 包添加了约定和支持。 Jetty 是一个流行的轻量级开

2017-03-13 14:31:41 3965 3

原创 使用Gradle自定义配置构建Java程序

自定义源代码路径、编译输出路径某些情况下默认的源代码路径等可能不符合我们项目的结构,这时除了修改项目结构外,我们还可以自定义源代码路径等配置。build.gradle//使用 Java 插件//默认在 src/main/java下查找源代码apply plugin: 'java'//定义项目的版本version = 0.1//设置 Java 兼容版本sourceCompatibility

2017-03-10 17:16:56 817

原创 第一次使用Gradle构建Java程序

目录结构│ build.gradle└─src └─main └─java └─com └─manning └─gia └─todo │ ToDoApp.java

2017-03-10 17:16:25 3716

原创 第一个 Gradle 脚本及简单命令

第一个 Gradle 脚本及简单命令task helloworld { doLast { print 'Hello world!' }}/* <<这种方式将在 Gradle5.0 中删除,不建议使用 */task helloworldSort << { print 'Hello world!'}task startSession << { pr

2017-03-10 17:14:48 3738

转载 Spring Boot使用Netty SocketIO实现WebIM功能

本文转载自:Spring Boot使用Netty SocketIO实现WebIM功能Netty SocketIO是一个 Java语言版本的Socket.IO服务器的实现,基于Netty框架开发,使用简单,功能强大。在Spring Boot中包含了对Netty SocketIO的支持,只需要简单配置即可加入。第一步:增加Netty SocketIO的依赖。<dependency> <group

2017-02-03 14:29:07 16350 2

原创 跨平台的HTML转图片方法

使用 selenium 来进行 HTML 页面的截图处理,文中使用 python ,但也有 Java 对应的实现

2017-01-12 12:08:55 562

原创 Centos MySQL 5.7 安装、升级详细教程

在 Centos 通过 yum 方式安装的 MySQL 太过陈旧,所以升级成目前的最新稳定版本,过程中遇到很多问题,记录一下并给出解决的方法,希望能让之后的人省些力。

2017-01-07 07:39:58 1325 1

原创 Java并发工具包之同步器

同步器为每种特定的同步问题提供了解决方案SemaphoreSemaphore【信号标;旗语】,通过计数器控制对共享资源的访问。测试类: package concurrent; import concurrent.thread.SemaphoreThread; import java.util.concurrent.Semaphore; /** * 拿客 * w

2017-01-06 15:30:45 292

转载 文章标题

本文来源于问题 Java字符串连接最佳实践? java连接字符串有多种方式,比如+操作符,StringBuilder.append方法,这些方法各有什么优劣(可以适当说明各种方式的实现细节)? 按照高效的原则,那么java中字符串连接的最佳实践是什么? 有关字符串处理,都有哪些其他的最佳实践?废话不多说,直接开始, 环境如下:JDK版本: 1.8.0_65CPU: i7 479

2017-01-06 15:27:47 249

原创 欢迎使用CSDN-markdown编辑器

Spring Boot实战读书笔记:基于Spring Boot 1.4.1完善2.1.1 查看初始化的Spring Boot 新项目 第23页从1.4开始使用@RunWith(SpringRunner.class)@SpringBootTest代替了@RunWith(SpringJUnit4ClassRunner.class)@SpringApplicationConfiguration(cl

2017-01-06 15:27:14 321

原创 Linux Redis安装及使用

转载请标明出处 http://coderknock.com获取Redis包[可以在官网获取最新的下载路径]wget http://download.redis.io/releases/redis-3.2.0.tar.gz解压、编译tar xzf redis-3.2.0.tar.gzcd redis-3.2.0makemake testmake installmake test时可能会报如下错

2016-05-28 02:02:34 951

原创 Spring MVC源码解析

转载请标明出处 http://coderknock.comXXXAwareXXXAware在Spring中该类接口用于通过Spring自动向XXXAware实现类中实现的setXXX(XXX xxx)方法中注入XXX对象,方便在实现类中调用XXX对象。 例如: A类需要使用当前的ApplicationContext,那么只要是A实现ApplicationContextAware接口,然后实现接口

2016-05-03 18:39:04 635

MyEclipse2015破解

亲测可用MyEclipse2015破解文件。解压后运行run.bat(如报错请换高版本JDK重试,貌似JDK6不行,亲测JDK8可用)

2014-11-26

IText、XMLWoker及中文资源包

IText5.4 extrajars-2.3 (IText中文处理) xmlworker-5.4.4 官方包

2013-11-19

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

TA关注的人

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