逻辑结构

技术架构的战略和战术

无人久伴 提交于 2019-12-03 22:41:31
技术架构,是将产品需求转变为技术实现的过程。技术架构解决的问题包括了如何进行纯技术层面的分层、开发框架选择、语言选择(这里以 JAVA 语言为主)、涉及到各自非功能性需求的技术点(安全、性能、大数据)。技术架构是确定组成应用系统实际运行的技术组件、技术组件之间的关系,以及部署到硬件的策略。 技术架构面临最大的挑战是“不确定性”。在技术架构上,很多时候就会面临这种选择。是要选择业界最新的技术?还是选择团队最熟悉的技术?如果选择最新的技术,遇到新技术出了问题怎么解决?如果选择目前熟悉的技术,后续技术演进怎么办?这些都是架构师在做技术架构过程中需要考虑的。 业务在千变万化、技术在层出不穷,没有一套通用的技术架构模式来适用所有的系统。那么,我们如何保证在做技术架构时,能够实现一个稳定、出色的系统。面对这些“不确定性”时的架构设计问题,这里从战略和战术两个层面来提供一些设计原则。战略层提供的是技术架构的方法和思路,属于顶层设计;战术层提供的是技术架构的技术实践方式,更偏向详细设计。 战略层设计原则 战略层的设计原则就是:合适原则、简单原则、演化原则。 1.1 合适原则 技术人员有一种很强的技术情怀,就是在做设计的过程中,很希望挑战新的技术、在项目中采用最新的框架、或者自己重造一个比业界的还要牛的轮子。这样才能够显示出自己的优秀,以至于不让自己显的那么平庸。比如

MySql逻辑结构简介

给你一囗甜甜゛ 提交于 2019-12-03 11:16:43
上篇文章《 MySql逻辑结构简介 》我们聊到了存储引擎,可以说MySQL可插拔的多元化存储引擎给我们的使用者带来了很灵活的选择。 这篇文章我们来聊一下目前主流的两种存储引擎MyISAM和InnoDB的区别。 MyISAM InnoDB 外键 不支持 支持 事务 不支持 支持 锁表 表锁,即使操作一条记录也会锁住整个表, 不适合高并发的操作 行锁,操作时只锁某一行,不对其它行有影响, 适合高并发的只操作 缓存 只缓存索引, 不缓存真实数据 不仅缓存索引还 要缓存真实数据 ,对内存要求较高,而且内存大小对性能有决定性的影响 占用空间 表空间占用 小 表空间占用 大 关注点 性能 ,查询速度快 事务 阿里巴巴,淘宝用哪个? 前期 :阿里巴巴大部分MySQL数据库其实使用的是Percona的Xtradb原型加以修改。 Percona公司为MySQL数据库服务器进行了改进,新建了一款存储引擎叫Xtradb,这款存储引擎从性能上完全可以替代Innodb,在功能和性能上较MySQL有着很显著的提升, 该版本提升了在高负载情况下的InnoDB的性能,为DBA提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。 现在 :2016年云栖大会·北京峰会上,阿里云 宣布启动了 AliSQL、AliRedis 开源项目, AliSQL 是基于MySQL官方版本的一个分支

写了10年JAVA代码,为何还是给人一种乱糟糟的感觉?

落花浮王杯 提交于 2019-12-03 08:58:31
接触过不少号称写了10多年代码的程序员,可经常还是会发现他们的代码给人一种乱糟糟的感觉,那么如何才能写出让同事感觉不那么乱的代码呢? 一、为什么要写这篇文章 在开篇之前先说明下为什么要写这篇文章?在Java的世界里MVC软件架构模式绝对是经典的存在(PS:MVC是一种软件架构方式并不只有Java有),如果你是在最近十年前后进入Java的编程世界,那么你会发现自己这些年似乎从来没有逃离MVC架构模式的牢笼,只不过换着使用了不同的MVC框架,如早期的Struts1、Struts2以及现在几乎一统江湖的Spring MVC(少数自行封装MVC框架的公司除外)。 而随着互联网技术的发展,特别是Ajax等富客户端技术的发展,前端技术逐步形成了一套体系,并且逐步从后端代码(如JSP)中剥离出来,从而形成了现在普遍流行的前后端分离模式(这也是一段时间内为什么前端工程师会出现大量需求的原因),而这也对传统的MVC模式产生了一点小的改变,因为现在基于Java的后端服务中很少会有大量处理复杂界面逻辑的代码出现,因此MVC中的V(View)这一层就逐步被各类前端技术所替代,如AngularJS、React等。 所以现在的Java服务端绝大部分情况下只是在处理M(Model)+C(Controller)的逻辑,而从概念上来看,好像Model代表的就是数据模型、而C则是一种控制层逻辑,所以很多人

金字塔原理读后感

