自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 资源 (1)
  • 收藏
  • 关注

转载 Java 从源码角度理解String StringBuffer StringBuilder 的区别

Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串,其中StringBuilder类是到jdk 1.5才新增的。字符串操作可以说是几乎每门编程语言中所必不可少的,你真的理解其内幕吗?下面让我们开始探秘之旅吧! 既然都是用来封装字符串的,那为什么还要3个类来封装呢? 它们三者之间到底有何区别? 它们三者之间的使用场景分...

2018-04-29 14:36:39 94

转载 Java IO流学习总结

转载这篇文章的原因是从节点流 到 处理流的角度进行了分析Java流类图结构:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来: 因为数据编码...

2018-04-27 23:48:27 229

转载 Java中IO流之FileOutputStream、FileIntputStream、FileReader 、FileWriter、ObjectOutputStream

Java中IO流学习总结一.IO流中的结构字符流:顾名思义,该流只能处理字符,但处理字符速度很快字节流:可以处理所有以bit为单位储存的文件,也就是说可以处理所有的文件,但是在处理字符上的速度不如字符流二.IO流的具体使用从各种输入流到各种输出流 注:其实在各个不同的类型中,输入流到输出流的套路基本都一样。 那就拿最简单的FileOutputStream来举例子吧 从FileOutputStrea...

2018-04-27 23:32:25 1144

转载 Java分布式应用学习笔记05多线程下的并发同步器----后篇

5.  CountDownLatch很多资料上都说CountDownLatch是倒数计数器,我觉得这种说法太过专业,其实它就是一个数数的人员。利用它,可以在多线程执行任务完毕后完成进行多线程的等待,便于等待所有的线程之后在干别的事情,这个有点类似于FutureTask,使用上不太一样。这个场景就是一个线程必须要等到其他线程执行完毕后才能往下执行,注意,这里这个线程没必要需要其他线程的执行结果,而是...

2018-04-27 22:50:10 206

转载 Java分布式应用学习笔记05多线程下的并发同步器----前篇

1.  前言JDK提供的并发包,除了上一篇提到的用于集合外,还有线程的调度、协作等等功能。上篇提到过,线程之间除了竞争关系,还有协作关系。在高并发环境下有效利用Java并发包解决线程之间协作的特殊场景。在并行计算,尤其是多线程计算的结果集合并的时候都需要用到这些并发同步器。还有一种使用场景,就是跨越多台机器(实机)的多线程进行并行运算,需要将多台机器进行结果集的汇总,合并。其原理核心也是使用这些并...

2018-04-27 22:37:32 146

转载 nginx与tomcat比较

web上的server都叫web server,但是大家分工也有不同的。nginx常用做静态内容服务和代理服务器(不是你FQ那个代理),直面外来请求转发给后面的应用服务(tomcat,django什么的),tomcat更多用来做做一个应用容器,让java web app跑在里面的东西,对应同级别的有jboss,jetty等东西。但是事无绝对,nginx也可以通过模块开发来提供应用功能,tomcat...

2018-04-27 20:17:09 478

转载 服务器端负载均衡和客户端负载均衡的区别?

服务器端负载均衡:例如Nginx,通过Nginx进行负载均衡,先发送请求,然后通过负载均衡算法,在多个服务器之间选择一个进行访问;客户端负载均衡:例如spring cloud中的ribbon,客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡;Ribbon是Netflix发布的负载均衡器,它可以控制HTTP和TCP客户端的行为规则。Ribbo...

2018-04-27 20:02:50 1300

转载 浏览器并发请求个数

探知 浏览器并发请求个数  起因:在工作中经常会发现浏览器请求过多,会很慢很卡,但我并不知道并发请求个数,          于是就写个例子,探知浏览器并发请求的个数。  思路:1.新建网站。          2.添加两个按钮,分别添加点击事件,请求不同接口。          3.服务端添加内容,打印当前时间的日志,并使进程sleep 10秒。          4.分别点击按钮,查看日志时间...

2018-04-25 09:20:48 19554

转载 服务端为什么需要心跳(保活)机制

如果没有特意的设置某些选项或者实现应用层心跳包,TCP空闲的时候是不会发送任何数据包。也就是说,当一个TCP的socket,客户端与服务端谁也不发送数据,会一直保持着连接。这其中如果有一方异常掉线(例如死机、路由被破坏、防火墙切断连接等),另一端如果没有发送数据,永远也不可能知道。这对于一些服务型的程序来说,是灾难性的后果,将会导致服务端socket资源耗尽。  所以为了保证连接的有效性、及时有效...

