自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 唐诗分析之数据爬取

项目思路步骤如下: 先抓取唐诗数据的列表页(HTML格式) 从HTML中提取 ①详情页信息 ②总共抓了多少首诗 分别抓取每首诗的详情页(HTML格式) 从详情页HTML中提取诗词信息(标题、朝代、作者、正文) 计算 sha256(标题+正文)——求了一个hash值,保证数据不重复 调用一个分词第三方库,对内容进行分词,用于词云图展示 将数据保存入库技术选型分析上述几个步骤,我们需要用到很多第三方库,有了技术的支持才能完成对应的功能。1、HtmlUnit(用于数据爬取) 通过

2020-09-10 11:30:34 511

原创 云上相册

项目描述该云相册项目相当于是一个存储图片的服务器。它的主要功能是图片存储与展示。用户通过注册登录后,可以将自己的一些生活照、或者自己喜欢的一些图片等上传到服务器上进行保存。项目功能注册和登录服务器(用户名注册)图片的上传,展示,以及删除操作技术选型根据功能,我们可以知道需要的技术有哪些。①前后端交互------Ajax异步提交。这里我使用了Ajax异步提交的方式,一是因为异步提交局部刷新页面,可以减轻服务器的负担。二是因为异步提交,通过jQuery实现非常方便。②数据库存储图片属性信息和

2020-07-31 21:20:47 494 2

原创 唐诗分析页面实现

1、前端渲染工具–echarts需要对数据库中的数据进行分析,那么我们就不可避免的面临分析工具的选择。我们要对数据库中的诗人的作诗量进行统计。那么图表展示是最好的,x轴(诗人)和y轴(作诗量)。这里我们选择第三方库echarts,最主要的是它是一个开源免费的javascript可视化库,并且可以很方便的在其网站上可以进行实时调试(可以边改代码实时查看更新的效果,得到自己想要的效果)。只要对js有了解相信很快就上手。我们就选择了echarts进行绘制!ECharts,一个使用 JavaScript

2020-07-24 20:41:05 241

原创 JDBC中获取Connection的两种方式

JDBC全称Java Database Connectivity,是Java官方定义的一套连接数据库的规范,里面包括各种API,其中最重要的就是关于如何获取数据库连接Connection的方法: ① 直接调用DriverManager类的getConnection方法 ② 实现DataSource接口,调用实例的getConnection方法DriverManager初学JDB,首先都会接触以下的代码,就是先注册相应数据库的JDBC Driver,然后通过JDBC DriverManager获

2020-07-21 20:49:59 6191

转载 Java自带的数据加密类MessageDigest(加密MD5和SHA)

**Java 自带的数据加密类MessageDigest类**说明:在网站中,为了保护网站会员的用户名和密码等隐私信息,所以我们在用户注册时就直接进行MD5方式或其他方式进行加密, 即使是数据库管理员也不能查看该会员的密码等信息,在数据库中查看密码效果如:8e830882f03b2cb84d1a657f346dd41a效果。因为MD5算法是不可逆的,所以被很多网站广泛使用,普遍使用的三种加密方式:方式一:使用位运算符,将加密后的数据转换成16进制方式二:使用格式化方式,将加密后的数据转换

2020-07-21 12:43:54 286

原创 《Java集合类3》Iterator 与 比较器

标题 :Iterator(迭代器)可迭代是Java集合框架下的所有集合类的一种共性,也就是把集合中的所有元素遍历一遍。迭代的过程需要依赖一个迭代器对象。Iterator iterator = list.iterator(); while(iterator.hasNext()){ String string = iterator.next(); }概述迭代—简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模

2020-06-27 19:43:58 163

原创 《Java集合类2》讲解LinkedList

标题 : LinkedList概述LinkedList与ArrayList一样实现List接口。 只是ArrayList是List接口的大小可变数组的实现;&LinkedList是List接口链表的实现。基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问则没有ArrayList效率快。LinkedList实现所有可选的列表操作,并允许所有的元素包括null。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remov

2020-06-27 19:16:31 124

原创 《Java集合类1》ArrayList,Vector与Stack

注:这三个集合类的底层都是数组实现(Stack继承自Vector)并且较为常用。一般在这几方面讨论集合类:1底层数据结构2增删改查方式3初始容量,扩容方式,扩容实际4线程安全与否5是否允许空,是否允许重复,是否有序ArrayList1、概述ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。每个ArrayList实

