北京-小北
码龄14年
关注
提问 私信
  • 博客:341,701
    社区:3,825
    问答:2,925
    348,451
    总访问量
  • 41
    原创
  • 1,660,068
    排名
  • 141
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 加入CSDN时间: 2011-03-29
博客简介:

能写下来,理解才会更深

博客描述:
共同学习,共同提高,坚持!
查看详细资料
个人成就
  • 获得90次点赞
  • 内容获得77次评论
  • 获得272次收藏
创作历程
  • 1篇
    2018年
  • 6篇
    2017年
  • 19篇
    2016年
  • 5篇
    2015年
  • 10篇
    2014年
成就勋章
TA的专栏
  • jvm
    4篇
  • 多线程
    2篇
  • oracle
    1篇
  • 面试
    1篇
  • 框架
    8篇
  • apache
    1篇
  • 集群
    4篇
  • java
    8篇
  • linux
    3篇
  • RabbitMQ
    6篇
  • dubbo
    4篇
  • POI
    2篇
  • 设计模式
    2篇
  • 自动化
    1篇
  • log
    1篇
  • 锁
    2篇
创作活动更多

AI大模型如何赋能电商行业,引领变革?

如何使用AI技术实现购物推荐、会员分类、商品定价等方面的创新应用?如何运用AI技术提高电商平台的销售效率和用户体验呢?欢迎分享您的看法

186人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

基于redis setnx的简易分布式锁(修正版)

前面写过一篇  错误示例 , 当时写完测试方法不对,就直接放上来了.后面实际使用过程中发现不行, 这次将改正后的记录下来.前一篇写了一些锁的概念和为了防止死锁而使用redis对key的有效期来控制超时释放.这些都是没有问题的.而上一篇出问题的地方,基本上也是现在网上很多帖子的问题所在.问题1: 获取锁原来的获取锁, 是使用setnx 和 expire 两条命令来实现的, 这不是个原子操作. 所以就...
原创
发布博客 2018.03.28 ·
28666 阅读 ·
4 点赞 ·
9 评论 ·
56 收藏

浅谈库存扣减和锁

先说场景:物品W现在库存剩余1个, 用户P1,P2同时购买.则只有1人能购买成功.(前提是不允许超卖)秒杀也是类似的情况, 只有1件商品,N个用户同时抢购,只有1人能抢到..这里不谈秒杀设计,不谈使用队列等使请求串行化,就谈下怎么用锁来保证数据正确.常见的实现方案有以下几种:1.代码同步, 例如使用 synchronized ,lock 等同步方法2....
原创
发布博客 2017.08.08 ·
30205 阅读 ·
34 点赞 ·
12 评论 ·
132 收藏

基于redis setnx的简易分布式锁

