自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(207)
  • 收藏
  • 关注

转载 Java异步NIO框架Netty实现高性能高并发

1. 背景1.1. 惊人的性能数据最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二...

2018-09-10 23:36:28 209

转载 Netty学习笔记

转载:https://segmentfault.com/a/1190000016072310#articleHeader9 (非搜狗浏览器)一. Java Blocking I/O ExecutorService executor = Excutors.newFixedThreadPollExecutor(100);//线程池 ServerSocket serverS...

2018-09-09 20:05:38 189

转载 Redis与Memcached的区别

Redis与Memcached的区别 传统MySQL+ Memcached架构遇到的问题  实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:  1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占...

2018-09-06 00:22:00 136

转载 MyBatis如何防止SQL注入

原文地址:https://www.cnblogs.com/200911/p/5869097.html SQL注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中(例如,为了转储数据库内容给攻击者)。[摘自] SQL injection - WikipediaSQL注入,大家都不陌生,是一种常见的攻击方式。攻击者在界面的表单信息或URL上输入一些奇怪的SQ...

2018-04-27 00:17:05 438

转载 mybatis是如何防止SQL注入的

SQL注入是一种很简单的攻击手段,但直到今天仍然十分常见。究其原因不外乎:No patch for stupid。为什么这么说,下面就以JAVA为例进行说明:假设数据库中存在这样的表:[java] view plain copytable user( id varchar(20) PRIMARY KEY , name varchar(20) ...

2018-04-27 00:12:47 3274 3

转载 Collections.sort()和Arrays.sort()排序算法选择

今天面试的时候,被问到Collections.sort();和Arrays.sort();两个方法的排序算法实现,我只记得一个是快速排序一个是归并排序,但是刚刚看到没那么简单。Arrays.sort()先来看看Arrays.sort();,一点进这个方法会看到是这样子的public static void sort(int[] a) { DualPivotQuicksort.s

2018-04-22 11:23:47 1079

转载 数据库事务隔离级别-- 脏读、幻读、不可重复读(清晰解释)

一、数据库事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。√: 可能出现    ×: 不会出现脏读不可重复读幻读

2018-04-06 20:12:21 645

转载 jvm及垃圾回收深入详解 参禅

java虚拟机主要分为 堆、方法区(非堆)、栈和虚拟机栈、程序计数器等。hot虚拟机采用持久层实现方法区。Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Surviv

2018-04-06 20:11:51 144

转载 AAA过滤器、监听器、拦截器的区别

过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符拦截器,是在面向切面编程的就是

2018-02-10 11:02:35 150

转载 终结篇:MyBatis原理深入解析(一)

MyBatis框架整体设计MyBatis框架整体设计5.1 接口层-和数据库交互的方式MyBatis和数据库的交互有两种方式:使用传统的MyBatis提供的API;使用Mapper接口;5.1.1 使用传统的MyBatis提供的API这是传统的传递Statement Id 和查询参数给 SqlSession 对象,使用 S

2018-01-14 18:27:09 425

转载 tomcat查看GC信息

tomcat启动参数,将JVM GC信息写入tomcat_gc.logCATALINA_OPTS='-Xms512m -Xmx4096m -XX:PermSize=64M -XX:MaxNewSize=128m -XX:MaxPermSize=64m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -Xloggc:/var/log/sea

2017-12-29 11:39:22 155

转载 Java的Spi机制研究

摘要:之前研究过dubbo、spring源码。然后发现大量使用一个叫做spi的东西,发现这确实是一个很好的实现方法,特别是在设计框架中。一、SPI机制概念      SPI的全称是Service Provider Interface。简单来说,SPI机制提供了一个表达接口和其具体实现类之间的绑定关系的方案。具体是在JAR包的"META-INF/services/"目录下建立一个文件,文

2017-12-24 10:12:48 193

转载 同步,异步,阻塞,非阻塞,BIO,AIO,NIO 理解

对于同步,异步,阻塞,非阻塞的理解可以看一个例子:以银行取款为例:同    步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写)。异    步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),                  OS需要支持异步IO操作API)...

