自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(331)
  • 收藏
  • 关注

原创 Android 资料总结(全)

记录了接近一年多的找工作历程中总结的android资料。介绍给各位同学,希望对大家带来些许帮助。(以下均对应文章的链接)《Android 系统框架》《Android四大组件,以及他们之间的联系》《Android 四大布局》《Android View的事件体系》《Android View的工作原理》《Android 动画》《Android数据存储》《Android

2016-10-19 15:45:15 805 1

原创 OpenAI Sora原理探究

春节假日期间,美国人工智能研究公司OpenAI发布了Sora模型。在文生文、文生图之后,Sora突破了文生视频技术,可以根据文本指令生成长达1分钟的逼真和富有想象力的视频,引起网络和公众高度关注。那么Sora模型的基本原理是什么?可能会带来哪些变化和影响?我们将sora的整个训练过程可以划分为四个大的步骤步骤一:使用 DALLE 3( CLIP )把文本和图像对 建立关联性;

2024-02-28 16:04:29 1216

原创 SENet(Squeeze-and-Excitation Networks)网络详解

论文:《Squeeze-and-Excitation Networks》 论文链接:https://arxiv.org/abs/1709.01507 代码地址:https://github.com/hujie-frank/SENet PyTorch代码地址:https://github.com/miraclewkf/SENet-PyTorch一、SEN...

2018-04-23 23:54:21 63421 6

原创 Java资料总结(全)

Java内存模型JMMJVM垃圾收集(Garbage Collector,GC)Java对象的生命周期线程Java多线程同步(锁)的实现方法(synchronised 与reentrantlock)java锁的种类及研究Java的容器 List、Set、Map的区别HashMapvs.TreeMap vs. Hashtable vs. LinkedHashMap

2016-11-08 15:22:40 1075

原创 内部类

参考:《疯狂的java讲义》我们把一个类放在另一个类的内部定义,这个定义在其他类内部的类成为内部类,包含内部类的类也被称为外部类。(或者叫宿主类)内部类的主要作用:• 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一包中的其他类访问该类。假设需要创建Cow类,cow类需要组合一个cowleg对象,cowleg类只有在cow类才有效,离开了cow类之后就没有任何意义。这种

2016-11-08 14:50:08 1037

原创 回调函数

在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就称为回调。在调用接口时,需要严格的按照定义的参数和方法调用,并且需要处理函数的异步,否则会导致程序的崩溃。这样的解释似乎还是比较难懂,这里举个简单的例子,程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序

2016-11-08 14:33:00 615

原创 多态

多态就是指一个变量, 一个方法或者一个对象可以有不同的形式.面向对象编程有三大特性:封装、继承、多态对于多态,可以总结它为: 一、使用父类类型的引用指向子类的对象; 二、该引用只能调用父类中定义的方法和变量; 三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用) 四、变量不能被重写(覆盖),”重写“的概念只针对

2016-11-08 14:28:27 507

原创 Java四种引用

在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。⑴强引用(StrongReference)  强引用是使用最普遍的引用。如果一个

2016-11-08 14:24:06 1044

原创 接口和抽象类的异同

1.抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。下面要注意一个问题:在《JAVA编程思想》一书中,将

2016-11-08 14:09:46 691

原创 异常处理

异常机制JAVA中把异常当做对象来处理,并定义了一个基类Throwable作为所有异常的父类Throwable类Throwable类是Java语言中所有错误或异常的超类,他有两个子类:Error与ExceptionError表示恢复是很困难的一件事,他用来表示系统错误或者低层资源的错误。Error为错误,是程序无法处理的,如OutOfMemoryError、ThreadDeat

2016-11-08 13:52:37 890

原创 输入输出流 I/O

1.什么是IOJava中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。   Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核

2016-11-07 22:16:08 1059

原创 Java 序列化机制

Java提供一种机制叫做序列化,通过有序的格式或者字节序列持久化java对象,其中包含对象的数据,还有对象的类型,和保存在对象中的数据类型。所以,如果我们已经序列化了一个对象,那么它可以被读取并通过对象的类型和其他信息进行反序列化,并最终获取对象的原型。ObjectInputStream 和 ObjectOutputStream对象是高级别的流对象,包含序列化和反序列化的方法。 O

2016-11-07 21:33:05 801

原创 Java 反射机制

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运行的时候还可以动态地去操作他们.Java反射机制主要提供了以下

2016-11-07 21:16:40 684

原创 类的加载和初始化顺序

