自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap&ConcurrrentHashMap-总结

目录前言JDK1.7版本HashMapnew-构造一个HashMap对象put方法put方法扩展`indexFor`put方法扩展`addEntry`get方法resize方法并发出现环形链表JDK1.8版本HashMap数据结构和辅助函数改变put方法get方法resize方法并发操作出现的问题JDK1.7版本ConcurrentHashMap核心属性以及数据结构JDK1.8版本ConcurrentHashMap总结前言JavaSE基础知识也学了大部分了,发现Java中有一个数据结构有着举足轻重的重用

2021-01-02 20:57:55 219 1

原创 IOC初体验-结合具体实例

IOC理论代码实例测试在JavaWeb的MVC结构中实现一个接口需要一下几个部分DaoDaoImplServiceServiceImpl假设dao接口针对不同数据库有多个实现类,但是Service层需要调用dao层,然而是通过自己new一个dao层对象实现的,如果更换数据库实现类时会涉及到相关所有service层代码。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D2ALD1Jo-1614693776252)(Spring学习/image-20210302

2021-03-02 22:06:22 270

原创 设计模式-单例模式

单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。介绍意图:保证一个类仅有一个实例,并提供一个访问它的全局访问

2021-02-03 17:01:23 217

原创 <LeetCode>839. 相似字符串组

题目描述题目链接:https://leetcode-cn.com/problems/similar-string-groups/解题思路提示不靠谱,String数组长度有超过100的测试点!!!今日随机题,又双叒叕并查集,连续三天并查集题目~一个String当作一个节点,两个String只交换一次字符就相等说明联通,考虑每个String与其他所有String是否联通,检查是否连通,暴力比较字符不同的位置超过2个说明不连通。并查集使用路径压缩,方便最后直接统计最大连通分量,即直接看p[i]==

2021-01-31 22:28:13 194

原创 <LeetCode>778. 水位上升的泳池中游泳

题目描述题目链接:https://leetcode-cn.com/problems/swim-in-rising-water/解题思路和778. 水位上升的泳池中游泳差不多模子,思路都是二维表每个格子当作图节点,一个图中找路径的问题。数组范围确定了的。第一种解决办法:并查集给平台每个格子编号,从左到右从上到下0~N*N-1,把平台高度当作key,平台编号当作value存到一个数组,这一步避免排序!核心思想:一个i增长表示此时水位高度,平台高度低于这个水位高度的就并入此时连通子图中,其实就是

2021-01-30 22:34:11 184

原创 <LeetCode>1631. 最小体力消耗路径

题目描述题目链接解题思路开始想着,每个节点4种选择,用搜索算法试试。但是复杂度指数级别,又不能设计好的启发式剪枝,放弃。动态规划?看起来每个状态只与相邻4个状态有关,但是需要考虑全局路径,也不行。于是想着把给的数组转换为一个图。行列<=100,最多10000个节点,应该是可行的。每个节点最多出去4条边,边的权值为二维数组相邻格子之差的绝对值。得到一个有向图之后,题面转换为找起点到终点的最优路径,路径花费值是最大边。这里有多种解决方式。Dijsktra最短路算法需要重新定义边的

2021-01-29 18:47:12 164

原创 设计模式-静态代理模式

前言在学习了Java的多线程编程时,Java创建一个线程有如下三种不同方法:继承Thread类实现Runnable接口实现Callable接口其中点开Thread发现了这个类也是实现了Runnable接口,而使用Runnable接口来创建线程有一些继承Thread类没有的优势,比如可以多个线程共享一个对象。创建线程时需要把Runnable接口实现的对象传入Thread。相当于Thread是一个代理!静态代理模式必备条件真实对象和代理对象都要实现同一个接口代理对象要代理真实角色好处

2021-01-28 20:59:55 131

原创 字符集和编码——程序员必修课

ASCII码世界上只有两种人——一种会二进制,一种不会二进制~~~在初学C++时,接触最多的编码就是ASCII码了,全称((American Standard Code for Information Interchange): 美国信息交换标准代码),是老外发明的,老外用的,主要用于显示现代英语和其他西欧语言。然后C++中的char变量使用的就是ASCII码。用sizeof(char)将会得到1,C++中一个char类型占用一个字节的内存。一字节=8个二进制位。而ASCII码实际只需要7位就可编码,

2021-01-01 19:30:10 313 1

原创 关于HashMap容量-JDK15浅析

HashMap容量HashMap是啥~~~以下是来自JDK15源代码中的定义:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable在集合框架中,把Map接口实现并继承了AbstractMap,所以是一个类继续往下读这个类,第一个属性定义源码如下: /** * The default initial cap

2020-12-30 16:19:06 192

原创 <LeetCode>205.同构字符串

问题描述解题思路把两个字符串每个字符都重新映射到一个新的字符组成一个新的字符串,再比较新字符串是否相等就知道原字符串是否同构。注意:这题字符串不止有小写字母。所以映射这个ascii集合,开个128大小的数组。映射思路:待映射的下标从0-128(ascii码范围)扫描两个字符串,遇到一个新字符给他分配一个新的下标,否则就用已经有的映射关系。比如egg开始映射第一步:e新字符,分配下标0第二步:g新字符,分配下标1第三步:g已经存在映射关系直接取值用egg->0 1 1(单个整数

2020-12-27 16:06:53 111

原创 Github pages+hexo == 白嫖?搭建个人展示静态博客

目录博客地址前言搭建环境准备Node.js 的安装和准备git的安装博客本地搭建安装Hexo创建本地文件夹运行起来博客Github部署创建储存桶配置SSH-Key同步到github如何新建文章美化博客地址个人博客地址前言HEXO是一个轻量的博客框架,搭建纯前端博客,就一个展示作用。其实19年就折腾搭建过,但是没一直维护。最近计划系统学习JAVA,于是搭建来记录自己的学习路线。不过得熟练使用markdown来写文章。搭建环境准备Node.js 的安装和准备Node.js官网检验是否安装成功:

2020-12-27 12:41:07 203

原创 <LeetCode>135.分发糖果

每日一题day8问题描述求解思路开始像两边同时顾,但是好像不行官方给的求解思路:开始每人一颗糖,先考虑每个孩子的左边,就如果分数比左边的高,那他至少比前一个人多一颗糖果。但是还要考虑右边的情况。上述同样方法,每个人一颗糖,完后从右往左看,如果比右边的分数高,就至少比他多一颗糖。然后综合两种规则所得每个孩子的糖的数量,取最大值。即他一定满足分数高于两边的孩子时,糖一定更多。C++实现class Solution {public: int candy(vector<int

2020-12-24 17:04:09 142 1

原创 <LeetCode>387.字符串中的第一个唯一的字符

每日一题day7题目描述求解思路不知道一次遍历能不能解决。但两次遍历肯定能出。第一次记录一下每个字符出现的次数。第二次找第一个只出现一次的字符。C++实现class Solution {public: int firstUniqChar(string s) { int a[27]={0}; int ans = -1; for(char ch : s) a[ch-'a']++; for(int i

2020-12-23 23:51:01 133

原创 <LeetCode>103.二叉树的锯齿形层序遍历

每日一题day6题目描述求解思路官方求解思路翻转相对麻烦。按照层序遍历标准写法(即每层都是从左到右的),然后每遍历完一层之后,把存到结果vector中的顺序给改变一下,最开始存的顺序从左到右(即第0层),用一个bool标志位记录即可。如何知道遍历完一层用一个队列保存节点,求队列大小l,然后从队列取l次节点,即遍历完一层,此时队列中保存的就是下一层节点。C++实现public: vector<vector<int>> zigzagLevelOrder(Tree

2020-12-22 17:11:55 171

原创 <LeetCode>746.使用最小花费爬楼梯

每日一题day5题目描述求解思路动态规划,楼梯上的数字理解成离开这一阶梯需要体力值dp[i]表示达到阶梯i的最小体力值n级阶梯从 0 ~ n-1 编号,最后求dp[n]的值状态转移方程:dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]),i>2时dp[0]=dp[1]=0,可以选0或者1为起点C++实现代码class Solution {public: int minCostClimbingStairs(vector<

2020-12-21 18:32:08 118

原创 <LeetCode>316.去除重复字母

每日一题day4题目描述求解思路当前结果用一个栈保存从头到尾遍历字符串,每次遇到一个新的(结果栈中没有该字符)字符时,如果比当前栈顶值小,并且后面还会出现这个字符,就舍弃栈顶字符(可能不止舍弃一次)。因此需要一个数组保存26个字符的个数以及是否在结果栈中。学到了一些新知识:遍历string的一种写法for(char ch : s)相当于C++的:for( int i = 0; i < s.length(); i++) { s[i].... }使用for (char

2020-12-20 23:28:23 234

原创 <LeetCode>48.旋转图像

每日一题day3题目描述解题思路先求转置,再逐行翻转,用到一个辅助变量交换两个数。C++代码class Solution {public: void rotate(vector<vector<int>>& matrix) { int l = matrix.size(); for(int i = 0;i < l;i++){ for(int j = i;j < l;j++){

2020-12-19 11:41:12 125 1

原创 【人工智能实验】Lab3分类算法实验

目录实验内容分类算法汽车满意度数据集实验内容朴素贝叶斯算法原理具体代码实现决策树算法实验内容完成两中分类算法:朴素贝叶斯算法,决策树算法分类算法分类算法是基于有类标号的训练集数据建立分类模型并使用其对新观测值(测试数据集)进行分类的算法。通俗的说就是发现经验,然后通过经验来得到结果。汽车满意度数据集汽车已经成为了人们出行必不可少的工具之一。现在各个汽车销售商也是想方设法提高汽车的销售量。但汽车的销售量是由什么决定的呢?换而言之,汽车的销售量是由客户的满意度来决定的。我们又想问,汽车的满意度是

2020-12-19 11:18:20 1673 2

原创 <LeetCode>389.找不同

每日一题题目描述题解string遍历记录小写字母出现的次数,两个字符串出现字符次数不一样的就是多的字符。时间复杂度O(n+m),n和m表示两个字符串长度class Solution {public: char findTheDifference(string s, string t) { int a[27]={0},b[27]={0}; int l = s.size(); for(int i = 0;i < l;i++){

2020-12-18 20:45:53 120 1

原创 <LeetCode>714. 买卖股票的最佳时机含手续费

题目描述解题思路动态规划。状态定义dp[i][0]:第i天不持有股票的最大利润dp[i][1]:第i天持有股票的最大利润状态转移方程dp[i][0]=max(dp[i-1][0],dp[i-1][1]+prices[i]-fee)第i天不持有股票最大利润有两种可能:前一天(第i-1天)不持有,或者前一天持有今天卖出了。dp[i][1]=max(dp[i-1][0]-prices[i],dp[i-1][1])第i天持有股票最大利润有两种可能:前一天(第i-1天)持有,或者前一

2020-12-17 23:51:30 114

原创 记录一次数据库被盗,勿用弱密码

背景本学期一门编程新实务,几乎一学期的实验都在搞数据库编程,所以头一回接触数据库。完后做最后一次实验,安卓客户端登录注册,需要把注册信息保存到数据库。正好是windows服务器,简单部署之后服务器端提供几个servlet接口给安卓客户端开发即可。这个数据库环境大概是一个多月前安装的。传送门javaweb部署到阿里云服务器过程完后正准备去验收实验时,做最后测试,按照往常一样打开网页端,查看数据库数据:一脸懵逼,报错我的数据库表不存在,然后远程链接到服务器。打开workbench看一下为啥表不在

2020-12-16 19:23:17 366

原创 【编程新实务】Lab4 系统登录/注册模块(Android app)的开发

目录前言展示安卓前端安卓后端服务器后端总结前言本次是本学期编程新实务最后一次实验,四次实验不断迭代最后总能得到一个属于自己的东西。之前也没接触过java,这门课啥都是从0开始基本上。也参考了很多学长的博客和很多大佬的博客!由于之前Lab2已经实现部署到云服务器,因此本次实验相对省心不少。我在Lab2的基础上修改了servlet实现后端传输一个json数据给安卓客户端解析,大多数工作交给了后端完成,传回安卓客户端实际就一个操作结果。比如注册成功/失败,修改密码成功/失败,登录成功/失败(此处多返回na

2020-12-12 00:45:31 658

原创 【编程新实务】Lab3 Android手机拨号器开发

目录实验目的:实验过程实验目的:安装配置好Android开发环境,并使用其开发Android手机拨号器。实验过程本实验是一个验证实验,主要是为了配置好Android开发环境。刚开始在idea配置安卓环境,但是新建的项目他就是报错,网上找了各种原因,说是没下载对应安卓版本sdk,看了一下也下载了,然后又是Gradle的问题,也各种下载了,为了配置环境去下载了各种资源,还花了6.9买了一个百度网盘一天下载加速券,结果还是没整好。。。。。。然后我放弃了索性直接下载Android...

2020-12-01 19:12:13 448

原创 【人工智能实验】Lab2 Prolog编程求解图搜索问题

目录一、实验目的二、实验的硬件、软件平台三、实验内容及步骤实验过程安装prolog(Ubuntu)如何启动用prolog解决汉诺塔问题运行如下:总结一、实验目的熟悉PROLOG的运行环境,进行PROLOG的基本编程练习;了解PROLOG语言中常量、变量的表示方法。PROLOG的简单程序结构,掌握分析问题、询问解释技巧;进行事实库、规则库的编写,并在此基础上进行简单的询问。求解图搜索问题。任选一个以下实际应用题目:爱因斯坦的超级问题、字谜问题、汉诺塔问题、八数码问题、八皇后问题、农夫过河问题、传教

2020-11-26 17:56:30 1708

原创 【人工智能实验】Lab1 搜索算法问题求解

目录一、实验目的二、实验的硬件、软件平台三、实验内容及步骤实验过程算法思想算法实现思考题一、实验目的了解4种无信息搜索策略和2种有信息搜索策略的算法思想;能够运用计算机语言实现搜索算法;应用搜索算法解决实际问题(如罗马尼亚问题);学会对算法性能的分析和比较二、实验的硬件、软件平台硬件:计算机软件:操作系统:WINDOWS/Linux应用软件:C,Java或者MATLAB三、实验内容及步骤使用搜索算法实现罗马尼亚问题的求解1:创建搜索树;2:实现搜索树的宽度优先搜索,深度优先

2020-11-26 17:13:01 1189 1

原创 【编译原理实验】Lab2(二)DFA最小化

目录一、实验目的二、实验任务三、实验内容四、实验步骤如何存DFAHopcroft算法思想算法伪代码算法步骤算法代码运行结果一、实验目的学会编程实现等价划分法最小化DFA。二、实验任务先完善DFA,再最小化DFA。三、实验内容(1)准备3个以上测试DFA文件。(提示:其中一定要有没有最小化的DFA)(2)用C或C++语言编写用等价划分法最小化DFA的程序。(3)经测试无误。测试不易。可求出两个DFA的语言集合的某个子集(如长度小于某个N),再证实两个语言集合完全相同!四、实验步骤如何存DF

2020-11-14 12:59:19 4383 4

原创 【编译原理实验】Lab2(一)NFA确定化

目录一、实验目的二、实验任务三、实验内容四、实验步骤确定如何存NFA子集构造法-算法思想如何存储一个状态集?代码具体实现运行结果一、实验目的学习和掌握将NFA转为DFA的子集构造法。二、实验任务(1)存储NFA与DFA;(2)编程实现子集构造法将NFA转换成DFA。三、实验内容四、实验步骤确定如何存NFA一个NFA如图所示将NFA存在一个文件中,上图NFA表示信息如下3 //字符数a b c //字符集10 //状态数,0 - n-10 //开始状态9 //结束状态12

2020-11-10 19:37:46 3376 5

原创 【编程新实务】番外:Lab2部署到云服务器

目录背景介绍步骤打包成war文件配置服务器运行环境(JDK+Tomcat)开始部署域名解析修改Tomcat配置文件展示总结背景介绍编程新实务Lab2复用Lab1的Java数据库编程,编写一个JavaWeb项目,放在Tomcat服务器上运行。突然想起我有一台腾讯云买的学生机,正好域名也是有的,之前用于搭建Hexo博客的,大一那会只能部署到Github,然后只能本地用Markdown编辑文档写,没改动一次还得重新部署一次,贼傻!结果一次重装系统本地Hexo配置好的所有文件,没了。。。github上好像连博

2020-11-09 20:52:46 404

原创 【编程新实务】Lab1 Java语言编程

目录实验目的实验对应知识点实验前任务实验要求及步骤环境配置设计思路代码实现Peoson类User类PersonOp类UserOp类PropertiesUtil类DB_conn_op类配置文件main,主要为了输出一个步骤化过程运行结果总结实验目的安装、配置好Java编程环境、数据库环境,使用Java 进行编程以及数据库编程。实验对应知识点Java编译、运行,path、classpath环境变量,规范注释。数据库的JDBC驱动。实验前任务学习Java的基本语法以及数据库的理论基础。实验要求及步骤

2020-11-08 00:31:32 1080

原创 【编程新实务】Lab2 HTML以及J2EE简单编程

【编程新实务】Lab2实验目的实验对应知识点实验前任务:代码框架设计思路实验目的安装配置好Tomcat应用服务器,使用Java进行JSP、Servlet的编写web应用并将其部署到Tomcat上。实验对应知识点结合HTML进行JavaEE框架中的JSP、Servlet编程。实验前任务:学习Java的基本语法以及Java数据库编程。代码框架设计思路本实验主要就是实现网页上的手动输入数据插入或者删除。index.jsp为主要前端,负责读取用户输入的需要删除或者插入的信息,以表单形式发

2020-11-06 20:48:11 1722 3

原创 第六章 约束满足问题

任务描述本关任务:使用回溯搜索算法解决八皇后问题并求出共有多少种算法。相关知识为了完成本关任务,你需要掌握什么是 回溯搜索算法。回溯搜索算法搜索与回溯是计算机解题中常用的算法,很多问题无法根据某种确定的计算法则来求解,可以利用搜索与回溯的技术求解。回溯是搜索算法中的一种控制策略。基本思想是:为了求得问题的解,先选择某一种可能情况向前探索,在探索过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向前探索,如此反复进行,直至得到解或证明无解。编程要求在右侧编辑器中完成void sea

2020-11-06 15:29:18 788

原创 人工智能之AlphaBeta剪枝算法

任务描述本关任务:学习人工智能博弈算法中的 AlphaBeta 剪枝技巧,并基于 MinMax 算法编程实现如下图博弈树最优值问题的求解。博弈树的输入形式为字符串:[A, [B, (E, 3), (F, 12), (G, 8)], [C, (H, 2), (I, 4), (J, 6)], [D, (K, 14), (L, 5), (M, 2)]],其中 [] 里的第一项为结点名称,后面的 [] 或 () 为子结点,而 () 里边则为叶子结点名称及其值。通过 Python 中的 ast.literal_

2020-11-06 15:22:01 9455 1

原创 第四章 超越经典搜索

任务描述本关任务:利用遗传算法求解 TSP 问题。相关知识为了完成本关任务,你需要掌握:1. 遗传算法;2. TSP问题。遗传算法一个后继状态由两个父状态决定,以k个随机产生的状态开始(population),一个状态表示成一个字符串。定义一个健康度量函数用来评价状态的好坏程度,通过选择,交叉,突变的操作产生下一轮状态。TSP问题旅行商问题,即 TSP 问题(Traveling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人

2020-11-06 15:11:54 810

原创 第三章 通过搜索进行问题求解

任务描述本关任务:了解有信息搜索策略的算法思想;能够运用计算机语言实现搜索算法;应用A*搜索算法解决罗马尼亚问题;相关知识A*搜索算法介绍:A*算法常用于 二维地图路径规划,算法所采用的启发式搜索可以利用实际问题所具备的启发式信息来指导搜索,从而减少搜索范围,控制搜索规模,降低实际问题的复杂度。算法原理:A*算法的原理是设计一个代价估计函数:其中 **评估函数F(n)**是从起始节点通过节点n的到达目标节点的最小代价路径的估计值,函数G(n)是从起始节点到n节点的已走过路径的实际代

2020-11-06 15:05:11 801 1

空空如也

空空如也

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

TA关注的人

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