- 博客(35)
- 收藏
- 关注
原创 从URL到页面显示
从URL到页面显示1.解析 URL浏览器第一步要做的就是解析 URL,从而生成发送给 Web 服务器的请求信息。URL 元素组成http: + // Web服务器 + [/ + 目录名 + / ... + 文件名]对 URL 进行解析之后,浏览器确定了 Web 服务器和文件名,接下来就是对这些信息生成 HTTP 请求。2. DNS 解析域名浏览器解析 URL 并生成 HTTP 消息后,需要委托操作系统将消息发送给 Web 服务器。但是委托操作系统发送消息时,必须提供通信对象的 IP 地址。
2022-01-17 22:31:10
779
原创 Java 静态代理、JDK动态代理、CGLIB代理的区别及原理
Java 静态代理、JDK动态代理、CGLIB代理代理(Proxy):是一种设计模式,提供了对目标对象另外的访问方式,即通过代理对象访问目标对象。好处:可以在目标对象实现的基础上,增强额外的功能操作,即目标对象的扩展功能。举个例子:假如产品经理提了一个新的需求,需要在某个方法调用之前以及调用之后打印日志。那么我们就可以通过代理的方式,不修改方法内部的代码而实现。1. Java静态代理静态代理: 代理对象和目标对象实现相同的接口或者继承相同的父类,然后通过调用代理对象的方法来调用目标对象的方法实现代
2022-01-15 22:29:45
469
原创 最小化一维曼哈顿距离的简单证明
最小化一维曼哈顿距离的简单证明对于在数轴上的 nnn 个点,要集合所有点于同一位置,使得移动的曼哈顿距离之和最小,那么应该选取哪个点呢?设有 nnn 个点, iii 点的位置为 xix_ixi ,且有 xi≤xi+1 (i=0,1,2…,n−1)x_i \le x_{i+1} \ (i=0,1,2 \dots, n - 1)xi≤xi+1 (i=0,1,2…,n−1)则对于 kkk 点,距离之和为:同理,对于 k+1k+1k+1 点,距离之和为:那么对于选择相邻两点时
2021-10-10 14:21:02
562
原创 Spring 整合 MyBatis 发生错误java.lang.ClassNotFoundException: Cannot find class:xxx
Spring 整合 MyBatis 发生错误java.lang.ClassNotFoundException: Cannot find class:搭建项目时,测试 mapper 是否能够加入到 IOC 容器的时候,出现如下错误:这是由于生成 mapper 的代理类时无法找到实体类查看 AdminMapper.xml 文件发现 MyBatis 逆向工程生成的 mapper.xml 文件没有使用全类名故在 MyBatis 全局配置文件 mybatis-config.xml 中配置类型别名再次
2021-04-21 15:05:07
1339
原创 2021年第十二届蓝桥杯 Java B 组省赛填空题解析
蓝桥杯第十二届 Java B 组省赛填空题解析第一题【问题描述】已知大写字母 AAA 的 ASCIIASCIIASCII 码值为 656565, 那么大写字母 LLL 的 ASCIIASCIIASCII 码值为多少?【思路】签到题【代码】public class Q1 { public static void main(String[] args) { System.out.println((int) ('A')); }}【答案】76第二题【问题描
2021-04-19 09:39:40
782
4
原创 荷兰旗问题、三分法、Three-Way-Partition 详解
Three-Way-Partition荷兰国旗是由红白蓝3种颜色的条纹拼接而成,如下图所示:假设这样的条纹有多条,且各种颜色的数量不一,并且随机组成了一个新的图形,新的图形可能如下图所示,但是绝非只有这一种情况:需求是:把这些条纹按照颜色排好,红色的在上半部分,白色的在中间部分,蓝色的在下半部分,我们把这类问题称作荷兰国旗问题。我们把荷兰国旗问题用数组的形式表达一下是这样的:给定一个整数数组,给定一个值 Key,这个值在原数组中一定存在,要求把数组中小于 Key 的元素放到数组的左边,大于 K
2021-04-14 20:12:58
595
原创 拓扑排序详解 Java 模版代码实现
拓扑排序对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。举个例子,比如,我们在选修某些课程之前需要一些先修课程我们需要学习课程 A、B,才能学习 C那
2021-04-14 16:40:22
1006
1
原创 判定素数的3种方法-枚举法、筛素数法、六素数法
判定素数的3种方法-枚举法、筛素数法、六素数法素数的定义一个大于 1 的自然数,除了 1 和 它自身外,不能被其他自然数整除的数叫做质数;否则称合数(规定 1 即不是质数也不是合数)枚举法思路我们可以根据素数的定义一步步写出函数判断一个数是否是素数1)一个大于 1 的自然数static boolean isPrime(int num) { // 根据素数定义可知素数为大于 1 的自然数 if (num < 2) return false; //...}2
2021-04-14 14:54:16
1525
原创 矩阵快速幂+动态规划=蓝桥杯 垒骰子
矩阵快速幂+动态规划=蓝桥杯 垒骰子如果还不知道什么是矩阵快速幂,可以参加我的另一篇文章:矩阵快速幂详解题目分析看到 nnn 的范围达到了 10910^{9}109 ,如果使用暴力搜索是不现实的。我们看看是否可以利用动态规划解决问题呢?首先定义我们 dpdpdp 数组的含义:dp[i][j]dp[i][j]dp[i][j] 为第 iii 个骰子, jjj 面朝上时的组合数。列出 base case:只有一个骰子时,jjj 面朝上时,有四种方式。因为骰子有四个侧面,可以选择任意侧面。即:
2021-04-12 20:39:17
192
原创 矩阵快速幂-求解斐波那契数列
矩阵快速幂斐波那契数列F0=0F_0=0F0=0F1=1F_1=1F1=1Fn+2=Fn+1+FnF_{n+2}=F_{n+1}+F_{n}Fn+2=Fn+1+Fn求这个数列第 nnn 项的值对 109+710^9+7109+7 取模后的结果限制条件0≤n≤10180\leq n \leq 10^{18}0≤n≤1018通过逐项计算递推式,可以在 O(n)O(n)O(n) 的时间内计算出结果,不过 nnn 最大达到了 101810^{18}1018 ,这个算法效率也太低了。推导
2021-04-12 10:58:55
561
1
原创 2020年第十一届蓝桥杯第二场参赛 Java B 组真题
2020年第十一届蓝桥杯第二场参赛 Java B 组真题第一题public class Q1 { public static void main(String[] args) { int sum = 0; for (int i = 1; i <= 2020; i++) { sum += count(i); } System.out.println(sum); } static int count(int num) { int res = 0; while
2021-04-07 19:14:12
273
3
原创 2019年第十届蓝桥杯省赛 Java B 组真题
2019年第十届蓝桥杯省赛 Java B 组真题第一题第二题import java.util.HashSet;import java.util.Set;public class Q2 { static String s = "0100110001010001"; static Set<String> set = new HashSet<>(); public static void main(String[] args) { for (int i
2021-04-07 19:11:11
298
原创 2016年第七届蓝桥杯参赛 Java A 组真题
2016年第七届蓝桥杯参赛 Java A 组真题第一题public class Q1 { public static void main(String[] args) { int sum = 0, a = 0, d = 1; for (int i = 0; i < 100; i++) { a += d; sum += a; d++; } System.out.println(sum); }}答案:171700第二题public class Q2
2021-04-07 19:09:40
186
原创 2016年第七届蓝桥杯省赛 Java B 组真题
2016年第七届蓝桥杯省赛 Java B 组真题第一题public class Q1 { public static void main(String[] args) { int sum = 0, a = 0, d = 1; for (int i = 0; i < 100; i++) { a += d; sum += a; d++; } System.out.println(sum); }}答案:171700第二题public class Q2
2021-04-07 19:08:36
193
原创 2015年第六届蓝桥杯省赛 Java A 组真题
2015年第六届蓝桥杯省赛 Java A 组真题第一题public class Q1 { public static void main(String[] args) { int n = 1543, ans = 0; while (n > 0) { if (n % 2 != 0) { n--; ans++; } n /= 2; } System.out.println(ans); }}答案:5第二题import java.uti
2021-04-07 19:07:30
150
原创 2015年第六届蓝桥杯参赛 Java B 组真题
2015年第六届蓝桥杯参赛 Java B 组真题第一题答案:7∗(2+6)/2=287 * (2 + 6) / 2 = 287∗(2+6)/2=28第二题public class Q2 { static int ans = 0; public static void main(String[] args) { for (int i = 1; i < 100; i++) { if (sum(i * i * i) == i) { System.out.print
2021-04-07 19:06:26
125
原创 2017年第八届蓝桥杯省赛 Java A 组真题
2017年第八届蓝桥杯省赛 Java A组第一题import java.util.Arrays;import java.util.Scanner;public class Q1 { static char[][] mp = new char[10][10]; static boolean[][] vis = new boolean[10][10]; static int ans = 0; public static void main(String[] args) { Scan
2021-04-07 19:04:34
273
1
原创 2017年第八届蓝桥杯参赛 Java B 组真题
2017年第八届蓝桥杯 Java B组真题第一题import java.util.Scanner;public class Q1 { static double price, discount, sum = 0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { sc.next(); price = Double.pa
2021-04-07 19:02:34
212
1
原创 2018年第九届蓝桥杯省赛 Java A 组真题
2018年第九届蓝桥杯省赛 Java A 组真题第一题public class Q1 { public static void main(String[] args) { long x = 0, y = 1; for (int i = 1; i <= 20; i++) { long m = 1 << (i - 1); long ty = m * y; long tx = x * m + y * 1; long g = gcd(tx, ty);
2021-04-07 19:01:06
202
原创 2018年第九届蓝桥杯省赛 Java A 组真题
2018年第九届蓝桥杯省赛 Java A 组真题第一题import java.util.Calendar;public class Q1 { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2000); // 月份从 0 开始 cal.set(Calendar.MONTH, 0); cal.set(Calendar.
2021-04-07 18:59:39
192
原创 SSM-员工管理项目实战-CRUD-增删改查
SSM-CRUD一、项目简介主界面演示功能点分页数据校验ajaxRest 风格的 URI技术点基础框架 - ssm(Spring + SpringMVC + MyBatis)数据库 - MySQL前端框架 - bootstrap (快速简洁美观的界面)项目的依赖管理 - Maven分页 - pagehelper逆向工程 - MyBatis Generator二、基础环境搭建1、创建 Maven 工程 ssm_crud_study3、添加 web 框架(1)右键
2021-03-28 18:39:30
1738
原创 蓝桥杯 2014届真题 地宫取宝 动态规划解法
蓝桥杯 2014届真题 地宫取宝 动态规划解法题目描述X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝。输入
2021-03-02 21:39:06
205
原创 Spring5 框架 笔记(四)事务操作 详解 手把手教学
五、事务操作1. 事务概念1、什么是事务(1)事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败(2)典型场景:A 转账给 B 100 元 要么转账成功:A 少 100 元,B 多 100 元 要么转账失败:A 不少, B 不多 不能 A 少 100 元而 B 没得到 100元2、事务四个特性(ACID)(1)原子性(Atomicity) 一个事务要么都成功,要么全部失败回滚,不能只执行其中的一部分操作(2)一致性(Consistenc)
2021-02-27 11:43:06
144
原创 Spring5 框架 笔记(三)JdbcTemplate 详解 手把手教学
四、JdbcTemplate1. JdbcTemplate 概念和准备1.1 什么是 JdbcTemplateSpring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现数据库的操作1.2 准备工作(1)引入相关 jar 包(2)在 Spring 配置文件配置数据库连接池<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="dr
2021-02-27 11:41:32
261
原创 Spring5 框架 笔记(二)AOP 详解 手把手教学
三、AOP1. AOP 概念及原理1.1 什么是 AOP(1) AOP(Aspect-Oriented Programming: 面向切面编程) ,利用 AOP 可以对业务逻辑各个部分进行隔离。从而使得业务逻辑各部分耦合度降低,提高程序的可重用性,同时提高了开发的效率。(2) 通俗描述:不通过修改源代码的方式,在主干功能里添加新功能。(3) 举例: 假设现在项目经理有一个需求:在项目所有类的方法前后打印日志。 通过静态代理,我们可以实现此功能: 但是如果手动添加,程序员要为每一个
2021-02-27 11:40:07
158
原创 Spring5 框架 笔记(一)IoC 详解 手把手教学
Spring 5 框架一、Spring5 框架概述Spring 是轻源级的开源的 Java EE 框架Spring 可以解决企业应用开发的复杂性Spring 有两个核心的部分: IOC 和 Aop(1) IOC: 控制反转,把创建的对象交给 Spring 进行管理(2) Aop: 面向切面,不修改源代码进行功能的增oSpring 的 6 个特征:o核心技术 :依赖注入(DI),AOP,事件(events),资源,i18n,验证,数据绑定,类型转换,SpEL。测试 :模拟对
2021-02-25 21:59:21
288
原创 设计模式-工厂方法模式 实战演习 代码实现
设计模式-工厂方法模式一、工厂方法模式介绍工厂模式,是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。工厂模式是 Java 开发中最常见的一种模式,其主要意图是定义一个创建对象的接口,让其子类决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。简单说就是为了提供代码的可扩展性,屏蔽每一个功能类中的具体实现逻辑。让外部可以更加简单的调用。同时,可以去掉众多 ifelse 。优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想
2021-02-24 15:40:39
94
原创 2019 第十届蓝桥杯大赛软件类省赛 Java A组 题解
2019 第十届蓝桥杯大赛软件类省赛 Java A组试题A题解 题目最后一句贴心的提示选手应该使用 long (C/C++ 应该使用 long long)。 本题思路很直白,两重循环。外层循环 1 到 2019,内层循环检验是否含有 2、0、1、9 这四个数字。 赛场上还可以将数字转换为字符串,利用 String.contains() 快速写出代码,虽然时间复杂没有改变,但应付填空题足矣。代码public static void questionA() { long sum
2021-02-24 09:41:22
583
2
原创 MySQL 常用命令手册 增删改查大法
一、数据库操作创建数据库语法:CREATE DATABASE database_name;删除数据库删除数据库务必谨慎!因为执行删除命令后,所有数据将消失。语法:DROP DATABASE database_name;选择数据库语法:USE database_name;二、数据表操作数据类型数值类型类型大小用途TINYINT1 byte小整数值SMALLINT2 bytes大整数值MEDIUMINT3 bytes大整数值I
2021-02-24 09:35:45
79
原创 利用 JS 脚本实现网页全自动秒杀抢购
利用 JS 脚本实现网页全自动秒杀抢购倒计时页面:倒计时未结束时,购买按钮还不能点击。结束时,可以点击购买,点击后出现提示“付款成功”展示效果1.制作测试网页首先我们来做一个简易的抢购页面<!DOCTYPE html><html lang="zh_CN"><head> <meta charset="UTF-8"> <title>Apple</title> <style type="te
2020-10-11 14:31:44
30023
16
原创 MySQL的简单使用 手把手教学
MySQL的使用1.登陆数据库打开terminal在终端根文件目录下输入/usr/local/mysql/bin/mysql -u root -p接着输入管理员密码2.显示所有的数据库输入:mysql> SHOW DATABASES;(不要忘记加 ‘ ; ’ ,在mysql中分号为一句语句的结束)显示结果:+--------------------+| Database |+--------------------+| information_sche
2020-10-09 08:36:14
104
原创 Java IO流 复制文件速度对比 手把手教学
Java I/O流 复制文件速度对比首先来说明如何使用Java的IO流实现文件的复制:第一步肯定是要获取文件这里使用字节流,一会我们会对视频进行复制(视频为非文本文件,故使用之)FileInputStream fis = new FileInputStream("copyFileName.format");// 用于读取文件FileOutputStream fos = new FileOutputStream("generatedFileName.format"); // 用于生成文件,若文件不
2020-10-09 08:34:55
466
原创 利用递归实现链表的排序(归并排序)
利用递归实现链表的排序(归并排序)利用归并排序,我们可以将时间复杂度降至O(nlogn), 并且我们是对链表进行排序,可以通过修改引用来更改节点顺序,无需像数组一样开辟而外的空间。利用递归实现链表的归并排序有两个环节:分割cut环节:我们可以利用fast, slow快慢双指针实现链表的分割, fast一次移动两位, slow一次移动一位,当fast移动到末尾时,slow移动到中间位置。利用变量为tmp = slow.next记录后链表的头节点,并将slow.next = null将前后链表断开。
2020-10-09 08:32:22
1095
1
原创 利用递归方法实现链表反转、前N个节点反转以及中间部分节点反转
一、反转整个链表问题:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL//单链表的实现结构public class ListNode { int val; ListNode next; ListNode(int x) { val = x;}}反转链表利用迭代不难实现,如果使用递归则有些许难度。首
2020-09-06 15:03:01
1663
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人