- 博客(382)
- 收藏
- 关注

转载 一致性hash算法
那怎么搭建一个好的系统架构呢?这个话题太大,这里主要说一下数据分流的方式。比如我们的数据库服务器只能存储200个数据,突然要搞一个活动预估达到600个数据。可以采用两种方式:横向扩展或者纵向扩展。纵向扩展是升级服务器的硬件资源。但是随着机器的性能配置越高,价格越高,这个代价对于一般的小公司是承担不起的。横向扩展是采用多个廉价的机器提供服务。这样一个机器只能处理200个数据、3个
2017-06-22 18:03:12
382

转载 Java对象的序列化与反序列化
一、为什么要进行序列化再介绍之前,我们有必要先了解下对象的生命周期,我们知道Java中的对象都是存在于堆内存中的,而堆内存是可以被垃圾回收器不定期回收的。从对象被创建到被回收这一段时间就是Java对象的生命周期,也即Java对象只存活于这个时间段内。对象被垃圾回收器回收意味着对象和对象中的成员变量所占的内存也就被回收,这意味着我们就再也得不到该对象的任何内容了,因为已经被销毁了嘛,当然我们
2017-05-04 17:54:31
421

转载 数据库中 事务的四大特性(ACID),事务的隔离级别。
如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency) 一致性是指事务必须使
2017-04-06 18:15:11
9194
2

转载 Java内存分配之堆、栈和常量池
Java内存分配主要包括以下几个区域:1. 寄存器:我们在程序中无法控制2. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中3. 堆:存放用new产生的数据4. 静态域:存放在对象中用static定义的静态成员5. 常量池:存放常量6. 非RAM(随机存取存储器)存储:硬盘等永久存储空间**************
2017-03-09 14:06:37
408

转载 JAVA反射系列之Field----------java.lang.reflect.Field使用方法。
Field类主要是用来辅助 获取和操作 类 的 【属性】的!1.怎么通过反射获取类的属性 先来看JDK提供的方法有如下几种: a)Class.getDeclaredField(String name); 返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。 b)Class.getDeclaredF
2017-01-19 13:58:00
3880

转载 Java之内存分析和String对象
Java中内存分析: 栈(Stack) :存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中)。 堆(heap):存放所有new出来的对象。 常量池(constant pool):在堆中分配出来的一块存储区域,存放储显式的String常量和基本类型常量(float、int等)。另外,可以存储
2016-11-29 12:03:29
1382

原创 spring 事务是否会回滚的几种写法
spring 事务注解默认遇到throw new RuntimeException("...");会回滚需要捕获的throw new Exception("...");不会回滚// 指定回滚@Transactional(rollbackFor=Exception.class) public void methodName() { // 不会回滚 t
2016-09-28 09:50:22
3333

转载 SOCKET连接与TCP/IP连接
SOCKET连接与TCP/IP连接创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TPC/IP协议是传输层协议,主要解决数据 如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数
2016-08-01 17:18:43
2704

原创 httpClient中的三种超时设置
在Apache的HttpClient包中,有三个设置超时的地方:(1)/* 从连接池中取连接的超时时间*/ ConnManagerParams.setTimeout(params, 1000); 设置ConnectionPoolTimeout:这定义了从ConnectionManager管理的连接池中取出连接的超时时间,此处设置为1秒。
2016-07-22 13:50:23
10036

转载 HTTP报文结构图解
GET请求报文如下POST请求报文如下200响应报文如下404响应报文如下HTML中的meta标签的http-equiv属性,实际上修改的是响应报文的响应头中的键值对
2016-07-21 17:54:08
1150

转载 数据库分片(Sharding)技术
假如您有一个应用程序,随着业务越来越有起色,系统所牵涉到的数据量也就越来越大,此时您要涉及到对系统进行伸缩(Scale)的问题了。一种典型的扩展方法叫做“向上伸缩(Scale Up)”,它的意思是通过使用更好的硬件来提高系统的性能参数。而另一种方法则叫做“向外伸缩(Scale Out)”,它是指通过增加额外的硬件(如服务器)来达到相同的效果。从“硬件成本”还是“系统极限”的角度来说,“向外伸缩”一
2016-07-01 13:58:44
7720

