buck

单体仓库与多仓库——两种源码组织模式介绍

强颜欢笑 提交于 2021-01-26 18:28:11
单体仓库与多仓库——两种源码组织模式介绍 单体应用和微服务应用 在介绍单体仓库和多仓库前,先来说说什么叫单体应用和微服务应用。 微服务相比单体应用最大的好处是可以独立的开发测试部署和扩展。单体应用一般采用单体仓库,但是微服务的代码仓库该如何组织呢?一定是每个服务一个仓库吗? 其实也不一定,针对微服务的代码组织,业界有两种主要的实践,一种是多仓库(multi-repo)也就是每个服务开一个源码仓库,另一种叫单体仓库(mono-repo)所有源码都在同一个仓库中,尽管整个应用采用的微服务架构。 项目代码组织示例: 多仓库 单体仓库和多仓库都是有利有弊的。 多仓库的好处是显而易见的: 1.每一个服务都有一个独立的仓库,职责单一。 2.代码量和复杂性受控,服务由不同的团队独立维护、边界清晰。 3.单个服务也易于自治开发测试部署和扩展,不需要集中管理集中协调。 多仓库存在的问题: 1.项目代码不容易规范。每个团队容易各自为政,随意引入依赖,code review 无法集中开展,代码风格各不相同。 2.项目集成和部署会比较麻烦。虽然每个项目服务易于集成和部署,但是整个应用集成和部署的时候由于仓库分散就需要集中的管理和协调。 3.开发人员缺乏对整个项目的整体认知。开发人员一般只关心自己的服务代码,看不到项目整体,造成缺乏对项目整体架构和业务目标整体性的理解。 4.项目间冗余代码多

google为什么使用mono-repo

蓝咒 提交于 2021-01-26 14:36:18
google为什么使用mono-repo 三丰 soft张三丰 什么是monorepo? Monorepo 它是一种管理 organisation 代码的方式,在这种方式下会摒弃原先一个 module 一个 repo 的方式,取而代之的是把所有的 modules 都放在一个 repo 内来管理。 目前诸如 Babel, React, Angular, Ember, Meteor, Jest 等等都采用了 Monorepo 这种方式来进行源码的管理。 git 多仓库管理的缺点 1.管理调试困难 2.分支管理混乱 3.依赖关系复杂 4.三方依赖版本可能不一致 5.占用总空间大 6.不利于团队协作 单体,多仓库,单体仓库 单体应用 到 多仓库 到单体仓库 单体仓库的优点:代码规范易于管理 配合自动化工具能够做到一键构建,一键部署 易于理解项目整体,开发人员有一个更好的全景视图 易于重用 谁在用monorepo bazel Bazel 是 Google 的一款可再生的代码构建工具。它主要是用于构建 Google 的软件,处理出现在谷歌的开发环境的构建问题,比如说:大规模数据构建问题,共享代码库问题,从源代码构建的软件的相关问题。 Bazel 支持多种语言并且跨平台,还支持自动化测试和部署、具有再现性(Reproducibility)和规模化等特征。Bazel

Matlab中加汉明窗 ahmming 作用

孤街醉人 提交于 2020-12-13 02:54:45
转自:http://www.cnblogs.com/lxy2017/p/4049124.html 1. 什么是汉明窗? 语音信号一般在10ms到30ms之间,我们可以把它看成是平稳的。为了处理语音信号,我们要对语音信号进行加窗,也就是一次仅处理窗中的数据。因为实际的语音信号是很长的,我们不能也不必对非常长的数据进行一次性处理。明智的解决办法就是每次取一段数据,进行分析,然后再取下一段数据,再进行分析。 怎么仅取一段数据呢?一种方式就是构造一个函数。这个函数在某一区间有非零值,而在其余区间皆为0.汉明窗就是这样的一种函数。它主要部分的形状像sin(x)在0到pi区间的形状,而其余部分都是0.这样的函数乘上其他任何一个函数f,f只有一部分有非零值。 为什么汉明窗这样取呢?因为之后我们会对汉明窗中的数据进行FFT,它假设一个窗内的信号是代表一个周期的信号。(也就是说窗的左端和右端应该大致能连在一起)而通常一小段音频数据没有明显的周期性,加上汉明窗后,数据形状就有点周期的感觉了。 因为加上汉明窗,只有中间的数据体现出来了,两边的数据信息丢失了,所以等会移窗的时候,只会移1/3或1/2窗,这样被前一帧或二帧丢失的数据又重新得到了体现。 简单的说汉明窗就是个函数,它的形状像窗,所以类似的函数都叫做窗函数。 2. 加Hanmming窗的作用 现在在看G.723.1, 对语音编码刚入门,

PD详解 第二章——物理层SOP专题

