自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(268)
  • 资源 (8)
  • 收藏
  • 关注

原创 Linux常用命令

1、软件安装卸载 (1)软件下载: Wget是一种软件下载工具 (2)软件安装: Ap-get是ubuntu下面的软件安装方式,基于debain Yum是redhat、centos下面的软件安装方式,基于linux,能够从指定的服务器自动下载RPM包并且安装 yum -y install 包名(支持*):自动选择y,全自动 yum install 包名(支持*):手动选

2017-09-06 15:49:07 228

原创 Git使用集锦

1、Git介绍 Git是分布式的代码管理工具,远程的代码管理是基于SSH git的文件状态变化周期2、配置本地Git连接GitHub (1)安装Git客户端“Git-2.7.2-32-bit_setup.1457942412.exe” (2)生成SSH Key:ssh-keygen -t rsa –C “邮箱地址”,注意

2017-09-06 11:24:07 299

原创 Java中的逻辑与和短路与

1、名词解释&称为逻辑与,会全部判断后得出结果,只有两个操作数都是true,结果才是true&&称为短路与,会从左往右逐个判断表达式,只要能得出结果后面的不再判断,也是只有两个操作数都是true,结果才是true。但是如果左边操作数为false,就不计算右边的表达式,直接得出false,相当于短路了右边|称为逻辑或,||称为短路或,道理类似2、举例说明 (1)逻辑或逐个判断表达式,因此以下代码会

2017-08-29 13:57:49 971

原创 Java等待多个线程执行完毕

