数据库序列使用数据库序列生成id时,事务A在使用序列的时候,不会影响事务B使用同一个序列,比如:SELECTdemo.nextvalFROMdual;每次访问都会自增1
MQ使用说明及MQ如何保证消息顺序性和消息的幂等性
首先请读者思考一个问题:Linux系统下面这么多的文件是如何来管理的?新建一个文件都是经历了什么样的过程?1.Ext文件系统的特点1).文件系统的特点权限与属性放置到inode中,至于实际数据则放置到datablock块中。还有一个超级块superblock会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量等;superblock:记录此文件系统的整体信息,包括inod
对于做开发的同学来说,负载均衡算法已经不陌生了,今天一起来盘点一下分布式系统中都是有哪些负载均衡算法以及它的优缺点;1.轮询法(RoundRobin)思想:将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端每一台服务器,而不关心服务实际的连接数和当前系统的负载;代码实现:privateList<String>list=newCopyOnWriteArrayList();privat
redis提供了list类型,此类型底层是通过双向链表来实现: > lpush、rpop 非阻塞式 > blpop、brpop 阻塞式 先来对比一下上面阻塞与非阻塞会有什么问题; > 1.阻塞式:如果队列里面没有消息,会阻塞连接,长时间占用redis连接,需要考虑redis配置的超时以及redis会对空闲连接进行释放以减少资源浪费,需要对异常进行捕获重试; > 2.非阻塞式:如果是1s主动去redis中拉取一次消息,也不太适合;
最近,总是听到同事在面试的时候问候选人java中的锁相关的知识,大部分同学在问到CAS的时候会有些一知半解;1.原子操作说到原子操作,会想到数据库事务中的原子性,道理都差不多,指一行或多行代码要么都执行成功或失败。比如:i++这行代码,在执行的过程中会分为三步去执行:1.取出i的值;2.将i的值+1;3.将+1后的赋值给i;在单线程的情况下,这种操作不会有问题,但是多线程的情况下呢:出现了线程B的
关于volatile关键字的话,工作中没有遇到使用场景,大部分是面试的时候必问的一个题目;本文主要内容摘自《JAVA高并发编程详解》1.CPUCache模型CPUCache主要是为了解决CPU与内存之间访问速度的差异问题,Cache则是在程序运行的过程中会将运算的所需数据从主内存复制一份到CPUCache中,这样CPU在计算的过程中,可以直接从CPUCache中读取或写入,当运算结束之后,CPUC
关于SSO一直没有深入的研究,在工作中也是对接的公司平台的SSO,最近频繁的与SSO打交道之后,我决定深入的理解一下它的实现原理;一.SSO的实现方式SSO系统在公司一般是独立部署的一套系统,需要各业务系统接入,回想一下之前传统系统都是业务+登录一体化,那个时候,我们可以将用户信息保存到session,那如果是微服务+独立SSO该怎么实现各系统session共享的问题?1.基于共享session我
这里主要记录项目中使用基于redis的分布式锁所遇到的问题及解决方案;业务场景我的业务场景是这样的,我们服务有库存模块,而我的服务又是多节点部署,要高峰期会存在库存差异,后面分析问题之后,打算采用redis实现分布式锁(主要的原因是服务已经集成了redis,不需要做额外的配置)问题1.数据库事务超时不要感觉奇怪,分布式锁怎么会导致数据库事务超时呢?我的代码大概是这样的:伪代码@Transactio
这里主要记录一下工作中遇到的一些常用shell1.jenkins部署远程tomcat#/bin/bashexportTOMCAT_HOME_PATH=/usr/local/soft/tomcat-8.5.53cd$TOMCAT_HOME_PATH#停服;pid=`ps-ef|greptomcat|grep-vgrep|awk'{print$2}'``kill-9$pid`#备份war包export
在项目中经常使用到多线程来提升业务处理速度,但线程池的大小该定义为多大,这块该怎么确定?1.IO密集型单核心最佳线程数=1+(IO耗时/CPU耗时)多核心线程数星佳线程数=CPU核数*(1+(IO耗时/CPU耗时))注:如何获取CPU耗时和IO耗时,可以通过APM之类系统2.CPU密集型最佳线程数=CPU核数+1说明一下这个1哪来的,是为了防止突然有线程出现内存页失效或者其它原因导致阻塞;3.总结
1.前置准备安装java安装git安装maven安装tomcat2.安装jenkins本文安装jenkins采用war的方式,war包下载地址:https://jenkins.io/zh/download/3.安装插件提速mac找到/Users/didi/.jenkins/updates/default.jsonwindow:C:\ProgramFiles(x86)\Jenkins\updates
guava是goog1e开源的一套针对javaapi的扩展工具包,里面包含很多非常实用的方法,在工作中可以提高我们的编码效率;1.Joiner将集合按指定字符拼接成字符串;privatefinalList<String>stringList=Arrays.asList("tom","jack","bob");privatefinalList<String>stringListWit
Netcat被称为tcp/ip的最好用的工具,也是linux开发/运维人员的必备技巧;1.安装ncyuminstallnc-y2.常用功能2.1端口测试查看服务器的某个端口是否开启nc-vzipportnc-vz192.168.1.180-v:显示多点信息-z:不发送数据例如:端口范围扫描nc-v-v-w3-z192.168.1.180-88两次-v显示更详细的内容;-w3:设置扫描超时时间3秒;2.
在编码中难免遇到ifelse过多情况,一方面是当初设计没有在意,另一方面可能是因为需求的不断变化。但代码中出现大量ifelse都知道这种情况不太好,那么我们就聊一下这种情况应该如何优化if(条件1){....}elseif(条件2){....}elseif(条件3){....}else{....}1.表驱动表驱动是指用查表的方式获取值privatestaticMap<Status,Funct
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号