2020-06-20 22:40:11 168

原创 BufferedReader和Scanner的区别

标题1:BufferedReader的用法首先看看下面的代码import java.io.*;public class Main { public static void main(String[] args) throws IOException { //创建BufferedReader对象,从键盘读入 BufferedReader b1=new BufferedReader(new InputStreamReader(System.in)); //创建Bu

2020-06-13 12:39:46 500

原创 进程知识点

标题:进程知识1、什么是进程:程序的一次执行过程(包含开始和结束), 一个程序可以同时起多个进程,进程是操作系统进程资源分配的最小单位。2、进程的切换常见的发生进程切换的场景:(1)有一个更高优先级的进程过来——抢占式操作系统(2)任务完成(进程结束)(3)每个进程都事先分配好时间片,时间到达后切换(4)当前进程正在等待一个 外部事件——阻塞3、切换引发的问题:进程中的上下文保...

2020-03-18 18:20:06 102

原创 Thread类中的start()方法和run()方法的区别

Thread类中的start()方法和run()方法的区别start()方法用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Thread类的start()方法来启动的线程处于就绪状态(可运行状态),此时并没有真正的运行,只有一旦得到CPU时间片,才会自动开始执行run()方法。run()方法只是线程里的一个函数(也称为线程体),而不是多线程的。如果直接调用run()方法...

2020-03-18 13:11:48 420

原创 多线程基本知识

标题:线程1、线程的概念线程是CPU调度的最小单位。一个进程内的线程之间是可以共享资源的,每一个进程最少有一个线程存在,即就是主线程。2、进程和线程的区别(也是线程的优点)(1) 进程是系统进行资源分配的最小单位,而线程是CPU调度的最小单位。(2)线程的创建、切换及终止效率更高,需要操作系统做的工作更少,代价更小。(3)线程占用的资源要比进程少很多(4)能充分利用多处理器的可并行数...

2020-03-18 13:10:04 149

原创 Java的引用和C++的指针有什么区别

Java的引用和C++的指针有什么区别Java的引用和C++的指针都是指向一块内存地址的,通过引用或指针来完成对内存数据的操作。但是它们在实现、原理、作用等方面却有区别。(1)类型:引用其值为地址的数据元素,Java封装了的地址,可以转成字符串查看,长度可以不必关心。C++指针是一个装地址的变量,长度 一般是计算机字长,可以认为是个int。(2)所占内存:引用声明时没有实体,不占空间。C++...

2020-03-17 21:03:36 210

原创 abstract、final、static关键字

用于定义类、方法、变量修饰符的关键字 abstract、final、static一、abstract1、作用(1)修饰类抽象类可以被继承和实现,但是这个类本身不能实例化;抽象类中可以没有抽象方法,但类中有抽象方法一定是抽象类抽象类中可以没有抽象方法,这样做的作用是这个类不能被实例化;抽象类的子类在继承抽象类后,必须把父类中的抽象方法重写,否则子类也是抽象类;(2)修饰方法抽象方法...

2020-03-17 20:56:57 103

原创 四个访问权限修饰符

private、default、protected、public一、private(私有权限)1、作用(1)可以修饰成员方法、构造方法、成员变量2、应用场景(1)被private修饰的成员,在本类中被访问;(2)将成员变量私有化,对外提供对应的set(), get()方法;3、好处(1)private修饰成员,提高了对数据访问的安全性二、default(默认权限)1、作用(...

2020-03-17 20:43:39 951

原创 implements关键字

implements对于implements关键字,一般是用于类实现接口(interface)时使用。1、接口(interface)(1)定义:接口是一个抽象方法声明和静态不能被修改的数据的集合,不能被实例化。从某种意义说,接口是一种特殊形式的抽象类。(2)实现:接口通过implements关键字来实现接口, 接口允许多继承.public interface MyInterface {...

2020-03-17 20:35:05 1095

原创 extends关键字

extends —— 继承1、目的:解决代码的复用性问题,继承要表达的是 一种有关系的类2、方法的重写(Overwrite)(1)定义:子类重写了父类的一个方法,要求:A.方法名称相同,形参列表相同,返回类型相同特例: 允许返回值类型是父类方法返回类型的子类List method();ArrayList method(); (其中ArrayList是List的子类)B.访...

2020-03-17 20:31:00 484

原创 方法重载 和 方法重写

方法重载 和 方法重写什么是方法的签名? ——> 方法名称+形参列表注:返回值类型不是签名的一部分就是=》 方法的名称 + 形参列表假如两个方法的名称 + 形参列表都一样,那我们称是同一个方法(1)方法的重载 Overload ——是一种现象1、定义:方法名称相同,参数的类型、顺序或个数 不同(简称:参数列表不同)2、应用场景:通常用于创建完成一组任务相似但参数的类型或参...

2020-03-17 20:24:51 107

原创 类和对象的区别

类和对象的区别首先,类和对象是面向对象最基础的两个概念。对象代表了数据和操作的一种封装,而类又是对象的一种抽象。对象是通过类来创造的。面向对象的思想是把程序中的一切都看成是对象,也就是当做一个具体的物件来看待。对象拥有各种属性和动作,比如:兔子有两只耳朵,四条腿,它可以做出跑跳,呼吸,睡觉等动作。同时,这些对象拥有一种共性,即就是它们属于同一类,所有的兔子都有两只耳朵,四条腿,都可以做出跑跳,...

2020-03-17 20:15:37 703

原创 Java中equal和==的区别

标题:Java中equal和==的区别是什么equal和"=="均表示相等的意思,但是它们在进行实际的相等判定时,却有非常大的区别。一、==运算符的执行原理 在开始说equal和==的区别之前,先来看一段示例代码:public class EqualTest { public static void main(String[] args) { //定义3个字符...

2020-02-07 21:04:13 329

原创 Java装箱和拆箱

标题:如何理解Java中的装箱和拆箱基本数据类型的自动装箱(autoboxing)和拆箱(unboxing)是Java5.0提供的新功能。虽然 为打包基本数据类型提供了方便, 但是在提供方便的同时却隐藏了一些细节,建议在能够区分基本数据类型与对象的差别时再使用。一、Java的基础数据类型与包装类型的关系在Java中,所有要处理的东西几乎都是对象。操作对象比操作基本数据类型更方便一些,而基...

2020-02-06 20:18:53 77

原创 什么是JVM及其工作原理

标题:什么是JVM及其工作原理JVM是Java程序运行的平台,它就好像一台虚拟出来的计算机一样,负责执行Java编译好的字节码文件。大多数操作系统都可以安装JVM,为Java语言的跨平台性起到了关键的作用。JVM(Java虚拟机)是一个想象中的机器,在实际的计算机上通过软件模拟来实现。JVM有自己想象中的硬件,如处理器、堆栈、寄存器等, 还具有相应的指令系统。Java语言的一个非常重要的特点...

2020-02-05 19:35:20 658 1

原创 如何启动一个线程

标题1:如何启动一个线程启动一个线程必须调用方法来启动,也就是调用Thread类的start()方法、而不是调用run()方法的原因是:run()中包含的是线程的主体,也就是这个线程被启动后将要运行的代码,它和线程的启动没有任何关系。标题2:Thread类中的start()方法和run()方法的区别start()方法用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Th...

2020-02-03 18:10:27 1718

原创 栈和队列相关知识

栈和队列都是线性表标题1:栈的相关操作1.栈----->只能一头插入 / 一头删除2.出入栈规则:先进后出 First In Last Out(FILO)后进先出 Last In First Out(LIFO)3.存int类型class Stack {//属性:存数据的空间 Int[] array;当前栈内元素个数 Int to...

2020-01-23 20:58:03 187

原创 顺序表和链表的区别

标题:顺序表和链表的区别 顺序表: 空间连续、支持O(1) 下标随机访问 1.中间或前面部分的插入删除时间复杂度O(N) 2.增容的代价比较大。 3.不容易有内存碎片 4.对缓存更友好 5.对于单个数据而言,空间更节...

2020-01-22 21:56:12 288

原创 (Java)旋转数组

标题:旋转数组【题目详述】:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数.【举例】:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]【解题思路】:将数组中的每个数有往右移k位,不够的往第一位移动。比如:数组中的元素7要右移3位,则最终移动到元素3的位置,依次类推。//旋转数组,即:数组中每个元素向右旋转k位pub...

2020-01-15 00:16:23 722

原创 Java中,交换数组中的两个元素位置

标题: 交换数组中的两个不同元素的位置【解题核心】:在Java中,交换数组的两个元素下标位置,必须通过引用来交换。而不能直接进行交换【代码演示】:public class Swap { public static void swap(int[] a, int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } publ...

2020-01-13 11:33:39 15510 1

原创 (Java)求e = 1 + 1/1! + 1/2! + 1/3! + 1/4! + ...+1/n!该式子最终计算结果

标题: 计算e = 1 + 1/1! + 1/2! + 1/3! + 1/4! + …+1/n!***【题目详述】***:题目中方法的参数n是代表计算多少项(下面代码中给了10项)【代码演示】:public class CalcE { //利用迭代方式计算阶乘 public static long factoria2(int n){ int r=1; ...

2020-01-13 10:31:04 4115

原创 (Java)10进制转16进制

标题:(Java)从键盘输入一个十进制数,将该数转换为十六进制【解题思路】:1、首先将输入的数num传给方法的形参n,2、按照转16进制的方法每次除以16,将余数保存起来,而商进行 循环赋值给输入的n,进行相同的操作,3、直到最后商小于16,直接将其作为余数保存起来(这里要区别它是否大于9,要特殊处理),从而得到的字符串就是输入数字的逆序的十六进制,4、最终进行字符串反转得到真正的16...

2020-01-13 10:16:39 3701 1

原创 (Java)递归实现汉诺塔

标题:递归实现汉诺塔//题目详细描述:(前提:第一个柱子上的盘子是按顺序从小到大放置的)将第一个柱子上的所有盘子,先从小盘子开始,最终移动到最后一个盘子上,也是按照顺序,从上到下的盘子是从小到大放置的,一次只能移动一个盘子。(大盘子不能放在小盘子上面 )//核心思想:n代表盘子总个数,source原柱子,dest目标柱子【代码演示:】public class Hannoi { //...

2020-01-13 09:56:47 90

原创 打印九九乘法表

***【代码演示:】***public class 九乘九 { public static void main(String[] args) { for(int i=1;i<=9;i++){//首层循环 for(int j=1;j<=i;j++){//内层循环 //不换行输出 ...

2020-01-13 09:45:56 127

原创 (Java)通讯录的实现

通讯录,我们每个人都基本用过,但是 怎样实现一个简单的通讯录呢???嗯哼我的思路:1、首先用户应进入一个操作界面。2、用户选择去执行哪个项目操作,这时需要输入菜单上想要执行项目对应的序号3、根据用户的选择,执行不同的操作(添加,删除,更新,查找联系人)主函数代码实现:import javax.naming.NameNotFoundException;import java.util....

2019-10-30 18:40:16 3341 1

原创 (Java)子域名访问计数

题目描述:一个网站域名,如"discuss.leetcode.com",包含了多个子域名。作为顶级域名,常用的有"com",下一级则有"leetcode.com",最低的一级为"discuss.leetcode.com"。当我们访问域名"discuss.leetcode.com"时,也同时访问了其父域名"leetcode.com"以及顶级域名 “com”。请输入: [“9001 discus...

2019-10-18 20:21:48 170 1

原创 Java 关于数组复制

**一、首先,要了解数组是对象。看看下面的代码:**int[] scores1={23,45,64,34,76,87,37,58,95,88};int[] scores2=scores1;上面的并不是数组的复制,只是将scores1参考的数组对象,也给scores2参考。二、真正的数组复制,基本做法是要另行建立新的数组。(注意:Java中创建数组的格式------>数组类型[ ...

2019-10-16 17:21:16 134 1

原创 (java)给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点

解题思路:方法一:1.求链表总长,从而确定它的中间结点位置。2.再遍历一次链表,返回中间结点。中心代码实现:class Solution {//求链表长度private int getLength(ListNode head) {int len = 0;for (ListNode cur = head; cur != null; cur = cur.next) {len++;...

2019-07-26 20:20:22 2398

原创 //1. //调整数组使奇数全部都位于偶数前面。 //题目: //输入一个整数数组,实现一个函数, //来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, //所有偶数位于数组的后半

新手上路,请多指教。解题思路:首先,定义一个整数数组(内容随机),及其大小。其次,循环判断数组内的元素,定义两个变量(比如:左变量和右变量),当左变量<右变量时,分别从两边同时向中间循环,若左变量遇到奇数,就继续判断下一个数字,若右变量遇到偶数,就继续判断前一个数字,否则若左变量遇到偶数且右 变量遇到奇数就交换两个数的位置,使其符合题目要求,奇数在前偶数在后。当左变量与右变量相遇,循环...

2019-06-01 12:10:21 125

空空如也

空空如也

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

TA关注的人

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