- 博客(47)
- 收藏
- 关注
原创 Go | 学习Go遇到的坑
1. iota为每个常量复制相同的表达式,知道声明区结束,或者遇到一个新的赋值语句需要在const()中,采用使用复制相同的上一步表达式。如下面的方式。不会进行复制const a = 1 << iota //1 iota==0const b = 1 << iota //1 iota==0const c = 3 //3 iota==0...
2020-01-15 14:30:44 193
原创 Go |单元测试的方法
Go提供了一套轻量级的测试框架。需要进行单元测试的文件命明规则如下:在需要测试的包下面创建以“_test”结尾的go文件。如下图,在包Simplemath下建立了add.go和stack.go两个go文件,它们各自的测试文件是add_test.go和stack_test.go。Go的单元测试函数分为功能测试函数和性能测试函数。这里先说功能性测试函数。测试函数的声明要以TestXXX的形式开...
2019-12-24 17:33:27 521 1
原创 Go | 字符串切割方式
package mainimport ( "fmt" _ "fmt" "strings")func main() { //func Fields(s string) []string,这个函数的作用是按照1:n个空格来分割字符串最后返回的是[]string的切片 fmt.Println(strings.Fields("hello widuu golang")) //out ...
2019-12-19 16:27:14 2612
原创 数据库 | 数据库索引
索引是什么?索引是存储引擎用于快速找到记录的一种数据结构。索引以文件的形式储存在磁盘中。索引可以包含一个或多个列的值。存储引擎查询数据的时候,先在索引中找对应值,然后根据匹配的索引记录找到对应的数据行。为什么要使用索引(索引的优点)?提升数据的查询速度,大大减少了服务器需要扫描的数据量可以减少帮助服务器避免排序和临时表可以将随机IO变为顺序IO索引的类型1. B-Tree索引...
2019-06-25 21:23:31 165
原创 学习过程 | SSM框架实现基本的文件上传下载功能
项目结构项目结构内容解释(按照构建顺序)pojo:存放项目涉及得到实体类,实体的属性和setter,getter方法‘’’A code blockpackage com.pojo;public class Image {private int id;private String content;public int getId() { return id;}...
2019-06-25 20:18:39 429
原创 java基础 | Serializable接口,transient关键字
Serializable接口概念:把原本在内存中的对象状态 变成可存储或传输的过程称之为序列化。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。 只是一个标记接口,没有声明任何方法 可被子类继承 实现的是对象的“深复制”:如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存。 当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方...
2019-03-18 20:07:48 306
原创 学习过程 | SSM框架实现基本的文件上传下载功能
(只用看image相关的文件,paper和user不用)1.项目结构 项目结构内容解释(按照构建顺序)1.pojo:存放项目涉及得到实体类,实体的属性和setter,getter方法package com.pojo;public class Image { private int id; private String content;...
2019-02-26 15:30:19 2131
原创 学习过程 | IDEA构建SSM模型
今天按照这个博客的流程进行SSM模型的构建,差不多算是搞了一天,主要有以下几个问题:mysql和jdk版本的问题,之前使用的是mysql8.0版本,后来删除重新下载了5.7版本。从官网下载mysql版本解压后点击.msi文件进行安装,装的时候一定不要忘了选择路径,很多次都忘了。一般出现加载类找不到的问题,一般都是.jar包有问题。在对之前博主的代码拷贝的时候,由于文件太多,少了一个.jsp文...
2019-02-20 21:31:58 253
原创 算法 | java实现快速排序的多种方法
快速排序(Quick Sort)是对冒泡排序的一种改进,基本思想是选取一个记录作为枢轴,经过一趟排序,将整段序列分为两个部分,其中一部分的值都小于枢轴,另一部分都大于枢轴。然后继续对这两部分继续进行排序,从而使整个序列达到有序。递归实现:public void quickSort(int[] arr,int left,int right){ if (left < r...
2019-02-17 15:50:47 389
原创 异常解决 | spring JDBC
package W3cschool.SpringJDBC;import javax.sql.DataSource;import java.util.List;public interface StudentDAO { /** * This is the method to be used to initialize * database resources...
2019-01-22 15:59:50 165
原创 刷题 | 二叉树的各种遍历java实现
package ImportantAlgorithm;import javafx.geometry.Pos;import java.util.ArrayDeque;public class PreOrder { public static void main(String[] args) { TreeNode a1 = new TreeNode(5); ...
2019-01-22 14:56:04 172
原创 异常解决 | IllegalMonitorStateException
package ConcurrentProgramme.OneProduceToOneClient;public class P { private String lock; public P(String lock) { this.lock = lock; } public void setValue() { try { ...
2019-01-18 11:24:45 18751 4
原创 JVM | 第十章&第十一章 程序编译与代码优化
早期(编译期)优化从Sun Javac代码来看,编译过程大致分为3个过程:解析与填充符号表过程插入式注解器的注解处理过程分析与字节码生成过程标注检查,数据及控制流分析,解语法糖,字节码生成语法糖泛型与类型擦除自动装箱,拆箱与遍历循环,条件编译变长参数内部类枚举类断言语句try中定义和关闭资源…晚期(运行期)优化java程序最初是通过解释器进行解释执行的,...
2019-01-16 11:16:33 165
原创 JVM | 第八章 虚拟机字节码执行引擎
执行引擎是java虚拟机最核心的组合部分之一。“虚拟机”是相对于“物理机”的概念,这两种机器都有执行代码的能力,其区别是物理机的执行引擎是直接建立在处理器,硬件,操作数和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行定义指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。运行时栈帧结构栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机...
2019-01-15 15:29:16 124
原创 JVM | 不同内存区域溢出
import java.util.ArrayList;//java堆溢出:不断生成对象,导致堆内存溢出public class HeapOOM { static class OOMObject { } public static void main(String[] args) { ArrayList<OOMObject> list = ...
2019-01-09 17:02:46 195
原创 源码学习 | LinkedBlockingQueue
/**以链表为基础,有界&无界,非公平**/public class LinkedBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, java.io.Serializable /** 链表的容量界限,没有的话就是 Integer.MAX_VA...
2019-01-07 16:57:11 117
原创 源码学习 | ArrayBlockingQueue
/**有界队列,支持公平&非公平策略**/public class ArrayBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, java.io.Serializable /** 充当阻塞队列的数组 */ final Object[...
2019-01-07 15:52:39 94
原创 刷题 | 求二叉树中根节点到叶子节点路径和为指定值
import java.util.ArrayList;//将题目分解成更小的子问题,(子节点,sum-父节点的值)public class A28pathSum { public static void main(String[] args) { A28pathSum test = new A28pathSum(); TreeNode a1 = new...
2019-01-07 15:25:02 1155
原创 算法 | 判断链表是否有环?
public boolean hasCycle(ListNode head) { if (head == null || head.next == null){ return false; } ListNode oneStep = head.next; ListNode twoStep = head.next...
2019-01-03 16:15:55 121
原创 多线程 | 两个线程的简单死锁例子
//两个线程的死锁。有两个锁,自己持有一个再去申请另外一个public class TwoDeadThread { static Object o1 = new Object(); static Object o2 = new Object(); public static void main(String[] args) { Thread s1 = n...
2019-01-03 15:58:50 861
转载 设计模式 | 观察者模式
观察者模式的定义观察者模式(Observer Pattern),也叫发布/订阅模式(Publish/Subscribe),定义如下:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。下面是观察者模式的通用类图:下面说明一下这几个角色的名称: Subject 被观察者:它必须能够动态地增加和取消观察者。一般是抽象...
2018-12-29 17:27:37 92
原创 JVM | 第三章:垃圾收集器与内存分配策略
1. 哪些内存需要回收?堆,方法程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭,内存的回收具有确定性2. 回收哪些对象?引用计数法:给对象添加一个引用计数器,每当有一个地方引用它时,计数器就增1,引用失效,减一 (循环引用的问题)可达性分析算法:通过一系列的称为“GC Roots”的对象作为起点,从这些节点开始向下搜索,搜索走过的路径称为引引用链,当一个对...
2018-12-27 17:11:24 73
原创 多线程 | 三种形式的生产者-消费者问题 java实现
1.synchronized+wait(),notify()/notifyAll()import java.util.LinkedList;public class ProducerAndConsumer2 { public static void main(String[] args) { Storage2 storage2 = new Storage2()...
2018-12-25 15:35:34 122
转载 多线程 | Java 里如何实现线程间通信?
正常情况下,每个子线程完成各自的任务就可以结束了。不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了。本文涉及到的知识点:thread.join(), object.wait(), object.notify(), CountdownLatch, CyclicBarrier, FutureTask, Callable 等。本文涉及代码:https://gi...
2018-12-14 17:33:09 195
原创 多线程 | 线程间的通信:两个线程 交替打印12A34B56C...4950Y5152Z
public class PrintDigitChar { public static void main(String[] args) { //建立一个同步监视器,两个线程交替访问 Object lock = new Object(); Thread digit = new Thread(new Runnable() { ...
2018-12-14 16:59:59 804 2
转载 Java中实现对象的比较:Comparable接口和Comparator接口
在实际应用中,我们往往有需要比较两个自定义对象大小的地方。而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的。所以Java中要比较对象的大小或者要对对象的集合进行排序,需要通过比较这些对象的某些属性的大小来确定它们之间的大小关系。一般,Java中通过接口实现两个对象的比较,比较常用就是Comparable接口和Comp...
2018-10-29 17:49:22 116
转载 Java值传递
作者:Intopass链接:https://www.zhihu.com/question/31203609/answer/50992895来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 一:搞清楚 基本类型 和 引用类型的不同之处int num = 10;String str = "hello"; 如图所示,num是基本类型,值就直...
2018-10-26 16:05:03 642
转载 Java接口,抽象类,内部类
主要内容:1.接口的概念:由interface定义,里面只能有抽象方法和常量接口的特点:见下2.内部类:成员内部类:声明在外部类中局部内部类:声明在外部类的方法中静态内部类:用static 修饰的成员内部类匿名内部类:匿名内部类的前提条件是存在一个类或者接口,这个类可以为抽象类。匿名内部类本质上是继承了该类或实现了接口中的方法。3.抽象类4.接口和抽象内部类的选...
2018-10-23 20:36:58 204
转载 Java中交换两数的值
1.不借助临时变量的方法:public void swap(int x,inty) {x=x+y;y=x-y;x=x-y;}2.借助临时变量的方法public void swap(int x,inty) {int temp=x;x=y;y=temp;}
2018-10-19 16:04:04 265
转载 Java数据类型 及 转换原则
一、数据类型分类:主要分为 基本类型、引用类型两大类;1.基本数据类型的类型转换数据类型 所占字节 boolean 未定 byte 1字节 char 2字节 short 2字节 int 4字节 long 8字节 float 4字节 double 8字节 从上表可以看出java中各种数据类型所占空间...
2018-10-19 14:41:44 218
转载 Java栈与堆
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自...
2018-10-19 09:14:06 102
转载 Java中数组复制的几种方法
阅读目录1.for循环方法: 2.System.arraycopy()方法: 3.Arrays.copyOf()方法: 4.Object.clone()方法:/** * @author zhengbinMac */public class Test { public static void main(String[] args) { int[] array...
2018-10-18 15:40:59 127
转载 java中Collection与Collections的区别
1. Collection是集合类的一个顶级接口,其直接继承接口有List与Set而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。 1) 排序(Sort)使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必...
2018-10-18 09:44:40 122
转载 Java入门系列:实例讲解ArrayList用法
1.ArrayList构造函数ArrayList类支持3个构造方法。Arraylist()这个构造方法构造了一个空的链表。ArrayList(Collection<? extends E> c)这个构造方法构造了一个包含指定元素集合的链表,注意,这里的字符E是一个标记,用来表示集合中元素的类型。至于具体是什么类型,需要你在使用这个构造方法的时候来指定。ArrayLi...
2018-10-17 20:56:41 193
转载 Java中的String,StringBuilder,StringBuffer三者的区别
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方...
2018-10-17 19:37:58 71
转载 ArrayList——数组与ArrayList的关系与区别
数组([]):最高效;但是其容量固定且无法动态改变;ArrayList:容量可动态增长;但牺牲效率;建议:首先使用数组,无法确定数组大小时才使用ArrayList! 1.效率:数组扩容是对ArrayList效率影响比较大的一个因素。每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前...
2018-10-17 15:12:20 215
转载 java集合框架综述
一、集合框架图简化图:说明:对于以上的框架图有如下几点说明1.所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。2. 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。3. 抽象类:5个抽象类(长...
2018-10-17 11:58:50 104
转载 java 强制性异常与非强制性异常
java的异常处理机制是一项相当灵活的技术。也是java的特色。项目做的够不够出色,很大一部分取决于异常的处理。如何自定义异常,是该try catch还是该throws,这些都是我们该注意的方面。 java中的异常分为两大类,强制性异常(CheckedException)和非强制性异常(UncheckedException)。而java中除了RuntimeException外,都是强制性异常。 ...
2018-10-16 17:09:46 2916
转载 Java多态性理解
Java中多态性的实现什么是多态面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用) 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对...
2018-10-16 15:40:45 209
转载 什么是Java虚拟机
我们都知道java程序必须在虚拟机上运行。那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释:虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修...
2018-10-16 12:06:43 138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人