嗯3
T-SQL
1.数据定义语言(Data Definition Language,DDL)。DDL用于执行数据库任务,对数据库及数据库中的各种对象进行创建、删除、修改。 CREATE, ALTER, DROP 2.数据操纵语言(Data Manipulation Language,DML)。DML用于操纵数据库中的各种对象,检索和修改数据。 SELECT, INSERT, UPDATE , DELETE 3.数据控制语言(Data Management Language,DCL)。DCL用于安全管理,确定哪些用户可以查看或修改数据库中的数据。
GRANT, REVOKE, DENY
React
React 应用程序是由 组件 组成的。
React 组件是返回标签的 JavaScript 函数
识别 React 组件。React 组件必须以大写字母开头,而 HTML 标签则必须是小写字母。
JSX 规则 1. 只能返回一个根元素 2. 标签必须闭合 3. 使用驼峰式命名法给 大部分属性命名!
automated testing
APPs Telerik
typescript
TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行。TypeScript与JavaScript相比进步的地方 包括:加入注释,让编译器理解所支持的对象和函数,编译器会移除注释,不会增加开销;增加一个完整的类结构,使之更新是传统的面向对象语言。 为什么会有TypeScript? JavaScript 只是一个脚本语言,并非设计用于开发大型 Web 应用,JavaScript 没有提供类和模块的概念,而 TypeScript 扩展了 JavaScript 实现了这些特性。TypeScript 主要特点包括: - TypeScript 是微软推出的开源语言,使用 Apache 授权协议 - TypeScript 是 JavaScript 的超集. - TypeScript 增加了可选类型、类和模块 - TypeScript 可编译成可读的、标准的 JavaScript - TypeScript 支持开发大规模 JavaScript 应用 - TypeScript 设计用于开发大型应用,并保证编译后的 JavaScript 代码兼容性 - TypeScript 扩展了 JavaScript 的语法,因此已有的 JavaScript 代码可直接与 TypeScript 一起运行无需更改 - TypeScript 文件扩展名是 ts,而 TypeScript 编译器会编译成 js 文件 - TypeScript 语法与 JScript .NET 相同 - TypeScript 易学易于理解 JavaScript 与 TypeScript 的区别 TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。 TypeScript优势 解决痛点 TypeScript的设计解决了JavaScript的“痛点”:弱类型和没有命名空间;这导致程序很难模块化,不适合开发大型程序。 语法提示 编写程序时,编辑器将提供精准的语法提示,以帮助大家更方便地实践面向对象的编程。 容易上手 TypeScript的一个设计亮点,是它并没有抛弃JavaScript的语法另起炉灶,而是做成了JavaScript的超集,任何合法的JavaScript的语句在TypeScript下都是合法的,且沿用了JavaScript的使用习惯和惯例,可以说学习成本很低。
kubernetes
Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。 Docker是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保应用程序在任何环境中无缝运行。 简单来说,Docker是一个开源的应用容器引擎,Kubernetes是一个开源的容器集群管理系统.
openShift
OpenShift是红帽的云开发平台即服务(PaaS)。
自由和开放源码的云计算平台使开发人员能够创建、测试和运行他们的应用程序,并且可以把它们部署到云中。
OpenShift广泛支持多种编程语言和框架,如Java,Ruby和PHP等。
另外它还提供了多种集成开发工具如Eclipse integration,JBoss Developer Studio和 Jenkins等。
OpenShift 基于一个开源生态系统为移动应用,数据库服务等,提供支持。
IBM MQ
RabbitMQ
消息总线(Message Queue),是一种跨进程、异步的通信机制,用于上下游传递消息。由消息系统来确保消息的可靠传递。 MQ是干什么用的? 应用解耦、异步、流量削锋、数据分发、错峰流控、日志收集等等...
RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在不同的应用之间共享数据(跨平台跨语言)。RabbitMQ是使用Erlang语言编写,并且基于AMQP协议实现。 RabbitMQ的优势: 可靠性(Reliablity):使用了一些机制来保证可靠性,比如持久化、传输确认、发布确认。 灵活的路由(Flexible Routing):在消息进入队列之前,通过Exchange来路由消息。对于典型的路由功能,Rabbit已经提供了一些内置的Exchange来实现。针对更复杂的路由功能,可以将多个Exchange绑定在一起,也通过插件机制实现自己的Exchange。 消息集群(Clustering):多个RabbitMQ服务器可以组成一个集群,形成一个逻辑Broker。 高可用(Highly Avaliable Queues):队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。 多种协议(Multi-protocol):支持多种消息队列协议,如STOMP、MQTT等。 多种语言客户端(Many Clients):几乎支持所有常用语言,比如Java、.NET、Ruby等。 管理界面(Management UI):提供了易用的用户界面,使得用户可以监控和管理消息Broker的许多方面。 跟踪机制(Tracing):如果消息异常,RabbitMQ提供了消息的跟踪机制,使用者可以找出发生了什么。 插件机制(Plugin System):提供了许多插件,来从多方面进行扩展,也可以编辑自己的插件。
Securities & Custody
证券监管
Swift 15022/20022
SWIFT是环球同业银行金融电讯协会(Society for Worldwide InterbankFinancial Telecommunications)的简称,于1973年5月成立,最初是由来自15个国家的239家银行发起,为解决各国金融通信不能适应国际间支付清算的快速增长而设立的非盈利组织,负责设计、建立和管理SWIFT国际网络,以便在该组织成员进行国际金融信息和确定路由。 SWIFT 工作原理是通过接口软件设立一个连接全球各国银行系统的安全通信服务网路,在通过标准化通信报文格式来传递银行与银行、企业与银行之间的资金交易。 SWIFT MT是他们对ISO 15022的实施.它在SWIFT中有时被称为"FIN".SWIFT MX是ISO 2002的实现.SWIFT MTXML是ISO 15022的实现,具有ISO 20022语法的优点.
FIXML
“FIXML”是“Financial Information eXchange Extensible Markup Language”的英文缩写,意思是“财务信息交换可扩展标记语言”
深拷贝浅拷贝
JS中
基本数据类型 (Number, String, Boolean, Null, Undefined, Symbol)
对象数据类型 ( Object )
深拷贝: 将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象
JSON.parse(JSON.stringify(obj))
function deepClone(source) {
if (!source || typeof source !== 'object') {
return source;
}
const targetObj = source.constructor === Array ? [] : {};
for (const keys in source) {
if (source.hasOwnProperty(keys)) {
if (source[keys] && typeof source[keys] === 'object') {
targetObj[keys] = source[keys].constructor === Array ? [] : {};
targetObj[keys] = deepClone(source[keys]);
} else {
targetObj[keys] = source[keys];
}
}
}
return targetObj;
}
浅拷贝 创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址 ,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。
可以使用 for in、 Object.assign、 扩展运算符 ... 、Array.prototype.slice()、Array.prototype.concat() 等
function deepClone(source) {
if (!source || typeof source !== 'object') {
return source;
}
const targetObj = source.constructor === Array ? [] : {};
for (const keys in source) {
if (source.hasOwnProperty(keys)) {
targetObj[keys] = source[keys];
}
}
return targetObj;
}
深拷贝和浅拷贝的区别 1.浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引用 2.深拷贝: 创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”
solid
SOLID 原则是面向对象 class 设计的五条原则。他们是设计 class 结构时应该遵守的准则和最佳实践。 S 单一职责原则 ** 一个 class 应该只做一件事,一个 class 应该只有一个变化的原因**。 Single-Responsibility Principle, 一个类(或者大到模块,小到方法), 最好只做一件事,只有一个引起它的变化。 SpringMVC 中Entity,DAO,Service,Controller, Util等的分离。 O 开闭原则
Open - ClosedPrinciple ,OCP 对扩展开放,对修改关闭(设计模式的核心原则)。意思是,在一个系统或者模块中,对于扩展是开放的,对于修改是关闭的,一个好的系统是在不修改源代码的情况下,可以扩展你的功能,而 实现开闭原则的关键就是抽象化。 设计模式中模板方法模式和观察者模式都是开闭原则的极好体现. L 里氏替换原则
Liskov Substitution Principle ,LSP 任何基类可以出现的地方,子类也可以出现,这一思想表现为对继承机制的约束规范。只有子类能够替换其基类时, 才能够保证系统在运行期内识别子类, 这是保证继承复用的基础。 I 接口隔离原则
Interface Segregation Principle,ISL 客户端不应该依赖那些它不需要的接口。一个接口就只代表一个角色
一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。 D 依赖倒置原则
Dependency-Inversion Principle 要依赖抽象, 而不要依赖具体的实现。依赖倒置原则要求客户端依赖于抽象耦合。原则表述: 1)抽象不应当依赖于细节;细节应当依赖于抽象; 2)要针对接口编程,不针对实现编程。
各个微服务之间如何通信
建立了一个HttpClient直接调取所要用到的API的接口 var obj = await _HttpClient.GetObjectAsync<List<HeadModel>>(_baseURL, $"GetOffspringCategories?categoryID={categoryID}&languageCode={languageCode}"); return obj;