java
文章平均质量分 92
H-lecter
你还得练,孩子,还得练!
展开
-
Java_观察者模式(Observable和Observer)
一、观察者模式介绍在Java中通过Observable类和Observer接口实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作。如果画面A是显示数据库里面的数据,而画面B修改了数据库里面的数据,那么这时候画面A就要重新Load。这时候就可以用到观察转载 2014-07-24 14:32:04 · 527 阅读 · 0 评论 -
深入理解Java内存模型(二)——重排序
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写后写a = 1;a = 2;写一个变量之后,再写这个变量。读后写a = b;b = 1;读一个变量之后转载 2017-04-25 17:44:09 · 268 阅读 · 0 评论 -
方法重写与重载
方法重写的原则:重写方法的方法名称、参数列表必须与原方法的相同,返回类型可以相同也可以是原类型的子类型(从Java SE5开始支持)。 重写方法不能比原方法访问性差(即访问权限不允许缩小)。 重写方法不能比原方法抛出更多的异常。 被重写的方法不能是final类型,因为final修饰的方法是无法重写的。 被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写原创 2017-06-19 15:49:17 · 706 阅读 · 0 评论 -
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 · 615 阅读 · 0 评论 -
接口和抽象类的区别
从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。类可以实现很多个接口,但是只能继承一个抽象类类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。抽象类可原创 2017-06-19 16:00:12 · 242 阅读 · 0 评论 -
Java传值还是传引用问题
Java中只有按值传递,没有按引用传递! 转载:今天,我在一本面试书上看到了关于java的一个参数传递的问题:写道java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对java的这一特性很是熟悉!结果发现,我错了!答案是:值传递!Java中只有按值传递,没有按引用原创 2017-06-19 16:10:06 · 304 阅读 · 0 评论 -
线程状态
1. 新建( new ):新创建了一个线程对象。2. 可运行( runnable ):线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 。3. 运行( running ):可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序原创 2017-06-19 16:22:48 · 243 阅读 · 0 评论 -
死锁相关问题
两个线程或两个以上线程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是这些线程都陷入了无限的等待中。使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。原创 2017-06-19 16:28:21 · 247 阅读 · 0 评论 -
Java并发编程实践---第二章:线程安全性
如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误。有三种方式可以修复这个问题:1.不在线程之间共享该状态变量。2.将状态变量修改为不可变的变量。3.在访问状态变量时使用同步。 线程安全性:当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。原创 2017-06-21 10:39:41 · 211 阅读 · 0 评论 -
多线程之指令重排序
1、首先为何要指令重排序(instruction reordering)?编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段。也就是说,对于下面两条语句:int a = 10;int b = 20;在计算机执行上面两句话的时候,有可能第二条语句会先于第一条语句执行。所以,千万不要随意假设指令执行的顺序。2、是不是所有的语句的执行顺转载 2017-06-21 16:38:42 · 237 阅读 · 0 评论 -
基于Redis实现分布式锁
背景在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。Redis命令介绍使用Redis实现分布式锁,有两个重要函数需要介绍转载 2017-09-18 10:06:45 · 511 阅读 · 0 评论 -
分布式锁三种实现方式原理及对比
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互联网领域的绝大多数的场景中,都需要牺牲强一致转载 2017-09-18 14:09:44 · 520 阅读 · 0 评论 -
阿里云消息队列 RocketMQ-常见使用方式说明-消息重试
转自阿里云官方文档MQ 消费者的消费逻辑失败时,可以通过设置返回状态达到消息重试的结果。MQ 消息重试只针对集群消费方式生效;广播方式不提供失败重试特性,即消费失败后,失败消息不再重试,继续消费新的消息。重试次数MQ 默认允许每条消息最多重试 16 次,每次重试的间隔时间如下:第几次重试每次重试间隔时间第几次重试每次重试间隔时间1转载 2017-09-20 19:43:32 · 5544 阅读 · 0 评论 -
Java HashMap拓容死循环
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在并发下必然出现问题。但是,我发现近几年,很多人都经历过这个事(在网上查“HashMap Infinite Loo转载 2017-10-18 16:28:08 · 304 阅读 · 0 评论 -
Java 里如何实现线程间通信
转自: http://www.importnew.com/26850.html正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:thread.join(), object.wait(), object.notify(), CountdownLatch, CyclicBarrier, F转载 2017-10-25 11:35:58 · 253 阅读 · 0 评论 -
一个tomcat部署多个应用,有几个JVM?
1、一个tomcat是一个进程,其中有很多线程(与有多少个app无关) 2、一个tomcat启动一个JVM,其中可以有很多APP 3、一个tomcat中部署的多个app,虽然同处一个JVM里,但是由于无法相互调用,所以也可以认为是分布式的 转自:http://blog.csdn.net/kyfxbl/article/details/11967535Quest转载 2017-10-17 15:50:48 · 6110 阅读 · 1 评论 -
由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 · 1566 阅读 · 0 评论 -
JAVA String.split() 方法浅析
它是java.lang包中的String.split()方法,返回是一个数组我在应用中用到一些,给大家总结一下,仅供大家参考:1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");2、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,原创 2017-03-06 17:29:16 · 271 阅读 · 0 评论 -
JsonReader 使用方法
public final classJsonReaderextends Objectimplements Closeablejava.lang.Object ↳android.util.JsonReaderClass OverviewReads a JSON (RFC 4627) encoded v原创 2014-09-16 10:26:41 · 5111 阅读 · 2 评论 -
Unicode转UTF-8
最近一个项目用到了百度LBS云,从云端传来的数据中,中文是Unicode编码的,原创 2014-10-08 15:53:27 · 502 阅读 · 0 评论 -
android Application的介绍,用它防止内存泄漏
在代码中经常看到application这个类,一直不知道这个是干什么用的,今天刚好有点时间,所以进行了详细的学习。一.先对它的整体概念解释:在android源码中对他的描述是; * Base class for those who need to maintain global application state. You can * p原创 2014-10-10 14:27:56 · 455 阅读 · 0 评论 -
Android的进程回收
Android中的进程是托管的,当系统进程空间紧张的时候,会依照优先级自动进行进程的回收.由此带来三个问题:回收规则: 什么时候回收与回收哪一个避免误杀: 如何阻止被回收数据恢复与保存: 被回收了怎么办 Android将进程分为6个等级,它们按优先级顺序由高到低依次是:1.前台进程( FOREGROUND_APP)2.可视进程(VISIBLE_APP )3原创 2014-10-10 14:30:40 · 452 阅读 · 0 评论 -
Map按照Value值进行排序
1 TreeMap按照value进行排序[java] view plaincopypublic class Testing { public static void main(String[] args) { HashMap map = new HashMap(); Valu原创 2014-10-19 10:28:28 · 586 阅读 · 0 评论 -
Java-希尔排序
/**希尔排序的原理:根据需求,如果你想要结果从大到小排列,它会首先将数组进行分组,然后将较大值移到前面,较小值* 移到后面,最后将整个数组进行插入排序,这样比起一开始就用插入排序减少了数据交换和移动的次数,可以说希尔排序是加强* 版的插入排序* 拿数组5, 2, 8, 9, 1, 3,4来说,数组长度为7,当increment为3时,数组分为两个序列* 5,2,8和9,1,3,4转载 2015-08-14 15:33:09 · 282 阅读 · 0 评论 -
代码提交SVN流程
2016-04-121、创建Jira问题单,其中Assignee填写自己,再填写问题描述和修改内容2、先update代码3、在trunk中右键,commit4、【功能模块】商品2期【问题描述】STOREAPP-2402 新增活动商品【修改内容】活动商品的新增和更新【提交人】 BG204466再附上Jira问题单地址。5、解决该问题单。原创 2016-04-12 20:58:35 · 566 阅读 · 0 评论 -
service工程报错解决方案
1、删去web、admin、AuthServer等,只启动service,看看是什么错误。2、找到错误后,修改错误。3、去Tomcat webApps目录删除web、admin、AuthServer等,clean Tomcat,重新启动。4、如果还不行,打包一下maven项目原创 2016-05-12 09:40:26 · 496 阅读 · 0 评论 -
redis问题总汇
1、ERR wrong number of arguments for 'hmset' command在使用redis的java客户端驱动包的时候,如果使用hmset的时候,传递的hashmap对象是一个长度为0的对象的话,会报这个错误。原创 2016-04-19 12:20:53 · 770 阅读 · 0 评论 -
java怎么用一行代码初始化ArrayList
http://stackoverflow.com/questions/1005073/initialization-of-an-arraylist-in-one-line原创 2016-07-16 17:31:21 · 279 阅读 · 0 评论 -
MySQL执行计划解读
Explain语法EXPLAIN SELECT ……变体:1. EXPLAIN EXTENDED SELECT ……将执行计划“反编译”成SELECT语句,运行SHOW WARNINGS 可得到被MySQL优化器优化后的查询语句 2. EXPLAIN PARTITIONS SELECT ……用于分区表的EXPLAIN执行计划包含的信息 id原创 2016-10-23 19:06:17 · 175 阅读 · 0 评论 -
UML类图几种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) 【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特转载 2016-10-14 11:28:57 · 603 阅读 · 0 评论 -
静态工厂方法
静态工厂方法讲解 创建类的实例的最常见的方式是用new语句调用类的构造方法。在这种情况下,程序可以创建类的任意多个实例,每执行一条new语句,都会导致Java虚拟机的堆区中产生一个新的对象。假如类需要进一步封装创建自身实例的细节,并且控制自身实例的数目,那么可以提供静态工厂方法。 例如Class实例是Java虚拟机在加载一个类时自动创建的,程序无法用new语句创原创 2016-10-19 14:25:08 · 332 阅读 · 0 评论 -
JAVA 服务提供者框架介绍
服务提供者框架是指:多个服务提供者实现一个服务,系统为客户端提供多个实现,并把他们从多个实现中解耦出来。服务提供者的改变对它们的客户端是透明的,这样提供了更好的可扩展性。例如,JDBC,JMS等就是用了服务提供者框架 他们之间的关系如下图: 1.服务具体实现类和服务提供者实现类是服务提供者自己去实现。以JDBC为例,这2个模块由具体的原创 2016-10-19 16:59:24 · 467 阅读 · 0 评论 -
HeadFirst设计模式 读书笔记
有些人已经解决你的问题了。 使用模式最好的方式是“把模式装进脑子里,然后在你的设计和已有的应用中,寻找何处可以使用它们”以往是代码复用,现在是经验复用。设计原则1:找出应用中可能需要变化,把它们独立出来,不要和那些不需要变化的代码混在一起。所有的设计模式都提供了一套方法让“系统中某部分改变不会影响其他部分”设计原则2:针对接口编程,而不是针对实现编程。原创 2017-01-04 11:26:59 · 248 阅读 · 0 评论 -
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 · 496 阅读 · 0 评论