java基础篇
Cynthia_wpp
互相交流,共同进步!
展开
-
计算机中各进制间的转换
前言:我们生活中习惯上用十进制数来表达数据,然而在计算机中是以二进制数来存储和表达数据的。八进制、十六进制用来缩减二进制数长度,也是经常使用的进制数,下面就来讨论下十进制与二进制、八进制、十六进制数之间的准换问题。一、进制数的表达 十进制数,基数为十,用0~9之间的数表达。例如:6898 二进制数,基数为二,用0、1表达。例如:表达一个byte类型的8 计算机中二进制...原创 2018-03-27 12:07:27 · 11985 阅读 · 0 评论 -
java中静态变量与非静态变量的区别
静态变量与非静态变量的区别如下:1.内存分配静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡;而非静态变量需要被实例化后才会分配内存。2.生存周期静态变量生存周期为应用程序的存在周期;非静态变量的存在周期取决于实例化的类的存在周期。3.调用方式静态变量只能通过“类.静态变量名”调用,类的实例不能调用;非静态变量当该变量所在的类被实例化后,可通过实...原创 2018-09-17 18:33:36 · 1753 阅读 · 0 评论 -
mysql去重
1、使用distinct去重(适合查询整张表的总数)有多个学校+教师投稿,需要统计出作者的总数select count(author) as total from files每个作者都投稿很多,这里有重复的记录。select distinct author from files;有可能两个学校的教师姓名相同,结果只统计一个,出错。select distinct author,sid ...原创 2018-10-03 15:17:36 · 2027 阅读 · 0 评论 -
java为什么要重写hashCode和equals方法
如果不被重写(原生)的hashCode和equals是什么样的?不被重写(原生)的hashCode值是根据内存地址换算出来的一个值。不被重写(原生)的equals方法是严格判断一个对象是否相等的方法 (object1 == object2)。为什么需要重写equals和hashCode方法?在我们的业务系统中判断对象时有时候需要的不是一种严格意义上的相等,而是一种业务上的对象相等。在这种...原创 2018-10-04 10:02:37 · 454 阅读 · 0 评论 -
负载均衡
1.什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。(一)HTTP...原创 2018-10-04 11:31:00 · 153 阅读 · 0 评论 -
同步和异步,区别
同步:同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就中断了。异步:将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启动,你可以关闭浏览器了。然后程序再慢慢地去写入数据库去。这就是异步。但是用户没有卡死的感觉...原创 2018-10-04 21:56:59 · 2578 阅读 · 0 评论 -
Set 对存储对象集合去重,需要重写equals和hashcode
昨天遇到对象去重问题,想当然用Set存储对象,debug的时候发现个数还是没变,所有的都存进来了,百度了一会发现Set是需要重写equals和hashcode的。@Override public boolean equals(Object obj) { if(this==obj){ return true; } if...原创 2018-10-12 16:32:16 · 1324 阅读 · 0 评论 -
Objects的hash()和hashCode()比较
Objects类是Java jdk 1.7开始引入的This class consists of static utility methods for operating on objects. These utilities includenull-safe or null-tolerant methods for computing the hash code of an object, ...原创 2018-10-12 16:36:08 · 5231 阅读 · 0 评论 -
Java中通过ThreadLocal实现线程绑定来传递参数
ThreadLocal的基本理解Threadlocal很多地方都叫线程本地变量,也有很多地方叫线程本地存储,个人理解在业务上方法调用方法时都是在单线程中进行操作,在进行访问数据库时牵扯到事务操作时,因为要求要做到事务的start transaction()和commit()操作都需要同一个connection来执行,而恰巧我们的connection是从线程池中调用的。因此,我们不能保证我们进行事...原创 2018-10-12 23:37:08 · 5577 阅读 · 1 评论 -
创建对像实例的5种方式
1、使用new关键字Dog jack = new Dog();2、使用Class类的newInstance方法Class dogClass = Dog.class; //拿到class Dog的 Class实例对象Dog rose = (Dog) dogClass.newInstance(); //调用Class的实例方法 newInstance()创建Dog的实例对象3、使用Con...原创 2018-10-07 18:41:27 · 260 阅读 · 0 评论 -
HashMap桶中链表转红黑树为什么选择数字8?
在JDK8及以后的版本中,HashMap引入了红黑树结构,其底层的数据结构变成了数组+链表或数组+红黑树。添加元素时,若桶中链表个数超过8,链表会转换成红黑树。 翻了一下HashMap的源码,发现其源码中有这样一段注释:Because TreeNodes are about twice the size of regular nodes, we use them only when bins c...原创 2018-10-08 11:13:16 · 2264 阅读 · 0 评论 -
Eclipse中查看及调整JVM堆内存大小
一、查看堆内存设置路径:Windows > Pregerences > General 勾选右侧窗口的show heap status一项 点击 ok,即可在eclipse右下方看到实时的heap情况二、调整堆内存进入eclipse程序文件夹,打开名称为eclipse.ini的配置文件进行编辑,按需添加或修改如下两项设置:#当堆内存的余量小于40%时,JVM会将内存扩大到...原创 2018-10-08 11:28:38 · 2925 阅读 · 0 评论 -
Java并发——线程池Executor框架
什么是线程池?线程池的概念大家应该都很清楚,帮我们重复管理线程,避免创建大量的线程增加开销。若采用"为每个任务分配一个线程"的方式会存在一些缺陷,尤其是当需要创建大量线程时:①、线程生命周期的开销非常高②、资源消耗③、稳定性引入线程池任务是一组逻辑工作单元,线程则是使任务异步执行的机制。当存在大量并发任务时,创建、销毁线程需要很大的开销,运用线程池可以大大减小开销。Executor...原创 2018-10-15 23:32:30 · 193 阅读 · 0 评论 -
Redis为什么使用单进程单线程方式也这么快
Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差。Redis快的主要原因是:1、完全基于内存2、数据结构简单,对数据操作也简单3、使用多路 I/O 复用模型第一、二点不细讲,主要围绕第三点采用多路 I/O 复用技术来展开。多路 I/O...原创 2018-10-09 19:56:23 · 231 阅读 · 0 评论 -
经典的java多线程死锁例子
一、多个锁之间的嵌套产生死锁。public class DaneLock { public static void main(String[] args) { DieLock d1=new DieLock(true); DieLock d2=new DieLock(false); Thread t1=new Thread(d1); ...原创 2018-05-01 23:11:36 · 10978 阅读 · 0 评论 -
使用javadoc命令制作帮助文档(API)
/** * 计算器工具类 * * @author GaoHuanjie * @version V1.0 */public class ComputerUtil { /* * 减法运算 * * @param a 加数a * @param b 加数b * @return 返回两个整数的和 */ public static int add(int a, in...原创 2018-03-19 22:31:10 · 230 阅读 · 0 评论 -
java语言中数据类型
前言:java语言中数据类型的特征与使用说明。一、java中数据类型的分类 java语言中数据类型可分为基本数据类型与引用数据类型。 ①、基本数据类型:int、short、long、float、double、char、byte、boolean ②、引用数据类型:对象、接口、数组、注解、枚举 二、基本数据类型的用法 ①、整形int、short、long、byte int类型数据 占...原创 2018-03-28 00:08:22 · 1204 阅读 · 0 评论 -
java基础之数组
一、什么是数组 数组是用来存放一组类型相同的(在内存中),空间上内存连续的一组引用数据类型。二、数组的声明 一维数组的定义: 数组元素数据类型[] 数组名 例如:int[] a 二位数组的定义: 数组元素数据类型[] 数组名 例如: int[][] a三、数组的实例化 数组的声明仅仅给出了数组的数据类型和数组名,仅仅是一组引用,如...原创 2018-04-16 00:22:11 · 584 阅读 · 0 评论 -
java语言中变量与常量的定义
前言:变量与常量的定义、区别一、变量与常量的命名规则 ①、变量的定义 ·变量的定义必须严格按照标识符的命名规则,即0~9数字、字母、下滑线、$等组成,且首字母不能是数字、不能是java关键字。 ·首字母必须小写,当有多个单词组成时,后面的单词首字母要大写。 ·变量名一般由名词组成。 ·变量定义:[访问修饰符][修饰符]数据类型 变量名[=初始值]。 eg:public ...原创 2018-03-28 09:51:40 · 1618 阅读 · 0 评论 -
java移位运算符详解
前言:java移位运算符详解移位运算符分类:左移运算符<< 右移运算符>> 无符号位右移>>>一、左移运算符<< ①、书写格式 value<<num 即将value数值转换为二进制后,向左移动num位。高位移除舍去、低位补零。 在移动过程中,short、byte、char类型移位后会变成int型。在in...原创 2018-03-28 11:03:48 · 3177 阅读 · 1 评论 -
java位运算符详解
java位运算符详讲一、位运算符分类 java中位运算符主要有:按位与&、按位或|、按位非~、按位异或^。 在使用时,需要将运算数都转换为二进制再进行运算,若为负数则使用补码表示。二、位运算符使用方式 1、按位与& 使用规则:全一则一,否则为零。 eg:计算7&-5的结果 第一步:byte中的二进制 7的二进制 被除数 ...原创 2018-03-28 11:57:46 · 9776 阅读 · 0 评论 -
java控制执行语句
大多数过程型编程语言都具有某些形式的控制语句,它们通常在语言间是交迭的。java使用了C语言的所有控制语句,在Java中,控制语言涉及的关键字有if-else、while、do-while、for、return、break以及选择语句switch。然而java并不支持goto语句,但在java中仍然可以进行goto形式的跳转,只是加了很多限制。一、else-if语句 ①、语句形...原创 2018-04-03 22:52:08 · 267 阅读 · 0 评论 -
java中charAt与toCharArray以及split用法
一、charAt(i)方法:用于返回字符串中从0开始的第i个字符。 例如: String str="I am String "; charAt(3)=m;二、toCharArray()方法:用于将一个字符串装换成一个字符数组。 例如: String str="I ...原创 2018-04-03 23:49:31 · 1682 阅读 · 0 评论 -
java中random的用法详解
java中存在两个随机函数,它们分别来自java.long.Math.random()和 java.util.Random();其中前者的适用范围比较小,完全可以被后者取代。一、java.lang.Math.random()方法的用法 ①、方法类型: public static double random(); 此方法是一个无参,dou...原创 2018-04-04 10:52:09 · 87946 阅读 · 0 评论 -
常用的排序算法详解
常用的排序算法包括冒泡排序、选择排序、插入排序和快速排序。下面将对这些算法进行详解。一、快速排序 1、基本思想 ①、快速排序算法利用分治策略思想,并与递归相结合。 ②、选取数组中的一个值flag作为基值,第一次循环,使得flag左边的值都小于flag,右边的值都大于或等于flag,基值的选取一般为数组的第一个值。 ...原创 2018-04-06 15:56:54 · 961 阅读 · 0 评论 -
java单例模式之饿汉式、懒汉式
一、单例设计模式是指java中某一个类只有一个实例,并且自行实例化对外提供服务。 1、如何保证对象的唯一性? ①、不允许其它程序使用new方式创建新的实例。 ②、在该类中创建一个唯一的对象实例。 ③、提供方法,共外界调用该实例。 2、步骤: ①、通过new方式私有化该类的一个对象实例。 ②...原创 2018-05-01 22:42:41 · 317 阅读 · 0 评论 -
Synchronized与ReentrantLock的区别
java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。相似点:这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之...原创 2018-10-09 23:52:47 · 300 阅读 · 0 评论