自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

晴空无彩虹的博客

Delphi的涅槃重生

  • 博客(15)
  • 资源 (3)
  • 收藏
  • 关注

原创 JavaScript ——jsplumb流程图随手笔记(一)

 最近B/S程序中需要使用JS画流程图,找了一圈,试了几个,最终选择jsplumb来做,这里记下笔记1、jsplumb官网地址:https://jsplumbtoolkit.com/,看下效果图:2、官网Demo路径下的Toolkit+Community章节Flowchart试例中有关于绑定线条的几个事件:instance.bind("click", function (conn, origina...

2018-07-12 21:40:45 11262 5

原创 DelphiXE10.2.3——跨平台生成验证码图片

    Java、PHP、C#等很容易在网上找到生成验证码图片的代码,Delphi却寥寥无几,昨天花了一整天时间,做了个跨平台的验证码,可以用在C/S和B/S端,对于验证码图形的混淆,只做了简单的随机线条生成,并且随机数是使用系统自带的Randomize和Random函数,Randomize随机数初始化函数由于取种子是保存在全局变量中,虽然是integer类型,但不排除非线程安全问题,所以实际应用...

2018-06-27 12:16:13 2162

原创 DelphiXE10.2.3实现线程安全访问数据和对象(六)——修复原子自旋锁在极端应用场景下的ABA问题

     前面几篇贴出的基于原子自旋锁的代码中,会存在一种极端应用场景中CAS 的ABA问题:     AB两个线程同时执行到一条CAS(类似CompareExchange函数)前时,B线程将链表头保存本地变量中,而A线程接着取走链表头上的这个数据,然后在B线程执行到CAS时,A线程又将取走的数据返回给链表头,B线程的链表关系被打乱。     这种情况在我的业务应用中不会发生是因为我取走数据后还要...

2018-06-13 11:34:06 1026

原创 DelphiXE10.2.3实现线程安全访问数据和对象(五)——实现原子自旋锁的无锁链表

   之前看过MS的无锁单链表,效率确实非常高,但有点遗憾是Windows的Api函数,不能跨平台使用,而且要求保存的数据必须内存对齐,很不爽,当时看了具体汇编实现后,还是没完全明白过来为什么需要内存对齐,不知道该怎么实现为跨平台的无锁单链表,在之后写无锁Hash时,仔细研究并测试了Delphi原子操作TInterlocked.CompareExchange函数,猛然醒悟。   此无锁链表可跨平台...

2018-05-29 18:06:30 1180

原创 DelphiXE10.2.3实现线程安全访问数据和对象(四)——实现原子自旋锁的无锁对象池

    无锁对象池与无锁Hash是不同应用场景中使用,无锁Hash只是预先创建好Hash表(当然也可以动态Add)后,供调用者通过Key值快速找到保存的数据,并读取(这里就只能读取,不能做任何修改,否则非线程安全),要通过Add、Modify、ReMove这些过程才能修改,所以无锁Hash的使用场景是检索数据,而无锁对象池,却要考虑一个对象从对象池中获取后肯定同时会读写数据,就必须不能被其他线程再...

2018-05-29 17:17:36 1099

原创 DelphiXE10.2.3实现线程安全访问数据和对象(三)——实现原子自旋锁的无锁Hash

     前面几篇已经介绍的比较清楚了,这里就直接上代码,代码经过FastMM4的内存溢出检查,正确使用情况下,不会存在内存溢出,代码是根据我自身特定使用场景实现的,所以应根据自身情况修改代码。    采用泛型和接口方式实现,生命周期自管理,不需要手动释放,但切记Delphi接口使用规范,所有直接引用的ILockFreeHash接口变量要置为nil,否则会出现AV。   另外再啰嗦下,该代码只是我...

2018-05-29 15:14:29 1385

原创 DelphiXE10.2.3实现线程安全访问数据和对象(二)——如何理解原子自旋锁

     基于《DelphiXE10.2.3实现线程安全访问数据和对象(一)——Delphi原子操作函数介绍》中的原子操作函数,我们再来逐渐理解和实现一个原子自旋锁。     “原子自旋锁”中的“自旋”其实就是一个读或写数据过程中的一个while循环,只不过while的条件是用原子操作函数来判断条件是否成立,不成立会一直循环自旋直到条件成立为止,看上去似乎会很消耗cpu资源,但其实我们可以灵活处理...

2018-05-29 14:20:55 1469

原创 DelphiXE10.2.3实现线程安全访问数据和对象(一)——Delphi原子操作函数介绍

     之前写《原子自旋锁》时,也是第一次研究原子操作方法,看着测试结果出来时,自己兴奋了很久,后来在实际改造项目时,由于需要解决单链表、HASH、对象池这三种常用数据存储方式,索性一鼓作气将这三种一起实现了,相关源代码会放到CSDN上,这里先将Delphi原子操作函数介绍清楚,以便对源码进行改造时,能够避免问题的发生。一、Delphi的原子操作函数    在System.SyncObjs单元中...

