中间件/缓存
文章平均质量分 62
zy_281870667
自古,百无一用是深情,唯有套路得人心
展开
-
MyBatis拦截参数 自动带上limit
现在公司项目里都是使用mybatis,突然有一天,看到一个奇怪的现象,在controller、service和dao都没有设置查询的 limit x,y ,但是,放开sql打印,确确实实打印了limit语句,并且实际效果也是limit的。 吓得我关了IDE,清了缓存,再试,居然还是一样的。 奇了怪了,这个为什么会自动加上limit查询呢?难道是mybatis新出的黑科技?但是,我看mybatis的版本,也才mybatis-spring-boot-starter 1.3.2,还是2018年3月原创 2020-06-20 17:31:15 · 3424 阅读 · 3 评论 -
java识别验证码
之前在做数据核对部分工作,需要获取厂商的数据,有的厂商提供了api,可以直接通过api拿到数据;有的就没api,这部分,只能去它们后台获取了,那就需要爬虫,但是,过程中,又碰到登陆的验证码。这里记录一下识别验证码的过程。使用tess4j1.下载tessdata和训练语言包 在tessract的github直接下载即可,下载地址戳我(只需要项目的 tessdata文件夹 )。这里,...原创 2019-12-10 14:48:27 · 2104 阅读 · 0 评论 -
Kafka了解一下
Kafka最初是由LinkedIn公司使用Scala语言实现的,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被多家不同类型的公司作为多种类型的数据管道和消息系统使用。 领英在2011年捐赠给Apache,然后在2012年成为First-class Apache项目。Kafka...原创 2018-04-15 10:33:00 · 73694 阅读 · 0 评论 -
分布式锁之redis实现
对“锁”大家肯定都不陌生,锁是针对多线程情况下对资源访问的控制,初学java时候,就知道synchronize和lock,synchronize是重量级锁,lock是轻量级,锁巴拉巴拉。。。,但是都是针对单个jvm来说的,现在稍微大点的网站都是多台服务器,通过nginx等负载均衡到多个服务器节点,这样的话,就得使用分布式锁了,常见的分布式锁有基于redis或者zookeeper,这里讨论下...原创 2018-06-04 00:02:19 · 64192 阅读 · 0 评论 -
zookeeper应用之分布式锁
前一段时间有讨论过用redis来实现分布式锁,讲到setNx不是原子性、redis新的set方法及其误删和守护线程,还为了原子性不得不使用redis的脚本。虽然最终分布式锁的这个效果是实现了,但是,不够优雅。这里讨论一下zookeeper对分布式锁的实现。 首先说一下zk中节点的类型,共分为四个类型:持久节点、临时节点和持久有序节点、临时有序节点。 什么是持久节点呢?字面意思,...原创 2018-06-23 23:57:45 · 62712 阅读 · 0 评论 -
zookeeper安装使用
文中使用的是zookeeper3.4.10,openjdk81.安装目录、下载压缩包、解压缩mkdir -p /usr/local/zookeepercd /usr/local/zookeeperwget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar...原创 2018-06-10 23:26:08 · 6935 阅读 · 0 评论 -
zookeeper 基本命令和java api
Zookeeper简单操作1.Zookeeper命令工具启动zookeeper服务后,连接到zookeeper服务: zkServer -server localhost:2181执行结果如下:Connecting to localhost:21812018-06-10 03:52:52,540 [myid:] - INFO [main:Environment@...原创 2018-06-11 17:16:15 · 15758 阅读 · 0 评论 -
记一次实现统计访问量最高文章的功能
最近在公司做了一个新的需求:统计上周某几个系列文章中,阅读量最大的6篇文章。本来这些统计的功能,是要去找专门的统计,比如百度统计、友盟、谷歌等,但是我只有一天的开发时间,去研究第三方的统计指定某类文章的实现和接入,想了想,还是自己动手来实现来的快。 自己来实现的话,我想了想方案,应该是Redis+DB+定时任务,其中,redis做两件事情:每次点击统计次数++、存储上周阅读量最多的6...原创 2017-09-05 22:16:32 · 4136 阅读 · 0 评论 -
Jedis scan及其count的值
之前在做统计相关功能的时候,使用到了redis的keys,但是,跑了一段时间后,被运维的慢查询给抓出来了,说这个太慢了,需要10ms(平常的命令只需要2-3ms),并且keys会造成阻塞,影响其他进程。。。 好吧,那就改成scan。本来是是想拿百度现成的来用,但是,居然没有搜索到!amazing!好吧,那就只能扒官方了。1.官网首先找到Spring Data Redis官网,然...原创 2018-02-11 21:24:11 · 21116 阅读 · 1 评论 -
一张优惠券引发的血案(redis双锁)
整个优惠券中心分为前端和后端,小灰所负责的是后端RPC接口的开发。接口中包含“查券”和“领券”两个方法,项目大体结构如下图:两周后——小灰:看,这是优惠券查询功能的效果!小灰:看,这是优惠券领取功能的效果!三天后——小灰原本的优惠券查询接口是这样实现的:优惠券列表在Redis中以List的形式存储,查询时的逻辑很简单:1.查询缓存...转载 2018-03-30 22:09:43 · 5116 阅读 · 1 评论 -
如何理解"一致性hash"?
一句话解释什么是“一致性hash” 字面解释:外界条件发生了改变,而hash后的结果仍然保持较高程度的一致性。问题背景 问题背景:假如有4个缓存节点,按照取膜的方式进行分配数据(对4取膜,0/1/2/3 分别对应a/b/c/d节点),假若d节点挂了,那四个节点的数据都不能使用了,因为之前是对4取膜的,现在拿数据就得是对3取膜了,膜4的结果肯定是不使用膜3的,那么就会去后端,会去...原创 2019-03-11 15:19:00 · 2260 阅读 · 0 评论 -
kafka是如何实现高性能的写入和读取的?
写 页缓存(page cache) + 顺序写入磁盘 页缓存:操作系统的内存缓存,kafka写入是写入到内存缓存,然后再从内存缓存刷到磁盘 顺序写入:一般情况,写磁盘是需要寻找适宜的磁盘空间的。kafka改变策略,直接在尾部追加读 零拷贝技术 正常情况下,磁盘的信息–>客户端,是需要:1.磁盘到页缓存;页缓存到软件缓存; 软件缓存到soc...原创 2019-08-29 15:02:40 · 770 阅读 · 0 评论 -
kafka是如何支撑百万连接的?
kafka使用了reactor多路复用机制 传统的机制,一个连接一个线程:当连接的数量很大,对应的处理线程数量也很大,服务器必然不堪重负。如果有一万个连接,那就对应有一万个线程去处理。 reactor机制: 1.由一个acceptor线程,监听连接的建立,连接建立后,投递给process线程; 2.process线程,会有多个,每个process线...原创 2019-09-29 14:15:39 · 2284 阅读 · 0 评论 -
启动rabbitmq,提示ERROR: node with name "rabbit" already running on "U57..."
环境:erl7.2.1rabbitmq_server-3.3.4安装完毕后,访问localhost:15672,显示无法访问,本地启动是出现下面的提示开始还以为是我配置的问题呢,找半天,在任务管理器中,看到了rabbitMQ的进程,它已经启动了。。。结果很无语,把进程停止了,在再sbin命令,rabbitmq-server start,就一切好了原创 2017-11-18 21:22:00 · 25139 阅读 · 2 评论 -
DWR 逆ajax 实现网页聊天
1.添加jar包 dwr的需要的jar很少,只有一个核心的dwr.jar,依赖一个commons-logging.jar 附下载地址,戳我2.配置xml文件 2.1 web.xml的配置 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://ww原创 2016-06-23 16:56:10 · 2631 阅读 · 0 评论 -
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList o
使用jackson解析,出现问题待解析json{"name":"myEnterprise", "departments":["HR"]}解析异常ATTENTION: /enterprise/enterprise: org.codehaus.jackson.map.JsonMappingException: Can not deserialize insta原创 2016-08-05 09:57:19 · 14425 阅读 · 0 评论 -
Gson 解析json的使用
{CSDN:CODE:546360}原创 2014-12-08 23:46:39 · 2600 阅读 · 0 评论 -
DWR的工作原理和优缺点
一直以来,我都认为DWR是逆ajax的框架,其实这样理解,是很不全面的,逆ajax只是它的一部分而已。 针对DWR的理解,简单的说就是”简化数据的获取“,用专业的语言来说,那就是通过客户端的engine.js作为客户端的引擎和服务端的dwr.jar作为服务端的引擎,以RPC的方式来获取数据。 举个栗子,比如用户的注册服务端,有一个入口,com.zy.action.regist.ja原创 2016-11-08 15:39:36 · 9698 阅读 · 0 评论