
系统架构
卡肤卡
这个作者很懒,什么都没留下…
展开
-
java 获取jvm运行状态
在项目收集jvm运行状态信息并上传到监控平台是必要的,这样有利于我们分析服务器的运行情况,好让我们对一些潜在的威胁采取相关措施。首先要了解到ManagementFactory这个类,它是java.lang.Object包下的 java.lang.management.ManagementFactory类。它是ManagementFactory 类是一种工厂类,用于获取 Java 平台的管理 Bea原创 2017-05-22 11:44:22 · 5227 阅读 · 2 评论 -
JVM GC算法以及调优
jvm的垃圾回收器是jvm的重要组成部分。GC负责着整个jvm运行时堆中对象的回收,保证jvm的性能。由于Java执行GC垃圾回收时会阻塞其他所有的线程,这样是对用户极不友好的,即对GC的优化重点是降低阻塞的时间,对GC的调优也就是对jvm的性能调优的重点。jvm堆的内存模式(画的比较简陋,忘海涵) jvm为堆内存划分了几块区域如上图: 最左边的new generation是新生代,新生代分为3原创 2017-03-27 23:13:17 · 1437 阅读 · 2 评论 -
java 执行基础运算时内存调度过程
当我们执行i=i+1时;有没有想过i是怎么执行+1操作的,他的过程是什么? 我查过一些资料,虽然不是很深,但还是要分享一下我的理解。jvm的所有运算操作都是要依赖cpu进行的,当java中执行i=i+1时,首先是jvm将i=i+1操作的过程生成cpu能执行的指令,然后cpu来执行i=1+1的操作。cpu将i所在的内存中的值读到高速缓存区中。然后再从高速缓存区读取i的值到主存中。然后cpu执行原创 2017-03-27 16:16:27 · 551 阅读 · 1 评论 -
高并发下接口核心业务方法限流
高并发下,为防止某个接口的主要方法被高频率的反复调用甚至是竞争伙伴恶意请求服务器导致服务器爆掉,获取接口处理业务效率缓慢。需要对接口的核心业务方法进行限制,比如说1分钟之内只允许调用1000次改接口。超过1000次的线程被阻塞,直到1分钟结束或者其他线程处理完毕。java伪代码实现(1分钟之类方法只能被调用10次,剩余线程阻塞)package com.hbut.inspiration.control原创 2017-03-21 14:46:11 · 2937 阅读 · 1 评论 -
CyclicBarrier 高并发的使用
CyclicBarrier是Java中java.util.concurrent并发包里的一个工具类。作用就是控制多个线程同时等待某个事件的执行才会一起执行。使用场景:多用于多个子线程等待主线程执行完毕后执行的场景。两个重要构造方法:new CyclicBarrier(int)int为等待的线程的个数。 new CyclicBarrier(int,Runnable)Runnable为等待的线程被触发原创 2017-03-19 21:07:11 · 610 阅读 · 0 评论 -
blockingQueue实现消费-生产模式
blockingQueue实为阻塞队列,数据由消费者线程、生产者线程共享。消费者产生数据放入阻塞队列,倘若阻塞队列已满,则生产者线程被阻塞直到消费者线程取出数据或者是直接返回失败,若队列数据为空,则消费者线程阻塞直到生产者线程放入数据或者直接返回失败。且阻塞队列的数据为先进先出的规则。常用apioffer(E e) 向阻塞队列放入数据,倘若阻塞队列已满,则直接返回false。offer(E e,原创 2017-03-19 16:55:12 · 820 阅读 · 0 评论 -
分布式系统session同步
分布式系统由于有多台服务器,用户在一次会话里有可能访问不同的服务器,这是由于每次请求都由负载均衡服务器通过算法去选择访问的服务器。那里用户可能第一次访问服务器时web容器如tomcat新建了一个session保存在了服务器里。再次访问服务器时可能就访问另外一台服务器了就取不到这个session了。这会导致很对问题,例如有可能登入系统之后需要再次登入。session是由首次访问服务器的时候,由web容原创 2017-03-13 16:22:45 · 4637 阅读 · 0 评论 -
http页面执行https跨协议请求的解决办法
有时候,我们需要在弹层中使用跨域跨协议去访问某个服务器获取视图,楼主就在项目中遇到了这个问题。在一次pos机项目的开发中需要访问我公司不同项目的服务器,我们两个部门的域名、协议都是不一样的。我需要在https协议下去访问不同域名的http协议地址,当然在浏览器新开一个窗口(window.open(“http://”))就不会有问题,但是这在ajax的回调函数中弹窗使用就遇到了很大麻烦。要支持跨域的弹原创 2017-01-09 11:40:05 · 23286 阅读 · 2 评论 -
jsonp 跨域请求
一般的我们在js里用ajax动态的请求服务器数据,ajax底层其实是使用的是XmlHttpRequest对象,但是它只允许请求当前域名的资源,这一过程是同域的,即ajax请求的服务器与当前的页面的url处于同一台服务器中,但是有时候我们需要请求另一台服务器获取json数据,或者调用第三方接口获取json数据,例如我发送一个城市地址,获取第三方服务的天气数据。为了实现跨域请求,可以通过script标原创 2016-12-15 15:06:29 · 547 阅读 · 0 评论 -
SpringMVC前台提交参数绑定list时大小超过256 java.lang.IndexOutOfBoundsException解决办法
springMVC框架提交参数list时,springmvc默认只能接收到255个数据,当你前台传的数据长度大于255位的时候就会报错 例如我在前台传输的solutionModelList的长度有364位,在chrome控制台可以看到 然后在后台接收 @RequestMapping("/saveFinance.json") @ResponseBody public AjaxObj sa原创 2016-11-30 18:25:10 · 6130 阅读 · 2 评论 -
tomcat 配置https访问
有时候我们的项目是要在https环境下访问,而servlet容器是tomcat的时候就需要在tomcat下配置支持ssl安全协议。首先进入你电脑的jdk的bin目录下,按住shift右击鼠标选中在此处打开命令窗口然后在命令窗口输入如下命令keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\tomcat.keystore 接下来命令窗口会原创 2016-11-08 15:44:39 · 963 阅读 · 0 评论 -
spring 编程式事务管理
说道事务我们先来说下事务的概念(概念是百度百科的,大家对概念不懂的可以去查一下): 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,mysql能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。事务的4个特性 A:原子性(Atomicity) 事务是数据库的逻辑工作单位,事务中包原创 2016-11-04 14:49:33 · 499 阅读 · 0 评论 -
spring 注解式事务管理
上一节我们讲了用spring aop管理事务,这一届我们来讲使用直接来管理事务定义数据源<bean id=“datasource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property原创 2016-11-04 14:38:04 · 369 阅读 · 0 评论