首页 文章 精选 留言 我的

精选列表

搜索[读写分离],共10000篇文章
优秀的个人博客,低调大师

Java多线程进一步的理解------------实现读写

public class ReadAndWriteLock { public static void main(String[] args) { final QueueJ q = new QueueJ(); for (int i = 0; i <3 ; i++) { new Thread(){ @Override public void run() { while (true) { q.get(); } } }.start(); new Thread(){ @Override public void run() { q.put(new Random().nextInt(1000)); } }.start(); } } } class QueueJ { private Object data = null;//共享数据,只能有一个线程 private ReentrantReadWriteLock rwl = new ReentrantReadWriteLock(); public void get() { rwl.readLock().lock(); try { System.out.println(Thread.currentThread().getName() + "will read"); Thread.sleep((long)(Math.random()*1000)); System.out.println(Thread.currentThread().getName() + "have read"); }catch (InterruptedException e) { e.printStackTrace(); }finally { rwl.readLock().unlock(); } } public void put(Object data) { rwl.writeLock().lock(); try { System.out.println(Thread.currentThread().getName() + "will write"); Thread.sleep((long)(Math.random()*1000)); this.data = data; System.out.println(Thread.currentThread().getName() + "have write"); }catch (InterruptedException e){ e.printStackTrace(); }finally { rwl.writeLock().unlock(); } } } 读之前,加上读锁,写之前加上写锁

优秀的个人博客,低调大师

EXTRONICS推出IRFID500便携式UHF RFID读写

采矿、石油和天然气、化工、制药、石化等行业防爆无线技术制造商Extronics推出iRFID500便携式蓝牙无源UHF RFID读取器。该设备可简化资产跟踪,维修任务监控及计划的业务流程并确保危险环境下的操作合规性。 该读取器使用了CAEN RFID提供的新技术,可与现有的工业物联网(IoT)网络进行集成,以提高效率并减少停机时间。该设备适用于工业公司,以取代传统的笨重型PDA。此外,智能手机等设备还可通过蓝牙和该设备配合工作,可最大化提升运营效率和灵活性。 iRFID500设备兼容ISO 18000-6C及EPC Gen2规格,防护等级为IP64,电池寿命可达12小时,适合轮班工作。该读取器尺寸为128mm59mm22mm,重量达150g。该读取器还配备触控笔,这样用户便可直接用于操作平板电脑,而无需取下防护手套。iRFID500还通过了ATEX,IECEx及北美针对危险区域设备使用的相关认证。该读取器支持ETSI及FCC UHF频带,可全球使用。 Extronics的总经理John Hartley表示:“用户的需求推动了iRFID500的开发。我们希望开发一款实用的用于危险区域、可和智能设备配合使用的蓝牙配件。” 本文转自d1net(转载)

优秀的个人博客,低调大师

BS结构RFID读写器web插件开发之五----电子钱包操作

IC卡电子钱包web操作 普通IC卡电子钱包介绍 普通IC卡电子钱包是IC卡块数据的另外一种格式,这种格式存储占用了全部16个字节,所以一旦将这个块作为电子钱包使用,则不能在这个块存储任何其他的数据.电子钱包输入和输出均为4个字节整形,不能为小数类型.如果要存储小数类型,需要放大相应倍数,使其转变为整形.电子钱包是数据存储的另外一个格式,所以在我们使用电子钱包之前,必须将其初始化为钱包.之后才能对其充值和扣款,查询余额操作.使用友我科技IC卡读卡器web插件系统可以在web浏览器,如IE,Firefox,Chrome,Safari,Opera及以这些为内核的浏览器中对IC卡电子钱包进行操作. 普通IC卡电子钱包web初始化 web通过友我科技IC卡读卡器web插件系统操作IC卡读卡器对电子钱包操作,初始化电子钱包API接口如下:M1卡初始化钱包 M1IntialValue(blockIndex,value) 参数:blockIndex,块号,绝对地址,从0开始 value:要初始化的值.举例如下,我们将第4块初始化为钱包,并且初始化余额为100. function InitialValue() { var BlockID; var Key; var Value; BlockID = 4; //第4块 Key ="FFFFFFFFFFFF"; Value = 100;//初始化值为100 rfidreader.KeyMode=0; rfidreader.KeyStringMode=0; rfidreader.KeyString=Key; rfidreader.Repeat=0; rfidreader.M1IntialValue(BlockID, Value); } 不管是成功还是失败,回调函数返回结果: rfidreader.onResult(function(resultdata) { switch(resultdata.FunctionID) { case 9: if(resultdata.Result>0) { CardNo=resultdata.CardNo;; alert("初始化成功"); } else { alert("初始化失败"); } break; } } ); 普通IC卡电子钱包web查询余额 web对IC卡查询余额接口如下M1卡获取钱包余额 M1GetValue(blockIndex) 参数:blockIndex,块号,绝对地址,从0开始查询钱包余额的结果通过回调函数返回.以下代码读取第4块的钱包余额 function ReadValue() { var BlockID; var Key; BlockID = 4; Key ="FFFFFFFFFFFF"; rfidreader.KeyMode=0; rfidreader.KeyStringMode=0; rfidreader.KeyString=Key; rfidreader.Repeat=0; rfidreader.M1GetValue(BlockID); } 读取IC卡余额成功失败都通过回调函数返回: rfidreader.onResult(function(resultdata) { switch(resultdata.FunctionID) { case 10: if(resultdata.Result>0) { CardNo=resultdata.CardNo; Balance = resultdata.ValData;//电子钱包余额 } else { alert("读取错误"); } break; } } ); 普通IC卡电子钱包充值和扣款 IC卡电子钱包充值和扣款的web api接口如下:M1卡钱包充值 M1IncreaseValue(blockIndex,value) 参数:blockIndex,块号,绝对地址,从0开始value:要充值的值 M1卡钱包扣款,即减值 M1DecreaseValue(blockIndex,value) 参数:blockIndex,块号,绝对地址,从0开始 value:要减值的值 不管是充值还是扣款,回调函数都将返回.如果是成功, 回调函数还返回充值和扣款后的余额. 还是以第4块为例,充值和扣款值均为10,代码如下:充值 function IncreaseValue() { var BlockID; var Key; var Value; BlockID = 4; Key ="FFFFFFFFFFFF"; Value = 10;//要充值的值 rfidreader.KeyMode=0; rfidreader.KeyStringMode=0; rfidreader.KeyString=Key; rfidreader.Repeat=0; rfidreader.M1IncreaseValue(BlockID, Value); } 扣款 function DecreaseValue() { var BlockID; var Key; var Value; BlockID = 4; Key ="FFFFFFFFFFFF"; Value = 10; rfidreader.KeyMode=0; rfidreader.KeyStringMode=0; rfidreader.KeyString=Key; rfidreader.Repeat=0; rfidreader.M1DecreaseValue(BlockID, Value); } 结果返回如下: rfidreader.onResult(function(resultdata) { switch(resultdata.FunctionID) { case 11: if(resultdata.Result>0) { CardNo= resultdata.CardNo; Balance= resultdata.ValData; //返回充值后的余额 } else { alert("错误"); } break case 12: if(resultdata.Result>0) { CardNo= resultdata.CardNo; Balance= resultdata.ValData; //返回扣款后的余额 } else { alert("错误"); } break; } } ); 通过友我科技IC卡读卡器web插件系统对IC卡电子钱包操作全部完成,代码量很少。 参考资料: IC卡读卡器web开发指南.

优秀的个人博客,低调大师

苹果重组管理层,AI 与机器人项目分离

彭博社援引知情人士消息称,苹果计划本月晚些时候将机器人团队从约翰・贾南德雷亚(John Giannandrea)的人工智能部门迁至硬件部门,这将使该团队由负责硬件工程的高级副总裁约翰·特努斯(John Ternus)领导。这是该公司为应对人工智能困境而做出的最新举措。 据了解,贾南德雷亚之前同时管理多个项目,包括苹果的人工智能助手 Siri 和机器人团队。但由于苹果在 Siri 的功能交付上未能按时实现目标,导致公司决定对管理架构进行调整。现在,负责苹果首款空间计算设备 Vision Pro 的迈克・罗克韦尔(Mike Rockwell)将接手 Siri 团队及其未来的发展工作。这一决定旨在让贾南德雷亚能更集中精力开发新的人工智能功能。 与此同时,苹果的机器人项目也将从贾南德雷亚的管理范围中剥离,交由苹果的高级副总裁约翰・特努斯(John Ternus)负责。特努斯是苹果公司的高管之一,参与过多款重要产品的硬件开发工作,包括 iPhone 和 iPad 等。他将领导机器人项目的硬件开发工作,以加快苹果在这一领域的进展。 目前,特努斯还负责一个从事机器人和智能家居技术研发的团队,这意味着苹果将两支机器人团队合并,进一步加强了在机器人技术方面的研发力度。苹果希望通过此次管理层的调整,能够在人工智能领域追赶上谷歌、OpenAI 等竞争对手,确保 Apple Intelligence 的优先发展。 据了解,苹果的机器人团队正在开发多款新产品,其中包括一款能够移动的桌面机器人,预计将是该团队的首个成果。此外,苹果还计划推出一种更具移动性的机器人,能够执行简单任务,打电话和回答问题等。这样的新产品将进一步扩展苹果的产品线,满足消费者的多样化需求。

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册