tag 标签: 技术

相关帖子
相关博文
  • 热度 1
    2024-3-15 10:07
    89 次阅读|
    0 个评论
    SPI(Serial Peripheral Interface)通信总线以其高速、全双工、同步的特性而被广泛应用,它只需要四根线就能实现数据传输,有效地节约了芯片管脚的数量,同时为PCB布局带来了空间上的优化和便捷。正因为它简单易用的特点,现在越来越多的芯片选择集成SPI通信协议。 作为TI Sitara™产品线新一代MPU产品,TI AM62x处理器特别配备了多达4路的SPI接口以及1路OSPI接口(有时也称为QSPI),丰富的SPI接口配置使得该处理器能够同时与多个设备进行通信连接,大大提高了系统的扩展性和灵活性。 在飞凌嵌入式推出的搭载了AM62x处理器的OK6254-C开发板上,NOR Flash存储器正是通过连接到处理器的OSPI总线上进行工作的。这样的设计充分利用了SPI通信协议的高速传输和全双工特性,保证了开发板在数据处理和存储方面的效率。本文就通过OK6254-C开发板为大家介绍一下AM62x的SPI。 0 1 SPI的工作流程和时序 我们首先需要了解一下SPI是如何工作的——通常SPI通过4个引脚与外部器件相连: (1) MISO:主设备输入/从设备输出引脚 该引脚在从模式下发送数据,在主模式下接收数据; (2) MOSI:主设备输出/从设备输入引脚 该引脚在主模式下发送数据,在从模式下接收数据; (3) CLK:串口时钟 作为主设备的输出,从设备的输入; (4) NSS:从设备选择 这是一个可选的引脚,用来选择从设备。 SPI的工作流程是这样的: (1) 主机先将NSS信号拉低,这样保证开始接收数据; (2) 当接收端检测到时钟的边沿信号时,将立即读取数据线上的信号,这样就得到了一位数据; (3) 由于时钟是随数据一起发送的,因此指定数据的传输速度并不重要,尽管设备将具有可以运行的最高速度; (4) 主机发送到从机时,主机产生相应的时钟信号,然后数据一位一位地将从MOSI信号线上进行发送到从机; (5) 主机接收从机数据时,如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO信号线发送。 SPI工作时序图如下: 0 2 AM62x处理器中SPI总线的特点 在AM62x这款芯片中,TI将SPI的MISO与MOSI设计为d0和d1,具体哪一个作为输入,哪一个作为输出,是由设备树中的 ti,pindir-d0-out-d1-in= 来设置的。 默认属性值为0,即d0是输入,d1是输出; 当属性值为1时,d0为输出,d1为输入。 0 3 AM62x的SPI应用 1. menuconfig配置: 将该项选中,SPI驱动将编译进内核中。 makemenuconfi Usermode SPI device driver support (注:在飞凌嵌入式OK6254-C开发板中,SPI驱动编译已进去。) 2. 设备树配置: (1) 选择需要使用的spi,这里我们用spi0,节点为&main_spi0; (2) 将该节点所用的引脚复用为相应的功能。 spi0_pins_default: spi0-pins- default { pinctrl- single ,pins = < AM62X_IOPAD ( 0 x1B4, PIN_OUTPUT, 0 ) /* (A13) SPI0_CS0 */ AM62X_IOPAD ( 0 x1B8, PIN_OUTPUT, 0 ) /* (C13) SPI0_CS1 */ AM62X_IOPAD ( 0 x1C0, PIN_INPUT, 0 ) /* (B13) SPI0_D0 */ AM62X_IOPAD ( 0 x1BC, PIN_OUTPUT, 0 ) /* (A14) SPI0_CLK */ AM62X_IOPAD ( 0 x1C4, PIN_INPUT, 0 ) /* (B14) SPI0_D1 */ ; }; (3) 描述节点的属性,具体配置项的功能见注释。 &main_spi0 { status = "okay" ; pinctrl-names = "default" ; pinctrl-0 = ; /* 描述引脚复用节点 */ ti,spi-num-cs = < 2 ; /* 描述片选的数量 */ ti,pindir-d0- out -d1- in = < 1 ; /*描述输入输出分别是哪个*/ /* 描述子节点spidev0设备 */ spidev @0 { spi-max-frequency = < 24000000 ; /* 描述spidev0设备的最大频率 */ reg = < 0 ; /* 描述spidev0设备所用的片选,这里是第0个 */ spi-cs-high; /* 描述spidev0设备高有效 */ compatible = "rohm,dh2228fv" ; /* 描述spidev0设备所用驱动 */ }; /* 描述子节点spidev1设备 */ spidev @1 { spi-max-frequency = < 24000000 ; reg = < 1 ; compatible = "rohm,dh2228fv" ; }; }; 3. 编译烧录: 在源码路径下输入以下命令: .build.sh sudo./build.sh kernel 没有报错即为编译成功。 将源码路径下的image中的OK6254-C.dtb文件放到开发板的/boot目录中,重启开发板即可。 4. SPI测试: 将spi0_D0和spi0_D1短接 重启开发板后,在/dev目录下看到多出两个spidev设备。 使用我们的测试程序 fltest_spidev_test -D /dev/spidev3.0 -s 42000 有如下打印信息即为成功: spimode: 0 bitsper word: 8 maxspeed: 42000 Hz (42 KHz) FFFF FF FF FF FF 4000 00 00 00 95 FFFF FF FF FF FF FFFF FF FF FF FF FFFF FF FF FF FF DEAD BE EF BA AD F00D 0 4 总结 TI AM62x处理器有着丰富的SPI资源,而SPI又可以作为许多设备的总线,这使得AM62x能够接入许多SPI接口的设备,因此在那些对SPI有着比较多需求的应用场景下,TI AM62x无疑是一个非常好的主控选择。
  • 热度 1
    2024-1-19 09:55
    205 次阅读|
    0 个评论
    迷宫老鼠机器人比赛是一项以电子和信息、装备制造等专业核心技术作为主要竞赛内容的赛事,其中用到的关键技术包括嵌入式微控制器技术及应用、传感器技术及应用、智能控制算法应用、3D虚拟仿真技术应用以及人工智能与计算技术应用等。该类比赛要求参赛的电脑鼠在不同的“迷宫”中自动记忆和选择路径,通过采用相应的算法,快速达到设定的目的地,这就是所谓的“智能鼠走迷宫”。 这项技术的核心在于其可以广泛应用于各个领域,如自动化控制、智能制造等。此外,国际智能鼠走迷宫竞赛(中国)总联络处已经成立,得到美国、葡萄牙、印度、英国、日本、新加坡、泰国、蒙古等多个海外国家Micromouse组织的授权和支持,这将进一步推动中国与世界各国在Micromouse前端技术交流合作等方面的工作。 至于推广方面,已经有多个大学和机构参与其中。例如,天津市大学生学科竞赛第12届“启诚杯”人工智能电脑鼠大赛在南开大学举行,来自南开大学、天津大学、天津理工大学等学校的师生都参与了这次比赛。此外,北京交通大学电脑鼠走迷宫校内赛也吸引了大量参赛队伍。通过这些比赛,迷宫老鼠机器人比赛得以在高校和科研机构中得到广泛推广。
  • 热度 3
    2023-3-16 22:31
    2923 次阅读|
    14 个评论
    2023年3月16日星期四读报,一文《英国在科学技术领域还是“世界领先”吗?》唤起我一直有个看法,就是白肤色人类擅长科学,黄肤色人类擅长技术,科技是人类演化不可或缺的两个相互关联领域。这文章题目可见,话外音,人类当下科学发明拿不出什么新玩意儿了,技术应用要量力而行适度适宜,世界领先不要过度了。 这两天,FT中文网报道,感觉英国新闻多了点,还都是关于科学。是不是想说当下人类在 科学发明发现上停滞 ,为了可持续生存,在技术应用上不要过度,好听是“世界领先”,毕竟不好说人家领先,就先自己落后,以身作则,用行为说话? FT中文网新闻摘录如下: 英国将出台金融和监管措施着重发展计算机与生命科学 - FT 中文网 (d2wz47owtacjie.cloudfront.net) 英国财政大臣亨特誓言要让英国成为“欧洲最佳科技公司投资和发展之地”。 更新于 2023 年 3 月 16 日 15:00 英国《金融时报》 克 莱 夫•库克森 , 汉 娜 •库 赫 勒 英国在科学技术领域还是 “ 世界领先 ” 吗? - FT 中文网 (d2wz47owtacjie.cloudfront.net) 阿胡贾 :根据科学政策学者的新分析,英国在科学技术的优先领域中表现良好,但并不突出,离世界领先还有一段距离。 更新于 2023 年 3 月 16 日 12:12 安贾娜• 阿胡贾 把基因组编辑放出笼子前必须先确立规则 - FT 中文网 (d2wz47owtacjie.cloudfront.net) 阿胡贾 :改变人类 DNA 为治疗疾病带来了希望,但也引发了公平获取等问题。 更新于 2023 年 3 月 15 日 17:39 安贾娜• 阿胡贾 本文作者是科学评论员 每一项新兴技术都有自己的梦想家和阴谋家。人类基因组编辑无疑也是如此,它是 上周在伦敦弗朗西斯•克里克研究所 (Francis Crick Institute) 举行的一场备受瞩目的全球峰会 的焦点。 英国的产业政策要有重点 - FT 中文网 (d2wz47owtacjie.cloudfront.net) 帕里克:英国应该珍视自己的优势产业,如果妄想在每个领域都领先世界,那么最终可能一事无成。 更新于 2023 年 3 月 15 日 17:29 泰杰•帕里克 前天看到可谓“狂轰滥炸”的新闻就好奇? 美国走向大萧条?美国怎么了?接下来意味着什么? _ 工程 师职场 - 面包板社区 (eet- china.com) 发表于 2023-3-14 10:52:40 硅谷银行倒闭,怎么这么热闹? 硅谷,自然想到科技,年初报道科技行业大裁员就好奇?硅,又让人想到半导体,不一直在折腾没完没了? 如何看 “ 科技行业裁员更多是重新调整 ” ? - 面包板社区 (eet-china.com) 重新调整什么?还没看明白,这又到了金融行业,裁什么员?干脆倒闭! 更有意思的是美国一唱,英国一和,还都是白肤色人擅长科学的国家。 莫非人类真是在 科学发明发现上停滞 了? 百度搜索“人类科学停滞”,可见一斑。 若真是这样,那就是说人类演化的当下,就只有发挥技术应用了,在已有科学发明基础上的应用,这就涉及到应用的程度了,毕竟技术应用是要消耗地球自然资源和能源的,而这又是当下面临枯竭的趋势,还加上气候不利于生存的变化。 资源不够了,环境恶化了,那我们人类该如何应对呢? 不也就只有适度地把握科技发展,不要过度。这又唤起多年来的一个看法,是不是人类科技发展过度了?呵呵,百度看看,有意思,看看下拉菜单,这该不是百度使用了ChatGPT技术吧?知道我想看的信息? 最后一条:科技发展太快人类灭亡更快 再看《英国在科学技术领域还是“世界领先”吗?》,可想而知英国想干啥了,不就是想世界能达成一致取向而放慢科技发展,直到人类共同度过这段时间,至少是21世纪和22世纪,地球运行从黄道十二宫的双鱼宫进入宝瓶宫。 或有科学新发明发现? 科学家始终在研究,今天人民日报报道: 我国科学家发现两种新矿物 (peopleapp.com) ,央视新闻 2023-03-16 12:46,报道最后说: 新矿物的发现属于 0 到 1 原创性成果,代表了矿物学基础研究的突破性进展。截至目前,全球共发现的矿物数量约 5900 个,我国科学家发现的矿物数量只有约 180 个。 接下来还要看世界上技术应用如何把控了? 如果是这样,那我们中国在科技尤其在技术上如何做呢?
  • 热度 11
    2022-4-28 06:28
    995 次阅读|
    0 个评论
    ​ 2015年08月17日 16:16 来源: 网站整理 作者: Duke 标签: 智能照明 (1065) 驱动电路 (906) led (16526)   近年来, LED 制造工艺的不断进步和新材料(氮化物晶体和荧光粉)的开发和应用,各种颜色的超高亮度LED取得了突破性进展,其发光效率提高了近1000倍,色度 方面已实现了可见光波段的所有颜色,其中最重要的是超高亮度白光LED的出现,使LED应用领域跨越至高效率照明光源市场成为可能。   通过十多年对LED设计的潜心研究和学习。本人收集了LED应用设计中一些经典性的基础问题分享给大家。其中涉及到内容有单个LED的流明效率与用LED 作光 源构成的灯具的流明效率异同分析,LED的结温原理及结温升高会对LED产生的影响问题,静电破坏的原理以及列举一些类型的LED容易受静电破坏导致失 效,探讨LED路灯防雷能用一个 压敏电阻 的问题,解读设计高品质LED驱动 电路 的方法和选择和设计LED驱动电源时要考虑哪些因素等问题。   问:单个LED的流明效率与用LED作光源构成的灯具的流明效率有什么异同?   答:针对某一个特定的LED,加上规定的正向偏置,如加上 IF =20mA正向 电流 后(对应的VF≈3.4V),测得的辐射光通量Φ=1.2lm,则这个 LED的流明效率为η=1.2lm×1000/3.4V×20mA=1200/68≈17. 6l m/W。显然,对单个LED,如施加的电功率 Pe=VF×IF,那么在这个功率下测得的辐射光通量折算为每瓦的流明值即为单个LED的流明效率。   但是,作为一个灯具,不论LED PN结 上实际加上的功率VF×IF是多少,灯具的电功率总是灯具输入端口送入的电功率,它包括电源部分(如稳压器、稳流源、交流整流成直流电源部分等)所消耗的功率。灯具中,驱动电路的存在使它的流明效率比 测试 单个LED的流明效率要下降。电路损耗越大,流明效率越低,因此,寻找一种高效率的LED驱动电 路就显得极为重要。    问:什么是LED的结温?结温升高会对LED造成什么影响?   答:LED基本结构是一个半导体的PN结。当电流流过LED器件时,PN结的温度将上升,严格意义上说,就把PN结区的温度定义为LED的结温。通常由于器件芯片均具有很小的尺寸,因此我们也可把LED芯片的温度视之为结温。   当PN结的温度(例如环境温度)升高时,PN结内部的杂质电离加快,本征激发加速。当本征激发产生的复合载流子的浓度远远超过杂质浓度时,本征载流子的数量增大的影响较之迁移率减小的半导体 电阻 率变化的影响更为严重,导致内量子效率下降,温度升高又导致电阻率下降,使同样IF下,VF降低。如果不用恒流源 驱动LED,则VF降将促使IF指数式增加,这个过程将使LED PN结上温升更加快,最终温升超过最大结温,导致LED PN结失效,这是一个正反馈的恶性过程。   PN结上温度升高,使半导体PN结中处于激发态的 电子 /空穴复合时从高能级向低能级跃迁时发射出光子的过程发生退化。这是由于PN结上温度升高时,半导体 晶格的振幅增大,使 振动 的能量也发生增加,当它超过一定值时,电子/空穴从激发态跃迁到基态时会与晶格原子(或离子)交换能量,于是成为无光子辐射的跃 迁,LED的 光学 性能退化。   另外,PN结上温度升高还会引起杂质半导体中电离杂质离子所形成的晶格场使离子能级裂变,能级分裂受PN结温度的影响,这就意味着由于温度影响晶格振动, 使其晶格场的对称性发生变化,从而引起能级分裂,导致电子跃迁时产生的光谱发生变化,这就是 LED发光 波长随PN 结温升而变化的原因。   综上所述,LEN PN结上的温升会引起它的电学、光学和热学性能的变化,过高的温升还会引起LED封装材料(例如环氧、荧光粉等)物理性能的变化,严重时会导致LED失效,所以降低PN结温升,是应用LED的重要关键所在。    问:什么是静电破坏?哪些类型的LED容易受静电破坏导致失效?   答:静电实际上是由电荷累积构成。人们在日常生活中,特别在干燥天气环境中,当用手去触摸门窗类物品时会感觉“触电”,这就是门窗类物品静电积累到一定程 度时对人体的“放电”。对于羊毛织品、尼龙化纤物品,静电积累起来的电压可高达一万多伏特,电压十分高,但静电功率不大,不会威胁生命,然而对于某些电子器件却可以致命,造成器件失效。   LED中用GN基构成的器件,由于是宽禁带半导体材料,它的电阻率较高,对于InGaN/AlGaN/GaN的双异质结蓝色光LED,其InGaN的有源 层的厚度一般只有几十纳米,再由于这种LED的两个正、负电极在芯片同一面上,之间距离很小,若两端静电电荷累积到一定值时,这一静电电压会将PN 击穿 , 使其漏电增大,严重时PN结击穿 短路 ,LED失效。   正因为存在静电威胁,对于上述结构的LED芯片和器件在加工过程中对 加工厂 地、机器、工具、仪器,包括员工服装均要采取防静电措施,确保不损伤LED。另外,在芯片和器件的包装上也要采用防静电材料。    问:LED路灯防雷能用一个压敏电阻吗   答:关于路灯的防雷设计并非是一个简单的问题。首先要了解你的路灯系统方案全貌架构,如采用AC--》 开关电源 --》恒流源 --》LED光源的方案,那么,你应该首先考虑 开关 电源的防雷,雷击的侵入往往是由AC 电线 导入的,先被侵害的主体应该是开关电源,经开关电源输出 的直流电压理论上是一干净的电源,至此雷击对恒流源的影响已经很小了。LED路灯一般是买现成的开关电源来配套,因此你在选用时特别选购能防雷击的开关电 源,即在开关电源的输入端已设置防雷击电路。    问:隔离型与非隔离型驱动方案各有何优缺点?应用中如何选择?   由于电路上差异较大,大多数的芯片都不具备同时实现两种方案的可能。从恒流精度上看,隔离型可以做到±5%以内,而非隔离型则很难做到。   目前在以市电为输入电源的LED灯具中(特别是驱动与光源一体的灯具),本着安全第一的原则,基本已不需再采用非隔离型方案。但也有例外,LED日光灯管 由于受到结构和空间的制约,仍还用非隔离型方案。在低压供电的LED灯具中,以效率和成本优先的原则,非隔离型方案是最佳的选择。 问:LED被静电击穿的原理和过程是怎么样的?会有何影响?   答:LED属于半导体类元件,它的PN结是直接裸露在外头的,很容易接触静电。当LED两个电极上极性不同的电荷积累(产生电荷或者转移过来的电荷)到一 定的程度,又得不到及时释放,电荷能量一旦超过LED芯片最大承受值时,电荷将以极短的瞬间(纳秒级别)在LED两个电极层之间进行放电,产生功率焦耳的热量,在导电层之间局部(往往是电阻值最小、电极周边的)会形成1400℃以上的高温,高温将会把导电层之间熔融成一些小孔,从而造成漏电、暗亮、死灯、电性飘移等现象。   这个击穿LED的静电能量它并非就是一个高压,学术的讲是一个能量,它取决于电荷的量和的时间长短这两个核心系数。放电刹那的时间越短威力越大,电荷越多威力也越大。静电击穿LED是个非常复杂的过程,因此,测试LED抗静电时的模拟设计也是一项很复杂、很严谨的测试。   被静电击损后的LED如果是比较严重的往往是死灯、漏电。轻微的静电损伤,LED一般没有什么异常,但此时,该LED已经有一定的隐患,当它受到二次静电损伤时,那就会出现暗亮、死灯、漏电增大啦。   问:如何设计高品质LED驱动电路?   答:LED光源是一种长寿命光源,理论寿命可达50000小时,但应用电路设计不合理、电路 元器件 选用不当、LED光源散热不好,都会影响它的使用寿命。 特别是在应用电路里,作为AC/DC 整流桥 的输出 滤波器 的电解 电容器 ,它的使用寿命在5000小时以下,这就成了制造长寿命LED灯具技术的拦路虎,设计 生产可在应用电路里省去电解 电容 器的新一代LED驱动IC是可行的解决方案。   此外,对新一代LED驱动IC的设计必须打破传统的DC/DC拓扑结构设计理念,如采用恒功率、不采用磁滞控制的降压型而采用定频定电流控制、解决使用卤 素灯电子变压器所产生的灯源闪烁和多灯并联不亮问题等等;还必须解决LED驱动IC在多种应用电路中能过 EMC 、安规、CE、UL等认证;应用电路 应力 求 简洁、使用元器件少;隔离与非隔离的应用历来是商家在安全与效率之争焦点;提高PWM控制器的占空比等等。    问:选择和设计LED驱动电源时要考虑哪些因素?   答:LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压 直流、高压直流、低压高频交流(如电子变压器的输出)等。而LED驱动电源的输出则大多数为可随LED正向压降值变化而改变电压的恒定电流源。根据电网的用电规则和LED驱动电源的特性要求,在选择和设计LED驱动电源时要考虑到以下几点:   1.高可靠性:特别像LED路灯的驱动电源,装在高空,维修不方便,维修的花费也大。2.高效率:LED是节能产品,驱动电源的效率要高。对于电源安装在灯具内的结构尤为重要。因为LED的发光效率随着LED温度的升高而下降,所以LED的散热非常重要。电源的效率高,它的耗损功率小,在灯具内发热量就小,也就降低了灯具的温升。对延缓LED的光衰有利。3.高功率因素:功率因素是电网对负载的要求。一般70瓦以下的用电器,没有强制性指标。虽然功率小的单个用电器功率因素低一点对电网的影响不大,但晚上大家点灯,同类负载太集中,会对电网产生较严重的污染。对于30瓦~40瓦的LED驱动电源,据说不久的将来,也许会对功率因素方面有一定的指标要求。4.驱动方式:现在通行的有两种:一种是一个恒压源供多个恒流源,每个恒流源单独给每路LED供电。此方式,组合很灵活,一路LED故障,不影响其他 LED的工作,但成本会略高一点。另一种是直接恒流供电,LED串联或并联运行。它的优点是成本低一点,但是灵活性差,还要解决某个LED故障,不影响其他LED运行的问题。这两种形式,在一段时间内并存。多路恒流输出供电方式,在成本和性能方面会较好。也许是以后的主流方向。5.浪涌保护:LED抗浪涌的能力是比较差的,特别是抗反向电压能力。加强这方面的保护也很重要。有些LED灯装在户外,如LED路灯。由于电网负载的启 甩和雷击的感应,从电网系统会侵入各种浪涌,有些浪涌会导致LED的损坏。因此LED驱动电源要有抑制浪涌的侵入,保护LED不被损坏的能力。6.保护功能 电源除了常规的保护功能外,最好在恒流输出中增加LED温度负反馈,防止LED温度过高。7.防护灯具外安装型,电源结构要防水、防潮,外壳要耐晒。8.驱动电源的寿命要与LED的寿命相适配。9.要符合安规和电磁兼容的要求。 ---end--- ​
  • 热度 13
    2022-4-23 01:03
    711 次阅读|
    0 个评论
    ​ 转载--- 51CTO官微 2017-08-10 11:44 ​ 在 16 年前,CTO 是我非常想做的职位,那时候做梦都想做公司的 CTO 或者技术副总裁。多年过去了,我做过不止一家公司的 CTO,对于 CTO 这个职位,我在想,企业一定需要 CTO 吗? ​ 我以前认为是不需要的,技术这些事儿可以让各个团队去干,CTO 自己不写代码,也不具体解决某个问题。 但是当公司慢慢发展壮大的时候,你会发现技术团队会遇到人员培养、各条技术线参差不齐的问题。 这个时候,是不是就需要 CTO 来发挥作用呢?其实企业是否需要 CTO,主要还是看 CTO 要做什么,他的主要工作职责是什么。 ​ CTO 需要了解的三大职责 一个企业如果设置 CTO 职位,那么 CTO 是干什么的? 技术方向上有前瞻性 不要选择不适合当前业务的技术,你需要不断地增强技术能力,了解业内状况的能力;需要听汇报、做判断,能够敏锐地找出来汇报说的哪些话是假的,避免技术方向被误导,这件事情是非常重要的。 团队管理能力 当你有了 150 人的时候,已经是相当复杂的团队了,如果继续成长到 300 人、600 人,团队管理就尤为重要了,内部矛盾怎么处理,人员晋升怎么解决? 这就需要一些团队管理上的规则,如果企业本身有较为完善的规则,那么直接延伸到技术团队也管用,如果碰到了公司文化建设不好的情况,那就需要自己建立起团队文化。 协作沟通能力 我觉得在协作方面是要分为道和术。 道是你对团队、对人的价值的判断,这个价值确定以后,其他的沟通都是执行层面,这就好办了。 沟通方法,那就是你的术,你和人打交道的时候,人是情绪化的,比如说你碰到同事,你二话不说就把他的不是数落一遍,然后给他好的建议,你觉得他能听进去吗? 结果显然是听不进去的。各个公司的文化不一样,但是有个比较经典的规则,就是所谓的三明治规则。 即为开始说点好听的,让他打开心扉接受你。中间说点不好听的,是你让对方做的事情和改进的事情,最后再说几句好的,鼓励鼓励,这是三明治的沟通方法。我个人觉得,如果你时间充分的情况下,这是一种比较良好的沟通方法。 当你进行上下级协调时,可能会遇到 CFO、CMO 对你这块儿不懂的情况,你说了他们听不进去,这个问题背后的原因是什么? 他们可能根本不懂技术。很多 CFO、CMO 是文科出身,这个时候你要用对方的语言来说话,你有没有站在他的业务角度解释你的问题? 你要说我怎么帮到你的业务,而不是我为什么要从技术上这么做。如果你能解释的通,可能一句话就把问题解决了。 归结到最后就是上升到企业策略,我这么做,和企业策略是怎么复合的,站在对方的角度去描述你的观点,这样对方才能接受,这里面的术就是用对方的语言来讲话。 你要理解企业战略,并且能够用业务人员的话讲问题,同时你自己要充当一个商业与技术之间的桥梁。 CTO 需要做好的三件事 CTO 要做好哪几件事情?第一,带队伍。第二,定战略。第三,拿结果。 带队伍 作为一个领导,首先要建立队伍,让队伍有好的发展,使团队能力越来越强。对于带队伍来说: 第一是选人,我不太相信人会有太大变化,严进宽出,进来的时候要筛选得非常严格,进来之后就好好地用他。 第二是育人,人皆可塑造,找到比较聪明的人,用机制去培养他成长,我相信他总会发光。 第三是建立和保持团队的文化,这是一个非常重要的角色。文化有多种定义,我个人认同的是一群人一起做事情的方法,就你团队这些人而言,大家怎么做事儿?对于团队中的文化,技术起多大作用?大家有没有这个动力?这就是文化。 还有大家的协同工作、配合,是互相争斗还是互相协助?是个人英雄重要还是团队协作重要? 作为一个 CTO,你一开始就要想清楚你希望你的技术团队中大家相互之间的工作将是一种什么样的气氛。 定战略 战略是什么?看起来挺神秘的,其实并不复杂。我要到哪里去?目标是什么?有一种分析方法叫竞争力分析法,例如,电商在未来是什么格局?几家大的企业来切分市场,这是一种情况。 第二种,一家独大。就是要分析到某个相对比较稳定状态的时候,我们的这个格局是什么样?我在其中处于哪个位置?我的企业在哪个位置? 第二个,我现在在哪里,我们现在的竞争力处于什么样的地位,我怎么从现在的位置走到那里去,可以是直线,可以是曲线,这些都没有关系,但关键是我怎么走到彼岸去。 如果你要了解这个战略是什么,你首先要问公司的战略是什么?然后再去考虑你的技术团队如何支持公司的战略。 比如谷歌,它其实有一个梦想,是要通过技术来改变世界、改变人们的生活方式,这样的公司,它的技术团队就是要不断创新。 怎么培养战略思考能力呢?第一种,跟着公司做业务多思考。第二种,广泛地吸取各种各样的知识,整天琢磨。 在我刚开始工作的时候,我觉得当时的直属领导很神,做决策非常快,而且非常准确。我这人好奇心特别强,我就在想为什么他可以这样?然后遇到一个事情,我就想如果是我会怎么办? 有时候得出结论和他一样,有时候不一样,正好我碰到的这个领导比较好,我和他聊,他就跟我讲他的思维过程,遇到事情一二三这样推,我跟了他半年后,当时我已经可以猜出来他大部分的决策结果。 之后两年我已经可以基本准确地预测出来他的做法,我可以模拟出来他的思维过程、他的判断依据,这是我在刚刚毕业两年的时候给自己的思维训练。 后来这些年,在这行业中,我看到一个新闻或是听别的公司讲故事,我基本就会养成一个习惯,去做预测,根据这些信息,推断他们今后往什么方向去走,会怎么办?我会去观察。 后面实际发生的时候,走的方向什么样?结果什么样?大家如果继续学习的话,这个学习过程。有什么样的因,出什么样的果,给我一个反馈,和我想的一样或者不一样,不一样的话,要搞明白中间产生了什么变数? 我当时为什么想得不对?这些年我这个思维习惯一直没变。我觉得培养战略思考能力是一种习惯,你要整天去想,有些东西真的是有经验的,你要去学。 拿结果 不管是 KPI 考评还是 OKR 考评,其实都是对结果有一个度量,往往要讲数字化,但是我觉得这个数字真的很难起作用,为什么? 互联网行业里数字变化特别快,你到时候定了 KPI 怎么办?当然可以改,但是持续改的话开销会很大。 包括后来在 360 做管理工作的时候,我们用的是相对柔性的考核,也是每季度来做,领导来打分,具体看你在过去一季度干的什么事情、结果怎么样。 还有就是结果最容易出现问题的情况,是各方对结果的预期不一致,比如你写出来 KPI 或者 OKR,第一种可能遇到矫情的人,第二种可能真的和大家预期的不一样,用文字进行表述,本来过程中就会出现这种情况,那么怎么办? 第一个是沟通方式,大家从不同角度讲自己的预期和认识,不同角度多去核对一下。 第二个,核对的过程中最好能留有记录,文字记录可能都不见得够,有视频更好,如果你有条件的话可以保留下来,让所有参与的人都有压力,因为有呈堂证供,所以有威慑力。 CTO 的“干部四力”是什么? 作为一个干部,需要有哪些基本的能力呢? CTO 的“干部四力”: 决断力,果断做出决策的勇气和能力。有的人性格优柔寡断不敢做决策,因为做决策要承担后果,不敢担当对做干部的人来说是非常要命的事情。 执行力,将目标转化为行动,并带领团队成员一起完成任务的能力。有时候执行力会变成一个推脱责任的说辞,如果最高领导整天说下面执行力不行,其实你要想想他是不是有问题,一个是目标是否清楚,第二个是组织能力是否到位。 理解力,准确快速地领会组织和他人意图,把握事物本质的能力。 与人的连接力,与他人产生共鸣,建立和谐关系的能力。有的干部哪怕能力很强,但是和周边关系搞得非常紧张,往往挫折感也会很强。 这是对干部来说比较重要的四个能力。如果一个人既有决断能力又能带着团队完成目标,非常快地接受周边信息,还能够团结好周边的同僚们一起把事情干好,这是一种比较理想的状况。 这并不是说你的干部四力都要全,但是筛选的时候尽可能这样选,或者某个象限增强也可以,这是所谓干部四力。 CTO 如何提升技术团队的地位? 首先在 CTO 和其他若干 O 的定位里,你的地位到底是什么?你预期的地位应该是什么?如果我们从企业战略来思考的话,大家预期的又是什么样? 对于 CTO 来说,首先技术团队要满足现有业务平稳的需求,如果需要在各地开设分支机构,你的系统能不能支撑业务发展?如果不能,对不起你不合格。 能够做到技术支持业务创新,已经是一个挑战了,这就要求你这个 CTO 要对业务有比较好的理解才能做到。如果能够做到技术创新,也就是技术能引领业务升级,这时候的 CTO 就是一个小 CEO 了。 所以在预期这件事上,首先你要对自己有个预期,你把 CTO 当做自己人生职业发展中的一个阶段还是发展的目标? 就我个人来讲,我觉得 CTO 是企业整个运行中的关键组件,如果你预期自己将来有更大的成就,你不应该仅仅把自己定义在 CTO 这个职位。 在我看来,CTO 还是辅助性的决策,你要去接触业务方面的工作,还要思考怎么提升自己团队的地位,你达到预期的时候有人在乎你吗?你要超出老板的预期,让他惊讶。 CTO 如何降低决策中的风险? 很多人都问到决策当中的风险这个问题,我觉得这并不是一件特别复杂的事儿。 从这几个角度看: 业务对风险的承受能力。有的业务,比如金融,如果你出了一些风险可能是要命的,甚至可能因此而葬送公司。有的业务呢,一个决策错误可以会导致客户访问慢点。对风险的承受能力,是你需要考虑的第一件事。 风险发生的概率多大?还有风险发生的时候你有没有缓解策略?把这件事儿想明白之后,看谁是承担后果的人。不能让风险一旦发生了业务整个就完蛋,你要和利益相关人确定清楚,咱们是不是要这么干?可以告诉他风险发生的概率多大。 如果说风险可承受,值不值得这样做?你冒这个险的收益是什么?你特别想做一个事儿的时候,可能你会人为地加强动机,你会觉得这个事情做出来非常重要。 但是实际上你要给自己脑袋上泼盆冷水。自己想想,这件事儿真的有那么重要吗?可以搞个模型,去盘算一下这个事情可不可以干。 然后想清楚之后,一旦决定要干,你得勇于跳出来说如果出了事儿我负责,如果你说出了事儿我不敢负责,那你这个 CTO 在决策力方面就有问题了。 作为 CTO 最怕的就是纠结,站在路口不知道往左往右,这个对于 CTO 来说是个大忌,你停在原地不走和站在原地想该往左往右是不一样的。 CTO 的五大自我修炼法则 接下来,我们谈谈CTO 要做的几项修炼: 思维、心理修炼 我觉得有几本书推荐大家读一读。第一本书是《六顶思考帽》,这个也是对我比较有影响的书,它用形式化的方法让你对不同问题做思考,这个思维训练已经是中高级的训练,让你相对来说比较辩证地思考问题。 第二本书是心理方面修炼的书,叫《少有人走的路》。少有人走,是因为那条路不好走。这本书对于个人的心理修炼、思维方式的修炼比较有好处。 企业战略修炼 在现在的时间点,创新非常重要,因为赢家会越来越少,这种情况下你被迫要去创新,《创新者的窘境》和《创新者的解答》必须要看。 《创新者的窘境》是哈佛商学院的教授所撰写,这本书读起来很难,但是你咬着牙也要读完。因为这个教授用这一本书奠定了他在学术界的地位。《创新者的解答》是《创新者的窘境》后续的一本书。 还有一本书是《定位》,定位准确了你就不用纠结了,今天的定位方法是做减法,这个比做加法难很多,做减法是非常痛苦的,因为意味着你要放弃一些机会,但也因为你放弃了一些机会才能抓住更大的机会。 管理修炼 推荐《卓有成效的管理者》这本书。这本书是从道上讲事情的,不是讲术。这本书的作者是管理大师德鲁克,他写过非常多的书,不要认为他的观点过时,他虽然已经去世了,但是在今天这样一个知识经济的时代,他的观点依然是起作用的。 工作方法锻炼 这是术,我推荐《麦肯锡方法》,这是很薄的一本书,可以帮助你提高工作效率。 企业文化修炼 如果说你想了解一些不太一样的企业文化,我强烈推荐读一读《一网打尽》,这本书是讲亚马逊是怎么做事的。今天的常规方法你很难赢,要有创新的打法。 推荐了一系列的书,这些都是我过去在反思自己的成长过程中,觉得可能对大家比较有帮助的,大家可以去看一看。 除了这些书还有很多,比如说《应求》,我把这本书推荐给别人的时候我心里都有负担,因为它的副标题容易让人产生误解。我没有把它列到书单里,大家回头可以看一看。 ---end--- ​
