首页
学习
活动
专区
工具
TVP
发布

xdecode

专栏作者
40
文章
64048
阅读量
33
订阅数
Java高并发之设计模式.
至于为什么要volatile关键字, 主要涉及到jdk指令重排, 详见之前的博文: Java内存模型与指令重排
用户1216491
2018-08-28
5130
JDK并发包总结
线程1, 线程2分别去获取lock1, lock2, 触发死锁. 最终通过DeadlockChecker来触发线程中断.
用户1216491
2018-08-28
2.6K0
图解高内聚与低耦合
模块就是从逻辑上将系统分解为更细微的部分, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决.
用户1216491
2018-08-28
1.6K0
Java高并发之线程池详解
例如线程, jdbc连接等等, 在高并发场景中, 如果可以复用之前销毁的对象, 那么系统效率将大大提升.
用户1216491
2018-08-01
6280
EasyMock set方法报错: java.lang.AssertionError
有返回值的方法没问题, 直接andReturn就行了. EasyMock.expect(info.getWebTitle()).andReturn(StringUtils.EMPTY).anyTimes(); 对于set方法没有返回值, 报错AssertionError, 需要如下处理. info.setSessionID(EasyMock.anyString());
用户1216491
2018-08-01
4680
图解Java常用数据结构(一)
最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程.
用户1216491
2018-07-25
4470
Java源码安全审查
最近业务需要出一份Java Web应用源码安全审查报告, 对比了市面上数种工具及其分析结果, 基于结果总结了一份规则库. 本文目录结构如下: 
用户1216491
2018-07-25
2.9K0
后端架构师技术图谱
转自: GitHub/architect-awesome , 大体结构如下(更新时间: 2018-06-22)
用户1216491
2018-07-25
4.8K0
Java高并发之锁优化
本文主要讲并行优化的几种方式, 其结构如下: 锁优化 减少锁的持有时间 例如避免给整个方法加锁 1 public synchronized void syncMethod(){ 2
用户1216491
2018-07-04
6790
Java高并发之无锁与Atomic源码分析
目录 CAS原理 AtomicInteger Unsafe AtomicReference AtomicStampedReference AtomicIntegerArray AtomicIntegerFieldUpdater 无锁的Vector 无锁即无障碍的运行, 所有线程都可以到达临界区, 接近于无等待. 无锁采用CAS(compare and swap)算法来处理线程冲突, 其原理如下 CAS原理 CAS包含3个参数CAS(V,E,N).V表示要更新的变量, E表示预期值, N表示新值. 仅当V值等
用户1216491
2018-05-28
5150
Java内存模型与指令重排
本文暂不讲JMM(Java Memory Model)中的主存, 工作内存以及数据如何在其中流转等等, 这些本身还牵扯到硬件内存架构, 直接上手容易绕晕, 先从以下几个点探索JMM 原子性 有序性 可见性 指令重排 CPU指令重排 编译器优化重排 Happen-Before规则 原子性 原子性是指一个操作是不可中断的. 即使是在多个线程一起执行的时候, 一个操作一旦开始,就不会被其它线程干扰. 例如CPU中的一些指令, 属于原子性的, 又或者变量直接赋值操作(i = 1),, 也是原子性的 即使有多个线程
用户1216491
2018-05-28
1.6K0
线程的基本操作
目录 线程状态切换 终止线程(stop) 中断线程(interrupt) 挂起(suspend) 和 继续执行(resume) 等待线程结束(join) 和 谦让(yield) sleep 线程优先级
用户1216491
2018-05-28
4810
内嵌tomcat启动速度慢
项目上最近要把内置的jetty换成tomcat, 来更好的支持servlet 3.0 本来以为换个容器, 几十行代码就好了. 实际上换了tomcat后, 一开始启动tomcat, 非常的慢. jetty只要几秒就可以启动的web工程, 内嵌tomcat花了接近15s, 直接启动tomcat, 接近10s. 后来试了下, 删除了项目里的web.xml, 发现直接启动tomcat只要0.6s, 而内嵌tomcat居然要5s. 这就很奇怪了, 因为web工程里既没有WEB-INF/lib, 也没有web.xml,
用户1216491
2018-03-29
1.9K0
Spring MVC注解式开发
MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @RequestMapping: 当前方法为处理器方法, 方法名随意, 对于请求进行处理与响应. 1 @Controller 2 public class MyController { 3 4 @RequestMapping(value = "/hello.do") 5 pub
用户1216491
2018-03-29
5760
Spring MVC核心技术
目录 异常处理 类型转换器 数据验证 文件上传与下载 拦截器 ----  异常处理 Spring MVC中, 系统的DAO, Service, Controller层出现异常, 均通过throw Ex
用户1216491
2018-03-29
8700
Spring MVC执行流程
SpringMVC是隶属于Spring Web中的一部分, 属于表现层的框架. 其使用了MVC架构模式的思想, 将Web层进行职责解耦, 使用请求-响应模型简化Web开发 SpringMVC通过中央调
用户1216491
2018-03-19
9430
IE之页面加载慢.
场景 场景是大屏页面一张深色背景, 里面一些文本元素以及图表展示. 结果在IE下发现加载异常缓慢, 还有部分人员反馈页面卡死. 后台读写优化 默认处理图片逻辑是, ImageIO读取原图, 转成byt
用户1216491
2018-01-24
2.3K0
Protocol Buffer序列化对比Java序列化.
初识 Protocol Buff是谷歌推出的一种序列化协议. 而Java序列化协议也是一种协议. 两者的目的是, 将对象序列化成字节数组, 或者说是二进制数据, 那么他们之间有什么差异呢. proto对象 要使用PB, 我们需要定义一个proto对象, 其支持的数据类型如下: Protobuf定义了一套基本数据类型。几乎都可以映射到C++\Java等语言的基础数据类型. protobuf 数据类型 描述 打包 C++语言映射 bool 布尔类型 1字节
用户1216491
2018-01-24
2K0
layui使用心得
表单控件样式没生效, 因为没引入form. 1 layui.use('form', function(){ 2 var form = layui.form; 3 }); radio改变事件没生效, 需要手动filter, 因为样式是美化后的 form.on('radio(layout)', function(data){ var layoutValue = data.value; }); 数据表格如何展示图片, 需要使用tem
用户1216491
2018-01-24
2K0
利用Cglib实现AOP
前文讲了, 可以利用Spring, Guice等框架提供的容器实现AOP, 如果想绕过容器, 直接注入Class, 可以利用Cglib为对象加上动态代理,实现代码切入, 但是每次调用比较繁琐, 因此我们还需要给他加了一层语法糖, 使之更易用. Advice Spring带了一堆Advice, 我们只模拟实现环绕Advice, 以及增加了一个Clear切入的注解, 下面看具体实现. 1 /** 2 * 环绕Advie 3 * 4 * 可以加在类上, 或者方法上. 5 * 加在类上的话, 类中
用户1216491
2018-01-24
8220
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档