转载 serialVersionUID的作用 和 Java序列化与反序列化
serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。有两种生成方式: 一个是默认的1L,比如:private static final long serialVersionUID = 1L; 一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:
2016-05-25 17:32:49
497

原创 mysql 数据类型 (最大值 和 最小值)
1、整型MySQL数据类型含义(有符号)tinyint(m)1个字节 范围(-128~127)smallint(m)2个字节 范围(-32768~32767)mediumint(m)3个字节 范围(-8388608~8388607)int(m)4个字节 范围(-2147483648~21474836
2016-04-19 14:40:08
22434

转载 MySQL数据类型 int(M) 表示什么意思?
MySQL数据类型 int(M) 表示什么意思?MySQL 数据类型中的 integer types 有点奇怪。你可能会见到诸如:int(3)、int(4)、int(8) 之类的 int 数据类型。刚接触 MySQL 的时候,我还以为 int(3) 占用的存储空间比 int(4) 要小, int(4) 占用的存储空间比 int(8) 小。 后来,参看 MySQL 手册,发现自己
2016-01-29 10:46:07
1183

转载 Java异常:选择Checked Exception还是Unchecked Exception?
Java异常:选择Checked Exception还是Unchecked Exception?Java包含两种异常:checked异常和unchecked异常。checked和unchecked异常之间的区别是:Checked异常必须被显式地 捕获 或者 传递(向上抛出[ 沿着调用栈 继续向上传播该异常]),如try-catch-fina
2016-01-26 20:43:57
679

原创 static代码块,代码块 ,构造方法(一个参数),构造方法(二个参数)
//================================ 父类 =================================//public class QQParent { { System.out.println("QQParent的构造块"); } public QQParent(String name,String
2015-12-03 12:59:51
584

原创 HashTable 与HashMap 三点区别
1) HashTable 与HashMap实现的是不同的接口 HashTable 是Dictionary的子类 / HashMap 是Map接口的子类2)HashTable的键值都不允许为空, HashMap的键值允许为空。HashTable不允许null值(key和value都不可以),HashMap允许null值(key和v
2015-08-22 21:31:40
583

转载 深入理解Servlet转发和重定向
深入理解Servlet转发和重定向分类: Java 精华文章 2013-10-31 00:14 1582人阅读 评论(1)收藏 举报一、转发 转发的原理,可以通过下图展示: 浏览器的请求发送给组件1,组件1经过一些处理之后,将request和response对象“传递”给组件2,由组件2继续处理,然后输出响应(当然,也可以继续向其他组件“传递
2015-07-20 09:41:24
455

转载 Java类加载器总结
Java类加载器总结1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:1) 装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用
2015-04-09 16:11:01
372

转载 java 数组
数组(Array):相同类型数据的集合。 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int[10]; 数组名,也即引用a,指向数组元素的首地址。 方式2(同C语言) type变量名[] = new type[数
2015-04-03 19:24:38
353

原创 java 获取map中所有的key值
java 获取map中所有的key和value值java.util.Iterator it = hashmap.entrySet().iterator();while(it.hasNext()){java.util.Map.Entry entry = (java.util.Map.Entry)it.next();entry.getKey() 返回与此项对应的键entry.g
2014-11-17 16:29:48
53289
4
原创 Java对象 转化成 json字符串 输出
使用 com.alibaba.fastjson.JSONObject。 ======ok == com.alibaba.fastjson.JSONObject ====== res : {"bwDictId":2,"list":"127.0.0.1","logUserId":33,"note":"黑名单测试Note","score":150
2018-10-15 18:54:46
22540
原创 java 接口中 不要加任何修饰符号 (public 也不要加)
阿里巴巴开发规范中提到:-----------------------------------------------------------------------------------------------------------------------------------------------------public interface NI { pro...
2018-08-31 17:46:41
13592
3
原创 httpServletRequest.getContextPath() 和 getServletPath() 和 getRequestURL()
http://localhost:8088/aimili/event/eventList.htm?name=1&key=3&class=5 String url = httpServletRequest.getRequestURL().toString(); // url 为 :http://localhost:8088/aimili...
2018-08-14 16:05:56
2930
原创 防止xss攻击 --- getParameter getParameterValues getParameterMap的使用
import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.Set;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;impo...
2018-08-03 17:59:57
3115
转载 多线程 Future
package src;import java.util.ArrayList;import java.util.List;import java.util.Random;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.c
2017-12-25 16:13:03
584
转载 服务熔断、降级、限流、异步RPC -- HyStrix
原文地址:http://blog.youkuaiyun.com/chunlongyu/article/details/53259014在今天,基于SOA的架构已经大行其道。伴随着架构的SOA化,相关联的服务熔断、降级、限流等思想,也在各种技术讲座中频繁出现。本文将结合Netflix开源的Hystrix框架,对这些思想做一个梳理。背景伴随着业务复杂性的提高,系统的不断拆分,一个面向用户端
2017-11-28 09:41:51
749
转载 @ModelAttribute注解的作用
1.@ModelAttribute注释void返回值的方法[java] view plain copy@Controller public class HelloModelController { @ModelAttribute public void populat
2017-11-17 18:06:58
4816
1
转载 char(10)和VARCHAR(10)主要的区别是什么?
1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。 2.CHAR的效率比VARCHAR2的效率稍高。 3.目前VARCHAR是VARCHAR2的同义词。工业标准的V
2017-11-08 11:15:04
1567
原创 $.each(srcData, function(i, oneData){});
jQuery中 each循环:在each循环里面不能使用break结束循环,也不能使用continue来结束本次循环,想要实现类似的功能就只能用return。已验证break 用return false;continue 用return ture; 或 return;
2017-10-31 18:44:25
896
转载 Java synchronized 详解
下面的文字均来自其它博客和网页。参考:http://www.jianshu.com/p/ea9a482ece5f由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。需要明确的几个问题:synchronized关键字可以作为函数的修饰符,也可作
2017-09-17 16:42:33
377
转载 面试题:Dubbo中zookeeper做注册中心,如果注册中心集群全都挂掉,发布者和订阅者之间还能通信么?
1、【提供者】在【启动】时,向注册中心zk 【注册】自己提供的服务。 2、【消费者】在【启动】时,向注册中心zk 【订阅】自己所需的服务。可以的,消费者在启动时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用可以的,消费者本地有一个生产者的列表,他会按照列表继续工作,倒是无法从注册中心去同步最新
2017-09-12 18:21:22
14387
1
转载 dubbo工作原理
dubbo主要核心部件 Remoting:网络通信框架,实现了sync-over-async和request-response消息机制。RPC:一个远程过程调用的抽象,支持负载均衡、容灾和集群功能。Registry:服务目录框架用于服务的注册和服务事件发布和订阅。 dubbo架构 Provider: 暴露服务的提供方。Consum
2017-09-12 18:12:14
956
转载 给dubbo接口添加白名单——dubbo Filter的使用
面试题大概意思是,测试和生产 公用一套zookeeper,怎么保证消费不冲突?在开发中,有时候需要限制访问的权限,白名单就是一种方法。对于Java Web应用,Spring的拦截器可以拦截Web接口的调用;而对于dubbo接口,Spring的拦截器就不管用了。dubbo提供了Filter扩展,可以通过自定义Filter来实现这个功能。本文通过一个事例来演示如何实
2017-09-12 17:50:26
2743
转载 javaweb之Filter详解
Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。二、Filter简介 Servlet API中提供了一个...
2017-09-11 17:49:45
387
转载 Java并发编程:volatile关键字解析
作者:海子 出处:http://www.cnblogs.com/dolphin0520/Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 vola
2017-09-11 15:22:32
275
转载 redis中 SETBIT命令 和 BITCOUNT命令
原文链接:https://www.zhihu.com/question/27672245/answer/123641959这个是SETBIT使用方法的简单说明<img src="https://pic4.zhimg.com/8650852c348cf08ff711e44ca13aaf47_b.png" data-rawwidth=&qu
2017-09-11 11:31:41
1759
转载 浅谈mysql中varchar(m)与char(n)的区别与联系
对这varchar和char这两个数据类型最简单区分是:varchar存放变长字符串,char存放定长字符串。那么他们是否还有其他差别呢?本文将从浅显的层次以抛出问题解决问题的形式对两者的区分进一步了解。首先我们确认一下mysql版本。本文中的所有知识点都基于mysql5.0+,本文中的例子基于mysql5.6。那么,接下来开始抛出我的问题。
2017-09-11 10:21:04
579
转载 深入理解乐观锁与悲观锁
在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、
2017-09-11 10:13:59
265
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人