自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wwhhff11

暂无

  • 博客(36)
  • 收藏
  • 关注

原创 @SneakyThrows 注解

public class Main {@SneakyThrowspublic static void test() { System.out.println("haha1"); if (1 == 1) { Integer.valueOf("s"); } System.out.println("haha2");}public static void

2016-08-31 17:09:20 7776

转载 分布式事务

事务事务应该具有4个属性:原子性、一致性、隔离性、持续性原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的

2016-08-31 11:25:01 333

转载 lombok使用

@Getter和@Setter:为属性创建getter和setter @EqualsAndHashCode:实现equals()方法和hashCode()方法 @ToString:实现toString()方法 @Data:上述3个annotation的和,会创建getter setter equals hashCode和toString,正如你上面看到的那样 @Cleanup:关闭流 @S

2016-08-28 10:18:41 402

转载 堆外内存(直接内存)

direct缓冲区最适合IO,但是可能创建更加耗时。direct缓冲区使用的内存,绕过了JVM堆,通过本地代码调用分配。创建和销毁都要比驻留在JVM堆里的缓冲区更加耗时(依赖于操作系统和JVM实现)。direct缓冲区使用的内存不受垃圾收集的控制,因为它们在JVM堆的外部。

2016-08-25 17:37:44 10547 1

转载 数据库读写分离原因

三 读写分离提高性能之原因1.物理服务器增加,负荷增加 2.主从只负责各自的写和读,极大程度的缓解X锁和S锁争用 3.从库可配置myisam引擎,提升查询性能以及节约系统开销 4.从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的binlog恢复数据,但是,最重要区别在于主库向从库发送binlog是异步的,从库恢复数据也是异步的 5.读写分离适用与读远大于写的场景,如果只有一台服务

2016-08-22 17:50:44 410

原创 Spring 与 Struts2的区别

Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其

2016-08-22 10:17:28 253

原创 Webx日志系统初始化

<listener> <listener-class>com.alibaba.citrus.logconfig.LogConfiguratorListener</listener-class> </listener> <context-param> <param-name>logSystem</param-name> <param-val

2016-08-21 11:34:20 341

原创 web.xml加载顺序

context-param->listener->filter->servlet 顺序依次加载。对于特定类型的配置节点又有特定的规定,如同是配置节点,则按照声明的先后顺序依次加载

2016-08-21 11:30:08 255

转载 跨库事务解决方案

1 考虑使用JTA等支持分布式事务的事务管理器这种方案的优势就是直接有现成的解决方案,一般的j2ee服务器都提供了JTA的相关的实现。比较明显的问题就是解决方案太重量级。一般JTA除了服务器要支持,对应的数据库服务厂商一般也要提供相应的商业支持,主要是提供基于 XAResource JDBC驱动,这一些商业上的支持,部分是需要付费的。而且使用XA 数据库驱动,本身可能导致一些潜在的问题,尤其是基于

2016-08-19 22:01:02 1121

原创 TDDL 事务

支持基于单库的事务,但不支持跨库进行事务。跨库事务本身会耗费很多宝贵的资源,在大型分布式系统中应该尽量避免使用分布式事务处理机制,可以通过补偿等方式保证分布式环境中的数据的最终一致性,如果在一个事务过程中出现了多个不同的数据源,则系统会抛出异常。

2016-08-19 21:49:40 1372

原创 JDBC JDBCTemplate Mybatis Hibernate

JDBC -> java data base connection,只是提供接口,由数据库厂商实现。 JDBCTemplate -> 内嵌于Spring框架,对JDBC的封装,缺点:没有缓存 Mybatis -> 注解+xml+Java放射技术 Hibernate -> 不用编写sql

2016-08-19 21:44:40 564

原创 application、session、request

request.setAttribute()session.setAttribute()application.setAttribute()request每次请求都会生成新对象,生命周期存在一次访问。session保存在服务器,依赖cookie,每次浏览器重启,都会重新创建sessionid。application保存在服务器,对所有客户端可见。

2016-08-19 21:29:14 205

原创 Tomcat 序列化

tomcat 停止时会序列化session成文件,启动时会反序列化session文件进内存。 tomcat重启保存session,前提是实现序列化。

2016-08-19 21:18:48 853

原创 Java Thread start 与 run的区别

1.start()方法来启动线程,真正实现了多线程运行。这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体,它包含了要执行的这个线程的内容, Run方法运行结束, 此线程终止。然后CPU再调度

2016-08-19 21:11:52 396

原创 Webx MVC

首先在Webx中,使用WebxContextLoaderListener替代Spring的ContextLoaderListener: <listener> <listener-class>com.alibaba.citrus.webx.context.WebxContextLoaderListener</listener-class> </listener>

2016-08-19 14:54:26 413

原创 Java 内部类

Java 内部类:成员内部类: 1. 可访问外部类对象 2. 不可声明static方法静态外部类: 1. 可访问外部static变量匿名内部类: 1. 重写方法局部内部类: 1. 声明在方法中 2. 能访问方法内用final的对象

2016-08-18 21:59:03 207

原创 Java 重写和重载

重写:方法名和返回值和参数一模一样 出现在继承关系: 1. 允许子类访问控制比父类的要松 2. 子类不允许重写final方法 3. 子类抛出的异常不允许比父类的要大重载:只要求方法名相同,参数必须不同 出现在同一个类里

2016-08-18 21:48:55 177

原创 Lucene 近实时索引

参考1 参考2 参考3

2016-08-18 10:11:44 390

原创 查询学生成绩

CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu_id` int(11) DEFAULT NULL, `class_id` int(11) DEFAULT NULL, `score` int(11) DEFAULT NULL, `time` datetime DEFAULT NULL, PRIMA

2016-08-17 10:47:53 1450

原创 Lucene 分页排序

package org.digdata.swustoj.sort;import org.apache.lucene.search.Sort;import org.apache.lucene.search.SortField;/** * Created by wwhhff11 on 16-8-15. */public class LuceneSortFactory { /**

2016-08-15 21:41:53 1372

原创 实现实时索引基本原理

参考1 参考2 参考3

2016-08-15 17:30:52 532

原创 Mysql百万数据分页查询优化

利用表的覆盖索引来加速分页查询 我们都知道,利用了索引查询的语句中如果只包含了那个索引列(覆盖索引),那么这种情况会查询很快。 因为利用索引查找有优化算法,且数据就在查询索引上面,不用再去找相关的数据地址了,这样节省了很多时间。另外Mysql中也有相关的索引缓存,在并发高的时候利用缓存就效果更好了。select * from Problem_submit order by id desc lim

2016-08-14 16:33:40 903 1

原创 Mysql分表分区

分表分区:优点:表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。分表:分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些子表可以分布在同一块磁

2016-08-14 16:22:14 198

原创 磁盘和内存选择B树和红黑树的原因

数据均在叶子节点,相邻的节点靠近,可减少殉职空间按块选址空间可浪费

2016-08-12 17:35:56 1407

原创 Spring mvc / 和 /*的区别

/ 能匹配路径型URL,不能匹配后缀型URL /* 能匹配任何类型URL

2016-08-12 16:07:57 444

原创 腾讯面试智力题

现在有100瓶药,只有1瓶是有毒的,老鼠试完药后,需要3天才能才能知道药是否有毒,而现在需要3天知道100瓶中哪1瓶有毒,请问最少需要多少只老鼠。 因为2^7=128>=100,最少需要7只 将1~100转换为2进制数,一共7位。 假设对于某数的2进制为:C1 C2 C3 C4 C5 C6 C7 老鼠mi将ci为1的药都试了,若mi在3天后死了,说明毒药为2进制的第ci

2016-08-12 11:26:28 11605 6

原创 Redis 订阅发布 原理

参考内容RedisServer包含两个重要的结构: 1. channels:实际上就是一个key-value的Map结构,key为订阅地频道,value为Client的List 2. patterns:存放模式+client地址的列表流程:从pubsub_channels中找出跟publish中channel相符的clients-list,然后再去pubsub_patterns中找出每一个相

2016-08-11 20:44:01 1048

原创 Log4j AsyncAppender 源码

public class AsyncAppender extends AppenderSkeleton implements AppenderAttachable { // 默认缓冲区大小 public static final int DEFAULT_BUFFER_SIZE = 128; // 缓冲区(LoggerEvent) private final List

2016-08-10 21:26:44 963

转载 SimHash算法

simhash算法的输入是一个向量,输出是一个f位的签名值。 为了陈述方便,假设输入的是一个文档的特征集合,每个特征有一定的权重。比如特征可以是文档中的词,其权重可以是这个词出现的次数。1. 将一个f维的向量V初始化为0;f位的二进制数S初始化为0;2. 对每一个特征:用传统的hash算法对该特征产生一个f位的签名b。对i=1到f:如果b的第i位为1,则V的第i个元素加上该特征的权重;否则,

2016-08-07 16:29:47 457

原创 Java ArrayBlockingQueue 源码

// 存放queue元素的数组 final Object[] items; // 可重入锁 final ReentrantLock lock; // 非空 private final Condition notEmpty; // 非满 private final Condition notFull;进入队列 private void enque

2016-08-07 12:02:23 179

原创 Java await和sleep的区别

import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.

2016-08-07 11:37:50 1219

原创 信号量 Semaphore

互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源 Semaphore、synchronized和ReentrantLoc

2016-08-07 10:46:24 485 2

原创 Diamond-Client执行流程

简单调用:public static void main(String[] str) { DiamondManager manager = new DefaultDiamondManager("group_test", "dataId_test", new ManagerListener() { public void receiveConfigInfo(St

2016-08-05 09:43:59 1182

原创 网易秋招 第2题(90%)

求最长的出路import java.util.ArrayDeque;import java.util.Deque;import java.util.Scanner;/** * Created by wwhhff11 on 16-8-2. */public class Main { private static class Point { int x;

2016-08-03 19:52:59 366

原创 Mybatis Cache 源码

Cache接口:public interface Cache { String getId(); void putObject(Object key, Object value); Object getObject(Object key); Object removeObject(Object key); void clear(); int getSize(); ReadWriteLo

2016-08-03 10:03:55 753

原创 Spring IoC 源码分析

BeanFactory容器public interface BeanFactory { String FACTORY_BEAN_PREFIX = &amp;amp;quot;&amp;amp;amp;&amp;amp;quot;; Object getBean(String var1) throws BeansException; Object getBean(String var1, Class var2) throws BeansException;

2016-08-02 11:24:25 1249

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除