JAVA
wlisonate
坚持手撸代码
展开
-
深入剖析ThreadLocal实现原理以及内存泄漏问题
本文链接:https://blog.csdn.net/LHQJ1992/article/details/52451136一、概述在2017京东校园招聘笔试题中遇到了描述ThreadLocal的实现原理和内存泄漏的问题,之前看过ThreadLocal的实现原理,但是网上有很多文章将的很乱,其中有很多文章将ThreadLocal与线程同步机制混为一谈,特别注意的是ThreadLocal与线程同步无关,并不是为了解决多线程共享变量问题!ThreadLocal官网解释: This class prov.原创 2020-06-05 22:32:46 · 302 阅读 · 0 评论 -
【Java学习】强引用,弱引用,软引用和幽灵引用
Java在JDK1.2之后对引用的概念进行了扩充,引入了四种不同的引用。 强引用 只有强引用存在,垃圾回收器就永远不会回收调被引用的对象。使用new来创建一个新对象的方式来创建强引用。看下面这样的例子static Object object = new Object(); /** * 强引用 */ public static void testStrongReference(){ Object obj = object;原创 2020-05-08 22:33:21 · 227 阅读 · 0 评论 -
【Java学习】preparedstatement 处理机制
1. 使用PreparedStatement有什么样的优势?PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement(sql)方法可以获得PreparedStatment对象。数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,这条预编译的sql查询语...原创 2020-05-08 00:17:28 · 1085 阅读 · 0 评论 -
【Java学习】Integer.ValueOf()引发的血案
这道题有的人或许做过,也可能选对,但是这其中的道理你却不一定理解,在这里大牛走过,小白留下一起学习。先来分析选型A,Integer i01 = 59,是一个装箱的过程,在进行i01 == i02的比较过程中,因为右边是整型,发生了拆箱的动作,所以进行了值得比较,所以返回true。在这里拿出Integer a = 59,Integer b = 59,这种又会出现什么状况呢,如果按照...原创 2020-04-21 15:33:08 · 2199 阅读 · 0 评论 -
【Java学习】快速失败(fail-fast)和安全失败(fail-safe)
1.快速失败和安全失败的区别Iterator的安全失败是基于对底层集合做拷贝,因此,它不受源集合上修改的影响。java.util包下面的所有的集合类都是快速失败的,而java.util.concurrent包下面的所有的类都是安全失败的。快速失败的迭代器会抛出ConcurrentModificationException异常,而安全失败的迭代器永远不会抛出这样的异常。2.快速失败的例子...原创 2020-04-13 00:12:31 · 385 阅读 · 0 评论 -
[Java]ExecutorService的正确关闭方法(优雅的关闭,来自日本程序员)
原文地址如下:http://gurimmer.lolipop.jp/daihakken/2012/01/27/javaexecutorserviceの正しい終了shutdownの仕方/虽然使用ExecutorService可以让线程处理变的很简单,可是有没有人觉得在结束线程运行时候只调用shutdown方法就可以了?实际上,只调用shutdown方法的是不够的。我们用学校的老师和学...转载 2020-04-10 17:41:45 · 2063 阅读 · 0 评论 -
【Java】二维数组的遍历
/** * ⊙﹏⊙&&&&&&⊙▽⊙ * * @Auther: pangchenbo * @Date: 2020/4/8 08:25 * @Description: */public class PrintfArray { public static void main(String[] args) { int...原创 2020-04-08 08:33:24 · 231 阅读 · 0 评论 -
【Java学习】高并发入门学习(一)
由于分布式系统的问世,高并发(High Concurrency)通常是指通过设计保证系统能够同时并行处理很多请求。通俗来讲,高并发是指在同一个时间点,有很多用户同时的访问同一 API 接口或者 Url 地址。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。高并发一直是中型以上系统必须面临的问题,也是面试官爱问的题型,一个能处理高并发问题的程序员就被称作比较高阶的程序员了,所以这是你成为架...原创 2019-11-08 22:17:10 · 558 阅读 · 0 评论 -
【Java学习】UDP协议与TCP协议再学习并讲述三次“握手”和四次“挥手”
先来讲TCP协议:TCP协议的主要特点TCP协议是面向连接的运输层协议。这就是说,应用在使用TCP协议之前,必须建立连接。在数据完成传输之后,必须释放已经建立的连接。 每一条TCP协议连接只能有两个端点,每一条TCP协议都是点对点的。 TCP协议提供可靠交付的服务,通过TCP连接传送的数据,无差错丶不丢失丶不重复,能够按需到达。 TCP协议提供全双工通信。TCP协议连接的两端都有发送缓...原创 2019-11-03 17:19:24 · 143 阅读 · 0 评论 -
【Java学习】10分钟带你玩转Synchronized的用法
最近在写代码的时候被同学问到多线程的问题,虽然最后用Synchronized包裹同步代码块解决了,但是感觉这块学的很肤浅,所以重新拿起来继续学习学习,在看了许多大牛的博客之后,突然恍然大悟,原来Synchronized还可以这么玩,哈哈,感谢大牛激情的分享,让我学到很多。@这绝对是大佬,算了不夸了,大家是来学习知识的,让我们细细品。。synchronized是Java中的关键字,是一种同步锁。...原创 2019-11-03 00:43:22 · 240 阅读 · 0 评论 -
【Java学习】抽象类实现接口的好处和意义
抽象类和接口是两个非常相似的类型,许多人认为这俩可以互相换着用,他们既有相似的地方,也有不同的地方,本文将带你梳理这些误区,而且用实际代码告诉你抽象类实现接口会多么的有用。先来熟悉接口与抽象类的区别:语法层面的区别1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public s...原创 2019-10-31 20:02:17 · 3605 阅读 · 0 评论 -
【JAVA学习】阿里云短信验证接入过程详解(附jar包下载地址)
1,首先你得新建一个maven项目,在项目中的pom文件中导入依赖。<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.2.3</v...原创 2019-10-29 22:09:45 · 4803 阅读 · 3 评论 -
【Java学习】如何解决从文件读取乱码问题
文件读取乱码出现是一件非常烦人的事情,你明明代码没有问题,但是就是出现乱码了,你说能不恼人吗?所以本文致力于帮你从此解决乱码问题,让你过上快乐的生活。话不多说,先看下面的代码:package com.company;import java.io.*;/** * ⊙﹏⊙&&&&&&⊙▽⊙ * * @Auther: pangche...原创 2019-10-29 19:12:44 · 812 阅读 · 0 评论 -
【Java学习】时间戳与Date的相互转化
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。 在实际应用上, 它可以使用在包括电子商务、 金融活动的各个方面, 尤其可以用来支撑公开密钥基础设施的 “不...原创 2019-10-29 16:27:38 · 12372 阅读 · 0 评论 -
Java中枚举类enum的values()方法的详解
关于枚举,相信使用的已经很普遍了,现在主要写的是枚举中的一个特殊方法,values(), 为什么说特殊呢,因为在Enum 的 API 文档中也找不到这个方法。接下来就看看具体的使用。 理论上此方法可以将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类。接下来就展示代码...原创 2019-10-07 22:09:24 · 8416 阅读 · 6 评论 -
基于TCP协议的网络聊天室
1.客户端package 网络编程;import java.io.*;import java.net.Socket;import java.util.Scanner;public class Client1 { public static void main (String[] args) throws Exception { Socket s= new...原创 2019-07-27 18:12:58 · 1065 阅读 · 0 评论 -
1.JAVA 编程思想——对象入门
欢迎转载,转载请标明出处: http://blog.csdn.net/notbaron/article/details/51040219 如果学JAVA,没有读透《JAVA 编程思想》这本书,实在不好意思和别人说自己学过JAVA。鉴于此,蛤蟆忙里偷闲,偷偷翻看这本传说中的牛书。面向对象编程OOP具有多方面吸引力。实现了更快和更廉价的开发与维护过程。对分析与设计人员,建模处理变得更加简...转载 2019-06-01 23:59:04 · 362 阅读 · 0 评论 -
Java学习之不可变类以及缓存实例的不可变类
不可变类的意思是创建该类的实例后,该实例的实例变量是不可变的。创建不可变类,可以遵守以下规则:使用private和final修饰符来修饰成员变量。 提供带参数构造器,用于根据传入参数来初始化类里的成员变量。 仅为该类成员变量提供getter方法。 如果有必要,重写object类的hashcode()和equals()方法。1,下面测试一段代码:public class Imm...原创 2019-06-13 15:15:18 · 266 阅读 · 0 评论 -
JAVA中的堆与栈的区别
转自https://blog.csdn.net/huozhicheng/article/details/6575960在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存...转载 2019-06-03 12:15:38 · 193 阅读 · 0 评论 -
JAVA学习(面向对象之比较==和equals的区别)
Java程序中测试两个变量相等有两种方式:一种是利用==运算符,另一种是利用equals方法。当使用==运算符判断两个变量是否相等,如果两个变量是基本类型变量,且数值相等,则当两个变量相等的时候,返回true。但是对于引用变量类型变量,只有当他们指向同一个目标的时候才相等,注意等号不能用于比较父子类的对象关系。下来我们看一段代码public class EqualTest { ...原创 2019-06-10 16:05:26 · 249 阅读 · 0 评论 -
JAVA学习之编译期和运行期区别
编译期:检查是否有语法错误,如果没有就将其翻译成字节码文件。即.class文件。运行期:java虚拟机分配内存,解释执行字节码文件。从以下代码开始说明,欢迎大家指正可以思考下,第一行跟第二行在编译时期有什么区别?java编译时会做一些优化操作。第一行,因为是两个常量做运算,那么他们的结果就是确定的,即num1的值是确定的。所以在编译时,编译器就会直接算出num1的值。第二行则...转载 2019-06-10 21:42:53 · 325 阅读 · 0 评论 -
Java学习之单例类
单例类:如果一个类只创建一个实例,就被叫做单例类。使用范围:当这个类创建太多实例没有太大意义的时候就可以使用,大部分时候类的构造器定义为public访问权限,在这里我们应private来修饰构造器,从而把该类的构造器藏起来。但是还得进行该类的创建对象的过程,就得提供一个public方法作为该类的访问点,用于创建,且该方法必须使用static修饰(因为该类调用之前还没有对象产生,因此使用该方法的...原创 2019-06-10 23:29:35 · 246 阅读 · 0 评论 -
Java学习之抽象类
抽象类: 抽象方法和抽象类 抽象类的作用 当编写一个类的时候,常常考虑为该类定义一些方法,用以描述该类的行为方式,那么这些方法都是具体的方法体,但是在某些情况下,某些父类只知道其子类应该包含怎样的方法,但是无法知道子类如何实现这些方法,这里就出现了抽象类以及抽象方法。1,抽象方法和抽象类抽象方法和抽象类必须使用abstract修饰符来修饰,有抽象方法的类必须被定义...原创 2019-06-17 09:26:35 · 193 阅读 · 0 评论 -
Java学习之接口
接口讲解内容: 接口的概念。 Java8和Java9中接口的区别。 接口的继承。 接口和抽象类。 面向接口编程。 1,接口的概念接口相当于定义了一种规范,接下来的某一批类都要遵守这种规范,接口体现的是规范和实例分离的设计哲学。让规范和实现分离正是接口的好处,让系统的各部分之间面向接口进行耦合,是一种松耦合的设计。所以接口就是一组公用的方...原创 2019-06-17 10:58:48 · 207 阅读 · 0 评论 -
Java学习之final修饰符(成员变量,局部变量,基本与引用类型变量,方法和类)
本文主要讲述内容: final成员变量 final局部变量 final修饰基本类型变量和引用类型变量的区别 “宏替换”的final final方法 final类 1.final成员变量final指定的成员变量必须由程序员显式的进行指定初始值归纳总结:final修饰的类变量,实例变量指定初始值的位置如下。类变量:必须再静态初始化...原创 2019-06-11 22:29:08 · 3718 阅读 · 2 评论 -
MySQL出现:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)问题解决(卡了我半天)
本文mysql的安装环境为win1064位,mysql版本为MySQL5.7问题描述:在命令行输入 mysql -u root -p 登录mysql,返回”Can't connect to MySQL server on localhost (10061)”错误意思大概就是:无法连接到“本地主机”(10061)上的MySQL服务器我自己也是在网上找了两三个小时才综合解决1、...原创 2019-07-29 09:04:33 · 1325 阅读 · 0 评论 -
JAVA学习之使用 (Date 和 SimpleDateFormat 类表示时间)
在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类。这个类最主要的作用就是获取当前时间,我们来看下 Date 类的使用:使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出 Date 对象显示当前的时间,显示的结果如下:其中, Wed 代表 Wednesday (星期三), Jun 代表 June ...原创 2019-07-20 17:43:19 · 291 阅读 · 0 评论 -
Java纸牌小游戏
总共三大模块:1,牌的创建package 学生管理系统;public class Card implements Comparable<Card>{ String name; String type; int rank; public Card(String type,String name,int rank) { this.name = name; th...原创 2019-07-22 21:27:13 · 1095 阅读 · 0 评论 -
Java学习之学籍管理系统
1,我们先来讲讲什么是泛型化编程package 学生管理系统;import java.util.ArrayList;import java.util.List;/* * 进行泛型化编程 * @autor:pcb * */public class TestGeneric { //进行泛型化编程,规定类型。 public List <CourseClass> c...原创 2019-07-22 22:49:12 · 4612 阅读 · 1 评论 -
Eclipse 下载,安装,配置教程
第一步:下载eclipse,并安装。下载链接:http://www.eclipse.org/downloads/点击 Download Packages;根据自己的系统选择32位还是64位的,点击相应链接下载(可能会弹出一个需要你付费的页面,并不是eclipse需要付费,这只是请求你捐钱的,无需理会)下载完成后,解压安装包,解压路径随意。打开之后,选中图中的文件,在...原创 2019-06-06 21:09:16 · 97470 阅读 · 5 评论