java
文章平均质量分 57
菜菜也逆袭
这个作者很懒,什么都没留下…
展开
-
spring基本操作
1.如果要项目中使用spring要先导入spring相关基本的jar包主要有:commons-logging-1.1.3.jar 日志管理spring-beans-3.2.5.RELEASE.jar bean节点spring-context-3.2.5.RELEASE.jar spring上下文节点spring-core-3.2.5.RELEASE.jar spring核心功能pri...原创 2019-05-25 17:52:38 · 874 阅读 · 0 评论 -
java中锁的几种分类
锁的分类java中锁按竞争状态、竞争程度可以分为4种锁,分别为无锁、偏向锁、轻量级锁、重量级锁,这些锁只能按照竞争激烈程度自动升级,不能降级,以提高锁的获取与释放效率。在java中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。在对象头的MarkWord字段中,存储着对象的Hashcode(地址映射),分代年...原创 2018-11-23 17:50:18 · 1871 阅读 · 1 评论 -
java中乐观锁CAS操作详解
什么是乐观锁乐观锁就是假设所有线程访问共享资源都不会出现冲突,由于不会出现冲突所以就不会也不需要去阻塞其他线程。因此线程不会出现阻塞等待的状态。但是一旦发生冲突时,无锁操作,会使用CAS操作来鉴别线程是否出现冲突,出现冲突了就重复尝试,直到没有冲突为止。什么时CAS操作。CAS操作就是Compare And Swap比较交换操作。在CAS中操作中,有三个值。V,O,N。V:当前内存中存放...原创 2018-11-21 16:28:51 · 1376 阅读 · 0 评论 -
java中用synchronized实现同步处理
synchronizedJava中提供synchronized关键字实现同步处理,用synchoronized可以修饰代码块,修饰方法,来完成对 对象加锁,对类加锁的操作。synchoronized是重量级锁。意思就是当有一个线程A进入时其他想访问的线程阻塞师等待,等待该线程A执行完整个加锁区间,系统自动释放锁,并唤醒等待的其他线程竞争锁。对象锁synchronized修饰同步代码块 --锁...原创 2018-11-21 09:01:42 · 1615 阅读 · 0 评论 -
LeetCode-905.按奇偶排序数组
给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。你可以返回满足此条件的任何数组作为答案。 示例:输入:[3,1,2,4]输出:[2,4,3,1]输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。提示:1 <= A.length <= 50000 <= A[i] <= 5000代码实现c...原创 2018-11-14 19:55:08 · 716 阅读 · 0 评论 -
LeetCode-709.转换成小写字母
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: “Hello”输出: "hello"示例 2:输入: “here”输出: "here"示例 3:输入: “LOVELY”输出: “lovely”代码实现class Solution { public String toLowerC...原创 2018-11-14 19:51:30 · 676 阅读 · 0 评论 -
LeetCode-804.唯一摩尔斯密码词
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a"对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[”.-","-…","-.-.","-…",".","…-."原创 2018-11-14 19:40:38 · 748 阅读 · 0 评论 -
LeetCode-476.数字的补数
给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。注意:给定的整数保证在32位带符号整数的范围内。你可以假定二进制数不包含前导零位。示例 1:输入: 5输出: 2解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。示例 2:输入: 1输出: 0解释: 1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。代码实现:class Sol...原创 2018-11-14 19:38:50 · 790 阅读 · 0 评论 -
java-生产者消费者模型
利用Object类提供的wait和notify方法实现生产者消费者模型wait()方法wait方法用于同步代码块或者同步方法中,且锁必须是内建锁synchronized,如果使用wait时没有锁,则会抛出异常。wait方法使得调用该方法的线程停止运行进入等待,释放对象锁,运行其他线程竞争该锁,从运行态到阻塞态,并且将该线程置入该锁对象的等待队列中,直到接收到notify()或者被中断、终止...原创 2018-11-23 19:54:20 · 1610 阅读 · 0 评论 -
java中的线程概念以及线程创建
什么是线程要想知道什么是线程,就要知道什么是进程。那什么是进程呢?进程指的是操作系统中一个程序的执行生命周期,也就是从他点击run程序创建中,直到程序运行结束退出。整个执行过程叫做进程。那什么是线程呢。一个进程中肯定不止有一个线程,那么通俗的将进程的每一个子任务就是一个线程。对比进程和线程1.与进程相比,线程更加的轻量级。线程的创建、撤销相比较于进程的开销要小的多。2.没有进程就没有线程...原创 2018-11-19 21:17:56 · 775 阅读 · 0 评论 -
java中线程状态转化以及转换方法
线程中状态和进程意义。线程从启动到终止一种由5个状态。分别时创建状态,就绪状态,运行状态,阻塞状态和终止状态。状态转换常用方法创建状态->(start()方法)->就绪状态就绪状态->(系统调度)->运行状态运行状态->(yiekd()方法)->运行状态运行状态->(sleep()\join()\wait()方法)-&原创 2018-11-20 23:17:12 · 1154 阅读 · 0 评论 -
"访达"文件搜索助手
基于java语言模拟实现本地的快速文件搜索神器。首先windows下的桌面搜索软件是遍历式查找,速度较慢。如果想要提高速度,我采用的是通过连接数据库,在查找之前将文件的目录信息经过全盘符遍历存入数据库中,待查找的时候便从...原创 2019-03-11 11:06:32 · 1652 阅读 · 0 评论 -
局域网文件文本在线传输助手
局域网文件文本在线传输助手具体实现代码链接下面我将详细记录,我在完成该项目涉及的具体问题的具体分析实现。要进行局域网通信首先要做的就是客户端和局域网建立链接。链接过程服务器端是无法知道都有哪些客户端要和其建立连接的。所以必须客户端首先拿到服务器的ip和端口号发起建立请求。但是,这也有个要求,就是服务器这个时候已经启动等待客户端发来请求。所以我们在最终启动的时候,应先启动服务器。客户端:...原创 2019-03-09 12:30:49 · 2477 阅读 · 0 评论 -
java虚拟机jvm垃圾回收机制
首先在java虚拟机jvm中主要包含五类内存结构:程序计数器、虚拟机栈、本地方法栈。这三类随线程生和灭。所以不需要考虑其回收问题。随着线程终止,其自然而然就销毁了。其次还有堆区和方法区。垃圾回收器主要针对的就是堆区和方法区来回收前来确定具体哪些对象需要回收。引用计数法被引用则计数器+1,解除绑定则计数器-1, = 0 时及该对象可以被释放。但是引用计数法无法解决循环引用的问题。可达性分析...原创 2019-03-08 23:33:31 · 858 阅读 · 0 评论 -
java 常用集合类详解
java中的类集框架主要在jdk1.2中 在util包中。为了解决数组定长问题产生。在集合框架中有两个顶层的父接口Collection 和 MapCollectionCollection下有四个子接口 List 、Queue、Set和IteratorList 允许数据重复Set 通过底层Map 不允许数据重复QueueIterator 集合遍历迭代接口,只有Collection有...原创 2019-02-21 10:42:38 · 941 阅读 · 0 评论 -
java-IO操作详解
java中提供5个关于IO操作的类File、OutputStream、inputStream、Reader、Wirter原创 2018-12-08 14:11:32 · 815 阅读 · 1 评论 -
Java反射详解
什么是反射以往我们使用类和对象的顺序都是,先创建好类,然后再通过类创建对象。和这不同的是,反射的工作主要是先拿到对象然后根据对象倒推类的组成。也许你会问,虽然我拿到了对象,但是我怎么知道类里有啥呢?发射的核心处理在于每个类都继承了Object类这种操作就很像盗版的操作:原创是先有的构想,然后设计图纸,然后创建出模型,再生产出产品。而盗版却是已经拿到了产品,但是想利用这个产品倒退出模型然后再创...原创 2018-11-28 10:54:19 · 773 阅读 · 0 评论 -
java-通过AQS理解独占锁的实现机制
详细分析如何利用AQS实现独占锁的获取与释放独占式非公平锁的获取独占锁默认就是非公平锁,我们要想了解独占锁的获取是否,首先必须知道同步队列为一个有头尾节点的双向链表1.通过new ReentrantLock().lock();进入lock的的代码实现区public void lock() { sync.lock(); } ...... sync = new ...原创 2018-11-26 21:11:32 · 1933 阅读 · 0 评论 -
java中lock锁使用以及AQS理解
lock锁和关键字synchronized内建锁不同,Lock锁是完全由java语言实现的,Lock锁的代码在Java.util包下来完成我们同步访问临界资源。synchronized锁会使得其他线程阻塞等待等待被唤醒,而Lock使得其他请求访问的线程自旋等待竞争锁。Lock体系拥有可中断的获取锁以及超时获取锁以及共享锁等内建锁不具备的特性。lock锁,使用方法lock lock = new...原创 2018-11-26 15:51:41 · 1931 阅读 · 0 评论 -
java-泛型和通配符详解
为什么引入泛型在我们代码编写中我们一个类常理来说一个属性只能接受一种类型。而我们如果需要多个类型转换就需要多个属性。而对应这个属性又有多个方法对之对应。这样就是的代码的复用性差。为了节省代码量,提供泛型。泛型的定义泛型有两种形式。泛型类和泛型方法。泛型类的类型擦除所谓的泛型类其实只是语法糖,也就是说泛型类仅存在用源码阶段,当代码进行编译后泛型就会被类型擦除,当进入JVM虚拟机后,和泛型有...原创 2018-11-13 17:40:06 · 1075 阅读 · 0 评论 -
java中Object类、包装类详解
Object类Object是java中的基类,所有的类默认都会继承Object类,所以所有的类都可以通过Object类接收,完成向上转型,实现参数统一化。String覆写的两个重要的Object方法1.toString();Object中的toString方法默认输出的是该类的名称getClass()和地址编码,我们String类继承Object类对toString()方法进行了覆写。所以...原创 2018-11-05 20:24:29 · 431 阅读 · 0 评论 -
java中基于抽象类的模板设计模式(封装方法)
什么是模板方法设计模式模板方法设计模式是基于抽象类的方法模式。在一个方法中定义了一个算法实现的基本步骤框架,并且将一些步骤的具体实现延迟到子类实现,模板模式要求子类可以在不改变算法结构的基础上,利用覆写的方法在子类中重新具体定义算法中的某些步骤。开闭原则开闭原则(OCP)是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。对于...原创 2018-10-29 17:14:53 · 608 阅读 · 0 评论 -
java中static详解
static修饰类中的变量static修饰变量使得该变量有了静态属性,又叫类属性。这个变量会被保存在全局数据区(方法区–所有对象共享的区域)在调用过程中通过类名调用,无需实例化出对象。static是不能修饰方法中的变量的,因为方法(无论静态方法还是普通方法)是定义在栈中的,栈上定义的变量都是局部变量,而且方法是依赖与对象而静态变量不依赖对象。这不是很矛盾嘛。所有Java中规定局static修...原创 2018-10-23 22:42:26 · 2982 阅读 · 4 评论 -
java中代码块的详细讲解
代码块的定义:直接被{ }花括号封装的代码称为代码块代码块可以分为四种:1.普通代码块–定义在方法中的代码块普通代码块确定了该代码块中变量的作用域,出了代码块代码变量失效。也就是说代码是定义在栈上的,所以Java中规定普通代码块中不能定义静态变量(编译错误),方法中就不允许定义静态变量,代码块中就更不可以了啊。class Test{ public void fun(){ { in...原创 2018-10-21 23:09:10 · 189 阅读 · 0 评论 -
java编译时错误:A JNI error has occurred, please check your installation and try again
这个错误是因为,重复安装JDK,也就说电脑中不止一个版本的jdk导致的。1.输入windows+r2.cmd 进入命令行3.输入javac -version4.输入java -version可以发现两个java-的版本不同,我们要做的就是修改环境变量ClassPath然后把系统中的不需要的版本删除,卸载。整个文件夹都拖到回收站并清空。5.然后重新启动,删除javac,生成的 *...原创 2018-10-10 19:08:32 · 53788 阅读 · 13 评论 -
javac编译时错误:编码GDK的不可映射字符
当我们出现乱码错误时,是因为我们的java代码中有中文引起的。我们是输入如下代码出现的错误:javac *.java // * 代表定义的主类名解决方法:javac编译时,该代码为javac【空格】-encoding【空格】UTF-8 【空格】*.java ...原创 2018-10-10 18:50:38 · 1707 阅读 · 0 评论 -
面向对象的三大特性
面向对象的三个特征时:封装,继承,多态1封装将客观事物封装称抽象的类,每个类的属于自己的内部属性和方法有选择的让信任的类或对象操作,对不可信的进行隐藏。而且内部操作对外部不可见,封装这一特性体现了保护性2继承在无需重新编写重复代码的情况下实现现有类的所有功能,并可以对其功能进行扩展,继承体现了可重用性3多态一个类实例的相同方法在不同情形下的不同表现形式。多态使得不同的内部结构的对象共享...原创 2018-10-19 19:35:51 · 173 阅读 · 1 评论 -
java中异常详解以及运行时异常runtime exception
1在数组应用中因为数组在java中属于引用数据类型所以,必须在使用前初始化,否则编译时不会出错,运行时会爆出异常,NullPointerEXception --空指向异常2在数组访问中当访问的数组下标越界时会报一个运行时异常,ArrayIndexOutOfBoundsException–数组访问越界异常3在多态中当父类引用需要调用子类填充方法时,需要向下转型。但是向下转型前需要先向上...原创 2018-10-19 19:05:18 · 4425 阅读 · 0 评论 -
LeetCode--832.翻转图像
给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入: [[1,1,0],[1,0,1],[0,0,0]]输出: [...原创 2018-10-13 17:43:56 · 155 阅读 · 0 评论 -
java中final详解
final是Java中的终结器,final修饰类这个类则不能被继承,final修饰方法这个方法则不能被覆写……1.final修饰类final修饰类则表示这个类是不能够extends继承。可以理解为这个类不能拥有子类,一旦这个类被final修饰则这个类中的所有方法都会默认被final修饰称为终结方法不能被覆写,而成员变量–属性则不会加上final关键字修饰。通常JDK中的包装类以及工具类Str...原创 2018-10-26 21:21:08 · 677 阅读 · 0 评论 -
LeetCode--657.机器人能否返回原点
在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移...原创 2018-10-26 21:32:27 · 520 阅读 · 0 评论 -
LeetCode-104.二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3/ 9 20/ 15 7返回它的最大深度 3 。思路:我们通过递归变量计算树的深度。代码实现:/** * Definition for a binary tree nod...原创 2018-10-24 16:31:51 · 233 阅读 · 0 评论 -
java中String类详解
String类String类存在java.lang包中,专门存储字符串。是引用数据类型。String类的两种实例化方法1.直接赋值String str1= "hello";2.传统赋值String str1 = new String("hello");JVM底层会自定维护一个字符串的对象池(对象数组),如果现在采用直接赋值的形式进行String的对象实例化,该对象会自动保存在这个...原创 2018-11-05 20:05:17 · 479 阅读 · 1 评论 -
java-链表详解
##java实现链表的主要操作interface ILink{ boolean add(Object data); void printLink(); Object remove(Object data); Object set(int index,Object data); Object get(int index); boolean cont...原创 2018-11-10 21:34:18 · 4886 阅读 · 0 评论 -
java代理模式和单利模式
代理模式两个子类共同实现一个接口,其中一个子类负责真实业务实现,另一个子类完成辅助真实业务主题的操作。这就像极了我们的代购操作。虽然真正买东西付钱的是我,可是我是通过代购的人代替我去实体店买的。代理模式组成:1.接口 --定义操作2.真实主题类–3.代理类。举个例子:买口红package www.Factory;//接口定义具体操作-这里是买口红interface IBuyRo...原创 2018-11-04 21:20:52 · 218 阅读 · 0 评论 -
java基于抽象类的工厂模式
工厂模式的主要思想工厂模式的基本思想就是引入第三方类,将一些共有的操作从具体实现的类中解耦(抽离)出来,这样有利于统一化,有利于扩展。引入工厂从而把一些需要在客户端频繁的操作比如类的实例化操作,解耦(抽离)出来,拿到工厂类中,从而降低对客户端的依赖。简单工厂模式简单工厂模式用于产品较少,也就是产品类较少的情况。专门定义一个类(第三方类)用于创建其他具体类实例,(将客户端创建对象的操作解耦到第...原创 2018-11-04 21:01:01 · 1900 阅读 · 0 评论 -
LeetCode-395. 至少有K个重复字符的最长子串
找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。示例 1:输入:s = “aaabb”, k = 3输出:3最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。示例 2:输入:s = “ababbc”, k = 2输出:5最长子串为 “ababb” ,其中 ‘a’ 重复了 2 次, ‘b’ 重复了 3 次。...原创 2018-11-09 21:10:43 · 3276 阅读 · 0 评论 -
java中接口,以及抽象类对比
什么是接口接口就是一个由抽象方法和全局常量的集合。定义接口用interface关键字修饰,子类实现接口用implements关键字修饰,并且实现所有的抽象方法。举个例子:interface IMyInterface{ public static final String MSG ="test"; public abstract void test();}class MyInterf...原创 2018-10-30 23:11:26 · 148 阅读 · 0 评论 -
java中抽象类详解
抽象类的定义抽象类只是在普通的基础上扩充了一些抽象方法而已。抽象方法指的只是声明而未实现的方法,也就是说没有方法体。所有抽象方法要求使用abstract 关键字修饰。并且抽象方法所在的类,都要使用abstract来修饰。抽象类的使用原则所有的抽象类必须有子类,也就是说,abstract修饰的就要有继承的子类,而final修饰的不能有子类,所以这两个修饰符不能同时使用。抽象类的子类必须覆...原创 2018-10-27 23:43:52 · 173 阅读 · 0 评论 -
java中内部类详解
什么是内部类顾名思义,内部类就是在类内部定义的类,也就是说在类的内部进行了其他类结构的嵌套操作内部类的优点:1.内部类可以和外部类很方便的进行访问对方私有域,和private的方法、属性的操作。2.内部类时另一种封装,体现了保护性,内部类对于其他的外部类来说时隐藏的。3.内部类实现弥补java的单继承局限。缺点:就像贵的东西除了贵没有缺点一样。内部类的缺点就是复杂。内部类和外部类的...原创 2018-10-27 18:42:10 · 176 阅读 · 0 评论