- 博客(55)
- 收藏
- 关注
原创 Java类加载器
Java类加载器(Java Classloader)是Java运行时环境(Java Runtime Environment)的一部分,负责动态加载Java类到Java虚拟机的内存空间中。知道类加载的过程吗?类加载过程:加载->连接->初始化。连接过程又可分三步:验证->准备->解析。那么加载时这一步又做了什么?类加载过程的第一步,主要完成下面3件事情:1、通过全类名获取此类的二进制字节流2、将字节流所代表的的静态存储结构转换为方法区的运行时数据结构3、在内存中生成一个
2020-07-18 18:33:58
204
原创 MongoDB单机部署之二
2.1 Windows系统中的安装启动第一步:下载安装包MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community根据上图所示下载 zip 包。提示:版本的选择:MongoDB的版本命名规范如:x.y.z;y为奇数时表示当前版本为开发版,如:1.5.2、4.1.13;y为偶数时表示当前版本为稳定版,如:1
2020-07-13 17:36:05
205
原创 MongoDB初识
1 MongoDB相关概念1.1 业务应用场景传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高”需求:• High performance - 对数据库高并发读写的需求。• Huge Storage - 对海量数据的高效率存储和访问的需求。• High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。而MongoDB可应对“三高”需求。具体的应用
2020-07-06 19:43:36
255
1
原创 JSP
1. 什么是JSPJSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
2020-06-26 23:18:46
514
原创 初始servlet之二:
注解的方式TestServlet.javapackage com.lzy;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebInitParam;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import java
2020-06-26 18:28:02
105
原创 初始servlet之一
DemoServlet.javapackage com.web;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import java.io.IOException;public class DemoServlet implements Servlet { public DemoServlet(){ System.out.println("demoServlet"); }
2020-06-26 18:22:08
87
原创 Java_tomcat
**1. HTTP协议简介**超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系
2020-06-26 18:03:49
425
原创 JavaWeb_Servlet
1. 什么是Servlet(1) Servlet(Server Applet),全称Java Servlet。是用Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。(2) Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展
2020-06-26 17:17:03
459
原创 JDBC
使用JDBC需要加载对应数据库的jar文件.简介Java DataBase Connectivity Java数据库连接我们学习的技术是JDBC 不是 MYSQLJDBC 也不是 ORACLE JDBCJDBC是一套标准,是Java与各大数据库厂商共同定制的一套接口. 这套接口由各大数据库厂商进行了实现发展历史自从Java语言于1995年5月正式公布以来,Java风靡全球。出现大量的用java语言编写的程序,其中也包括数据库应用程序。由于没有一个Java语言的数据库操作API,编程人员
2020-06-26 13:47:19
118
原创 URL与XML
**HTTP协议**HyperText Transfer Protocol超文本传输协议,是TCP/IP协议集中的协议,是一个简单的请求-响应协议,指定了客户端发送给服务器的消息以及服务器的响应。所有的www文件都必须遵守这个标准。
2020-06-24 08:52:11
633
原创 JSON
### JSON简介:JSON:Javascript object Notation JS对象简谱 ,是一种轻量级的数据交换格式.对象格式一本书书名简介java class Book{ private String name; private string info; get/set... } Book b = new Book(); b. setName("金苹果"); b.se
2020-06-24 08:50:30
121
原创 MySQL索引与优化
一、索引的概述与分类什么是索引?MySQL官方定义:索引是(Index)是帮助的MySQL高效获取数据的数据结构,我们可以理解为快速查找排好序的一种数据结构。索引类似于图书的目录索引,可以提高检索的效率,降低数据库的IO成本。索引的分类:主键索引即主索引,根据主键建立,不允许重复,不允许空值;如果表中没有定义主键,InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚簇索引。唯一索引用来建立索引时的列的值必须是唯一的,允许空值。普通索引
2020-06-21 14:53:00
152
原创 java中的关键字transient
一、初识transient关键字其实这个关键字的作用很好理解,就是简单的一句话:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。概念也很好理解,下面使用代码去验证一下:public class User implements Serializable { private static final long serialVersionUID = 123456L; private transient int age; private
2020-06-07 00:13:02
208
原创 二分查找
/**二分查找时间复杂度:O(n)*/public class BinarySearch { public static void main(String[] args) { int [] arr = {1,3,5,7,9}; int a = binary_search(arr,10); System.out.println("该元素的下标为:"+a); } public static int binary_search(int[
2020-06-06 11:10:35
81
原创 最低票价
题目:最低票价题目描述:在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美元。通行证允许数天无限制的旅行。 例如,如果我们在第 2 天获得一张为期 7 天的通行证,那么我们可以连着旅行 7 天:第 2
2020-06-06 11:08:01
87
原创 线程池练习题1
有一个最大并发量为10的线程池;往该线程池中同时提交100个计算任务,计算任务分为四种类型分别为两数之和、两数之差、两数乘积及两数除法,每种类型分别有25个任务。请编写一个程序实现上述逻辑,并描述实现思路。public class Demo { private static double z; public static void main(String[] args) { ExecutorService service = Executors.newFixedThread
2020-06-06 11:06:49
768
原创 统计位数为偶数的数字
统计位数为偶数的数字给你一个整数数组 nums,请你返回其中位数为偶数的数字的个数。示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数)345 是 3 位数字(位数为奇数)2 是 1 位数字(位数为奇数)6 是 1 位数字 位数为奇数)7896 是 4 位数字(位数为偶数)因此只有 12 和 7896 是位数为偶数的数字示例 2:输入:nums = [555,901,482,1771]输出:1解释:只有 1771 是
2020-06-06 11:03:46
568
原创 给定一个链表,判断链表中是否有环
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。示例 3:输入:head = [1], pos = -1输出
2020-06-06 11:01:20
559
原创 主要元素
主要元素如果数组中超过一半的数都是同一个,则称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2:输入:[3,2]输出:-1public class MajorityElement { public static void main(String[] args) { int[] nums = {1, 2}; System.out.println(majorityEl
2020-06-06 10:56:16
157
原创 盛最多水的容器
题目:盛最多水的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。public class MaxArea { public static void main(String[] args) { int[] height = {7,4,
2020-06-06 10:54:17
116
原创 二叉树的最大深度
题目:二叉树的最大深度题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \9 20/ 15 7返回它的最大深度 3 。public class MaxDepthBinaryTree {static class TreeNode{int val;TreeNode left;TreeNode right;p
2020-06-06 09:51:35
87
原创 礼物的最大价值
题目:礼物的最大价值题目描述:在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物提示:0 < grid.length <= 2000 < g
2020-06-06 09:50:19
118
原创 合并两个有序链表
题目:合并两个有序链表题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4public class MergeOrderedList {public static void main(String[] args) {Node node1 = new Node(1);Node node2 = new Node
2020-06-06 09:48:42
95
原创 填充书架
题目:填充书架题目描述:附近的家居城促销,你买回了一直心仪的可调节书架,打算把自己的书都整理到新的书架上。你把要摆放的书 books 都整理好,叠成一摞:从上往下,第 i 本书的厚度为 books[i][0],高度为 books[i][1]。按顺序 将这些书摆放到总宽度为 shelf_width 的书架上。先选几本书放在书架上(它们的厚度之和小于等于书架的宽度 shelf_width),然后再建一层书架。重复这个过程,直到把所有的书都放在书架上。需要注意的是,在上述过程的每个步骤中,摆放书的顺序与
2020-06-06 09:46:57
111
原创 飞机座位分配概率
题目:飞机座位分配概率题目描述:有 n 位乘客即将登机,飞机正好有 n 个座位。第一位乘客的票丢了,他随便选了一个座位坐下。剩下的乘客将会:如果他们自己的座位还空着,就坐到自己的座位上,当他们自己的座位被占用时,随机选择其他座位第 n 位乘客坐在自己的座位上的概率是多少?示例 1:输入:n = 1输出:1.00000解释:第一个人只会坐在自己的位置上。示例 2:输入: n = 2输出: 0.50000解释:在第一个人选好座位坐下后,第二个人坐在自己的座位上的概率是 0.5。pub
2020-06-06 09:43:12
270
原创 解码方法
题目:解码方法题目描述:一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26), “VF” (22 6), 或者 “BBF” (2 2 6) 。public class NumD
2020-06-06 09:41:36
142
原创 一次编辑
题目:一次编辑题目描述:字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入:first = “pale”second = “ple”输出: True示例 2:输入:first = “pales”second = “pal”输出: Falsepublic class OneEdit {public static void main(String[] args) {S
2020-06-06 09:39:13
356
原创 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。*不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 n
2020-06-06 09:37:38
101
原创 存在重复元素
题目名称:存在重复元素题目描述:给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true*public class RepeatData {public static void main(Stri.
2020-06-06 09:36:06
116
原创 反转链表
题目:反转链表题目描述:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000public class ReverseLinkedList {static class ListNode{int val;ListNode next = null;ListNod
2020-06-06 09:33:59
131
原创 翻转字符串里的单词
题目:翻转字符串里的单词题目描述:给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good example”输出: “example good a”解释: 如果两个单词间有多余的空格,将反转后单词间的空
2020-06-06 09:31:36
125
原创 部分排序
/**部分排序给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。示例:输入: [1,2,4,7,10,11,7,12,6,7,16,18,19]输出: [3,9]提示:0 <= len(array) <= 1000000*/public
2020-06-06 09:28:56
437
原创 相同的树
题目:相同的树题目描述:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1/ 2 2 [1,2], [1,null,2]输出: false示
2020-06-06 09:27:15
82
原创 线程及线程池
*1、创建线程有几种方式?Java中创建线程主要有三种方式:继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程通过Runnable接口创建线程类(1)定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。(2)创建 Run
2020-06-01 18:50:54
153
原创 == 与equals 和 hashCode与equals
== :它的作用是判断两个对象的地址是否相等。判断两个对象是不是同一个对象(基本数据类型比较的是值,引用数据类型比较的是内存地址)。equals(): 它的作用也是判断两个对象是否相等。但是它一般有两种情况:1、类没有覆盖equals方法。则通过equals()方法比较两个类的对象时,等价于通过“==”比较两个对象。2、类如果覆盖了equals方法。一般,覆盖equals()方法来比较对象的内容是否相等;若它们的内容相等,则返回true(认为这两个对象相等)。总结:String中的equals方
2020-05-30 16:29:01
154
原创 String、StringBuffer 和StringBuilder的区别是什么?String 为什么是不可变的?
String、StringBuffer 和StringBuilder的区别是什么?String 为什么是不可变的?可变性简单来说:String 类中使用final关键字修饰字节数组来保存字符串,private final byte[] value; ,所以String对象是不可变的。而StringBuilder 与StringBuffer 都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字节数组保存字符串 byte[] value,但是没有用f
2020-05-30 15:24:47
475
原创 多线程和哈希的一点笔记
一、多线程单核CPU:是没有并发处理的概念,一个核只能同时处理做一件事情。多个事情可以交替执行。临界资源:某一时刻只能属于一个线程使用。并发安全问题:多个线程同时去争抢一个临界资源,引发的问题。单例模式中的线程安全问题:1、没有if判断的,直接在成员变量那里初始化实例,不会产生线程安全问题,但会产生阻塞的情况。2、有if判断,在if判断里new一个实例对象,会产生线程安全问题。3、getSingleton 静态方法加了synchronized 关键字。不会产生线程安全问题。这是 加了一把类锁。
2020-05-30 11:23:31
420
原创 多线程的一点笔记
多线程线程与进程进程:是指一个内存中运行的应用程序,每一个进程都有独立的内存空间。线程:是进程的中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程至少有一个线程。一个进程启动后,里面的若干执行路径又可以划分为若干个线程。线程调度:分时调度:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间。抢占式调度:优先让优先级高的线程使用CPU。如果线程的优先级相同,那么会随机选择一个(线程随机性),java使用的是抢占式调度。CPU使用抢占式调度在多个线程间
2020-05-20 22:23:51
69
原创 集合
集合类集设置的目的:为了方便用户操作各个数据结构,所以引入了类集的概念。可以把类集称为java对数据结构的实现。类集中最大的操作接口,Collection、Map、Iterator。所有类集的接口或类都在java.util包中。常用的数据结构:栈、队列、数组、链表和红黑树。栈 (堆栈) :是限定在表尾进行插入和删除的线性表。允许插入和删除的一端为栈顶,另一端为栈底。无任何数据元素的栈为空栈。栈又称先进后出的线性表。特点:1、先进后出。 即先存进取得元素要在后面存进的元素依次取出后,才能
2020-05-18 20:18:53
189
原创 ConcurrentModificationException异常
ConcurrentModificationException异常也叫作并发修改异常如下: ArrayList<String> list = new ArrayList<>(); list.add("111"); list.add("222"); list.add("333"); System.out.println(list); //遍历 //ConcurrentModific
2020-05-16 17:57:55
327
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人