2018-05-29 12:19:55 3244

原创 DelphiXE10.2.3 for Linux开发(三) ——Linux下获取自身运行程序的绝对路径

Delphi程序在Linux下获取自身程序的路径信息,不像Winsows下有现成函数调用,需要绕一下。uses System.Classes,{$IFDEF MSWINDOWS}  Winapi.Windows,{$ENDIF MSWINDOWS}{$IFDEF POSIX}  Posix.Dlfcn, Posix.Fcntl, Posix.SysStat, Posix.SysTime, Posi...

2018-05-25 11:10:48 4624 1

原创 DelphiXE10.2.3 WebBroker的Apache2.4 for Windows动态库调试方法

    用WebBroker创建好Apache2.4的动态库后,如果需要调试该动态库,其实与调试其他动态库的方式完全一样,只需要注意以下几点:1、IDE中设置该工程的Options,使其编译后的动态库输出目录指向在Apache中已经配置好的发布目录(d:/WebBusiness),如:该动态库在Apache的httpd.conf文件中配置为:LoadModule business_module d...

2018-05-24 17:37:01 1709

原创 DelphiXE10.2.3 for Linux开发(二)

    windows下装载动态库时一般使用LoadLibrary和GetProcAddress来装载动态库和获取动态库指定导出函数的地址,在DelphiXe10.2.X for Linux下也能使用这两个函数来装载 SO 动态库,重点要注意Handle是HMODULE类型,不能用cardinal类型,虽然Windows下LoadLibrary和GetProcAddress都是可以使用cardin...

2018-05-04 11:18:33 3944

原创 DelphiXE10.2.3 for Linux开发(一)

    Linux环境搭建建议使用Ubuntu16.04 64位桌面版,确实要省很多事,你能想象把RedHat7、Ubuntu18.04的服务器版和桌面版都安装一次,然后遇到问题无从下手的绝望吗?最后还是老老实实装16.04低版本,一切顺利,终于舒坦!    该版本已经安装在虚拟机中,有需要的可以下载,已经安装好DelphiXE10.2.3 PaServer和Ubuntu-sdk    该虚拟机使...

2018-05-04 10:02:37 13290 1

原创 Delphi XE10.2.3多线程大量读和少量写公共资源时,用原子自旋读写锁代替互斥锁提高效率

多线程这玩意就是这么矛盾,使用多线程的初衷是为了提高CPU等资源使用率和加快程序并发处理能力,这是大家都希望看到的,但另一方面却必须为多线程读写公共资源而绞尽脑汁,各种奇葩处理方式层出不穷,利弊自知。     对于一个高性能服务器在处理多数读取,少量写入的场景时,如果还是使用常规的互斥锁方式,显然就不明智了,这种读多写少的场景最适合使用读写锁方式,读取时不加锁,多线程并发读取,效率是最高的,要写入...

2018-04-12 19:04:59 3951

原创 DelphiXE10.2.3 Android仿淘宝首页广告图片启动切换的自定义多可视化对象左右滚动组件(持续更新中)

   先上个效果图吧,别看图片,那是临时找的,比例不对,主要看滚动效果,最上面的状态条是虚拟器的,很丑!这半透明的效果还没有去研究怎么去掉,知道的朋友可以提供解决方案吗?       继承自原生TRectangle来自定义的组件,同时支持Android和IOS开发的,支持手势左右滑动,支持定时自动滚动,未使用其他第三方组件,组件分为两个工程,一个是滚动组件(FlameFMXExtend),另一...

2018-03-31 17:18:04 1628

原创 Delphi XE10 Android Splash设备自适应和沉浸式状态条

  再次提笔写博客,已经相隔7年,原来的CSDN账号需要手机验证,而我的手机又捆绑到这个账号了,就用新账号吧,不想折腾了。  原账号的帖子,有研究DICOM3.0的可以看下:http://blog.csdn.net/ruanxundianzi/article/details/6551471  最近从Delphi7——XE2——XE5——XE7,一路升级到Delphi XE10.2.2 Tokyo(...

2018-03-15 16:56:04 6310 2

用原子自旋读写锁代替互斥锁提高多线程访问公共资源效率

详细介绍请见:https://blog.csdn.net/u011784006/article/details/79918438

2018-04-12

DelphiXE10.2.3 Android仿淘宝首页广告图片启动切换的自定义多可视化对象左右滚动组件

多可视化对象左右滚动组件,继承自原生TRectangle来自定义的组件,未使用其他第三方组件,具体文章请先看https://blog.csdn.net/u011784006/article/details/79770145

2018-03-31

Delphi XE10 Android Splash设备自适应和沉浸式状态条

Delphi XE10.2.2采用XXX.9.png和Style.xml来配置splash图片显示和沉浸式调整条

2018-03-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除