- 博客(74)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Git︱十分钟带你将本地文件上传到github
相信一定有很多人想将自己总结的文章或者代码上传到github中管理,便于自己后续翻阅查看。本文小哥哥带你去实现~~
2020-05-05 14:39:19
219
原创 Spring5 事务
1 事务概念1、事务:事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败。2、典型场景:银行转账3、事务四个特性(ACID)(1)原子性 (要么成功要么失败)(2)一致性(数据保持一致)(3)隔离性(互相不干扰)(4)持久性2 入门示例通过银行转账的例子,说明事务的重要性,具体逻辑如下:1、在数据库中建表,添加记录2、创建service,搭建dao,完成对象创建和属性注入service 注入 dao,在 dao 注入 JdbcTemplate,在
2021-11-15 16:25:33
198
1
原创 Spring5 JdbcTemplate数据库操作
1 概念和准备1、Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作2、准备工作(1)引入相关jar包(2)在Spring配置文件配置数据库连接池<!-- 数据库连接池--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name=
2021-11-15 15:35:06
879
原创 Spring5 AOP
什么是AOP通俗描述:不通过修改源代码方式,在主干功能里面添加新功能面向切面编程(方面),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。1 底层原理AOP 底层使用动态代理第一种 有接口情况,使用 JDK 动态代理创建接口实现类代理对象,增强类的方法第二种 没有接口情况,使用 CGLIB 动态代理创建子类的代理对象,增强类的方法2 JDK动态代理2.1 动态代理概念1、使用 JDK 动态
2021-11-15 14:50:36
475
原创 Spring5 IOC容器
1 IOC 概念和原理1.1 什么是 IOC(1)控制反转(Inversion of Control),把对象创建和对象之间的调用过程,交给 Spring 进行管理(2)使用 IOC 目的:为了耦合度降低(3)做入门案例就是 IOC 实现1.2 IOC底层原理1 xml解析xml配置文件,配置创建的对象<bean id=" " class=" "></bean>2 工厂模式定义一个中间静态函数,降低其耦合度3 反射通过反射创建对象2 IOC接口1、I
2021-11-14 21:38:20
65
原创 Spring5 框架概述
1、Spring 是轻量级的开源的 JavaEE 框架2、Spring 可以解决企业应用开发的复杂性3、Spring 有两个核心部分:IOC 和 Aop(1)IOC:控制反转,把创建对象过程交给 Spring 进行管理(2)Aop:面向切面,不修改源代码进行功能增强4、Spring 特点(1)方便解耦,简化开发Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。(2)Aop 编程支持Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运
2021-11-14 17:54:22
254
原创 Web︱JSP
简介JSP(全称Java Server Pages) 与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。总的来说,JSP 网页就是用另一种方式来编写 Servlet 而不用成为 Java 编程高手。除了解释阶段外,JSP 网页几乎可以被当成一个普通的 Servlet 来对待。JSP生命周期就是从创建到销毁的整个过程,类似于servlet生
2021-10-31 21:18:15
767
原创 Web︱Servlet
简介Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。Servlet的任务读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。读取客户端(浏览器)发送的隐式的
2021-10-31 21:10:59
156
转载 JavaScript︱underscore
JavaScript是函数式编程语言,支持高阶函数和闭包。Array有map()和filter()方法,可是Object没有这些方法。方法一,自己把这些方法添加到Array.prototype中,然后给Object.prototype也加上mapObject()等类似的方法。方法二,直接找一个成熟可靠的第三方开源库,使用统一的函数来实现map()、filter()这些操作。我们采用方法二,选择的第三方库就是underscore。jQuery在加载时,会把自身绑定到唯一的全局变量$上,undersco
2021-06-10 10:00:43
354
转载 JavaScript︱jQuery
jQuery简介jQuery是JavaScript世界中使用最广泛的一个库。这么流行,肯定是因为它解决了一些很重要的问题。实际上,jQuery能帮我们干这些事情:消除浏览器差异:不需要自己写冗长的代码来针对不同的浏览器来绑定事件,编写AJAX等代码;简洁的操作DOM的方法:写$('#test')肯定比document.getElementById('test')来得简洁;轻松实现动画、修改CSS等各种操作。jQuery版本目前jQuery有1.x和2.x两个主要版本,区别在于2.x移除了对古
2021-06-10 09:57:56
198
原创 Python︱测试代码
测试函数单元测试用于核实函数的某个方面没有问题。def get_formatted_name(first, last, middle=''): """生成整洁的姓名""" if middle: full_name = first + ' ' + middle + ' ' + last else: full_name = first + ' ' + last return full_name.title()单元测试import unit
2021-06-10 09:41:03
203
2
原创 Python︱文件和异常
从文件中读取数据# pi_digits.txt3.1415926535 8979323846 2643383279# file_reader.pyfilename = 'pi_digits.txt'with open(filename) as file_object: # 读取整个文件 # contents = file_object.read() # # rstrip()删除末尾的空行 # print(contents.rstrip()) #
2021-06-10 09:39:49
66
原创 Python︱面向对象编程
类和实例以Student类为例,在Python中,定义类是通过class关键字:class Student(object): passclass后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的。创建实例是通过类名+()实现的:>>> bart = Student()>>> bart<__main__.Student object at 0x10a67a590>>
2021-06-10 09:38:33
86
原创 Python︱函数式编程
高阶函数函数本身也可以赋值给变量,即:变量可以指向函数。以Python内置的求绝对值的函数abs()为例,调用该函数用以下代码:>>> abs(-10)10>>> x = abs(-10)>>> x10>>> f = abs>>> f(-10)10函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数!如果把abs指向其他对
2021-06-10 09:35:50
71
转载 Python︱高级特性
切片取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下:>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。取前3个元素,用一行代码就可以完成切片:# L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。>>> L[0
2021-06-10 09:32:33
58
原创 JavaScript|浏览器
浏览器对象(BOM)JavaScript可以获取浏览器提供的很多对象,并进行操作。windowwindow对象不但充当全局作用域,而且表示浏览器窗口。window对象有innerWidth和innerHeight属性,可以获取浏览器窗口的内部宽度和高度。内部宽高是指除去菜单栏、工具栏、边框等占位元素后,用于显示网页的净宽高。对应的,还有一个outerWidth和outerHeight属性,可以获取浏览器窗口的整个宽高。console.log('window inner size: ' + wind
2021-05-17 17:24:17
294
原创 JavaScript|面向对象编程
JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。var Student = { name: 'Robot', height: 1.2, run: function () { console.log(this.name + ' is running...'); }};var xiaoming = { name: '小明'};xiaoming.__proto__ = Student;xiao
2021-05-17 17:16:37
53
原创 JavaScript|标准对象
包装对象为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串:typeof 123; // 'number'typeof NaN; // 'number'typeof 'str'; // 'string'typeof true; // 'boolean'typeof undefined; // 'undefined'typeof Math.abs; // 'function'typeof null; // 'object'typeof []; // 'objec
2021-05-17 17:14:30
125
1
原创 JavaScript|函数
函数的定义和调用定义//第一种函数定义function abs(x) { if (x >= 0) { return x; } else { return -x; }}//第二种函数定义方式var abs = function (x) { if (x >= 0) { return x; } else { return -x; }};调用函数由于JavaScript允
2021-05-07 15:18:45
98
原创 Java︱XML与JSON
XML简介XML是可扩展标记语言(eXtensible Markup Language)的缩写,它是是一种数据表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据。例如,一个描述书籍的XML文档可能如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE note SYSTEM "book.dtd"><book id="1"> <name>Java核心技术</name>
2021-04-27 17:54:23
141
原创 Java|网络编程基础
网络编程基础基本概念计算机网络:由两台或更多计算机组成的网络;互联网:连接网络的网络;IP地址:计算机的网络接口(通常是网卡)在网络中的唯一标识;网关的作用就是连接多个网络,负责把来自一个网络的数据包发到另一个网络,这个过程叫路由。用nslookup可以查看域名对应的IP地址:$ nslookup www.liaoxuefeng.com常见协议IP协议是一个分组交换,不保证可靠传输。TCP协议是传输控制协议,它是面向连接的协议,支持可靠传输和双向通信。TCP协议是建立在IP协议之
2021-04-27 17:52:05
259
原创 Java|Maven基础
Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。依赖管理Maven的第一个作用就是解决依赖管理。当我们声明了abc的依赖时,Maven自动把abc和xyz都加入了我们的项目依赖,不需要我们自己去研究abc是否需要依赖xyz。依赖关系scope说明示例compile编译时需要用到该jar包(默认)commons-loggingtest编译Test时需要用到该jar包junit
2021-04-26 17:56:02
91
原创 Java基础|多线程
多线程是Java最基本的一种并发模型。多线程基础进程1、在计算机中,我们把一个任务称为一个进程,浏览器就是一个进程,视频播放器是另一个进程,类似的,音乐播放器和Word都是进程。2、某些进程内部还需要同时执行多个子任务。例如,我们在使用Word时,Word可以让我们一边打字,一边进行拼写检查,同时还可以在后台进行打印,我们把子任务称为线程。3、进程和线程的关系就是:一个进程可以包含一个或多个线程,但至少会有一个线程。4、操作系统调度的最小任务单位其实不是进程,而是线程。常用的Windows、Li
2021-04-26 17:51:48
234
原创 Python︱函数
定义函数在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。def my_abs(x): if x >= 0: return x else: return -x空函数如果想定义一个什么事也不做的空函数,可以用pass语句:def nop(): passpass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在
2021-04-26 17:42:38
76
原创 Python︱基础语法
数据类型和变量除法# 1.除法/>>> 10 / 33.3333333333333335# 2.地板除//>>> 10 // 33字符串和编码格式化在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:>>> 'Hello, %s' % 'world''Hello, world'>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)'
2021-04-26 17:37:45
126
2
原创 Leetcode︱20.Valid Parentheses有效的括号.java
题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 :输入: s = “([)]”输出: false标签栈解题思路方法:栈我们遍历给定的字符串 ss。当我们遇到一个左括号时,我们会期望在后续的遍历中,有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个左括号放入栈顶。当我们遇到一个右括号时,我们需要将一个相同类型
2021-04-22 21:42:01
167
原创 Leetcode︱461. Hamming Distance汉明距离.java
题目两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 2^31.示例 :输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0)标签栈;移位解题思路方法一:栈将二进制数输入到栈中,然后再逐位比较统计。要特别注意,在pop的过程中,size会变化,所以要提前记录好原size长度。方法二:移位按位进行与操作,将其移位后,再进行比较。
2021-04-11 11:10:19
104
原创 Leetcode︱448. Find All Numbers Disappeared in an Array找到所有数组中消失的数字.java
题目给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例 :输入:[4,3,2,7,8,2,3,1]输出:[5,6]标签数组;哈希解题思路方法一:哈希先将数组中出现的数字保存到哈希表中,第二次遍历时,将未在其中的数返回。方法二:技巧解
2021-04-11 07:59:43
94
原创 Leetcode︱543.Diameter of Binary Tree二叉树的直径.java
题目给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 : 1 / \ 2 3 / \4 5返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意: 两结点之间的路径长度是以它们之间边的数目表示。标签二叉树;DFS解题思路方法:深度优先搜索先计算每个节点的左右子树的深度,得出以该节点为核心的直径,经过遍历后得到最长的直径。源自:
2021-03-31 13:05:50
63
原创 JavaScript|快速入门
快速入门简介JavaScript是一种运行在浏览器中的解释型的编程语言。JavaScript代码可以直接嵌在网页的任何地方,不过通常我们都把JavaScript代码放到<head>中。第二种方法是把JavaScript代码放到一个单独的.js文件,然后在HTML中通过<script src="..."></script>引入这个文件。把JavaScript代码放入一个单独的.js文件中更利于维护代码,并且多个页面可以各自引用同一份.js文件。可以在同一个页面中引
2021-03-31 09:58:17
88
原创 Leetcode︱70. Climbing Stairs爬楼梯.java
题目假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意: 给定 n 是一个正整数。示例 :输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶标签数组;动态规划解题思路方法:动态规划第n个台阶只能从第n-1或者n-2个上来。到第n-1个台阶的走法 + 第n-2个台阶的走法 = 到第n个台阶的走法,已经知道了第1个和第2个台阶的走法,一路
2021-03-29 10:45:10
124
原创 Leetcode︱121. Best Time to Buy and Sell Stock买卖股票的最佳时机.java
题目给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 :输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7
2021-03-24 10:28:51
73
原创 Leetcode︱5.Longest Palindromic Substring最长回文子串.java
题目给你一个字符串 s,找到 s 中最长的回文子串。示例 :输入: s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成标签字符串;动态规划解题思路方法:动态规划对于一个子串而言,如果它是回文串,并且长度大于 2,那么将它首尾的两个字母去除之后,它仍然是个回文串。例如对于字符串“ababa”,如果我们已经知道“bab” 是回文串,那么“ababa
2021-03-22 08:58:10
67
原创 Leetcode︱4.Median of Two Sorted Arrays寻找两个正序数组的中位数.java
题目给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 :输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2说明:nums1.length == mnums2.length == n0 <= m <= 10000 <= n <= 10001 <= m + n <= 2000-106 <
2021-03-01 21:53:17
91
1
原创 Leetcode︱3.Longest Substring Without Repeating Characters无重复字符的最长子串.java
题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 :输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。提示:0 <= s.length <= 5 * 10^4s 由英文字母、数字、符号和空格组成标签字符串;哈希解题思路方法:滑动窗口使用两个指针表示字符串中的某个子串(或窗口)的左右边界。源自:https://leetcode-cn.com/problems/longest-s
2021-02-28 17:53:03
85
原创 Leetcode︱2.Add Two Numbers两数相加.java
题目给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 :输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.提示:• 每个链表中的节点数在范围 [1, 100] 内• 0 <= Node.val <= 9• 题目数据保证列表表示
2021-02-28 17:46:54
70
原创 Leetcode︱19.Remove Nth Node From End of List删除链表的倒数第N个节点.java
题目给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例 :给定一个链表: 1->2->3->4->5, 和 *n* = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。标签链表;哑节点;栈解题思路方法一:普通遍历在对链表进行操作时,先统计它的节点个数,再将指针指向待删除的前一个节点,然后进行删除。但同时,我们还需要对头节点进行特殊的判断了。方法二:哑节点在对链表进行操作时
2021-01-03 11:53:55
86
原创 Leetcode|237.Delete Node in a Linked List删除链表中的节点.java
题目请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 :输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.输入:head = [4,5,1,9], node = 1输出:[4,5,9]解释:给定你链表中值为 1 的第三个节
2021-01-01 19:32:00
70
原创 Leetcode|14.Longest Common Prefix最长公共前缀.java
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 :输入: [“flower”,“flow”,“flight”]输出: “fl”输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。标签字符串;递归解题思路方法一:横向扫描依次遍历字符串数组中的每个字符串,对于每个遍历到的字符串,更新最长公共前缀,当遍历完所有的字符串以后,即可得到字符串数组中的最长公
2020-12-27 16:00:26
114
原创 Leetcode|38.Count and Say外观数列.java
题目给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = “1”countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:\1. 1\2. 11\3. 21\4. 1211\5. 111221第一项是数字 1描述前一项,这个数是 1 即 “ 一 个
2020-12-24 13:13:11
96
OSG3.4.0三方依赖库(VS2015 x64)
2020-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人