自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

林竹清_清清清

怎样才能变得平凡,求攻略,在线等~

  • 博客(43)
  • 资源 (10)
  • 收藏
  • 关注

原创 BIO与NIO、AIO的区别

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO同步阻塞     在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直

2017-06-29 17:06:52 291

原创 socket例子

客户端发送的数据能回显相同的数据一、基于UDP的简单通信程序接收端import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class ReceiveDemo { public static void m

2017-06-29 16:25:22 197

原创 Java网络编程

一、InetAddress InetAddress类来代表IP地址,2个子类:Inet4Address, Inet6Address,它们分别代表IPv4地址和IPv6地址。InetAddress类没有构造器,而是提供了两个静态方法来获取InetAddress实例:1、getByName(String host):根据主机获取对应的InetAddress对象。2、getByAdd

2017-06-29 15:54:50 304

原创 值传递和引用传递

值传递:(形参类型是基本数据类型):方法调用时,实参把它的值传给形参,形参只是用实参的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形参值的改变不影响实参的值。引用传递:(形参类型是引用数据类型参数):方法调用时,实参是对象(或数组),这时实参与形参指向同一存储单元,因此对形参的修改实际就是对实参的修改。下面举例说明:传值---传递基本数据类型参数

2017-06-29 11:26:06 485

原创 Class类

一、认识Class类 反射机制允许在运行时发现和使用类型的信息。在Java中用来表示运行时类型信息的对应类就是Class类,也继承Object类其内声明了数个应该在所有Java类中被改写的方法:hashCode()、equals()、clone()、toString()、getClass()等。其中getClass()返回一个Class类的对象。Class类样继承自Object,其实体用以

2017-06-29 10:52:58 578

原创 面向对象和面向过程

(1)面向对象和面向过程的区别:面向对象就是将问题尽可能抽象化,让其抽象程度更高,使得程序的可复用性更高。面向过程以事件本身为中心,自顶向下顺序执行、逐步解决。例如:比如要实现一个计算器(加减乘除)面向过程:我们可能直接就写一个main函数。然后就开始定义一些数据结构,然后就开始写add,sub,multi,div等函数,去实现功能面向对象:我们会先定义一个Calcul

2017-06-29 10:09:37 206

原创 Java反射机制

Java反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。(1)JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用对象的任意一个方法和属性;这种动态获取的信息以及动态调用对象方法的功能称为java语言的反射机制。主要功能:在运行时:判断任意一个对象所属的类,构造任意一个类的对象,判断任意一个类所具

2017-06-29 09:23:26 242

原创 JDBC访问及相关问题

1、加载JDBC驱动程序:       加载想要连接的数据库的驱动到,这通过java.lang.Class类的静态方法forName(String  className)实现, Class.forName("com.mysql.jdbc.Driver") ;      成功加载后,会将Driver类的实例注册到DriverManager类中。     2、相关URL  St

2017-06-27 17:41:45 306

原创 Cllection和Cllections区别

1、java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。 Collection   ├List   │├LinkedList   │├ArrayList   │└Vector   │ 

2017-06-27 15:55:07 1333

原创 *内存泄漏和内存溢出

(1)内存泄漏和内存溢出内存泄漏:分配出去的内存无法回收(不再使用的对象或者变量仍占内存空间),在Java中内存泄漏就是存在一些被分配的对象(可达的,却是无用的)无法被gc回收。内存溢出:程序要求的内存超出了系统所能分配的范围(比如:栈满还入栈出现上溢,栈空还出栈出现下溢)可以看出内存泄漏是内存溢出的一种诱因,但不是唯一因素。(2)Java存在内存泄漏:Java判断内

2017-06-27 14:03:20 8839 1

原创 关于finally

用于异常处理(1)try/catch中有return,finally在return之前执行。(2)Finally不一定会执行:1)在跟着的try块之前出现异常(如 int x=5/0;),那么这个finally就不执行2)在try或者catch中有System.exit()强行退出,finally也不执行。(3)如果finally里有return语句,它会覆盖掉try或者cat

2017-06-27 09:32:36 424 1

原创 不可变类