类加载以及初始化的顺序是:->类的静态成员初始化分配内存(有父类的先父类,然后自己)->然后main方法执行->类初始化{类非静态成员的初始化,然后执行构造器(有父类的先给父类的非静态成员初始化,然后父类的构造器)}实例(网易实习2016):最终的输出为:3 6 7 2 1 5 4关于以下application,说法正确是什么?public cl

2016-11-07 21:11:13 867

原创 ClassLoader运行机制

1.类加载器1.1 ClassLoader抽象类类加载器的任务就是根据一个类的全限定名来读取此类的二进制字节流到JVM内部,然后转换为一个与目标类对应的java.lang.Class对象实例。如果需要支持类的动态加载或需要对编译后的字节码文件进行解密操作等,就需要与类加载器打交道了。(1)Bootstrap :一般用本地代码实现,负责加载 JVM 基础核心类库( rt.ja

2016-11-07 17:48:07 1689

原创 hashcode、equals和==之间的区别

Object类里有哪些方法1.所有方法:1. getClass()2. hashCode()3. equals()4. toString()5. clone()6. wait()...7. notify()8. notifyAll()9. finalize()Object类各个方法的作用方法摘要protected Object clone

2016-11-07 17:28:20 826

原创 String、StringBuffer、StringBuilder的区别

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)  简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经

2016-11-07 14:45:52 599

原创 LinkedHashMap源码分析与LRU实现

LinkedHashMap可认为是哈希表和链接列表综合实现,并允许使用null值和null键。LinkedHashMap实现与HashMap的不同之处在于,LinkedHashMap维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序。 LinkedHashMap的实现不是同步的。如果多个线程同时访问LinkedHashMap,而其中至少一个

2016-11-06 11:04:06 2973

原创 LinkedHashMap实现原理

1.LinkedHashMap 概述HashMap 是无序的,HashMap在 put的时候是根据 key的 hashcode进行 hash然后放入对应的地方。所以在按照一定顺序 put进 HashMap中,然后遍历出 HashMap的顺序跟 put的顺序不同(除非在 put的时候 key已经按照 hashcode排序号了,这种几率非常小

2016-11-06 10:52:51 947

原创 ConcurrentHashMap

线程不安全的HashMap因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap效率低下的HashTable容器HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程访问HashTa

2016-11-05 12:17:07 726

原创 HashTable实现原理

有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相对应的value值。一个是前面提到的HashMap,还有一个就是马上要讲解的HashTable。对于HashTable而言,它在很大程度上和HashMap的实现差不多,如果我们对HashMap比较了解的话,对Has

2016-11-05 12:00:56 4225

原创 HashMap的实现原理

1.HashMap概述:   HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2.HashMap的数据结构:   在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。

2016-11-05 11:37:02 798

原创 HashSet,TreeSet和LinkedHashSet的区别

|——SortedSet接口——TreeSet实现类 Set接口——|——HashSet实现类         |——LinkedHashSet实现类Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,

2016-11-05 11:18:27 624

原创 HashMapvs.TreeMap vs. Hashtable vs. LinkedHashMap

Map是最重要的数据结构。这篇文章中,我会带你们看看HashMap, TreeMap, HashTable和LinkedHashMap的区别。Map概览Java SE中有四种常见的Map实现——HashMap, TreeMap, Hashtable和LinkedHashMap。如果我们使用一句话来分别概括它们的特点,就是:HashMap就是一张hash表,键和值都没有排序。Tree

2016-11-05 11:06:34 455

原创 Java的容器 List、Set、Map的区别

在编程中,常常需要集中存放多个数据。从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所以的集合类都位于java.

2016-11-04 23:11:52 1822

原创 java锁的种类及研究

Java锁的种类以及辨析 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如synchronized 和ReentrantLock等等) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA中常见的锁以及其特性,为大家答疑解惑。1、自旋锁2、自旋锁的其他种类3、阻塞锁4、可重入锁5、读写锁6、

2016-11-04 22:23:55 866

原创 Java多线程同步(锁)的实现方法(synchronised 与reentrantlock)

synchronisedsynchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 3. 修改一个静态的方法,其作用的范

2016-11-04 12:02:30 3492 1

原创 线程

1.线程和线程池1.1线程类创建的两种方法://方法一:继承Thread 类,实现run方法。class ThreadTest extends Thread {ThreadTest() {}public void run() {// code here ... }}//创建并启动一个线程: ThreadTest t = new ThreadTest();t.star

2016-11-04 11:34:37 1082

原创 Java对象的生命周期

