关闭

读-李智慧-大型网站技术架构:核心原理与案例分析

网站构架演进 大型网站的特点 架构演化历程 价值观 架构模式 分层 分割 分布式 集群 缓存 异步 冗余 自动化 安全 性能 性能测试 web前端性能优化 应用服务器性能优化 存储性能优化 可用性 可用性度量和考核 高可用的应用 高可用的服务 高可用的数据 高可用的软件质量保证 网站运行监控 伸缩性 网站架构的伸缩性设计 应用服务集群的伸缩性设计 分布式缓存集群的伸缩性设计 数据存储服务器集群的伸缩...
阅读(2173) 评论(0)

读-Martin Fowler-企业应用架构模式

分层 组织领域逻辑 映射到关系数据库 表现层 并发会话状态分布式 并发 会话状态 分布策略 领域逻辑模式 事务脚本 领域模型 表模块模型 服务层 数据源架构模式 表数据入口 行数据入口 活动记录 数据映射器 ormapping 基本模式 入口 映射器 层超类型 分离接口 注册表 值对象货币 特殊情况 插件 服务桩 记录集 现在 大师级人物Martin Fowler的书,04年出版,现在看来有点老...
阅读(1074) 评论(0)

转载-数据库的四种事务隔离级别

SET TRANSACTION ISOLATION LEVEL 一、未提交读READ UNCOMMITTED(脏读) 意义:包含未提交数据的读。例如,在多用户环境下,用户B更改了某行。用户A在用户B提交更改之前读取已更改的行。如果此时用户B再回滚更改,则用户A便读取了逻辑上从未存在过的行。 演示: 1)用户B: BEGIN TRAN UPDATE test SE...
阅读(135) 评论(0)

转载-cpu伪共享问题

CPU内部也会有自己的缓存,内部的缓存单位是行,叫做缓存行。在多核环境下会出现CPU之间的内存同步问题(比如一个核加载了一份缓存,另外一个核也要用到同一份数据),如果每个核每次需要时都往内存中存取,这会带来比较大的性能损耗,这个问题一般是通过MESI协议来解决的。           MESI协议中包含M、E、S、I四个状态,分别的意思是: M(修改, Modified):...
阅读(185) 评论(0)

代码生成rapid-generator源码分析

原理 rapid-generator rapidDemo 假设有mysql数据库和表 修改generatorxml文件发在代码根目录就行生成代码会在classes目录加载配置文件主要是 模板文件 生成代码 rapid生成的代码文件 源码分析 常用类 加载配置文件 获取数据库元数据 构建输出模型和处理输出 总结 一个bug 感谢那位哥们提供了这样的好工具之前有个项目比较紧急,基本上开发和设计同步进行,...
阅读(2269) 评论(6)

java-Date\Time\TimeStamp

之前用到的时候,有的地方会混淆,项目代码写完了,周五休息下,正好看看学习下。 java.util.Date 年月日时分秒; java.sql.Date 年月日,对应数据库Date; java.sql.Time 时分秒,对应数据库Time; java.sql.Timestamp 年月日时分秒毫秒,对应数据库Timestamp; 各自的构造函数,现在基本都是传入Long型设置; getTime()方法获...
阅读(397) 评论(0)

JUC源码分析30-线程池-Exchanger

Demo 算法原理 结构 调用方法 exchange doExchange hashIndex createSlot await tryCancel spinWait 总结本想JUC最后一节写下Executors的,然后结束JUC。看了下代码,完全是一个工具类,哎,都是ThreadPoolExecutor、ScheduledThreadPoolExecutor还有callable的封装,代码看起来也...
阅读(326) 评论(0)

JUC源码分析29-线程池-ScheduledThreadPoolExecutor

ScheduledExecutorService 基本结构和构造 流程 4个schedule调度 ScheduledFutureTask 接口的几个实现方法 DelayedWorkQueue第一次看到这个还是在netty源码中,可惜netty没有坚持看完,后来在工作中,原来公司框架的esb下发消息,jms不能做到可配置的启停,后来使用这个做了个监听,配合统一配置平台完成心跳,实现在项目发布期间,可以...
阅读(244) 评论(0)

JUC源码分析28-线程池-ExecutorCompletionService

CompletionService 源码之前在看AbstractExecutorService的doInvokeAny()时看到这样的代码:ExecutorCompletionService ecs = new ExecutorCompletionService(this); ..... futures.add(ecs.submit(it.next())); .... ecs.t...
阅读(195) 评论(0)

JUC源码分析27-线程池-FutureTask

结构 核心方法 run cancel get awaitDone 其他方法 总结 参考在前一篇ThreadPoolExecutor学习时,在AbstractExecutorService代码重看到submit一个任务时,利用FutureTask的来封装提交的任务。这也应该是FutureTask最正常的使用吧。 如果对Future不了解的,有本书《java多线程设计模式》,真心是本好书,只是翻译的比...
阅读(476) 评论(0)

