![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
开发经验
文章平均质量分 64
in-open-eye
to be eye-openner
展开
-
对轮询的总结,注意是Web端即时通讯技术
Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,下面是对目前常用的轮询的方式进行汇总:几种方式短轮询(ajax短轮询)客户端,每隔一段时间,请求服务端获取数据。好处:实现最为简单缺点:实时性不高、频繁请求对服务端有很大压力长轮询(Comet: 一种hack技术)服务端收到客户端的请求后,hold住一段时间,有变化提前返回,否则到达指定时间再返回。这里做一个补充:Comet在浏览器端有两种实现方式,一种就是这里的长轮询,还有一种是基于 Iframe 及 html原创 2022-01-22 17:28:46 · 1871 阅读 · 0 评论 -
面向中后台复杂场景的低代码实践思路
一 中后台前端研发复杂度背景做中后台前端开发,会经常碰到复杂交互和复杂逻辑问题:你负责的业务中,规则是不是很多?是不是会不自觉的试图用if...else解决一切问题,逻辑是不是在迭代过程中变得越来越乱?最后彻底变成一个看不懂改不动的黑盒子,没有人能搞清楚黑盒子里面到底发生了什么。现实中,业务场景多,迭代频繁,变化快到跟不上,规则可能由多人掌握,无法通过一个人了解全貌;还有业务所在行业固有的复杂度和历史包袱,这些问题都会让我们感到痛苦。除了逻辑问题,我们还关注.转载 2022-01-10 10:19:15 · 132 阅读 · 0 评论 -
对应场景的解决方案的收集(持续更新)
Apache Guacamole(实现浏览器进行远程桌面和SSH)WebSocket + WebRTC (实现视频通话)原创 2022-01-05 08:47:06 · 839 阅读 · 0 评论 -
关于细粒度控制接口权限的设计思路
前言:目前安全问题越来越重要,以前只需要前端权限控制,目前前端的权限控制已经无法满足当前的安全需要了,一个更细粒度的控制,也就是接口粒度的控制变得越来越重要。思路:权限控制还是传统的RBAC(Role-Based Access Control: 基于角色访问控制)思想,添加了给角色绑定某个菜单的某些行为的能力。用户,角色,菜单,行为用户和角色绑定。角色决定 有哪些菜单的哪些行为。比如。 拥有某个菜单的行为( 添加、删除、修改、导出、导入、打印)每个菜单在设计时,必须指定一个id,如xxxx原创 2021-09-06 10:41:44 · 546 阅读 · 0 评论 -
客户端和服务端进行数据同步的初步思路
服务端:【增量日志记录表】:添加了,删除了,更新了,都进行记录。记录主键id 变更的业务表 变更的业务Key 变更时间 变更类型(添加、删除、修改)记录创建时间 变更序号(数字类型,不断递增) 【客户端同步记录表】:每个客户端最新的变更序号和获取时间客户端唯一标志变更序号更新时间 创建时间客户端:首次进入(本地没有存储【变更序号】):...原创 2021-07-15 12:11:54 · 1468 阅读 · 0 评论 -
解决线上 java.lang.NoSuchMethodError
解决线上 java.lang.NoSuchMethodError,昨晚阿里云提供了几个class,今天突然发现后台出现java.lang.NoSuchMethodError异常。反编译源码,发现方法始终存在。借助百度发现:出现java.lang.NoSuchMethodError的问题,究其原因有很多:1、包冲突,在引包时,引用了不匹配的包版本2、开发环境和运行环境的不一致...原创 2020-02-23 19:06:32 · 288 阅读 · 0 评论 -
阿里云OSS使用STS权限控制某个目录遇到的坑
今天使用OSS的STS来权限控制某个目录,中途遇到了很多坑,这里就不细说,网上有很多相关的文章,但是完整的流程我没有找到,这里根据自己的踩坑之路,进行完整的总结,详细描述整个流程。1、首先需要登录阿里云账号,到控制台的"访问控制",首先添加一个STS用户。点击确定后,记录下key和秘钥。2、新建RAM角色3、给上面添加RAM角色添加权限,同时记录下ARN,后面需要用到(比较关键...原创 2019-11-06 09:02:17 · 3180 阅读 · 0 评论 -
5大Java服务困局,阿里工程师如何打破?
5大Java服务困局,阿里工程师如何打破?1.系统不是分布式1.1.单机版系统抢单案例// 抢取订单函数public synchronized void grabOrder(Long orderId, Long userId) { // 获取订单信息 OrderDO order = orderDAO.get(orderId); if (Objects.isNu...转载 2019-11-06 08:41:03 · 137 阅读 · 0 评论 -
消灭 Java 代码的“坏味道” (参考阿里)
让代码性能更高需要 Map 的主键和取值时,应该迭代 entrySet()当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。反例:Map<String, String> map = ...;for (String k...转载 2019-10-11 08:45:17 · 144 阅读 · 0 评论