天大地大妈咪最大 提交于 2019-12-03 00:59:50
完成了《金字塔原理》的阅读,看到这个书名 XXX 原理,感觉深奥难懂,晦涩难懂,本菜鸟只能举头仰望兮。 刚开始的章节看得是稀里糊涂,囫囵吞枣的,看到中间部分隐约感觉懂了些,处于 似懂非懂 状态。 后面到网上搜索它的相关资料,听完翻译者汪洱讲《麦肯锡金字塔原理实战》才发现它的价值,它在思考、写作、解决问题和演示 PPT 方面都有着指导性的作用,是一本放在案头的工具书, 将 这种理念 渗透到我们的工作乃至日常生活中 。书中的结构很清晰,大量的例子也是我们平时工作生活中经常遇到的 , 所以不难跟 作者产生共鸣。当遇到一个问题感觉无从下手,没有头绪,翻开本书的对应章节,你都会惊叹,哦!原来还可以这样思考,原来还可以这样开始。 对作者的佩服油然而生 。 金字塔原理讲的一种重点突出,逻辑清晰,主次分明的逻辑思路。 逻辑思维能力的锻炼,是在理论与实践矛盾中历练出来的 。国考跟 ” 大厂 ” 笔试,都有各种逻辑思维题,可见 逻辑思维的正确与成熟是一个成年人必有素质与能力。用好金字塔原理,做一个想的清楚,讲的清楚,让别人在 ” 最短理解时间内 ” 了解你的思维想法的人。 平时使用逻辑清晰的金字塔结构,锻炼我们的逻辑思维能力。例如在第九章的结构分析问题中提到的,为了找到有效的结论和方法,普遍的思路是尽可能找到一切有关的资料,等到所有的事实和资料都准备齐全了才开始正式分析。但这样可能会收集到很多资料

数据结构&算法入门

匿名 (未验证) 提交于 2019-12-03 00:22:01
数据结构是存储,组织 数据 的 方式 算法是完成一个目标的 方法 和 ˼· 公司的核心价值点起始与数据,数据可以预判趋势,指导方向,解决实际问题,掌握了公司的数据,就掌握了公司运营和发展的命脉 是做技术的基础中的基础,是高技术人才的必备能力 装逼利器 什么是数据结构,什么是算法,他们之间的关系,抽象数据类型 数据结构: 数据组织的方式 数据的种类有很多种:整型,浮点型,字符串。。。 数据的组织方式:字典,列表,元组。。。 举例子:数据:‘老王’ 10 ‘男’ 组织方式:列表:[‘老王’,10, ‘男’], 字典{name:’老王’,age:18,gender:’男’} 物理形式 顺序表 链表 逻辑形式 集合,线性,树形,图型 算法 解决问题的方法和思路 公司的核心是 数据 ,数据的组织方式是数据结构,怎么利用这些数据结构完成公司的业务需求,就用到了算法 评判算法的好坏的标准:算法复杂度 时间复杂度:完成一个目标所花费的时间 空间复杂度:完成一个目标所花费的内存空间 数据结构+算法 == 程序,也就是业务需求 程序 + 语言 == 编程 抽象数据类型就是将数据和在这个数据上的运算捆绑在一起。 如魂斗罗中的人物是一种数据类型,打子弹是动作,点击空格键使人物发子弹,那么按一下空格键就生成了一个 抽象数据类型:人物打子弹 为什么引入抽象数据类型的概念

《金字塔原理》读书笔记1

匿名 (未验证) 提交于 2019-12-02 23:43:01
2019独角兽企业重金招聘Python工程师标准>>> 1 沟通前的3件事:谁是我的听众?他们想听什么?他们想怎样听? 2 结论先行,以上统下,归类分组,逻辑递进。 3 挖掘对方的 关注点、兴趣点、需求点、利益点 4 回答听众的4类疑问。是什么?为什么?如何做?好不好? 5 金字塔原理 the pyramid priciple 第一篇 表达的逻辑 第一章 为什么要用机子他结构 1 文章中任意层次上的思想必须对其下一层次思想的总结概括 2 每组中的思想必须属于同一逻辑范畴 1 演绎顺序:大前提、小前提、结论 2 时间顺序:第一、第二、第三 3 结构顺序:波士顿、纽约、华盛顿 4 程度顺序:最重要、次重要、等等 第二章 金字塔内部的结构 第三章 如何构建金字塔 转载于:https://my.oschina.net/u/204616/blog/545071 文章来源: https://blog.csdn.net/weixin_34293059/article/details/91989438

数据结构导论1

感情迁移 提交于 2019-12-02 00:44:24
数据结构(Data structure) 是计算机组织数据和存储数据的方式; 是指一组相互之间存在一种或多种特定关系的数据的组织方式和他们在计算机里面存储的方式以及定义在该组数据上的一组操作。 计算机解决问题的步骤 1. 数据的逻辑结构 是指数据及其数据的组织方式。 2.数据结构、算法和程序的关系 算法+数据结构 = 程序 (1976年瑞士计算机科学家尼克劳斯·维尔特[Niklaus Wirth]提出) 1.简单来说,数据结构是计算机组织数据和存储数据的方式。 2.1976年瑞士计算机科学家Niklaus Wirth曾提出一个著名公式 程序 = 算法+数据结构 基本概念和术语 数据(Data):所有能被计算机处理的符号的集合。 数据元素(Data Element):是数据这个集合中的一个个体即数据的基本单位。 数据项(Data Item):数据元素常常还可以分为若干的数据项,数据项是数据具有意义的最小单位。 数据,数据元素,数据项构成了数据组织的3个层次。 数据库中,数据项又称为字段/域。 它是数据得不可分割得最小标识单位。 实际问题中的数据称为原始数据。 逻辑结构 指数据元素之间的结构关系。 物理结构/存储结构 指数据结构在机内的表示 物理结构/存储结构 物理结构(Physical Structure)/存储结构 指数据结构在机内的表示,数据的逻辑结构在计算机中的实现。