JUC源码分析26-线程池-ThreadPoolExecutor

功能说明 类图 预热 Executor ExecutorService AbstractExecutorService ThreadPoolExecutor 线程池状态 ThreadPoolExecutor大致结构 核心代码流程 execute addWorker Worker runWorker getTask processWorkerExit addWorkerFailed tryTermin...
阅读(918) 评论(3)

JUC源码分析25-队列-LinkedTransferQueue

原理 TransferQueue LinkedTransferQueue结构-Node Node节点 Node节点源码 LinkedTransferQueue结构源码 核心方法 put-offer-add untimed poll-tryTransfer transfer-take 超时的poll-tryTransfer 核心xfer 其他辅助方法 Example 前端妹子推荐Markdown排...
阅读(966) 评论(0)

JUC源码分析24-队列-CopyOnWriteArrayList,CopyOnWriteArraySet

在看LinkedTransferQueue之前看个简单点的CopyOnWriteArrayList。CopyOnWriteArrayList还是比较简单的,内部结构只有一个数组和一把锁。采用写时加锁复制数组,所有的可变操作都在新数组上进行,读则是老数组,有点读写分离意思,比ArrayList都加锁开肯定好的多,感觉适合那种读多写少的场景。 内部结构只有一个重入锁,一个数组: /** The l...
阅读(244) 评论(0)

无锁和无等待并发

原文参考:http://rethinkdb.com/blog/lock-free-vs-wait-free-concurrency/,之前看ConcurrentLinkedQueue看到wait-free的东西,百度看到这篇文章,文章比较短,翻译下练手。 有2种类型的非阻塞线程同步算法:无锁和无等待,他们的含义经常被混淆。在无锁系统中,当任何一个特定的计算可能被阻塞一段时间的时候,所有其他的cp...
阅读(531) 评论(0)

JUC源码分析23-队列-ConcurrentLinkedQueue

之前看的队列大都是基于锁来实现阻塞,ConcurrentLinkedQueue采用wait-free算法来实现'无锁'的并发队列。wait-free算法之前没听说过,只听过lock-free,大牛解析说2中不同,具体看参考,有空后面翻译下。 ConcurrentLinkedQueue基于单向链表实现线程安全的无界队列。队列元素遵循FIFO。 看下队列内部结构: /** * Node节点,一个...
阅读(426) 评论(0)

编译JDK源代码,开启Debug信息

看JUC源码的时候,想debug查看一些本地变量,不行,然后百度之,找到一个方法,仅此记录!百分百可以! 用Eclipse Debug,当跟踪进jdk api里时(比如javax.swing包里的类),无法查看某些local filed的值。这是因为jdk里的代码在打包时删除了一些用于调试的信息,以减小安装包的体积。不过可以通过重新编译jdk源代码来恢复此功能。 1.在Eclips...
阅读(452) 评论(0)

JUC源码分析22-队列-SynchronousQueue

SynchronousQueue是一种比较特殊的阻塞队列,不同于之前的阻塞队列,特点为: 1.每次put必须有take的存在,也就是说生产者将一个元素put传递给一个消费者,消费者不存在就put不成功; 2.内部没有容量来维持存放元素,所以size,迭代等一些方法没有意义; 3.使用cas操作,没有使用锁; 4.通过栈(非公平),队(列公平)2中结构来支持公平\非公平策略。 newC...
阅读(397) 评论(0)

Eclipse 控制台中文乱码

一个坑跳了2次,记录下,eclipse中文在控制台打印乱码。run->run configurations->commons->GBK:...
阅读(201) 评论(0)

JUC源码分析21-队列-LinkedBlockingDeque

LinkedBlockingDeque基于双向链表实现的阻塞队列,根据构造传入的容量大小决定有界还是无界,默认不传的话,大小Integer.Max。 实现BlockingDequeue接口,这个接口继承BlockingQueue和Dequeue,看下接口方法: public interface BlockingDeque extends BlockingQueue, Deque { /** ...
阅读(664) 评论(0)

JUC源码分析20-队列-DelayQueue

画个JUC阻塞队列的类关系图,之前都没在意,画一下感觉会清楚很多 DelayQueue是无界的阻塞队列,其特点是实现队列元素的延迟出队,通俗点说就是队列元素可以设置延迟时间,时间不到,就待在队列中,很有意思的东西,感觉跟redis设置过期时间一样。队列元素不容许添加null元素。DelayQueue可以用来实现调度的定时任务或者缓存的过期。 添加的队列元素必须实现Delayed接口: ...
阅读(419) 评论(0)
139条 共7页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:73416次
    • 积分:1471
    • 等级:
    • 排名:千里之外
    • 原创:62篇
    • 转载:76篇
    • 译文:1篇
    • 评论:16条
    最新评论