北城余情 提交于 2020-10-24 00:23:57
前言 最近大师匈在ZR 的FAE朋友段某和某康等人的帮助下完成了PD快充,Only Source端的软件,这个庞大的工程。目前来看兼容性还不错,测过的笔记本手机都没什么问题。大师匈对他们所拥有的技术,只能仰望。。。。感谢党,让我认识了这些NB的人。 大师匈用的是 buck芯片是ZR的SW3526 ,安森美的FUSB302物理层芯片,另外加STM32F103的MCU。 大师匈说正事 上一章讲到type-c连接,那么连接上该干什么呢,聪明的小老板就想到了,我们要开始画cang 老师了(执行PD策略)。 在连接上之后作为source应该是要检测Emark线“5A线”,或者广播source cap。作为Sink的应该是等待接收Source cap,并进行Request。 首先我们要知道PD协议的数据格式是什么样子的: 如上图, 只有message是协议层的东西,其他的都是物理层的数据。 PD物理层 大师兄理解的物理层:我们要画仓老师,那么必须有画板和画笔,那么画板就是用来放数据,组装数据,传输数据,画笔就是用来编码的。 物理层负责这些内容,包括对数据的组装,就是把message拿过来,加上前导码,SOP,CRC,EOP等,然后进行编码,传输出去,那么接收数据就是相反的,解码,校验,然后把message拿出来。 在做软件或者学习的时候,物理层最为关键,需要明确知道的就是 SOP 了。 SOP

buck电路simulink仿真

孤街醉人 提交于 2020-10-20 15:21:32
buck电路matlab仿真及其PID控制器参数调整 主电路搭建 参数设置 buck电路传递函数辨识 matlab pid-tuner进行pid控制器参数调整,将调整好的PI参数更新到buck电路控制器中 一.主电路搭建: 1.buck电路组成:电感、电容、开关器件、同步整流可以不用二极管 主电路: 电感值:85e-6h,电容值:30e-4。电阻:4 2.添加控制模块,测量模块: 死区模块的搭建: 小技巧:1.在模型中使用Goto、From模块可以减少信号线的使用,使模型看起来更加整洁。 2.PWM Generator模块可以直接生成PWM波。D的范围0-1。 3.死区模块的搭建可以通过下降沿延时模块和逻辑操作模块的组合实现。 二、buck电路的传递函数辨识 2.1获取输入及其对应的输出输出: 在PID控制器输出端接上、以及测量电压模块输出端分别接上to workspace模块将数据导入到maltab工作空间为后面使用系统辨识工具箱提供辨识数据: 双击这两个模块可以修改模块名以及数据形式: 2.1运行模型(仿真时间0.0几足够了)得到占空比以及其对应的输出电压数据:( 为了得到原始数据,可以先随便给PI控制器一个PI参数[不要太离谱!] ) 2.2打开系统辨识工具箱: 2.3对得到的传递函数在simulink中利用pid-tuner进行PID控制器参数调整: 2.3

MIT“劫胡”了一个留给2957年的时间胶囊,60年前校长埋下了啥

倖福魔咒の 提交于 2020-08-13 01:42:28
      大数据文摘出品    编译:牛婉杨   前几天文摘菌报道了Github一个“尘封代码”的项目,他们将大量开源代码刻入胶片,打包运向北极,准备在这个远离硝烟战火的地方流传千年,等待后人的“考古”。   于是文摘菌就想到了2015年麻省理工学院(MIT)曾发现一枚 1957年的“时间胶囊” (指将现代发明创造的有代表性意义的物品装入容器内,密封后深埋地下,等待后人发现),尽管埋藏不到60年就被发现了,但仍然轰动一时。   据了解,这个时间胶囊的埋藏是在当时的MIT校长James Rhyne Killian的指导下完成的。胶囊中有一份《A Scientist Speaks》文稿,一枚波士顿第一国民银行发行的硬币,一个MIT 1957届毕业生的纪念水杯,一个汤力水瓶,一份合成青霉素的样品。最有意义的是里头还有一个冷子管(Cryotron),它由MIT在当年开发完成,这之后取代了计算机中复杂昂贵的晶体管。    那他们是如何意外发现这个时间胶囊的呢?   博主Andrei Tapalaga最近在Medium上发表了一篇文章,浅谈了他对此的看法,来和文摘菌一起看看吧~   一个偶然的发现      这张图片展示的时间胶囊是在2015年建立一个新的纳米技术实验室时被偶然间发现的。这个时间胶囊是由James Rhyne Killian校长和电气工程教授Harold

5V 200MA无线门铃电源IC方案LP2178A非隔离

