摘要: 如果说前面16篇讲的都是XCode的ORM功能,从这一篇开始,将超越ORM之外,从另一个角度讲解一个数据中间件! 实体接口IEntity,抽象实体对象的添删改存操作,支持访问脏数据和扩展属性! 实体工厂接口IEntityOperate,抽象提供实体类的元数据、查询、事务、设置!阅读全文
posted @ 2019-05-30 13:27 大石头 阅读(569) 评论(9) 编辑
摘要: 使用关系型数据库来做大数据,第一步必然是索引! 单表超过1000万数据,任何查询都必须走索引!否则数据库一定跟你说ByeBye!阅读全文
posted @ 2019-05-23 19:37 大石头 阅读(3335) 评论(22) 编辑
摘要: 前文提到了以sql为key的数据层缓存,以及整表缓存的实体列表缓存,各自有其优缺点,适用于不同场合。 当单表数据较大(10万+)时,两者就无能为力了。天空一道巨响,对象字典缓存隆重登场! 对象字典缓存:以主键为key,缓存实体对象,以满足应用层的高频单点查询需求!阅读全文
posted @ 2019-04-21 00:58 大石头 阅读(1017) 评论(10) 编辑
摘要: 在实际项目开发中,经常遇到有一些表数据很少(1000行以内),不会频繁修改(平均每行几个小时才会修改一次),例如配置表、分类表等。 这样的表,往往可以接受三五秒甚至更长的延迟,正是最适合使用缓存的地方。 实体缓存:一次性加载全表数据进入内存,供上层多维度查询!阅读全文
posted @ 2019-04-20 08:27 大石头 阅读(1053) 评论(2) 编辑
摘要: 缓存是一把尖刀,合理使用可大大提升吞吐率!阅读全文
posted @ 2019-04-18 22:57 大石头 阅读(1008) 评论(5) 编辑
摘要: 码农法则:数据库压力小于100qps时不要考虑指明select列来优化,大多数系统活不到需要优化的明天!阅读全文
posted @ 2019-04-17 22:36 大石头 阅读(1730) 评论(6) 编辑
摘要: XCode不支持多表关联查询,单表查询利于优化以及分表分库,一切Join都可以借助扩展属性实现,配合缓存使用可以达到更好的效果!阅读全文
posted @ 2019-04-01 22:47 大石头 阅读(954) 评论(12) 编辑
摘要: 事务,通俗来讲,同时干几件事,要么一起成功,要么一起失败!阅读全文
posted @ 2019-04-01 21:53 大石头 阅读(375) 评论(0) 编辑
摘要: 向 Meta.Factory.AdditionalFields 添加需要采用增量累加的字段,执行update时才生成 x=x+123 样子的语句阅读全文
posted @ 2019-03-26 22:51 大石头 阅读(298) 评论(1) 编辑
摘要: 在XCode中,每次执行实体类更新entity.Update时,都希望只更新修改过的字段,而不是update所有字段。 一方面,减少数据库压力以及通信流量; 另一方面,多线程同时更新同一行数据的不同字段,在未加锁的情况下,避免脏写。阅读全文
posted @ 2019-03-26 20:24 大石头 阅读(606) 评论(2) 编辑
摘要: 前文《XCode添删改》给大家展示了添删改数据的基本概况,本文将详解添删改高级功能。阅读全文
posted @ 2019-03-18 23:03 大石头 阅读(1006) 评论(5) 编辑
摘要: 所谓数据初始化,就是在所有数据库操作之前,执行一些用户自定义操作! 一般应用系统部署都需要安装脚本,建立数据表以及导入基础数据,才能跑起来。 在XCode中,“建立数据表”这一步由反向工程包揽,再辅以一个“导入基础数据”的功能即可。 此外,系统在初步配置的过程中,经常可能出现需要清空某些表,然后重置到“出厂数据”的状态,例如魔方的菜单初始化。阅读全文
posted @ 2019-03-18 22:07 大石头 阅读(550) 评论(1) 编辑
摘要: 反向工程是XCode的大杀器,区别于其它ORM的最强功能! 通俗理解:基于XCode开发的应用,无需数据库安装脚本,连接字符串指向哪一台哪一种数据库,系统就自动在上面建库建表! 正式定义:基于实体类的表结构信息,在连接字符串指定的目标数据库上自动执行建库建表、添删改字段、创建索引等操作,支持各种数据库! 应用系统首次启动完成的时候,也是自动建表建库并初始化完成的时候。阅读全文
posted @ 2019-03-13 22:19 大石头 阅读(2359) 评论(13) 编辑
摘要: 新生命团队的数据中间件NewLife.XCode,有其独特的配置方式,支持集成配置中心,代表作有百亿级大数据实时计算项目!阅读全文
posted @ 2019-03-13 00:05 大石头 阅读(1458) 评论(14) 编辑
摘要: NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode。 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中。阅读全文
posted @ 2019-03-11 21:47 大石头 阅读(1874) 评论(13) 编辑
摘要: 数据模型文件是XCode数据库开发的中心,曾经流程和支持的DB First和Entity First,经过10多年优胜劣汰,只剩下Model First。阅读全文
posted @ 2019-02-26 00:23 大石头 阅读(878) 评论(4) 编辑
摘要: NewLife.XCode是一个有10多年历史的数据中间件,以下简称XCode。 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含多年开发经验于其中。阅读全文
posted @ 2019-02-25 23:15 大石头 阅读(2047) 评论(13) 编辑
摘要: X组件缓存架构以ICache接口为核心,包括MemoryCache、Redis和DbCache实现,支持FX和netstandard2.0!阅读全文
posted @ 2018-09-26 08:30 大石头 阅读(2026) 评论(15) 编辑
摘要: 经过十多年实战经验积累以及多方共同讨论,新生命团队(https://github.com/newlifex)制订了一种简单而又具有较好扩展性的RPC(Remote Procedure Call)协议。全称:简易远程消息交换协议,简称:SRMP(Simple Remote Messaging Protocol) SRMP主要定位于以下场景: 内网高速通信,大吞吐量(>100万tps)、低延迟(<1ms) 外网远程通信,稳定可靠,海量连接(>10万) 物联网硬件设备,容易简单实现协议阅读全文
posted @ 2018-09-20 09:30 大石头 阅读(464) 评论(0) 编辑
摘要: 相当一部分大数据分析处理的原始数据来自关系型数据库,处理结果也存放在关系型数据库中。原因在于超过99%的软件系统采用传统的关系型数据库,大家对它们很熟悉,用起来得心应手。 在我们正式的大数据团队,数仓(数据仓库Hive+HBase)的数据收集同样来自Oracle或MySql,处理后的统计结果和明细,尽管保存在Hive中,但也会定时推送到Oracle/MySql,供前台系统读取展示,生成各种报表。 在这种场景下,数据库的读写性能就显得尤为重要!阅读全文
posted @ 2018-09-13 23:49 大石头 阅读(3265) 评论(14) 编辑
摘要: 在ZTO大数据实时计算广泛应用,200多个Redis实例稳定工作一年多,每天处理近1亿包裹数据,日均调用量80亿次; 低延迟,Get/Set操作平均耗时200~600us(含往返网络通信); 大吞吐,自带连接池,最大支持1000并发; 高性能,支持二进制序列化;阅读全文
posted @ 2018-08-30 01:00 大石头 阅读(2097) 评论(4) 编辑
摘要: 2017年6月,开始大数据分析的职业生涯,作为架构师,建立起一套基于.Net的小数据实时处理计算平台,这里记录学习过程中的点点滴滴! 数据分析的核心,可以理解为:Select xxx From table Where yyy Group By zzz阅读全文
posted @ 2018-08-12 10:57 大石头 阅读(3360) 评论(6) 编辑
摘要: 魔方 是一个基于 ASP.NET MVC 的 用户权限管理平台,可作为各种信息管理系统的基础框架。 演示:http://cube.newlifex.com 源码 源码: http://git.newlifex.com/NewLife/NewLife.Cube海外: https://github.co阅读全文
posted @ 2018-08-12 09:28 大石头 阅读(929) 评论(0) 编辑
摘要: 本文目标是指引从未使用过Linux的.Neter,如何在CentOS7上安装.Net Core环境,以及部署.Net Core应用。阅读全文
posted @ 2018-07-08 22:37 大石头 阅读(5304) 评论(62) 编辑
摘要: 为了便于大家学习测试netcore,我们计划提供1~3台公网Linux服务器(CentOS/Ubuntu),1vCPU+1G内存+100Mbps,为期1年,每周重置系统修改一次密码阅读全文
posted @ 2018-07-08 11:04 大石头 阅读(2014) 评论(4) 编辑
摘要: ThreadPool空有1000个最大线程数,实际上超过CPU个数的线程后,线程分配会放缓。在线程池执行的同步方法中等待异步方法完成,很容易产生死锁。阅读全文
posted @ 2018-07-05 18:40 大石头 阅读(4267) 评论(22) 编辑
摘要: 微服务和消息队列的基础都是RPC框架,比较有名的有WCF、gRPC、Dubbo等,我们的NewLife.ApiServer建立在网络库NewLife.Net之上,支持.Net Core,追求轻量级和高性能。阅读全文
posted @ 2018-05-14 00:10 大石头 阅读(5005) 评论(26) 编辑
摘要: Tcp网络编程,必须要解决的一个问题就是粘包,尽管解决办法有很多,这里讲一个比较简单的方法。阅读全文
posted @ 2018-05-11 02:24 大石头 阅读(1800) 评论(12) 编辑
摘要: NewLife-Net压力测试,峰值4.2Gbps,50万pps,消息大小24字节,消息处理速度2266万tps!共集合20台高配ECS参与测试,主服务器带宽6Gbps、100万pps,16核心64G内存。阅读全文
posted @ 2018-05-10 08:20 大石头 阅读(5733) 评论(39) 编辑
摘要: 网络程序应该注册成为系统服务,以保证其自启动以及稳定可靠运行! 这一场,讲讲怎么建立一个生产级别的网络服务。阅读全文
posted @ 2018-05-09 00:30 大石头 阅读(4622) 评论(11) 编辑
摘要: 一个网络库,应该足够简单,让用户只需要关心只需要关心业务逻辑!阅读全文
posted @ 2018-05-07 00:29 大石头 阅读(3884) 评论(17) 编辑
摘要: 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。阅读全文
posted @ 2018-04-02 14:48 大石头 阅读(409) 评论(0) 编辑
摘要: 最近群里聊起秒杀和限流,我自己没有做过类似应用,但是工作中遇到过更大的数据和并发。 于是提出了一个简单的模型: var count = rds.inc(key); if(count > 1000) throw "已抢光!" 借助Redis单线程模型,它的inc是安全的,确保每次加一,然后返回加一后的阅读全文
posted @ 2018-01-17 12:33 大石头 阅读(8866) 评论(35) 编辑
摘要: 大数据时代,海量数据分析就像吃饭一样,成为了我们每天的工作。为了更好的为公司提供运营决策,各种抖机灵甚至异想天开的想法都会紧跟着接踵而来!业务多变,决定了必须每天修改系统,重新跑数据,这就要求极高的海量数据读取和存储速度! 公司每天增加几亿行的业务日志数据,我们需要从中分析出各种维度的业务画像。经过阅读全文
posted @ 2018-01-16 12:32 大石头 阅读(7705) 评论(44) 编辑
摘要: 魔方是一套集成权限管理的MVC管理后台,最具特色功能是模版覆盖机制,是XCode实体类的最佳搭档! 借助魔方v2.0的Ajax机制,普通C#工程师可以无需编写js脚本即可完成各种高级操作!阅读全文
posted @ 2017-11-27 10:04 大石头 阅读(1867) 评论(7) 编辑
摘要: win2016多用户登录: 添加角色“远程桌面服务”,子角色“远程桌面会话主机”和“远程桌面授权”,重启 远程桌面授权,激活服务器,企业协议,协议号6565792,授权模式“每用户” 本地策略管理器gpedit.msc,管理模版,Windows组件,远程桌面服务,远程桌面会话主机,授权,许可证服务器阅读全文
posted @ 2017-10-26 14:17 大石头 阅读(3880) 评论(2) 编辑
摘要: Cortex-Mx启动,备忘,以免将来忘记。中断向量表不用说,从重置中断开始吧 这里一共就执行了两个函数,SystemInit和__main。 我们一般在SystemInit里面配置系统时钟,这里跳过。__main是我们今天的重点。 分散加载这里将会初始化我们的全局静态变量 可能汇编看起来不是很直观阅读全文
posted @ 2017-09-04 08:29 大石头 阅读(360) 评论(0) 编辑
摘要: SmartOS是一个完全由新生命团队设计的嵌入式操作系统,主要应用于智能家居、物联网、工业自动化控制等领域。ARM Cortex-M系列微处理器几乎全都做成单核心,对于业务逻辑较复杂的物联网就显得难以使用,因此SmartOS设计了两个多任务调度系统:1,多线程调度,重量级,逼近PC操作系统多线程用法阅读全文
posted @ 2017-09-03 13:27 大石头 阅读(1040) 评论(0) 编辑
摘要: 设备身份验证有以下目标:1,别人的设备不能接入我们的云平台2,我们的设备,不能接入别人的云平台3,考虑到设备要批量生产,云平台先生成设备编码再写入每个设备的方法,非常不现实!那么,标准的设备身份验证应该是:1,设备上电联网后,需要一个激活过程2,设备向云平台申请激活,包括 厂商、生产批次、生产密码、阅读全文
posted @ 2017-09-03 13:20 大石头 阅读(384) 评论(0) 编辑
摘要: 以太网接入型设备,一般分为网线或WiFi两种。不管是WiFi还是网线,可以通过局域网抓包、笔记本WiFi桥接抓包等等手段。最著名的抓包软件 Wireshark如何抓取硬件设备的网络数据包,考量的是网络知识基本功,需要大家自行度娘!基本准备工作:1,Wireshark监听udp的53端口,一部分硬件设阅读全文
posted @ 2017-09-02 00:02 大石头 阅读(1549) 评论(0) 编辑