相关资源
  • 所需E币: 0
    时间: 2024-2-28 12:01
    大小: 3.42KB
    Kubernetes,简称K8s,是一个开源系统,用于自动化部署、扩展和管理容器化应用程序。它提供了基本机制来部署、维护和扩展应用程序,支持跨多个主机的容器应用。K8s是Go语言开发的,建立在Docker之上,可以看作是Docker的上层架构。它的主要功能包括应用部署、维护、扩展,集群管理、安全防护、准入机制、多应用支撑、服务注册与发现、智能负载均衡、故障发现与自我修复、服务滚动升级、在线扩容、资源配额管理等。K8s通过容器的方式来管理应用程序,使得容器集群能够运行在用户期望的状态,并解决容器跨机器通信的问题。DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。容器技术是k8s中最关键的技术,通过容器技术可以将一台实体服务器资源虚拟化为多个隔离的容器,容器之间有较高的隔离级别,可像一台独立的服务器般部署程序并对外提供服务。简单来说,可以把容器简单视为一个特殊的进程,该进程与其他进程相隔离,在自己的命名空间下使用网络接口和文件,并且该进程只能使用硬件的部分资源。容器技术的基础是linux命令空间和cgroups,其中:(1)容器的隔离是基于linux命令空间来实现的,命名空间提供了一种内核级别隔离系统资源的方法,通过将系统的全局资源放在不同的命名空间中,来实现资源隔离的目的。不同命名空间的进程,可以享有一份独立的系统资源。(2)硬件资源的限制是通过cgroups实现的,cgroups是一个linux内核功能,它被用来限制一个进程或者一组进程的资源(cpu、内存、带宽等)使用,被限制的进程不能过分使用为其他进程保留的资源。容器技术与微服务概念相得映彰,微服务概念强调将一个大的系统拆分为若干微服务,每个微服务实现系统的特定功能,通过这个方式来减少系统的耦合。一般而言,一个微服务所需的系统资源并不需要很多,使用一个容器来部署一个微服务便成了一件很合适的事情,毕竟容器创建简单、资源可控,隔离性好、扩容方便。Kubernetes中的CRD(CustomResourceDefinition,自定义资源定义)允许用户扩展API服务器以支持新的自定义资源。使用CRD,用户可以定义自己的KubernetesAPI资源类型,并在Kubernetes集群中创建、管理和操作这些自定义资源。CRD的创建和使用通常涉及以下几个步骤:创建CRD定义:创建一个CRD定义文件,例如customresource.yaml,其中包含自定义资源的结构和属性。CRD定义文件使用KubernetesAPI对象的规范来定义自定义资源的模式、版本和行为。apiVersion:apiextensions.k8s.io/v1kind:CustomResourceDefinitionmetadata: name:mycustomresources.samples.example.comspec: group:samples.example.com versions:  -name:v1   served:true   storage:true scope:Namespaced names:  plural:mycustomresources  singular:mycustomresource  shortNames:  -mcrkube-scheduler调度过程和原理kube-scheduler是Kubernetes集群中的一个核心组件,负责根据预定义的调度策略将Pod分配到集群中的合适节点上运行。下面是kube-scheduler的调度过程和原理的简要描述:获取未调度的Pod:kube-scheduler会定期从KubernetesAPI服务器获取所有未调度的Pod的列表。筛选:kube-scheduler会对未调度的Pod进行筛选,剔除不符合调度要求的Pod。这包括检查系统保留节点、Pod的亲和性和反亲和性要求(如NodeSelector、NodeAffinity等)、污点(Taints)等。只有符合筛选条件的Pod才会进入下一步的调度过程。评分:对于剩下的可调度Pod,kube-scheduler会对每个节点进行评分,根据一系列算法为每个节点计算出一个分数。评分算法可以根据用户自定义的策略进行配置,常见的因素包括节点资源利用率、节点的可用性、亲和性和反亲和性等。选择节点:根据评分结果,kube-scheduler会选择具有最高分数的节点来运行Pod。如果多个节点具有相同的最高分数,kube-scheduler会根据预定义的调度策略(如最少负载、随机选择等)来决定最终的调度结果。更新调度结果:获取到调度结果后,kube-scheduler将更新Pod的调度信息,并将其更新到KubernetesAPI服务器中。这样其他组件(如kubelet)就会根据调度结果来将Pod放置到相应的节点上运行。监控和重调度:kube-scheduler会定期监控已调度的Pod以确保其正常运行。如果发现某个节点不可用或Pod处于非运行状态,kube-scheduler将重新进行调度,将Pod迁移到其他合适的节点上。kubernetes内部需要5套证书,手动创建或者自动生成,分别为:1.etcd内部通信需要一套ca和对应证书。2.etcd与外部通信也要有一套ca和对应证书。3.APIserver间通信需要一套证书。4.apiserver与node间通信需要一套证书。5.node和pod间通信需要一套ca证书。目前来说还不能实现把所有的业务都迁到kubernetes上,如存储,因为这个是有状态应用,出现错误排查很麻烦,所以目前kubernetes主要是运行无状态应用。所以一般而言,负载均衡器运行在kubernetes之外,nginx或者tomcat这种无状态的应用运行于kubernetes集群内部,而数据库如mysql,zabbix,zoopkeeper等有状态的,一般运行于kubernetes外部,通过网络连接,实现kubernetes集群的pod调用这些外部的有状态应用。Kubernetes引入Pod主要基于下面两个目的:-可管理性有些容器天生就是需要紧密联系,一起工作。Pod提供了比容器更高层次的抽象,将它们封装到一个部署单元中。Kubernetes以Pod为最小单位进行调度、扩展、共享资源、管理生命周期。-通信和资源共享Pod中的所有容器使用同一个网络namespace,即相同的IP地址和Port空间。它们可以直接用localhost通信。同样的,这些容器可以共享存储,当Kubernetes挂载volume到Pod,本质上是将volume挂载到Pod中的每一个容器。
  • 所需E币: 2
    时间: 2024-1-13 21:31
    大小: 341.63KB
    上传者: 电子阔少
    GB/T8897.02-2005原电池第2部分外形尺寸和技术要求9页0.3M.pdf
  • 所需E币: 2
    时间: 2024-1-13 21:39
    大小: 2.51MB
    上传者: 电子阔少
    劲量电池产品技术手册52页2.5M.pdf
  • 所需E币: 0
    时间: 2024-1-9 14:40
    大小: 2.77KB
    在现如今的信息化时代,相信各位读者对于“操作系统”这四个字并不陌生。例如我们常常使用的Windows、安卓、IOS、MacOS以及Linux等,都属于操作系统。操作系统,是现如今信息化时代中不可或缺的一种软件。Linux操作系统是一种开源的、基于Unix的操作系统。它最初由芬兰计算机科学家LinusTorvalds在1991年开发,并得到了全球范围内广泛的应用和支持。Linux操作系统具有稳定性、安全性、可靠性和灵活性等特点,广泛应用于服务器领域,也被许多个人用户选择作为他们的主要操作系统。Linux提供了丰富的命令行工具和图形界面,支持各种编程语言和软件开发环境,是一个非常强大而且自由开放的操作系统。操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合,操作系统是计算机系统中最基本的系统软件。操作系统(OperatingSystem,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。下面我们进行代码实战,让大家更深入的理解操作系统的本质:<divclass="site-content__wrapper">  <mainclass="site-content"    :class="{'site-content--tabs':$route.meta.isTab}">    <el-tabsv-if="$route.meta.isTab"      v-model="siteContent.mainTabsActiveName":closable="true"      @tab-click="selectedTabHandle"      @tab-remove="removeTabHandle">      <el-tab-panev-for="iteminsiteContent.mainTabs"        :label="item.title":name="item.name">        <el-card:body-style="siteContent.siteContentViewHeight">          <router-view:key="router.currentRoute.value.query.random"/>        </el-card>      </el-tab-pane>    </el-tabs>    <el-cardv-else:body-style="siteContent.siteContentViewHeight">      <router-view:key="router.currentRoute.value.query.random"/>    </el-card>  </main></div>在框架页面的模型层中,定义removeTabHandle()封装函数。functionremoveTabHandle(tabName){  //让mainTabs数组剔除要关闭的Tab  siteContent.mainTabs=siteContent.mainTabs.filter(item=>item.name!==tabName);  //如果还存在剩余的Tab,就切换到最后的Tab上面  if(siteContent.mainTabs.length>=1){    //获取mainTabs数组最后一个元素    lettab=siteContent.mainTabs[siteContent.mainTabs.length-1];    //选中这个Tab控件    siteContent.mainTabsActiveName=tab.name;    //内容区切换引用的页面    router.push({name:tab.name});  }else{    siteContent.mainTabsActiveName='';    router.push({name:'MisHome'});  }}这个注解会拦截Web方法的请求,让SaToken验证客户端提交的Token令牌。如果令牌合法就允许调用Web方法,反之就拒绝HTTP请求,返回401状态码。@RestController@RequestMapping("/mis/user")publicclassUserController{  ……     @GetMapping("/searchUserSummary")  @SaCheckLogin  publicRsearchUserSummary(){    ……  }}在user.vue页面中,添加<el-dialog>标签,它可以实现弹窗的效果。<selectid="searchUsernameById"parameterType="int"resultType="String">  SELECTusername  FROMtb_user  WHEREid=#{userId}</select><updateid="updatePassword"parameterType="Map">  UPDATEtb_user  SETpassword=#{newPassword}  WHEREid=#{userId}   ANDpassword=#{password}</update>在com.example.his.api.mis.service.impl包UserServiceImpl.java类中,实现抽象方法。@ServicepublicclassUserServiceImplimplementsUserService{  ……  @Override  publicintupdatePassword(Mapparam){    intuserId=MapUtil.getInt(param,"userId");    Stringusername=userDao.searchUsernameById(userId);    MD5md5=MD5.create();    Stringpassword=MapUtil.getStr(param,"password");    Stringtemp=md5.digestHex(username);    StringtempStart=StrUtil.subWithLength(temp,0,6);    StringtempEnd=StrUtil.subSuf(temp,temp.length()-3);    password=md5.digestHex(tempStart+password+tempEnd).toUpperCase();    param.replace("password",password);    StringnewPassword=MapUtil.getStr(param,"newPassword");    newPassword=md5.digestHex(tempStart+newPassword+tempEnd).toUpperCase();    param.replace("newPassword",newPassword);    introws=userDao.updatePassword(param);    returnrows;  }}在com.example.his.api.mis.controller包UserController.java类中,声明Web方法。@RestController@RequestMapping("/mis/user")publicclassUserController{  ……  @PostMapping("/updatePassword")  @SaCheckLogin  publicRupdatePassword(@Valid@RequestBodyUpdatePasswordFormform){    intuserId=StpUtil.getLoginIdAsInt();    HashMapparam=newHashMap(){{      put("userId",userId);      put("password",form.getPassword());      put("newPassword",form.getNewPassword());    }};    introws=userService.updatePassword(param);    returnR.ok().put("rows",rows);  }}
  • 所需E币: 5
    时间: 2023-12-3 01:03
    大小: 88.56MB
    上传者: Alson
    《电工学第七版上册电工技术》.pdf
  • 所需E币: 0
    时间: 2023-11-29 14:22
    大小: 4.78KB
    大家好,今天我将给大家分享关于如何开发一个数据库系统的知识,将从0到1手把手带着一步步去开发这个项目,希望我的分享对大家的学习和工作有所帮助,如果有不足的地方还请大家多多指正。一、什么是数据库系统数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成 二、数据库管理系统的主要功能包括数据定义功能:DBMS提供数据定义语言(DataDefinitionLanguage,DDL),用户通过它可以方便地对数据库中的对象进行定义数据组织、存储和管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等。数据操纵功能:DBMS提-供数据操纵语言(DataManipulationLanguage,DML),用户可以使用DML操纵数据,实现对数据库的基本操作,如查询、插入、删除和修改等数据库的事务管理和运行管理:数据库在建立、运用和维护时由数据管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用以及发生故障后的系统恢复数据库建立和维护功能:数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。三、数据库系统结构1.1模式(概念模式或逻辑模式)定义:数据库中全体数据的逻辑结构特征的描述,是所有用户的公用数据库结构。特性:一个数据库只有一个模式模式与应用程序无关,只是数据的一个框架1.2子模式(外模式或用户模式)定义:数据库用户所见和使用的局部数据的逻辑结构和特征的描述,是用户所用的数据库结构特性:子模式是模式的子集一个数据库有多个子模式,每个用户至少使用一个子模式同一个用户可以使用不同的子模式,每个子模式可为不同的用户所用1.3内模式(存储模式)定义:是数据物理结构和存储方法的描述。它是整个数据库的最低层结构的表示。特性:一个数据库只有一个内模式,内模式对用户透明一个数据库由多种文件组成,如用户数据文件,索引文件及系统文件内模式设计直接影响数据库的性能以下是开发流程:在idea中构建如下几个子模块工程:@PostMapping("/doLogin")@ApiOperation(value="一键注册登录接口",notes="一键注册登录接口",httpMethod="POST")publicGraceJSONResultdoLogin(HttpServletRequestrequest,                HttpServletResponseresponse,                @RequestBody@ValidRegisterLoginBOregisterLoginBO,                BindingResultresult);验证的字段上方可以写一些相关的注解,系统识别后会自动检查RegisterLoginBO.javapublicclassRegisterLoginBO{  @NotBlank(message="手机号不能为空")  privateStringmobile;  @NotBlank(message="短信验证码不能为空")  privateStringsmsCode;  publicStringgetMobile(){    returnmobile;  }  publicvoidsetMobile(Stringmobile){    this.mobile=mobile;  }  publicStringgetSmsCode(){    returnsmsCode;  }  publicvoidsetSmsCode(StringsmsCode){    this.smsCode=smsCode;  }  @Override  publicStringtoString(){    return"RegisterLoginBO{"+        "mobile='"+mobile+'\''+        ",smsCode='"+smsCode+'\''+        '}';  }}如果校验有问题,那么可以直接获得并且放回给前端即可。BaseController.java/** *验证beanBO中的字段错误信息 *@paramresult *@return */publicMap<String,String>getErrors(BindingResultresult){  Map<String,String>map=newHashMap<>();  List<FieldError>errorList=result.getFieldErrors();  for(FieldErrorerror:errorList){    //发生验证错误所对应的某一个属性    StringerrorField=error.getField();    //验证错误的信息    StringerrorMsg=error.getDefaultMessage();    map.put(errorField,errorMsg);  }  returnmap;}一般来说,admin系统不会有主动注册功能,账号都是分配的,那么默认就会存在一个基本账户,这也是预先通过代码生成用户名和密码的。直接手动生成即可:<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>同理,查询操作也是类似JPA的操作,再继承Repository后直接使用其内置api即可:FriendLinkMngControllerApi.java@PostMapping("getFriendLinkList")@ApiOperation(value="查询友情链接列表",notes="查询友情链接列表",httpMethod="POST")publicGraceJSONResultgetFriendLinkList();首先可以在数据库通过写sql脚本实现查询SELECTc.idascommentId,c.father_idasfatherId,c.article_idasarticleId,c.comment_user_idascommentUserId,c.comment_user_nicknameascommentUserNickname,c.contentascontent,c.create_timeascreateTime,f.comment_user_nicknameasquoteUserNickname,f.contentasquoteContentFROMcommentscLEFTJOINcommentsfonc.father_id=f.idWHEREc.article_id='2006117B57WRZGHH'orderbyc.create_timedesc目前我们所搭建的eureka是单机单实例的注册中心,如果挂了,那么整个微服务体系完全不可以,这是不应该的,所以为了实现eureka的高可用,我们可以搭建集群。在进行集群构建之前,大家先参照目前的eureka再去构建一个一模一样的工程,可以取名为springcloud-eureka-cluster。为集群中各个eureka节点配置hosteureka: instance:  hostname:eureka-cluster-${port:7001}  #集群中每个eureka的名字都要唯一 #自定义eureka集群中另外的两个端口号 other-node-port2:${p2:7002} other-node-port3:${p3:7003} client:#  register-with-eureka:false#  fetch-registry:false  service-url:   #集群中的每个eureka单实例,都需要相互注册到其他的节点,在此填入集群中其他eureka的地址进行相互注册   defaultZone:http://eureka-cluster-${eureka.other-node-port2}:${eureka.other-node-port2}/eureka/,http://eureka-cluster-${eureka.other-node-port3}:${eureka.other-node-port3}/eureka/我们自己测试的时候时间可以设置为10秒内有10次,我认定非法请求,直接限制这个ip访问15秒,15秒后释放。(像有的网站会出现二维码让你扫描通过,或者手机验证码或者人机交互判断你当前是否是人还是机器,因为有可能是爬虫请求)开发步骤:首先在yml中设置基本参数:@OverridepublicObjectrun()throwsZuulException{  System.out.println("执行【IP黑名单】Zuul过滤器...");  //获得上下文对象requestContext  RequestContextrequestContext=RequestContext.getCurrentContext();  HttpServletRequestrequest=requestContext.getRequest();  //获得ip  Stringip=IPUtil.getRequestIp(request);  /**   *需求:   *判断ip在10秒内请求的次数是否超过10次,   *如果超过,则限制访问15秒,15秒过后再放行   */  finalStringipRedisKey="zuul-ip:"+ip;  finalStringipRedisLimitKey="zuul-ip-limit:"+ip;  //获得剩余的限制时间  longlimitLeftTime=redis.ttl(ipRedisLimitKey);  //如果剩余时间还存在,说明这个ip不能访问,继续等待  if(limitLeftTime>0){    stopRequest(requestContext);    returnnull;  }  //在redis中累加ip的请求访问次数  longrequestCounts=redis.increment(ipRedisKey,1);  //从0开始计算请求次数,初期访问为1,则设置过期时间,也就是连续请求的间隔时间  if(requestCounts==1){    redis.expire(ipRedisKey,timeInterval);  }  //如果还能取得到请求次数,说明用户连续请求的次数落在10秒内  //一旦请求次数超过了连续访问的次数,则需要限制这个ip了  if(requestCounts>continueCounts){    //限制ip访问一段时间    redis.set(ipRedisLimitKey,ipRedisLimitKey,limitTimes);    stopRequest(requestContext);  }  returnnull;}privatevoidstopRequest(RequestContextrequestContext){  //停止继续向下路由,禁止请求通信  requestContext.setSendZuulResponse(false);  requestContext.setResponseStatusCode(200);  Stringresult=JsonUtils.objectToJson(      GraceJSONResult.errorCustom(          ResponseStatusEnum.SYSTEM_ERROR_BLACK_IP));  requestContext.setResponseBody(result);  requestContext.getResponse().setCharacterEncoding("utf-8");  requestContext.getResponse().setContentType(MediaType.APPLICATION_JSON_VALUE);}上面这些都是通过不同key要执行多次才能得到结果,一般来说我们会使用es的aggs功能做聚合统计,会更好。通过一个脚本来统计男女数量:POSThttp://192.168.1.203:9200/fans/_doc/_search{  "size":0,  "query":{    "match":{      "writerId":"201116760SMSZT2W"    }  },  "aggs":{    "counts":{      "terms":{        "field":"sex"      }    }  }}以下就是数据库系统开发的整个流程讲解,感谢大家的阅读
  • 所需E币: 3
    时间: 2023-10-29 23:33
    大小: 3.78MB
    上传者: 宝藏库
    中科院-技术结构图谱2022
  • 所需E币: 0
    时间: 2023-10-26 10:01
    大小: 1.67KB
    无论你是数据库内核研发、DBA、还是后端研发,能够手写一套自己的数据库系统,都是你突破技术发展瓶颈的有效途径。[11章]技术大牛成长课,从0到1带你手写一个数据库系统课程将带你从架构设计,原理剖析,再到源码的实现,手把手带你构建一套完整的数据库系统,让你深度掌握数据库底层,及更多数据库高端技术,具备解决大量生产级数据库问题的能力,助力成为高端技术人才!从数据库架构设计到功能实现,吃透底层原理,解决大量生产级问题具备从0到1数据库系统的架构设计能力从需求分析,系统分析,到系统架构设计,以及面向未知故障场景防御式编程,灵活运用设计模式,全面深入理解数据库系统架构深度掌握数据库底层原理及系统性方法论掌握SQL语法解析、语义解析原理,数据库如何生成执行计划,数据库底层存储机制、事务管理机制,C/S架构网络服务,综合性提升数据库运维、调优能力提升大量生产级数据库问题高效解决能力深入掌握数据库索引调优思路、瓶颈点,如何快速定位线上问题,深入挖掘针对数据库的面试题,知其然更知其所以然,有效突破你的疑难杂症问题解决能力理论结合实际场景综合性落地,轻松吃透核心技术底层原理应用场景复用到日常开发场景中,如何运用高级数据结构、算法和设计模式,如何正确面对高并发进行编程,如何进行数据库的优化,如何理解数据库的执行计划分析慢SQL的原因等。原理剖析深度剖析数据库系统原理,将数据库几十年发展精髓拆解并呈现,端到端解析数据库系统中的各种工程trick,结合具体实现案例(MySQL/PostgreSQL/SQLite)展现系统级实现方案源码实战手把手实现每一行代码,掌握每行代码的原理,实现代码规模巨大的数据库系统原型,开发、debug过程演示真实传授解bug的核心方法论,探讨各种工程技巧、可优化的空间,引发深层思考多场景数据库解决方案,灵活解决大量生产级问题数据库性能及扩展评估数据库性能、扩展数据库功能特性、数据库扩展的方法和机制数据库优化分析数据库性能瓶颈、配置数据库索引、执行计划分析、分析系统硬件瓶颈大数据量存储如何进行数据存储、设计端到端大数据量存储方案、评估大数据量对数据库的影响数据库高可用数据库高可用的挑战、数据库WAL机制、WAL机制在数据库高可用中的应用数据库网络规划OS的网络模型、高效实现网络编程、数据库如何面对高并发挑战数据库故障定位定位数据库中故障的来源、如何对故障进行响应、进行数据库系统的高效运维
  • 所需E币: 2
    时间: 2023-10-22 13:59
    大小: 1.34MB
    上传者: 宝藏库
    自然语言处理的发展历史回顾Attention注意力机制的基本原理Transformer构建大模型的基石持续进化:从GPT-1到GPT-3能力突变:从ChatGPT到GPT-4未来展望:多模态和AIGC.
  • 所需E币: 0
    时间: 2023-9-17 15:39
    大小: 205.79KB
    上传者: 木头1233
    基于CH340N的USB转TTL模块-MINI-A技术手册
  • 所需E币: 0
    时间: 2023-9-17 15:29
    大小: 343.15KB
    上传者: 木头1233
    STC89C52单片机最小系统板-基础版技术手册
  • 所需E币: 0
    时间: 2023-8-31 14:52
    大小: 52.46MB
    上传者: 小Z爱学习
    抽样技术 SAMPLINGTECHNIQUE_13858701
  • 所需E币: 0
    时间: 2023-8-15 11:33
    大小: 330.91KB
    上传者: Aigtekatdz
    功率放大器超声椭圆无心磨削技术研究中的应用
  • 所需E币: 1
    时间: 2023-7-29 18:07
    大小: 46.01MB
    上传者: Argent
    蓝牙4.0技术介绍
  • 所需E币: 1
    时间: 2023-7-29 15:11
    大小: 3.27MB
    上传者: Argent
    准谐振和同步整流技术在反激变换器中的应用
  • 所需E币: 1
    时间: 2023-7-29 13:22
    大小: 8.81MB
    上传者: Argent
    电气控制与PLC应用技术课件资料合集
  • 所需E币: 0
    时间: 2023-7-20 12:01
    大小: 44.38MB
    上传者: 贾智鹏
    模电系列技术手册  硬件工程师应用指南 全国产化选型指南 原理图查看 参数对比
  • 所需E币: 1
    时间: 2023-7-13 15:27
    大小: 3.63MB
    上传者: 张红川
    清华大学电工技术课件.zip
  • 所需E币: 1
    时间: 2023-7-10 14:52
    大小: 698.44KB
    上传者: 张红川
    AVR的PID技术.pdf
  • 所需E币: 1
    时间: 2023-7-10 14:53
    大小: 513.31KB
    上传者: 张红川
    第三章专家PID和模糊PID技术.pdf