CTO说
简介
《CTO说》是一本由多位技术专家共同撰写的书籍,旨在分享他们在技术领域的心得体会、管理经验以及对未来技术的洞察。这本书对于技术从业者,尤其是那些担任或希望成为首席技术官(CTO)的人来说,是非常宝贵的资源。
读后感
技术管理与领导力:书中探讨了CTO在组织中的角色和责任,包括如何建立有效的技术管理体系,如何领导技术团队,以及如何将技术战略与业务目标相结合。
技术创新与实践:涵盖了从概念验证到产品发布的整个过程,讨论了如何在组织内部推动创新,如何管理技术风险,以及如何将新技术快速转化为市场优势。
团队建设与人才管理:讨论了如何招聘和培养技术人才,如何建立高效的团队文化,以及如何激励团队成员发挥最佳性能。
技术趋势与未来展望:分析了当前的技术趋势,如人工智能、大数据、云计算等,并探讨了这些技术趋势对企业和CTO角色的潜在影响。
案例研究与实践分享:通过真实的案例研究,分享了成功的技术领导经验和教训,这些案例研究可以帮助读者更好地理解理论如何在实践中得到应用。
沟通与协作:强调了CTO在与业务领导、工程师和其他利益相关者沟通和协作中的重要性,提供了提高跨职能团队合作效率的策略。
个人 ...
什么是敏捷开发(Agile Development)
定义
敏捷开发是一种软件开发方法,强调快速迭代、协作、适应性以及持续改进。它起源于1990年代,作为应对传统软件开发方法(如瀑布模型)中存在的问题,如项目延期、成本超支和需求变化等。敏捷开发的核心是能够快速响应变化,同时提高项目质量和开发团队的工作效率。
敏捷开发的关键原则和价值观
个体和互动 高于流程和工具:强调团队成员之间的直接沟通,而不是依赖繁琐的流程或工具。
工作软件 高于详尽的文档:更注重交付可以工作的软件,而不是花费大量时间编写文档。
客户合作 高于合同谈判:与客户紧密合作,确保最终产品能满足他们的需要,而不是单纯遵循合同上的条款。
响应变化 高于遵循计划:欢迎变化,即使在开发后期也能适应需求变更,而不是死板地坚持最初的计划。
敏捷开发的方法和实践
迭代开发:软件开发被分解成一系列短小的迭代周期,每个周期结束时都应产出一个可交付、可测试的软件版本。
站立会议(或每日站会):团队成员每天站在一起,快速回顾昨天的工作、今天的计划以及遇到的问题。
迭代评审:在迭代结束时,团队会展示他们完成的工作,并获取反馈。
代码重构:不断回顾和改进代码,以保持其清晰和可维护性。
敏捷估算和 ...
系统架构设计师-学习第五天
数据库
早期数据库种类有3种, 分别是层次式数据库、网络式数据库和关系型数据库。目前最常见的数据库种类是关系型数据库和非关系型数据库。根据数据库存储体系分类, 还可分为关系型数据库、键值(Key-Value)数据库、列存储数据库、文档数据库和搜索引擎数据库等类型。
关系数据库数据模型是数据特征的抽象, 它是对数据库组织方式的一种模型化表示, 是数据库系统的核心与基础。它具有数据结构、数据操作和完整性约束条件三要素。
关系数据库设计的特点及方法
特点:从数据结构即数据模型开始,并以数据模型为核心展开,这是数据库设计的一个主要特点; 静态结构设计与动态行为设计分离; 试探性; 反复性和多步性。
设计方式:直观设计法、规范设计法、计算机辅助设计法和自动化设计法。
关系数据库设计的基本步骤数据库设计分为需求分析、概念结构设计、逻辑结构设计、物理结构设计、应用程序设计和运行维护6个阶段,如图所示。
分布式数据库分布式数据库系统(Distributed DataBase System, DDBS)是针对地理上分散, 而管理上又需要不同程度集中管理的需求而提出的一种数据管理信息系统。满足分布性、 ...
系统架构设计师-学习第四天
计算机软件操作系统的特征并发性
在多道程序环境下, 并发性是指在一段时间内,宏观上有多个程序同时运行, 但实际上在单CPU的运行环境,每一个时刻只有一个程序在执行。因此,从微观上来说, 各个程序是交替、轮流执行的, 如果计算机系统中有多个CPU,则可将多个程序分配到不同CPU上实现并行运行。
共享性
共享是指操作系统中的资源(包括硬件资源和信息资源) 可以被多个并发执行的进程(线程) 共同使用,而不是被一个进程所独占。出于经济上的考虑,一次性向每个用户程序分别提供它所需的全部资源不但是浪费的,有时也是不可能的。现实的方法是让操作系统和多个用户程序共用一套计算机系统的所有资源,因此必然会产生共享资源的需要。共享资源的方式可以分为同时共享和互斥共享。
虚拟性
虚拟性是指操作系统中的一种管理技术,它是把物理上的一个实体变成逻辑上的多个对应物,或把物理上的多个实体变成逻辑上的一个对应物的技术。前者是实际存在的,而后者是虚构假想的,是用户感觉上的东西。采用虚拟技术的目的是为用户提供易于使用且方便高效的操作环境。
不确定性
在多道程序环境中,允许多个进程并发执行, 但由于资源有限,在多数情况 ...
第二曲线创新
简介
《第二曲线创新》是混沌学园创始人李善友教授关于创业的一阶课程的文字版总结。这本书不仅仅讲述了企业第二曲线如何打造,还讲述了与之交错的若干知识。通过阅读这本书,我对第二曲线创新有了更深入的理解。
读后感首先,作者解释了商业为什么是S型曲线发展。S型曲线在开始时呈下降趋势,说明此时的投入高于产出;突破了破局点之后,曲线的上升幅度明显增强;靠近曲线上方时,增长速度开始放缓,虽然还保持着增长态势,但相较之前的高速增长已远远不足;曲线由上而下的翻转点就是极限点,此后曲线便走向下坡路。任何一条增长的S曲线,都会滑过抛物线的顶点(极限点),持续增长的秘密是在第一条曲线消失之前,开始一条新的S曲线。
其次,作者阐述了第一曲线创新和第二曲线创新的关系。第一曲线创新是对现有产品和服务的改良,可以带来10%甚至百分之几十的增长;而第二曲线创新是重新开启新的曲线,可以带来10倍速的增长。第二曲线创新并不是对第一曲线的改良,而是重新开启新的曲线。这个理论虽然美好,但是两条曲线中间存在鸿沟,我称之为非连续性鸿沟。企业在第一曲线越成功,就越难以转换到第二曲线,我将其称为人类思维的阿喀琉斯之踵。
《第二曲线创 ...
好战略,坏战略
简介这本书提供了对战略制定的有益指导和方法,对于希望成为优秀领导者的读者来说,是一本非常实用的参考书籍。通过学习好战略的制定方法,我们可以更好地应对挑战,实现个人和组织的目标。
调查分析:分析形势,认清竞争优势和态势,了解竞争对手;指导方针:为了克服障碍而制定整体性策略;连贯性活动:采取统一连贯性的行动;
围绕这三个核心要素,《好战略,坏战略》通过剖析包含苹果、IBM、星巴克、英伟达、宜家、沃尔玛等诸多企业的经典商业案例与熟悉的热点事件,深入浅出地分析了好战略与坏战略的区别,并从9个方面阐述了制定好战略的详尽方法论。这些方法包括:发挥杠杆作用、制定近似目标、强化短板、秉持动态视角、利用惯性等。
读后感什么是战略
是企业在分析其外部环境和内部条件的基础上,为实现其长远发展目标而进行的整体性规划和决策。涵盖了企业发展的方向、目标、原则和方法,是企业文化、价值观、使命、愿景在具体行动中的体现。
战略的核心目的
战略是为了在竞争中取得优势,实现组织的目标。一个好的战略应该具有明确的目标和实现这些目标的途径。
好战略的特征
战略聚焦战略聚焦意味着放弃一些不重要的方面,专注于关键的目标。
...
系统架构设计师-学习第三天
计算机系统基础知识计算机系统概述
计算机硬件计算机硬件组成
处理器
存储器
总线
接口
外部设备
处理器(CPU)
作为计算机系统运算和控制的核心部件,经历了长期演化过程
存储器
利用半导体、磁、光等介质制成用于存储数据的电子设备
片上缓存:在处理器核心中直接集成的缓存,一般为SRAM结构,实现数据的快速读取。它容量较小一般为16kB-512kB,按照不同的设计可能划分为一级或二级。
片外缓存:在处理器核心外的缓存,需要经过交换互联开发访问,一般也是由SRAM构成,容量较片上缓存略大,可以为256kB-4MB。按照层次被称为L2Cache或L3Cache,或者成为平台Cache。
主存(内存):通常采用DRAM结构,以独立的部件/芯片存在,通过总线与处理器链接。DRAM依赖不断充电维持其中的数据,容量在数百MB至数十GB之间。
外存:可以是磁带、磁盘、光盘和各类Flash等介质器件,这类设备访问速度慢,但容量大,且在掉点后能够保持其数据。
总线(Bus)
是指计算机部件间遵循某一特定协议实现数据交换的形式,即以一种特定格式按照规定的控制逻辑实现部件间的数据传输 ...
系统架构设计师-学习第二天
绪论
系统架构设计师(System Architecture Designer),决定系统健壮性和生命周期的长短。
系统架构设计师概述
是项目开发活动中的众多角色之一,它可以是一个人或一个小组,也可以是一个团队。
架构设计师的定义、职责和任务架构设计师、架构设计和架构的关系图
系统架构师的任务
领导与协调整个项目中的技术活动(分析、设计和实施)。
推动主要的技术决策并最终表达为系统架构。
确定系统架构,并促使其架构设计的文档化,整理的文档化应包含需求、设计、实施和部署等“视图”。
架构设计师应具备的专业素质
掌握业务领域的知识
掌握技术知识
掌握设计技能
具有编程能力
具备沟通能力
具有决策力
知道组织策略
应是谈判专家
架构设计师的知识结构
战略规划能力
业务流程建模能力
信息数据架构能力
技术架构设计和实现能力
应用系统架构的解决和实现能力
基本IT知识及基础设施、资源调配能力
信息安全技术支持与管理保障能力
IT审计、治理与基本需求的分析和获取能力
面向软件系统可靠性与系统生命周期的质量保障服务能力
对新技术与新概念的理解、掌握和分析能力
如何成为一名好的系统架构设计师 ...
系统架构设计师-学习第一天
绪论
系统架构设计师(System Architecture Designer),决定系统健壮性和生命周期的长短。
系统架构概述
1946年世界第一台计算机诞生
电子数字积分器和计算机(ENIAC)
离散变量自动电子计算机(EDVAC)(冯.若依曼)
系统架构的定义及发展历程
是系统的一种整体的高层次的结构表示,是系统的骨架和根基,支撑和链接各个部分,我们通常把架构设计作为系统开发过程中需求分析阶段后的一个关键步骤,也不是不可或缺的工作要点。
软件架构发展阶段
基础研究阶段(1968-1994年)
概念体系和核心技术形成阶段(1999-2000年)
理论体系完善与发展阶段(1996年至今)
普及应用阶段(2000年至今)
架构设计的作用
解决相对复杂的需求分析问题
解决非功能属性在系统占据重要位置的设计问题
解决生命周期长、扩展性需求高的系统整体结果问题
解决系统基于组件需要的集成问题
解决业务流程再造难得问题
模块化开发规则
最高模块内聚
最低耦合
模块大小适度
模块调用链的深度不可过多
接口简单、精炼,具有信息隐藏能力
尽可能地复用已有模块
软件架 ...
实现在CS端调用本地打印机服务打印PDF的功能
项目描述实现在CS端调用本地打印机服务打印PDF的功能
依赖项
运行环境:jdk8及以上
导入依赖:pdfbox
导入工具类:PrintUtil.java
maven导入依赖示例:
<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.27</version></dependency>
使用说明获取打印机服务列表
调用工具类PrintUtil.java中PrintUtil.selectPrintService()的方法
执行打印
调用工具类PrintUtil.java中PrintUtil.print()的方法
参数说明:
参数
类型
值
是否必须
说明
filepath
String
例:”test.pdf”
Yes
文件地址
printService
PrintService
-
Yes
打印服务
scal ...