- 博客(74)
- 资源 (34)
- 收藏
- 关注
转载 Tomcat SSL配置 Connector attribute SSLCertificateFile must be defined when using SSL with APR解决
Tomcat 6版本配置SSL过程有两步:1、用JDK自带的keytool.exe来生成私有密钥和自签发的证书,如下:keytool -genkey -keyalg RSA -alias tomcat按提示输入相关内容后,这条命令将在默认密钥库文件里新增一个别名为tomcat的私有密钥项及其自签发的证书。默认密钥库文件为:%USERPROFILE%\.keyst
2017-11-06 17:10:36
549
转载 Java 里如何实现线程间通信
转自: http://www.importnew.com/26850.html正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:thread.join(), object.wait(), object.notify(), CountdownLatch, CyclicBarrier, F
2017-10-25 11:35:58
285
转载 Java HashMap拓容死循环
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在并发下必然出现问题。但是,我发现近几年,很多人都经历过这个事(在网上查“HashMap Infinite Loo
2017-10-18 16:28:08
327
转载 一个tomcat部署多个应用,有几个JVM?
1、一个tomcat是一个进程,其中有很多线程(与有多少个app无关) 2、一个tomcat启动一个JVM,其中可以有很多APP 3、一个tomcat中部署的多个app,虽然同处一个JVM里,但是由于无法相互调用,所以也可以认为是分布式的 转自:http://blog.youkuaiyun.com/kyfxbl/article/details/11967535Quest
2017-10-17 15:50:48
6177
1
转载 阿里云消息队列 RocketMQ-常见使用方式说明-消息重试
转自阿里云官方文档MQ 消费者的消费逻辑失败时,可以通过设置返回状态达到消息重试的结果。MQ 消息重试只针对集群消费方式生效;广播方式不提供失败重试特性,即消费失败后,失败消息不再重试,继续消费新的消息。重试次数MQ 默认允许每条消息最多重试 16 次,每次重试的间隔时间如下:第几次重试每次重试间隔时间第几次重试每次重试间隔时间1
2017-09-20 19:43:32
5680
原创 ssl_error_rx_record_too_long and Apache SSL 解决办法
访问url的时候火狐报了ssl_error_rx_record_too_long and Apache SSL错误,主要原因是端口号错了,加上445端口号即可。参考链接:https://stackoverflow.com/questions/119336/ssl-error-rx-record-too-long-and-apache-ssl
2017-09-20 11:43:21
8845
转载 分布式锁三种实现方式原理及对比
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致
2017-09-18 14:09:44
538
转载 基于Redis实现分布式锁
背景在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。Redis命令介绍使用Redis实现分布式锁,有两个重要函数需要介绍
2017-09-18 10:06:45
535
转载 老杨聊架构:每个架构师都应该研究下康威定律
背景 今天的分享主要来自我之前的工作经验以及平时的学习总结和思考。我之前的背景主要是做框架、系统和平台架构,之前的工作过的公司eBay、携程、唯品会都是平台型互联网公司,所以今天主要带着平台架构视角和大家分享心得体会。架构的视角每个人都不一样,可以说一万种眼光,有业务架构、安全架构、平台架构、数据架构,各不相同,这里仅是我的一家之言,欢迎大家加入『聊聊架构』社群参与讨论。今天聊的话题主要包
2017-08-23 12:31:11
243
原创 数据库水平切分
第1章 引言随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失;负载均衡策略:可以降低单台机器的访
2017-08-23 12:24:45
303
原创 linux查找命令总结
场景1:按行号查看,并过滤出关键字附件的日志由于grep只能匹配关键字,不能显示关键字上下的内容,所以先打出关键字的行号,再根据行号打出上下文。- -根据关键字查询并打出行号cat -n test.log |grep 'keyword'-- 假设keyword信息在159行,为了查看前后10行的内容:cat -n test.log |tail -n +149|head
2017-08-18 16:47:23
213
原创 Map遍历与删除元素
package net.nie.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class HashMapTest { private static Map map=new HashMap();
2017-06-26 13:42:50
397
原创 JAVA多态经典实例
通过上面的讲述,可以说是对多态有了一定的了解。现在趁热打铁,看一个实例。该实例是有关多态的经典例子,摘自:http://blog.youkuaiyun.com/thinkGhoster/archive/2008/04/19/2307001.aspx。public class A { public String show(D obj) { return ("A and D")
2017-06-26 11:26:39
3189
转载 Java中Lock,tryLock,lockInterruptibly 区别
ReentrantLock 锁有好几种,除了常用的lock ,tryLock ,其中有个lockInterruptibly 。先把API粘贴上来lockpublic void lock()获取锁。如果该锁没有被另一个线程保持,则获取该锁并立即返回,将锁的保持计数设置为 1。如果当前线程已经保持该锁,则将保持计数加 1,并且该方法立即返回。如果该锁被另一个线程保持,则出于线程调
2017-06-26 10:07:45
307
转载 多线程之指令重排序
1、首先为何要指令重排序(instruction reordering)?编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段。也就是说,对于下面两条语句:int a = 10;int b = 20;在计算机执行上面两句话的时候,有可能第二条语句会先于第一条语句执行。所以,千万不要随意假设指令执行的顺序。2、是不是所有的语句的执行顺
2017-06-21 16:38:42
259
原创 Java并发编程实践---第二章:线程安全性
如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误。有三种方式可以修复这个问题:1.不在线程之间共享该状态变量。2.将状态变量修改为不可变的变量。3.在访问状态变量时使用同步。 线程安全性:当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。
2017-06-21 10:39:41
233
原创 死锁相关问题
两个线程或两个以上线程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是这些线程都陷入了无限的等待中。使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。
2017-06-19 16:28:21
266
原创 线程状态
1. 新建( new ):新创建了一个线程对象。2. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 。3. 运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序
2017-06-19 16:22:48
260
原创 Java传值还是传引用问题
Java中只有按值传递,没有按引用传递! 转载:今天,我在一本面试书上看到了关于java的一个参数传递的问题:写道java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对java的这一特性很是熟悉!结果发现,我错了!答案是:值传递!Java中只有按值传递,没有按引用
2017-06-19 16:10:06
332
原创 接口和抽象类的区别
从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。类可以实现很多个接口,但是只能继承一个抽象类类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。抽象类可
2017-06-19 16:00:12
262
原创 Java,bit比特,byte字节,char字符,short,int,long,float,double,string,字母,汉字/编码等
如题,做个重新认识的总结,只供参考,如果不准确的,请回复,谢谢bit: 1 bit位 = 1 二进制数据byte: 1 byte = 8 bit位 (-128 ~ 127)字母: 1 字母 = 1 byte = 8 bit(位)short: 16位char: Unicode字符,16bit位int: 32bit位,比如int 类型占用
2017-06-19 15:49:43
727
原创 方法重写与重载
方法重写的原则:重写方法的方法名称、参数列表必须与原方法的相同,返回类型可以相同也可以是原类型的子类型(从Java SE5开始支持)。 重写方法不能比原方法访问性差(即访问权限不允许缩小)。 重写方法不能比原方法抛出更多的异常。 被重写的方法不能是final类型,因为final修饰的方法是无法重写的。 被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写
2017-06-19 15:49:17
740
原创 JRE和JDK区别
JRE: Java Runtime Environment JDK:Java Development KitJRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用
2017-06-19 15:28:43
257
原创 Java 7 新的 try-with-resources 语句,自动资源释放
从 Java 7 build 105 版本开始,Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Management) ,自动资源管理。新的语句支持包括流以及任何可关闭的资源,例如,一般我们会编写如下代码来释放资源:private static void customBufferStreamC
2017-06-18 16:36:28
227
原创 UML类图中箭头和线条的含义和用法
UML类图中箭头和线条的含义和用法在学习UML过程中,你经常会遇到UML类图关系,这里就向大家介绍一下UML箭头、线条代表的意义,相信通过本文的介绍你对UML中箭头、线条的意义有更明确的认识。AD:本节向大家学习一下UML箭头、线条代表的意义,UML中关系主要有依赖,聚合,合成,泛化和实现等,下面就让我们来看一下这些关系如何用UML箭头和线条来实
2017-06-15 17:05:35
309
原创 leetCode刷题记录 Sort Colors
Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.Here, we will use the integers
2017-06-15 16:07:04
249
原创 LeetCode刷题记录 First Missing Positive
Given an unsorted integer array, find the first missing positive integer.For example,Given [1,2,0] return 3,and [3,4,-1,1] return 2.Your algorithm should run in O(n) time and uses constant
2017-06-15 14:23:03
165
原创 Spring IOC 学习
Spring IOC目的: Spring相当于一个容器,它通过配置文件或注解描述类何磊之间的依赖关系,自动完成类的初始化和依赖注入工作。 让开发者从这些底层实现类的实例化、依赖关系装配等工作中脱离出来。
2017-06-13 20:35:32
143
原创 LeetCode刷题记录 Single Element in A Sorted Array
Given a sorted array consisting of only integers where every element appears twice except for one element which appears once. Find this single element that appears only once.Example 1:Input: [
2017-06-13 14:11:31
217
原创 leetCode 刷题记录 Candy
QuestionThere are N children standing in a line. Each child is assigned a rating value.You are giving candies to these children subjected to the following requirements:Each child must have a
2017-06-09 13:26:37
371
原创 leetCode 刷题记录 Remove Nth Node From End of List
QuestionGiven a linked list, remove the nth node from the end of list and return its head.For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from th
2017-06-07 22:32:56
253
转载 Redis List数据类型
一、概述: 在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。 从元素插入和
2017-06-07 16:00:09
313
原创 leetcode刷题记录:Longest Common Prefix
QuestionWrite a function to find the longest common prefix string amongst an array of strings.SolutionApproach #1 (Horizontal scanning)IntuitionFor a start we will describe
2017-06-06 17:23:55
372
原创 eclipse运行报java.lang.OutOfMemoryError: PermGen space解决方法
点击“Run” – “Run Configurations…”,选中Tomcat Server,进入Arguments分页,在VM arguments中加入提升初始分配空间的参数 第一步: 第二步:加入参数 -Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=256M 1、PermGen space简介Pe
2017-06-06 14:45:50
252
原创 leetcode刷题记录--Two Sum
QuestionGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not u
2017-06-05 15:57:24
233
原创 程序员职业素养 读书笔记
程序员职业素养 读书笔记1 专业主义专业主义不但象征着荣耀与骄傲,而且明确意味着责任与义务。这两者密切相关,因为你无法负责的事情上不可能获得荣耀与骄傲。如何承担责任?1.3 首先,不行损害之事 不要破坏软件功能。 每人能写出完美的软件,但这并不表示你不用对不完美负责。失误率永远不可能等于零,但你有责任让它无限接近零。 每次QA找出问题时,更糟糕的是用户找出问题时,你都应该震惊羞愧,并决心以此
2017-05-25 01:09:36
369
转载 由Maven管理jar文件找不到而引出的问题java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRunt
使用maven管理web项目中jar包之间的依赖,非常的方便好用,但是有时也会出现问题项目里用net.sf.json使用maven配置了以下jar包[html] view plain copy span style="font-family:Microsoft YaHei;font-size:12px;"> jakarta co
2017-04-28 16:49:10
1583
转载 深入理解Java内存模型(二)——重排序
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写后写a = 1;a = 2;写一个变量之后,再写这个变量。读后写a = b;b = 1;读一个变量之后
2017-04-25 17:44:09
288
原创 为什么在sql查询中需要使用xxx is null而不能使用xxx=null 详解
应该大家都很清楚,我们在sql中要查询某列值为null的所有结果集时,查询条件应该这样写select * from 表 where 字段 is null而使用select * from 表 where 字段 = null是查不到正确的结果的。那这是为什么呢?要清楚为什么,就需要了解sql中的三值逻辑了。在SQL中逻辑表达式的可能值包括TRUE、FALSE和UNKNOWN,它们被称之为三
2017-03-07 16:56:26
1722
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人