- 博客(63)
- 资源 (3)
- 收藏
- 关注
原创 分页查询
SELECT * FROM request_log_info ORDER BY id LIMIT 1300000, 20;SELECT t1.* FROM request_log_info t1INNER JOIN (SELECT id FROM request_log_info ORDER BY id LIMIT 1300000,20)t2 ON t1.id = t2.id;SELE...
2018-09-29 18:18:37
181
原创 Java-Type体系
1.ParameterizedType参数化类型,既泛型,例如List<T>, Set<T>等1.1 getActualTypeArguments获取泛型中的实际类型,可能会存在多个泛型,例如Map<K,V>,所以会返回Type[]数组;注意:无论<>中有几层嵌套(List<Map<String,Integer>),get...
2018-08-20 08:41:47
270
转载 java的伪共享
我们从上节知道, 写操作的代价很高, 特别当需要发送RFO消息时. 我们编写程序时, 什么时候会发生RFO请求呢? 有以下两种:1. 线程的工作从一个处理器移到另一个处理器, 它操作的所有缓存行都需要移到新的处理器上. 此后如果再写缓存行, 则此缓存行在不同核上有多个拷贝, 需要发送RFO请求了.2. 两个不同的处理器确实都需要操作相同的缓存行由上一篇我们知道, 在Java程序中,数组的成员在缓存...
2018-07-07 16:44:47
402
转载 LinkedList的局限
java.util.LinkedList是双向链表,这个大家都知道,比如Java的基础面试题喜欢问ArrayList和LinkedList的区别,在什么场景下用。大家都会说LinkedList随机增删多的场景比较合适,而ArrayList的随机访问多的场景比较合适。更进一步,我有时候会问,LinkedList.remove(Object)方法的时间复杂度是什么?有的人回答对了,有的人回答错了。回答...
2018-07-07 16:44:23
292
转载 String#intern
引言在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。如果不是用双引号声明的String对象,可以使用S...
2018-07-07 16:43:52
183
转载 Innodb中的事务隔离级别和锁的关系
前言:我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么。一次封锁or两段锁?因为有大...
2018-07-04 09:13:29
148
转载 java内存访问重排序的研究
什么是重排序请先看这样一段代码1public class PossibleReordering {static int x = 0, y = 0;static int a = 0, b = 0;public static void main(String[] args) throws InterruptedException { Thread one = new Thread(new...
2018-07-04 09:13:14
216
转载 java序列化与反序列化
摘要序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计里面更为显著。恰当的序列化协议不仅可以提高系统的通用性、强健性、安全性、优化系统性能,而且会让系统更加易于调...
2018-07-04 09:12:53
179
原创 activiti 异步和事务
1.默认流程实例:假设有以下流程: 以上包含一个用户任务,服务任务,及定时时间流程。由于服务任务是自动执行的,所以完成用户任务和检验地址服务会在同一个事务中,就会导致当校验地址服务出现异常时,事务回滚,用户任务又会回到数据库中(act_run_task).2.异步执行 有时我们需要自己控制事务边界,这样就可以将业务逻辑包裹在一起,这时就需要异步执行了。如下实例: 以上...
2018-07-04 09:12:35
7361
原创 activiti与spring结合时的 初始化过程
// 工作流引擎的配置< bean id= "processEngineConfiguration" class= "org.activiti.spring.SpringProcessEngineConfiguration" > <property name ="dataSource" ref="dataSource" /> &am
2018-07-04 09:12:22
730
原创 Activiti命令框架
1、每个命令执行前的拦截器有4个: LogInterceptor; SpringTransactionInterceptor;CommandContextInterceptor;CommandInvoker.其拦截器执行顺序也是以上列出的顺序。2. 所有命令都是通过CommandExecutorImpl的实例来执行的,并依次通过LogInterceptor,SpringTransaction...
2018-07-04 09:12:12
314
转载 进行性能测试工具:JMH 的使用
首先, 添加依赖:<dependencies> <!-- https://mvnrepository.com/artifact/org.openjdk.jmh/jmh-core --> <dependency> <groupId>org.openjdk.jmh</groupId> ...
2018-07-03 22:07:34
726
转载 内联(inlining)
JVM JIT编译器优化技术有近100中,其中最最重要的方式就是内联(inlining)。方法内联可以省掉方法栈帧的创建,方法内联还使让JIT编译器更多更深入的优化变成可能。Inlining相关的启动参数jvm可以通过两个启动参数来控制字节码大小为多少的方法可以被内联:-XX:MaxInlineSize:能被内联的方法的最大字节码大小,默认值为35B,这种方法不需要频繁的调用...
2018-07-03 22:06:38
1069
原创 spring mvc 中 请求处理过程
spring mvc 中 请求处理过程 url初始化过程: org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping.initApplicationContext() throws ApplicationContextException (初始化从这里开始 ) org.springframewor...
2018-07-03 22:05:48
268
原创 linux命令:
linux命令:tail -n 10 test.log 查询日志尾部最后10行的日志;tail -n +10 test.log 查询10行之后的所有日志;head -n 10 test.log 查询日志文件中的头10行日志;head -n -10 test.log 查询日志文件除了最后10行的其他所有日志; 通过关键字查找日志的方法: 首先,cat -n tes...
2018-07-03 22:05:22
142
原创 redis3.0部署
Redis集群部署文档(centos6系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005 1:下载redis。官网下载3.0...
2018-07-03 22:04:56
206
转载 2014-twitter-meetup-netty
1. No Pipelining Optimizationpublic class HttpHandler extends SimpleChannelInboundHandler<HttpRequest> { @Override public void channelRead(ChannelHandlerContext ctx, HttpRequest req) { Chan...
2018-07-03 22:03:53
269
原创 netty
一、基础1.核心对象的对应关系: Socket--channel--ChannelPipeline--ChannelHandlers(多个ChannelHandler) 即一个socket对应一个channel,一个channel对应一个channelPipeline,一个channelPipeline包会含多个channelHandler。2.channelHandler2.1 由于channe...
2018-07-03 22:03:16
195
原创 文件上传-base64处理:
文件上传-base64处理:1. Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryc3BMO1CxMBoySN3S增加标签boundary,以区分不同的数据段,具体提交参数例如:------WebKitFormBoundaryc3BMO1CxMBoySN3SContent-Disposition: form-data...
2018-07-03 22:00:18
1358
转载 压缩算法的比较
压缩算法的比较以下是Google几年前发布的一组测试数据(数据有些老了,有人近期做过测试的话希望能共享出来):Algorithm% remainingEncodingDecodingGZIP13.4%21 MB/s118 MB/sLZO20.5%135 MB/s410 MB/sZippy/Snappy22.2%172 MB/s409 MB/s 注:来自《HBase: The Definiti...
2018-07-03 22:00:06
3052
转载 分布式锁
分布式锁一、zookeeper1、实现原理:基于zookeeper瞬时有序节点实现的分布式锁,其主要逻辑如下(该图来自于IBM网站)。大致思想即为:每个客户端对某个功能加锁时,在zookeeper上的与该功能对应的指定节点的目录下,生成一个唯一的瞬时有序节点。判断是否获取锁的方式很简单,只需要判断有序节点中序号最小的一个。当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机导致的锁...
2018-07-03 21:59:52
426
转载 构建高可用的缓存集群的开源解决方案
很多应用都通过使用缓存来避免所有的请求都查询数据库,以加快系统的响应速度,Memcached是常用的缓存服务器(现在比较流行的还有Redis),它一个高性能的分布式内存对象缓存系统,旨在通过缓存数据库查询结果,减少数据库的访问次数。但是在运行多个Memcached服务器时,往往还需要考虑其它的问题,比如缓存一致性、缓存失效等,缓存一致性是指要保证多个Memcached服务器中数据的一致,缓存失效的...
2018-07-02 22:13:57
483
原创 redis 命令
redis命令1.批量删除特定key: ./redis-cli keys corebaseuserno_* | xargs ./redis-cli del
2018-07-02 22:13:21
120
转载 java最佳实践
1. Never Swallow InterruptedExceptionLet's check the following code snippet:public class Task implements Runnable { private final BlockingQueue<String> queue = ...; @Override public void run(...
2018-07-02 22:12:52
377
原创 Activiti笔记-命令模式
Activiti笔记-命令模式Context 环境,容器CommandContext 命令容器,环境 ---命令执行者CommandContextInterceptor 命令容器拦截器Command 命令接口ContectCommand 具体命令RestController--命令发起者1.Context中定义了ThreadLocal变量,方便公共变量对象的存取和传递2.CommandCon...
2018-07-02 22:11:41
720
原创 spring 事务小记
1.PROPAGATION_REQUIRES_NEW: 不管是不是已经在外面的事务中,都会创建一个新的事物,该新事物拥有自己的隔离范围、锁等等,既是一个完整的不依赖外部事务的新事务;同时当内部新事务开始执行时,外面的事务会被挂起,直到内部新事务执行完毕。2.PROPAGATION_NESTED:创建一个嵌套事务,是外部事务的一部分,只有外部事务结束后该嵌套事物才会被提交。以上二者的区别: PROP...
2018-07-02 22:10:56
107
转载 Java 理论与实践: 处理 InterruptedException
捕捉到它,然后怎么处理它?很多 Java™ 语言方法,例如 Thread.sleep() 和 Object.wait(),都可以抛出InterruptedException。您不能忽略这个异常,因为它是一个检查异常(checked exception)。但是应该如何处理它呢?在本月的 Java 理论与实践中,并发专家 Brian Goetz 将解释 InterruptedException 的含义...
2018-07-02 22:10:02
145
原创 统一处理异常:
1.@ControllerAdvice 注解定义全局异常处理类@ControllerAdvicepublic class GlobalExceptionHandler {}2.@ExceptionHandler 注解声明异常处理方法,注解的方法的参数列表里,还可以声明很多种类型的参数@ControllerAdvicepublic class GlobalExceptionHandler { ...
2018-07-02 22:09:26
152
转载 阿里云Redis开发规范
阿里云Redis开发规范 云栖社区58分钟前 · 阿里云云栖社区官方头条号摘要: 本文介绍了在使用阿里云Redis的开发规范,从键值设计、命令使用、客户端使用、相关工具等方面进行说明,通过本文的介绍可以减少使用Redis过程带来的问题。一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:idugc:vide...
2018-07-02 22:08:38
287
原创 获取泛型类型
1. public Type getGenericSuperclass()用来返回表示当前Class 所表示的实体(类、接口、基本类型或 void)的直接超类的Type。如果这个直接超类是参数化类型的,则返回的Type对象必须明确反映在源代码中声明时使用的类型。2.public Type[] getGenericInterfaces()与上面那个方法类似,只不过Java的类可以实现多个接口,所以返...
2018-07-02 22:07:12
1684
原创 CyclicBarrier及CountDownLatch
.CyclicBarrier当每个线程await之后,就会等待其他线程都执行到达await时,才继续执行。即用于多线程之间的等待。例如:id:1id:2id:4id:0id:3线程组执行结束线程组任务3结束,其他任务继续线程组任务1结束,其他任务继续线程组任务4结束,其他任务继续线程组任务0结束,其他任务继续线程组任务2结束,其他任务继续2.CountDownLatch每当线程countDown之...
2018-07-02 22:05:47
112
原创 mysql编码问题
mysql一般默认不支持中文编码,故修改时,可以使用以下命令: ALTER DATABASE `test` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
2015-01-15 11:20:06
338
原创 条件表达式
1Object o1 = true? newInteger(1) : newDouble(2.0);bu同于:123456Object o2; if(true) o2
2014-11-21 09:15:25
545
转载 Oracle创建索引的基本规则
Oracle创建索引的基本规则 一、B-Tree索引 1. 选择索引字段的原则: 在WHERE子句中最频繁使用的字段 联接语句中的联接字段 选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很好) Oracle在UNIQUE和主键字段上自动建立索引 在选择性很差的字段上建索引只有在这个字段的值分布非常倾斜的情
2014-07-10 17:20:06
637
原创 power designer16以jdbc方式连接oracle
首先准备好jar包:1.ojdbc6.jar,可以在oracle客户端安装目录下获取。2.ojdbc14.jar接着依次:file->reverse engineer->database->
2014-07-10 12:04:00
1261
原创 Exception in thread "main" java.util.ConcurrentModificationException
抛出java.util.ConcurrentModificationException错误。这是因为主线程在遍历list的时候,子线程在向list中添加元素.解决方法:
2014-06-04 15:20:53
699
转载 Volatile 变量
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种
2014-06-03 20:12:14
495
原创 <编写高质量改善java程序的151个建议>----笔记
1.显示申明serialVersionUID可以避免对象不一致。因为在jvm反序列化时,会比较数据流中的serialVersionUID与类的serialVersionUID是否相同,若相同则认为类没有发生变化,可以把数据流load为实例对象;若不同,则抛异常InnalidClassException. 2.避免用序列化类在构造函数中为final变量赋值。反序列化时final变量在以下情况不会
2014-05-27 18:26:56
445
转载 java泛型总结
Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK 5中的新集合类框架中。对于泛型概念的引入,开发社区的观点是褒贬不一。从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误(安全性更好),因为编译器可以在编译时
2014-05-21 20:19:52
292
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人