
--------java
说说互联网的那些事
毕业于中山大学,从事互联网电商多年,有着丰富的经验,平时擅长总结互联网技术,分享大厂的面试经验,微信公众号:说说互联网的那些事
展开
-
对象导论
1、抽象过程1.1 抽象的定义:是从众多的事物中抽取出共同的,本质性的特征,舍弃其非本质的特征;比如苹果、香蕉、梨等,它们有一个共同的特征,那就是它们都是水果,在程序中,我们 将其定义为水果类。所以抽象的过程,就是一个裁剪的过程,将不一致的,非本质的,不重要的通通裁剪掉。比如汽车和大米,如果从商品这个抽象体的角度看,价格是它们的共同特征。1.2 抽象的目的:将复杂的问题简单化,降低复杂度。原创 2017-03-14 23:58:10 · 534 阅读 · 0 评论 -
[JAVA]从链表中删除重复数据(时间、空间)
一、从链表中删除重复数据1)方法一(空间换取时间)1、思路:利用hashmap来存储数据,当在hashmap中存在跳过这个数据,当不存在时,将这个数加入hashmap中其事件复杂度是O(n),但是付出了空间复杂度2、代码:public void delDuplicateNum(LinkList list){ HashMap map=new HashMap();原创 2016-08-14 22:48:12 · 1966 阅读 · 0 评论 -
Hashmap为什么容量是2的幂次,什么是负载因子
本文来自:高爽|Coder,原文地址:http://blog.youkuaiyun.com/ghsau/article/details/16843543,转载请注明。 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构,我们总会在不经意间用到它,很大程度上方便了我们日常开发。在很多Java的笔试题中也会被问到,最常见的,“HashMap和HashTabl转载 2016-08-13 12:13:46 · 872 阅读 · 0 评论 -
HashTable中的线程同步
使用 Hashtable.Synchronized包装的HashTable,针对多个写线程,或者多个读线程是线程安全的,但是针对又有度线程,又有写情况,是不安全的。Hashtable table2 = Hashtable.Synchronized(new Hashtable());//线程安全的。使用Lock(table2)也是一样的情况针对多个写线程,或者多个读线程是线程安全的,但是针对又有度线原创 2016-08-11 21:53:55 · 1034 阅读 · 0 评论 -
java提高篇-----理解java的三大特性之多态
面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开:转载 2016-08-23 22:39:19 · 409 阅读 · 0 评论 -
接口中定义变量必须为public static final的原因
在interface里面的变量默认都是public static final 的。所以可以直接省略修饰符:String param="ssm";//变量需要初始化 为什么接口要规定成员变量必须是public static final的呢? 答:首先接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是publ转载 2016-08-23 17:08:46 · 965 阅读 · 0 评论 -
前置++和后置++的区别
今天在阅读《google c++ 编程风格》的文档的时候,5.10. 前置自增和自减:有一句话引起了我的注意:对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.,理由是 前置自增 (++i) 通常要比后置自增 (i++) 效率更高。于是我查了查前置++和后置++的区别。注意:《more effective c++》条款8也专门叙述了问题。后来我发现,下面的文章基本就是转载 2016-08-23 16:43:14 · 3204 阅读 · 0 评论 -
笔试
具体题目忘了,大概提议是给一串红包,比如:3,4,5,7,9;第一个和最后一个不能同时出现,任意取任意数的红包,但是相邻的红包不能取,求取得最大的红包的和import java.util.Scanner;public class Main{ static int pos1,pos2; public static void main(String[] args)原创 2016-09-13 10:33:47 · 251 阅读 · 0 评论 -
JVM学习之-JVM内存结构
1.1 JVM运行ClassLoader->RUNNTIME DATA AREA->EXECUTION ENGINE->NATIVE INTERFACE->NATIVE LIBRARIESClass Loader:负责加载类到内存RUNNTIME DATA AREA:负责EXECUTION ENGINE: 解释器Interpreter,负责解释命令,提交到操作系统NA转载 2016-08-22 17:48:16 · 218 阅读 · 0 评论 -
找出单链表的倒数第k个元素
一、思路:有两个指针分别向LinkList,它们分别是 low,height;先是height先向前移动k个位置,然后low和height一起向前移动,一直到height到达链表的末尾,这是low所指的位置就是倒是第k个元素,考虑到的边界值有kLinkList的长度的时候或者LinkList为空的时候。二、代码:public LinkList kNum(LinkList list,in原创 2016-08-14 23:36:40 · 369 阅读 · 0 评论 -
实现链表的反转
一、思路:顺序遍历链表,依次取出一个node,插入新的链表,使用的是头插法二、代码:public LinkList reverseList(LinkList head){ if(head==null) return null; LinkList list=head; LinkList preList=null; while(list原创 2016-08-15 00:07:29 · 254 阅读 · 0 评论 -
【使用线程池的好处】多线程的环境中,尽量采用线程池
在什么情况下使用线程池? 1.单个任务处理的时间比较短 2.将需处理的任务的数量大使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。==============================原创 2017-02-05 16:39:42 · 2120 阅读 · 0 评论 -
【思维导图】java核心基础知识点总结
原创 2017-02-22 11:37:31 · 1616 阅读 · 0 评论 -
Java中的equals和hashCode方法详解
Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这两个方法,今天就来介绍一些这两个方法的作用。equals()和hashCode()方法是用来在同一类中做比较用的,尤其是在容器里如set存放同一类对象时用来判断放入的对象是否重复。这里我们首先要明白一个问题:转载 2017-02-21 18:12:20 · 299 阅读 · 0 评论 -
java类初始化顺序
我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点: public class InitialOrderTest { // 静态变量 public static String staticField =转载 2017-02-19 17:47:21 · 340 阅读 · 1 评论 -
java中实现类似函数指针的功能
可以用接口实现:[java] view plain copy public class FunctionPointerTest { public static void main(String... args){ Player[] players = new Player[5]; for(in转载 2017-02-19 17:32:00 · 4255 阅读 · 0 评论 -
java创建对象的几种方法
1、通过new语句实例化一个对象2、通过放射机制创建一个对象3、通过clone()方法创建一个对象4、通过反序列化的方式创建对象原创 2017-02-19 17:11:28 · 404 阅读 · 0 评论 -
什么是java反射机制
1反射机制是什么反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。2反射机制能做什么反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类; 在运行时构造任意一个类的对象; 在运行时判断任意一个类所...转载 2017-02-19 17:08:29 · 1214 阅读 · 0 评论 -
java反射机制的作用与优点
java的反射机制就是增加程序的灵活性,避免将程序写死到代码里,例如: 实例化一个 person()对象, 不使用反射, new person(); 如果想变成 实例化 其他类, 那么必须修改源代码,并重新编译。 使用反射: class.forName("person").newInstance(); 而且这个类描述可以写到配置文件中,如 **.xml, 这样如果想实例化其他类,只要转载 2017-02-19 17:07:10 · 253 阅读 · 0 评论 -
clone()与New的区别
首先要一个类有clone()复制方法,必须实现一个接口Cloneableclass CloneClass implements Cloneable{ public int aInt; public Object clone(){ CloneClass o = null; try{ o = (CloneClass)super.clone(); }转载 2017-02-18 17:45:46 · 2118 阅读 · 0 评论 -
HTTP 报文格式
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。 (1)请求行请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔转载 2016-08-22 15:56:31 · 295 阅读 · 0 评论 -
HashMap、HashTable、TreeMap 深入分析及源码解析
在Java的集合中Map接口的实现实例中用的比较多的就是HashMap,今天我们一起来学学HashMap,顺便学学和他有关联的HashTable、HashTree 在写文章的时候各种问题搞得我有点迷糊尤其是csdn中放的java代码显示了乱七八糟的东西搞得 写了两次,可能有些东西写错了…… 希望大家指正一、HashMap 1、基于哈希表的 Map 接口的实现。此实现转载 2016-08-22 11:17:08 · 334 阅读 · 0 评论 -
java与C++的区别
java语言和C++语言依然是目前的主流语言,这两个语言之所以能够占据程序语言的排行榜首,而且存活的时间这么长,并且作为主流的开发语言,是由于它们的创新性造成的废话不多说了,接下来比较下java与c++的区别(1)java是解释型语言,它先编译成字节码,再由jvm解释运行,由于字节码具有平台无关性,所以可以实现一次编译到处运行。C++是编译型语言,源码经过编译和链接后生成可执行的二进制代码原创 2016-08-16 12:03:13 · 359 阅读 · 0 评论 -
详细介绍java的可移植性
一、在详细介绍java的可移植性之前,先自问自大几个问题1)什么叫做软件的可移植性?软件的可移植性指的是软件从一个环境转移到另一个环境的难易程度。2)如何实现具有较高的可移植性高呢?使用通用的设计语言和运行支撑环境,较少使用与系统底层相关的语言3)可移植性与跨平台有什么区别?可移植性的环境包括了软件环境、硬件环境和系统组织环境,平台无关性指的是操作系统无关性。····原创 2016-08-15 17:59:17 · 8372 阅读 · 2 评论 -
371. Sum of Two Integers
题意:实现两个数相加,但是不是用+或者-代码实现:int sum=a; int carry=b; while(carry!=0){ int temp=sum^carry; carry=(sum&carry) sum=temp; } return sum;解题思路:不用加号,那只能用&或者^原创 2016-07-20 00:13:33 · 295 阅读 · 0 评论 -
winform和webform有什么区别
winform是窗体模式,就是我们打开我的电脑那种模式webform是浏览器模式,就是我们上网,打开浏览器那种模式。winform之间传值比较麻烦,webform很简单。wibform运行需要一大堆运行库,webform只需运行在服务器,然后客户端只需一个浏览器就可以运行。原创 2016-07-27 14:10:34 · 10229 阅读 · 0 评论 -
winform和webform有什么区别
winform是窗体模式,就是我们打开我的电脑那种模式webform是浏览器模式,就是我们上网,打开浏览器那种模式。winform之间传值比较麻烦,webform很简单。wibform运行需要一大堆运行库,webform只需运行在服务器,然后客户端只需一个浏览器就可以运行。原创 2016-07-27 14:09:43 · 3479 阅读 · 0 评论 -
java的一些不同于其它语言的特点
(1)java确定每个基本类型所占有的存储空间的大小,它们的大小不像其他语言一样,随着机器硬件架构的变化而变化,这种存储空间大小的不变性是java程序比用其他编程的程序更具有可移植性(2)C/C++中的数组存储在内存块中,如果一个程序要访问其自身内存块之外的数组,或在数组初始化前使用内存,都会产生难以预料的后果。java确保这两种情况不会发生,java的这种检查代价换来安全性和效率的提高。原创 2016-05-21 22:40:52 · 649 阅读 · 0 评论 -
对象引用与对象的区别
初学Java时,在很长一段时间里,总觉得基本概念很模糊。后来才知道,在许多Java书中,把对象和对象的引用混为一谈。可是,如果我分不清对象与对象引用,那实在没法很好地理解下面的面向对象技术。把自己的一点认识写下来,或许能让初学Java的朋友们少走一点弯路。 为便于说明,我们先定义一个简单的类: class Vehicle {int passengers;原创 2016-06-08 17:16:45 · 307 阅读 · 0 评论 -
【已解决】Eclipse的java代码出错:The import org.apache cannot be resolved
http://www.crifan.com/java_eclipse_the_import_org_apache_cannot_be_resolved/原创 2016-05-11 10:16:41 · 9102 阅读 · 0 评论 -
java 刷题
(1)数组1)数组长度array.length 第一维的长度array[0].length 第二维的长度(当然这个array数组中要有元素,不然取array[0]就会报错的)(2)原创 2016-08-10 14:15:35 · 448 阅读 · 0 评论 -
[java]倒序输出字符串
一、题目:给字符串str,将其倒序。例如“abcdef”变为“fedcba”,要求空间复杂度为O(1).二、代码:public String reverseStr(String str){ int len=str.length(); if(len==0) return null; String strReslt=""; for(in原创 2016-08-16 18:25:34 · 552 阅读 · 0 评论 -
哈希算法为什么存取速度快?
哈希算法存取之所以快,是因为其直接通过关键字key得到要存取的记录内存存储位置试想这样的场景,你很想学太极拳,听说学校有个叫张三丰的人打得特别好,于是你到学校学生处找人,学生处的工作人员可能会拿出学生名单,一个一个的查找,最终告诉你,学校没这个人,并说张三丰几百年前就已经在武当山作古了。可如果你找对了人,比如在操场上找那些爱运动的同学,人家会告诉你,"哦,你找张三丰呀,有有有,我带你去。原创 2016-08-06 23:04:09 · 6207 阅读 · 2 评论 -
常用容器制定初始化容量
前面在javaSe中我已经整理了相关的一些数据结构,现在就性能方面在这里做一个总结。以后在实际编码中,应该按照这样子来初始化相关的数据结构。1,StringBuffer和StringBuilderStringBuffer() 构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。StringBuffer(int capac转载 2016-08-22 00:15:52 · 339 阅读 · 0 评论 -
java中String、StringBuffer、StringBuilder的区别
java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。 private final char valu转载 2016-08-21 23:34:25 · 231 阅读 · 0 评论 -
谈谈你对SSH框架的理解——来自IBM的一道面试题
1. 介绍SSH,谈谈自己的观点。SSH(Struts,Spring,Hibernate) Struts进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装!Struts是一个在JSP Model2基础上实现的MVC框架,主要分为模型(Model)、视图(Viewer)和控制器(Controller)三部分,其主要的设计理念是通过控制器将表现逻辑和业务逻辑转载 2016-08-20 11:34:18 · 6600 阅读 · 1 评论 -
HashMap分析及散列的冲突处理
1,Hashing过程像二分查找、AVL树查找,这些查找算法的时间复杂度为O(logn),而对于哈希表而言,我们一般说它的查找时间复杂度为O(1)。那它是怎么实现的呢?这就是一个Hashing过程。在JAVA中,每个对象都有一个散列码,它是由Object类的hashCode()方法计算得到的(当然也可以覆盖Object的hashCode())。而我们可以在散列码的基础上,定义一个哈转载 2016-08-20 11:10:41 · 272 阅读 · 0 评论 -
一个经典例子让你彻彻底底理解java回调机制
转帖请注明本文出自xiaanming的博客(http://blog.youkuaiyun.com/xiaanming/article/details/17483273),请尊重他人的辛勤劳动成果,谢谢以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中转载 2016-08-20 09:16:08 · 10830 阅读 · 1 评论 -
回调函数
函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。原创 2016-08-19 23:58:47 · 209 阅读 · 0 评论 -
Java多线程学习(吐血超详细总结)
Java多线程学习(吐血超详细总结) 林炳文Evankaka原创作品。转载请注明出处http://blog.youkuaiyun.com/evankaka 目录(?)[-]一扩展javalangThread类二实现javalangRunnable接口三Thread和Runnable的区别四线程状态转换五线程调度六常用函数说明转载 2016-08-19 23:56:02 · 361 阅读 · 0 评论