在Java中,对象的生命周期包括以下几个阶段:1.创建阶段(Created)2.应用阶段(In Use)3.不可见阶段(Invisible)4.不可达阶段(Unreachable)5.收集阶段(Collected)6.终结阶段(Finalized)7.对象空间重分配阶段(De-allocated)1.创建阶段(Created)在创建阶段系统通过下

2016-11-04 11:12:35 768

原创 垃圾收集(Garbage Collector,GC)

Java的内存分布在JVM中,内存是按照分代进行组织的。其中,堆内存分为年轻代和年老代,非堆内存主要是Permanent区域,主要用于存储一些类的元数据,常量池等信息。而年轻代又分为两种,一种是Eden区域,另外一种是两个大小对等的Survivor区域。之所以将Java内存按照分代进行组织,主要是基于这样一个“弱假设” - 大多数对象都在年轻时候死亡。同时,将内存按照分

2016-11-04 11:02:18 1470

原创 JVM

生命周期  知识点总结:java虚拟机的生命周期,当一个java应用main函数启动时虚拟机也同时被启动,而只有当在虚拟机实例中的所有非守护进程都结束时,java虚拟机实例才结束生命。  一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程

2016-11-03 23:21:25 887

原创 Java 内存模型JMM

参考:java内存模型JMM(Java memory model):通俗地讲,就是描述Java中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这样的底层细节。结合上图,先介绍几个概念:主内存:保存了所有的变量。共享变量:如果一个变量被多个线程使用,那么这个变量会在每个线程的工作内存中保有一个副本,这种变量就是共享变量。工作内

2016-11-03 23:04:12 934

原创 Android 面试常见问题

节约电量的方法http://hukai.me/android-performance-battery/• 实时性不高的程序用AlarmManager的定时轮询操作代替推送操作。android中涉及到将服务器中数据变化信息通知用户一般有两种办法,推送和轮询。消息推送是服务端主动发消息给客户端,因为第一时间知道数据发生变化的是服务器自己,所以推送的优势是实时性高。但服务器主动推送需

2016-11-01 18:20:44 1348

原创 Android开发常用功能

1.定时器的实现(1)采用Handler的postDelayed(Runnable, long)方法Handler handler = new Handler();  Runnable runnable = new Runnable() {            @Override      public void run() {          //你要做的事   

2016-10-31 21:56:37 2668 2

原创 Android 各个Support Library介绍

参考:http://zmywly8866.github.io/2015/10/09/android-support-library.htmlV4 Support Library这个包的名字是:“android-support-v4.jar”,是为Android 1.6(API版本为4)及以上的版本设计的,它包含大部分高版本中有而低版本中没有的API,包括applicat

2016-10-31 13:45:19 3339

原创 Android内存管理

1.Android 运行时的内存分配:http://www.jianshu.com/p/9546d21376ed#物理内存即移动设备上的RAM,当启动一个Android程序时,会启动一个Dalvik VM进程,系统会给它分配固定的内存空间(16M,32M不定),这块内存空间会映射到RAM上某个区域。然后这个Android程序就会运行在这块空间上。Java里会将这块空间分成Stack栈内存和

2016-10-31 12:22:40 580

原创 Android Application

Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在manifest的applicati

2016-10-31 12:17:09 442

原创 Android Context

相信很多人多会问Context到底是什么?·我们可以理解为“上下文”:它贯穿整个应用;·也可以理解成“运行环境”:它提供了一个应用运行所需要的信息,资源,系统服务等;·同样可以理解成“场景”:用户操作和系统交互这一过程就是一个场景,比如Activity之间的切换,服务的启动等都少不了Context。然而以上这些都是我们从抽象角度去理解Context的作用,那么从Code代码来看Co

2016-10-31 12:13:39 504

原创 Android 性能优化

布局优化Android性能优化之如何避免Overdraw(可参考)(1)避免OverdrawOverdraw,过度绘制会浪费很多的cpu,Gpu资源,例如系统默认会绘制Activity的背景,如果在给布局重新绘制了重叠的背景,那么默认的Activity的背景就属于无效的过度绘制。过度绘制(Overdraw)也是很浪费CPU/GPU资源的,系统也提供了检测工具Debug GPU

2016-10-31 11:47:44 2149

原创 Binder机制

参考:Android中的跨进程通信的实现(一)——远程调用过程和aidlAndroid中的Binder机制的简要理解(http://www.linuxidc.com/Linux/2012-07/66195.htm)Android进程间通信(IPC)机制Binder简要介绍和学习计划android在设计理念上强调组件化,组件之间的依赖性很小。我们往往发一个intent请求就可

2016-10-31 11:24:26 604

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除