- @Contended
qq_31273845
springjava后端
`@Contended`是Java8引入的一个注解,主要用于减少多线程环境下的伪共享(FalseSharing)问题。伪共享是由于缓存行的争用导致的性能问题,特别是在多核处理器上。###`@Contended`注解的作用-**减少伪共享**:当多个线程访问不同的变量,但这些变量位于同一个缓存行时,可能会引发伪共享问题。`@Contended`注解通过在变量之间插入填充字段,确保它们位于不同的缓存行
- 伪共享
小时候挺菜
计算机操作系统
一、伪共享的定义:伪共享的非标准定义为:缓存系统中是以缓存行(cacheline)为单位存储的,当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。二、CPU缓存机制CPU缓存的百度百科定义为:CPU缓存(CacheMemory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。高速缓存的出现主要是为了解决CPU运
- 并发CPU伪共享及优化
乱蜂朝王
javajavaspring开发语言
目录伪共享解决伪共享缓存系统中是以缓存行(cacheline)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。缓存行上的写竞争是运行在SMP系统中并行线程实现可伸缩性最重要的限制因素。有人将伪共享描述成无声的性能杀手,因为从代码中很难看清楚是否会
- 【Java】一文全面了解伪共享(false sharing)问题
小北觅
通过本文,可以收获如下知识:①MESI协议相关②图例讲解伪共享问题③实例讲解伪共享问题带来的性能问题④使用perf进行性能分析⑤@Contended注解的原理一、概述在本文中,我们会看到伪共享问题有时会使多线程程序适得其反。首先,我们将从缓存和局部性理论开始。然后我们会自己重写一个LongAdder并发工具类,并将其与java.util.concurrent中的实现进行基准测试。在本文中,我们将使
- 共享单车乱象真是国民素质低?
luckysusan1991
共享单车乱象最近一年时间,共享单车几乎呈疯狂生长的态势发展,目之所及之处,都有凌乱停放着的单车;而今,处在投资者追逐风口上的各种“共享”或“伪共享”依然层出不穷,赤橙黄绿不断涌现,共享还在一路高歌猛进。共享单车进入城市,也意味着进入了城市交通系统,在解决“最后一公里”,为出行带来极大方便的同时,却也带来很多不便,甚至与绿色环保的出行方式南辕北辙:到处可见被肢解,被随意丢弃,乱停乱放的单车,各地关于
- 面试专题——JUC并发编程+集合
zhz小白
架构师-性能优化java
文章目录面试系列1、Cas(比较并交换)2、AQS(AbstractQueuedSynchronizer)=>抽象队列同步器3、Volatile:3.1、JMM3.2、As-If-Serial原则3.3、Happens-Before原则3.4、volatile原理3.5、作用3.6、原子操作3.7、高速缓存3.8、MESI状态切换3.9、伪共享4、ReentrantLock4.1、原理5、Sync
- disruptor (史上最全之1):伪共享原理&性能对比实战
40岁资深老架构师尼恩
java缓存redisjava
推荐:尼恩Java面试宝典(持续更新+史上最全+面试必备)具体详情,请点击此链接尼恩Java面试宝典,34个最新pdf,含2000多页,不断更新、持续迭代具体详情,请点击此链接disruptor史上最全系列文章:作为Java领域最高性能的队列,没有之一,大家不光要懂,而是需要深入骨髓的搞懂。所以,给大家奉上了下面的三篇文章,并且配备了视频进行详细介绍:1disruptor史上最全之1:伪共享原理&
- 伪共享 (原理与实战)
40岁资深老架构师尼恩
java
疯狂创客圈经典图书:《NettyZookeeperRedis高并发实战》面试必备+面试必备+面试必备【博客园总入口】疯狂创客圈经典图书:《SpringCloud、Nginx高并发核心编程》大厂必备+大厂必备+大厂必备【博客园总入口】入大厂+涨工资必备:高并发【亿级流量IM实战】实战系列【SpringCloudNginx秒杀】实战系列【博客园总入口】无锁编程(LockFree)框架系列文章:1dis
- CPU缓存行及伪共享概述
gmdqtd
认识CPUCacheCPUCache概述随着CPU的频率不断提升,而内存的访问速度却没有质的突破,为了弥补访问内存的速度慢,充分发挥CPU的计算资源,提高CPU整体吞吐量,在CPU与内存之间引入了一级Cache。随着热点数据体积越来越大,一级CacheL1已经不满足发展的要求,引入了二级CacheL2,三级CacheL3。(注:若无特别说明,本文的Cache指CPUCache,高速缓存)CPUCa
- 还共享终端项目一片净土!不能再被搞金融、传销、直销圈钱的人利用下去了!
水酷云享
免费共享智能终端的本质是活下去,在更好的服务大众的同时获取流量。还在搞伪共享的组织,劝你们善良!不要再侮辱互联网产业了,任何骗局都将付出代价。首先我一定要说一句话,伪共享的泡沫一定是要破灭的,且创造这种泡沫的人更是会被全社会谴责!很多做共享项目的公司打着“纳斯达克”我觉得一个公司CEO的属性很重要!一个做传销的ceo永远不会把一个互联网产业做好,因为他的基因就是“圈钱”,而一个有格局的公司领导者一
- 并发编程之MESI缓存一致性协议
山鸟与鱼!
并发编程缓存java后端
目录CPU缓存架构CPU多核缓存架构CPU缓存架构缓存一致性的解决方案缓存一致性协议实现原理总线窥探工作原理窥探协议类型缓存一致性协议MESI协议伪共享问题CPU缓存架构CPU缓存即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。CPU高速缓存可以分为一级缓存,二级缓存,部分高端CPU还具有三级缓存,每一级缓存中所储存的全部数据都是下一级缓存的一部分,这三种缓存的技术难度和
- 《java并发编程之美》学习笔记-知识盲点记录
无一郎的技术圈
java后端
文章目录@[TOC](文章目录)前言一、InheritableThreadLocal类(第一章1.11节)二、原子操作Adder与Accumulator(第四章)1.LongAdder2.LongAccumulator三、StampedLock锁(第六章)四、守护线程、伪共享、虚假唤醒(第一、二章)1.守护线程2.伪共享3.虚假唤醒4.Unsafe类与LockSupport五、Concurrent
- 操作系统--CPU高级
每天进步一......
操作系统学习记录linux
1.现代CPU架构2.CPU读写单位CPUCacheLine是CPU从内存读取数据到Cache的单位。CPUCacheLine大小一般是64个字节,也就意味着CPU读写数据的时候,每一次都是以64字节大小为一块进行操作。3.CPU伪共享问题因为多个线程同时读写同一个CacheLine的不同普通变量时,而导致CPUCache失效的现象称为伪共享(FalseSharing)在Linux内核中存在__c
- Java并发编程——伪共享和缓存行问题
ByeDark
Javajava缓存
在Java并发编程中,伪共享(FalseSharing)和缓存行(CacheLine)是与多线程访问共享数据相关的两个重要概念。伪共享指的是多个线程同时访问同一个缓存行中的不同变量或数据,其中至少一个线程对其中一个变量进行写操作。由于处理器缓存行的一致性协议要求缓存行中的数据在多个处理器间保持一致,因此当一个线程修改了一个变量并使得缓存行失效后,其他线程即使是访问其他变量也会受到影响。这种情况下,
- CPU缓存一致性问题
zpv2jdfc
开发语言linux
今天复习了下CPU缓存的知识。(๑•̀ㅂ•́)و✧文章目录数据写入内存的两种方式缓存一致性问题总线嗅探MESI协议伪共享CPU的访问速率要远高于内存的访问速率,为了减少内存访问次数,提高计算机系统效率,CPU中引入了缓存。这是我虚拟机的三级缓存结构。L1d和L1i是一级缓存,他距离cpu核心最近,其中,l1d用来存数据,l1i用来存指令。L1和L1cache是每个核心独有的缓存,而L3则是多个cp
- CPU缓存一致性协议MESI
编程小菜吉
JAVA并发编程缓存java
CPU缓存一致性协议MESI引入1、一条Java指令在JVM和CPU中的执行过程:2、总线锁一、多核CPU多级缓存一致性协议MESI1、简介2、MESI协议缓存状态二、volatile与MESI的关系三、缓存行伪共享1、介绍2、解决方法四、MESI优化和他们引入的问题1、问题产生原因2、解决方法引入1、一条Java指令在JVM和CPU中的执行过程:2、总线锁总线锁就是在总线上加锁,早期还没有多级缓
- 并发不得不说的伪共享
marsjhe
前言可谓是一入并发深似海,看得越多,发现自己懂的越少,总感觉自己只是了解了其冰山一角。但是在研究的过程中越来越感受到一些框架的设计之美,很细腻的赶脚。同时也让我get到了新的知识点。CPU缓存在正式进入正题之前,必须得先说说缓存这个概念。对于缓存这个概念相信大多数程序猿都不会很陌生,在大大小小项目中都会遇到。举个最简单的例子:数据一般都会存放到数据库之中。但在某些应用场景中不可能每次加载数据都去从
- 伪共享横行,真正的共享如何脱颖而出,答案很简单!
一度传媒
随着互联网的不断发展及前行,共享经济的运营模式随即产生,该模式的诞生让万物共享成为了可能。总体而言,它就是资源提供者通过某一平台或其他渠道与需要这种资源的消费者进行对接,达成交易,既可以让资源有效充分的利用,还可以让资源提供者在闲置的时候得到自己资源的部分价值。当然,任何事情都是一把双刃剑,如果说共享经济是大势所趋,那我们常用的小黄车,这就堪称业内最成功的伪共享模式,他并没有整合资源,而是不断的创
- 《Java并发编程的艺术》——Java并发的前置知识(笔记)
yjx23332
Java并发编程javajvm开发语言JUC
文章目录一、并发编程的挑战1.1上下文切换1.1.1多线程一定快吗1.1.2如何减少上下文的切换1.2死锁死锁发生的条件预防死锁避免死锁1.3资源限制的挑战1.3.1什么是资源限制1.3.2资源限制引发的问题1.3.3资源限制问题如何解决二、Java并发机制的底层实现原理2.1volatile的应用2.1.1volatile的定义与实现原理2.1.1.1术语2.1.1.2伪共享2.1.1.3原理2
- linux 内核同步互斥技术之cache 伪共享和隐含内存屏障
一叶知秋yyds
linuxlinuxc语言网络
隐含内存屏障内核的有些函数隐含内存屏障。(1)获取和释放函数。(2)中断禁止函数。1.获取和释放函数获取(acquire)函数包括如下。(1)获取锁的函数。锁包括自旋锁、读写自旋锁、互斥锁、信号量和读写信号量。(2)smp_load_acquire(p):加载获取。(3)smp_cond_load_acquire(ptr,cond_expr):带条件的加载获取。获取操作隐含如下。(1)获取操作后面
- 计算机底层原理
知之_知之
计算机底层知识java后端系统安全
文章目录1、计算机组成2、存储器的层次结构3、cacheline的概念缓存行对齐伪共享4、CPU乱序执行的概念4.1一道面试题:DCL(DoubleCheckLock双重检查锁)单例模式要不要加volatile4.2合并写技术5、程序运行的底层原理6、锁6.1锁的概念6.2synchronized关键字6.2.1自旋锁的核心——CAS(compareAndSwap)6.2.2偏向锁1、计算机组成C
- 【Java技术专题】「入门到精通系列教程」深入探索Java特性中并发编程体系的原理和实战开发指南(内存模型技术专题)
洛神灬殇
深入浅出Java原理及实战java开发语言
深入探索Java特性中并发编程体系的原理和实战开发指南(线程进阶技术专题)前言介绍JVM内存模型运行时数据区域堆内存栈内存内存访问规则原子性对象类型基本类型可见性有序性(HappenBefore法则)系统内存(MESI协议)内存栅栏读写查看JIT编译结果这行配置的含义如下缓存行对齐**缓存行对齐****伪共享**线程安全策略不可变类线程栈内使用同步锁CAS(CompreAndSet)编程建议指南前
- 常见优化思路
大数据启示录
程序人生
核心优化思路多机并行:能够充分利用多机的资源单机多核并行:能够充分利用单机上多核的资源充分利用单核的性能:3.1 减少 指令数:选择效率更好的执行策略,数据结果,算法 等3.2 减少 每个指令需要的周期:SIMD, CPU Cache,分支预测 等资源的视角CPU多核扩展性Lock分段thread localLock Free上下文切换绑核用户态线程线程池NUMACache Line 伪共享同步
- cache line 伪共享
weixin_33834075
javac/c++操作系统
https://blog.csdn.net/qq_27680317/article/details/78486220认识CPUCacheCPUCache概述随着CPU的频率不断提升,而内存的访问速度却没有质的突破,为了弥补访问内存的速度慢,充分发挥CPU的计算资源,提高CPU整体吞吐量,在CPU与内存之间引入了一级Cache。随着热点数据体积越来越大,一级CacheL1已经不满足发展的要求,引入了
- CPU Cache下的伪共享和缓存行
romantic_jie
操作系统
本文转载自https://blog.csdn.net/karamos/article/details/80126704认识CPUCacheCPUCache概述随着CPU的频率不断提升,而内存的访问速度却没有质的突破,为了弥补访问内存的速度慢,充分发挥CPU的计算资源,提高CPU整体吞吐量,在CPU与内存之间引入了一级Cache。随着热点数据体积越来越大,一级CacheL1已经不满足发展的要求,引入
- CPU缓存,L1,L2,L3和伪共享
老王谈架构
Java进阶CPU缓存
转载至http://geek.csdn.net/news/detail/114619看了很多网上讲解java伪共享、缓存行填充和CPU缓存的MESI等等,零零碎碎,目前感觉就这篇文章讲的最清楚,忍不住转载下。原文如下:认识CPUCacheCPUCache概述随着CPU的频率不断提升,而内存的访问速度却没有质的突破,为了弥补访问内存的速度慢,充分发挥CPU的计算资源,提高CPU整体吞吐量,在CPU与
- 一篇对伪共享、缓存行填充和CPU缓存讲的很透彻的文章
GarfieldEr007
Java伪共享缓存行填充CPU缓存
认识CPUCacheCPUCache概述随着CPU的频率不断提升,而内存的访问速度却没有质的突破,为了弥补访问内存的速度慢,充分发挥CPU的计算资源,提高CPU整体吞吐量,在CPU与内存之间引入了一级Cache。随着热点数据体积越来越大,一级CacheL1已经不满足发展的要求,引入了二级CacheL2,三级CacheL3。(注:若无特别说明,本文的Cache指CPUCache,高速缓存)CPUCa
- 极致性能优化之道之消除伪共享
知秋丶
技术文档性能优化java
“不积跬步,无以至千里。”引言在并发编程中,伪共享(FalseSharing)是一种性能问题,特别是在多核处理器上。这个问题通常出现在多个线程同时修改彼此不同但共享同一缓存行的数据。为了解决伪共享问题,我们需要采用一些技术手段,特别是在Java中,使用合适的填充技术可以有效提高性能。什么是伪共享?伪共享是由于缓存行的概念引起的。现代计算机架构中,缓存被分割成一些大小固定的缓存行,通常为64字节。多
- JUC并发编程系列(二):多线程并发、CAS、锁
荔枝当大佬
JUC并发编程学习javaCAS多线程并发伪共享锁
前言在这篇文章中,荔枝将主要梳理在JUC并发学习中的有关Java多线程中有关共享变量的内存可见性、原子性问题、指令重排问题以及伪共享问题。希望能够对正在学习的小伙伴有帮助~~~文章目录前言一、多线程并发与内存可见性问题的引入1.1并发和并行1.2多线程并发的场景引入以及带来的问题1.3共享变量的内存可见性问题二、synchronized和volatile关键字2.1synchronized2.2v
- 线程基础:多任务处理——MESI协议以及带来的问题:伪共享
weixin_33968104
java大数据数据库
1、概述本文和后续文章将着眼CPU的工作原理阐述伪共享的解决方法和volatile关键字的应用。2、复习CPU工作原理2.1、CPU工作原理要清楚理解本文后续内容,就需要首先重新概述一下JVM的内存工作原理。当然JVM的内存模型是一个可以专门作为另一个专题的较复杂知识点,所以这里我们只描述对下文介绍的伪共享、volatile关键字相关联的一些要点。这里我们不讨论JVM的内存模型,因为本专题之前的内
- 二分查找排序算法
周凡杨
java二分查找排序算法折半
一:概念 二分查找又称
折半查找(
折半搜索/
二分搜索),优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而 查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表 分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步
- java中的BigDecimal
bijian1013
javaBigDecimal
在项目开发过程中出现精度丢失问题,查资料用BigDecimal解决,并发现如下这篇BigDecimal的解决问题的思路和方法很值得学习,特转载。
原文地址:http://blog.csdn.net/ugg/article/de
- Shell echo命令详解
daizj
echoshell
Shell echo命令
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:
echo string
您可以使用echo实现更复杂的输出格式控制。 1.显示普通字符串:
echo "It is a test"
这里的双引号完全可以省略,以下命令与上面实例效果一致:
echo Itis a test 2.显示转义
- Oracle DBA 简单操作
周凡杨
oracle dba sql
--执行次数多的SQL
select sql_text,executions from (
select sql_text,executions from v$sqlarea order by executions desc
) where rownum<81;
&nb
- 画图重绘
朱辉辉33
游戏
我第一次接触重绘是编写五子棋小游戏的时候,因为游戏里的棋盘是用线绘制的,而这些东西并不在系统自带的重绘里,所以在移动窗体时,棋盘并不会重绘出来。所以我们要重写系统的重绘方法。
在重写系统重绘方法时,我们要注意一定要调用父类的重绘方法,即加上super.paint(g),因为如果不调用父类的重绘方式,重写后会把父类的重绘覆盖掉,而父类的重绘方法是绘制画布,这样就导致我们
- 线程之初体验
西蜀石兰
线程
一直觉得多线程是学Java的一个分水岭,懂多线程才算入门。
之前看《编程思想》的多线程章节,看的云里雾里,知道线程类有哪几个方法,却依旧不知道线程到底是什么?书上都写线程是进程的模块,共享线程的资源,可是这跟多线程编程有毛线的关系,呜呜。。。
线程其实也是用户自定义的任务,不要过多的强调线程的属性,而忽略了线程最基本的属性。
你可以在线程类的run()方法中定义自己的任务,就跟正常的Ja
- linux集群互相免登陆配置
林鹤霄
linux
配置ssh免登陆
1、生成秘钥和公钥 ssh-keygen -t rsa
2、提示让你输入,什么都不输,三次回车之后会在~下面的.ssh文件夹中多出两个文件id_rsa 和 id_rsa.pub
其中id_rsa为秘钥,id_rsa.pub为公钥,使用公钥加密的数据只有私钥才能对这些数据解密 c
- mysql : Lock wait timeout exceeded; try restarting transaction
aigo
mysql
原文:http://www.cnblogs.com/freeliver54/archive/2010/09/30/1839042.html
原因是你使用的InnoDB 表类型的时候,
默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,
因为有的锁等待超过了这个时间,所以抱错.
你可以把这个时间加长,或者优化存储
- Socket编程 基本的聊天实现。
alleni123
socket
public class Server
{
//用来存储所有连接上来的客户
private List<ServerThread> clients;
public static void main(String[] args)
{
Server s = new Server();
s.startServer(9988);
}
publi
- 多线程监听器事件模式(一个简单的例子)
百合不是茶
线程监听模式
多线程的事件监听器模式
监听器时间模式经常与多线程使用,在多线程中如何知道我的线程正在执行那什么内容,可以通过时间监听器模式得到
创建多线程的事件监听器模式 思路:
1, 创建线程并启动,在创建线程的位置设置一个标记
2,创建队
- spring InitializingBean接口
bijian1013
javaspring
spring的事务的TransactionTemplate,其源码如下:
public class TransactionTemplate extends DefaultTransactionDefinition implements TransactionOperations, InitializingBean{
...
}
TransactionTemplate继承了DefaultT
- Oracle中询表的权限被授予给了哪些用户
bijian1013
oracle数据库权限
Oracle查询表将权限赋给了哪些用户的SQL,以备查用。
select t.table_name as "表名",
t.grantee as "被授权的属组",
t.owner as "对象所在的属组"
- 【Struts2五】Struts2 参数传值
bit1129
struts2
Struts2中参数传值的3种情况
1.请求参数绑定到Action的实例字段上
2.Action将值传递到转发的视图上
3.Action将值传递到重定向的视图上
一、请求参数绑定到Action的实例字段上以及Action将值传递到转发的视图上
Struts可以自动将请求URL中的请求参数或者表单提交的参数绑定到Action定义的实例字段上,绑定的规则使用ognl表达式语言
- 【Kafka十四】关于auto.offset.reset[Q/A]
bit1129
kafka
I got serveral questions about auto.offset.reset. This configuration parameter governs how consumer read the message from Kafka when there is no initial offset in ZooKeeper or
- nginx gzip压缩配置
ronin47
nginx gzip 压缩范例
nginx gzip压缩配置 更多
0
nginx
gzip
配置
随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢?
gzip(GNU-ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用
- java-13.输入一个单向链表,输出该链表中倒数第 k 个节点
bylijinnan
java
two cursors.
Make the first cursor go K steps first.
/*
* 第 13 题:题目:输入一个单向链表,输出该链表中倒数第 k 个节点
*/
public void displayKthItemsBackWard(ListNode head,int k){
ListNode p1=head,p2=head;
- Spring源码学习-JdbcTemplate queryForObject
bylijinnan
javaspring
JdbcTemplate中有两个可能会混淆的queryForObject方法:
1.
Object queryForObject(String sql, Object[] args, Class requiredType)
2.
Object queryForObject(String sql, Object[] args, RowMapper rowMapper)
第1个方法是只查
- [冰川时代]在冰川时代,我们需要什么样的技术?
comsci
技术
看美国那边的气候情况....我有个感觉...是不是要进入小冰期了?
那么在小冰期里面...我们的户外活动肯定会出现很多问题...在室内呆着的情况会非常多...怎么在室内呆着而不发闷...怎么用最低的电力保证室内的温度.....这都需要技术手段...
&nb
- js 获取浏览器型号
cuityang
js浏览器
根据浏览器获取iphone和apk的下载地址
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" content="text/html"/>
<meta name=
- C# socks5详解 转
dalan_123
socketC#
http://www.cnblogs.com/zhujiechang/archive/2008/10/21/1316308.html 这里主要讲的是用.NET实现基于Socket5下面的代理协议进行客户端的通讯,Socket4的实现是类似的,注意的事,这里不是讲用C#实现一个代理服务器,因为实现一个代理服务器需要实现很多协议,头大,而且现在市面上有很多现成的代理服务器用,性能又好,
- 运维 Centos问题汇总
dcj3sjt126com
云主机
一、sh 脚本不执行的原因
sh脚本不执行的原因 只有2个
1.权限不够
2.sh脚本里路径没写完整。
二、解决You have new mail in /var/spool/mail/root
修改/usr/share/logwatch/default.conf/logwatch.conf配置文件
MailTo =
MailFrom
三、查询连接数
- Yii防注入攻击笔记
dcj3sjt126com
sqlWEB安全yii
网站表单有注入漏洞须对所有用户输入的内容进行个过滤和检查,可以使用正则表达式或者直接输入字符判断,大部分是只允许输入字母和数字的,其它字符度不允许;对于内容复杂表单的内容,应该对html和script的符号进行转义替换:尤其是<,>,',"",&这几个符号 这里有个转义对照表:
http://blog.csdn.net/xinzhu1990/articl
- MongoDB简介[一]
eksliang
mongodbMongoDB简介
MongoDB简介
转载请出自出处:http://eksliang.iteye.com/blog/2173288 1.1易于使用
MongoDB是一个面向文档的数据库,而不是关系型数据库。与关系型数据库相比,面向文档的数据库不再有行的概念,取而代之的是更为灵活的“文档”模型。
另外,不
- zookeeper windows 入门安装和测试
greemranqq
zookeeper安装分布式
一、序言
以下是我对zookeeper 的一些理解: zookeeper 作为一个服务注册信息存储的管理工具,好吧,这样说得很抽象,我们举个“栗子”。
栗子1号:
假设我是一家KTV的老板,我同时拥有5家KTV,我肯定得时刻监视
- Spring之使用事务缘由(2-注解实现)
ihuning
spring
Spring事务注解实现
1. 依赖包:
1.1 spring包:
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.
- iOS App Launch Option
啸笑天
option
iOS 程序启动时总会调用application:didFinishLaunchingWithOptions:,其中第二个参数launchOptions为NSDictionary类型的对象,里面存储有此程序启动的原因。
launchOptions中的可能键值见UIApplication Class Reference的Launch Options Keys节 。
1、若用户直接
- jdk与jre的区别(_)
macroli
javajvmjdk
简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
JDK就是Java Development Kit JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。 如果安装了JDK,会发同你
- Updates were rejected because the tip of your current branch is behind
qiaolevip
学习永无止境每天进步一点点众观千象git
$ git push joe prod-2295-1
To
[email protected]:joe.le/dr-frontend.git
! [rejected] prod-2295-1 -> prod-2295-1 (non-fast-forward)
error: failed to push some refs to '
[email protected]
- [一起学Hive]之十四-Hive的元数据表结构详解
superlxw1234
hivehive元数据结构
关键字:Hive元数据、Hive元数据表结构
之前在 “[一起学Hive]之一–Hive概述,Hive是什么”中介绍过,Hive自己维护了一套元数据,用户通过HQL查询时候,Hive首先需要结合元数据,将HQL翻译成MapReduce去执行。
本文介绍一下Hive元数据中重要的一些表结构及用途,以Hive0.13为例。
文章最后面,会以一个示例来全面了解一下,
- Spring 3.2.14,4.1.7,4.2.RC2发布
wiselyman
Spring 3
Spring 3.2.14、4.1.7及4.2.RC2于6月30日发布。
其中Spring 3.2.1是一个维护版本(维护周期到2016-12-31截止),后续会继续根据需求和bug发布维护版本。此时,Spring官方强烈建议升级Spring框架至4.1.7 或者将要发布的4.2 。
其中Spring 4.1.7主要包含这些更新内容。