2018-04-24 11:50:50 1281

转载 HTTP的长连接(持久连接)和短连接

HTTP的长连接和短连接    本文总结&分享网络编程中涉及的长连接、短连接概念。    关键字:Keep-Alive,并发连接数限制,TCP,HTTP一、什么是长连接     HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用...

2018-04-24 11:48:22 12714 1

原创 JAVA中的JVM

对于JVM内存配置参数:-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3其最小内存值和Survivor区总大小分别是()答案:10240m,2048m-Xmx:最大堆大小-Xms:初始堆大小-Xmn:年轻代大小-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值年轻代5120m, Eden:Survivor=3,Su...

2018-04-24 09:35:02 273

转载 java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

目录(?)对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考java 泛型详解、Java中的泛型方法、 java泛型详解1. 概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形...

2018-04-23 20:55:50 115

转载 JAVA中的泛型

1.为什么需要泛型泛型在Java中有很重要的地位,网上很多文章罗列各种理论,不便于理解,本篇将立足于代码介绍、总结了关于泛型的知识。希望能给你带来一些帮助。先看下面的代码:[java] view plain copy List list = new ArrayList();   list.add("CSDN_SEU_Cavin");   list.add(100);   ...

2018-04-23 20:03:49 104

转载 Java中Number类详解

1.数据类型基本简介一般情况下我们会使用数据的基本数据类型:byte、int、short、long、double、float、boolean、char;对应的包装类型也有八种:Byte、Integer、Short、Long、Double、Float、Character、Boolean;包装类型都是用final声明了,不可以被继承重写;在实际情况中编译器会自动的将基本数据类型装箱成对象类型,或...

2018-04-23 19:52:07 308

转载 mybatis整合redis(主要是关于怎么样在mybatis中配置redis作为缓存)

mybatis默认缓存是PerpetualCache,可以查看一下它的源码,发现其是Cache接口的实现;那么我们的缓存只要实现该接口即可。该接口有以下方法需要实现:  String getId();  int getSize();  void putObject(Object key, Object value);  Object getObject(Object key);  Object r...

2018-04-23 18:57:39 883

转载 Mybatis缓存和Redis缓存服务器的案例分析

MyBatis默认是支持一级缓存和二级缓存,他自身的实现是通过PerpetualCache,这哥缓存对象实现了,当然也可以是MemarCache。目前中用的比较多的就是Redis,是一个nosql数据库,也称为缓存数据库。1. 什么是一级缓存? 为什么使用一级缓存?      每当我们使用MyBatis开启一次和数据库的会话,MyBatis会创建出一个SqlSession对象表示一次数据库会话。 ...

2018-04-23 18:50:00 2130

转载 MySQL数据库优化(三)——MySQL悲观锁&&乐观锁(并发控制)

一、悲观锁    1、排它锁,当事务在操作数据时把这部分数据进行锁定,直到操作完毕后再解锁,其他事务操作才可操作该部分数据。这将防止其他进程读取或修改表中的数据。    2、实现:大多数情况下依靠数据库的锁机制实现     一般使用 select ...for update 对所选择的数据进行加锁处理,例如select * from account where name=”Max” for upd...

2018-04-23 18:29:28 220

转载 mysql一个数据库允许存放多少个表?数据库里表多少个才合理?

mysql的配置项里是否有对一个数据库中,是否有最大数据表的限制,后面查询了相关资料,才发现,mysql数据库中,对单个数据库中的最大允许建立的数据表是没有配置项,也就是说没有限制的。mysql单数据库对数据表限制数量的问题:1.一个数据库是没有表现值的,或者说这个被限制的值很大2.一个mysqld服务可以支持的表对象数量是,42亿多点,所以这个限制基本上不需要考虑 从性能考虑的话,一个数据库建立...

2018-04-23 16:48:41 31708 1

转载 Java并发编程的总结与思考

