- 博客(15)
- 收藏
- 关注
原创 JVM垃圾回收——新生代,老年代,永久代,Minor GC,Full GC
参考资料:《深入理解Java虚拟机》——周志明 https://blog.csdn.net/u010796790/article/details/52213708 https://blog.csdn.net/lirenzuo/article/details/77749925 https://www.cnblogs.com/ygj0930/p/6522828.html周志明先生,在《深入...
2020-03-21 14:27:54 7123
原创 自定义持久层框架
为什么要自定义持久层框架?为什么要自定义持久层框架?Mybatis,hibernate这些开源的持久层框架,它不香吗?是的,这些开源框架都非常优秀,所以我们自定义实现一个持久层框架并不是为了在生产环境中去使用,而是在梳理,编写自定义持久层框架的过程中,加深对持久层框架原理的理解,帮组我们在日常开发工作中,更好的去使用这些持久层框架。我这边常用的是Mybatis框架,本文模仿Mybatis实现一个...
2020-03-21 14:24:05 555
原创 Paxos算法P2c是如何满足P2b的?
声明:本文仅是博主在阅读《从Paxos到zookeeper分布式一致性原理与实践》一书之后的个人理解,如有错误,请各位道友不吝赐教。《从Paxos到zookeeper分布式一致性原理与实践》书中,满足P2b的条件,即满足P2a;满足P2a的条件,即满足P2,这样的过程,比较好理解,本文就不再赘述了,主要来分析一下,满足P2c为什么就可以满足P2b?首先,我们要明确两个前提:一个Accept...
2020-03-19 22:47:22 562
原创 分布式集群时钟同步问题及其解决方案
集群时钟不同步导致的问题时钟此处指服务器时间,如果集群中各个服务器时钟不⼀致势必导致⼀系列问题。举个例子,电商⽹站业务中,新增⼀条订单,那么势必会在订单表中增加了⼀条记录,该条记录中应该会有“下单时间”这样的字段,往往我们会在程序中获取当前系统时间插⼊到数据库或者直接从数据库服务器获取时间。那我们的订单⼦系统是集群化部署,或者我们的数据库也是分库分表的集群化部署,然⽽他们的系统时钟缺不⼀致,⽐...
2020-03-08 17:33:27 1735
原创 内存溢出,栈溢出以及内存泄露
内存溢出(OutOfMemoryError):应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。内存溢出的类型:(1)java.lang.OutOfMemoryError: PermGen space原因:一般是程序中web-inf/lib下引入了大量的第三方Jar或class,使java虚拟机装载类的空间不够,JVM中永久代(Per...
2019-04-13 22:42:53 2089
原创 多线程死锁的预防和避免&开发中的注意事项
死锁的定义在一组进程发生死锁的情况下,这组死锁进程中的每一个进程,都在等待另一个死锁进程所占有的资源。或者说每个进程所等待的事件是该组中其他进程释放所占有的资源。举个例子:如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。这时线程A获取了锁a,线程B获取了锁b,线程A想要继续获取锁b,但是锁b被线程B占有;线程B想要继续获...
2019-04-07 20:44:57 576
原创 线程池的好处&线程池框架Executor
线程池的好处?为什么使用线程池? 服务端的应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。现在服务器的CPU一般都是多核的,如果我们在面对巨大的请求时,还是以单线程的方式去处理这样的一个任务,显然它的耗时是我们所无法接受的,而且不能发挥我们服务器多核CPU的优势。那么我们便会采用多线程的方式去处理这样的场景,我们很自然的能够想到使用new Thr...
2019-03-24 14:09:05 1025
原创 为什么要使用Spring?
为什么要使用Spring?(Spring的设计目标是什么?Spring解决了什么样的问题,让我们如此推崇?)很多书籍对于Spring的普遍解释是用来替代更加重量级的企业级Java技术,尤其是EJB,Spring为开发者提供了一个一站式的轻量级应用开发框架(平台)。Spring是技术发展的产物,我们年轻的一代学者没有经历过三层模型,没有经历过EJB,或许真的很难对Spring...
2019-03-17 15:53:06 705
转载 Java设计的六大原则
听说Java设计有六大心法,23种招式,之前居然跳过了心法,先拜读了招式,在此学习一下心法,之后再将23种招式再修炼一遍。1.开闭原则(Open Close Principle)定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 开放-封闭原则的意思就是说,你设计的时候,时刻要考虑,尽量让这个类是足够好,写好了就不要去修改了,如果新需求来,我们增加一些类就完事了,原来...
2019-01-01 20:38:27 327
转载 序列化与反序列化
java.io.Serializable引发的问题——什么是序列化?在什么情况下将类序列化? 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implemen...
2018-11-29 21:43:12 143
转载 存储过程简介
什么是存储过程:存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了。存储过程的好处:1.由于数据库执行动作时,是先编译后执行的。然而存储过程是一个编译过的代码块,所以执行效率要比T-SQL语句高。2.一个存储过程在程序在网络中交互时可以替代...
2018-11-29 21:40:50 210
转载 SQL语句执行过程详解
一条sql,plsql的执行到底是怎样执行的呢?一、SQL语句执行原理:第一步:客户端把语句发给服务器端执行当我们在客户端执行 select 语句时,客户端会把这条 SQL 语句发送给服务器端,让服务器端的进程来处理这语句。也就是说,Oracle 客户端是不会做任何的操作,他的主要任务就是把客户端产生的一些 SQL 语句发送给服务器端。虽然在客户端也有一个数据库进程,但是,这个进程的作...
2018-11-18 13:45:00 499
转载 AWR报告详细分析
AWR 是 Oracle 10g 版本 推出的新特性, 全称叫Automatic Workload Repository-自动负载信息库, AWR 是通过对比两次快,照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分。 WORKLOAD REPOSITORY report for DB Name DB Id ...
2018-11-18 13:42:24 2783
转载 提问的智慧
提问的智慧,一个好的问题会让人乐于回答,一个愚蠢的问题只会让人反感!文章说的虽然是黑客,但是我认为生活学习中,同样适用! --------------------------------- 在黑客世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度,同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案。 首先你必须明白,黑客们只偏爱艰巨...
2016-10-13 19:43:48 295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人