1、使用joinpublic class TestCountDownLatch2{ public static void main(String[] args) throws InterruptedException { Thread[] threadArr = new Thread[10]; for(int i = 0; i < 10; i+

2017-08-29 09:07:22 856

原创 Redis常见使用场景

1、使用String实现计数 特点:String的Value一般是String,也可以是数字 内部实现:当涉及数字运算时,自动把String转换为Integer进行运算 应用场景:对客户端发送验证码次数进行限制 String借助INCR、INCRBY、DECR、DECRBY可以实现原子计数2、 使用List实现队列 特点:允许重复 内部实现:List实现为一个双向链表,即可以支持反向查

2017-08-28 22:26:02 371

原创 计算一组整数的连续子序列和的最大值

1、针对一维数组 思路:使用动态规划方法 算法说明: 设f(n)表示以a[n]为子序列最后一个元素的最大和,则可以有下面的规则: (1)当f(n-1)<0时,f(n)=a[n]; (2)当n!=0且f(n-1)>0时,f(n)=f(n-1)+a[n]算法实现/** * 有一串整数,有正有负,计算连续子序列和的最大值 * 规律总结 * (

2017-08-20 19:42:05 1008

原创 对称秘钥与公共秘钥的区别

1、对称秘钥 定义:消息发送方和消息接收方必须使用相同的密钥,该密钥必须保密。发送方用该密钥对待发消息进行加密,然后将消息传输至接收方,接收方再用相同的密钥对收到的消息进行解密 如何使用?:发送方将秘钥共享给接收方 为什么称为【对称】?:加密和解密使用了相同的秘钥 常见算法:DES、AES等2、公共秘钥(非对称秘钥) 定义:使用两个密钥,一个公共密钥PK和一个

2017-08-20 10:19:12 8886

原创 空间索引思路整理

需求:查找距离目标1000米内的餐馆 解决思路:对城市内所有餐馆(点对象)建立索引存储,加快查找速度 前提背景:POI空间分布不均匀,市中心比较集中,郊区很少解决方案: 1、使用索引,适合建立索引的数据结构是【Hash】和【树】 2、可能索引方案包括:B树,网格索引,四叉树索引、R树索引、GeoHash 3、B树是针对一维数据【单个字段】使用,空间对象(点、线、面)是多维数据

2017-08-19 21:27:18 3925

原创 数据分库分表Sharding JDBC学习

1、什么是分库分表 将原本属于一个表格的数据分散存储到不同数据库的不同表格中去

2017-08-19 12:56:15 1262

原创 Java BIO与NIO比较

参考:http://blog.csdn.net/skiof007/article/details/52873421 http://blog.csdn.net/z173273946/article/details/50010375 BIO与NIO对比 NIO内部机制简单模拟

2017-08-19 10:22:56 247

原创 单进程单线程的Redis如何能够高并发

参考文档: (1)http://yaocoder.blog.51cto.com/2668309/888374 (2)http://www.cnblogs.com/syyong/p/6231326.html1、基本原理 采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗) (1)为什么不采用多进程或多线程处理? 多

2017-08-16 18:34:59 33834 10

原创 模板方法设计模式简单实现

1、模板方法介绍 模板方法模式是在一个方法中定义一个算法的骨架,将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法可以进行挂钩(hook),钩子(hook)是一种被声明在抽象类中的方法,但只有空的或者默认的实现。钩子的存在,可以让子类有能力对算法的不同点进行挂钩。2、代码实现/** * 4S店提供售卖模板 * @author

2017-08-16 11:56:06 332

原创 适配器设计模式简单实现

1、适配器设计模式场景 当前类不能满足客户端需求,但又不能修改当前类(开闭原则),因此创建【适配器类】和【客户端目标接口】,实现方式有两种:1)适配器类【继承】当前类并实现目标接口;2)适配器类包含当前类引用并实现目标接口2、代码实现/** * 现有类 * @author Administrator * */public class Adaptee{ public vo

2017-08-16 09:24:27 721

原创 Spring中Bean初始化过程

1、解析配置文件得到Bean名称集合和定义集合public class DefaultListableBeanFactory .....{ ...... // Bean定义集合 private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String, BeanDefin

2017-08-15 22:31:35 842

原创 MySQL索引数据结构及算法原理学习笔记

学习参考:https://www.kancloud.cn/kancloud/theory-of-mysql-index/418521、预备知识 (1)存储介质一般为主存和磁盘 (2)主存(RAM)支持随机存取,磁盘寻址需要定位【磁道】和【扇区】,对应产生【寻道时间】和【旋转时间】,因此磁盘的存取速度往往是主存的【几百分之一】 (3)由于【局部性原理】的归纳,以及磁盘IO非常耗时,实际情况下磁盘

2017-08-14 23:21:41 4241 1

原创 @Autowired详解

前提:@Autowired生效的前提是在applicationContext.xml中启用 不过,目前已经被目前已经被 替代,后者功能更强大,一般只写后者autowire=”byName” 和 autowire=”byType” 区别: byName就是通过Bean的id或者name,byType就是按Bean的Class的类型@Autowired默认是byType1、在setter方法上使用@

2017-07-28 14:07:58 861

原创 由浅入深编写SQL并使用MyBatis实现

1、SQL执行顺序 2、由浅入深编写SQL 表格:两个表格分别是【优惠券元数据表】和【优惠券领取表】 需求:查询某个用户在某个商户可以领取的优惠券列表(注:商户在发放优惠券时对单个用户可领数量有限制) (1)表连接【用到join…on】 查询用户在某个商户已经领取的优惠券列表SELECT c.coupon_batch_id,c.max_num_owner from coupon_coop

2017-07-27 18:24:09 814

原创 Redis Sentinel基础知识

1、 Redis Sentinel(哨兵机制)支撑了Redis高可用性,能够支持Redis在特定的故障下完成故障转移和自我修复,保证服务的连续性2、 Redis Sentinel功能 (1) 监控:Sentinel持续检查Master和Slave是否处于正常工作状态 (2) 通知:暴露接口给外部应用程序,当被监控的Redis实例发生故障时,自动通知管理者 (3) 自动故障转移:当Maste

2017-07-26 23:04:30 674

原创 Redis主从复制基础知识

1、主从复制机制 (1)主节点会将客户端的操作指令发送给从节点执行 (2)主从节点由于未知原因断开后,从节点会主动尝试重新连接,并进行【增量同步】,即只提取失联期间错过的命令 (3)如果【增量同步】失败,则会执行【全量重新同步】(主节点生成一个包含全部数据的快照,发送给从节点2、为了保证低延迟和高性能,Redis采用异步复制。如果客户端想要执行同步复制,可以显式执行WAIT命令。 (1)Ma

2017-07-26 22:27:42 292

原创 Redis客户端简单比较

Redis客户端比较

2017-07-26 18:18:08 827

原创 Redis重要概念Master-Slave、Sentinel、Partition、Cluster

前言:一个企业级系统最重要的指标就是“高可用性”和“高性能”如果数据量不大,直接用一个Redis实例即可,读写均走Master如果数据量很大,为了减轻单个Redis实例压力,采取写到Master、读走Slave,前提是Slave会同步Master全量数据。Master-Slave(主从复制)解决了“读”性能问题,并没有解决“写”性能问题,也没用解决“高可用性”问题为了保证高可用,引入了Sentine

2017-07-26 18:13:59 1588

原创 Tomcat容器中相关对象的生命周期

1、Tomcat中相关对象的生命周期 (1)ServletContext:应用程序生命周期内,被所有Request和Session共享 (2)Servlet、Filter、Listener:应用程序生命周期内,被所有Request和Session共享 (3)HttpSession:客户端(浏览器)不关闭(同一实例),并且在Server中没有过期,被所有持有相同Session的Request共享

2017-07-26 17:56:23 413

原创 Redis持久化基础知识

Redis持久化机制 (1) 总体说明 Redis支持RDB和AOF两种持久化机制。RDB是定时存盘,AOF是将每次写入都记录到日志中,更加完整。RDB和AOF可以同时使用,但Redis重启时优先从AOF恢复数据。 (2) RDB方式: 优点: —-很容易实现每个小时备份或每天做备份,数据备份在紧凑型文件中,易于传输 —-fork子进程做备份,不影响运行时性能 —-Redis重启时加

2017-07-20 09:52:23 264

原创 Java单链表(双端链表)简单实现

1、节点数据结构public class LinkNode { public int data; public LinkNode next; public LinkNode(){ } public LinkNode(int value){ this.data = value; this.next = null; }}2、单链

2017-07-19 21:42:45 400

原创 数据结构和算法读书笔记-数据结构理论

1、数据结构 (1)常见的数据结构类型:数组、有序数组、堆栈、队列、链表、二叉树、哈希表、图 (2)存储用数据结构:数组、链表、树、哈希表 (3)程序员编写算法用数据结构:堆栈、队列(优先级队列)2、算法作用在数据结构上,一般需要考虑如下问题 (1)插入一个数据项 (2)删除一个数据项 (3)根据关键字查找指定项 (4)对所有数据进行排序3、如何评价算法 (1)比较次数+移动次数

2017-07-18 21:20:24 419

原创 Java优先级队列简单实现

/** * 优先级队列简单实现 * 采用数组实现 * 插入元素时需要进行key比较,找到索引位置 * 删除元素时,直接从顶端取出(优先级高的优先处理) * @author gisliu * */public class PriorityQueue { private int MAX_CAPACITY; private int[] data; private in

2017-07-18 21:06:20 542

原创 Redis集群理论知识

1、 Redis集群功能 (1) 自动将数据分散存储到不同Redis实例中 (2) 支持失效节点自动检测及应对机制 2、 Redis 集群 TCP Ports (1) 每个节点需要两个TCP端口,一个用于客户端连接(6379),一个用于节点间的通信(6379+10000=16379) (2) Cluster bus:使用二进制协议实现的节点间通信渠道,用于节点失效检测、配置更新检测

2017-07-17 22:24:57 453

原创 Redis分区理论知识

1、 分区好处 (1)支持多个Redis实例分布在不同机器上,扩展可用内存、CPU及带宽,从而支持更大数据库2、 分区缺点 (1) 不支持涉及多个key操作 (2) 不支持涉及多个Key的事务 (3) ……3、 分区原理 (1) 范围分区:key名称必须为统一格式key_name:ID,根据key ID进行选择,比如有四个实例0,1,2,3,ID=0-1000存储到instance

2017-07-17 22:22:29 614

原创 Java循环队列简单实现

public class Queue { private int MAX_CAPACITY; private int[] data; private int front; private int rear; private int nItems; public Queue(int capacity){ if(capacity < 0)

2017-07-16 18:01:59 482

原创 Java堆栈简单实现

public class StackTest { /** * don't initialize,while initial in constructors */ private int CAPACITY; private int[] data; private int top; public StackTest(int capacity){

2017-07-16 16:15:21 366

原创 Java常用集合类

Collections:使用Iterator遍历 Map:使用Map.entrySet遍历List:元素有序,可重复ArrayList:动态数组实现,随机存取速度快LinkedList:双向队列实现,插入删除速度快Set:元素无序,不可重复 Queue:模拟堆栈、队列Hashtable中key和value均不允许为null,否则抛出异常NullPointerExcep...

2017-07-16 11:14:48 258

原创 比较三个数大小

int a,b,c;方法一int max,median,min; if(a>b){ if(b>c){ max=a; median=b; min=c; } else { min=b;

2017-07-15 22:44:31 5202

原创 Java运算符结合性

注意: int a = ++i; //先自增再赋值 int b = i++; //先赋值再自增int a = 1 ? 2 : 3 ? 4 : 5; // 运行结果a=2;即条件运算符是从右到左结合

2017-07-15 22:35:26 1068 1

原创 Java三种不同的锁

Java中,锁分为乐观锁和悲观锁两类(数据库乐观锁和悲观锁参考 http://blog.csdn.net/liupeng_qwert/article/details/72935469)悲观锁:直接将在并发情况下可能出问题的代码加同步,同一时刻只允许一个线程访问,典型的代表是synchronized 乐观锁:每次不加锁去执行某项操作,如果发生冲突则失败并重试,直到成功为止,也称之为【自旋】

2017-07-15 10:55:25 530

原创 单例模式几种实现

饿汉模式public class JDBCSingleton1 { /** * 构造函数私有,避免类在外部被实例化 */ private JDBCSingleton1(){ } private static final JDBCSingleton1 jdbcSingleton = new JDBCSingleton1(); // 饿汉模式,线程安全

2017-07-14 17:17:37 227

原创 Tomcat最佳线程数

什么是最佳线程数? 为满足更多用户访问需求,可以调整Tomcat线程数,但是不能太大,否则导致线程切换开销,随着用户递增(线程数也随之调整),系统QPS逐渐增加,当用户量达到某个值,QPS并不会增加,或者增加不明显,同时请求的响应时间却大幅增加。这个阀值认为是最佳线程数。怎么计算最佳线程数? (1)通过用户慢慢递增进行压测,观察QPS,响应时间 (2)通过公式计算:服务器端最佳线程数量=((线

2017-07-14 14:51:35 3825

原创 系统性能基础知识

1、基本指标 QPS(TPS):每秒【请求/事物】数量(注:TPS是软件测试结果的测量单位) 并发数:系统同时处理的【请求/事物】数量 响应时间:一般取平均响应时间(因为各个功能模块响应时间不一,甚至同一个功能模块在输入数据不同时响应时间也不一样),响应时间=CPU计算时间+IO时间2、指标之间关系 并发数=QPS * 平均响应时间3、系统吞吐量 系统吞吐量由QPS和并发数两个因素决定。初

2017-07-14 14:39:02 593

原创 设计模式

1、什么是设计模式 设计模式是一套【经过实践验证】的针对【特定问题】的解决方案,例如如果想让某一个类只被创建一次,并且被其它所有的类公用,则【单例模式】会是很好的解决方案。一般来讲,设计模式具有以下特征:与具体编程语言无关是经过大量工程实践的经验总结可以用来进行系统架构设计恰当使用能够让应用程序更加灵活、可维护性高、代码可重用性高3、设计模式分类创建型设计模式 工厂模式 抽象工

2017-07-14 09:53:28 252

原创 记录Redis存储对象的问题

1、Redis可以用来存储Java对象,Jedis有一个方法 String redis.clients.jedis.BinaryJedis.set(byte[] key, byte[] value)Set the string value as value of the key. The string can't be longer than 1073741824 bytes (1 GB). Tim

2017-07-13 17:33:48 1052

原创 生产者和消费者三种实现

1、syncronized+wait+notifypackage com.rrfare.producerconsumer;import java.util.LinkedList;import java.util.Queue;import java.util.Random;public class OrderManager { // 容器最大值 private static fina

2017-07-11 22:22:59 2237

Struts简洁入门工程

Struts简洁入门工程,包含配置文件和Jar包

2016-02-20

Spring入门简洁工程

Spring入门工程,包含配置文件和Jar包

2016-02-20

Hibernate简洁入门工程

Hibernate简洁入门工程,包含配置文件和Jar包

2016-02-20

SpringMVC入门最简洁工程

SpringMVC入门最简洁工程,包含配置文件及最少的Jar包

2016-02-20

学习Axure实例

产品原型软件Axure,学习的时候参考例子实际动手再操作一遍

2013-10-07

COM学习——动态绑定之引用计数

COM入门学习实例,c++程序实现引用计数易于理解,动态绑定相关

2011-06-18

MFC编写简易文本编辑器

用MFC实现记事本的部分功能,包括输入,换行,统计字符、数字等个数,撤销、粘贴、查找等

2011-05-18

bmp位图读取并处理

详解位图文件结构,用VC读取位图并显示,能对位图进行相关处理,如反色、平滑、图像叠加、保存等

2011-05-18

空空如也

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

TA关注的人

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