(1)不可变类:创建了这个类的实例后,就不允许改变他的值,即一个对象一旦被创建,在整个生命周期中,他的成员变量就不能被修改。在Java中包装类Integer、Long就是不可变类,String也是不可变类。设计简单、线程安全。(2)不可变类遵守4条基本原则:1)类中成员都用private修饰2)没有修改成员的方法,如setXXX(),只提供构造器,一次生成不改变。3)类中方法不

2017-06-27 09:02:44 309

原创 Arrays.asList

在Java--Collection和Map中有提到固定长度的List。List list= Arrays.asList(...)时说过,这个list不是ArrayList的实例,而是Arrays类有个静态内部类ArrayList的实例,它只允许访问元素(get、set、contains),不允许增删修改。注意以下例子:String s[]={"aa","bb","cc"}; Lis

2017-06-23 20:29:45 262

原创 CountDownLatch同步计数器

CountDownLatch类是一个同步计数器可看作一个倒计数的锁存器,构造时传入初始值int参数,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞程序继续执行。当计数减至0时触发特定的事件。利用这种特性,可以让主线程等待子线程的结束。 应用场景是:一个任务想要往下执行,但要等到其他的任务执行完毕后才可以继续往下执行。假如我们这个想要继续往下执行

2017-06-23 14:44:40 249

原创 深入理解String和intern方法

定义字符串:String str=”abc”;  和String str=new String(“abc”); 的区别:String str="abc"; String str1=new String("abc");String str2="abc"; System.out.println(str); System.out.println(str1)

2017-06-23 11:12:40 453

转载 JProfiler的详细使用介绍(JVM对象内存线程监测工具)

一、安装JProfiler       从http://www.ej-technologies.com/下载5.1.2并申请试用序列号 二、主要功能简介1.内存剖析 Memory profilerJProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回

2017-06-23 10:11:29 2115

原创 触发Full GC及应对策略

堆内存划分为新生代和老年代空间。从新生代( Eden 和 2个Survivor)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC(新生、老年、永久)是对整个堆来说的,包括了对永久代即方法区的回收(JDK8中无永久代),出现Full GC的时候经常伴随至少一次的Minor GC,但非绝对的。Major GC的速度一般会比Minor GC慢10倍以上。 二、

2017-06-23 09:44:36 652

原创 JVM中类的卸载机制

类的生命周期  加载、连接(验证、准备、解析)、初始化、使用、卸载当Sample类被加载、连接和初始化后,它的生命周期就开始了。  当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,Sample类在方法区内的数据也会被卸载,从而结束Sample类的生命周期。  由此可见,一个类何时结束生命周期,取决于代表它的Class对象

2017-06-22 17:07:43 1119

原创 IO流

流的抽象基类:InputStream、OutputStream、Reader、Writer 分类: (1)字符流和字节流:字节流数据单元8bit;  字符流数据单元16bit(2)节点流节点流程序直接和实际数据(物理)相连,比如FileInputStream、FileReader、类型字符流字节流File(文件)

2017-06-16 10:30:43 184

原创 序列化与反序列化

1、对象的序列化主要有用途:  1)把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;  2)在网络上传送对象的字节序列。3)深克隆实现方式  在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是We

2017-06-16 10:10:50 296

原创 Java异常处理机制

1、Throwable类Throwable:有两个重要的子类:Exception(异常)和Error(错误)Error(错误):是程序无法处理的错误,一般与JVM相关的问题。如Java虚拟机运行错误(VirtualMachineError),这些错误是不可查的。Exception(异常):是程序本身可以处理的异常。Exception分为运行时异常和

2017-06-14 16:42:17 328 1

原创 *String,StringBuffer,StringBuilder

1.可变与不可变  String:字符串常量。中使用字符数组保存字符串,因为有“final”修饰符,所以可以知道string对象是不可变的。privatefinalcharvalue[];StringBuilder与StringBuffer:字符串变量。都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,可知

2017-06-14 15:30:48 315

原创 接口和抽象类

接口和抽象类相同点(1)接口和抽象类都不能被实例化,它们都位于继承树的顶端。(2)都包含抽象方法,实现接口或继承抽象类的方法必须实现这些抽象方法。不同点(非常重要)(1)接口里只能包含抽象方法、Java8允许静态方法和默认方法,不能包含普通方法,而抽象类里可以包含普通方法。(2)接口中只能定义静态常量(static final)不能定义普通成员,而抽

2017-06-14 15:11:33 223

