名词解释 - 依赖注入与控制反转
依赖注入(DI)与控制反转(IOC)为什么需要DI,见Asp.net core in action第二版 第十章
随着DI的频繁使用,要实现IOC,会有很多重复代码,甚至随着技术的发展,有更多新的实现方法和方案,那么有人就把这些实现IOC的代码打包成组件或框架,来避免人们重复造轮子。
所以实现IOC的组件或者框架,我们可以叫它IOC Container。
IoC是一种很宽泛的理念,DI是实现了IoC的其中一种方法。
微软怎么说:
ASP.NET Core supports the dependency injection (DI) software design pattern, which is a technique for achieving Inversion of Control (IoC) between classes and their dependencies.
地址:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2
翻译 ...
名词解释 - 分层架构
分层架构分层架构是一种常见的架构模式(架构风格),也叫N层架构,常见的2层C/S,B/S架构,三层架构MVC,MVP架构,操作系统的内核架构达到5层,3层以上的架构比较少见。
经典三层架构经典三层架构自顶向下由用户界面层(User Interface Layer)、业务逻辑层(Business Logic Layer)与数据访问层(Data Access Layer)组成。
领域驱动设计提出的四层架构。当然,DDD并不是分层架构,分层架构只是DDD的一个技术构造。
在用户界面层与业务逻辑层之间引入了新的一层,即应用层(Application Layer)。将业务逻辑层更名为领域层。将数据访问层更名为基础设施层。
会发现领域层只依赖于应用程序框架服务,仓储采用了接口分离模式将实现和接口分离到不同的程序集,
聚合聚合这个概念很好理解,就是包含关系。
在UML中有两种包含关系,第一种叫聚合,表示比较弱的包含关系,聚合内部的东西在外面可以直接访问。
第二种叫组合,即组成聚合,是很强的包含关系,表示外部的对象由内部的多个子对象组成,内部的子对象在外面不能直接访问,必须通过外部的对象间接引 ...
名词解释 - AOP, OOP, POP
AOP, OOP, POPPOP: 注重功能性的实现,效果达到就好了
OOP: 注重封装,强调整体性的概念,将对象的内部组织与外部环境区分开来。
AOP: Aop 可以实现如事务,缓存,权限验证的功能。
复用代码:1. 继承的方式(纵向扩展)2. 组合/聚合(横向扩展,这就是AOP)
We may often see a particular lines of code becomes bigger as it grows, even up to the point where it becomes harder to understand its original business logic because the code already cluttered with other things, such as logging, authorization, validation, performance checker, etc.
但是随着软件开发的系统越来越复杂,工程师认识到,传统的OOP程序经常表现出一些不自然的现象,核心业务中总掺杂着一些不相关联的特殊业务,如日志记录, ...
名词解释 - SPA与MPA
Client-Side VS. Server-SideClient-side means that the action takes place on the user’s (the client’s) computer.
Server-side means that the action takes place on a web server.
When we say action we mean all that work that programming languages do.
Almost every computer in the world understands one programming language: JavaScript. For this reason, most things that can be accomplished using JavaScript can be done without needing access to a web server.
Client-side vs. server-side describes where ...
名词解释 - Restful api
Restful api使用一般的 API 點菜,我要加點、查看已點菜色、修改已點菜色、取消已點菜色,都需要不同的服務生替我服務。
RESTful API 主要由三種元件組成:
Nouns 名詞:定義資源位置的 URL,每個資源在網路上都會有唯一的位置,就如每戶人家都有唯一的地址一樣。
Verbs 動詞:對資源要做的動作。
Content Types 資源呈現方式:API 資源可以以多種方式表現,最常用的是 JSON,較輕,也較好處理。
名词解释 - Cookie session token
Cookie session tokenExchange your username and password for cookie containing the session Id
The Cookie is only the medium used to transport the session Id,and it used because it is convenient
服务器保存session Id, 你保存cookie中的session id 在文件中,Id 是随机生成的,当登出后,服务器删除id, 并指示将客户端的id也删除,这就是 cookie-based Authentication
Tokens tend not to need a session on the server but they may have one in the case jwt token, it contains the session information as well, so it contains actual data about you as user.
Most of ...
宇宙最强IDE使用指南-VS
属性页$(OutDir):输出文件目录的路径,相对于项目目录。这解析为“输出目录”属性的值。$(ProjectName):项目的基本名称。$(SolutionDir):解决方案的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“\”。
$(Configuration):当前项目配置的名称(例如“Debug”)。$(Platform):当前项目平台的名称(例如“x32”)。$(ProjectDir):项目的目录(定义形式:驱动器 + 路径);包括尾部的反斜杠“\”。$(ProjectPath):项目的绝对路径名(定义形式:驱动器 + 路径 + 基本名称 + 文件扩展名)。
输出目录(即生成.exe文件的目录),中间目录(即中间文件的目录)。
修改了输出文件的目录,那我们也必须修改我们的调试目录,不然就无法调试了。虽然编译通过了,但并没像你想的那样出现控制台的“黑窗口”,原因就是我们没有修改调试目录:
将调试目录修改为$(OutDir)就可以了,VS2019默认配置-输出文件目录和调试目录就不一样。
命令参数一项也是比较重要的,如果你开发的是一个带有命令行参数的项目,你调试的时候 ...
github入门与实战-读书笔记
Gitub克隆github仓库:执行 git clone命令后我们会默认处于 master 分支下,同时系统会自动将 origin 设置成该远程仓库的标识符。
将本地仓库推送至github:在github中新建一个仓库。创建时请不要勾选 Initialize this repository with a README 选项(如果勾选,则远程将建立一个分支,与本地仓库冲突)。
git push -u origin master:-u参数可以在推送的同时,将 origin 仓库的 master 分支设置为本地仓库当前分支的 upstream(上游)。添加了这个参数,将来运行 git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从 origin 的 master 分支获取内容,省去了另外添加参数的麻烦。
git checkout -b feature-D origin/feature-D:获取远程的 feature-D 分支。此命令会将远程设为上游,直接 git push即可。
git pull——获取最新的远程仓库分支
团队合作 Pull RequestPull R ...
Linux命令行大全-读书笔记
No Strarch ! 英文:http://linuxcommand.org/tlcl.php
Linux性能工具图(图片来自这里):
什么是shelldate — 当前时间和日期
cal — 输出当月日历
df — 输出磁盘剩余空间数量
free — 显示空闲内存的数量
shell提示符的最后一个字符如果是#表明该终端会话处于超级用户权限,如果是$表示处于普通用户权限。
X Window System (the underlying engine that makes the GUI go)支持快速复制粘贴,使用鼠标选中的文本将自动复制到由X系统管理的缓冲区中,可以直接按下鼠标中键将内容粘贴至光标处。
重定向• sort -排序文本行
• uniq -报道或省略重复行
• grep -打印匹配行
• wc -打印文件中换行符,字,和字节个数
• head -输出文件第一部分
• tail - 输出文件最后一部分
• tee - 从标准输入读取数据,并同时写到标准输出和文件
ls /usr/bin | sort | uniq | grep zip | tail -n ...
牛客网笔试OJ判题系统
文中引用了参考资料中的部分内容,本文参考资料详见文末“参考资料”一节,感谢资料分享者。
语言:c++。
如果忘记了想添加的头文件怎么写,可以使用c++通用头文件库:<bits/stdc++.h>,其中包含了c++所有头文件(降低编译速度)。
平台指明了每个语言用的编译器版本,如c++(clang++11)
问:编程题最后一分钟从本地IDE复制到网页中了,但是没有点“保存并调试”就因为时间到了自动交卷了(就差一秒真的很难受),请问这种情况还会有内容提交上去吗?答:会自动提交的
写不出来试一试暴力解法,或者猜一下。
某些公司的考试注意事项:考试过程中除了编程题允许切换跳出页面,考试过程中,编程题可以本地IDE。准备本地的IDE
输入输出
对于传统ACM的OJ模式题目,你的程序需要从标准输入读取数据,然后打印到标准输出上。
开辟数组空间最好根据题目的数据范围要求来,这里可能会造成runtime error,如果代码中递归的深度太深也可能爆栈空间导致 runtime error。
关于cin cout和scanf printf。做题的时候尽量使用scanf printf。在 ...