OData - Open Data Protocol,是一个设计和使用RESTful API的标准。REST本身只是一个构建web服务的思想和理念,其没有规定一个统一的标准来限制开发人员该如何设计RESTful API。其实我们实际开发中的确也没有遵循某个统一的标准去设计WebAPI。因为大多数场景下,遵循一个统一的标准并不是必要的。但在某些场景下,有这样一个标准却能带来很大的好处。
在写之前我们先来看几个问题,假如你对这些问题已经很懂了的话,那大可不用看这篇文章,如果不大懂的话,那么可以看看我的想法。
发布于 2018-01-31 05:38 更新于 2018-05-25 12:33
直到看了Micro8大佬写的教程,我才发现,原来tmux 还可以实现后台不间断运行程序,我跟你说这个功能老牛了!
提示:公众号展示代码会自动折行,建议横屏阅读 「第一部分 背景」 最近我们发现在Read Committed隔离级别下出现了S类型的Gap锁参与的死锁告警。 本身RC隔离级别上出现Gap锁就很诡异了,更诡异的是两条看起来完全不相干的SQL发生了死锁。让我们一起来分析一下吧。 1.1 事务逻辑 简化来看是一个文件移动功能,目的是将文件从source目录移动到dest目录,逻辑如下: 1)查询 source 的父目录(select lock in share mode) 2)查询 dest 的父目录(selec
发布于 2018-08-13 09:21 更新于 2018-09-01 00:14
在平时我们使用字符串一般就是拿来直接搞起,很少有深入的去想过这方面的知识,导致别人在考我们的时候,会问 String str = new String("123"); 这个一行代码执行创建了几个对象, String str1= str + new String("456");这行代码中str1存储在内存的哪个位置,堆or 字符串常量区(方法区)? 会把我们问的哑口无言了;哈哈哈哈,其实也不是水平问题,是我们平时可以仔细的去总结该类问题,下面就详细的对这类问题进行总结;
发布于 2018-05-25 13:24 更新于 2018-06-02 01:26
当你使用LINQ to SQL时,请使用工具(比如LINQPad)查看系统生成的SQL语句,这会帮你发现问题可能发生在何处。
5.数据库 数据库的操作 创建数据库create database mydb ; 查看创建数据库的语句show create database mydb ; 改变当前的数据库use mydb ; 删除数据库drop database mydb ; 查看所有的数据库show databases ; 修改数据库mydb1的字符集为utf8 alter database mydb1 character set utf8 ; 针对表的操作 创建表t create table t( id int , name va
在《上篇》中我们通过T4模板为我们指定的数据表成功生成了我们需要的用于添加、修改和删除操作的存储过程。但是这是一种基于单个文件的解决方案,即我们必须为每一个生成的存储过程建立一个模板。如果我们提供一种基于多文件的代码生成方式,将会为编程人员带来极大的便利。借助于T4 ToolBox这个开源工具箱,多文件的SQL Generator的实现变得异常简单。[文中的例子可以从这里下载] 目录 一、多文件代码生成器会带来多大的便利? 二、创建自定义的Generator 三、ProcedureGenerator
在前面学习Thread源码的时候,提到了Thread可以设置优先级。其优先级通过setPriority方法进行设置。
我在多年的工程生涯中发现很多工程师碰到一个共性的问题:Linux工程师很多,甚至有很多有多年工作经验,但是对一些关键概念的理解非常模糊,比如不理解CPU、内存资源等的真正分布,具体的工作机制,这使得他们对很多问题的分析都摸不到方向。比如进程的调度延时是多少?Linux能否硬实时?多核下多线程如何执行?系统的内存究竟耗到哪里去了?我写的应用程序究竟耗了多少内存?什么是内存泄漏,如何判定内存是否真的泄漏?CPU速度、内存大小和系统性能的关联究竟是什么?内存和I/O存在着怎样的千丝万缕的联系?
WebAssembly(简称Wasm)是一种用于基于堆栈的虚拟机的二进制指令格式。Wasm被设计为编程语言的可移植编译目标,支持在web上部署客户端和服务器应用程序。
这是一个TTL反相器,这是经过了很多工程师多种设计最终沉淀出来的电路,这个电路是比较成熟的。我们只需要对这个电路进行解析即可,不需要再去研究当初是如何设计出来的。
我们在一个网段有多台主机要怎么去探测扫描那,可以使用如下命令进行扫描. 扫描192.168.31网段下的所有主机 /16或/24
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。
上周发了《几行烂代码,我赔了16万》 16w 这篇文章之后,有不下十个朋友来找我,问我一些文章中的问题。
一、概念介绍 1.1,什么是OData? 还是看OData官网的简单说明: An open protocol to allow the creation and consumption of queryable and interoperable RESTful APIs in a simple and standard way. 这是一个开放的数据查询和服务协议,目前已经有众多厂商和平台支持,已经形成了完整的生态链,这应该是未来数据查询的标准,参见官网说明。 OData的意义还在于,它能够大大简小SOA架
.Net 4.5 提供了 async/await 让异步编程回归同步, 不过, async/await 不是只能在 .Net 4.5 下才能使用, 通过使用 Async Targeting Pack 就可以在 .Net 4.0 以及 Silverlight 5 项目中使用 async/await。
在数据导入阶段,会在探针水平做一些过滤,然后得到探针的表达谱数据。导入成功之后,接下来就可以看下QC 情况。
该语句会命中d=5这行,对应主键id=5。 因此在select 语句执行完后,id=5这行会加写锁。因两阶段锁协议,写锁会在执行commit语句时释放。
对于企业开发来说,代码生成在某种意义上可以极大地提高开发效率和质量。在众多代码生成方案来说,T4是一个不错的选择,今天花了点时间写了一个简易版本的T4代码生成的“框架”,该框架仅仅是定义了一些基本的基类以及其他与VS集成相关功能的类型而已。[源代码从这里下载] 目录 一、T4模版的定义和代码文件的生成 二、TransformationContext与TransformationContextScope 三、Template 四、Generator
最近在看数据库相关知识,感觉唯一约束和唯一索引好像有点类似,于是研究了一番,于是就有了这篇文章。
在我们的世界中事物和事物之间总会有一些联系. 在面向对象中. 类和类之间也可以产生相关的关系
EF是传统的ORM框架,也是一个比较重量级的ORM框架。这里仍然使用EF的原因在于为了突出轻量级ORM框架的性能,所谓有对比才有更优的选择。
11月11日~16日,2018年全球超算领域年度盛会、全球超级计算大会(SC18)在美国得克萨斯州达拉斯召开。昨天,Nvidia CEO黄仁勋发表了主旨演讲,简单说,就是未来计算的大旗放心交给英伟达来抗。
本教程为脑机学习者Rose发表于公众号:脑机接口社区(微信号:Brain_Computer),QQ交流群:903290195
经常遇到朋友使用goldengate进行同步数据时,目标端goldengate提示经典的1403错误造成进程abend(也可能有点朋友配置handlecollisions跳过错误或者配置ignore之类,这些是不可取的),部分原因是数据库有正在运行事务时采用expdp初始化数据造成的,例如有些事务被跳过,导致后续遇到更新、删除提示经典错误--1403(找不到数据)
团队日常协作中,自然而然的会出现很多重复代码,根据这些代码的种类,之前可能会以以下方式处理
在《基于T4的代码生成方式》中,我对T4模板的组成结构、语法,以及T4引擎的工作原理进行了大体的介绍,并且编写了一个T4模板实现了如何将一个XML转变成C#代码。为了让由此需求的读者对T4有更深的了解,我们通过T4来做一些更加实际的事情——SQL Generator。在这里,我们可以通过SQL Generator为某个数据表自动生成进行插入、修改和删除的存储过程。[文中源代码从这里下载] 一、代码生成器的最终使用效果 我们首先来看看通过直接适用我们基于T4的SQL生成模板达到的效果。右图(点击看大图)是
本文首先展示了如何将数据导入 R。然后,生成相关矩阵,然后进行两个预测变量回归分析。最后,展示了如何将矩阵输出为外部文件并将其用于回归。
委托与事件在C#1.0的时候就有了,随着C#版本的不断更新,有些写法和功能也在不断改变。本文温故一下这些改变,以及在NET Core中关于事件的一点改变。
在博客堂看到ASP.NET MVC中的T4模板, 之前我也写过一篇文本模板转换工具箱T4。 T4(Text Template Transformation Toolkit)则是微软官方在VisualStudio 2008中开始使用的代码生成引擎,可惜T4不像微软公布的别的工具那样参考资料充足,而且模板也很少,MSDN上甚至没有一个专门的目录用来介绍它,惟一沾边的就是在介绍DSL工具时带上的Generating Artifacts By Using Text Templates。 Visual Web Dev
下面如果我们把synchronized去掉,就会出现线程不安全的情况,多次执行程序会出现下面的结果:
文中的例子从线程调度上讲不够严谨。原因是没输出,并不代表线程无法进入方法,有可能是线程一直没有被调度。
在可重复读的隔离级别下,我们如果只对id=5(也就是d=5由于d上没有索引,所以会走主键索引树)加行锁,我们可以分析一下SessionA会出现什么情况:
提示:公众号展示代码会自动折行,建议横屏阅读 「第一部分 查询优化器框架」 关系型数据库是一个通用系统软件,SQL作为一种结构化查询语言,用户不需要关注怎么做,只需要描述做什么,然后交由SQL引擎来处理。因为关系代数提供的等价性,同一个查询可以用不同的SQL语句描述。为防止用户所写的"不好的"SQL执行慢,这就需要查询优化器快速而准确地选择出一个效率较高的执行计划。 一般的查询优化器基于代价计算模型,包含SQL形态的变换,确定访问路径和多表连接顺序等几个重要的步骤。这些步骤被统一在一个优化器框架之内,相互
队列的使用,队列的特点先进先出,理解这个特点就可以了。二叉树的特点其实也是很常用的,业务场景中关于树的操作就是树形结构的返回了,这也是我们在其他网站见到的内容,具有层级关系的展示很符合人的审美
晚上看到个帖,matlab演奏卡农,眼前一亮,以前从没想过用matlab出声,作者真乃大牛。看到一条评论:卡农算什么,有本事来最炫民族风。。。。于是我就手贱了。。。 花了几个小时。。。1/3在读懂卡农的程序,1/3在学习简谱知识(还好小学初中学过点),1/3在把简谱转换成代码。。。 不多说,程序如下,欢迎试听哈: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
想要获取免费算力?可能最常见的方法就是薅谷歌的羊毛,不论是 Colab 和 Kaggle Kernel,它们都提供免费的 K80 GPU 算力。不过虽然 K80 这种古董级的 GPU 也能提供可观的算力,但我们发现用于试验模型越来越不够用了。尤其最近的 Transformer 或 GPT-2 等复杂模型,不是训练迭代时间长,就是被警告显存已满。
fs=44100;dt=1/fs;T16=0.125;t16=[0:dt:T16];
前一阵子写了不少关于代码生成相关的文章,介绍了一些如何通过VS自动生成代码的解决方案,比如CodeDOM、T4以及ASP.NET的BuildProvider等。现在将它们作一个汇总,给广大读者作一个参考。 [第1篇] 通过CodeDOM定义生成代码的结构 我不知道大家对CodeDOM的代码生成机制是否熟悉,但是有一点可以确定:如果你使用过Visual Studio,你就应该体验过它带给我们在编程上的便利。随便列举三种典型的代码生成的场景:在创建强类型DataSet的时候,VS会自动根据Schema生成相应的
用数学软件演奏音乐早已不是什么新鲜事,很早就有人用Matlab弹奏卡农或是最炫民族风,最近我知道还有人用无理数生成一段音乐,很有趣。而我选择用Mathematica弹奏卡农是因为卡农这种谱曲方式很奇妙,体现在程序上也是简洁而优美的。可能有人还不了解卡农是什么,卡农不是指某一首具体 的曲子,而是一种谱曲方式,它把几段相同的旋律在不同的时刻逐次展开,交错的旋律又能相互配合,形成一首完整的卡农。这首用Mathematica演奏的卡农就是大家最耳熟的“帕赫贝尔的卡农”,你可以在它的乐谱中一窥其中的奇妙。 我们关注
在前面的博文《驱动开发:内核读取SSDT表基址》中已经教大家如何寻找SSDT表基地址了,今天给大家分享两个适用于WinDBG调试器上的脚本文件,该脚本文件可以很好的枚举出当前系统内的SSDT以及SSSDT表中的数据,可以方便后续文章的学习参考之用,当然脚本不是我写的,文章末尾我会给出参考原文链接。
随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力。所以,多线程技术是服务端开发人员必须掌握的技术。线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,线程池中有已经创建好的线程,可直接使用,并且使用完了,直接再次放回线程池,避免频繁的线程创建和销毁。
Nginx 常作为最常见的服务器,常被用作负载均衡 (Load Balancer)、反向代理 (Reverse Proxy),以及网关 (Gateway) 等等。一个配置得当的 Nginx 服务器单机应该可以期望承受住 50K 到 80K 左右每秒的请求,同时将 CPU 负载在可控范围内。
mmp3 跟 epaxos 有个不同的地方, instance 复制到 replica 时要记录所有依赖的instance, 包括间接依赖的. 这是mmp3 保证 线性一致性的一个条件, 读过epaxos的同学可能会漏掉这个细节导致无法证明线性一致性. 例如下面这个容易出现疑问的 case:
设备管理器中显卡名称是否带GRID和Tesla字样区分的是卡的切分方式(如果不是整卡,比如是1/8卡、1/4卡、1/2卡的vGPU,安装Grid驱动后设备管理器中显卡名称会显示GRID字样)
一般MPLS V**体系结构都是在一个自制西戎内运行,任何V**的路由信息都是只能在一个自治系统内按需扩展,没有提供自治系统内的V**信息向其他自治系统扩散的功能
领取专属 10元无门槛券
手把手带您无忧上云