- 【Redis源码学习】浅析redis中的IO多路复用机制
linux大本营
linuxc++redis
我们知道,我们在使用redis的时候,通过客户端发送一个get命令,就能够得到redis服务端返回的数据。redis是基于传统的C/S架构实现的。它通过监听一个TCP端口(6379)的方式来接收来自客户端的连接,从而进行后续命令的执行,并把执行结果返回给客户端。redis是一个合格的服务端程序我们先思考一个问题:作为一个合格的服务端程序,我们在命令行输入一个get命令之后,redis服务端是怎么处
- Redis源码分析:基础概念介绍与启动概述
小屋子大侠
服务端redisnosql数据库
Redis源码分析基于Redis-5.0.4版本,进行基础的源码分析,主要就是分析一些平常使用过程中的内容。仅作为相关内容的学习记录,有关Redis源码学习阅读比较广泛的便是《Redis设计与实现》一书,浏览学习该书之后,觉得相关内容还是觉得抽象的高度比较高,故对照着代码再阅读学习一下。Redis的数据结构官网上的数据结构的介绍二进制安全的字符串,二进制安全的意思大家可以自行查阅定义,在redis
- Redis源码学习-3-跳表
patientcat
redis源码学习Redis源码跳表
跳表-skipList文章目录1.跳表和红黑树2.跳表的c++简单实现2.1源码2.2一个普通的跳表2.3查找3.Redis跳表的数据结构3.1跳表节点3.2跳跃表3.3跳表的创建3.4插入跳表节点到跳表中3.5属性解释4.跳表的特有API4.1zslGetRank-获取排位4.2zslGetElementByRank-获取指定排位上的节点文章目录redis.h中的zskiplist结构和zski
- Redis源码学习基本数据结构之zipmap
lixin_karl
zipmap Zipmap是为了实现保存Pair(String,String)数据的结构,是存储效率非常高的一种结构zipmap结构对于map:"foo"=>"bar","hello"=>"world":"foo""bar""hello""world"zmlen1字节键值对的个数len1字节表示keyorvalue长度(0-253)如果超过253则使用5字节第一个字节设为254后面四个字节表示长
- Redis源码学习随笔
weixin_34315665
数据库数据结构与算法
为什么80%的码农都做不了架构师?>>>数据结构简单动态字符串SDS(SimpleDynamicString)使用sdshdr结构体保存字符串长度,使获取字符串长度时间复杂度为O(n)动态空间管理动态扩张机制(字符串变长后自动触发,假设变长后长度为len)如果len=1M,则预留长度为1M;动态缩减机制(也叫惰性空间释放)字符串长度变小时,不会自动触发,而是留有接口来清除无用空间代码语法struc
- 动手实现 Redis 字典(Go 语言)
0xE8551CCB
image字典在Redis中是一个非常重要的数据结构,因为Redis本身就是一个键值数据库。我们先来回顾下在Redis源码学习之基本数据结构中提到的Redis字典实现的一些特点:支持海量存储;使用渐进式Rehash策略,避免因为需要迁移的buckets太多导致阻塞时间过久(Redis核心处理逻辑是单线程模型);默认使用SipHash算法计算键的hash值;对于哈希冲突问题,采用了常见的链地址法,且
- 【Redis源码学习】准备工作
爱吃芝麻球
redis学习数据库
一、获取源码可以去redisgithub上边clone一份或redisdownload网站下载一份。这里选择版本为5.0.二、安装注1:把src/Makefile里的OPTIMIZATION?=-O2改为OPTIMIZATION?=-O0,这样可以用gdb进行调试注2:Linux平台下,确保系统安装了gcc否则make时会遇到问题,参考以下链接解决redis安装fatalerror简单来说,red
- 基于Redis源码学习基础软件开发
稳定的穷
Linuxredis学习lua
文章目录前情提要SDS数据结构学习hash表学习C语言的二级指针用法Rehash过程学习Zset有序set结构skiplist寻找元素的逻辑跳表节点指针层级--随机生成ziplist-->listpack结构转换前情提要deps目录(redis依赖的第三方、一些客户端的redis演进发展代码和Lua的脚本源码),src目录(功能模块源码),tests目录(功能测试代码),utils目录(Redis
- Redis源码学习之基数树的实现
Java高级架构狮
一.WhatRedis5带来的最大的改变应该就是引入了stream这个数据结构了。这就相当于在Redis里面内置了一个Kafka。Redis5里面的stream底层是基于基数树实现的。要想深入要就stream的实现,就必须先搞懂基数树的实现。那么什么是基数树呢?TOTO二.How因为这篇博客是单独分析Redis里面的基数树的实现,所以把基数树相关的实现单独拎出来。基数树相关的实现在rax.h、ra
- Redis源码分析-存储原理与数据模型
Mr.简锋
redis数据库nosql
redis源码学习redis是单线程,分治,内存wsl2安装安装WSL|MicrosoftDocsvscode开始通过WSL使用VSCode|MicrosoftDocsc/c++基本配置GetStartedwithC++andWindowsSubsystemforLinuxinVisualStudioCodeRedis是不是单线程?单线程指什么?命令处理在一个线程中命令处理为什么是单线程的?单线程
- Redis源码学习-2-字典
山青影湛
嵌牛导读:对于类似链表,队列,哈希表等这种集合结构,其构成方式一般比较统一。嵌牛鼻子:哈希表嵌牛提问:在rehashing期间,所有的删除查找和更新都会发生在俩个字典上。即使是添加,也会现在ht[0]上查找是否存在?嵌牛正文:1.1哈希表节点参数介绍:简单介绍下union的作用,就是节省内存。可以假设如果没有union64位编译器下面要占据24个字节。但使用union只占据最宽的字节大小——8个字
- Redis源码学习(二)-网络通信(anet.c)
qq_20853741
网络编程多线程c++开发语言
有了上个博客(网络编程addrinfo结构体与getaddrinfo函数_qq_20853741的博客-CSDN博客)的铺垫,理解Redis网络通信源码就简单多了!anet.c是redis对网络通信(socket)的简单封装和一些状态设置的封装。状态设置主要包括socket连接的阻塞性、tcp的保活定时器的设置、设置发送缓冲区、tcp的Nagle算法设置、设置发送超时时间、地址重用的设置和设置一、
- 后端底层开发人员必须要彻底搞懂的redis存储原理丨redis跳表与B+树详细对比
Linux服务器开发
Linux服务器开发后端开发redisredisredis储存原理后端开发Linux服务器开发redis源码
后端底层开发人员必须要彻底搞懂的redis存储原理1.redis存储原理分析2.redis源码学习分享3.redis跳表与B+树详细对比分析视频讲解如下,点击观看:后端底层开发人员必须要彻底搞懂的redis存储原理丨redis跳表与B+树详细对比丨redis源码解析丨Linux服务器开发丨中间件开发丨分布式C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ
- Redis源码学习简记(八)quicklist原理与个人理解
A_Linux_Coder
Reids源码学习
在看t_list的时候发现,少研究了一个数据结构。还是先把这个快链分析一下,再看后面的东西。quicklist是3.2版本新增加的,所以看着网上博客学习很容易会忽略掉。#defineOBJ_ENCODING_LINKEDLIST4/*Nolongerused:oldlistencoding.*/旧版本的linkedlist基本上是被淘汰掉了,而是使用的为quicklist来代替。那么这种数据结构,
- Redis源码环境构建过程详解
Redis源码环境构建近日,蒋德钧新上了一门Redis源码剖析的课程,应好友沈架构师的邀请,又重拾起了Redis源码学习。不过作为正经的JAVA工程师,大概在大学毕业后再也没写过C语言的源码了(还是看过一些的)。搭建一个Redis阅读环境我都好意思写一篇博客记录一下了。不过,不是在windows环境下构建了,是在deepin系统下进行的构建,也许windows用户可以出门右拐了。本次搭建环境主要参
- Redis源码学习-3-整数集合
山青影湛
嵌牛导读:该篇文章分为数据结构,有序结构和升级三个方面嵌牛鼻子:数据结构整数集合升级嵌牛提问:为什么设置升级嵌牛正文:1.数据结构typedefstructintset{//编码方式uint32_tencoding;//集合包含的元素数量uint32_tlength;//保存元素的数组int8_tcontents[];}intset;Redis的intset的元素类型,主要取决于encoding字
- Redis源码学习(2)-Redis中的动态字符串实现(上)
马基雅维利
redislinuxc
在src/sds.h中定义了Redis中的动态String类型,这意味着,使用者仅仅需要调用接口API就可以向String加入数据,而不需要关心扩容的问题。Redis使用typedefchar*sds;来描述这个动态String,其在内存中的分布格式为一个StringHeader以及在StringHeader后面一段连续的动态内存,而sds则是指向StringHeader后面的连续内存的第一个字节
- Redis源码学习(1)-Redis中的双端链表实现
马基雅维利
redislinuxc
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis的源代码比较小巧精干,早期版本只有两万多行代码,即使是本系列所用的5.0.8版本的源代码,其代码量也不超过十万行,非常适合于学习。本系列将从基础的与其他部分关联度不大的基础数据结构开始,逐步探寻Redis系统设计的精妙之处,而笔者作为初学者,亦将此作为自
- redis源码学习--数据结构:ziplist实现
Carson_zhong
数据结构(C语言):链表c语言
本文接上篇"redis源码学习–数据结构:ziplist设计"https://blog.csdn.net/dmgy614262711/article/details/105879969一下是entry定义的数据结构/*Weusethisfunctiontoreceiveinformationaboutaziplistentry.*Notethatthisisnothowthedataisactua
- 结合redis设计与实现的redis源码学习-26-工具函数(Util.h/.c)
YangGangAVA
redis工作中的小工具
Redis将很多的公用转换函数独立了出来,放入了Util.h中,包括字符串对比,内存转换,字符串数字转换,获取路径等,Redis的作者都是自己实现的,在这里我将这些函数认真学习,观察是在哪里高效并可以在之后的工作中使用。因为Util的函数都是完全独立逻辑的,所以我在这里只看.c文件Util.c#include#include#include#include#include#include#incl
- Redis源码学习之【Tcp Socket封装】
yanchong
Redis
介绍Redis对linuxsocket的封装,虽然在该封装中也含有对unixsocket的封装,但是普遍来说使用的tcpsocket。和上一篇的epoll的封装类似,都是通过调用底层的socket的函数完成一些列的方便的函数调用封装。源码anet.hanet.c分析主要包含以下几个封装函数(这里仅介绍关于Tcpsocket的封装函数)anetTcpconnect:创建socket并调用底层的con
- Redis源码学习-8-Redis源码网络部分简要分析
patientcat
redis源码学习
main函数流程文章目录main函数流程0.前言1.简要源码分析1.1小结0.前言接下来,我们就跟随一下代码,或者说函数调用栈,来看下。Redis是怎么做的。1.简要源码分析当前,我们先刨除一些业务上的代码,仅仅只看有关网络的代码。//redis.cintmain(intargc,char**argv){//初始化服务器//这里主要设置就是服务器的一些参数,可以不关心initServerConfi
- 结合redis设计与实现的redis源码学习-15-TCP网络连接(anet.c)
YangGangAVA
redis
anet.c中实现了一些网络相关的设置操作,可以参考我的linux网络编程那篇文章。这里使用的socket属性更多,帮我复习了tcp相关的知识。我们先来看anet.h#ifndefANET_H#defineANET_H#include#defineANET_OK0#defineANET_ERR-1#defineANET_ERR_LEN256/*Flagsusedwithcertainfunctio
- redis源码学习-编程技巧
猫步旅人
redis源码学习
#宏的用法#defineVERSION"6.0.1"#defineDATETIME"datetime"//将变量s以字符串的形式输出#definexstr(s)__str(s)#define__str(s)#s//使用宏拼接字符串#defineECHO_STR("jemalloc-"xstr(hello)"."xstr(world)"."xstr(version))//printf("%s\n",
- 人生,有时候需要一些摸鱼的快乐时光
看,未来
问道程序人生
我又来摸鱼了。昨天刚考完一科,等着老师海底捞我。今天复习一下明天再考一科,考完复习一下后天再来一科。一科复一科,考试何其多,这十天半个月怕是更不了“redis源码学习”系列文了,摸摸鱼。从一月份回家,到九月份回学校,和同学们闲聊,大家都说:感觉好像昨天就在学校一样,这八个月也没什么感觉,就过去了。不知道从什么时候开始,尽管度日如年的会议时间依然那么难捱,但下班之后和周末的时间总是跑得飞快:想看的电
- redis源码之sentinel高可用架构分析-分布式一致性Raft算法
chen_song_
Redis源码探秘
=====================================================redis源码学习系列文章:redis源码分析之sha1算法分析redis源码分析之字典源码分析redis源码分析之内存编码分析intset,ziplist编码分析redis源码分析之跳跃表redis源码分析之内存淘汰策略的原理分析redis源码分析之对象系统源码分析string,list链表
- redis源码学习之链表
NearXDU
redis
链表是经典的数据结构,redis的实现也很经典。双向链表redis的链表是双向链表,也就是说,每个链表节点有一个指向前一个节点的指针和指向后一个节点的指针。另外,节点的数据域也用指针表示,这样就可以表示各种类型的数据。typedefstructlistNode{//前置节点structlistNode*prev;//后置节点structlistNode*next;//节点的值void*value;
- Redis源码学习-AOF
ordeder
Redis
前言网络上也有许多介绍redis的AOF机制的文章,但是从宏观上介绍aof的流程,没有具体分析在AOF过程中涉及到的数据结构和控制机制。昨晚特别看了2.8源码,感觉源码中的许多细节是值得细细深究的。特别是list*aof_rewrite_buf_blocks结构。仔细看源码,会发现原来看网络文章多的到的领会是片面的,最好的学习还是得自己动手...原文链接:http://blog.csdn.net/
- 结合redis设计与实现的redis源码学习-18-网络连接库(networking.c)
YangGangAVA
redis
networking.cRedis的网络连接库,负责发送命令回复和接受命令请求,同时也负责创建/销毁客户端,以及通信协议分析等工作.下面是部分使用的结构体,定义在server.h中//命令结构体structredisCommand{char*name;redisCommandProc*proc;//命令处理器intarity;//元数char*sflags;/*Flagsasstringrepre
- redis sentinel 主从切换(failover)解决方案,详细配置
weixin_33950035
数据库pythonjava
2019独角兽企业重金招聘Python工程师标准>>>redissentinel主从切换(failover)解决方案,详细配置作者:oyhk2013-10-1023:55:490评论629浏览《Redis源码学习笔记》主从复制博客分类:Redisredisc《Redis源码学习笔记》文章列表由于图片较大,缩放较为模糊,请双击打开查看原图^_^主从复制简单来说就是把一台redis数据库中的数据同步到
- Java序列化进阶篇
g21121
java序列化
1.transient
类一旦实现了Serializable 接口即被声明为可序列化,然而某些情况下并不是所有的属性都需要序列化,想要人为的去阻止这些属性被序列化,就需要用到transient 关键字。
- escape()、encodeURI()、encodeURIComponent()区别详解
aigo
JavaScriptWeb
原文:http://blog.sina.com.cn/s/blog_4586764e0101khi0.html
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:,decodeURI,decodeURIComponent 。
下面简单介绍一下它们的区别
1 escape()函
- ArcgisEngine实现对地图的放大、缩小和平移
Cb123456
添加矢量数据对地图的放大、缩小和平移Engine
ArcgisEngine实现对地图的放大、缩小和平移:
个人觉得是平移,不过网上的都是漫游,通俗的说就是把一个地图对象从一边拉到另一边而已。就看人说话吧.
具体实现:
一、引入命名空间
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Controls;
二、代码实现.
- Java集合框架概述
天子之骄
Java集合框架概述
集合框架
集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。
从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。
简单介绍:
Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi
- 旗正4.0页面跳转传值问题
何必如此
javajsp
跳转和成功提示
a) 成功字段非空forward
成功字段非空forward,不会弹出成功字段,为jsp转发,页面能超链接传值,传输变量时需要拼接。接拼接方式list.jsp?test="+strweightUnit+"或list.jsp?test="+weightUnit+&qu
- 全网唯一:移动互联网服务器端开发课程
cocos2d-x小菜
web开发移动开发移动端开发移动互联程序员
移动互联网时代来了! App市场爆发式增长为Web开发程序员带来新一轮机遇,近两年新增创业者,几乎全部选择了移动互联网项目!传统互联网企业中超过98%的门户网站已经或者正在从单一的网站入口转向PC、手机、Pad、智能电视等多端全平台兼容体系。据统计,AppStore中超过85%的App项目都选择了PHP作为后端程
- Log4J通用配置|注意问题 笔记
7454103
DAOapachetomcatlog4jWeb
关于日志的等级 那些去 百度就知道了!
这几天 要搭个新框架 配置了 日志 记下来 !做个备忘!
#这里定义能显示到的最低级别,若定义到INFO级别,则看不到DEBUG级别的信息了~!
log4j.rootLogger=INFO,allLog
# DAO层 log记录到dao.log 控制台 和 总日志文件
log4j.logger.DAO=INFO,dao,C
- SQLServer TCP/IP 连接失败问题 ---SQL Server Configuration Manager
darkranger
sqlcwindowsSQL ServerXP
当你安装完之后,连接数据库的时候可能会发现你的TCP/IP 没有启动..
发现需要启动客户端协议 : TCP/IP
需要打开 SQL Server Configuration Manager...
却发现无法打开 SQL Server Configuration Manager..??
解决方法: C:\WINDOWS\system32目录搜索framedyn.
- [置顶] 做有中国特色的程序员
aijuans
程序员
从出版业说起 网络作品排到靠前的,都不会太难看,一般人不爱看某部作品也是因为不喜欢这个类型,而此人也不会全不喜欢这些网络作品。究其原因,是因为网络作品都是让人先白看的,看的好了才出了头。而纸质作品就不一定了,排行榜靠前的,有好作品,也有垃圾。 许多大牛都是写了博客,后来出了书。这些书也都不次,可能有人让为不好,是因为技术书不像小说,小说在读故事,技术书是在学知识或温习知识,有些技术书读得可
- document.domain 跨域问题
avords
document
document.domain用来得到当前网页的域名。比如在地址栏里输入:javascript:alert(document.domain); //www.315ta.com我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名。比如:javascript:alert(document.domain = "315ta.com");
- 关于管理软件的一些思考
houxinyou
管理
工作好多看年了,一直在做管理软件,不知道是我最开始做的时候产生了一些惯性的思维,还是现在接触的管理软件水平有所下降.换过好多年公司,越来越感觉现在的管理软件做的越来越乱.
在我看来,管理软件不论是以前的结构化编程,还是现在的面向对象编程,不管是CS模式,还是BS模式.模块的划分是很重要的.当然,模块的划分有很多种方式.我只是以我自己的划分方式来说一下.
做为管理软件,就像现在讲究MVC这
- NoSQL数据库之Redis数据库管理(String类型和hash类型)
bijian1013
redis数据库NoSQL
一.Redis的数据类型
1.String类型及操作
String是最简单的类型,一个key对应一个value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。
Set方法:设置key对应的值为string类型的value
- Tomcat 一些技巧
征客丶
javatomcatdos
以下操作都是在windows 环境下
一、Tomcat 启动时配置 JAVA_HOME
在 tomcat 安装目录,bin 文件夹下的 catalina.bat 或 setclasspath.bat 中添加
set JAVA_HOME=JAVA 安装目录
set JRE_HOME=JAVA 安装目录/jre
即可;
二、查看Tomcat 版本
在 tomcat 安装目
- 【Spark七十二】Spark的日志配置
bit1129
spark
在测试Spark Streaming时,大量的日志显示到控制台,影响了Spark Streaming程序代码的输出结果的查看(代码中通过println将输出打印到控制台上),可以通过修改Spark的日志配置的方式,不让Spark Streaming把它的日志显示在console
在Spark的conf目录下,把log4j.properties.template修改为log4j.p
- Haskell版冒泡排序
bookjovi
冒泡排序haskell
面试的时候问的比较多的算法题要么是binary search,要么是冒泡排序,真的不想用写C写冒泡排序了,贴上个Haskell版的,思维简单,代码简单,下次谁要是再要我用C写冒泡排序,直接上个haskell版的,让他自己去理解吧。
sort [] = []
sort [x] = [x]
sort (x:x1:xs)
| x>x1 = x1:so
- java 路径 配置文件读取
bro_feng
java
这几天做一个项目,关于路径做如下笔记,有需要供参考。
取工程内的文件,一般都要用相对路径,这个自然不用多说。
在src统计目录建配置文件目录res,在res中放入配置文件。
读取文件使用方式:
1. MyTest.class.getResourceAsStream("/res/xx.properties")
2. properties.load(MyTest.
- 读《研磨设计模式》-代码笔记-简单工厂模式
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 个人理解:简单工厂模式就是IOC;
* 客户端要用到某一对象,本来是由客户创建的,现在改成由工厂创建,客户直接取就好了
*/
interface IProduct {
- SVN与JIRA的关联
chenyu19891124
SVN
SVN与JIRA的关联一直都没能装成功,今天凝聚心思花了一天时间整合好了。下面是自己整理的步骤:
一、搭建好SVN环境,尤其是要把SVN的服务注册成系统服务
二、装好JIRA,自己用是jira-4.3.4破解版
三、下载SVN与JIRA的插件并解压,然后拷贝插件包下lib包里的三个jar,放到Atlassian\JIRA 4.3.4\atlassian-jira\WEB-INF\lib下,再
- JWFDv0.96 最新设计思路
comsci
数据结构算法工作企业应用公告
随着工作流技术的发展,工作流产品的应用范围也不断的在扩展,开始进入了像金融行业(我已经看到国有四大商业银行的工作流产品招标公告了),实时生产控制和其它比较重要的工程领域,而
- vi 保存复制内容格式粘贴
daizj
vi粘贴复制保存原格式不变形
vi是linux中非常好用的文本编辑工具,功能强大无比,但对于复制带有缩进格式的内容时,粘贴的时候内容错位很严重,不会按照复制时的格式排版,vi能不能在粘贴时,按复制进的格式进行粘贴呢? 答案是肯定的,vi有一个很强大的命令可以实现此功能 。
在命令模式输入:set paste,则进入paste模式,这样再进行粘贴时
- shell脚本运行时报错误:/bin/bash^M: bad interpreter 的解决办法
dongwei_6688
shell脚本
出现原因:windows上写的脚本,直接拷贝到linux系统上运行由于格式不兼容导致
解决办法:
1. 比如文件名为myshell.sh,vim myshell.sh
2. 执行vim中的命令 : set ff?查看文件格式,如果显示fileformat=dos,证明文件格式有问题
3. 执行vim中的命令 :set fileformat=unix 将文件格式改过来就可以了,然后:w
- 高一上学期难记忆单词
dcj3sjt126com
wordenglish
honest 诚实的;正直的
argue 争论
classical 古典的
hammer 锤子
share 分享;共有
sorrow 悲哀;悲痛
adventure 冒险
error 错误;差错
closet 壁橱;储藏室
pronounce 发音;宣告
repeat 重做;重复
majority 大多数;大半
native 本国的,本地的,本国
- hibernate查询返回DTO对象,DTO封装了多个pojo对象的属性
frankco
POJOhibernate查询DTO
DTO-数据传输对象;pojo-最纯粹的java对象与数据库中的表一一对应。
简单讲:DTO起到业务数据的传递作用,pojo则与持久层数据库打交道。
有时候我们需要查询返回DTO对象,因为DTO
- Partition List
hcx2013
partition
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of th
- Spring MVC测试框架详解——客户端测试
jinnianshilongnian
上一篇《Spring MVC测试框架详解——服务端测试》已经介绍了服务端测试,接下来再看看如果测试Rest客户端,对于客户端测试以前经常使用的方法是启动一个内嵌的jetty/tomcat容器,然后发送真实的请求到相应的控制器;这种方式的缺点就是速度慢;自Spring 3.2开始提供了对RestTemplate的模拟服务器测试方式,也就是说使用RestTemplate测试时无须启动服务器,而是模拟一
- 关于推荐个人观点
liyonghui160com
推荐系统关于推荐个人观点
回想起来,我也做推荐了3年多了,最近公司做了调整招聘了很多算法工程师,以为需要多么高大上的算法才能搭建起来的,从实践中走过来,我只想说【不是这样的】
第一次接触推荐系统是在四年前入职的时候,那时候,机器学习和大数据都是没有的概念,什么大数据处理开源软件根本不存在,我们用多台计算机web程序记录用户行为,用.net的w
- 不间断旋转的动画
pangyulei
动画
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M
- 自定义annotation
sha1064616837
javaenumannotationreflect
对象有的属性在页面上可编辑,有的属性在页面只可读,以前都是我们在页面上写死的,时间一久有时候会混乱,此处通过自定义annotation在类属性中定义。越来越发现Java的Annotation真心很强大,可以帮我们省去很多代码,让代码看上去简洁。
下面这个例子 主要用到了
1.自定义annotation:@interface,以及几个配合着自定义注解使用的几个注解
2.简单的反射
3.枚举
- Spring 源码
up2pu
spring
1.Spring源代码
https://github.com/SpringSource/spring-framework/branches/3.2.x
注:兼容svn检出
2.运行脚本
import-into-eclipse.bat
注:需要设置JAVA_HOME为jdk 1.7
build.gradle
compileJava {
sourceCompatibilit
- 利用word分词来计算文本相似度
yangshangchuan
wordword分词文本相似度余弦相似度简单共有词
word分词提供了多种文本相似度计算方式:
方式一:余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度
实现类:org.apdplat.word.analysis.CosineTextSimilarity
用法如下:
String text1 = "我爱购物";
String text2 = "我爱读书";
String text3 =