自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 java虚拟机笔记 String相关概念及其面试题

String相关String的基本特征String被声明为final,不可被继承。String实现了Serializable接口,表明String支持序列化;实现了Comparable接口,表明String是可以比较大小jdk8及其以前底层用char数组实现;jdk9以后用byte数组加编码标记(因为比如中文需要用两个byte存储)实现,StringBuilder和StringBuffer也做了相应的更新。字符串常量池不会存储相同内容的字符(底层实现是一个固定长度的hashtable,长度可由-

2020-11-28 22:26:00 465 1

原创 java虚拟机笔记 运行时内存区域划分

前言java虚拟机在执行java程序的过程中会把它所管理的内存划分成若干个不同的数据区域。jdk8以后,大体的内存划分如下。程序计数器一块很小的内存空间,线程私有,存储当前线程下一条要运行的字节码指令的行号执行引擎通过行程序计数器中的行号找到对应的字节码指令,然后将字节码翻译成对应的机器语言,交给cpu执行程序运行的分支、分支、循环、跳转、异常处理、线程切换等功能都需要程序计数器实现此内存区域是唯一一个java虚拟机规范中没有规定任何OOM(OutOfMemoryError情况的区域),因为

2020-11-27 21:42:31 396

原创 java虚拟机笔记 逃逸分析

逃逸分析背景:在Java虚拟机中,对象都是在java堆中分配内存的,这是一个普遍的常识,但是有一种特殊情况,那就是如果经过逃逸分析后发现,一个对象并没有逃逸出方法的话,那么该对象就可能被优化成栈上分配。逃逸分析并不是直接的优化手段,而是一个代码分析;为其它优化手段如栈上分配、标量替换和同步消除等提供依据为什么要将堆上的对象分配到栈上(逃逸分析技术的目的)减少堆分配的压力,因为堆是共享区域,堆上分配需要进行同步操作主要是为了减少gc次数,提高gc效率。因为gc只会清理堆区和方法区,而不用清理虚拟

2020-11-24 21:48:15 422

原创 java虚拟机笔记 类加载器与类的加载顺序

虚拟机的启动启动java虚拟机的启动时通过引导类加载器(bootstrap class loader)创建的一个初始类来完成的,这个类是由虚拟机的具体实现指定的类加载器的分类启动类加载器(引导类加载器,Bootstrap ClassLoader)这个类加载器通过 C/C++语言实现,嵌套在JVM实现中它用来加载Java的核心类库(JAVA_HOME/jre/lib/rt.jar、resources.jar等),用于加载JVM自身运行所需要的内容并不继承java.lang.Class

2020-11-16 11:42:51 278

原创 Java线程池 通过ThreadPoolExecutor构造器认识四种线程池

ThreadPoolExecutor构造器int corePoolSize: 核心线程池大小int maxnumPoolSize: 最大线程池大小long keepAliveTime :超时时间(超时了没有人调用就会释放)特点注意: 这个超时时间控制的时非核心线程数的回收时间,核心线程永远不会被回收TimeUnit unit: 超时单位BlockingQueue< Runnable> workQueue: 阻塞队列(当前没有空闲线程时,任务会放入阻塞队列)ThreadFac

2020-10-14 02:10:01 240

原创 Java设计模式 单例模式

单例模式定义所谓单例,就是整个程序某个类有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。特点类构造器私有持有自己类型的私有属性对外提供获得实例的静态方法几种类型饿汉式类加载到内存后,就实例化一个单例,jvm保证线程安全优点: 简单易用,缺点:不管用到与否,类装载时就完成实例化,可能会造成资源的浪费/** * 饿汉模式 * @author manzuo * @date 2020/6/4 16:04 */public class Singleton

2020-10-11 13:54:09 231

原创 Java学习笔记 反射与注解

前言反射是框架(如Spring等)的灵魂,掌握java反射的知识可以让你更好的理解框架的底层实现。而我们经常使用的一些Spring注解就是通过反射来获取的。反射动态语言VS静态语言动态语言:是一类可以在运行时可以改变其结构的语言(引进新的对象,函数或者删除已有的函数),通俗的点说就是在运行代码的时候可以根据某些条件改变自身结构,如C#,JavaScript,PHP,Python等静态语言:运行时结构不可变的语言就是静态语言,如Java,C,C++. Java虽然不是动态语言,但是可以通过反射机

2020-10-10 20:39:52 319

原创 java多线程学习 ReentrantLock类的使用

ReentrantLock类为了保证任何时刻只有一个线程能进入临界区,通常需要给临界区上锁,只有获得锁的线程才能进入临界区。为了达到上锁的目的,我们通常使用synchronized关键字。在Java SE 5.0之后,java引入了一个ReentrantLock类,也可以实现给代码块上锁和释放锁的效果。lock方法 和unlock方法lock() 申请获得锁如果获得锁,该线程可以继续往下执行如果该锁已被其他线程获取,当前线程停止运行并进入阻塞状态,等待其他线程释放锁unlock() 释

2020-05-25 07:31:30 586

原创 java多线程学习 volatile关键字的使用

volatile关键字是java虚拟机提供的最轻量级的同步机制,用来修饰变量,可以保证变量线程间的可见性且禁止指令重排序。为了更好的理解volatile关键字,先来说下java内存模型java内存模型在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽各个硬件平台和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。那么Java内存模型规定了哪些东西呢,它定义了程序中变量的访问规则,往大一点说是定义了程序执行的次序。注

2020-05-18 19:08:41 294

原创 java多线程学习 synchronized 关键字的使用

synchronized是java 提供的一个并发控制的关键字,作用于对象上.每个java对象都有一个内部对象锁,通过synchronized可以向指定对象请求获取对象锁,该锁是互斥锁,一个时刻只能有一个线程能获得这把锁,其他请求获得这把锁的线程都进入阻塞状态synchronized提供的锁是可重入的锁可重入锁实现原理:每个锁关联一个请求计数器和一个占有它的线程。当计数为0时,认为锁是未被占有的;线程请求一个未被占有的锁时,JVM将记录锁的占有者,并且将请求计数器置为1 。如果同一个线程再次.

2020-05-17 03:23:06 276

原创 Java lambda表达式语法及简单示例

参考教材:《Java 核心技术 卷一》前言在JAVA SE 8 之前,在java中传递一个代码块并不容易,不能直接传递代码块,因为java是一种面向对象的语言,所以想传递代码块需要把所需传递的代码写在类的方法里,然后通过传递类的实例(即对象)才能达到传递代码块的目的。为了解决这一问题,JAVA SE 8 加入lambda表达式这一新特性,可以用一种简洁的语法来定义代码块,并把这个代码块传递给...

2020-03-21 04:07:28 1137

原创 IDEA 利用Spring Boot搭建简单的Spring MVC框架

前言陆续自学了spring和spring boot。也用spring搭建过ssm框架,做了个小项目,从0搭建ssm项目框架的时候,真的很繁琐,当时花了好久才把ssm框架搭建起来。这学期学了spring boot框架,发现spring boot开发项目的时候,真的很容易就把环境搭起来了。这学期就整合 Spring boot +Mysql+ Redis + Shiro+ Spring-data-jp...

2019-12-07 00:15:14 2053

原创 云服务器(Centos7系统)部署javaweb项目(二)配置JAVA+mysql+tomcat 环境

前言上一篇博客已经按照和配置了 xshell和Xftp,并连上了服务器。现在继续来配置云服务的环境配置java环境这里我选择了java1.8的版本,首先查看yum源的java1.8的包yum list java-1.8*这里我们选择x86_64版本进行安装yum -y install java-1.8.0-openjdk.x86_64这时候云服务器会自动安装并配置java环境。...

2019-10-30 19:27:32 625

原创 云服务器(Centos7系统)部署javaweb项目(一)Xshell和Xftp的安装和配置

Xshell和Xftp的下载和安装:连接服务器我们选择Xshell,用Xftp进行本地和服务器之间的文件传输。这里我提供了Xshell6和Xftp6的学校版的下载,软件官方提示:这是供个人免费使用的,勿直接或间接用作商业用途。链接:https://pan.baidu.com/s/1CQKWYzVDPwnWYtMAEbhCdQ提取码:wble下载好后就可以直接双击程序进行安装了,过程我就不...

2019-10-30 19:26:47 583

原创 个人学习总结:SpringMVC注解常用注解总结

文章目录bean的自动创建和自动装配通过Java代码新建bean消除自动装配的歧义SpringMVC配置控制层bean的自动创建和自动装配@Component: 标注一个类,spring会自动用默认无参的构造方法自动创建一个bean,该bean的id默认为类名首字母小写,也可以用@Component(“xxx”)将bean的id设置成xxx@ComponentScan:标注一个类(一般该类都...

2019-09-21 01:14:15 773

原创 Junit框架学习笔记-- 关于Junit的基本用法

参考教程: junit教程目录概述环境搭建基本用法时间测试 timeout注解的使用参数化测试概述Junit 是一个常用的Java单元测试框架,所谓的单元测试是对某一个单一实体的测试(比如某个具体的类或者类里的方法),Junit提供了注释来识别测试方法,提供了断言来测试预期结果,提供了测试运行来运行测试。环境搭建用Intellij IDEA建立一个maven quickstart项目,方...

2019-07-09 20:14:11 492

原创 java学习笔记 断言assert的使用

前言在学习Junit测试框架的时候,涉及到了断言这个概念,以前看java的时候,没仔细看这个概念,现在记录一下断言的概念断言实际上是一种测试机制,它可以规定某个参数或者属性必须要满足某个条件,否则会抛出一个异常,并且程序会中止。断言的一些特点断言只用于开发测试阶段确定程序的内部错误断言默认是禁用的,需要手动开启。禁用断言的情况下,类加载器会跳过断言代码断言检测失败的时候,会抛出As...

2019-07-04 12:10:04 9586 1

原创 JavaScript 动态添加与获取obeject对象的属性

前言在写微信小程序的时候,笔者遇到个问题,需要往一个object对象里添加一个新的属性,但是这个属性是个变量,按照Object.attribute = value 的老方法是不行的,那就需要新的方式来解决这个问题解决办法上网查了一下资料,发现有两种方法可以解决往一个object对象里添加一个新的属性的问题.方法一:var temp = {};//新建一个空的对象var key = "t...

2019-05-14 10:17:50 1181

原创 java 基础入门(三)

前言第一篇博客讲了Java的一些基础语法,第二篇博客讲了Java面向对象的一些特性,比如类和对象, 还有java 三大特性 封装,继承 ,多态 ,然后还讲到了抽象类的概念, 这篇博客将继续学习java的其他的重要特性。接口(interface)首先强调,接口不是一个类,接口主要是用来描述类有什么功能的,但不用给出 每个功能的具体实现。 从功能上来说,接口和抽象类是非常类似的。但是从实现上,接...

2019-05-03 16:01:39 8568 6

原创 warning: LF will be replaced by CRLF in ** 的原因及解决办法

今天在使用git add 命令的时候,弹出了一个警告 warning: LF will be replaced by CRLF in ******(具体的一个文件)原因LF和CRLF其实都是换行符,但是不同的是,LF是linux和Unix系统的换行符,CRLF是window 系统的换行符。这就给跨平台的协作的项目带来了问题,保存文件到底是使用哪个标准呢? git为了解决这个问题,提供了一个”换...

2019-03-18 22:04:21 80550 23

原创 【笔记】Ubuntu 18.04编译安装4.20.14版内核

为了避免编译内核的时候,系统发生不可控的错误,笔者选择把linux系统装在了虚拟机上。下面是具体的系统配置系统配置运行环境:Oracle VM VirtualBox 虚拟机系统版本:Ubuntu 18.04 LTS版运行内容:4GB(建议2GB以上)磁盘大小:40GB (磁盘太小会导致编译失败)处理器核心:4个 @2.30GHz x64 (四个核心能加快编译的速度)显存大小:12MB...

2019-03-08 20:04:05 1272 3

原创 制作ubuntu系统的 usb启动盘

前言由于课程的要求,要尝试完成 编译安装Linux系统的内核,但是在编译内核的过程中,Ubuntu的grub引导好像出了一些问题,不能进入系统了。所以就要制作一个usb启动盘,看能不能修复一下系统。工具一个至少8G大小的U盘 (注意:U盘会被重新格式化,请提前保存重要资料)下载一个Ubuntu iso镜像 (https://www.ubuntu.com/download/desktop)...

2019-03-07 17:51:01 3903 1

原创 微信小程序开发笔记(四)数据绑定

参考教材:《微信小程序开发入门与实践》 雷磊前置知识:JavaScript,CSS前言到目前为止,我们把数据都写在了wxml文件里,这是非常不好的编码方式。在真实的项目里,通常是把业务数据放在服务器,然后小程序通过http请求访问服务器提供的api,从而获取数据。我们先新建一个post界面,并作为首页...

2019-01-31 18:15:01 1331

原创 微信小程序开发笔记(三)flex布局和自适应单位rpx

参考教材:《微信小程序开发入门与实践》 雷磊前置知识:JavaScript,CSS什么是flex布局在上一篇博客里,笔者在hello.wxss 里使用了display: flex; 。什么是flex呢?flex布局是W3c组织在2009年提出的一个新的布局方案,其宗旨是让页面的布局样式更加简单,并且可以很好地支持响应式布局。这并不是小程序所独有的技术,它本身是CSS语法的一部分。只不过早...

2019-01-28 19:36:30 3711

原创 微信小程序开发笔记(二)第一个微信小程序

参考教材:《微信小程序开发入门与实践》 雷磊前置知识:JavaScript,CSS新建项目安装好微信开发者工具后,我们就可以开始新建我们第一个微信小程序了。选择新建项目,填入一个项目名称以及目录(即在磁盘上存放的路径),AppID这里如果没有申请,点击测试号系统会提供一个给你一个AppID,主要用于方便开发者学习和调试。在这里,我选择的是系统提供的默认AppID,确认无误后,点击右下角...

2019-01-26 18:43:32 2965 2

原创 微信小程序开发笔记(一)微信web开发者工具的下载与安装、AppID的申请

参考教材:《微信小程序开发入门与实践》 雷磊前言微信提供了小程序的官方开发工具—微信开发者工具,当然,这个微信开发工具 还可以用来调试运行在微信上的网页以及微信JS-SDK。微信开发者工具官方下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html注意,Windows版本的仅支持window7版...

2019-01-19 17:08:03 26709

原创 【数据结构】图的最小生成树 克鲁斯卡尔(Kruskal)算法

说明利用克鲁斯卡尔算法打印出各连通分类的边集要是连通图才能生成最小生成树运行截图代码实现import java.util.*;public class MinSpanTreeTest { public static void main(String[] args) { MinSpanTree minSpanTree = new MinSpanTre...

2018-12-15 03:42:47 1884

原创 【数据结构】无向图的遍历(广度搜索和深度搜索)

说明以邻接表作为存储结构以用户指定的结点分别进行广度搜索和深度搜索相应的生成树的边集运行截图源代码public class AdjacencyList { public static void main(String[] args) { CreateGraph createGraph=new CreateGraph(); createGr...

2018-12-15 03:37:20 4137

原创 【数据结构】判别以邻接表方式存储的有向图是否存在顶点Vi到Vj的路径

说明分别采用了深度优先算法和广度优先算法实现运行截图代码实现:import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;/** * Created by IntelliJ IDEA * * @author manzuo * @date 2018/12/14 23:52 * 以邻...

2018-12-15 03:31:24 8123

原创 Ubuntu 安装和配置MySQL

笔者的Ubuntu系统是运行在安装在虚拟机上运行的,先贴一下系统配置系统配置运行环境:Oracle VM VirtualBox 虚拟机系统版本:Ubuntu 18.04 LTS版运行内容:2GB磁盘大小:25GB处理器核心:1个 @2.30GHz x64显存大小:12MB安装方法:命令行窗口镜像切换为了提高软件的下载速度,先把下载的镜像切换到阿里云。打开软件和更新然后在...

2018-12-02 11:12:31 1943

原创 【数据结构】哈夫曼树编码/译码器

前言参考博客:https://www.cnblogs.com/kangjianwei101/p/5242934.html原博客是用C语言实现的,笔者改用java实现,原因主要有以下几点:避免使用复杂的指针,减小错误发生的可能性对字符串和数组的处理都自带了很多方法,不用在自己实现java的char类型用来存储Unicode类型的,字节长为2,而Unicode编码是包含中文的,所以可以直接...

2018-11-28 23:03:33 3132 1

原创 【数据结构】简单LISP算术表达式计算器

(数据结构C语言版习题集实习4.4)问题描述设计一个简单的LISP算术表达式计算器简单的LISP算法表达式(以下简称表达式)定义如下:(1)一个0…9的这个整数;或者(2)(运算符 表达式 表达式)例如 6 , (+45) , (+2(+58)) , (+(+25)+8 , (+(+(+12)(+34))(+(+56)(+78)))都是LISP表表达式实现思路1.仿照“利用栈实现...

2018-11-21 23:13:01 4703 2

原创 【数据结构】稀疏矩阵运算器(加、减、乘)

问题描述稀疏矩阵是指那些多数元素为零的矩阵,利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器基本要求以“带行逻辑连接信息”的三元组顺序表表示系数矩阵,实现两个矩阵相加、相减和想乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵以通常阵列形式列出运行截图数据输入输出结果代码实现import java.util.Ar...

2018-11-21 18:53:20 7106

原创 【SQL学习】select语句使用实例

前言在使用数据库的过程中,我们最常用到还是查询语句,即 select * from tablename, 这篇博客就通过具体的实例说明一下select语句的用法。创建数据库及数据表为了统一下面的查询语句,我这里给出语句,只需要复制然后在你的数据库中执行,就可以创建和笔者一样的数据库环境create database mydb;//创建数据库use mydb; //进入数据库学生表. ...

2018-11-16 16:31:17 7267

转载 80端口被System占用的问题解决

80端口一般被当做网页服务器的默认端口,使用本机搭建服务器环境的时候,都会默认使用80端口来作为网页访问端,但是有的时候80端口会被其他的不明身份的程序占用,导致 Apache 启动失败,修改 Apache 的默认端口后访问本机地址又非常麻烦。下面介绍一下如果80端口被占用后应该如何处理。修改 Apache 的默认端口(强迫症不要用)修改 Apache 端口的方法是最妥协的方法了,后果...

2018-11-13 22:44:04 534

原创 eclipse配置JavaScript 语法智能提示、补全

前言最近用eclipse写js的时候,发现eclipse对js语法并不能做到智能提示,于是想效仿设置java语法只能提示的方法,同样的设置js。但是并没有成功,于是想到了下载插件的方法。插件的下载和安装help-&gt;Eclipse Marketplace搜索 AngularJS Eclipse ,点击 install然后,桌面图标会显示进度条(绿色代表进度),等进度条满...

2018-11-07 14:49:20 14550 7

原创 【数据结构】一元稀疏多项式计算器

基本功能一元多项式的加减一元多项式的乘法一元多项式的导数一元多项式的输出为类数学表达式运行截图:源代码:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;typedef struct{ float coef;//系数 int expn;//指数} Term;typedef struct ploynomial...

2018-11-04 14:54:25 17186 14

原创 phptudy配置虚拟域名的详细步骤

前言我们都知道,我们写HTML的时候,可以直接通过浏览器打开。如果没有部署到服务器而直接打开的话,浏览器的地址栏上显示的是 以 file://开头的html的磁盘文件路径,而不是像我们平时浏览网页的时候以 http:// 开头的。如果我们设计的html文件如果需要以网页的形式部署到服务器上,到时候就需要以http协议访问,所以我们在开发的时候,就需要尽可能的模仿线上的环境,架设本地的服务器,...

2018-10-24 11:58:09 1005

原创 Excel 作图时X轴坐标不均分的问题

前言今天用Excel表格处理大物实验数据时,需要根据数据画出相应的图表。然后就遇到一个问题,作图的时候X轴的坐标不会根据数据大小自动设置间隔。解决办法:尝试了很多办法,最后发现了一个简单的方法:改变 图表的类型我原来使用使用的是折线图,只要把折线图该为折线图就可以。步骤如下:右键点击图表空白处,选择 更改图表类型选择 散点图点击确定然后点击+号勾选趋势线就可以了...

2018-10-21 16:38:22 23730 1

原创 【数据结构】二叉树的链式存储结构(通过前序序列和中序序列构造二叉树)

说明:需要分别输入要二叉树的前序序列和中序序列才能构建二叉树。如果构建失败,程序会报错。比如我们给定一个二叉树,容易知道前序序列为:GDAFEMHZ中序序列为:ADEFGHMZ程序运行结果:源代码#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;string&gt;#include&lt;math.h&gt;...

2018-10-17 19:27:23 8838

ploynomial.c

【数据结构】一元稀疏多项式计算器 基本功能 一元多项式的加减 一元多项式的乘法 一元多项式的导数 一元多项式的输出为类数学表达式

2019-11-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除