做后台的对模块化的思想很清晰,都是类、继承什么的,而JavaScript早期开始就没有包、类模块的概念,甚至只有函数作用域。...我理解的模块就是实现特定功能的文件或者代码,模块化就是隔离、组织这些复杂功能代码。模块可以让我们更方便的加载不同的功能。 现在还有什么组件化、插件化,我觉得都是模块化思想。...比如登录是模块、搜索是模块、订单是模块,UI库的吐司是组件、select是组件、pick是组件,jq的时间插件、视屏插件。这三者具体怎么区分还真不知道怎么去描述,但是我觉得思想都是一样的。...早之前JavaScript的模块化有以下几种: 函数:每一个函数就是一个模块 对象:一个模块就是一个对象,有属性有方法 立即执行函数:跟函数原理一样 而模块化有一个重点就是规范,不能各自写各自的,需要统一使用一个规范...要说requireJS和seaJS最大的区别就是加载的机制: SeaJS只会在真正需要使用(依赖)模块时才执行该模块 RequireJS会先尽早地执行(依赖)模块, 相当于所有的require都被提前了
为了给全栈工程师一个最新鲜的定义,我们首先来关注一下全栈工程师以前是搞什么的。...; 写一些基本的 PHP 4.0 脚本(非面向对象的 PHP 即将成为历史)来处理服务端逻辑; 保存所有的动态数据到 MySQL 中,也可能会做一些小优化; 用 FTP 上传所有代码、数据库什么的到一台服务器...幸运的是,也有办法避免学习 NodeJS,用PHP也是可以的 像Composer这样的 PHP 包管理工具在现代化的开发环境中已经离不开了 好的API 设计,自从大部分新型网页都基于 API 而且仅仅为前端服务...想知道一个正常的前端知识图谱是怎么样的,可以在JavaScript 版块看 这篇绝世好文 。...对于我来说,做一个全栈工程师是非常值得的,对比我以前只做 Flash 的日子,我现在更喜欢我的工作,当时工作多而且工资低(没有 JavaScript)。 你呢,你是全栈还是也精于专呢?
为了给全栈工程师一个最新鲜的定义,我们首先来关注一下全栈工程师以前是搞什么的。...写一些基本的 PHP 4.0 脚本(非面向对象的 PHP 即将成为历史)来处理服务端逻辑 保存所有的动态数据到 MySQL 中,也可能会做一些小优化 用 FTP 上传所有代码、数据库什么的到一台服务器,...幸运的是,也有办法避免学习 NodeJS,用PHP也是可以的 像Composer这样的 PHP 包管理工具在现代化的开发环境中已经离不开了。...via GIPHY 想知道一个正常的前端知识图谱是怎么样的,可以看 this excellent post 的JavaScript 版块。...对于我来说,做一个全栈工程师是非常值得的,对比我以前只做 Flash 的日子,我现在更喜欢我的工作,当时工作多而且工资低(没有 JavaScript)。 你呢,你是全栈还是也精于专呢?
本来我是打算写这一篇的原理的,但是阅读完了代码,自己没有这个能力写如此数学系的博客。...但使用 ManipulationProcessor2D 如果是用在多点触摸上,意味着你需要处理大量触摸交互细节。本文以下的逻辑仅仅只是做很少的细节处理,不建议你抄下面代码放在你的产品应用上。...而因为此要求,将会让逻辑设计的时候比较复杂,原因是如果是用在多点触摸上,通过 Touch 或 Stylus 事件,每次获取的只是指定单个触摸设备的触摸点,而不是能拿到当前所有的触摸设备的触摸点,因此最简方法是加上一个字典做缓存...上面代码的 _points 仅仅保存一个触摸设备的一个触摸点。以上的触摸设备用的是 StylusDevice 概念,相当于一个手指就是一个触摸设备,而不是说有多个触摸屏幕。...本质上 ScaleX 和 ScaleY 是由 ExpansionX 和 ExpansionY 推出的,但在 WPF 缩放里面,采用的是缩放比 以下是全部的代码 public partial class
---- 少不了的源码 于是,我立刻翻开了 Find 和 FirstOrDefault 的源代码: public T Find(Predicate match) { if( match =...接下来的分析才发现,没这么简单。 Find V.S. FirstOrDefault 我写了两段代码,然后在单元测试中测量它们的性能。方法我按不同顺序写了两遍,试图降低初始化影响和偶然事件的影响。...为了了解原因,我将 Find 和 FirstOrDefault 中的方法写到测试里面: private int For(Predicate match) { for (var i =...▲ 调用 Find 和 FirstOrDefault 我写的 For 和 Find 中一定还存在着哪里不一样——对,是索引器!...如果要验证这个问题,我就需要比较数组了。 List V.S. Array 改写我们的测试代码,这回的 For 方法有两个重载,一个列表一个数组。
还有我发现EF6会根据数据库中是nvarchar的时候才会生成带“N”的sql,oracle数据库没测试,有兴趣的同学可以测试下) 性能提升之AsNoTracking ? 我们看生成的sql ?...sql是生成的一模一样,但是执行时间却是4.8倍。原因仅仅只是第一条EF语句多加了一个AsNoTracking。 AsNoTracking干什么的呢?...解决方案: guget下载System.Linq.Dynamic 导入System.Linq.Dynamic命名空间 编写OrderBy的扩展方法 ? 然后上面又长又臭的代码可以写成: ?...这段代码我也是从网上偷的,具体链接找不到了。 然后我们的代码可以写成: ? 有没有美美哒一点。然后我们看看生成的sql是否正确: ?...在直接属性判断里面any和FirstOrDefault() != null性能区别不大,count性能要差的多。 所以,不管是直接属性还是导航属性我们都用any来判断是否存在是最稳当的。
授权中心之自定义授权模式 Asp.Net Core 中IdentityServer4 授权原理及刷新Token的应用 二、Claim 是什么 Claim Claim 我的理解是一个声明,存储着一个键值对的关系...,就相当于身份证中的 姓名:特朗普 , 性别:男等等身份证的系列元素,每一个项都是一个键值,我们看看Claim主要代码 public class Claim { public string ClaimType...从代码中还有一个特别重要的属性AuthenticationType 翻译成认证类型,这里也就相当于证件类型,比如身份证,它的证件类型就是"身份证",护照证机的证件类型就是"护照"。...三、实战 我这里继续我上几篇文章的代码基础上编写,需要代码的可以访问 https://github.com/a312586670/IdentityServerDemo 代码会跟着博客同步更新。...AddProfileService()方法添加到DI中,才能在API资源中获取到用户的身份信息,代码如下: public void ConfigureServices(IServiceCollection
—— 忘了叫什么的作者 软件开发七年多了,最近突发奇想,想对平时开发中,经常遇到的,但是比较鸡肋的一些开发技巧和方案做个系统性的归纳和思考,比如软件开发中,到底要不要创建主外键?...在写迁移的过程中,我开始思考一个问题,为什么要这么复杂呢,有没有其他方案呢,这里先简单说下如果涉及到表数据迁移,特别是复杂级联表关系数据的迁移应该怎么办?...所以到目前,我还是没有真正使用这个方案,新项目打算尝试一下。那接下来就说一下,如果全部是自增主键id做业务关联,如何实现数据的迁移。...我的方案就是通过代码的方案,用树的形式,导入,这样用新的pid做关系键就能实现目的。...Module做保存,这块代码就稍微多了些,主要通过递归的方式,因为是一棵树,要注意的就是,以前保存过的,肯定不要再保存了,只需要获取id就行,注意的是需要开启事务哟,这里巧用了读写分离的方案,具体的详细内容可以参考这个文章
:“Error: ClientId is not a GUID. ” 如下图 解决方法是在 appsettings.json 文件里面加上 identityClientId 的值,如下面代码 {...,那只需要知道,在应用启动之后,将会调用 StartAsync 方法即可 以上代码是进行初始化,以及初始化登录模块 而是创建窗口的逻辑是放在 HandleActivationAsync 方法里面 在判断当前还没有启动任何窗口的时候...,将会启动 MainWindow 作为主创建,但是启动窗口的方法是通过 MainViewModel 进行的 如下面代码 private async Task HandleActivationAsync...MVVM 部分做的不错,来看一下项目的大框架,各个文件按照 MVVM 的方法放在不同的文件夹 我很熟悉 MVVM 因此一看就知道各个文件是做什么的,通过此工具创建也可以让新手了解如何编写 MVVM...,搭建出来一个能用的框架 以上的代码放在 github 和 gitee 欢迎访问 可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码
查看源码发现Session是定义在Controller中的类型为HttpSessionStateBase的属性。...2、一探究竟ClaimsAbpSession 以下代码是ClaimsAbpSession的节选: /// /// Implements <see cref="IAbpSession"...;} } 所以并非是单例模式(长了个记性,并不是定义了Instance属性的就是单例) 将上面两部分代码一中和,AbpSession中的UserId不就是这样获得的: ((ClaimsPrincipal...三、捋一捋Abp中的登陆流程 定位到AccountController,关注下以下代码: [HttpPost] [DisableAuditing] public async Task<JsonResult...你的支持是我不断创作和分享的不竭动力!
使用之前,我们先来明白这几个东西是用来干什么的。node.js: 一种javascript的运行环境,能够使得javascript脱离浏览器运行。...webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包。vue-cli: 用户生成Vue工程模板。...(其他盘方法同)我打算把这两个路径换到安装nodejs的目录,C:\nodejs在C:\nodejs新建两个文件夹node_globalnode_cache§ 这两个文件夹是全局模块目录和缓存目录图片然后运行以下...是专为 Vue.js 开发的便于实现单页应用的工具库,能够以声明式的方法编写页面的导航和跳转信息。...对path环境变量添加 C:\nodejs\node_global⊕注意: win10以下版本的,横向显示PATH的,注意添加到最后时,不要有分号【;】图片(修改path后需要重新打开cmd 才会上边更改的变量生效
在 dotnet 里面的 ConcurrentDictionary 是一个支持并发读写的线程安全字典,在这个字典里面有一些行为会出现随机性,即多次执行相同的代码返回的结果可能不相同。...在 ConcurrentDictionary 里面如果使用 FirstOrDefault 方法,则随机获取到字典里面的一项,但对相同的一个 ConcurrentDictionary 对象多次调用 FirstOrDefault...方法,不能保证获取到的对象就是第一个加入到 ConcurrentDictionary 字典里面的对象 如以下代码例子 using System.Collections.Concurrent; for...,字典里面存放的顺序和传入的 Key 对象的 Hash 有关,调用 FirstOrDefault 方法时获取到的是里面的 Table 字典的按照内存空间顺序的首项 由此原理即可知道,使用 FirstOrDefault...可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码 git init git remote add origin
但是当你对命令不熟(再优秀的程序员也无法记住全部),却想做什么的时候却有点懵,比如用于打包解压缩命令的tar,怎么用?...1.2 安装tldr ubuntu下安装很简单,执行以下三条命令: sudo apt-get install nodejs sudo apt-get install npm sudo npm install...-g n sudo n latest 如果升级nodejs失败,可能是Ubuntu版本问题,用以下命令安装稳定版nodejs: sudo n stable sudo node -v 然后再安装tldr...管道配合printf调试程序 Linux下,gdb是一个很好的调试工具,不会用的可以学一下,在这篇文章中,我并不打算介绍gdb,而是教你用管道机制,利用Linux里一些命令配合printf来调试。...在程序中使用printf加入调试信息,或作为输出信息,是常用的调试和输出方法,但经常会遇到打印出几百行,不容易阅读的情况。
乍一看,Minimal APIs 似乎是微软对 NodeJS(使用 ExpressJS)HTTP 服务器的回应,它提供了最小的 API。...; app.Run(); 在上面的示例中,app.MapGet 方法使用了内联 lambda 表达式,完成一个Controller Action的业务逻辑,真的是超简单。...只需要这 4 行代码即可生成以下输出: 二、探究一下这段代码背后的一些技术 上面的代码,微软官方文档上,建议大家使用VS2022,其实用VS Code也可以 Tutorial: Create a minimal...当然,如果不想使用此功能,可以禁用 .csproj 文件中的ImplicitUsings标志。 在上面的示例中,app.MapGet 方法使用了内联 lambda 表达式。...这个代码中,我们看到保存订单方法有2个参数,一个是Order,另一个是IOrderService,第二个参数,原生支持依赖注入,不需要显式声明创建。
每个域名都有各自相对应的IP地址,IP地址是一连串难以记住的数字子母。...如果不做转换就会以IP地址做访问链接,很多人都记不住这个访问链接,只能转换成便以记忆的域名才能让用户更快速的记住,这个转换的过程称为DNS解析。下面给大家介绍如何查看域名对应的ip?...image.png 如何查看域名对应的ip 如何查看域名对应的ip?域名就相当于IP,当想知道某个域名对应的IP数是什么的时候。...这个方法除了查域名,也可以查IP,查看IP的运行情况是否正常。也可以进行反查域名,在命令提示符中输入nslookup空格加域名就可以反查到这个域名的IP是多少,很简单,大家赶紧试试吧。...如果IP出现问题,是ping不出IP数值的,会直接显示出错,这时候就要大家去注册平台询问一下客服了。
这个命令可以查看安装的模块及依赖 npm init 创建模块 创建模块,package.json 文件是必不可少的。 ?...repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。 main - main 字段是一个模块ID,它是一个指向你程序的主要项目。...keywords - 关键字 npm help 查看某条命令的详细帮助 例如npm help install,系统在默认的浏览器或者默认的编辑器中打开本地nodejs安装包的文件/nodejs/node_modules...字段中,可以自定义命令来配置一个服务器环境和安装一系列的必要程序,如 "scripts": { "start": "gulp -ws" } 此时在cmd中输入npm start命令相当于执行gulpfile.js...字段中,可以自定义该命令来执行一些操作,如 "scripts": { "test": "gulp release" }, 此时在cmd中输入npm test命令相当于执行gulpfile.js文件自定义的
面经如下: CVTE: 简述一下项目js闭包及解决办法js原型, 原型链, 继承angularJS数据绑定的原理手写代码字符串反转CSS中content如何自适应 然后就让我问他问题, 我问了我这场面试表现怎么样...还有直接上手敲代码,我写出来了,说我写的不规范,最好用函数封装起来好未来 (二面)敲了两段代码,基本都写出来了我现在回想起来,好像知道我挂在哪了,当时问我你喜欢看什么小说,印象最深的是哪本,讲了什么。...于是我没多想就说了松本清张的《苍白的轨迹:箱根温泉杀人手稿》,讲述的是凶手如何设计一个漫长的复仇计划,不急不缓,丝丝入扣,在岁月的配合下,将棋局中的人,一个接一个地抹杀。...三面(hr面) 我们公司是做什么的你能接受的薪资是多少你家在哪,父母做什么的然后带着我在公司休闲区参观了一下 四面(副总面) 我们公司是做什么的你实习的公司好在哪里,你感受到了什么样的氛围如果你到了我们公司...如果公司有待改善的地方,你怎么提出来 五面(总裁面) 我们公司是做什么的,然后我就扯了一下新技术现在的发展,如果我入职,我将会从那几个方面进行技术研发 途家: (一面)很随意,先做笔试题一个算法题,Dijkstra
在开始阅读本文之前,我期望你已熟悉源代码生成机制以及 dotnet 的构建过程。本文非新手友好 我开始是不知道还有 Incremental Generators 机制的存在。...本文的所有代码都可以在本文最后找到下载地址 推荐大家按照本文的步骤,照着做一次,做一次将会更好的了解增量的代码生成的逻辑是如何写的 在 WhacadenaKewarfellaja 项目里面,只包括一个叫...第二个方法是通过本文以下使用的项目引用方法,使用项目引用的方法更加方便调试。...如此就是增量代码生成的关键 告诉框架层从变更的文件里面感兴趣什么数据,对数据预先进行处理 预先处理过程中,是会不断进行丢掉处理的 其中第一步和第二步可以合在一起 使用给出的数据进行处理源代码生成逻辑...,通过输出了解 Count 的值,从而了解到这个增量生成源代码的性能提升 以下是核心的代码 [Generator(LanguageNames.CSharp)] public class
相信大家看过我前两天写的网站优化中的标题优化和内容优化;肯定想知道除了标题优化和内容优化还可以优化什么?...这个方法长应用于博客和论坛推广当中,很多人会在文章结尾留上相关阅读,然后链接到网站的某一篇文章,对流量的提升有较大的帮助。...提升销售 如果你的站是卖产品或者服务的,利用论坛签名做描文本链接那是相当于免费的广告,利用论坛巨大的流量做免费的广告,就像广告联盟的广告只要有百分之一的点击率就足够了。...锚文本和超链接哪一个更重要编辑 超链接提升整体权重,而锚文本看似是主要提高关键词排名,但是,它其实是对这个链接进行一个描述,就像一个网站写了标题、关键词、页面描述这些,一个网站没写这些,同时告诉搜素引擎、用户那个页面是做什么的...,相当于给那个页面帖上了一个标签的性质,同时也有提高权重的作用,而超链接指是指引一个连接,但是并没有对这个链接进行一个描述,所以我还是觉得锚文本是比超链接重要!
领取专属 10元无门槛券
手把手带您无忧上云