摘要: 微服务和消息队列的基础都是RPC框架,比较有名的有WCF、gRPC、Dubbo等,我们的NewLife.ApiServer建立在网络库NewLife.Net之上,支持.Net Core,追求轻量级和高性能。阅读全文
posted @ 2018-05-14 00:10 大石头 阅读(2892) 评论(24) 编辑
摘要: Tcp网络编程,必须要解决的一个问题就是粘包,尽管解决办法有很多,这里讲一个比较简单的方法。阅读全文
posted @ 2018-05-11 02:24 大石头 阅读(1068) 评论(10) 编辑
摘要: NewLife-Net压力测试,峰值4.2Gbps,50万pps,消息大小24字节,消息处理速度2266万tps!共集合20台高配ECS参与测试,主服务器带宽6Gbps、100万pps,16核心64G内存。阅读全文
posted @ 2018-05-10 08:20 大石头 阅读(4254) 评论(37) 编辑
摘要: 网络程序应该注册成为系统服务,以保证其自启动以及稳定可靠运行! 这一场,讲讲怎么建立一个生产级别的网络服务。阅读全文
posted @ 2018-05-09 00:30 大石头 阅读(2839) 评论(9) 编辑
摘要: 一个网络库,应该足够简单,让用户只需要关心只需要关心业务逻辑!阅读全文
posted @ 2018-05-07 00:29 大石头 阅读(2132) 评论(12) 编辑
摘要: 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。阅读全文
posted @ 2018-04-02 14:48 大石头 阅读(202) 评论(0) 编辑
摘要: 最近群里聊起秒杀和限流,我自己没有做过类似应用,但是工作中遇到过更大的数据和并发。 于是提出了一个简单的模型: var count = rds.inc(key); if(count > 1000) throw "已抢光!" 借助Redis单线程模型,它的inc是安全的,确保每次加一,然后返回加一后的阅读全文
posted @ 2018-01-17 12:33 大石头 阅读(5606) 评论(35) 编辑
摘要: 大数据时代,海量数据分析就像吃饭一样,成为了我们每天的工作。为了更好的为公司提供运营决策,各种抖机灵甚至异想天开的想法都会紧跟着接踵而来!业务多变,决定了必须每天修改系统,重新跑数据,这就要求极高的海量数据读取和存储速度! 公司每天增加几亿行的业务日志数据,我们需要从中分析出各种维度的业务画像。经过阅读全文
posted @ 2018-01-16 12:32 大石头 阅读(5167) 评论(43) 编辑
摘要: 魔方是一套集成权限管理的MVC管理后台,最具特色功能是模版覆盖机制,是XCode实体类的最佳搭档! 借助魔方v2.0的Ajax机制,普通C#工程师可以无需编写js脚本即可完成各种高级操作!阅读全文
posted @ 2017-11-27 10:04 大石头 阅读(1552) 评论(7) 编辑
摘要: Windows服务器多用户同时登录问题,仅提供要点,其它自行百度: 1,Windows Server 远程桌面默认只能2个连接 2,安装终端服务(远程桌面会话主机)、终端授权(远程桌面授权) 3,终端服务可以不限同时连接用户数,但是120天内必须激活授权 4,120天到期后,删改注册表下的项也许能够阅读全文
posted @ 2017-10-26 14:17 大石头 阅读(445) 评论(2) 编辑
摘要: Cortex-Mx启动,备忘,以免将来忘记。中断向量表不用说,从重置中断开始吧 这里一共就执行了两个函数,SystemInit和__main。 我们一般在SystemInit里面配置系统时钟,这里跳过。__main是我们今天的重点。 分散加载这里将会初始化我们的全局静态变量 可能汇编看起来不是很直观阅读全文
posted @ 2017-09-04 08:29 大石头 阅读(236) 评论(0) 编辑
摘要: SmartOS是一个完全由新生命团队设计的嵌入式操作系统,主要应用于智能家居、物联网、工业自动化控制等领域。ARM Cortex-M系列微处理器几乎全都做成单核心,对于业务逻辑较复杂的物联网就显得难以使用,因此SmartOS设计了两个多任务调度系统:1,多线程调度,重量级,逼近PC操作系统多线程用法阅读全文
posted @ 2017-09-03 13:27 大石头 阅读(439) 评论(0) 编辑
摘要: 设备身份验证有以下目标:1,别人的设备不能接入我们的云平台2,我们的设备,不能接入别人的云平台3,考虑到设备要批量生产,云平台先生成设备编码再写入每个设备的方法,非常不现实!那么,标准的设备身份验证应该是:1,设备上电联网后,需要一个激活过程2,设备向云平台申请激活,包括 厂商、生产批次、生产密码、阅读全文
posted @ 2017-09-03 13:20 大石头 阅读(224) 评论(0) 编辑
摘要: 以太网接入型设备,一般分为网线或WiFi两种。不管是WiFi还是网线,可以通过局域网抓包、笔记本WiFi桥接抓包等等手段。最著名的抓包软件 Wireshark如何抓取硬件设备的网络数据包,考量的是网络知识基本功,需要大家自行度娘!基本准备工作:1,Wireshark监听udp的53端口,一部分硬件设阅读全文
posted @ 2017-09-02 00:02 大石头 阅读(830) 评论(0) 编辑
摘要: 返回值优化,是一种属于编译器的技术,它通过转换源代码和对象的创建来加快源代码的执行速度。RVO = return value optimization。测试平台:STM32F103VG + Keil 5.15背景:我们有个MacAddress::ToArray 因为封装需要,打算返回字节数组类Byt阅读全文
posted @ 2017-09-01 22:59 大石头 阅读(514) 评论(0) 编辑
摘要: 自2003年开始,断断续续用了12年C++,直到这两年做物联网嵌入式开发,感觉对C++的掌握仅有10%左右。习惯了C#开发,C++倒显得难以下手!今天就一个函数返回问题跟辉月兄弟讨论一番,大有所获,足以解决我们目前80%的问题,感觉对C++的掌握上升到了20%。背景,现有字节数组ByteArray和阅读全文
posted @ 2017-09-01 22:56 大石头 阅读(768) 评论(15) 编辑
摘要: 因为需要自动适配芯片进行系统配置,所以我们有必要通过读取一些系统寄存器来获取必要信息。我们的代码需要兼容STM32F1/GD32F1/STM32F0/STM32F4代码如下: 各常见芯片信息如下:STM32F030C8T6 GD32F130C8T6 STM32F051C8T6 GD32F150C8T阅读全文
posted @ 2017-09-01 14:05 大石头 阅读(154) 评论(0) 编辑
摘要: 无数次遭受堆栈溢出折磨,随着系统变得复杂,故障点越来越难以查找!主要溢出情况如下:1,一般RAM最后两块空间是堆Heap和栈Stack,堆从下往上用,栈从上往下用,任意一个用完,都会进入对方的空间2,如果栈用完,进入堆的空间,这个时候系统是不会有任何异常的,也就是说,栈底没有什么意义。除非堆和栈指针阅读全文
posted @ 2017-09-01 13:55 大石头 阅读(46) 评论(0) 编辑
摘要: 先来看看我们SmartIRQ的具体实现 在构造的时候备份,然后根据参数决定打开还是关闭中断。在系统内核时钟里面,关键操作需要关闭中断,最后打开,以免其它中断影响关键操作的原子事务性。于是我们有: 其中irq在离开作用域时被释放,自动调用SmartIRQ的析构函数,还原了中断状态因为调用极其频繁,最高阅读全文
posted @ 2017-09-01 13:12 大石头 阅读(117) 评论(0) 编辑
摘要: 在测试MF固件时,发生一个非常诡异的异常,代码如下: 指定第二行代码时,会跳到异常处理程序,发生了6号异常(用法异常Usage Fault)我对ARM还是非常陌生,不知道怎么可能发生这个问题。在今天之前,这行代码执行了无数次也未曾出错,最近也没有修改该函数或者相关函数的代码,昨天倒是大量修改了其它代阅读全文
posted @ 2017-09-01 13:06 大石头 阅读(86) 评论(0) 编辑
摘要: 在2015年7月16日,XCode新增了实体处理模块IEntityModule,用于拦截实体对象添删改操作。 该接口参考IHttpModule设计理念,横切在实体对象的关键生命周期之中,以达到多实体类通用处理的效果。比如为多个实体类增加假删除等特色功能。阅读全文
posted @ 2017-08-30 23:53 大石头 阅读(229) 评论(2) 编辑
摘要: 网络客户端ISocketClient和网络会话ISocketSession都继承了ISocketRemoteISocketRemote表示远程通信,核心就是收发数据。下面是ISocketRemote接口的主要实现 一、同步收发一般小型网络应用,或者个人学习程序,都会使用同步收发。Send(xxx);阅读全文
posted @ 2017-08-30 22:51 大石头 阅读(191) 评论(0) 编辑
摘要: 新生命团队基础框架X组件,包括网络、数据库、安全、多线程、反射、序列化、模版引擎、服务代理、远程过程调用等模块,包括Mvc后台魔方、超级码神工具、消息队列等子系统,支持Mono/Android/iOS/NetStandard。 新生命开发团队 网站:http://www.NewLifeX.comQQ阅读全文
posted @ 2017-08-30 10:23 大石头 阅读(549) 评论(5) 编辑
摘要: 为了验证SQLite的性能巅峰,我们来做一个大数据测试。 模拟每天4亿票销售订单,分表分库,每天一个数据库文件,有订单号、部门节点、时间等。 租用阿里云最低配置ECS,单核1G内存,1M带宽,每年300块,每天九毛钱阅读全文
posted @ 2017-06-02 11:35 大石头 阅读(12142) 评论(69) 编辑
摘要: SQLite什么都好,就怕“database is locked”这些年来想尽办法去规避它。测试代码: static void Test2() { XCode.Setting.Current.TransactionDebug = true; XTrace.WriteLine(Role.Meta.Co阅读全文
posted @ 2017-01-27 03:07 大石头 阅读(791) 评论(0) 编辑
摘要: 魔方 是一个基于 ASP.NET MVC 的 用户权限管理平台,可作为各种信息管理系统的基础框架。 演示:http://cube.newlifex.com 源码 演示账号:admin/admin 源码: https://git.newlifex.com/NewLife/X/Tree/master/N阅读全文
posted @ 2017-01-23 17:13 大石头 阅读(1012) 评论(8) 编辑
摘要: XCode天生就有分表分库功能,设计于2005年!历时9年,这是分表分库功能第一次针对性正式更新。在XCode里面,分表分库非常简单,在操作数据(查询/更新)前修改Meta.ConnName/Meta.TableName,指向别的连接字符串和表名,就实现了分表分库功能!实际上,XCode实体层构建数...阅读全文
posted @ 2014-06-16 05:01 大石头 阅读(4916) 评论(11) 编辑
摘要: 2008年4月到上海,约好了待遇五千多的一家公司,地铁8号线西藏北路附近。面试的时候才得知,试用期无工资, 每天50块钱饭贴,转正后2k。公司不大,主要接别的公司分出来的项目。因为是好友介绍的,我觉得可能是对方没有真正的了解我,留下 HttpProxy/XProxy源码后我就离开了。那时心里想,2k阅读全文
posted @ 2014-02-21 08:55 大石头 阅读(11827) 评论(263) 编辑
摘要: 快要毕业了,最后一年基本待在实验室做毕业设计。导师严老师认识的一个项目刚好缺一个做网站的, 就让我帮一下忙。需要去跟客户沟通获取需求,我觉得这是一个很好的学习的机会,没想太多,就做了!几个月后,老师把我叫进机房,项目组老师也在,交给我厚 厚一叠钱。“这是两千块,做网站辛苦你了,你点一下!”。我没有点阅读全文
posted @ 2014-02-19 12:05 大石头 阅读(6269) 评论(51) 编辑
摘要: 跟朋友聊天,说到早些年怎么赚钱。 我第一个想起的是2003年,在广西大学空谷社区技术部,被派去帮校友会维护校友会网站(ASP+SQL2000),搞了几个月。某一天技术部部长拿给我50块RMB,我甭提多高兴!这可是我这辈子第一次赚到钱呀!!!于是请好兄弟双喜和曹灿到超市吃了一根冰棍。 虽然在1996年阅读全文
posted @ 2014-02-18 17:37 大石头 阅读(5709) 评论(29) 编辑
摘要: 新生命开发团队大石头讲解网络异步编程(C#)内容:网络编程基础、IOCP、APM、SAEA时长:2~3小时价格:20元,20人及以上成团,http://item.taobao.com/item.htm?id=20159314203联系:QQ群1600800YY :频道41600800至少20人份拍下(无上限),再商量安排具体讲课时间,如若一个月内凑不够20人份,将退还全部报名费!大家需要准备好VisualStudio2010/2012/2013,边讲边做练习,当场解决问题!初步定在YY频道讲课,未报名者止入!从2004年开始,我们新生命开发团队就有免费网络讲课的传统,感兴趣的人很多,真正听的不阅读全文
posted @ 2013-09-14 14:54 大石头 阅读(1143) 评论(0) 编辑
摘要: 软件开发本身是一个特殊的行业,它让我们可以在工作之余,发挥自己的优势,多获得一些收入!根据我自己多年来的一点经验,说说如何找到并完成兼职项目,没有提到的地方,还请大家补充:1,选择项目要慎重我的原则是不熟悉的人的项目不做!刚认识不久就有项目的也不做,如果是自己很熟悉的朋友,他的也是很熟悉的朋友,那可阅读全文
posted @ 2012-11-09 12:23 大石头 阅读(10816) 评论(115) 编辑
摘要: 如果喜欢.Net Micro Framework,对C#玩单片机,对物联网和工农业自动化感兴趣,MF将是一个不错的选择! MF是微软开源的项目,本系列移植教程将让你具有独立的移植能力,配合市场上40~300RMB的各种单片机学习板,可以让你走得更远!阅读全文
posted @ 2012-11-08 22:03 大石头 阅读(6484) 评论(37) 编辑
摘要: 一些系统,需要能够发送短信,量很小,平均每日10条。 运营商平台太贵,白名单很严格,小额只能发省内; 各短信平台有各种限制,大事件前后会关闭; 飞信以前可以用WAP发,但是现在多了验证码,搞不定了; 短信猫买来还得写控制程序,价钱和时间上……阅读全文
posted @ 2012-11-02 09:32 大石头 阅读(4882) 评论(37) 编辑
摘要: 钓鱼岛是中国的!如果你不承认,请关闭本页!移植准备.Net Micro Framework移植必须安装PK最新版本,可以从官网(http://netmf.codeplex.com/)下载,建议安装到C:\PK;我们采用MDK编译器,所以也必须安装Keil MDK,建议安装到C:\Keil\ARM;最好也安装VC++ 2010 Sp1,后面绕开的方法未验证。建议安装功能强大的文本编辑软件,比如Notepad++。建议购买固态硬盘,编译速度将可以提升五到十倍,并且后面还有大量的搜索字符串工作,在一万多个零碎文本文件里面找一个变量名或方法名编译脚本setenv_base.cmd增加MDK编译器,不带阅读全文
posted @ 2012-09-12 10:28 大石头 阅读(3710) 评论(48) 编辑
摘要: 通过《C#点灯神话》,我们了解到单片机最基础的输入输出功能,也就是所谓的GPIO。 这一次,我们来点更多的“灯”——数码管,并且还是四位数码管。阅读全文
posted @ 2012-09-08 15:45 大石头 阅读(2666) 评论(18) 编辑
摘要: 如同学习每一门编程语言的Hello World!一样,点灯自然成了单片机入门的HelloWorld。因为单片机上的HelloWorld实在是太难了! 在电子上只有电压电流之类的概念,而对于单片机来说,我们可以认为0代表低电压(低电平、接地),1代表高电压(高电平)。在我们学习的STM32单片机上,高电平其实就是3.3伏!今天我们要点亮的小灯,就是发光二极管,让3.3V和0V分别接在发光二极管的正...阅读全文
posted @ 2012-09-06 12:15 大石头 阅读(5320) 评论(34) 编辑
摘要: 因为探索者一号供不应求,远超预期,并且我们自己设计制造的成本太高,所以没有再次生产。而是选择较高性价比的第三方STM32开发板作为MF学习板,是为探索者二号。因此,二号并不是一号的改进版,它们压根就不同,甚至MCU(处理器)都不同。先来看看探索者二号的全貌:二号相对于一号,有几个优点是非常吸引人的:直接配有匹配的TFT触屏,避免了一号那样出现接口不兼容的问题;带有4个高亮蓝色LED灯,4个功能按键,方便测试基础功能;引出的排针针脚,都标有名字,很容易查找。同样,也有一些缺点:MCU是STM32F103VET6,针脚100P,比一号ZET6的144P少,不过对于开发学习也足够用了,Flash和.阅读全文
posted @ 2012-09-03 13:14 大石头 阅读(1689) 评论(9) 编辑
摘要: MF全称Microsoft® .NET Micro Framework,是微软推出的一个微型.Net框架,微型到什么程度呢?它自身就可以是一个操作系统OS,它编译出来的程序,就可以直接跑在硬件上,当然,也可以在别的嵌入式系统(如UCOS)上用它,MCU才不管什么操作系统呢,找到第一条指令就开始执行,到哪算哪。有了它,我们就可以直接用VisualStudio C#写嵌入式程序。不过也有几点不足:性能上据说中等,跑图形界面时需要较大内存(MCU内SRAM比较小,一般64K~512K,可以外扩4M),只能用.Net的很少的一部分类库MF的核心原理就是通过特殊的C#编译器把你写的代码编译成为阅读全文
posted @ 2012-09-02 15:37 大石头 阅读(835) 评论(4) 编辑
摘要: 这是STM通用的刷固件方法,不仅仅适用于.Net Micro Framework,支持我们当前所有板子,包括阿波罗、探索者和雅典娜三个系列。单片机可以看做是CPU、内存和硬盘的集合体,其中的Flash就是硬盘,RAM就是内存。我们所谓的刷机(刷固件)就是把系统(固件)安装(刷)到单片机上。固件一般是bin文件,也有hex。传统单片机程序,系统程序和用户程序都混在一个bin里面,而我们的MF,一般刷TinyCLR.bin,然后用户程序通过另外的软件刷进去(比如MFDeploy和vs2010)。一般的单片机都有专用的固件烧写设备,比如51的编码器,TI和STM的JLink和ULink等。探索者一号阅读全文
posted @ 2012-09-02 09:04 大石头 阅读(2244) 评论(3) 编辑