2019.10.17 MVC

时间秒杀一切 提交于 2019-12-01 16:01:47
MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性、可移植性,代码的可重用性。 MVC即Model、View、Controller即模型、视图、控制器。我在和同行讨论技术,阅读别人的代码时发现,很多程序员倾向于将软件的业务逻辑放在Controller里,将数据库访问操作的代码放在Model里。 最终软件(网站)的代码结构是,View层是界面,Controller层是业务逻辑,Model层是数据库访问。 不知道大家知不知道另外一种软件开发模式三层架构,它和MVC相似之处是也分为三层,分别是UI层表示用户界面,BLL层表示业务逻辑,DAL层表示数据访问。三层架构曾经红极一时,MVC大行其道之后它就销声匿迹了, 可现在看来, 它似乎只是改头换面, 装扮成MVC的样子,并且深受程序员们的欢迎,因为它的这种分层方式和前文描述的MVC如出一辙。 再说的直白点,很多程序员将MVC当成了三层架构在用,这看起来似乎没什么问题,毕竟三层架构也是一种和MVC齐名的架构模式。可问题在于用三成架构的思路写MVC,那么写出来的东西既不是三成架构也不是MVC,到是像一个什么都不是四不像。熟悉天龙八部的同学应该知道这样一段情节

《金字塔原理》的读后感作文3100字

久未见 提交于 2019-12-01 11:26:23
《金字塔原理》的读后感作文3100字: 在我们工作与生活中,不少人都会遇到这样的困扰:文章洋洋洒洒写了几千字,可是别人看了却说不知所云;会议发言说了一大堆,底下人一脸懵逼不明所以;沟通交流的时候,明明心里考虑了好久才说出的话,却发现还是鸡同鸭讲。似乎,我们总是很难将自己心里想要表达的意思准确地传达给别人。 简单来说,这应该是你思维的逻辑故障,是思维混乱引起了表达缺陷。那有没有什么方法可以帮助我们呢?有! 这就是今天想要给大家介绍的金字塔思维。我计划分多次将自己学习金字塔思维的理论与实操的笔记与心得分享出来。这么做,源于我自己曾经就是从这样一个矛盾混乱状态中走出来的,对逻辑思维短板带来的难堪与困扰感同身受。同时,在工作中,我也发现了周围很多人都缺乏对逻辑思维处理能力必要的重视和系统的训练,虽然我一再给大家推荐《金字塔原理》这本书,但是似乎收效甚微,这加重了我在工作上的负担。 《金字塔原理》一书是麦肯锡公司的第一位女咨询顾问芭芭拉·明托所著,她向我们传授了逻辑思考的底层逻辑——金字塔原理,这是一种通过突出重点,理清逻辑,分明主次的逻辑思路、表达方式和规范动作的理论。 我现在写的文章,在知识分享的同时,会加入了我的一些主观感受,如果看完文章觉得对你们有用处的话,想要了解原版思路,不妨去买这本书籍来研读,相信能给大家带来更多收获。 今天的文章要解决的是三个部分,分别是:为什么要用金字塔结构

[数据结构]绪论

最后都变了- 提交于 2019-12-01 09:40:46
数据结构 所谓数据结构,首先明白研究对象是数据元素,而所谓数据元素可以理解为一条记录项,这是数据的解释. 结构指的是数据元素的关系.有逻辑关系,而逻辑关系指的是数据的结构的设计,实现则依赖于存储结构. 三要素 1. 逻辑结构 集合 线性结构:数据元素之间存在一对一关系 树形结构:数据元素之间存在一对多关系 图状结构或网状结构:数据元素存在多对多关系 2. 存储结构 顺序存储:逻辑上相邻物理位置上也相邻 链接存储:逻辑上相邻,物理位置不要求相邻 索引存储:存储元素信息时,建立附加的索引表.通过索引表去查找数据,而不是通过整个数据去查找信息 散列存储:根据元素的关键字直接计算该元素的存储地址(Hash存储) 3. 数据运算 常用的渐进时间复杂度 O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n) test 特别注意i=i*2这种 要看i初始值是不是2,是2的话,基本是logn的复杂度 void fun(int n) { int i=1; while(i<=n) i=i*2; } //算法复杂度:O(logn) //i=1 while i=2 //i=2 while i=2^2 //i=3 whiel i=2^2^2 //... //2^i <=n ==> i=logn 来源: https://www.cnblogs