- 博客(29)
- 资源 (2)
- 收藏
- 关注
原创 微服务的介绍
单体应用VS微服务优势: 开发-东西都放在一起,找起来方便,结构复杂,点状,环状,星状 稳定-远程调用,网络,序列化 性能- 部署-一个应用部署几个不足: 中心化- 耦合-做重复的开发 学习成本 伸缩-瓶颈,有一块性能很差,整个服务都很差 持续交付微服务的介绍面向服务架构(SOA)类同 面向服务 松耦合 模块化 分布式计...
2018-04-20 16:58:43
241
原创 限流模式-Guava的RateLimiter
目前有几种常见的限流方式:1、通过限制单位时间段内调用量来限流2、通过限制系统的并发调用程度来限流3、使用漏桶(Leaky Bucket)算法来进行限流4、使用令牌桶(Token Bucket)算法来进行限流具体我们看下第三种和第四中算法,也是我们目前看到的最常见的限流算法漏桶(Leaky Bucket)算法思路很简单,水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有
2017-11-27 14:32:00
531
原创 java面试
1、finalize()方法 java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。 (1).对象不一定会被回收。 (2).垃圾回收不是析构函数。 (3).垃圾回收只与内存有关。 (4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到
2017-11-20 11:24:59
506
2
转载 java ms
ThreadLocal(线程变量副本) Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量。 采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。 ThreadLocal类中维护一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值为对应线程
2017-10-23 11:47:46
568
转载 WebMagic写的网络爬虫
WebMagic写的网络爬虫一、前言 最近因为有爬一些招聘网站的招聘信息的需要,而我之前也只是知道有“网络爬虫”这个神奇的名词,具体是什么、用什么实现、什么原理、如何实现比较好都不清楚,因此最近大致研究了一下,当然,研究的并不是很深入,毕竟一个高大上的知识即使站在巨人的肩膀上,也不能两三天就融会贯通。在这里先做一个技术储备吧,具体的疑难知识点、细节等以后一点一点的完善
2017-10-22 11:43:56
527
转载 Synchronized及其实现原理
一、Synchronized的基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共有三种用法: (1)修饰普通方法 (2)修饰静态方法
2017-10-20 16:05:17
256
转载 JDK里的设计模式
Structural(结构模式)Adapter:把一个接口或是类变成另外一种。java.util.Arrays#asList()javax.swing.JTable(TableModel)java.io.InputStreamReader(InputStream)java.io.OutputStreamWriter(OutputStream)javax.xml.bind.ann
2017-10-17 17:30:49
223
原创 elasticsearch -2.3.x head插件安装(windows系统)
1.进入命令行: home键+R命令:> cd \elasticsearch根目录\bin\> plugin install mobz/elasticsearch-head2.运行es3.打开http://localhost:9200/_plugin/head/
2017-09-27 11:40:26
332
原创 Shiro基本知识
ubject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者;SecurityManager:安
2017-09-25 19:37:46
278
转载 JAVA,最起码,你应该知道这些!
马老师说过,员工的离职原因很多,只有两点最真实: 钱,没给到位 心,受委屈了 当然,我是想换个平台,换个方向,想清楚为什么要跳槽,如果真的要跳槽,想要拿到一个理想的offer,除了运气,基本功也要足够的扎实,希望下面的面试经验能给你们能够提供一些帮助。 项目经验 面试官在一开始会让你进行自我介绍,主要是想让你介绍一下自己做过的一些项目,看看你对这些项目的了解程度,因为很多人简历
2017-09-25 17:47:04
435
原创 Spring中bean的加载过程
1.获取配置文件资源2.对获取的xml资源进行一定的处理检验3.处理包装资源4.解析处理包装过后的资源5.加载提取bean并注册(添加到beanDefinitionMap中)
2017-09-20 16:28:53
1728
转载 水平分库分表的关键步骤和技术难点
在之前的文章中,我介绍了分库分表的几种表现形式和玩法,也重点介绍了垂直分库所带来的问题和解决方法。本篇中,我们将继续聊聊水平分库分表的一些技巧。分片技术的由来关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。在互联网行业海量数据和高并发访问的考验下,聪明的技术人员提出了分库分表技
2017-09-18 15:24:06
587
原创 javaWeb常用框架技术总结
Struts2:为什么每次请求都要创建一个Action对象?strust2的action里面很多情况下都是需要定义成员变量用来接收表单上的值,如果只是一个对象的话,那么很可能会出现多个线程共用一个成员变量 出现线程安全问题,因此struts2每次请求都要创建一个Action对象.ModelDriven拦截器的配置中refreshModelBeforeResult解决了什么问
2017-08-28 16:01:38
711
转载 Spring AOP 和 AspectJ 之间的差别
面向方面的编程(AOP) 是一种编程范式,旨在通过允许横切关注点的分离,提高模块化。AOP提供方面来将跨越对象关注点模块化。虽然现在可以获得许多AOP框架,但在这里我们要区分的只有两个流行的框架:Spring AOP和AspectJ。这里将会帮助你基于一些关键信息,为你的项目选择正确的技术。Spring AOP致力于提供一种能够与Spring IoC紧密集成的面向方面框架的实现,以便于解决在开
2017-08-21 16:24:57
757
原创 mysql索引使用
一条慢查询日志 mysql的索引是一把双刃剑,如果使用得当,会给系统带来极大的性能提升;相反的如果使用不当,则可能会带来灾难性的后果。最可怕的是前期很难发现,随着数据量的增加以及业务高峰期的临近,问题才会突然暴露出来。 本周我所负责的一个系统就出来了类似的问题,庆幸的是处理及时,没有造成灾难性的后果。今天抽时间把事情的经过记录下来,在未来的时间里鞭策自己:对新成员必
2017-06-05 11:14:13
451
转载 Map最优的遍历
我们都知道遍历Map一般有3种方法,values(),keySet()和entrySet(),常见的是keySet用的多,简单容易理解,entrySet()是返回Map中的静态内部类Entry类类型的Set实例,当然了你别说forEach,forEach只是一种代替for(int i=0;;)和while()遍历的一种方式,底层也是用迭代器实现的,只不过把部分东西隐藏了,建议大家平常开发中能用fo
2017-05-31 11:25:48
813
原创 35个Java代码性能优化总结
代码优化的目标是:1、减小代码的体积2、提高代码运行的效率代码优化细节1、尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果
2017-05-26 16:41:23
280
原创 Java到底是不是一种纯面向对象语言
Java——是否确实的 “纯面向对象”?让我们深入到Java的世界,试图来证实它。在我刚开始学习 Java 的前面几年,我从书本里知道了 Java 是遵循 “面向对象编程范式(Object Oriented Programming paradigm)”的。在Java世界内一切都是对象,甚至包括字符串(String)这些都是对象(在 C 语言中,字符串是字符数组),那时候,我认为 Java是
2017-05-26 14:30:26
11927
2
原创 String 类
String str = “我是一个字符串”;String str2 = new String(“我也是一个字符串”)对于上面两种创建字符串的方式我来具体的分析一下:1、 对于String来说,有一个特殊的String pool,专门存储字符串数据。2、 String str = “我是一个字符串”的创建过程:首先、java会去到String pool 寻找有没有一个值为“我是一个
2017-05-26 10:38:17
307
原创 java多线程知
wait()与sleep()的区别wait():释放占有的对象锁,线程进入等待池,释放cpu,而其他正在等待的线程即可抢占此锁,获得锁的线程即可运行程序。而sleep()不同的是,线程调用此方法后,会休眠一段时间,休眠期间,会暂时释放cpu,但并不释放对象锁。也就是说,在休眠期间,其他线程依然无法进入此代码内部。休眠结束,线程重新获得cpu,执行代码。wait()和sleep()最大的不同
2017-05-24 16:40:34
188
原创 SpringAOP
spring跟动态代理没关系,动态代理技术(AOP)是种思想,运用在某些特定的场景(具有横切逻辑)可以很好的解决问题,常见的实现有jdk动态代理和cglib,而spring中事务管理正是用到了这项技术。spring的强大在于他的低耦合、高内聚, 他不关心具体的持久层方案,不管是Hibernate、Mybatis或者它自带的SpringJDBC,都能很好的与其事务管理相结合,保证持久层操作的事务特性
2017-05-18 10:58:11
200
转载 Mysql索引介绍
索引是在创建表的时候会自动生成一个主键(以主键生成的)索引,所以我们可以直接搜索索引我们也可以创建 普通索引 create index t_job_index on e_user(t_job);创建索引名 被创建的表(创建的列名) //格式所以索引可以多个. 删除普通索引drop index t_job_index on e_user;删除指定名称的索引
2017-05-17 14:23:32
242
原创 dubbo使用的协议
1、缺省协议,使用基于mina1.1.7+hessian3.2.1的tbremoting交互。连接个数:单连接连接方式:长连接传输协议:TCP传输方式:NIO异步传输序列化:Hessian二进制序列化适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。适用场景:常规远程服务方法调用2、
2017-05-17 11:56:10
1545
原创 集合框架和map
5.1结构 Collection |List |ArrayList:一般使用,数组实现,查询快,增删慢,线程不安全 |Vector:较为少用,线程安全,但效率较低 |LinkedList:双向链表实现,查询慢,增删快,线程不安全 |Set |HashS
2017-05-16 18:02:50
207
原创 nio的实现原理
一.java NIO 和阻塞I/O的区别 假如现在你对阻塞I/O已有了一定了解,我们知道阻塞I/O在调用InputStream.read()方法时是阻塞的,它会一直等到数据到来时(或超时)才会返回;同样,在调用ServerSocket.accept()方法时,也会一直阻塞到有客户端连接才会返回,每个客户端连接过来后,服务端都会启动一个线程去处理该客户端的请求。阻塞I/O的通信模型示意图如下:
2017-05-16 09:41:37
1055
转载 ElasticJob详解
consoleconsole没有和elastic-job-lite发生直接的联系,而是借助ZK和 Elastic-job-lite联系了在一起 但是大家注意到Elastic-Job-Lite和zk怎么联系在一起的么?是的Listener 就是它。当Console增加或修改了zk上的节点时(这里指的是jobName节点下的节点和数据变动,感谢严欢欢同学指出),就会触发Listener,进
2017-05-12 10:39:42
1511
原创 Linux下Zookeeper安装、使用
进入到conf目录拷贝zoo_samle.cfg为zoo.cfg编辑zoo.cfg文件设置环境变量 vim /etc/profile 在export PATH语句前添加两行: ZOOKEEPER=/usr/local/zookeeper/zookeeper-3.4.6 PATH=$PATH:$ZOOKEEPER
2017-05-10 10:49:15
310
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人