2018-11-09 23:18:45 295

转载 异步和非阻塞一样吗? (内容涉及BIO,NIO,AIO,Netty)

写在开头:本文不是纯讲技术,会涉及概念理解和语义分析的要点。正如博主标题说的,高效的学习方法比拥有多少知识重要。高效的学习方法途径之一就是阅读理解,理解能力越好,掌握越快,知识体系更清晰。如果刚入门Netty,看过Netty线程模型,又看过JDK的NIO、NIO2,是否困惑于NIO,AIO,阻塞非阻塞的理解?Netty目前4.0的版本应该是“非阻塞”的“同步IO”(按照Unix IO模型...

2018-11-09 23:13:55 261

转载 setTimeout与setInterval的坑以及优缺点

说到setTimeout与setInrerval大家可能都觉得很easy,我刚接触js的也是这样的想法,可后来在知乎看到了一道题,大概好像是这样的:例一:setTimeout(function(){console.log("小马“);setTimeout(function(){arguments.callee;},1000);},1000)例二:setInterval(...

2018-11-01 00:11:02 362

转载 netty源码分析之揭开reactor线程的面纱(三)

上两篇博文(netty源码分析之揭开reactor线程的面纱(一),netty源码分析之揭开reactor线程的面纱(二))已经描述了netty的reactor线程前两个步骤所处理的工作,在这里,我们用这张图片来回顾一下:reactor线程三部曲简单总结一下reactor线程三部曲轮询出IO事件 处理IO事件 处理任务队列今天,我们要进行的是三部曲中的最后一曲【处理任务队列】...

2018-09-11 00:03:16 213

转载 netty源码分析之揭开reactor线程的面纱(一)

netty最核心的就是reactor线程,对应项目中使用广泛的NioEventLoop,那么NioEventLoop里面到底在干些什么事?netty是如何保证事件循环的高效轮询和任务的及时执行?又是如何来优雅地fix掉jdk的nio bug?带着这些疑问,本篇文章将庖丁解牛,带你逐步了解netty reactor线程的真相[源码基于4.1.6.Final]reactor 线程的启动NioE...

2018-09-10 23:45:42 199

转载 netty常见知识点

Java读源码之Netty深入剖析解析netty各大组件细节/百万级性能调优/设计模式实际运用前言:这是一门对Java开发人员非常重要的课程,源码的学习方式是不可逃避的。Netty也是大型互联网公司面试必备的问题,如果没有分布式开发经验,在面试时提出自己阅读过Netty源码,并能清晰表达的话。这部分内容会是很重要的加分项nettynettty里面的任务分为定时任务(优先级队列)和普通任...

2018-09-10 23:44:13 2030

转载 源码之下无秘密 ── 做最好的 Netty 源码分析教程

背景在工作中, 虽然我经常使用到 Netty 库, 但是很多时候对 Netty 的一些概念还是处于知其然, 不知其所以然的状态, 因此就萌生了学习 Netty 源码的想法.刚开始看源码的时候, 自然是比较痛苦的, 主要原因有两个: 第一, 网上没有找到让我满意的详尽的 Netty 源码分析的教程; 第二, 我也是第一次系统地学习这么大代码量的源码. 由于这两个原因, 最开始时, 看代码的进度...

2018-09-10 23:41:22 187

转载 Netty高性能开发备忘录

工作中使用netty,还都是解决小打小闹的问题,还没有遇到超过10k连接情况下,数据高性能分发及连接管理问题。无意中看到这篇文章,先转载一下,以后工作中遇到相关问题可以及时查阅,也希望更多人看到,并从中获取netty优化灵感。       原文链接如下:http://www.10tiao.com/html/321/201611/2659763226/5.html 1. 连接篇1.1...

2018-09-10 23:40:21 294

转载 Netty源码—三、select

NioEventLoop功能前面channel已经准备好了,可以接收来自客户端的请求了,NioEventLoop作为一个线程池,只有一个线程,但是有一个queue存储了待执行的task,由于只有一个线程,所以run方法是死循环,除非线程池shutdown。这个run方法的主要作用:执行selector.select,监听IO事件,并处理IO事件 由于NioEventLoop兼有线程池...

2018-09-10 23:39:04 205

转载 剖析Netty4的高性能

1、Netty简介                     Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏...

2018-09-10 23:37:43 138

转载 Netty-内存管理

通过NIO传输数据时需要一个内存地址,并且在数据传输过程中这个地址不可发生变化。但是,GC为了减少内存碎片会压缩内存,也就是说对象的实际内存地址会发生变化,所以Java就引入了不受GC控制的堆外内存来进行IO操作。那么数据传输就变成了这样但是内存拷贝对性能有可能影响比较大,所以Java中可以绕开堆内存直接操作堆外内存,问题是创建堆外内存的速度比堆内存慢了10到20倍,为了解决这个问题Net...

2018-09-10 23:35:14 153

转载 Java高并发之锁优化

本文主要讲并行优化的几种方式, 其结构如下: 锁优化减少锁的持有时间例如避免给整个方法加锁1 public synchronized void syncMethod(){ 2 othercode1(); 3 mutextMethod(); 4 othercode2(); 5 }改进后1 ...

2018-09-10 23:33:54 213

转载 netty设计模式-责任链模式

责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。首先来看看责任链模式的四个要素:1、责任处理器接口2、创建链,添加删除责任处理器接口3、上下文4、责任链终止机制。在netty里面,很明显channelHandler和Pipeline构成了责任链模式。让我们通过...

2018-09-10 23:32:15 207

转载 MySQL双主(主主)架构方案

MySQL双主(主主)架构方案在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动。因此,如果是双主或者多主,就会增加mysql入口,增加高可用。不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题。...

2018-09-08 12:34:51 502

转载 POJO和JavaBean的区别

POJO(Plain Ordinary Java Object)即普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO。实际意义就是普通的JavaBeans(简单的实体类),特点就是支持业务逻辑的协助类。POJO类的作用是方便程序员使用数据库中的数据表,对于程序员来说,可以很方便的将POJO类当作对象来进行使用,也可以方便的调用其get,set方法。但不允...

2018-09-02 17:40:08 130

转载 Spring获取ApplicationContext方式,和读取配置文件获取bean的几种方式

 Spring获取ApplicationContext方式我自己常用的方法:读取一个文件1 //创建Spring容器2 ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");3 //获取chinese 实例4 Person ...

2018-07-29 20:19:39 6289

转载 敏感字过滤

一、前言开发中经常要处理用户一些文字的提交,所以涉及到了敏感词过滤的功能,参考资料中DFA有穷状态机算法的实现,创建有向图。完成了对敏感词、广告词的过滤,而且效率较好,所以分享一下。具体实现:1、匹配大小写过滤2、匹配全角半角过滤3、匹配过滤停顿词过滤。4、敏感词重复词过滤。 例如:支持如下类型类型过滤检测:fuck 全小写FuCk 大小写fuck全角半角...

2018-07-22 23:07:33 230

转载 java实现敏感词过滤

java过滤敏感词参考文章 http://blog.csdn.net/chenssy/article/details/26961957想通过博客把自己在平常工作中用到的东西和感悟记录下来,分享给更多的人。这是我写的第一篇博客,主要是关于java敏感词过滤的。最近做了个基于ssm框架的app服务端的敏感词过滤的功能。一般来说文字过滤第一种想到的是简单的把敏感词放到集合中,获取页面上传文字...

2018-07-22 23:05:06 1057

转载 Redis集群之主从集群模式(哨兵模式Sentinel)

前言Redis集群模式主要有2种:主从集群 分布式集群。前者主要是为了高可用或是读写分离,后者为了更好的存储数据,负载均衡。 本文主要讲解主从集群。与本文相关的代码与配置文件都已经上传至github上: 地址: https://github.com/SeanYanxml/bigdata主从切换原理Redis的主从原理与MySQL相似,都是设置两台机器,一主一从。也就是常...

2018-07-22 22:51:24 174

转载 数据库索引的实现原理

强烈建议参阅链接:http://www.linezing.com/blog/?p=798#nav-1说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算...

2018-05-14 23:04:06 95

转载 事务隔离级别

原子性、一致性、隔离性、持久性 (1) 原子性  事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。  事务的原子性要求,如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。就是说事务的操纵序列或者完全应用到数据库或者完全不影响数据库。这种特性称为原子性。   假如用户在一个事务内完成了对数据库...

2018-05-12 21:41:27 1007

转载 eclipse设置查看GC日志和如何理解GC日志

eclipse的gc日志配置可以在eclipse.ini中加入参数实现,不过打印的日志是整个eclipse的内存回收情况,如何实现准确的看一个java应用的gc日志呢.1. Run as -> Run configurations -> java应用名 -> arguments ->VM arguments,加入jvm参数就行2. 测试代码[java] view plain...

2018-05-12 20:44:43 3369

转载 关于RPC协议的通俗理解

根据网上搜索的一些资料摘抄汇总的,如果有误,欢迎斧正。作者:肖继潮链接:http://www.zhihu.com/question/25536695/answer/31046384来源:知乎著作权归作者所有,转载请联系作者获得授权。早期单机时代,一台电脑上运行多个进程,大家各干各的,老死不相往来。假如A进程需要一个画图的功能,B进程也需要一个画图的功能,程序员就必须为两个进程都写一个画图的功能。这...

2018-04-30 11:57:05 61404

转载 RPC协议、http协议、tcp/ip协议、udp协议、socket协议以及soap协议都有什么相同点和不同点

HTTP与RPC的区别:人们常常错误地将HTTP称作一种远程过程调用(RPC)[23]机制,仅仅是因为它包括了请求和响应。   调用远程机器上的一个过程(procedure)的观念,是RPC与其他形式的基于网络的应用通信的区别在。 RPC的协议识别出过程并且传递给它固定的一组参数,然后等待在使用相同接口返回的一个消息中提供的回答。远程方法调用(RMI)也是类似的,除了过程被标识为一个{对象,方法}...

2018-04-30 11:56:00 4502

转载 CLOB与BLOB的区别及用途

BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的。其实两个是可以互换的的,或者可以直接用LOB字段代替这两个。但是为了更好的管理ORACLE数据库,通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。CLOB 定义  数...

2018-04-27 00:51:03 460

转载 CLOB/BLOB与String互转。

1.利用dbms_lob.substr()方法可将对应字段转换成字符串如下:[html] view plain copyselect dbms_lob.substr(content) from NEWS    该方法有个缺点,当content字段长度超过某个值时,会报错。2.获取Clob对象,在Java中通过对流处理获取字段内容,该方式没有长度限制[html] view plain copysel...

2018-04-27 00:46:51 818

转载 GC日志查看分析

0. 前言GC(Garbage Collection)是Java虚拟机中一个很重要的组成部分,在很多情况下我们都需要查看它的日志,下面内容就是介绍如何查看GC日志。1. GET GC日志1.1 输出日志参数要查看GC日志,需要设置一下jvm的参数。关于输出GC日志的参数有以下几种-XX:+PrintGC 输出GC日志-XX:+PrintGCDetails 输出GC的详细日志-XX:+PrintGC...

2018-04-26 23:40:09 270

转载 Spring, MyBatis 多数据源的配置和管理

原文链接:http://www.2cto.com/kf/201505/400273.html同一个项目有时会涉及到多个数据库,也就是多数据源。多数据源又可以分为两种情况: 1)两个或多个数据库没有相关性,各自独立,其实这种可以作为两个项目来开发。比如在游戏开发中一个数据库是平台数据库,其它还有平台下的游戏对应的数据库; 2)两个或多个数据库是ma

2018-04-23 23:35:56 117

空空如也

空空如也

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

TA关注的人

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