- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 软件质量评估
http://kaelzhang81.github.io/2017/06/18/%E8%AF%A6%E8%A7%A3%E5%9C%88%E5%A4%8D%E6%9D%82%E5%BA%A6/
2020-05-15 16:03:40
167
翻译 Gartner技术成熟度曲线
Interpreting technology hypeWhen new technologies make bold promises, how do you discern the hype from what’s commercially viable? And when will such claims pay off, if at all? Gartner Hype Cycles p...
2020-01-21 10:29:37
627
转载 事务
概念MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性...
2019-12-29 21:51:23
145
转载 DDD简介
DDD是什么领域驱动设计(Domain Driven Design) 是一种从系统分析到软件建模的一套方法论。以领域为核心驱动力的设计体系。为什么需要DDD面向对象设计,数据行为绑定,告别贫血模型 优先考虑领域模型,而不是切割数据和行为 准确传达业务规则 代码即设计DDD的一些概念战略设计:限界上下文、上下文映射图、子域战术设计:聚合、实体、值对象、资源库、领域服...
2019-11-03 23:56:55
8826
原创 token cookie session
HTTP是一种无状态协议,服务器没有办法单单从网络连接上面知道访问者的身份cookieCookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态...
2019-10-27 20:22:13
127
转载 RPC基础
读了这篇文章:https://www.cnblogs.com/crazylqy/p/7995395.html,总结一下为什么要用RPC微服务化,一个系统不可能只在一个服务之内RPC与http的优势:长链接,减少网络开销;http重度依赖DNS+MGW+Nginx,存在单点风险;基本步骤服务消费方(client)调用以本地调用方式调用服务; client stub接收到调用...
2019-07-28 20:48:40
136
原创 【深入理解Java虚拟机】类加载机制
类加载(Class Loading)是一种机制,他描述的是将字节码以文件形式加载到内存再经过连接、初始化后,最终形成可以被虚拟机直接使用的Java类型地过程类加载的过程Class Loading 包含了加载(Loading)、连接(Linking)、初始化(Initialization)三大部分,其中Linking又包含了三个部分:校验(Verification)、准备(Preparati...
2019-07-14 20:19:29
126
原创 【深入理解Java虚拟机】Java内存模型
首先注意区分JVM内存结构、Java内存模型前者是jvm为了管理内存,对内存区域的一个划分,分为线程共享的:堆+元空间不共享的:本地方法栈+虚拟机栈+程序计数器参考:https://blog.csdn.net/raichen_wang/article/details/88922034后者是为多线程通信而设计的模型 Java Memory Model(JMM)内存模型概念...
2019-07-07 17:42:29
227
原创 java反射
概念在程序运行时动态加载一个类对于任意一个类,都能够知道这个类的属性和方法 对于任意一个对象,都能够调用它的任何方法和属性关键字:运行时、动态补充知识点静态编译:在编译时确定类型,绑定对象 动态编译:运行时确定类型,绑定对象用途主要用于各种框架之中case1:JDBC项目底层有时是用mysql,有时用oracle,需要动态地根据实际情况加载驱动类通过Clas...
2019-06-23 17:26:06
121
原创 CompletableFuture
Future接口可以构建异步应用,但依然有其局限性。它很难直接表述多个Future 结果之间的依赖性。实际开发中,我们经常需要达成以下目的:将两个异步计算合并为一个——这两个异步计算之间相互独立,同时第二个又依赖于第一个的结果。 等待 Future 集合中的所有任务都完成。 仅等待 Future集合中最快结束的任务完成(有可能因为它们试图通过不同的方式计算同一个值),并返回它的结果。...
2019-04-06 17:08:31
127
原创 Metaspace
随着 Java8 的到来,我们再也见不到永久代了。但是这并不意味着类的元数据信息也消失了。这些数据被移到了一个与堆不相连的本地内存区域,这个区域就是我们要提到的元空间。这项改动是很有必要的,因为对永久代进行调优是很困难的。永久代中的元数据可能会随着每一次 Full GC 发生而进行移动。并且为永久代设置空间大小也是很难确定的,因为这其中有很多影响因素,比如类的总数,常量池的大小和方法数量等。...
2019-03-31 02:38:01
534
原创 JVM调优方法论
新服务参数设置新上线一个java服务,或者是RPC或者是WEB站点, 内存的设置该怎么设置呢?设置成多大比较合适,既不浪费内存,又不影响性能呢?分析:依据的原则是根据Java Performance里面的推荐公式来进行设置。具体来讲:Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍永久代 PermSize...
2019-03-31 02:18:52
375
原创 【深入理解Java虚拟机】垃圾收集器
垃圾收集器可以分为三类新生代:SerialPraNewParallel Scavenge 老年代:Serial OldParallel OldCMS 回收整个Java堆(新生代和老年代):G1可以实现的排列组合为:新生代垃圾收集器1.Serial串行收集器-复制算法Serial收集器是新生代单线程收集器,优点是简单高效,算是最基本、发展历史最悠久的收集器。它在进行...
2019-03-31 01:47:10
149
原创 【深入理解Java虚拟机】垃圾回收算法
目录对象已死吗引用垃圾回收算法标记-清除复制算法标记整理分代收集算法垃圾回收算法选择垃圾回收机制垃圾回收类型对象已死吗引用计数法:无法解决循环 可达性分析:GC Roots作为起点,没有任何引用链相连遍认为不可达引用强引用:Object obj = new Object,只要存在就不会回收 软引用:描述还有用但非必须的对象,发生内存溢...
2019-03-31 01:23:32
664
原创 【深入理解Java虚拟机】JVM内存结构
注意区分内存模型和内存结构Linux与JVM内存关系推荐看的一篇文章:http://www.importnew.com/14486.htmlJVM以一个进程(Process)的身份运行在Linux系统上,了解Linux与进程的内存关系,是理解JVM与Linux内存的关系的基础。下图给出了硬件、系统、进程三个层面的内存之间的概要关系。JVM本质就是一个进程,因此其内存模型也有进...
2019-03-31 00:49:22
325
转载 何时会出现FullGC
堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示:从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但...
2019-03-28 07:59:48
203
原创 spring mvc参数绑定
使用HttpServletRequest对象获取参数@Controllerpublic class HelloController { //请求的url路径 @RequestMapping("/hello.do") public ModelAndView hello(HttpServletRequest request){ System.out.println("Hello Co...
2019-03-23 15:27:15
140
原创 spring统一异常处理
Controller层为处于请求处理的最顶层,再往上就是框架代码的。因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码Spring 统一异常处理有 3 种方式,分别为:使用 @ ExceptionHandler 注解 使用 @ControllerAdvice 注解 实现 HandlerExceptionResolver 接口使用 @ Exce...
2019-03-22 21:06:24
184
原创 GC日志分析
目录读日志GC (minor )日志Full GC 日志concurrent mode failurepromotion failureAllocation FailureEvacuation FailureHumongous Allocation读日志GC (minor )日志Full GC 日志concurrent mode failur...
2019-03-14 14:27:14
1111
转载 分布式锁
线程锁在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线程结束同步...
2019-02-24 21:44:12
188
原创 dump分析
目录一 查找java进程id二 生成堆转储快照三 分析内存工具使用场景解决问题使用预备知识点1:Shallow Size Retained Size Heap Size Allocated预备知识点2:支配树(Dominator tree)预备知识点3:Top Consumers预备知识点4:OQL根据Leak Suspects快速查看泄露的可疑点...
2019-02-24 17:38:56
1436
原创 CAP
CAP分布式领域CAP理论Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容错性) 可靠性...
2019-02-24 17:36:34
242
构建高性能WEB站点
2015-05-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人