- 博客(83)
- 资源 (3)
- 收藏
- 关注
转载 7种垃圾收集器 主要特点 应用场景 设置参数 基本运行原理
Java虚拟机垃圾回收(三) 7种垃圾收集器 主要特点 应用场景 设置参数 基本运行原理 在《Java虚拟机垃圾回收(一) 基础》中了解到如何判断对象是存活还是已经死亡?在《Java虚拟机垃圾回收(二) 垃圾回收算法》了解到Java虚拟机垃圾回收的几种常见算法。 下面先来了解HotSpot虚拟机中的7种垃圾收集器:Serial、ParNew、Parallel Scaveng...
2018-03-01 19:28:44
1204
转载 【Java并发编程】并发编程大合集
为了方便各位网友学习以及方便自己复习之用,将Java并发编程系列内容系列内容按照由浅入深的学习顺序总结如下,点击相应的标题即可跳转到对应的文章 【Java并发编程】实现多线程的两种方法 【Java并发编程】线程的中断 【Java并发编程】正确挂起、恢复、终止线程 【Java并发编程】守护线程和线程阻塞 【Java并发编程】Volatile关键字(上) 【Java并...
2018-03-01 12:34:00
263
原创 springboot 整合dubbo\zookeeper
话不多说,先来代码:https://github.com/wushidong125/springboot-dubbo 欢迎fork一起学习。一、为啥整合 Dubbo 实现 SOADubbo 不单单只是高性能的 RPC 调用框架,更是 SOA 服务治理的一种方案。核心:1. 远程通信,向本地调用一样调用远程方法。2. 集群容错3. 服务自动发现和注册,可平滑添加或者删除服务提供者。我们常常使用 ...
2018-02-09 11:17:10
2171
原创 Linux下安装Zookeeper
Zookeeper是一个协调服务,可以用它来作为配置维护、名字服务、分布式部署;下面,我来分享一下在Linux下安装Zookeeper的整个步骤,让大家少走弯路。一、Zookeeper下载官网下载:http://www.apache.org/dyn/closer.cgi/zookeeper/二、解压解压完之后,将文件复制到linux服务器上面的指定路径:/usr/local三、进入到conf目录四...
2018-02-08 17:55:34
1648
原创 ZooKeeper客户端 zkCli.sh 节点的增删改查
在 bin 目录下的 zkCli.sh 就是ZooKeeper客户端./zkCli.sh -timeout 5000 -server 127.0.0.1:2181 客户端与ZooKeeper建立链接timeout:超时时间,单位毫秒r:只读模式,当节点坏掉的时候,还可以提供读服务示例:./zkCli.sh -timeout 5000 -server 127.0.0.1:2181 1 zh...
2018-02-08 17:52:48
745
原创 yum 安装redis单实例教程
1、yum install redis --安装redis 2、yum install epel-release --下载fedora的epel仓库 3、yum install epel-release --下载fedora的epel仓库 4、ps -ef | grep redis -- 查看redis是否开启 5、se
2018-02-06 15:43:25
239
转载 solr集群搭建和 java调用 solr集群
solrClund 是solr提供的分布式搜索方案 solrClund 是基于solr和zookeeper的分布式搜索方案, 主要思想是使用zookeeper作为集群的配置中心 特色功能: 1.集中式的配置信息 2.自动容错 3.近实时搜索 4.查询时自动负载均衡 zookeeper:动物园管理员,用于管hadoop(大象)、Hive(蜜蜂)的管理员 Sol
2018-02-05 17:11:21
520
转载 Solr学习总结(四)Solr查询参数
今天还是不会涉及到java和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的java和数据库操作,都是水到渠成的事。这里先列出solr查询所需要的参数 wiki 地址:http://wiki.apache.org/solr/FrontPage, 里面有各个参数详细的介绍。 一
2018-02-05 17:01:46
352
转载 Solr学习总结(三)Solr web 管理后台
前面讲到了Solr的安装,按道理,这次应该讲讲.java与数据库的内容,java如何操作Solr索引等。不过我还是想先讲一些基础的内容,比如solr查询参数如何使用,各个参数都代表什么意思? 还有solr 自带的web 管理系统如何使用等。只有先明白了solr的基本内容,后续学习solr 的java和数据库操作,才不会费劲。本人刚开始也是配置完solr 之后,直接找solr客户端,写相应的测试代码
2018-02-05 17:00:10
530
转载 Solr学习总结(二)Solr的安装与配置
接着前一篇,这里总结下Solr的安装与配置 1.准备 1.安装Java8 和 Tomcat9 ,java和tomcat 的安装这里不再重复。需要注意的是这两个的版本兼容问题。貌似java8 不支持,tomcat7 以下版本。 2.下载 solr安装包,目前的最新版本是 5.3.1 下载地址:http://www.apache.org/dyn/cl
2018-02-05 16:59:08
194
转载 Solr学习总结(一)Solr介绍
公司里用的都是solr但是自己只学了点lucene,对solr还是不够了解,所以决定系统的学习下。 Solr是一个基于Lucene的全文搜索引擎,同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,实现了可配置、可扩展并对查询性能进行了优化,更灵活的配置,更高的查询效率。支持 XML/HTTP协议 ;支持 JSON API 接口;支持缓存、复制;同时具有完善的Web管理界面,是
2018-02-05 16:57:46
234
原创 海量数据进行分库分表及其实践
项目github地址:https://github.com/wushidong125/sharding-db 背景情况 用户表达到了 几千万级别,在做很多操作都比较吃力,.所以,考虑对其进行分表、分库 常用的切分方案 可以分为两种切分模式。一种是按照功能将表划分成不同的表来切分到不同的数据库之上,这种切可以称之为数据的垂直切分;另外一种则是根据将一个表中的数据按
2018-01-27 22:49:51
7616
转载 深入理解分布式事务,高并发下分布式事务的解决方案
1、什么是分布式事务 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。 2、分布式事务的产
2018-01-26 19:41:51
481
转载 在IDEA中实战Git
作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 场景三:小袁修改了部分源码,提交到远程仓库 场景四:小张从远程仓库获取小袁的提交 场景五:小袁接受了一个新功能的任务,创建了一个分支并在分支上开发 场景六:小袁把分支提交
2018-01-23 12:30:48
209
转载 高并发请求和抢购的解决方案
电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web
2018-01-17 20:00:50
5591
原创 高并发的常见应对方案
高并发就是在同一时刻,有很多请求同时访问。在在高发场景下,一般比较关系的几个指标:QPS:每秒钟查询量,广义的,通常指指每秒请求数响应时间:从请求发出到收到响应花费的时间,例如:系统处理一个HTTP请求需要100ms,这个100ms就是系统的响应时间带宽:计算带宽大小需关注两个指标,峰值流量和页面的平均大小 PV:综合浏览量(Page View),即页面浏览量或者点击量,通常关注在24小时内访问的
2018-01-17 19:45:15
345
原创 SpringBoot 上传图片及搭建图片服务器
我们平时在上传图片、文件的时候都会用到form表单进行上传,但是上传之后会跳转页面。这里我用第二种方式上传:采用Ajax 异步请求的方式。 1、后端接口设计 /** * 上传文件 * @param file * @return * @throws Exception */ @RequestMapping(value = "/upload",method = RequestMeth
2018-01-16 19:13:40
10711
1
原创 SSO 与 CAS 知识
不管是什么公司,只要产品数量大于一个,那么单点登录势必是绕不过去的一个问题。 前置知识 了解 SSO,最好具备以下知识。当然,如果不是特别熟,也不影响阅读。 cookie及session 浏览器同源策略及跨域 了解登录系统的构成 什么是 SSO 与 CAS? SSO SSO 是英文 Single Sign On 的缩写,翻译过来就是单点...
2017-12-07 13:09:36
2055
原创 java 常见面试题
1、HashMap的工作原理2、ConcurrentHashMap实现原理ConcurrentHashMap的同步是采用分段锁的形式,一个ConcurrentHashMap由多个segment组成,每一个segment都包含了一个HashEntry数组的hashtable, 每一个segment包含了对自己的hashtable的操作,比如get,put,replace等操作,这些操作发生的时候,对...
2017-11-19 19:31:52
589
原创 Java并发编程的艺术-第四章之Java并发基础
为什么要使用多线程 Java天生就是多线程程序,看一简单的一个main() 方法的执行,其实是由mainx线程个其它的线程共同执行的。当然使用多线程有如下的好处: 1、利用更多的处理器核心 2、更快的响应速度,如将数据一致性不强的操作交给其它的线程去操作 3、更好的编程模型 线程简介 一、线程优先级 在线程执行过程中,线程优先级决定了需要分配处
2017-10-13 19:24:37
310
转载 IDEA 中 如何通过数据库表生成带注解的实体类
Springboot搭建后台项目中,对DB的操作一般会用到JPA,怎么将数据库中的表生成对应的实体类呢?下面的教程记录了详细的操作步骤:转载记录下来, http://blog.csdn.net/liu_yulong/article/details/72910588
2017-10-12 19:34:12
7078
原创 Java并发编程的艺术-第三章之Java内存模型
并发编程模型的关键问题 在并发编程中,需要处理2个关键的问题:线程间如何通信和线程之间如何同步。 线程之间的同通信机制有2种:共享内存和消息传递。 同步:程序中用于控制不同线程间操作发生相对顺序的机制。 Java并发采用的是共享内存的模型,同步是显示进行的,就是程序必须显示指定(用synchronized、volatile、final)某个方法或某段代码需要在线程之间是互
2017-10-09 23:11:06
338
原创 Java并发编程的艺术-第二章之并发机制的底层实现原理
Java中的并发机制依赖于JVM的实现和CPU指令,接下来我们深入底层探索Java并发机制的实现原理。 1、volatile Java中允许线程访问共享变量,为了保证共享变量能够一致的被更新,线程应该确保通过排他锁单独的获取这个变量。Java中就提供了volatile,如果一个字段被声明成volatile,在java线程内存模型确保所有的线程看到的这个变量的值都是一致的。 vol
2017-10-06 15:49:29
378
原创 Java并发编程的艺术-第一章之并发编程的挑战
Java 的另外一个经典书籍之一《Java 并发编程的艺术》大家肯定也是看过的,今天开始我按照我的理解通俗的讲解这本书。 首先并发编程的目的就是让程序跑的更快,但是并不是开启更多的线程就能让程序就能最大限度的并发执行,在实际的并发编程中,还会面临这很多的挑战,例如:上下文切换、死锁问题、硬件、软件的资源受限所带来的问题。 1、1 上下文切换 CPU通过给每个线程分配CPU时间片来执行多个线程
2017-10-05 10:54:03
337
原创 Spring Boot配置多个DataSource
使用Spring Boot时,默认情况下,配置DataSource非常容易。Spring Boot会自动为我们配置好一个DataSource。 如果在application.yml中指定了spring.datasource的相关配置,Spring Boot就会使用该配置创建一个DataSource。如果在application.yml中没有指定任何spring.datasource的相关
2017-09-27 15:11:25
1707
原创 spring boot 中application.properties 介绍及配置
application.properties大家都不陌生,我们在开发的时候,经常使用它来配置一些可以手动修改而且不用编译的变量,这样的作用在于,打成war包或者jar用于生产环境时,我们可以手动修改环境变量而不用再重新编译。 spring boo默认已经配置了很多环境变量,例如,tomcat的默认端口是8080,项目的contextpath是“/”等等,可以在这里看spring boot默认
2017-09-27 14:35:48
1031
原创 字符串加密解密工具
在写代码中,经常会用到字符串的加密、解密,尤其是用户密码,不能直接出现在代码或者配置中,最好用加密方法进行加密,下面提供一个加密解密工具。 package com.zheng.common.util; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.*; import javax
2017-09-27 13:10:22
3376
转载 《Effective Java》(26~28)阅读笔记
接着上期继续看本书高质量编码建议26~28条的阅读笔记 26.优先考虑泛型 引用书中的话“一般来说,将集合声明参数化,以及使用JDK所提供的泛型和泛型方法,这些都不太困难。编写自己的泛型会比较困难一些,但是值得花些时间去学习如何编写”。 当在编写不可避免要使用数组时,可参考以上两种数组和泛型的实现方式。 27.优先考虑泛型方法 泛型方法即在定义方法的返回值前加上,例如C
2017-09-27 12:49:03
282
转载 《Effective Java》(23~25)阅读笔记
接着上期继续看本书高质量编码建议23~25条的阅读笔记 23.请不要在新代码中使用原生态类型 从这条开始涉及泛型相关的点。 从JDK5开始Java新增了“泛型”新特性,例如:List,在这之前则只有List不会限定类型。 如今的JDK版本中还是可以写原生类型,但这会带来隐藏的不安全问题。如果在声明一个列表变量时不使用泛型而使用原生类型,如下:
2017-09-26 21:22:36
221
转载 《Effective Java》(17~22)阅读笔记
接着上期继续看本书高质量编码建议12~16条的阅读笔记 17.要么为继承而设计,并提供文档说明,要么禁止使用继承不要过度设计。 面向对象编程,从一开始被洗脑难免在上手写代码时都会首先思考有没有公共方法啊,能不能把两个类抽象成一个父类再继承啊等,慎重使用继承,当要使用继承时一定要在文档注释中写明重写这个方法会给其他方法带来什么影响。书中给出建议如果类并不是为了继承而生,那么这个类
2017-09-26 20:35:20
194
转载 《Effective Java》(12~16)阅读笔记
接着上期继续看本书高质量编码建议12~16条的阅读笔记 12.考虑实现comparable接口 关于Comparable接口其中只有一个方法——compareTo。此方法和equals有类似之处,不过它所表达的含义相比equals要更多。equals通常是比较两个值是否相等,相等返回true,不相等返回false。compareTo则约定为第1对象若“大于”第2个对象则返回整数,“
2017-09-24 18:53:35
221
转载 《Effective Java》(9~11)阅读笔记
接着上期继续看本书高质量编码建议9、10、11条的阅读笔记 9.覆盖equals时总要覆盖hashcode方法 如果这个类仅仅是重写了equals方法而没有重写hashCode,那么这个类和基于散列的集合类一起工作时就会出现问题。 首先明确一个概念,两个对象使用equals返回true,则它们的hashCode也一定相等;如果两个对象的hashCode相等,则它们的equ
2017-09-23 23:14:31
302
转载 《Effective Java》(7~8)阅读笔记
接着上期继续看本书高质量编码建议7、8条的阅读笔记 7.避免使用最终方法 此处所谓的终结方法指的就是finalize()方法,这个方法可能对于从C++转向Java的新手感到混淆,因为在C++中有一个“析构函数”,析构函数所代表的意义就是在这个对象垃圾回收前所做的一些动作例如资源的关闭等。对于Java来说垃圾回收是自动的,或者称之为不可预知或不可控,尽管finalize方法所代表的也是在
2017-09-21 13:20:24
230
转载 十大Intellij IDEA快捷键
Intellij IDEA中有很多快捷键让人爱不释手,stackoverflow上也有一些有趣的讨论。每个人都有自己的最爱,想排出个理想的榜单还真是困难。以前也整理过Intellij的快捷键,这次就按照我日常开发时的使用频率,简单分类列一下我最喜欢的十大快捷-神-键吧。 1 智能提示 Intellij首当其冲的当然就是Intelligence智能!基本的代码提示用Ctrl+Space,
2017-09-21 11:51:26
526
转载 《Effective Java》(5~6)阅读笔记
接着上期继续看本书高质量编码建议5、6条的阅读笔记 第5条:避免创建不必要的对象 此条目下书中提到“当你应该重用现有对象的时候,请不要创建新的对象”。 最为突出的例子莫过于字符串常量的创建,众所周知String字符串有两种创建方式。 String str=“hello"; String str = new String("hello");
2017-09-19 12:29:22
315
转载 《Effective Java》(3~4)阅读笔记
接着上期继续看本书高质量编码建议3、4条的阅读笔记 3.用私有构造器或者枚举类型强化singleton的属性 书中的此条目下,我总结出来认为最有价值的是“能被序列化的线程安全的类,被序列化后是否还会是单例”。单例模式几乎人人会写,例如上面提到的勤加载(饿汉式)的单例模式: public class Instance{ private static
2017-09-18 19:06:27
336
转载 《Effective Java》(1~2)阅读笔记
Java经典书籍《Effective Java(第二版)》相信大家都看过,此书共有78条关于编写高质量Java代码的建议,这里是通俗易懂地讲解,会持续全部更新完78条,希望大家每天读一篇,一起学完这78条,相信可以写出高质量代码。 1.考虑静态工厂方法代替构造器 通常情况下我们会利用类的构造器对其进行实例化,这似乎毫无疑问。但“静态工厂方法”也需要引起我们的高度注意。 什么是“静
2017-09-18 12:54:10
480
原创 Bootstrap Modal-静态框使用及遇到的问题
Bootstrap Modals 是使用的定制的JQuery 插件创建的,下面是使用方法: 1.1:导入对应的js。css,需要导入bootstrap.js或者bootstrap.min.js文件,bootstrap的前提是jQuery,所以我们要导入jquery.min.js 对应导入代码: 1.2:具体用法有2种1、通过 data 属性:在控制器元素(比如按
2017-09-07 13:00:44
4404
原创 JPA 使用
前言 在还没有接触到Spring之前,我写数据库操作都是徒手写JDBC,各种连接的建立,结果集的处理、连接的释放、异常的处理。虽然自己有了固定的模板,但是还是很繁琐。随后用了spring中JdbcTemplate,spring自动帮我处理了jdbc连接的建立和释放,已经所有可能的异常捕获,我只需要关注的是结果集的处理,这个极大的提高的我开发效率,而且jdbcTemplate 所有的sql都
2017-09-03 21:23:02
312
原创 nginx 安装、基本命令-和负载均衡
linux 下安装nginx 这里用yum命令, yum install nginx 一行代码搞定 安装好后直接启动 service nginx start 如果出现: nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol) 问题
2017-09-01 14:25:59
1333
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