一个人想着一个人 提交于 2020-08-12 02:57:22
深圳市三佛科技有限公司 供应5V 200MA无线门铃电源IC方案LP2178A,原装正品,库存现货热销 推荐工作范围 LP2178A :Io @Vo=5V (输入电压:85VAC~265VAC@温升△T≤40℃)≤200 mA LP2178B :Io @Vo=5V (输入电压:85VAC~265VAC@温升△T≤60℃)≤400 mA 产品介绍: LP2178 是一款高效率高精度的非隔离降压开关电源恒压控制驱动芯片。适用于 85VAC~265VAC 全 范围输入电压的非隔离 Buck、Buckboost 拓扑结构, 尤其适用于小家电、白色家电等电源的驱动。 LP2178 内部集成高压功率管,采用恒压控制模式, 系统可工作于CCM和DCM模式。采用特有的PFM 控制方式,改善音频特性。 内置特有的峰值电流控制,无需 CS 电阻;内置启 动电路,无需启动电阻。外围应用简单,可靠性强。 LP2178 具有多重保护功能,包括 VCC 钳位/欠压保 护,输出短路保护、电感过电流保护及过温保护等 保护功能。 LP2178 采用 SOP8L 特点: 集成800V功率管。 恒压控制,固定5V输出电压。 内置特有的峰值电流控制,无需CS电阻。 内置启动电路,无需启动电阻。 优异的动态性能。 优异的EMI特性。 优异的输出负载调整率 。 低待机功耗<75mW。 全负载范围内优异的音频特性。

移植Linux-5.4+内核到4412开发板

早过忘川 提交于 2020-08-10 05:43:37
前言 ITOP-4412开发板被 Linux 官方支持,所以我们在4412上学习新的内核是非常方便的,本文作者是4412精英群8群一位技术高手,接下来,我们一起来欣赏下他的表演。 环境说明 OS版本 Ubuntu 20 LTS 交叉编译环境配置 ~$ sudo apt install gcc-arm-linux-gnueabihf ~$ sudo apt install flex ~$ sudo apt install bison ~$ sudo apt install u-boot-tools 目标开发板 CPU (Exynos4412,四核 Cortex -A9,主频为1.4GHz-1.6GHz) RAM (1GB 双通道 DDR3) ROM (8GB EMMC) 其他请见官网链接 1. 下载源码 ~$ git clone https://github.com/jason416/linux.gi Note:移植好的源码见博主github仓库的iTop4412分支。 2. 配置内核 2.1 进入内核源码目录 ~/linux-5.4$ ls arch COPYING Documentation include Kbuild lib Makefile README security usr block CREDITS drivers init Kconfig LICENSES mm

赛博朋克之后的科幻建筑是什么样的?

流过昼夜 提交于 2020-05-05 17:59:39
来源:苇草智酷 粗略地浏览一下 tumblr 或 Pinterest 论坛的兴趣推送,你会发现我最近痴迷于科幻作品美学。 更具体地说,我一直在想,在过去35年甚至更久时间里流行的设计美学——赛博朋克(Cyberpunk)之后,科幻作品是什么样子的。 以下讨论,是我称之为“科幻作品美学”系列的上半部分。 上半部分将着重讨论建筑设计。 我虽有一些理论知识,但绝非这方面的专家。 于是我联系了几位专业人士,询问他们的看法和经历。 某些情况下他们的想法与我相似,甚至可以说是接近。 而在另一些情况下,他们所掌握的知识使得他们的结论与我不同。 本文的目的并非是要得出结论,而是展开讨论。 我希望读者能享受这次阅读之旅,至少觉得这些专家提出的思想和概念具有很强的启发性。 当然我是这么认为的。 《银翼杀手》(1982年)中,飞行警车“Spinner”驶向泰路公司总部(Tyrell Corp.)。 虽然赛博朋克这个词的文学渊源来自现代大师的作品,比如威廉·吉布森(William Gibson,加拿大籍美国科幻小说作家,是科幻文学的创派宗师与代表人物,被称作赛博朋克运动之父)、鲁迪·卢克(Rudy Rucker,美国数学家兼科幻小说作家,赛博朋克先驱之一)、布鲁斯·斯特林(Bruce Sterling,美国科幻小说作家)和帕特·卡蒂甘(Pat Cadigan,美国科幻小说家),但提到赛博朋克风格时

JVM反调调用优化,导致发生大量异常时log4j2线程阻塞

本秂侑毒 提交于 2020-05-02 19:17:40
背景 在使用log4j2打日志时,当发生大量异常时,造成大量线程block问题的问题。 一个关于log4j2的高并发问题: https://blog.fliaping.com/a-high-concurrency-problem-of-log4j2/ 大量线程block原因 发生异常,打印异常栈时,会调用org.apache.logging.log4j.core.impl.ThrowableProxy.toExtendedStackTrace方法。 ThrowableProxy.toExtendedStackTrace内部会进行loadClass操作。 并且可以看到ClassLoader的loadClass在加载类时 1)首先会持有锁。 2)调用findLoadedClass看下是否类已经被加载过了 3)如果类没被加载过,根据双亲委派模型去加载类。 可以看到当某个类被加载过了,调用findLoadedClass会直接返回,锁也会被很快释放掉,无需经过双亲委派等后面的一系列步骤。 但是,在进行反射调用时,JVM会进行优化,会动态生成名为sun.reflect.GeneratedMethodAccessor<N>的类,这个类无法通过ClassLoader.loadClass方法加载(为什么无法通过ClassLoader.loadClass加载