编写优质的并发代码是一件难度极高的事情。Java语言从第一版本开始内置了对多线程的支持,这一点在当年是非常了不起的,但是当我们对并发编程有了更深刻的认识和更多的实践后,实现并发编程就有了更多的方案和更好的选择。本文是对并发编程的一点总结和思考,同时也分享了Java 5以后的版本中如何编写并发代码的一点点经验。为什么需要并发    并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(...

2018-04-23 16:26:22 139

转载 如何实现超高写多读少并发的无锁缓存

一、需求缘起【业务场景】有一类写多读少的业务场景:大部分请求是对数据进行修改,少部分请求对数据进行读取。例子1:滴滴打车,某个司机地理位置信息的变化(可能每几秒钟有一个修改),以及司机地理位置的读取(用户打车的时候查看某个司机的地理位置)。void SetDriverInfo(long driver_id, DriverInfoi); // 大量请求调用修改司机信息,可能主要是GPS位置的修改Dr...

2018-04-21 18:56:08 722

转载 mybatis进阶--一对多查询

mybatis进阶--一对多查询  首先,我们还是先给出一个需求:根据订单id查询订单明细——我们知道,一个订单里面可以有多个订单的明细(需求不明确的同学,请留言或者去淘宝网上的订单处点一下就知道了)。这个时候,一个订单,对应多个订单的id。这种需求出现的时候,我们应该如何查询呢?  此时我们的数据模型如下图(左)由于查询用户也是我们的需求,所以就在原有的基础上进行扩展,数据模型如下(右):   ...

2018-04-21 18:35:03 154

转载 mybatis入门-动态sql

mybatis入门-动态sql 什么是动态sql  判断的动态sql    mybatis核心就是对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。    现有需求如下:需要查询用户,输入的是用户类,如果用户的性别类不为空,则将性别作为查询条件之一,如果用户的姓名不为空,则将用户姓名作为查询条件之一。如果用户两个属性都为空,则查询所有用户。    我们知道,在mapper中...

2018-04-21 17:36:28 130

转载 mybatis进阶--一对一查询

mybatis进阶--一对一查询   所谓的一对一查询,就是说我们在查询一个表的数据的时候,需要关联查询其他表的数据。 需求    首先说一个使用一对一查询的小需求吧:假设我们在查询某一个订单的信息的时候,需要关联查询出创建这个订单对应的用户信息。表模型如下(     ResultType  sql语句的书写    首先,我们要对我们的需求进行分析。1.我们需要确定这个需求需要涉及到哪两张表,其中...

2018-04-21 17:13:12 158

转载 mybatis入门--mapper代理方式开发

        不使用代理开发         之前,我们说了如何搭建mybatis框架以及我们使用mybatis进行简单的增删改查.现在,我们一起来构建一个dao层的完整代码.并用@test来模拟service层对dao层进行一下调用.         其实构建很简单,跟我们之前的差不多.如果不是为了演示其中的弊端,我甚至都懒得再写这些东西了.我们这次用UserDao为大家演示.        ...

2018-04-20 21:35:42 116

转载 【MyBatis】查询缓存(一级缓存和二级缓存)

         一级缓存:是SQlSession级别的缓存。在操作数据库时需要构造SqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的SqlSession之间的缓存数据区域(HashMap)是互相不影响的。        二级缓存:是mapper级别的缓存,多个SqlSession去操作同一个mapper的sql语句,多个SqlSession可以共用二级缓存...

2018-04-20 21:34:42 895

转载 Java并发编程:并发容器之CopyOnWriteArrayList (2)

证明CopyOnWriteArrayList是线程安全的先写一段代码证明CopyOnWriteArrayList确实是线程安全的。ReadThread.javaimport java.util.List;public class ReadThread implements Runnable { private List<Integer> list; ...

2018-04-20 21:02:03 163

转载 Java并发编程:并发容器之CopyOnWriteArrayList(转载)

 原文链接:  http://ifeve.com/java-copy-on-write/    Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并...

2018-04-20 20:41:54 92

转载 java并发编程系列之ReadWriteLock读写锁的使用

前面我们讲解了Lock的使用,下面我们来讲解一下ReadWriteLock锁的使用,顾明思义,读写锁在读的时候,上读锁,在写的时候,上写锁,这样就很巧妙的解决synchronized的一个性能问题:读与读之间互斥。ReadWriteLock也是一个接口,原型如下: [java] view plain copypublic interface ReadWriteLock {    ...

2018-04-20 20:16:54 149

转载 谈谈Java中的volatile

谈谈Java中的volatile内存可见性留意复合类操作解决num++操作的原子性问题禁止指令重排序总结内存可见性  volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级,相比使用synchronized所带来的庞大开销,倘若能恰...

2018-04-20 10:53:28 90

转载 mybatis进阶--输入映射和输出映射

我们知道,mapper.xml是我们配置操作数据库的sql语句的地方。其中每个sql语句对应着一个方法,每个方法都有自己的输入输出参数类型。那么这些类型都是怎么配置的呢?今天我们来一起学习下。         输入映射         首先是输入类型,输入类型分为以下几种:1.基本类型。2.pojo对象类型。3.pojo包装对象。所谓的包装对象,可以理解为,一个对象里面包含着另外一个对象。    ...

2018-04-19 11:23:44 118

转载 jvm的优化设置及设置的意义

1.数据类型java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte、short、int、long、char、float、double、boolean、returnAddres...

2018-04-18 17:47:01 236

转载 Spring中的AOP 和 动态代理技术

Spring AOP 和 动态代理技术说明:本文首发于微信公众号并同步至个人博客 http://www.fengzheng.pub/archives/277.html,转载请注明来源。AOP 是什么东西首先来说 AOP 并不是 Spring 框架的核心技术之一,AOP 全称 Aspect Orient Programming,即面向切面的编程。其要解决的问题就是在不改变源代码的情况下,实现对逻辑功...

2018-04-18 16:43:19 184

转载 Dubbo是什么

Dubbo是什么?能做什么?Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。 Dubbo适用于哪些场景?当网站变大后,不可避免的需要拆分应用进行服务化,以提高开发效率,调优性能,节省关键竞争资源等。 当服务越来越多时,服务的URL地址信息就会爆炸式增长,配置管理变得非常困难,F5硬件负载均衡器...

2018-04-17 22:27:10 397

转载 Kafka、RabbitMQ、RocketMQ消息中间件的对比

Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能-转自阿里中间件引言分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注。那么,消息中间件性能究竟哪家强?带着这个疑问,我们中间件测试组对常见的三类消息产品(Kafka、Rabbi...

2018-04-17 21:06:31 216

转载 RabbitMQ消息队列

RabbitMQ消息队列之二:消费者和生产者在使用RabbitMQ之前,需要了解RabbitMQ的工作原理。RabbitMQ的工作原理RabbitMQ是消息代理。从本质上说,它接受来自生产者的信息,并将它们传递给消费者。在两者之间,它可以根据你给它的路由,缓冲规则进行传递消息。示例图RabbitMQ的术语解释生产者:生产消息,发送消息。类似工厂。 消费者:接受消息,使用消息。类似顾客。 队列:存储...

2018-04-17 20:56:49 123

转载 在Java项目中如何使用log4j和slf4j实现日志打印

什么是log4j?Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。...

2018-04-17 19:37:36 1756

原创 SQL语句积累

使用场景SQL中包含有max(time)这个值的这条记录例如:表1 Cost_Income_table中有如下字段      ID nameIDCOSTIncomeTime1115202018-01-012125502018-01-023216302018-01-02查找每个人的最新一条的支出收入记录。解决方案:select  *  from Cost_Income_table   obj  wh...

2018-04-17 18:08:08 130

转载 简单粗暴地理解js原型链--js面向对象编程

原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好。不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么。简单粗暴点看原型链吧,想点与代码无关的事,比如人、妖以及人妖。1)人是人他妈生的,妖是妖他妈生的。人和妖都是对象实例,而人他妈和妖他妈就是原型。原型也是对象,叫原型对象。     2)人他妈和人他爸啪啪啪能生出一堆人宝宝、妖...

2018-04-13 10:52:20 117

转载 带你一分钟理解闭包--js面向对象编程

上一篇《简单粗暴地理解js原型链--js面向对象编程》没想到能攒到这么多赞,实属意外。分享是个好事情,尤其是分享自己的学习感悟。所以网上关于原型链、闭包、作用域等文章多如牛毛,很多文章写得很深入很专业,而我却喜欢用更简单方式来解说简单的事情。什么是闭包? 先看一段代码:function a(){ var n = 0; function inc() { n++; ...

2018-04-13 10:49:48 142

转载 Spring中的注解

1.      当用get发请求时,GET的URL中带有参数,在Spring中怎么提取这些参数的例子@RequestMapping(value = {“alarmStat/{neId}/{deviceId}”},method= { GET})Public @ResponseBody WebAsyncTask<TaskAlramCountStat>  findAlarm(final @P...

2018-04-12 23:05:55 170

rocketmq-console

想要设置为免费的,谁知道不能设置,注意将包用压缩工具打开,修改BOOT-INF中的application.properties中的rocketmq.config.namesrvAddr为自己的rocketMQ的地址。

2018-08-03

空空如也

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

TA关注的人

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