我们在开发中经常会使用随机数模拟各种随机条件,例如生成唯一的密码和令牌. 在计算机中,一般采用PRNG(伪随机序列发生器)模拟真实随机数.既然是随机,就要要没有任何规律, 在取值范围内均匀.独立.以确保尽量不重复.否则生成的密码和令牌碰撞的几率就非常大. delphi自带的随机数函数,看似随机,实际上当产生次数足够多的话,就会发现重复性非常大,而且向中心域 集中.如果我们用delphi自带的随机数生成一个区域的点,就会很方便的发现这个问题. kbmmw 5.8里面 提供了好几种流行的随机数生成实…
procedure TForm2.Button3Click(Sender: TObject); var hashed:string; begin hashed:=TkbmMWHashSHA256.HashAsString('mypassword','somesaltvalue'); Label1.Caption:='TkbmMWHashSHA256='+hashed; end; procedure TForm2.Button4Click(Sender: TObject); var hashed:…
偶然在群里看到有人问到大数据查询,自己也就想了小艾改如何解决,从从1000万个随机数中查找出相同的10万个随机数花的最少时间, 谈到效率,自然是hashmap莫属. import java.util.HashMap;import java.util.Map;import java.util.Random; public class dataTest { private static final int [] datas = new int [1000 * 10000]; //1000万个随机数…
delphi 10.1 berlin版本中,有好几个 base64 编码的单元可以使用,例如 Indy, MessageDigest_5,还有 CnBase64,我现在使用自带的 System.NetEncoding. var params: string; Digest: TBytes; Base64: TBase64Encoding; begin Base64 := TBase64Encoding.Create; params := Base64.EncodeBytesToString(Di…
Delphi 10.3.1发布了,对10.3.0存在的各种问题,做了大量的修正.但听高勇说TNetHttpClient在多线程中存在问题,今天做了一下测试,确实如此,看来,还需要官方进一步修正! 具体测试方法,直接上代码: procedure TForm1.Button3Click(Sender: TObject); var i: Integer; begin do // 大于2,无法测试通过. begin TThread.CreateAnonymousThread( procedure() v…
IOS 9 于17号早上正式开始推送,早上起来立马安装,这次升级包只有1G, 安装空间也大大降低(想起IOS 8 升级时,几乎把手机里面的东西删光了,满眼都是泪). 虽然安装后,网上几乎是铺天盖地的吐槽,但是如果不安装的话,拿什么吐呢?:) 回到正题,既然IOS 9出来了,那么前几天刚出来的delphi 10 会怎么想?是支持呢,还是不支持? 昨天晚上把所有的准备条件搞好(xcode7+ios 9 SDK). 把以前的几个程序重新编译发布,基本上没有问题,可以正常运行.以为大事已定.突然发现 原…
从去年开始,kbmmw 慢慢增加内涵,除了完善各种服务外,陆续增加和扩展了作为一个中间件必须有的功能, 例如,权限管理.日志系统.调度系统.内存调试等功能. 今天给大家介绍一下kbmmw 的调度事件,调度事件的主要目标就是”在指定时间干,必须干“,不是“爱干”不干,是“必须干” :). 在传统的delphi 中事件调度室通过两种方式,一种方式通过Ttimer 来实现,(我20年做的母校的食堂餐饮消费系统就是通过Ttimer来轮询 POS 机的).另外一种就是通过扩展Tthread 线程类,通过后…
delphi 10 里面的安卓服务有四种,上面的一篇文章里面的图有介绍. 今天做一个remote service 的例子.(里面一部分代码是抄别人的,如果不太清楚,自行恶补) remote service 实际上就是主程序包含服务模块,另外的一个程序可以调用. 由于delphi 10 的低级错误,需要手工修改一些东西.这一块可以参考http://blog.qdac.cc/?p=2839 为了不影响这个例子的顺利完成,本例中没有使用上面的修改.直接在本例中处理. 现在开工: 和以前一样,先建立一个…
运行环境:delphi 10.2+kbmmw 5.6.20 在kbmmw 的老版本中,要向服务器传送一个本地的对象,一般都需要进行一些转换,例如通过序列化的方式. 在新版的kbmmw中这一切都变的很简单,使用use... 方法就可以了,非常的方便,下面就简单的说一下. 首先不管是在客户端和服务端都要引用kbmMWSmartUtils 这个单元. 首先我们做服务器端. 在服务器端做一个处理过程 function Txalionsrv.Performgetobject(ClientIdent: Tk…
以前,我们通过自己写json 来返回数据表的内容.在delphi 10.2.2中,官方自带了一个FDBatchMoveJSONWriter1 来直接处理数据库内容.把结果推送到浏览器客户端. 今天我们就利用kbmmw 自身的功能,做一个类似的东西. 在主界面放上相关的数据库访问控件 首先在服务上放两个东西 一个查询,一个kbmmwjsonstreamformat. 定义相关的函数 [kbmMW_Rest('method:get, path:getdata')] [kbmMW_Method] fu…