异步编程的Future 先聊聊线程池的提交方式谈到 Future 的时候,我们基本上就会想到线程池,想到它的几种提交方式。先是最简单的,execute 方式提交,不关心返回值的,直接往线程池里面扔任务就完事:publicclassJDKThreadPoolExecutorTest{publicstaticvoidmain(String[] args) throws Exception{ThreadPoolExecutor executor =newThreadPo...
MyBatis 千万数据表,快速分页 基本概念流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用。如果没有流式查询,我们想要从数据库取 1000 万条记录而又没有足够的内存时,就不得不分页查询,而分页查询效率取决于表设计,如果设计的不好,就无法执行高效的分页查询。因此流式查询是一个数据库访问框架必须具备的功能。流式查询的过程当中,数据库连接是保持打开状态的,因此要注意的是:执行一个流式查询后,数据库访问框架就不负责关闭数据库连接了,需要应用在取完数据后自己关.
如何决定使用 HashMap 还是 TreeMap TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。HashMap<K,V>的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表或红黑树。适用于在Map中插入、删除和定位元素。结论如果你需要得到一个有序的结果时就应该使用TreeMap(因为Hash
谈谈,如何设计一个通用的权限管理系统 一个系统,如果没有安全控制,是十分危险的,一般安全控制包括身份认证和权限管理。用户访问时,首先需要查看此用户是否是合法用户,然后检查此用户可以对那些资源进行何种操作,最终做到安全访问。身份认证的方式有很多种,最简单的就是直接用户名密码,还有业内比较通用的方式CAS方式登陆等;授权的框架也很多,比如OAuth2,Shiro等。本文首先会讲解一下CAS的概念,以及基于角色的权限管理模型(RBAC)的概念,接着进行数据表的设计,最后讲解如何利用Shiro进行权限管理。一、CAS身份认证集中式认证服
HashMap 经典详解 什么是HashMap?HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。文字描述永远要配上图才能更好的讲解数据结构,HashMa
Java 中常用数据结构执行过程及原理 LinkedList ArrayList Stack 后缀表达式 中缀转后缀 计算后缀表达 队列 HashMap LinkedHashMap 最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程.主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList LinkedHashMap中的双向列表不再是回环的.HashMap中...
线上故障排查技巧 线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使.
开放 HTTP API 接口签名验证! AccessKey&SecretKey (开放平台) 请求身份 防止篡改 重放攻击 实现 Token&AppKey(APP) Token身份验证 Token+AppKey签名验证 实现 后续请求 接口安全问题 请求身份是否合法? 请求参数是否被篡改? 请求是否唯一? AccessKey&SecretKey...
聊一聊微服务组件区别 1、创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付”2、扣减相应的商品库存3、通知仓储中心,进行发货4、给用户的这次购物增加相应的积分如上,微服务的应用场景和核心竞争力:降低耦合:每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译..
Spring 中的 bean 是线程安全的吗? 结论:不是线程安全的Spring容器中的Bean是否线程安全,容器本身并没有提供Bean的线程安全策略,因此可以说Spring容器中的Bean本身不具备线程安全的特性,但是具体还是要结合具体scope的Bean去研究。Spring 的 bean 作用域(scope)类型 singleton:单例,默认作用域。 prototype:原型,每次创建一个新对象。 request:请求,每次Http请求创建一个新对象,适用于WebApplicationContext环境下。
Docker入门篇 Docker 入门 这些天了解了现在流行的容器技术Docker,主要是参考这个系列的博客http://www.cnblogs.com/CloudMan6/tag/Docker/还有Docker中文网http://www.docker.org.cn 本篇博客主要讲一些命令的操作,至于原理性的东西就不多讲了,这些在网上都可以找到,本篇博客主要是记录一些命令的操作,用于以后用到可以方便的查到。命令是用到的时候再查的,不过原理性的概念还是要了解的,docker这个东西使用的时候不难,没有多少要学...
物联网-开源的MINIO云存储 1:前言:开篇的时候我们聊聊,上次我说道,要做文件双备份,毕竟是商业用途,在公司本地的物理机要备份的!那么我寻思了很久,最终选择了MINIO,很多小伙子其实很少听过这个东西,下面我简单介绍下,深入仔细的可以去度娘下:MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等MinIo可以作为公司内部的
物联网-阿里云存储对象OSS 1.本人前一段时间由于物联网开发,要远程控制机器设备进行升级,这个时候就要考虑了,设备和服务端之间如果带宽和服务端IO得情况,一般的大文件,比如超过100M文件都不建议走自己得服务端,一般用第三方客户端。本人在存储小文件,比如图片一些文件的时候会用到MongDB,这个是一个高性能的存储小文件的非关系性数据,后面我会详细介绍他的用法,现在主要讲一个云存储方案,用阿里云提供的OOS.这样子我们可以保证在服务端上传完文件后,客户端就自己在阿里云上面拉去文件了,这一步少了与服务端的交互,就为服务大大解决了带宽或者I
.Springboot+mqtt物联网开发 1.开篇聊聊,本人之前从事通信软件开发,对高并发和限流等有一定的实战,不过最近做物联网项目,这里聊聊怎么用mqtt进行双向通信,后面大家对通信开发有兴趣的也可以关注下本人博客!!!进入主题:目前市面上有几种mqtt的开源项目,本人觉得emqtt这款开源的项目好用,是EMQTT,Erlang MQTT消息服务器简称EMQTT。EMQTT是采用Erlang语言开发,全面支持...
Salesforce Force.com Site 集成微信公众平台 (八) 生成二维码 为了满足市场用户推广的渠道,公众平台提供了生成带二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。目前有两种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为30天(即2592000秒)后过期,但能够生成较多数量,后者无过期时间,数量较少(目前为最多10万个)。两种二维码分别适用于账号绑定、用户来源统计等场景。扫描二维码推送事件...
如何使用 JavaScript Remoting JavaScript Remoting 是什么?JavaScript Remoting 是一个可以用来做异步处理的工具,开发者可以用它从 Visualforce page 到 Apex controller 做 AJAX 请求。JavaScript remoting 允许做异步事件处理的时候,而不需要加载整个页面。另外,使用 JavaScript remoting 还能帮助我们减轻 vi...
Salesforce Force.com Site 集成微信公众平台 (七) OAuth 2.0 OAuth 是一个开放协议,用户允许第三方应用以安全且标准的方式获取该用户在某一网站上存储的私密资源,而无须将用户名和密码提供给第三方应用。接下来将介绍 OAuth 协议在微信里的具体实现。OAuth 2.0 协议介绍OAuth 2.0 是 OAuth 协议的下一版本,但不向后兼容 OAuth 1.0。 OAuth 2.0 关注客户端开发者的简易性,同时为 Web 应用,桌面应用和手机,起...
Salesforce Force.com Site 集成微信公众平台 (六) 客服接口 这一章我们将介绍在 Salesforce 中如何处理微信客服接口。当用户主动发消息到微信公众账号的时候,包括发送信息、点击自定义菜单click事件、订阅事件、扫描二维码事件、支付成功事件、用户维权,微信将会把消息数据推送给开发者,开发者在一段时间内(目前为48小时)可以调用客服消息接口,通过POST方法把JSON数据包发送消息给普通用户,在48小时内不限制发送次数。此接口主要用于客服等有人...
Salesforce Force.com Site 集成微信公众平台 (五) 语音识别 这一章我们讲一下微信的语音识别处理功能,微信公众账号通过微信认证后可以获得语音识别接口,开启语音识别功能以后,用户每次发送语音给微信账号时,微信会在推送的语音消息 XML 数据包中,增加一个Recognition字段,该字段为语音识别出的文本内容。下面是开启语音识别后的 XML 数据包示例:<xml> <ToUserName><![CDATA[toUse...
Salesforce Force.com Site 集成微信公众平台 (四) 菜单处理 这一篇我们介绍微信菜单和 Salesforce 的集成。目前自定义菜单最多包括三个一级菜单,每个一级菜单最多包含五个二级菜单。一级菜单最多4个汉字,二级菜单最多8个汉字,多出来的部分会以“…”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要一定时间才能在微信客户端展现出来,最快捷的方式是重新关注微信公众账号,这样马上就能看到自定义菜单。自定义菜单接口可实现两种类型的按钮: cli...