(此文章实现有误,修正版地址 : https://blog.csdn.net/qq315737546/article/details/79728676)锁的原理, 就是设置个flag,记录下是否正被使用,可重入锁再判断下是否是自己在使用.这个flag,必须保证所有资源用的是同一个.synchronized关键字,lock类等, 可以保证此flag在单个jvm中唯一, 但是有多个jvm(集群,分布式...
原创
发布博客 2017.07.06 ·
3665 阅读 ·
1 点赞 ·
0 评论 ·
10 收藏

RabbitMQ(六)使用Dead Letter(死信队列)进行延时发送

在我们实际业务中,经常会碰到需要延时处理的问题.例如A操作5分钟后触发B操作.这些也可以使用定时器来实现.考虑以下情况.1.客户端提交订单A.2.服务端F新增订单A,通过Rabbitmq发送新增订单消息M1到服务F2.返回新增成功到客户端(M模块不影响主业务).3.客户端收到新增成功后,取消订单A.4.服务端F取消订单A,发送取消订单消息M2到模块M5.偶尔出现服务F2先消
原创
发布博客 2017.03.26 ·
12585 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

RabbitMQ(五)消息发送失败后的处理

前一篇文章,写了消息发送确认的一些内容.就是消息发送成功或失败的时候,都会调用confirmListener 或者returnListener.如果消息发送成功,就不考虑了.当消息发送失败时,怎么处理这个消息呢.1.自动重发2.系统预警人工处理等以上操作,都需要知道是哪条消息,具体什么内容发送失败了,才能进行后续处理.在returnListener中,参数是有消息内
原创
发布博客 2017.03.26 ·
31972 阅读 ·
5 点赞 ·
7 评论 ·
32 收藏

Log4j不同级别输出到不同文件的几种方式

log4j已经是古董了,但是现在项目还在用,需要用到不同级别输出到不同文件,所以把几种实现方式记录下来,备忘! 下面的几种配置都是使用properties的情况,但是xml的原理也一样.使用LevelRangeFilter使用LevelMatchFilter自定义Appender下面详细说明:1.使用LevelRangeFilter这个应该是3种里面最方便的,配置如下
原创
发布博客 2017.01.17 ·
11369 阅读 ·
4 点赞 ·
4 评论 ·
11 收藏

RabbitMQ(四)消息确认(发送确认,接收确认)

前面几篇记录了收发消息的demo,今天记录下关于 消息确认方面的 问题.下面是几个问题:1.为什么要进行消息确认?2.rabbitmq消息确认 机制是什么样的?3.发送方如何确认消息发送成功?什么样才算发送成功?4.消费方如何告知rabbitmq消息消费成功或失败?5.使用spring的代码示例1.为什么要进行消息确认?经常会听到丢消息的字眼, 对于前面
原创
发布博客 2017.01.07 ·
65528 阅读 ·
12 点赞 ·
16 评论 ·
86 收藏

dubbo(四)异常处理

dubbo的异常处理网上描述的文章很多,复制黏贴也不在少数.在这里记录下自己的一些体会.还是带着问题(目录)来写吧.1.dubbo官方推荐的异常处理方式是什么?2.dubbo处理异常的逻辑是什么样的?为什么要这样处理?3.抛出自定义异常有哪些方式?4.provider统一异常(包括自定义异常及其他runtimeException)处理怎么实现?5.在dubbo:pr
原创
发布博客 2016.12.29 ·
25105 阅读 ·
4 点赞 ·
3 评论 ·
14 收藏

Jenkins(一)windows下的安装

准备用Jenkins来提高打包部署的效率,省去大部分人工重复环节,所以记录下过程.1.下载2.部署运行3.插件安装1.下载官网地址 https://jenkins.io/index.html, 下载war包就可以了. 会让你选择一个最新版或者稳定版.这里我们选择稳定版  2.19.42.部署运行可以选择直接 java -jar jenkins.war 运行, 也可以选择放在容器中运行, 我们这里使用 tomcat运行.
原创
发布博客 2016.12.06 ·
2471 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

redis zookeeper 开机启动

每次重装系统后,都忘记redis和zookeeper开机启动的方式,去搜索的话还要筛选半天才能找到自己想要的.所以记录下来,用于备忘. 暂时先记录windows系统的.win10(win7的话,记得是直接把1中的bat脚本放到 启动这个 文件夹里面就可以了)1.新建bat脚本,启动redis,zookeeper2.新建vbs脚本,调用bat脚本3.修改注册表,调用vbs
原创
发布博客 2016.12.05 ·
1160 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

RabbitMQ(三)Spring整合 的 HelloWorld

现在java项目,貌似spring是必备的啦.而spring对于流行的中间件之类都有支持. rabbitmq当然也不例外.这个整合网上的例子也挺多.不过大部分都是最简单的一个demo,连consumer这里接收对象我都找了半天没找到.下面直接上代码了.第一步当然是引入依赖的jar了 org.springframework.amqp spr
原创
发布博客 2016.11.17 ·
2406 阅读 ·
3 点赞 ·
1 评论 ·
3 收藏

spring-rabbitmq-helloworld

发布资源 2016.11.17 ·
war

RabbitMQ(二)CentOS6.7 下的 HelloWorld

前一篇写了在Windows下的安装使用,这次记录下CentOS6.7下的安装使用.其实在CentOS下和Windows下过程是一样的,都是 先安装Erlang环境,再安装RabbitMQ Server.只不过CentOS下经常遇到各种问题,所以感觉上麻烦点.
原创
发布博客 2016.11.13 ·
5956 阅读 ·
0 点赞 ·
3 评论 ·
7 收藏

RabbitMQ(一) Windows下的 HelloWorld

rabbit的官方文档相当不错,按照文档来基本就OK了.先在windows下面搭建一个helloworld,安装的rabbitmq版本是3.6.5参考官网 http://www.rabbitmq.com/install-windows.html主要分下面5步:1) 下载安装Erlang环境2) 下载安装RabbitMQ Server3) 启动server,并启用
原创
发布博客 2016.11.13 ·
1159 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

Java nginx https 双向认证

最近要做个https 双向认证的,就做了个demo,踩了不少坑,记录一下.主要还是对原理理解不够透彻,刚开始直接从网上搬个例子就用,结果大部分都不适用.
原创
发布博客 2016.10.20 ·
9318 阅读 ·
3 点赞 ·
3 评论 ·
25 收藏

dubbo(三)dubbo的文件上传

在(dubbo二)文章中,我们将customer和provider分开部署了,这次主要记录文件在customer和provider之间的传输.如果文件直接在customer中进行保存,不需要传递到provider,则和dubbo就没有关系了.如果需要传递,如果是使用dubbo协议的话,是不支持 file,inputStream 这种文件,流的传输的.dubbo中customer和pro
原创
发布博客 2016.10.11 ·
22225 阅读 ·
3 点赞 ·
5 评论 ·
9 收藏

好读书不求甚解(一)Java多线程编程核心技术

第1章 Java多线程技能第2章 对象及变量的并发访问1 synchronized同步方法2 synchronized同步代码块3 volatile第3章 线程间通信1 等待通知机制2 join方法3 ThreadLocal类第4章 Lock的使用1 ReentrantLock类2 ReentrantReadWriteLock类第5章 定时器Timer第6章 单例模式与多线
原创
发布博客 2016.10.08 ·
2351 阅读 ·
0 点赞 ·
1 评论 ·
8 收藏

dubbo(二)普通项目dubbo服务化改造+provider构建为jar包运行

前面写过 dubbo的 hello world 和 一个普通的ssm框架集成 的2个项目. 今天我们来将 普通的项目 改造成dubbo服务的结构. 并且provider以jar包方式运行.前面 dubbo的hello world 点这里看 传送门前面 ssm框架集成的项目 点这里看 传送门本博客源码地址:https://code.csdn.net/qq315737546/d
原创
发布博客 2016.08.20 ·
12865 阅读 ·
5 点赞 ·
2 评论 ·
18 收藏

nginx代理后,获取request的ip

应用程序部署上线,一般都会用nginx之类的来进行反向代理,而不是直接访问tomcat之类的容器.这时候如果用平时的获取ip的代码,就只会获取到nginx所在服务器的ip, 就失去了本身的意义.今天就来配置下 nginx+tomcat 后,  程序获取ip和 tomcat的访问日志localhost_access_log 获取ip.1.首先要在nginx中加个配置,即把用户ip
原创
发布博客 2016.08.15 ·
11942 阅读 ·
0 点赞 ·
0 评论 ·
7 收藏

quartz集群

当项目部署在多个tomcat上进行集群后,定时任务就会有问题. 多个tomcat都会执行相同的定时任务.最简单的解决办法是把定时器只放到一个tomcat上运行,但是这样就不是集群了.我们期望的是一台服务挂掉,不影响定时器执行. 这时候就用到了quartz的集群.其实单机运行的时候,使用spring task 最方便, 2行代码就搞定了. 但是spring task不支持集群. 所以
原创
发布博客 2016.08.14 ·
5207 阅读 ·
0 点赞 ·
1 评论 ·
10 收藏
加载更多