简述部分技术学习分享(第一篇)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LYTIT/article/details/88104345

随着目前技术不断更新,我们所使用的技术也越来越多,想要学习所有技术,成本也是越来越高,几乎是不可能的一件事,所有我们只能针对选择自己感兴趣的技术去学习,下面是我个人学习的重点技术分享:

一、Redis哲学三连:是什么?为什么?怎么用?

1、Redis是什么?
Redis是一个完全免费开源的,使用ANSI C语言编写,遵循BSD协议,可基于内存也可持久化的日志型,key-value数据库。
2、为什么使用Redis?
1)、当数据量的总大小一个机器放不下时;
2)、数据索引一个机器的内存放不下时;
3)、访问量(读写混合)一个实例不能满足;
4)、单机时代的数据库和程序放在一个服务器上,如果数据库的服务器数据越来越多导致数据访问很慢,程序运行效率很低,用户体验差;
5)、缓存时代数据缓存到内存,然后定期存储到数据库或者持久存储设备中,提升数据的访问效率
6)、易于扩展
7)、存储数据量大
8)、多样灵活的数据模型
3、Redis怎么用
源代码:https://github.com/StevenLdh/RedisTutorial.git

二、Redis的数据存储方式、操作方法、读写操作在底层都是如何实现

Redis提供持久化功能,把数据以文件的方式持久化到硬盘中,但目前大多数持久化存储还是使用的关系型数据库;redis的持久化还是用于保证数据的安全性。
1、Snapshotting即快照方式,设置一段时间修改数据后存储到硬盘上;缺点是,如果redis down掉的会失去最后一次修改
2、aof方式是以日志方式来存储数据,即它会每次对Redis操作都会对应的一条记录

三、关系型数据库表的存储结构

关系型数据是指以关系数据模型来表示数据,关系型数据是以二维表的形式来描述数据。关系型数据库是存储在计算机上的、可以共享,有组织的关系型数据集合;关系型数据库是由关系数据结构,关系数据集合,关系完整性约束。

四、什么是最小堆?什么是最大堆?在堆中怎么插入一个元素?

最大堆和最小堆都是完全二叉树,最大堆是所有节点元素总数都大于叶子节点数,最小堆是节点元素都要小于左右孩子,但是左右大小关系没有区分。

五、IOC、AOP等常用设计理念

1、IOC(控制反转、依赖注入) spring .net框架、Java Spring框架,
1)、控制反转:控制反转用于解耦合,通过控制反转来连接其他接口实现;
2)、依赖注入:在程序执行过程动态加入实现的对象,注入对应关系;
实现都会影响程序的效率和开发难度以及开发的速率(需要培训)需要权衡
2、AOP(面向切面编程) Java spring、struts
1)、面向切面编程,主要是需要程序共同点抽象剥离编程,提高代码的扩展性,重用率,降低代码,耦合度防止代码重复;
2)、2种实现方式:一是动态代理技术,利用动态消息截取,对消息进行装饰,以取代原有对象的执行方式;二是静态植入方式,引入特定方面的语法创建
3、AOP技术的优势
AOP技术的优势是显而易见的。在面向对象的世界里,人们提出了各种方法和设计原则来保障系统的可复用性与可扩展性,以期建立一个松散耦合、便于扩 展的软件系统。例如GOF提出的“设计模式”,为我们提供了设计的典范与准则。设计模式通过最大程度的利用面向对象的特性,诸如利用继承、多态,对责任进 行分离、对依赖进行倒置,面向抽象,面向接口,最终设计出灵活、可扩展、可重用的类库、组件,乃至于整个系统的架构。在设计的过程中,通过各种模式体现对 象的行为、暴露的接口、对象间关系、以及对象分别在不同层次中表现出来的形态。然而鉴于对象封装的特殊性,“设计模式”的触角始终在接口与抽象中大做文 章,而对于对象内部则无能为力。
通过“横切”技术,AOP技术就能深入到对象内部翻云覆雨,截取方法之间传递的消息为我所用。由于将核心关注点与横切关注点完全隔离,使得我们能够 独立的对“方面”编程。它允许开发者动态地修改静态的OO模型,构造出一个能够不断增长以满足新增需求的系统,就象现实世界中的对象会在其生命周期中不断 改变自身,应用程序也可以在发展中拥有新的功能。
设计软件系统时应用AOP技术,其优势在于:
(一)在定义应用程序对某种服务(例如日志)的所有需求的时候。通过识别关注点,使得该服务能够被更好的定义,更好的被编写代码,并获得更多的功 能。这种方式还能够处理在代码涉及到多个功能的时候所出现的问题,例如改变某一个功能可能会影响到其它的功能,在AOP中把这样的麻烦称之为“纠结 (tangling)”。
(二)利用AOP技术对离散的方面进行的分析将有助于为开发团队指定一位精于该项工作的专家。负责这项工作的最佳人选将可以有效利用自己的相关技能和经验。
(三)持久性。标准的面向对象的项目开发中,不同的开发人员通常会为某项服务编写相同的代码,例如日志记录。随后他们会在自己的实施中分别对日志进 行处理以满足不同单个对象的需求。而通过创建一段单独的代码片段,AOP提供了解决这一问题的持久简单的方案,这一方案强调了未来功能的重用性和易维护 性:不需要在整个应用程序中一遍遍重新编写日志代码,AOP使得仅仅编写日志方面(logging aspect)成为可能,并且可以在这之上为整个应用程序提供新的功能。
总而言之,AOP技术的优势使得需要编写的代码量大大缩减,节省了时间,控制了开发成本。同时也使得开发人员可以集中关注于系统的核心商业逻辑。此外,它更利于创建松散耦合、可复用与可扩展的大型软件系统。

以上只是部分技术分享,后期会陆续更新,如有不足之处,还望不吝赐教!

猜你喜欢

转载自blog.csdn.net/LYTIT/article/details/88104345