- Glide缓存模块源码分析
有没有口罩给我一个
在开始之前,我们先了解Java中的四种引用和ReferenceQueue,为什么要了解这些知识呢?大家都知道Glide的缓存使用三级缓存,分别是磁盘缓存和两级内存缓存,而Glide的两级内存缓存就是用WeakReference+ReferenceQueue监控GC回收,这里的回收是指JVM在合适的时间就会回收该对象。Java的四种引用熟悉Java的同学都知道Java内存管理分为内存分配和内存回收,
- LeakCanary原理解析
Androider_Zxg
Android开发AndroidLeakCanary
前几天面试,问到了我内存泄漏的相关问题,顺其自然问到了内存泄漏的检测工具LeakCanary的工作原理。当时不会,在看了几篇博文后,明白了其中的道理,理一下思路记录在此。准备知识ReferenceQueue引用队列,对于弱引用和软引用来说,若需要知道该引用是否已被GC回收,那么在构造WeakReference或SoftReference时,传入一个ReferenceQueue。那么当这个引用被回收
- LeakCannary使用方法及实现原理探究(二)—— LeakCannary实现原理及源码分析
immrwk
AndroidAndroid第三方源码LeakCananry内存泄漏内存泄漏检测
写在前头这里首先将LeakCannary的原理写在这里,让大家有一个初步的印象,然后我们再一步步去分析具体的实现逻辑LeakCannary原理1.ActivityonDestroy之后将它放到一个WeakReference2.这个WeakReference关联到一个ReferenceQueue3.查看ReferenceQueue是否存在Activity的引用4.如果该Acitivty泄漏了,Dum
- 强引用、软引用、弱引用、虚引用以及他们之间和 gc 的关系
猿必过
强引用:new出的对象之类的引用,只要强引用还在,永远不会回收。强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:ObjectstrongReference=newObject();软引用:引用但非必须的对象,内存溢出异常之前,回收。软引用可以和一个引用队列(ReferenceQueue)联合使用。如果软引用所引用对象被垃圾回收,JAVA虚拟机就会把这个软引用加入到
- java终结器
策马踏清风
java.lang.Object里有一个finalize()方法,是空的。一旦重写这个方法对象的声明周期就会产生变化。java.lang.ref.Finalizer.ReferenceQueue:实现finalize()方法的对象都会被加入到ReferenceQueue队列中,因为对象一直被引用,所以无法被GCfinalize():调用对象的终结器方法即可将对象从队列中删除
- 虚引用的使用
Parallel_Lines
虚引用相信大家都知道他的作用,但是由于平时不常用,所以实际上手有点困难。本文目的通过学习虚引用的使用,敲开LeakCanary源码学习的大门。使用虚引用检测对象被回收虚引用必须与ReferenceQueue一起使用,当GC准备回收一个对象,如果发现它有虚引用,就会在回收之前,把这个虚引用加入到与之关联的ReferenceQueue中。利用这个原理,我们可以检测到对象何时被回收。下面通过测试代码,说
- 使用List添加WeakReference作为缓存优化
学习的小鲁
使用List添加WeakReference作为缓存优化优化点在于当WeakReference里面的get()对象为空的时候,需要及时删除。方式1,创建WeakReference的时候,添加ReferenceQueue,当对象被释放的时候,会添加到ReferenceQueue中,可以在调用获取缓存或者是添加缓存的时候,通过ReferenceQueue里面的对象来删除已经被释放的WeakReferen
- java的弱引用、软引用和虚引用
guochangjin
Javajavajvm
Java中的弱引用、软引用和虚引用是用于解决内存泄漏问题的引用类型。它们具有不同的特性,可以在不同场景下使用。1.*弱引用(WeakReference)弱引用用于引用对象,但不影响对象的垃圾回收。当系统内存空间不足时,JVM会优先回收被弱引用引用的对象。弱引用可以和一个引用队列(ReferenceQueue)联合使用,当被引用的对象被垃圾回收时,就会将弱引用对象加入到引用队列中。示例代码:impo
- LeakCanary相关
Infinity_空
检查内存泄漏原理当构造一个弱引用对象(KeyedWeakReference)时,并把ReferenceQueue引用队列作为参数传入。当系统发生GC时,如果对象被正确回收,那么ReferenceQueue中不为null,即没有发生内存泄漏。如果ReferenceQueue中为null,则发生了内存泄漏。一个对象的引用方式可以分为四种:强引用(StrongReference):JVM宁可抛出OOM也
- Java的四种引用
Crazy贵子
目的把引用分为这几种类型主要是为了配合垃圾回收器的工作,同时更灵活地控制对象的生命周期。这四种引用中的软引用SoftRefernce、弱引用WeakReference、虚引用PhantomReference均有对应的类,他们都继承于Reference,这些类在jdk中java.lang.ref下,此外还有一个引用队列ReferenceQueue类,当JVM检测到适当的可达性发生改变时,会将已经注册
- Android弱引用与软引用
GrovessevorG
对象的四种级别:强引用、软引用、弱引用和虚引用如果一个对象只具有软引用,那么如果内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收,Java虚拟机就会把这个软引用加入到与之关联的引用队
- Reference,ReferenceQueue及GC垃圾回收机制分析
不动明王1984
源代码分析java垃圾回收ReferenceReferenceQueueObjectCleaner
前言java在最开始设计的时候一个对象只存在被引用和没有被引用两种状态,如此设计在概念上会比较清晰,且垃圾回收的判断与实现也会比较简单。但是随着应用场景的增加,实际上,我们更希望存在这样的一类对象:当有足够的内存时,这些对象能够继续存活;而当内存空间不足需要进行垃圾回收,或者在进行了垃圾回收之后空间还是非常紧张,则可以抛弃这些对象。这种特性,可以在很多场景下发挥作用,例如缓存功能、对象存活周期监控
- java源码:Reference和ReferenceQueue
huangLearn
我们都知道在堆里面存放着Java中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”。那么gc怎么判断一个对象是不是垃圾呢判断对象是否存活有两种计数算法:引用计数法、可达性分析法引用计数法:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一就是如果一个对象没有被任何引用指向,则可视之为垃圾
- LeakCanary 核心源码分析
JeffreyWorld
LeakCanary工作机制:RefWatcher.watch()创建一个KeyedWeakReference到要被监控的对象。KeyedWeakReference继承于WeakReference,并且构造该对象的时候,需要传入ReferenceQueue对象。finalclassKeyedWeakReferenceextendsWeakReference{publicfinalStringkey
- WeakReference才是LeakCanary真正的核心
moushao
前言LeakCanary的源码分析,请参考以下文章,他们写的比我好,我这个只讲WeakReference与LeakCanary的关系《java源码系列-带你读懂Reference和ReferenceQueue》《LeakCanary原理分析》疑问对于LeakCanary的源码,或多或少的还是了解一点,但这次本着刨根问底的劲儿,就一行一行的捋捋,结果发现,下图中内存泄漏的判断逻辑,我咋个都想不通为什
- LeakCanary详解
perry_Fan
应用层的使用和改进:深入Leakcanary的源码:LeakCanary原理原理:正常情况下一个Activity在执行Destroy之后就要销毁,LeakCanary做的就是在一个ActivityDestroy之后将它放在一个WeakReference中,然后将这个WeakReference关联到一个ReferenceQueue,查看ReferenceQueue是否存在Activity的引用,如果
- Java对象的强、软、弱和虚引用+ReferenceQueue
北国雪WRG
一、强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。二、软引用(SoftReference)如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收
- leakcanary
最美下雨天
这篇文章中介绍了内存泄露检测的原理:Reference、ReferenceQueue这篇文章有分析流程三个核心知识点1、Reference与ReferenceQueue@TestpublicvoidtestQueue(){Aa=newA();ReferenceQueuequeue=newReferenceQueue();WeakReferencereference=newWeakReference
- JVM之强软弱虚引用
山河亦问安
JVMjvm
在Java虚拟机(JVM)中,有几种不同类型的引用,它们分别是:强引用(StrongReference)、软引用(SoftReference)、弱引用(WeakReference)、虚引用(PhantomReference)和引用队列(ReferenceQueue)。这些引用类型提供了对对象的不同级别的引用,用于垃圾回收和内存管理。1.强引用(StrongReference)强引用是最常见的引用类
- 内存泄露(八)-- LeakCanary
xuyin1204
内存泄漏Android性能优化内存泄漏Android性能优化
KOOM线上APM监控最全剖析LeakCanary源码分析:一文让你彻底理解LeakCanary的工作原理目录一、LeakCanary核心原理二、为什么LeakCanary不能用于线上?三、LeakCanary的使用一、LeakCanary核心原理ActivityDestroy之后将它放在一个WeakReference这个WeakReference关联到一个ReferenceQueue查看Refe
- 从LeakCanary看内存快照生成
小海编码日记
leakcanaryandroidandroidjetpackandroidx开发语言jetpackandroidleakcanaryhprof
前面我们已经完成了生命周期监控并且可以通过ReferenceQueue和WeakHashMap的比较确定哪些对象发生泄漏了,那么接下来需要考虑的就是如何确定这个对象是被谁持有导致泄漏的呢?从内存泄漏一文中可知,当我们使用AndroidStudio或MAT分析内存泄漏问题时,通常首先是需要抓取发生内存泄漏时的hprof文件,随后使用分析软件打开该文件,排查泄漏对象被持有的GCRoots,进而解决内存
- 2023年Java核心技术面试第二篇(篇篇万字精讲)
平凡@之路
java面试开发语言
目录四.强引用,软引用,弱引用,幻象引用之间的区别?1.前言2.强引用2.1强引用赋值为null2.2超过了引用的作用域2.2.1描述:2.2.2作用域内:2.2.3不在作用域内:3.软引用(SoftReference)3.1描述4.弱引用(WeakReference)4.1解析:5.幻像引用5.1描述5.2流程图5.3解析:5.3.1引用队列(ReferenceQueue)的作用主要体现在以下两
- 不是很深入的分析LeakCanary2.0
trayliu_小马过河
imageLeakcanary2.0Leakcanary使用debugImplementation'com.squareup.leakcanary:leakcanary-android:2.0-alpha-2'原理Reference、ReferenceQueue详解ReferenceQueue引用队列,在检测到适当的可到达性更改后,垃圾回收器将已注册的引用对象添加到该队列中WeakReferenc
- Java中的四种引用以及ReferenceQueue
taj3991
简介:本文主要介绍JAVA中的四种引用:StrongReference(强引用)、SoftReferenc(软引用)、WeakReferenc(弱引用)、PhantomReference(虚引用)的作用。同时我们还将介绍ReferenceQueue和WeakHashMap的功能和使用示例。欢迎探讨,如有错误敬请指正如需转载,请注明出处http://www.cnblogs.com/nullzx/1.
- java soft reference_Java中四种Reference
空谷幽兰月影寒
javasoftreference
概述Java中一共有四种Reference,其中SoftReference,WeakReference,PhantomReference内有一个Referent和ReferenceQueueReferent:被引用对象RefernceQueue:当引用的Referent被回收后该引用会被enqueue到这个ReferenceQueue中一个对象可以同时拥有多种引用,可以通过Reference.ge
- 虚引用所指向的对象到底什么时候被回收?
xiaoshijiu333
JVM虚引用回收时机虚引用jdk文档
虚引用对象到底什么时候被回收?晚上被这个问题干了一个多小时。。。问题来源代码:importjava.lang.ref.PhantomReference;importjava.lang.ref.Reference;importjava.lang.ref.ReferenceQueue;/***@Author:xiaoshijiu*@Date:2020/2/27*@Description:*/publi
- Java ~ Reference ~ ReferenceQueue【总结】
说淑人
Javajavajvm开发语言ReferenceReferenceQueue
前言文章相关系列:《Java~Reference【目录】》(持续更新)相关系列:《Java~Reference~ReferenceQueue【源码】》(学习过程/多有漏误/仅作参考/不再更新)相关系列:《Java~Reference~ReferenceQueue【总结】》(学习总结/最新最准/持续更新)相关系列:《Java~Reference~ReferenceQueue【问题】》(学习解答/持续
- Java ~ Reference【目录】
说淑人
JavajavaReferencejvm
一Reference(引用)《Java~Reference【源码】》《Java~Reference【总结】》《Java~Reference~ReferenceQueue【源码】》《Java~Reference~ReferenceQueue【总结】》《Java~Reference~SoftReference【源码】》《Java~Reference~SoftReference【总结】》《Java~Re
- Android---内存泄漏检测核心原理
别偷我的猪_09
#性能优化android
目录LeakCanary核心原理LeakCanary检测对象的类型ReferenceQueue与WeakReferenceLeakCanary里的监控列表与保留列表常见内存泄漏案例1.单例导致内存泄漏2.静态变量导致内存泄漏3.非静态内部类导致内存泄漏4.未取消注册或回调导致内存泄漏5.Timer和TimerTask导致内存泄漏6.集合中的对象未清理造成内存泄漏7.资源未关闭或释放导致内存泄漏8.
- 内存泄露原理
潇萧之炎
一、四大引用强:直到oom都不会回收软:gc扫到后不一定回收,内存不足弱:gc扫到后就回收,与引用队列绑定使用(WeakReference、ReferenceQueue)虚二、LeakCanery原理三个列表:引用列表、观察列表、怀疑列表初始状态:[图片上传失败...(image-891a11-1644571631013)]没泄露:引用队列不为空,移除观察列表[图片上传失败...(image-ec
- java工厂模式
3213213333332132
java抽象工厂
工厂模式有
1、工厂方法
2、抽象工厂方法。
下面我的实现是抽象工厂方法,
给所有具体的产品类定一个通用的接口。
package 工厂模式;
/**
* 航天飞行接口
*
* @Description
* @author FuJianyong
* 2015-7-14下午02:42:05
*/
public interface SpaceF
- nginx频率限制+python测试
ronin47
nginx 频率 python
部分内容参考:http://www.abc3210.com/2013/web_04/82.shtml
首先说一下遇到这个问题是因为网站被攻击,阿里云报警,想到要限制一下访问频率,而不是限制ip(限制ip的方案稍后给出)。nginx连接资源被吃空返回状态码是502,添加本方案限制后返回599,与正常状态码区别开。步骤如下:
- java线程和线程池的使用
dyy_gusi
ThreadPoolthreadRunnabletimer
java线程和线程池
一、创建多线程的方式
java多线程很常见,如何使用多线程,如何创建线程,java中有两种方式,第一种是让自己的类实现Runnable接口,第二种是让自己的类继承Thread类。其实Thread类自己也是实现了Runnable接口。具体使用实例如下:
1、通过实现Runnable接口方式 1 2
- Linux
171815164
linux
ubuntu kernel
http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.1.2-unstable/
安卓sdk代理
mirrors.neusoft.edu.cn 80
输入法和jdk
sudo apt-get install fcitx
su
- Tomcat JDBC Connection Pool
g21121
Connection
Tomcat7 抛弃了以往的DBCP 采用了新的Tomcat Jdbc Pool 作为数据库连接组件,事实上DBCP已经被Hibernate 所抛弃,因为他存在很多问题,诸如:更新缓慢,bug较多,编译问题,代码复杂等等。
Tomcat Jdbc P
- 敲代码的一点想法
永夜-极光
java随笔感想
入门学习java编程已经半年了,一路敲代码下来,现在也才1w+行代码量,也就菜鸟水准吧,但是在整个学习过程中,我一直在想,为什么很多培训老师,网上的文章都是要我们背一些代码?比如学习Arraylist的时候,教师就让我们先参考源代码写一遍,然
- jvm指令集
程序员是怎么炼成的
jvm 指令集
转自:http://blog.csdn.net/hudashi/article/details/7062675#comments
将值推送至栈顶时 const ldc push load指令
const系列
该系列命令主要负责把简单的数值类型送到栈顶。(从常量池或者局部变量push到栈顶时均使用)
0x02 &nbs
- Oracle字符集的查看查询和Oracle字符集的设置修改
aijuans
oracle
本文主要讨论以下几个部分:如何查看查询oracle字符集、 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题。
一、什么是Oracle字符集
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货
- png在Ie6下透明度处理方法
antonyup_2006
css浏览器FirebugIE
由于之前到深圳现场支撑上线,当时为了解决个控件下载,我机器上的IE8老报个错,不得以把ie8卸载掉,换个Ie6,问题解决了,今天出差回来,用ie6登入另一个正在开发的系统,遇到了Png图片的问题,当然升级到ie8(ie8自带的开发人员工具调试前端页面JS之类的还是比较方便的,和FireBug一样,呵呵),这个问题就解决了,但稍微做了下这个问题的处理。
我们知道PNG是图像文件存储格式,查询资
- 表查询常用命令高级查询方法(二)
百合不是茶
oracle分页查询分组查询联合查询
----------------------------------------------------分组查询 group by having --平均工资和最高工资 select avg(sal)平均工资,max(sal) from emp ; --每个部门的平均工资和最高工资
- uploadify3.1版本参数使用详解
bijian1013
JavaScriptuploadify3.1
使用:
绑定的界面元素<input id='gallery'type='file'/>$("#gallery").uploadify({设置参数,参数如下});
设置的属性:
id: jQuery(this).attr('id'),//绑定的input的ID
langFile: 'http://ww
- 精通Oracle10编程SQL(17)使用ORACLE系统包
bijian1013
oracle数据库plsql
/*
*使用ORACLE系统包
*/
--1.DBMS_OUTPUT
--ENABLE:用于激活过程PUT,PUT_LINE,NEW_LINE,GET_LINE和GET_LINES的调用
--语法:DBMS_OUTPUT.enable(buffer_size in integer default 20000);
--DISABLE:用于禁止对过程PUT,PUT_LINE,NEW
- 【JVM一】JVM垃圾回收日志
bit1129
垃圾回收
将JVM垃圾回收的日志记录下来,对于分析垃圾回收的运行状态,进而调整内存分配(年轻代,老年代,永久代的内存分配)等是很有意义的。JVM与垃圾回收日志相关的参数包括:
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-Xloggc
-XX:+PrintGC
通
- Toast使用
白糖_
toast
Android中的Toast是一种简易的消息提示框,toast提示框不能被用户点击,toast会根据用户设置的显示时间后自动消失。
创建Toast
两个方法创建Toast
makeText(Context context, int resId, int duration)
参数:context是toast显示在
- angular.identity
boyitech
AngularJSAngularJS API
angular.identiy 描述: 返回它第一参数的函数. 此函数多用于函数是编程. 使用方法: angular.identity(value); 参数详解: Param Type Details value
*
to be returned. 返回值: 传入的value 实例代码:
<!DOCTYPE HTML>
- java-两整数相除,求循环节
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class CircleDigitsInDivision {
/**
* 题目:求循环节,若整除则返回NULL,否则返回char*指向循环节。先写思路。函数原型:char*get_circle_digits(unsigned k,unsigned j)
- Java 日期 周 年
Chen.H
javaC++cC#
/**
* java日期操作(月末、周末等的日期操作)
*
* @author
*
*/
public class DateUtil {
/** */
/**
* 取得某天相加(减)後的那一天
*
* @param date
* @param num
*
- [高考与专业]欢迎广大高中毕业生加入自动控制与计算机应用专业
comsci
计算机
不知道现在的高校还设置这个宽口径专业没有,自动控制与计算机应用专业,我就是这个专业毕业的,这个专业的课程非常多,既要学习自动控制方面的课程,也要学习计算机专业的课程,对数学也要求比较高.....如果有这个专业,欢迎大家报考...毕业出来之后,就业的途径非常广.....
以后
- 分层查询(Hierarchical Queries)
daizj
oracle递归查询层次查询
Hierarchical Queries
If a table contains hierarchical data, then you can select rows in a hierarchical order using the hierarchical query clause:
hierarchical_query_clause::=
start with condi
- 数据迁移
daysinsun
数据迁移
最近公司在重构一个医疗系统,原来的系统是两个.Net系统,现需要重构到java中。数据库分别为SQL Server和Mysql,现需要将数据库统一为Hana数据库,发现了几个问题,但最后通过努力都解决了。
1、原本通过Hana的数据迁移工具把数据是可以迁移过去的,在MySQl里面的字段为TEXT类型的到Hana里面就存储不了了,最后不得不更改为clob。
2、在数据插入的时候有些字段特别长
- C语言学习二进制的表示示例
dcj3sjt126com
cbasic
进制的表示示例
# include <stdio.h>
int main(void)
{
int i = 0x32C;
printf("i = %d\n", i);
/*
printf的用法
%d表示以十进制输出
%x或%X表示以十六进制的输出
%o表示以八进制输出
*/
return 0;
}
- NsTimer 和 UITableViewCell 之间的控制
dcj3sjt126com
ios
情况是这样的:
一个UITableView, 每个Cell的内容是我自定义的 viewA viewA上面有很多的动画, 我需要添加NSTimer来做动画, 由于TableView的复用机制, 我添加的动画会不断开启, 没有停止, 动画会执行越来越多.
解决办法:
在配置cell的时候开始动画, 然后在cell结束显示的时候停止动画
查找cell结束显示的代理
- MySql中case when then 的使用
fanxiaolong
casewhenthenend
select "主键", "项目编号", "项目名称","项目创建时间", "项目状态","部门名称","创建人"
union
(select
pp.id as "主键",
pp.project_number as &
- Ehcache(01)——简介、基本操作
234390216
cacheehcache简介CacheManagercrud
Ehcache简介
目录
1 CacheManager
1.1 构造方法构建
1.2 静态方法构建
2 Cache
2.1&
- 最容易懂的javascript闭包学习入门
jackyrong
JavaScript
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
下面就是我的学习笔记,对于Javascript初学者应该是很有用的。
一、变量的作用域
要理解闭包,首先必须理解Javascript特殊
- 提升网站转化率的四步优化方案
php教程分享
数据结构PHP数据挖掘Google活动
网站开发完成后,我们在进行网站优化最关键的问题就是如何提高整体的转化率,这也是营销策略里最最重要的方面之一,并且也是网站综合运营实例的结果。文中分享了四大优化策略:调查、研究、优化、评估,这四大策略可以很好地帮助用户设计出高效的优化方案。
PHP开发的网站优化一个网站最关键和棘手的是,如何提高整体的转化率,这是任何营销策略里最重要的方面之一,而提升网站转化率是网站综合运营实力的结果。今天,我就分
- web开发里什么是HTML5的WebSocket?
naruto1990
Webhtml5浏览器socket
当前火起来的HTML5语言里面,很多学者们都还没有完全了解这语言的效果情况,我最喜欢的Web开发技术就是正迅速变得流行的 WebSocket API。WebSocket 提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端使用简单的语法有效地推动消息到服务器。让我们看一看6个HTML5教程介绍里 的 WebSocket API:它可用于客户端、服
- Socket初步编程——简单实现群聊
Everyday都不同
socket网络编程初步认识
初次接触到socket网络编程,也参考了网络上众前辈的文章。尝试自己也写了一下,记录下过程吧:
服务端:(接收客户端消息并把它们打印出来)
public class SocketServer {
private List<Socket> socketList = new ArrayList<Socket>();
public s
- 面试:Hashtable与HashMap的区别(结合线程)
toknowme
昨天去了某钱公司面试,面试过程中被问道
Hashtable与HashMap的区别?当时就是回答了一点,Hashtable是线程安全的,HashMap是线程不安全的,说白了,就是Hashtable是的同步的,HashMap不是同步的,需要额外的处理一下。
今天就动手写了一个例子,直接看代码吧
package com.learn.lesson001;
import java
- MVC设计模式的总结
xp9802
设计模式mvc框架IOC
随着Web应用的商业逻辑包含逐渐复杂的公式分析计算、决策支持等,使客户机越
来越不堪重负,因此将系统的商业分离出来。单独形成一部分,这样三层结构产生了。
其中‘层’是逻辑上的划分。
三层体系结构是将整个系统划分为如图2.1所示的结构[3]
(1)表现层(Presentation layer):包含表示代码、用户交互GUI、数据验证。
该层用于向客户端用户提供GUI交互,它允许用户