多线程四.三-------不同锁的功能和使用

ReentrantReadWriteLock 

//大量线程读取文件数据,少量线程修改数据;


 ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
  Lock write=  lock.writeLock();
  Lock read = lock.readLock();


private void read(){
  read.lock();
  try{
  
  }catch(){
  
  }finally {
  read.unlock();
}
  
   }
   private void write(){
  write.lock();
  try{
  
  }catch(){
  
  }finally {
  write.unlock();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mallcloud商城基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离vue的企业级微服务敏捷开发系统架构。并引入组件化的思想实现高内聚低耦合,项目代码简洁注释丰富上手容易,适合学习和企业中使用。真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署,并提供应用管理方便第方系统接入;同时还集合各种微服务治理功能和监控功能。模块包括:企业级的认证系统、开发平台、应用监控、慢sql监控、统一日志、单点登录、Redis分布式高速缓存、配置中心、分布式任务调度、接口文档、代码生成等等。 mallcloud商城特点: 1、前后端分离的企业级微服务架构 2、基于Spring Boot 2.0.X、Spring Cloud Finchley和Spring Cloud Alibaba 3、深度定制Spring Security真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案 4、提供应用管理,方便第方系统接入 5、引入组件化的思想实现高内聚低耦合,项目代码简洁注释丰富上手容易 6、注重代码规范,严格控制包依赖,每个工程基本都是最小依赖 7、非常适合学习和企业中使用 mallcloud商城功能: 1、统一认证功能 支持oauth2的种模式登录 支持用户名、密码加图形验证码登录 支持手机号加密码登录 支持openId登录 支持第方系统单点登录 2、分布式系统基础支撑 服务注册发现、路由与负载均衡 服务降级与熔断 服务限流(url/方法级别) 统一配置中心 统一日志中心 统一分布式缓存操作类、cacheManager配置扩展 分布式 分布式任务调度器 支持CI/CD持续集成(包括前端和后端) 分布式高性能Id生成器 分布式事务 3、系统监控功能 服务调用链监控 应用拓扑图 慢服务检测 服务Metric监控 应用监控(应用健康、JVM、内存、线程) 错误日志查询 慢查询SQL监控 应用吞吐量监控(qps、rt) 服务降级、熔断监控 服务限流监控 分库分表、读写分离 4、业务基础功能支撑 高性能方法级幂等性支持 RBAC权限管理,实现细粒度控制(方法、url级别) 快速实现导入、导出功能 数据库访问层自动实现crud操作 代码生成器 基于Hutool的各种便利开发工具 网关聚合所有服务的Swagger接口文档 统一跨域处理 统一异常处理 mallcloud商城演示地址 账号密码:admin/admin 应用监控账号密码:admin/admin 配置中心账号密码:nacos/nacos APM监控账号密码:admin/admin Grafana账号:mall/mall txlcn事务管理器密码:admin 任务管理账号密码:admin/123456
【RT-Thread作品秀】RedClock 作者:iysheng 概述 我开发RedClock这个作品的背景主要有两个: 1.我想开发一下墨水屏,想体验下新奇的事物; 2.想在传统wifi时钟的基础上添加一个番茄时钟的功能,尝试提高工作效率,让其不单单具备提供时间和天气的功能 目前RedClock实现的功能,可以概括为4条: 1.通过墨水屏同步显示时间、天气图标(时间信息通过ntp校时,天气信息通过js语言从和风天气获取) 2.一键切换番茄时钟模式,番茄时钟的默认周期是25分钟,到实践通过屏幕提示 3.通过外接氣壓传感器lps22hh获取温度和气压信息并通過墨水屏幕 4.時間、天氣、温度和气压信息支持通过网络访问ART-Pi的设备IP同步显示 开发环境 硬件:ART-Pi、LPS22HH、SSD1619 RT-Thread版本:V4.0.3 开发工具及版本: 编译工具:arm-none-eabi-gcc、arm-none-eabi-binutils 编辑工具:vim 烧录、调试工具:openocd 0.10+ dirty(打过补丁才可以烧录程序到ART-Pi的外部flash)、kermit(串口工具)、telnet(调试工具)、gdb 硬件开发工具:Kicad(RedClock扩展板开发工具) RT-Thread使用情况概述 使用到的内核模块部分: 互斥、信号量、mempool、device 组件部分: cJSON、EasyFlash、webnet 软件包部分: lps22hb(传感器) 其他: 使用到的总线接口:I2C(传感器)、SPI(墨水屏) 硬件框架 软件框架说明 软件的实现设计到两个层次,设备驱动层(墨水屏驱动层开发),APP层(天气、传感器和时间的更新显示分别在不同的线程完成,线程间的数据交换通过函数完成,全局变量均为static类型,依据高内聚、低耦合分层设计理念开发) 软件模块说明 本软件主要的软件设计理念是创建多个线程,根据功能划分各个线程实现的功能: 在factory工程的基础上,添加了red_monitor_thread这个线程,完成传感器数据周期一分钟获取一次、以及更新tomato显示相关的内容。还有一个redclock_lcd_thread线程周期性的刷新屏幕,目前从屏幕寿命考虑,设置为3分钟刷新一次。还有一个线程完成对按键的扫描(目前仅仅支持番茄时钟快速切换的按键)。 考虑到为了实现一次配网,重启后自动联网,开启了easyflash保存wifi帐号和密码。联网为了消除跨域访问设备的问题,替换了原始ART-Pi的index.html文件为自己的文件,这样将对应的js和css部署在自己电脑这端完成开发和调试,借助webnet通过CGI的方式完成时间、温度、气压的上报(支持同步通过浏览器访问ART-Pi查看)和天气的下发(天气通过js连接和风天气服务获取)。 墨水屏的开发,通过注册了一个device完成,通过SPI接口访问。更新墨水瓶内容相关的动作,放在了个函数中完成(分别完成天气图标更新、时间更新]、传感器数据更新、番茄时钟状态更新), 这些函数指挥更新墨水屏显示的内容,不会刷新墨水屏显示,刷新墨水屏显示的时候,更新才会有效。 演示效果 演示视频: 圖片展示: 比赛感悟 比赛过程中,我使用Kicad画了两版PCB,并作PCB然后焊接,整个开发过程大部分都是在Linux下完成的,初了开发墨水屏显示界面的时候使用了磨刀这个原型开发工具以及Image2Lcd整个软件将图片转换为C语言。 感觉自己收获最多的地方有两个方面,第一个方面当然是软件了,印象最深刻的是通过在openocd的代码仓库察看不同的branch和patch,给openocd打补丁然后修改对应的配置文件,支持直接烧录程序到ART-Pi的外部flash。通过这个工作,让我对openocd的使用有了更多的了解(通过访问openocd的网站以及看对应的manual), 这个是我最激动的。其他的软件方面就是对easyflash和webnet这两个组件有了学习,通过阅读对应的代码,学到了在32上进行KV类型的数值保存的新方法,之前我接触32保存配置数据使用的方法是从内部flash的尾部划分64KB虚拟为快设备,然后来格式化为elm文件系统,然后以cJSON格式保存,现在看来浪费了很多空间,easyflash也是我以后工作中替换之前这种方案新的可取的方法。通过对Webnet的学习,我真正接触到了通过http服务,远程通过浏览器和32进行数据通讯的方法。围绕webnet, 我还真正开发了一波js和css代码,开发js代码的时候,学会了通过jquery实现post和get请求,然后ART-Pi这端通过CGI完成HTTP通讯。 硬件方面,我感觉很开心的是自己
jeesuite-libs分布式架构开发套件。包括缓存(一二级缓存、自动缓存管理)、队列、分布式定时任务、文件服务(七牛、阿云OSS、fastDFS)、日志、搜索、代码生成、API网关、配置中心、统一认证平台、分布式、分布式事务、集成dubbo、spring boot支持、统一监控等。所有release版都经过严格测试并在生产环境稳定运行4年+。 功能列表: cache模块 基于配置支持单机、哨兵、分片、集群模式自由切换 更加简单的操作API封装 一级缓存支持(ehcache & guava cache)、分布式场景多节点自动通知 多组缓存配置同时支持 (一个应用多个redis server) 分布式模式开关 kafka模块 基于spring封装简化配置和调用方式 基于配置新旧两版Consumer API兼容支持 支持二阶段处理,即:fetch线程同步处理和process线程异步处理 消费成功业务处理失败自动重试或自定义重试支持 process线程池采用LinkedTransferQueue,支持线程回收和队列大小限制,确保系统崩溃等不会有数据丢失。 支持特殊场景发送有状态的消息(如:同一个用户的消息全部由某一个消费节点处理) producer、consumer端监控数据采集,由(jeesuite-admin)输出 兼容遗留kafka系统、支持发送和接收无封装的消息 mybatis模块 代码生成、自动CRUD、可无缝对接mybaits增强框架Mapper 基于properties配置多数据源支持,无需修改XML 读写分离,事务内操作强制读主库 基于注解自动缓存管理(所有查询方法结果自动缓存、自动更新,事务回滚缓存同步回滚机制) 自动缓存实现基于jeesuite-cache和spring-data-redis 分页组件 敏感操作拦截 scheduler模块 支持分布式保证单节点执行(按节点平均分配job) 支持failvoer,自动切换故障节点 支持多节点下并行计算 支持无注册中心单机模式 支持自定义重试策略 支持配置持久化(启动加载、变更保存) 支持控制台(jeesuite-admin)任务监控、开停、动态修改调度时间策略、手动触发执行 jeesuite-security 配置简单(初始化一个类即可) 满足认证授权基本需求 更加贴近日常使用业务场景 可选本地session和共享session 可选是否支持多端同时登录 dubbo、springboot跨服务登录状态传递支持 rest模块 自动resonse封装(xml、json) i18n request、response日志记录 自动友好错误 校验框架 filesystem模块 七牛文件服务支持 阿云OSS文件服务支持 fastDFS文件系统支持 支持spring集成 配置式切换服务提供商 common模块 一些常用工具类 common2模块(需要依赖一些组件或者基础设置) 分布式 分布式全局ID生成器 excel导入导出 jeesuite-springboot-starter模块 springboot集成支持

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值