- 博客(75)
- 收藏
- 关注
原创 HashMap底层原理理解
1、底层结构HashMap底层结构在jdk1.7之前和1.8之后会有一些变化。jdk1.7以前hashmap底层结构采用数组+链表jdk1.8之后hashmap底层结构采用数组+链表+红黑树原理hashmap是一个关联数组、哈希表,它是线程不安全的,允许key为null,value为null。遍历时无序。hashmap在put一个值的时候把key values 封装成一个entry,1、首先会通过调用一个hash(key)方法得到一个hashcode值,2、然后通过这个hashcode值
2021-09-07 23:33:19
295
原创 IDEA2020连接mysql8.0时时区问题的解决方法
IDEA2020连接mysql8.0时时区问题的解决方法登录mysql 设置时区:set global time_zone='+8:00';在MySQL目录下的my.ini里面加上default-time_zone=’+8:00’保存即可[mysqld]port=3306default-time_zone='+8:00'如何找到my.ini文件在C:\Program Files中把URL改成%ProgramData%回车;然后找到MYSQL文件,然后就找到了。3. 设置后
2021-05-05 14:37:36
749
原创 软件工程homework----九宫格记忆网
1.1开发背景随着工作和生活节奏的不断加快,属于自己的私人时间越来越少,日记这种传统的倾诉方式也逐渐被人们淡忘,取而代之的是各种各样的网络日志。最近网络中又出现了一种全新的日记方式一九宫格日记,它由9个方方正正的格子组成,让用户可以像做填空题那样对号入座,填写相应的内容,从而完成一篇日记,整个过程不过几分钟,非常适合在快节奏的生活中,留下自己的心灵足迹。1.2 需求分析通过实际调查,要求九宫格日记网具有以下功能:1.为了更好地体现九宫格日记的特点,需要以图片的形式保存每篇日记,并且日记的内容写在九
2020-12-31 19:27:24
1669
原创 SpringBoot简介
一、 SpringBoot简介1.1原有Spring优缺点分析1.1.1 Spring的优点分析Spring是Java企业版(Java Enterprise Edition, JEE, 也称J2EE)的轻量级代替品。无需开发重量级的EnterpriseJavaBean (EJB) ,Spring为企业级Java开发提供了-种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object, POJO) 实现了EJB的功能。1.1.2Spring的缺点分析
2020-12-31 19:17:48
279
转载 面向过程
首先我们来认识下,什么是面向过程?如果咬文嚼字的话可以这样来理解,面向过程就是面向解决问题的过程进行编程。仔细思考一下,我们在学习和工作中,当我们去实现某项功能或完成某项任务时,是不是会不自觉的按部就班的罗列出我们要做的事情?(如果没有,建议以后试着步骤化解决问题)。而当我们按着我们罗列的步骤去解决问题时,实质上就是按照面向过程的思想去解决问题。我们罗列的步骤就是过程,按照步骤解决问题就是面向过程。传统的面向过程的编程思想总结起来就八个字——自顶向下,逐步细化!实现步骤如下:将要实现的功能描述为一个从开
2020-12-29 10:39:03
1072
转载 Java面向对象概述
1面向对象编程在提及面向对象时,不得不提到另一个概念:抽象。编程的最终目的是为了解决某个问题,问题的复杂度直接取决于抽象的类型和质量。早期的汇编语言通过对底层机器作轻微抽象,到后来的 C 语言又是对汇编语言的抽象。尽管如此,它们的抽象原理依然要求我们着重考虑计算机的底层结构,而非问题本身面向对象编程(Object-Oriented Programming OOP)是一种编程思维方式和编码架构。不同于传统的面向过程编程,面向对象编程把问题空间(实际要解决的问题)中的元素以及它们在解决方案空间中的表示以一种
2020-12-24 19:22:22
242
1
原创 IDEA像Eclipse一样同窗口显示多个项目
在使用Eclipse的时候我们可以创建多个项目并且在一个窗口显示,便于项目直接的项目管理。但是IDEA默认情况下只支持打开一个项目,就算是添加一个新的项目也会是打开一个新的窗口,在新的创建里面显示添加的项目。不过有一种操作可以让IDEA一个窗口显示多个项目:1.点击左上角的File->Project Structure2.找到Modules 点击右上方的’+'号,选择Import Modules,如下图所示:3.选择你需要显示在同一个窗口下的项目目录,我这里是Array:5.一系列的
2020-12-23 18:37:55
896
原创 子集和问题
问题描述:给定集合S,S中有n个正整数,M是一个正整数。子集和问题判定是否存在S的一个子集S1,使得S1中各元素之和等于M。请设计回溯法求解子集和问题,如果问题无解,输出“No Solution”,问题有解,则输出满足子集S1中各元素的值。输入6 123 4 5 7 10 1输出3 4 5#include <iostream>using namespace std;const int N = 10005;int a[N], n, m, rec[N]; bool nu;vo
2020-12-20 16:31:36
412
原创 寻宝
小明有一张藏宝图,上面有m*n个房间,每个房间里面都有一个有一定价值的宝物,小明只能从左上角的房间进入收集宝物,且每次只能向右边或向下边的房间继续寻宝,最终只能从最右下的房间出来。请你帮小明计算下他最多可以收集到多少价值的宝物?输入格式:输入第一行给出两个正整数m,n(1=<m,n<=2000),随后给出m行数据,每行都包括n个正整数,中间用空格分割。输出格式:输出收集到的最大价值v,题目保证v<10^9。输入样例:4 41 18 9 37 10 6 125 13 4 1
2020-12-20 11:05:36
265
1
原创 矩阵链相乘问题
矩阵的乘法定义如下:设A是m×p的矩阵,B是p×n的矩阵,则A与B的乘积为m×n的矩阵,记作C=AB,其中,矩阵C中的第i行第j列元素cij可以表示为:当多个矩阵相乘时,采用不同的计算顺序所需的乘法次数不相同。例如,A是50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵, 计算ABC有两种方式:(AB)C和A(BC),前一种需要15000次乘法计算,后一种则只需3500次。设A1,A2,…,An为矩阵序列,Ai是阶为Pi−1∗Pi的矩阵(1≤i≤n)。试确定矩阵的乘法顺序,使得计算A1A2
2020-12-20 10:37:42
575
1
原创 0-1背包
给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能只装入部分物品i。输入格式:共有n+1行输入: 第一行为n值和c值,表示n件物品和背包容量c; 接下来的n行,每行有两个数据,分别表示第i(1≤i≤n)件物品的重量和价值。输出格式:输出装入背包中物品的最大总价值。输入样例:
2020-12-17 14:18:14
150
原创 工作分配问题
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。输入格式:输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。输出格式:将计算出的最小总费用输出到屏幕。输入样例:在这里给出一组输入。例如:310 2 32 3 43 4 5输出样例:在这里给出相应的输出。例如:9#include<iostream>#include&l
2020-12-15 20:50:48
343
转载 滑动窗口算法
滑动窗口算法滑动窗口算法可以用以解决数组/字符串的子元素问题,它可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。通过不断滑动窗口的大小,判断窗口中元素是否相同,从而解决问题。滑动窗口法的思路我们在字符串 S 中使用双指针中的左右指针技巧,初始化 left = right = 0,把索引闭区间 [left, rig.
2020-12-12 19:30:38
369
原创 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。输入格式:输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。输出格式:将计算出的最小总费用输出到屏幕。输入样例:在这里给出一组输入。例如:310 2 32 3 43 4 5输出样例:在这里给出相应的输出。例如:9#include<iostream>#include&l
2020-12-10 13:10:47
6422
原创 最优服务次序问题
1.最优服务次序问题。问题描述:设有n个顾客同时等待一项服务,顾客i需要的服务时间为ti,(1<=i<=n)。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?(平均等待时间是n个顾客等待服务时间总和除以n)输入:第一行为一个正整数n,表示有n个顾客第二行为n个正整数,表示n个顾客需要的服务时间输出:最小平均等待时间。#include <iostream>#include<algorithm>using namespace std;int main(
2020-12-09 18:48:41
954
转载 priority_queue 说明
priority_queue 说明头文件 #include优先队列。默认是按照从大到小排序的。如果要定义从小达大排列的:priority_queue<int,vector,greater> q;priority_queue 操作q.size();//返回q里元素个数q.empty();//返回q是否为空,空则返回1,否则返回0q.push(k);//在q的末尾插入kq.pop();//删掉q的第一个元素q.top();//返回q的第一个元素例如#include<q
2020-12-06 14:05:42
186
原创 假设有N项物品,大小分别为s1、s2、…、si、…、sN,其中si 为满足1≤si ≤100的整数。
假设有N项物品,大小分别为s1、s2、…、si、…、sN,其中si 为满足1≤si ≤100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。输入格式:输入第一行给出物品个数N(≤1000);第二行给出N个正整数si (1≤si ≤100,表示第i项物品的大小)。输出格式:
2020-12-06 13:55:56
8096
2
转载 String 、StringBuilder、StringBuff的区别
这三个类之间的区别主要是在两个方面,1.运行速度.2.线程安全这两方面。1.首先说运行速度在这方面运行速度快慢为:StringBuilder > StringBuffer > StringString最慢的原因:String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。以下面一段代码为例:1 String str=“abc”;2 System.out.pri
2020-12-05 16:56:45
455
转载 如何做好一个需求分析
目录明确需求开发设计文档编码自测联调监控debug效果验收性能验收CR上线资源评估资源申请资源部署压测发布流程后续作为一名后台开发同学,做需求开发不可避免,无论是产品需求还是技术需求,需求虽然在变,但做事的方法是相同的,这里简单总结下从接到一个需求开始至需求上线的整个过程,以及其中需注意的点,避免后续踩坑明确需求以产品需求举例,接到一个需求之后,首先要做的是搞明白这个需求,而不是一上来就是开始撸代码,这样很有可能导致最后上线的功能不符合产品预期
2020-12-05 16:47:28
391
原创 贪心算法之购月饼
月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 = 94.5(亿元)。输入格式
2020-12-01 20:34:15
133
转载 用Java解决哲学家就餐问题
哲学家就餐问题是1965年由Dijkstra提出的一种线程同步的问题。问题描述:一圆桌前坐着5位哲学家,两个人中间有一只筷子,桌子中央有面条。哲学家思考问题,当饿了的时候拿起左右两只筷子吃饭,必须拿到两只筷子才能吃饭。上述问题会产生死锁的情况,当5个哲学家都拿起自己右手边的筷子,准备拿左手边的筷子时产生死锁现象。解决办法:1、添加一个服务生,只有当经过服务生同意之后才能拿筷子,服务生负责避免死锁发生。2、每个哲学家必须确定自己左右手的筷子都可用的时候,才能同时拿起两只筷子进餐,吃完之后同时放下两只筷
2020-11-28 16:45:25
613
转载 SSM框架理解
SSM框架理解SpringSpring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。SpringMVCSpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controlle
2020-11-26 18:19:58
5199
转载 C++函数指针的使用
一 函数指针介绍函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。举例如下:int add(int nLeft,int nRight);//函数定义该函数类型为int(int,int),要想声明一个指向该类函数的指针,只需用指针替换函数名即可:int (pf)(int,int);//未初始化则pf可指向int(int,int)类型的函数。pf前面有,说明pf是指针,右侧是形参列表,表示pf指向的是函数,左侧为int,说明pf指向的函数返回值为int。则pf可指向int(
2020-11-25 22:52:29
1420
转载 html的各种标签
html的各种标签一 .head中的各种标签 1. <!DOCTYPE html><html>文档类型声明 声明当前文件是一个HTML5文件文档类型声明在一个html文件中必不可少 而且必须在网页第一行 2. <!----> 键盘按键为Ctrl+? 注释 3. <head> head中用于设置网页的相关信息 4. <meta charset="utf
2020-11-24 19:31:50
877
转载 像程序员一样思考--提高解决问题的能力
像程序员一样思考–提高解决问题的能力在以前的文章中,曾经提过“技术人员的价值,不在于你能写出多么优美的代码,也不在于你能设计出一个多么大而全的高屋建瓴的架构,而在于你实实在在的解决问题的能力,在于你使用技术手段服务于业务的能力”。最近一段时间,因工作中遇到一些现象,让我重又想起这句话,并且试图思考如何来提高解决问题的能力,有没有一种方法论的手段或者技术性的框架来实践?先罗列一两个遇到的现象:某同事汇报,测试提了一个Bug,当某个用户绑定的卡信息超过50个的时候,后台显示数据就会出现混乱,...
2020-11-20 21:05:19
328
2
原创 最大子段和问题
1.最大子段和问题。给定由n个整数组成的序列,求序列中子段的最大和,若所有整数均为负整数时定义最大子段和为0。例如, 当(a1,a2,a3,a4 ,a5,a6) = (-2,11,-4,13,-5,-2)时,最大子段和为: a2+a3+a4=20输入格式:第一行输入整数个数n(1≤n≤10000),再依次输入n个整数。输出格式:输出第一行为最大子段和,第二行为子段第一个数和最后一个数在整个序列中的位序。输入样例1:6-2 11 -4 13 -5 -2输出样例1:202 4#inclu
2020-11-18 21:48:38
1387
转载 分形【递归】
分形【递归】题目描述分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。**盒型分形定义如下:度数为1的分形为:X度数为2的分形为:X XXX X如果用B(n-1)代表度数为n-1的盒型分形,则度数为n的盒型分形可以递归的定义为:B(n-1) B(n-1)B(n-1)B(n-1) B(n-1)你的任务是输出度数为n的盒型分形。输入输入包
2020-11-16 21:20:01
548
转载 MYSQL架构理解
MYSQL架构理解通过对MYSQL重要的几个属性的理解,建立一个基本的MYSQL的知识框架。后续再补充完善。一、MYSQL架构这里给的架构描述,是很宏观的架构。有助于建立对MYSQL整体理解。1. 架构图 以下是在网上找的两张MYSQL架构图。能反映MYSQL的结构。结构基本一致,都是连接、服务和存储引擎三部分。2.分层实现 MYSQL大致分为3个层次。连接层、服务层和引擎层。连接层功能是客户端的链接服务。服务层完成缓存查询、SQL分析、SQL优化。引擎层真正负责MYSQL数据的存
2020-11-16 19:05:26
226
转载 JavaWeb文件上传
JavaWeb文件上传1.上传组件①Apache的Commons FileUpload②JavaZoom的UploadBean③JspSmartUpload2.下载Commons的FileUpload组件地址:http://commons.apache.org/fileupload/同时还要下载Commons的IO组件地址:http://commons.apache.org/io/3.使用实例步骤一:创建文件上传的页面:fileUpload.jsp注意表单的 enctype 属性,这个
2020-11-15 21:36:03
107
转载 C语言结构体小结
关于结构体的声明:struct Student{ char name[20]; char sex; int age; char addr[40];};//然后定义一个Student 类型的 student变量struct Student student;struct Man{ int age; //这样就好了 int score;};int main(){ struct Man man1 = {30,80};}定义结构体的时
2020-11-14 18:36:40
224
转载 c语言函数指针的理解与使用
1.函数指针的定义顾名思义,函数指针就是函数的指针。它是一个指针,指向一个函数。看例子:A.char * (*fun1)(char * p1,char * p2);B. char * *fun2(char * p1,char * p2);C. char * fun3(char * p1,char * p2); 看看上面三个表达式分别是什么意思?C.这很容易,fun3是函数名,p1,p2是参数,其类型为char 型,函数的返回值为char 类型。B. 也很简单,与C)表达式相比,唯一不同的就
2020-11-13 10:59:06
131
转载 滚动数组---动态规划思想
滚动数组—动态规划思想滚动数组是DP中的一种编程思想。简单的理解就是让数组滚动起来,每次都使用固定的几个存储空间,来达到压缩,节省存储空间的作用。起到优化空间,主要应用在递推或动态规划中(如01背包问题)。因为DP题目是一个自底向上的扩展过程,我们常常需要用到的是连续的解,前面的解往往可以舍去。所以用滚动数组优化是很有效的。利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。当然是用时间去换空间的在斐波那契数列中#include<bits/stdc++.h>int main(){
2020-11-12 15:58:13
474
转载 什么是线程池(含一些面试题)
本文总结一下线程池是怎么回事,分以下几个部分,对哪个部分感兴趣,可以直接跳到对应的章节第一部分:线程池类的结构介绍第二部分:线程池的使用第三部分:线程池的创建流程第四部分:线程池的应用场景第五部分:线程池相关的面试题第一部分:线程池类的结构线程池存在于Java的并发包J.U.C中,线程池可以根据项目灵活控制并发的数目,避免频繁的创建和销毁线程,达到线程对象的重用。下面是线程池的类图:1、 接口Executor接口Executor中,只有一个方法,为execute()2、 接口Exec
2020-11-11 19:21:52
226
转载 C++ vector 容器浅析
C++ vector 容器浅析文章目录C++ vector 容器浅析一、什么是vector?二、二、容器特性三、三、基本函数实现实例2.clear()清除容器中所有数据3.排序一、什么是vector?向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。二、二、容器特性1.顺序序列顺序容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问
2020-11-10 16:44:21
583
转载 什么是浏览器跨域访问操作?js如何实现?
什么是浏览器跨域访问操作?js如何实现?1.什么是跨域?JavaScript出于安全方面的考虑做的同源策略的限制,不允许跨域访问其他资源。通常跨域请求成功后,浏览器会拒绝响应服务器端返回的结果。2. 怎么样算是跨域?如下相对http://store.company.com/dir/page.html同源检测的示例:注意:域名与其对应的ip也不能成功访问javascript跨域访问是web开发者经常遇到的问题,什么是跨域,一个域上加载的脚本获取或操作另一个域上的文档属性,下面将列出三种实现jav
2020-11-09 18:36:20
192
转载 JavaScript在发送AJAX请求时,URL的域名地址是使用绝对地址还是使用相对地址?
什么是AJAXAjax(Asynchronous JavaScript and XML)是运用JavaScript和可扩展语言(XML)实现浏览器与服务器通信的一种技术。AJAX过程1.创建创建没什么好说的,兼容各个版本的浏览器。2.连接和发送2.1、open(method,url,async):规定请求类型(POST或GET)、请求地址url、异步(true)同步(false).大多都是异步;通过 AJAX,JavaScript 无需等待服务器的响应,而是:在等待服务器响应时执行其他脚本
2020-11-08 17:12:31
433
转载 MySQL 6:查询的基本操作
概述提到查询,就回到我们第四篇的SQL语言分类了,DQL(Data QueryLanguage),也就是数据查询语言,实际就是从数据库中获取数据的一种命令方式。我们给数据库发送一个查询语句的命令,数据库按需返回相应的数据。查询基本语法select column_name1,column_name2,… from tname;SQL 中不区分大小写,select语句中不区分大小写,SELECT和select、FROM和from效果一样。查询的结果放在一个表格中,表格的第1行称为列头,第2行开始是数据
2020-11-07 19:36:36
133
原创 int类型变量的取值范围
int类型变量的取值范围?前言前言在学C语言的时候应该都会先了解各种基本数据类型的初值和它们的取值范围,有些人可能会不太重视这块内容,其实很重要,很多大公司面试的过程中都会问到int的取值范围,溢出之后会怎么样等问题。在写程序的时候有时候我们将一个很大的int型的数相加一个数,就会发现结果不对。这是为什么呢?因为这个数超过了int型的取值范围。C语言中int的取值范围为:-2147483648 ~2147483647(也就是-2^31到2^31 -1)解释如下:int类型在C语言中占
2020-11-06 15:04:22
17471
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人