- 博客(169)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Kafka集成Spring-AcknowledgeMessageListener接口实现
前言因工作需要,需在系统利用Kafka监听接口,实现消息队列中,对消息的消费,首选Kafka,因为看中其超高的吞吐量。基本概念Producer: 特指消息的生产者Consumer :特指消息的消费者Consumer Group :消费者组,可以并行消费Topic中partition的消息Broker:缓存代理,Kafa 集群中的一台或多台服务器统称为 broker。Topic:特指 Kaf
2017-08-17 17:11:59
20747
2
原创 聊聊分布式事务
一、前言为了更加系统、全面、完整的学习事务,也为了完善一下自己的知识框架。以本篇博客为契机,展开对事务的学习。本篇内容包含数据库事务概念、特性分布式事务概念、特性分布式事务常见解决方案二、数据库事务1 何为数据库事务事务(Transaction),一般是指要做的或者所做的事情。在计算机术语中,是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在计算机术语中,事务通常就是指数据库事务。2 特性一个数据库事务通常包含对数据库进行读或者写的操作序列。它的存在主要有以下
2020-11-10 20:45:04
245
1
原创 MySQL技术内幕学习有感(三)——关于InnoDB存储引擎
一、前言InnoDB存储引擎,在之前求职面试的时候,看过很多csdn类似的文章介绍,也知道几个基本特点,自己死记硬背也能在面试或者日常工作中说出个浅显的一二三来,但是真的说起到深层的原理,其实还是属于一知半解的程度,所以,还是需要通过书籍来系统补充一下自己缺失的知识。二、 概述InnoDB是事务安全的MySQL存储引擎,通常来说,InnoDB存储引擎是OLTP应用中核心表的首选存储引擎。它具有如下特点:1 支持行锁设计(写操作时,锁行而不是锁表)2 支持MVCC(Multi-Version Co
2020-07-14 14:55:50
248
原创 MySQL技术内幕学习有感(二)——体系结构与存储引擎
一、前言在工作中,用到最为广泛的数据库,莫过于MySQL,除了开源特性之外,其上佳的可移植性、插件式的存储引擎也是其受欢迎的重要原因之一,本系列就直接按照《技术内幕》章节记录个人的一些学习心得和总结。二、MySQL特性概述MySQL被设计成一个可移植的数据库,所以当前几乎所有的操作系统均可以支持MySQL,虽然各个平台底层实现上有所差异,但是MySQL基本上可以保证在各个平台上的物理结构一致性,从而屏蔽了系统实现上的差异。因此,用户应该可以很好理解MySQL在平台上的运作原理。三、重要概念1、数据
2020-07-08 20:57:09
247
原创 MySQL技术内幕学习有感(一)——起源与概述
一、起源自18年毕业参加工作以来,经历过一些动荡,加上工作繁忙,CSDN博客停更了许久,所以今日打算重启CSDN博客,记录自己的学习心得和总结。二、概述就职阿里期间,见识了许许多多的中间件,不排除一些重复的轮子,阿里的技术确实厉害,但技术再厉害,不内化成自己的,也终究还是徒劳。由于负责的业务偏向后台,对数据库的读写依赖较重,所以需要对MySql进行新一轮的学习,旨在为自己建立一套合理的知识框架,并巩固之前学的一些一知半解的知识。三、学习参考《MySQL技术内幕 InnoDB存储引擎 第2版》
2020-07-08 17:22:06
167
原创 随笔系列之Semaphore
前言:在前段时间,学习JMM以及synchronize、volatile和ReentrantLock之后,本着好奇的心思,想研究一下juc包下的其他并发控制工具,于是乎,便着手Semaphore进行研究。一、什么是SemaphoreSemaphore,翻译过来也叫信号量,也是JUC包下一个重要的并发工具,其核心功能是为了限制并发线程数量,也可以理解为限流。虽然说,翻译过来称之...
2019-08-13 11:24:39
238
原创 (二)Redis数据结构之链表
1 前言 在上一篇文章中,概要介绍了Redis的第一种数据结构SDS(Simple Dynamic String)之后,本文将进一步介绍Redis中的另一种数据结构——链表。2 什么是链表 链表,作为数据结构中的基础结构,理解起来非常简单。以下是摘自百度百科中,对链表的定义。 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的...
2019-07-03 10:05:16
217
原创 (一)Redis数据结构之SDS
1 前言 在开始学习Redis时,除了知道Redis的用处之外,对于Redis的底层数据结构进行深入了解,显得尤为重要。 如果不了解底层数据结构,也将错失体验Redis高性能的美妙之处。2 什么是SDS SDS即简单动态字符串(Simple Dynamic String),是redis自定义的,用于存储字符串的数据结构。这里需要补充说明,C中的字符串只是以字...
2019-07-03 10:02:17
1300
原创 设计模式之装饰器模式VS代理模式
一、装饰器模式1、什么是装饰器模式1) 官方定义: 装饰器模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。2) 特点(1) 装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。(2) 装饰对象包含一个真实对象的引用(reference)(3) 装饰对象接受所有来自客...
2019-01-15 09:46:41
372
原创 关于Java虚拟机二三事(八)---JVM机器指令集及其执行引擎
1.前言 Java虚拟机和真实的计算机一样,运行的都是二进制的机器码;而我们将.java源码编译成.class文件,class文件便是Java虚拟机能够认识的二进制机器码。Java能够识别class文件中的信息和机器指令,进而执行这些机器指令。那么,Java虚拟机是如何运行这些二进制的机器码?本文将就此问题进行讲解。2.Java虚拟机的运行时数据区 在讲解本节知识之前,先来回顾一下Ja...
2018-05-12 17:56:50
1388
2
原创 关于Java虚拟机二三事(七)---类文件结构(下)
1.前言 class文件存储格式中对方法的描述与对字段的描述几乎采用了完全一致的方式,方法表的结构如同字段表一样,依次包括了访问标注(access_flag)、名称索引(name_index)、描述符索引(descriptor_index)、属性表集合(attributes)几项。2. 概述 方法表集合是指由若干个方法表(method_info)组成的集合,对于在类中定义的若干个,经过...
2018-05-09 17:22:56
250
原创 关于Java虚拟机二三事(六)---类文件结构(中)
1.前言 在上节内容中,介绍了class文件中的魔数、主次版本号、常量池、访问标志以及类索引,父类索引和接口索引集合。本节将进一步介绍class文件中剩余部分:字段表集合、方法表集合以及属性表集合。2.字段表集合 字段表(field_info)用于描述接口或者类中声明的变量。字段(field_info)包括类级变量以及实例级变量,但不包括方法内部声明的局部变量。例如Java中描述的一个...
2018-05-09 11:24:32
233
原创 关于Java虚拟机二三事(五)---类文件结构(上)
1.前言 当编写完一段Java代码并保存以后,其实Java代码会保存在以.Java为扩展名作为结尾的文件中,如test.java,而这个文件若想在JVM上执行,则必须先利用javac编译器进行编写,形成所谓的“字节码(ByteCode)文件”,即接下来要分析的重点内容---Class类文件(.class文件)。然后,JVM虚拟机才会执行.class文件。 具体过程如上图所示 ...
2018-05-07 17:05:29
409
原创 项目研发心得总结
前言: 近期因学校实验室项目需求,组建6人小团队研发一个网站,框架采用.NET MVC + EF ,数据库为SQL Server。 简单总结一二。一、数据库设计方面 网站的根基,数据库。最开始源自于和甲方进行需求沟通,由于甲方节奏较缓慢,在未完全确定需求的情况下,贸然开始数据库设计,采坑如下: 1. 建表时,字段含义不明确。 1.1 字...
2018-04-27 17:08:31
1577
1
转载 Java多线程学习
此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢? 本文主要讲java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的线程函数用法、概述等。首先让我们来了解下在操作系统中进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--...
2018-04-22 17:00:06
132
转载 【Redis缓存机制】1.Redis介绍和使用场景
(1)持久化数据库的缺点平常我们使用的关系型数据库有Mysql、Oracle以及SqlServer等,在开发的过程中,数据通常都是通过Web提供的数据库驱动来链接数据库进行增删改查。那么,我们日常使用的数据库的数据都储存在哪里呢?我们以Mysql为例。打开我们Mysql所在的文件夹目录下的data文件夹,如下所示:我们可以发现,里面都是我们创建的数据库,打开其中一个,可以看到我们创建的表,他们以文...
2018-04-21 16:23:34
200
转载 Spring系列之beanFactory与ApplicationContext
一、BeanFactoryBeanFactory 是 Spring 的“心脏”。它就是 Spring IoC 容器的真面目。Spring 使用 BeanFactory 来实例化、配置和管理 Bean。BeanFactory:是IOC容器的核心接口, 它定义了IOC的基本功能,我们看到它主要定义了getBean方法。getBean方法是IOC容器获取bean对象和引发依赖注入的起点。方法的功能是返回...
2018-04-21 15:59:03
230
转载 Spring系列之依赖注入的方式
一、依赖注入方式 对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,spring的依赖注入有3种方式:·使用属性的setter方法注入 ,这是最常用的方式;·使用构造器注入;·使用Filed注入(用于注解方式)。1.使用属性注入 属性注入即通...
2018-04-20 19:26:13
153
原创 web.xml中servlet配置及其含义
这里其实最想说的是配置中各节点的含义:<!-- 配置一个servlet --><!-- servlet的配置 --><servlet> <!-- servlet的内部名称,自定义。尽量有意义 --> <servlet-name>ServletDemo</servlet-name> <!-- s...
2018-04-14 17:11:39
273
转载 web.xml 有什么用?
1.每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗? 一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。 web.xml文件是用来初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。 当你的web工程没用到这...
2018-04-14 17:02:29
218
原创 spring事物配置,声明式事务管理和基于@Transactional注解的使用
事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性。spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务管理建立在A...
2018-03-20 23:02:37
157
原创 关于Java虚拟机二三事(四)---内存分配与回收策略
前言 上篇文章中,已经较为详细地介绍了虚拟机中垃圾收集器体系以及运行原理,本文将继续探讨给对象分配内存的具体策略。 对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区,如果启动了本底线程分配缓存(TLAB),则将按线程优先在TLAB上分配。少数情况下,也可能直接分配至老年代中,分配的规则并非固定,其细节取决于当前所使用的哪一种垃圾收集器组合,还
2018-01-05 17:01:39
342
原创 关于Java虚拟机二三事(三)---垃圾回收算法及回收器
前言 在介绍了对象的创建、定位以后,具体的使用则需要根据不同的业务逻辑来确定,这部分是比较自由的。但正如前文所说,Java程序员将内存的管理交托给了JVM。因此此章节将进一步介绍Java垃圾收集器及内存分配策略的相关知识。 Java语言出来之前,大家都在拼命的写C或者C++的程序,而此时存在一个很大的矛盾,C++等语言创建对象要不断的去开辟空间,不用的时候有需要不断的去释放控件,既要写构造函数,
2017-12-26 10:00:39
358
原创 关于Java虚拟机二三事(二)---对象创建及定位
前言: 在了解了JVM内存的结构之后,我们可以更进一步了解,对象在创建到销毁时,内存分配及回收的具体过程和策略。此处先学习一下Java对象的创建过程。 Java虚拟机执行过程中,对象的生命周期可以大概分成三个阶段:对象的创建、对象的使用、对象的销毁三个阶段,具体可如下图所示。 上图给出的是较为概要的对象生命周期。并针对对象的创建进行了具体的步骤描述: 1、当Java源文
2017-12-24 11:36:03
542
原创 关于Java虚拟机二三事(一)---Java技术体系及JVM内存结构
前言作为一个爱好Java的程序猿,自然少不了对JVM的学习和研究,《深入理解Java虚拟机》一书,大概从头到尾完整地看了四五遍,有些地方感觉讲的粒度比较粗,但只是少数,总体而言,这本书讲解的非常棒,不少东西都是看了第二次,甚至第三次之后才有了进一步的理解。走进Java-Java技术体系从广义上讲,Clojure、JRuby、Groovy等运行于Java虚拟机上的语言及其相关程序都属于Java技术体系
2017-12-22 17:33:06
381
原创 计算机组成与设计(二)——指令:计算机指令 (一)
一、 前言: 要计算机服从指挥,就必须用计算机的语言 1. 指令:计算机语言中的基本单词称为指令。 2. 指令集: 一个给定的计算机体系结构所包含的指令集合。 3. 尽管机器语言种类繁多,但彼此之间十分类似,因此其差异性更像人类语言中的“方言”,而并非独立语言,因此,了解其中一种机器语言之后,对其他机器语言即可触类旁通。
2017-12-09 22:00:02
3775
1
原创 计算机组成与设计(一)——计算机概要与技术
1.计算机系统结构设计8个思想 1.1 面向摩尔定律设计 摩尔定律指出,单芯片上的集成电路,每18~24个月翻一番,而计算机设计时间周期长,因此需要提前预估好计算机设计完成时候的工艺水平 1.2 抽象简化设计 计算机架构师必须发明能够提高产量的技术,否则设计时间也将会向资源规模一样按照摩尔定律增长,因此,需要利用抽象的设计思想
2017-11-27 22:37:23
641
原创 实习阶段性总结
时间里程碑 事件2017年6月1日前收到链家网大数据部Java研发工程师实习面试邀请2017年6月23日以实习生身份正式到岗实习2017年7月 熟悉链家网内部开发规范,开发环境2017年8月 熟悉负责的内部业务系统(B端)2017年9月 参与开发各类功能,有难有易,多善于总结,重点在于设计,而非编码。2017年10
2017-11-24 10:49:20
694
转载 如何给老婆解释什么是Restful
老婆经常喜欢翻看我订阅的技术杂志,她总能从她的视角提出很多有趣的问题。一个悠闲的周日下午,她午觉醒来,又习惯性的抓起这个月的杂志,饶有兴趣地看了起来。果不其然,看着看着,她又对我发难了,“Restful是什么呀,老公?是restaurant的形容词吗,突然就觉得好饿了啊……”作为一个合格的程序员,我一直把能够将一项技术讲给老婆听,并且能给她讲懂,作为我已经掌握了这项技术的标
2017-11-02 09:31:35
275
原创 生啃“编译原理”(一)——引论
开篇: 做为软件工程专业的一员,在本科时候,关于《编译原理》这门课,没有开,没有开,没有开。。。只能通过自己学习来深入了解编译原理。并希望能够达到实现一个简单编译器的地步。1 语言处理器 关于语言处理器,其本身就是一个大程序,而这个大程序的主要目的在于翻译源程序。 以Java为例,有时候,我们可能会有疑问,当写完一段或复杂或简单的业务逻辑程序之
2017-10-31 11:06:52
311
转载 Linux Tomcat日志查看实用命令
实用命令: 查看tomcat运行日志tail -f catalina.out通过关键字搜索查看日志cat jeewx-2015-09-20.log | grep 验证码查看固定时间日志cat jeewx-2015-09-20.log | grep '2015-09
2017-10-21 11:11:59
217
转载 Java 8 Lambda实现原理分析
为了支持函数式编程,Java 8引入了Lambda表达式,那么在Java 8中到底是如何实现Lambda表达式的呢? Lambda表达式经过编译之后,到底会生成什么东西呢? 在没有深入分析前,让我们先想一想,Java 8中每一个Lambda表达式必须有一个函数式接口与之对应,函数式接口与普通接口的区别,可以参考前面的内容,那么你或许在想Lambda表达式是不是转化成与之对应的函数式接口的一个实现类
2017-10-19 10:38:23
500
转载 通俗易懂地介绍——MapReduce
昨天,我在Xebia印度办公室发表了一个关于MapReduce的演说。演说进行得很顺利,听众们都能够理解MapReduce的概念(根据他们的反馈)。我成功地向技术听众们(主要是Java程序员,一些Flex程序员和少数的测试人员)解释了MapReduce的概念,这让我感到兴奋。在所有辛勤的工作之后,我们在Xebia印度办公室享用了丰盛的晚餐,然后我径直回了家。回家后,我的妻子(Supriya
2017-10-18 18:17:25
284
转载 Java8:Lambdas(二)学习怎样去使用lambda表达式
Java8:Lambdas(二)学习怎样去使用lambda表达式原文链接 作者:Ted Neward 译者:赵峰Java SE 8的发布很快就到了。伴随着它来的不仅仅是新的语言lambda表达式(同样被称为闭包或匿名方法)——伴随着一些语言特性支持——更重要的是API和library的增强将会使传统的Java核心libraries变的更易于使用。其中大多数的增强和补充是在
2017-10-17 22:36:17
266
原创 Spring集成Quartz--ScheduleThreadPool详解
简介关于ScheduledThreadPoolExecutor大致特性,JDK1.8中是这么介绍的。 A ThreadPoolExecutor that can additionally schedule commands to run after a given delay, or to execute periodically. This class is
2017-10-11 11:12:06
2118
转载 35 个 Java 代码性能优化总结
前言代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每
2017-10-08 17:50:03
186
转载 Java I/O 操作及优化建议
Java I/OI/O,即 Input/Output(输入/输出) 的简称。就 I/O 而言,概念上有 5 种模型:blocking I/O,nonblocking I/O,I/O multiplexing (select and poll),signal driven I/O (SIGIO),asynchronous I/O (the POSIX aio_functions)。不同的操作
2017-10-08 17:47:49
227
转载 写出优质Java代码的4个技巧
我们平时的编程任务不外乎就是将相同的技术套件应用到不同的项目中去,对于大多数情况来说,这些技术都是可以满足目标的。然而,有的项目可能需要用到一些特别的技术,因此工程师们得深入研究,去寻找那些最简单但最有效的方法。在前一篇文章中,我们讨论了必要时可以使用的四种特殊技术,这些特殊技术可以创建更好的Java软件;而本文我们将介绍一些有助于解决常见问题的通用设计策略和目标实现技术,即:只做有目的性
2017-09-28 11:49:22
191
原创 Spring集成Quartz---Executor框架
ThreadPool衍生开来将还有一个特定的Executor框架。下文将详细展开讲。1.Executor框架简介1.1 概述在程序运行过程中,创建和销毁线程需要一定的开销,因此如果我们为每一个任务创建一个新线程来执行,这些线程的创建及销毁将消耗大量的计算机资源。尤其是在线程任务不是特别重的情况下,系统的资源有可能极大的耗费在线程的创建与销毁上。因此,我们需要一种容器去集中的
2017-09-28 08:49:25
447
原创 Spring集成Quartz---具体场景应用
Java并发编程阶段,突然接触到了定时调度任务这一概念,恰巧在实习期间有过运用,因此特写此博客以记录,欢迎指正和讨论。 ——前言本文将分以下四点进行讨论。篇幅过长的话,可能分其他章节。Quartz基本概念一、quartz核心概念 先来看一张图: 对于上图中各个部分的概念解释如下: scheduler:任务调度器 trig
2017-09-27 18:28:07
1014
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人