原创 垃圾回收与finalize

垃圾回收垃圾回收机制具有如下特征: (1)垃圾回收机制只负责回收对内存中的对象,不会回收任何物理资源(例如数据库连接、网络IO等资源)。 (2)程序无法精确控制垃圾回收的运行,垃圾回收会在合适的时候进行。当对象永久性地失去引用后,系统就会在合适的时候回收它所占的内存。 (3)在垃圾回收机制回收任何对象之前,总是先调用它的finalize()方法,该方法可能使该对象重新复活(让一

2017-06-14 14:51:13 720

原创 Java浅克隆深克隆

1.⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。⑵深复制(深克隆)被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用

2017-06-14 10:31:20 389

原创 初始化块与静态初始化块

1、初始化块(构造代码块):(1)作用:给对象进行初始化。对象一建立就运行,且优先于构造函数的运行。(2)与构造函数的区别:初始化块给所有对象进行统一初始化,构造函数只给对应对象初始化。是Java在创建对象时隐示执行的,在Javac编译后初始化块内代码会被还原到构造器里,而且在最前面。先执行父类初始化块后子类的。(3)应用:不接受参数,将所有构造函数共性的东西定义在构造代码块中。

2017-06-13 17:03:29 2482

原创 Java多态

1、多态:相同类型的变量调用同一个方法时表现出不同的行为特征,即编译时期和运行时期的情况不一样。2、多态实现:继承父类并重写其中的一些方法。3、Person类name, eat(),drink()成员和方法,子类Man中有name,并重写eat talk方法;对于 Person m=new Man()(1)成员变量不具有多态性,m.name实际上是person中的name(2)

2017-06-13 16:32:20 195

原创 Java数据类型值得注意的几点

数据类型里值得注意的:(1)19/4=4;(2)/两个整型相除,除数不可以为0;如果有一个是浮点数允许除数是0或0.0,结果为正无穷大或负无穷大。(3)%两个整型取余 除数不可为0;如果有一个是浮点数允许除数为0或0.0,结果为NaN非数。(4)运算符优先级:单目(++ -- -负 ! ~)从右向左结合;按位&^|排在&&前面;优先级较低的?:也是从右向左结合;复制= += *=从

2017-06-13 14:34:36 304

原创 对象是否存活

(1)引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器减1;任何时刻计数器都为0的对象就是不可能再被使用的。实现简单,判断效率高,Java没有选用主要因为它很难解决对象相互循环引用的问题。Java采用的方式:(1)可达性分析:"GCRoots"的对象作为起始点,从这些节点开始向下搜索,当一个对象到GCRoots没有任何引用链相连时,则

2017-06-11 20:42:01 277

原创 对象的内存布局和访问方式

1、对象的内存布局:(1)对象头(对象的设置信息、指向类元数据的指针、数组的长度)(2)实际数据(因虚拟机而异hotspot:longdouble,int,short/char,byte/boolean,oop,即相同宽度的字段分配到一起,然后父类的变量在子类之前。)(3)对象填充(8的整数倍)2、对象访问方式:取决于虚拟机实现,主流的方式有使用句柄和直接指针句柄:指针的指

2017-06-11 20:08:14 257

原创 *对象的创建

创建对象语句Clazzinstance=newClazz();包含的主要过程包括了类加载检查、对象分配内存、并发处理、内存空间初始化、对象设置、执行init方法等。主要流程如下:1.类加载检查JVM遇到一条new指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类的加

2017-06-11 19:29:51 343

原创 spring和spring boot 相关面试题目

Spring面试题目汇总:1.spring的controller是单例还是多例?默认是单例的。优点:高性能,单例不用每次都new,当然快了缺点:单例是不安全的,会导致属性重复使用。最佳使用:不要在controller中定义成员变量。2.如何将controller设置成多例呢?(1).xml中controllerbean的scope属性设置成prototype:原型

2017-06-07 17:15:26 263

原创 spring mvc和struts2区别

1. 机制:spring mvc的入口是servlet,而struts2是filter,这样就导致了二者的机制不同。   2. 性能:spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性,而spring基于方法,粒度更细,但要小心把握像在servlet控制数据

2017-06-07 16:32:13 597

原创 ***spring mvc

1.SpringMVC概述:SpringMVC是由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。他的两个核心:处理器映射:选择使用哪个控制器来处理请求,视图解析器:选择结果应该如何渲染,通过以上两点,SpringMVC保证了如何选择控制处理请求和如何选择视图展现输出之间的松耦合。Spring框架是高度可配置的,而且包含多种视图技术,例如J

2017-06-07 15:48:26 994

原创 Web排行榜相关排序算法总结

资讯、成就值排序算法1、通用的排序算法(1)单位时间的交互数(每小时更新一次)(2)总交互数(3)评论数加权(4)按时间排序设计带权score函数,涉及:交互数、点赞数、点踩数、评论数、浏览数、时间,点赞很容易 权值应该小,写评论往往不多 权值应该稍大(比如微博点赞很多 发博人稍少 写博客的更少 所以权值不能相同)实现算法:找出参与排序的元素,利用Redis里面的sor

2017-06-07 10:02:41 2568

原创 JedisPool

如果有一条线程调用阻塞式操作 比如 blpop(如果list中有元素就pop 没有会阻塞),Redis是单线程的,如果调用blpop的线程出现阻塞,那么其他线程是无法对list进行操作的。所以就有了JedisPoolJedisPool pool=new JedisPool(); for(int i=0;i<100;i++){ Jedis j=pool.getResource(

2017-06-02 11:28:30 993

转载 智能人机交互在电商领域的技术实践 ——阿里小蜜

智能人机交互领域的介绍行业分类及目前的应用状况原博在全球人工智能领域不断发展的今天,包括Google、Facebook、Microsoft、Amazon、Apple等互联网公司相继推出了自己的智能私人助理和机器人平台。智能人机交互通过拟人化的交互体验逐步在智能客服、任务助理、智能家居、智能硬件、互动聊天等领域发挥巨大的作用和价值。因此,各大公司都将智能聊天机器人作为未来

2017-06-02 10:14:30 3994

原创 Jedis里SortedSet相关操作

Jedis里的SortedSet 可以理解为有序集合或者优先队列,每个key都是有分值的,所以可以应用于排行榜或者某个用户的成就值 成就排名之类的关于分值排行相关当然index也都是从0开始的,-1结尾的,有双向性,默认排名是从小到大Jedis jedis=new Jedis(); jedis.flushAll();//清空 /* * SortedSet有序集合(优先队

2017-06-02 10:10:36 2256

原创 Jedis中Set集合

Set集合:sXXX方法涉及到离散数学中提到的 集合的交、并、差等操作以及删除 显示等基本操作,举例应用两个用户的共同好友、共同关注就是两个集合的交;再如微博上的点赞操作也可以理解为集合操作,如果点赞就用户就存在集合中通过sismember操作返回true,此时显示点亮图标,如果返回FALSE证明没在集合中没点赞。 /* * 集合Set,比如共同好友 共同关注之类的可以应用

2017-06-01 21:33:55 4881

原创 Jedis中hset散列相关操作

Redis的是kv数据库,对于value可以是以下几种情况哈希应用:在开发过程中,有些字段是临时的或者是开发后期才想到的,就直接添加进去(在设计开发过程中没有想好,比如小明在上学前没有学校字段,但上学后有学校字段) 可以利用哈希扩展。 /* * hashset * 对于某些不定项操作可以利用哈希扩展 */ String userKey="user12"

2017-06-01 20:55:40 127639 6

Velocity文档中文版

Velocity文档中文版

2017-05-26

fiddler监控插件

fiddler web debugger

2017-05-25

JavaCV文档

Java cv文档

2017-03-24

JDK1.6文档

JDK文档中文版

2017-03-24

算法导论第三版课后答案

算法导论这本书是计算机专业学生们必掌握的书籍,在此上传课后答案

2017-03-10

你应该更新的Java知识

你应该知道的关于Java知识的更新,可以了解一下。

2015-08-20

荣耀3c刷机

新发布的华为荣耀3c刷机包,emui3.0,Android4.4.2,刷机很easy

2014-11-17

数据挖掘资料

英文PPT 初学者很有用 而且里面例子很基础很容易理解 涉及到分类、聚类等的很多算法与实现过程。

2014-06-12

数据挖掘朴素贝叶斯分类

数据挖掘上机作业 实现朴素贝叶斯简单分类

2014-06-12

空空如也

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

TA关注的人

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