自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

工厂搬砖的代码小白

感觉自己脑子有坑

  • 博客(75)
  • 收藏
  • 关注

原创 面试题总结(三)

synchornized和lock的区别存在层次synchornized是java的关键字,在jvm层;底层是通过monitor对象来完成lock是一个类,是api层面的锁使用方法synchornized以获取锁的线程执行完同步代码后释放锁,不需要手动释放锁lock需要手动释放,否则会造成死锁;需要使用lock/unlock结合try/finally来进行上锁或释放锁锁的类型synchornized是可重入、不可中断的非公平锁lock是可重入,可中断的公平/非公平锁调度机制synch

2021-10-15 23:28:43 150

原创 面试题整理(二)

Java基础创建线程的方式有哪些?(1) 继承Thread类创建线程类(2) 通过Runnable接口创建线程类(3) 通过Callable和Future创建线程(4) 使用线程池例如用Executor框架Callable和Runnable有什么区别?runnable和callable都可以用来编写多线程程序,两者的区别在于:(1)实现了runnable接口后无法返回结果信息,实现了callable接口后有返回值。(2)实现了runnable接口异常无法通过throws抛出异常,实

2021-10-10 19:50:16 116

原创 面试题整理

1、MySQL从链接到查询SQL的过程2、如何解决脏读3、讲一下AQS,实现了AQS的锁有哪些?4、锁消除和锁粗化5、MySQL索引结构?最大叶子数量?非叶子节点存储的是什么?范围查询是怎么查的,如果只想要最后几个怎么办?6、索引的优化7、Synchornized和ReentrantLook的区别8、讲一讲双亲委派9、什么是泛型擦除10、慢sql的解决办法11、线程状态有哪些,以及状态转换12、线程池参数13、ACID分别代表什么14、CAS的ABA问题是什么,要怎么解决15、布

2021-10-08 23:47:43 119

原创 Redis学习笔记-删除策略

过期数据过期数据的删除策略:定时删除、定期删除、惰性删除定时删除在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。优点:节约内存,到时就删除,快速释放掉不必要的内存占用缺点:CPU压力很大,无论CPU此时负载量多高,均占用CPU,会影响redis服务器响应时间和指令吞吐量用处理器性能换空间定期删除(主动删除?)redis默认每间隔100ms就随机抽取一些设置了过期时间的key检查其是否过期,如果过期就删除。周期性轮询redis库中的时效性数据,采

2021-09-14 23:48:20 169

原创 数据库学习笔记-MySQL索引数据结构

什么是索引数据库查询是数据库的最主要功能之一,最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,还有二分查找(binary search)、二叉树查找(binary tree search)等;每种查找算法只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构。所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用

2021-09-11 17:10:07 181

原创 Redis学习笔记-Redis中的数据结构

Redis中的五种常见的数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)本篇文章详细学习一下这五种数据类型对应的数据结构字符串(String)字符串类型是Redis最基础的数据结构,它的值可以为字符串、数字,二进制(图片、音频、视频)等。Redis是用C语言写的,但它并没有使用C的字符串表示,而是自己构建了一种简单动态字符串(simple dynamic string,SDS)的抽象类型,作为Redis的默认字符串表示;SD

2021-09-11 00:42:31 172

原创 Redis学习笔记-布隆过滤器

布隆过滤器(Bloom Filter),是一个很长的二进制向量和一系列随即映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中,它的空间效率和查询时间都远超一般的算法,但是有一定的误识别率和删除困难。原理当一个元素被加入到集合中时,通过k个散列函数将这个元素映射称一个位数组的k个点,把他们设置为1。检索时,我们只需要看 这些点是否都是1就知道集合中有没有了;如果这些点中有任何一个0,则被检索元素一定不在;如果都是1,则被检索元素可能存在,这就是布隆过滤器的基本思想。布隆过滤器跟单哈希函数bit-m

2021-09-06 23:20:48 168

原创 Redis学习笔记-Redis基础

Redis基础类型Redis是一个key-value的存储系统,使用ANSI C语言编写key的类型是字符串;value的类型有:常用的:String,list,set,sortedset,hashdeng不常见的:bitmap(位图),geo地理位置Redis5.0中新增一种类型:streamRedis中命令忽略大小写,key是不忽略大小写的StringString类型是Redis中最常用的类型,就是普通的set和get,做简单的KV缓存;在实际开发中,也会把一些复杂结构统一转为Str

2021-09-06 01:27:08 267

原创 数据库学习笔记-EXPLAIN

EXPLAINexplain可以对select语句进行分析,并输出select执行的详细信息,供开发人员有针对性的进行优化。select_Type表示查询的类型,常用的值如下:simple:表示查询的语句不包含子查询或unionprimary:表示此查询时最外层的查询union:表示此查询时union的第二个或后续查询dependent union:union中的第二个或后续的查询语句,使用了外面的查询结果union result:union的结果subquery:select子查询语句

2021-08-13 20:58:56 106

原创 Spring学习笔记-Spring常用注解

@Component调用无参构造创建一个bean对象,并把对象存入spring的IOC容器,交由spring容器进行管理。@Controller对应表现层的bean对象,作用上与@Component相同@Service对应业务层的bean对象,作用上与@Component相同@Repository对应持久层的bean对象,作用上与@Component相同@Bean用于把当前方法的返回值作为bean对象存入spring的ioc容器中–属性 name:用于指定bean的id。当不写时,默认.

2021-08-09 22:14:02 114

原创 Java基础学习笔记-线程池

线程池的作用线程的创建需要开辟虚拟机栈、本地方法栈、程序计数器等线程私有的内存空间,在线程销毁时需要回收这些系统资源。频繁的创建和销毁线程会浪费大量的系统资源,增加并发编程的风险;另外,线程自身无法解决在服务器负载过大的时候让新的线程等待或友好的拒绝服务的问题。所以需要通过线程池协调多个线程,并实现类似主次线程隔离、定时执行、周期执行等任务。线程池的作用包括:利用线程池管理并复用线程、控制最大并发数;实现任务线程队列缓存策略和拒绝机制;实现某些与时间相关的功能,如定时执行,周期执行等;隔离线程

2021-07-26 21:48:54 204

原创 spring学习笔记-核心思想、Spring IOC

spring笔记-核心思想、Spring IOC核心思想IOCIOC 控制反转,是一个技术思想,不是技术实现;Java开发领域对象的创建、管理问题不用自己去new对象,用IoC容器帮助我们实例化对象并管理它,需要使用到哪个对象,去找IoC容器即可控制:对象创建/实例化的权力反转:控制权交给外部环境(Spring框架、IoC容器)IoC解决了对象之间的耦合问题IoC和DI的区别DI:依赖注入Ioc和DI描述的是一件事:对象实例化及依赖维护,角度不同IoC站在对象的角

2021-04-01 22:08:06 83

原创 设计模式学习笔记-单例模式的几种实现方式

单例定义单例模式(Singleton Design Pattern),一个类只允许创建一个对象(或者实例),那这个类就时一个单例类,这种设计模式就时单例模式单例的几种实现1、饿汉式饿汉式的实现方式是在类加载的时候,instance静态实例已经创建并初始化好了,这种方式是线程安全的,但是并不支持延迟加载,也就是不能在用到的时候再去创建实例public class SingletonTest { private static SingletonTest instance = new Singl

2020-05-24 23:18:27 218

原创 缓存学习笔记-缓存雪崩、缓存击穿、缓存穿透问题分析

在使用缓存时,要注意:缓存数据是有原始数据来源的,且允许丢失。数据丢失后,我们要从原始数据重新加载,不能认为缓存是绝对可靠的,也不能认为缓存不会删除没有过期的数据缓存系统可以保存的数据量一定是小于原始数据的,我们应该根据数据特点,明确redis应该以怎样的算法来驱逐数据常用的数据淘汰策略有:allkeys-lru,针对所有 Key,优先删除最近最少使用的 Key;==volatile-lru,针对带有过期时间的 Key,优先删除最近最少使用的 Key;volatile-ttl,针对带有过期

2020-05-17 21:42:29 169

原创 数据库学习笔记-索引会失效的几种情况

MySQL中,有几种情况会出现索引失效的情况:首先,定义一张表定义了主键fid,索引为fage,fphone1、发生隐式转换的情况执行语句 :EXPLAIN SELECT * from t_test_user where fphone = 13000000000可以看到key值为null,证明没有走索引,因为fphone是varchar类型,查询语句中查询的类型是数值类型,在查询的...

2020-05-04 20:15:55 6763

原创 Java技术栈——ClassNotfoundException 和 NoClassDefFoundError的区别

前一阵子处理提单,查看服务器日志的时候发现有个错误是java.lang.NoClassDefFoundError.NoClassDefFoundError,第一感觉这个错是不是跟java.lang.ClassNotfoundException有什么关系; 回忆刚来公司的时候导师说过这个问题,但是因为不太了解,就没太深究。正好这次处理提单遇见了这个问题,就了解了一下什么是NoClassDefF

2018-01-11 20:00:48 857

转载 JAVA-类的加载过程

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)。如图所示。 加载、验证、准备、初始化和卸载这5个

2017-09-14 17:40:09 215

原创 C - Connect them (The 6th Zhejiang Provincial Collegiate Programming Contest )

题目链接:Click 题意:有n台电脑,现在给你每两台电脑之间连接所需要的权值,如果权值为0,代表不能连接,问如果把所有电脑全部连接起来的最小花费的连接方式。 思路:这道题目看上去就是一道最小生成树的题,然后我就找出kruskal的模板敲上去,结果超时了。。一般这种时候我就会先放下,和队友看其他题目,最后一个小时的时候,我回来看这道题,发现以前貌似见到过这道题,好像用到了并查集。然后就开始重新搞

2016-03-13 11:58:23 428

原创 HDU The Magic Tower(2015.12.26训练 杭电校赛)

题目链接:Click here题意:战士要到一座MAGIC TOWER上打败一个BOSS解救公主,战士跟BOSS有各自的血量值,攻击值和防御值,两个人轮流攻击对方,当某一方血量小于或等于零的时候结束,问战士是否能打败BOSS思路:开始的时候单纯的用循环来,结果超时了。。。。具体看代码:#include <cstdio>#include <cstring>#include <iostream>#

2015-12-26 18:31:16 382

原创 HDU 1052 Tian Ji -- The Horse Racing(贪心)

题目链接:Click here题意:就是众所周知的田忌赛马问题,田忌和国王赛马,田忌赢了,奖励200两黄金,输了,扣200两黄金,问田忌的最大收益。思路:先拿田忌的最快的马赫国王最快的马比价,如果田忌最快的马比国王的要快,那么田忌赢,如果田忌最快的比国外最快的慢,则田忌用最慢的和国王最快的比,田忌输。如果田忌最快的和国王最快的相等,那么就比较两者最慢的,如果田忌最慢的马比国王最慢的马快,田忌赢。否则

2015-08-18 16:43:17 353

原创 HDU 1009 FatMous'Trade(贪心)

题目链接:Click here题意:FatMouse准备了m磅的食物,以便用来交换它喜欢的食物,JavaBean。 现在有N个房间,第i个房间有J[i]磅的JavaBean,其交换的筹码是F[i]磅的食物。 当然,FatMouse还是有很大的选择权的,对任意一个房间,它可以只交换一部分的食物。 现要求FatMouse以怎样的策略才能获得最多的JavaBean。思路:将javaBean/catf

2015-08-18 10:49:24 430

原创 HDU 1160 FatMouse's Speed(动态规划)

题目链接:Click here题意:给出一些老鼠的重量和奔跑速度,要求给出一个最长的排列,其中,前一只老鼠的重量严格小于后一只老鼠,而它的速度要严格大于后一只老鼠。给出的排列可能与示例不同,因为排列可能有多种,只要求出一种就可以了。思路:乍一看,重量从小到大,同时速度从大到小,双向的最长上升或下降子序列,其实可以将重量从大到小排序,这样的话就变成速度的最大上升子序列问题。这道题还要求记录子序列的标号

2015-08-14 17:01:23 606

原创 HDU 1159 Common Subsequence(动态规划)

题目链接:Click here题意:现在给出两个序列a 和b,找到a 和b 的最大公共子序列思路:通过一组数据看一下: 在这组数据中,所有带颜色的地方,均为字符相等的地方,通过观察可以发现,如果某处字符相等,那么它的值就是它右上角的值加一,否则就是其左边和上边的最大值。 那么状态转换方程就可以得出: 如果a[i] == b[i] dp[i][j] = dp[i-1][j-1] + 1;

2015-08-14 15:06:46 288

原创 570C. Replacement Codeforces Round #316 (Div. 2)

题目链接:Click here题意:给定一个字符串,由‘.’和字母组成。把两个相邻的‘.’替换成一个‘.’,算一次变换。现在给你一些个操作,操作内容是把某个位置的字符变成给定的字符,求每次操作后,需要多少次变换才能把原串所有相邻的‘.’变成一个‘.’。注意,每次操作是累加的,即一次操作就会把原串替换一个字符。思路:先计算原串变换所需要的次数。每次操作判断要改变的符号的左右,如果该符号原来是’.’的话

2015-08-14 10:13:22 385

原创 570B. Simple Game Codeforces Round #316 (Div. 2)

题目链接:Click here题意:Misha 和 Andrew 要玩一个游戏,从1~n中两人分别选一个数,然后随机选择一个数c,如果Misha 选的数与c的距离小于或等于Andrew  选的数与c的距离,Misha 赢,否则Andrew 赢。这道题比赛时被HACK了,想了好久感觉没问题了,最后试了下1 1, 果然输出为0,不对了。。但答案是1也不对啊,这种情况Andrew 不可能赢啊 :(思路简单

2015-08-14 09:39:45 279

原创 570A.Elections Codeforces Round #316 (Div. 2)

题目链接:Click here题意:一个国家要投票选举,选举方式是每个城市先选举出自己城市的代表,然后再统计哪个代表所代表的城市多,如果有票数相同的情况,则选择标号较小的那个。思路:我们将每个城市选出来的代表存到一个数组中,在判断数组中出现最多的那个标号。代码:#include <iostream>#include <cstring>#include <cstdio>#include <que

2015-08-14 09:25:26 214

原创 HDU 1025 Constructing Roads In JGShining's Kingdom(动态规划)

题目链接:Click here题意:这道题目看了好几遍,英语是硬伤啊~~借助了谷歌翻译~~自己修改了一下,毕竟电脑翻译的真不忍直视啊JGShining的王国包括2n个小城市,分别位于两条平行线。这些城市中有一半都含有丰富的资源(我们称他们丰富的城市),而另一些缺少资源(我们称他们为穷人市)。每个贫困城市缺少一种资源,每一个富有城市富有一种资源。你可以假设没有任何两个城市同时缺少一个同类型的资源,并

2015-08-13 15:32:18 357

原创 HDU 1087 Super Jumping! Jumping! Jumping!(动态规划)

题目链接:Click here题意:给定一串数字,求其上升子序列和的最大值。思路:DP 状态转移方程:dp[j] = max(dp[i], dp[j]+a[i])(其中,j < i, a[j] < a[i]) #include <iostream>#include <cstring>#include <cstdio>#include <queue>#include <cstdlib

2015-08-12 20:49:32 179

原创 HDU 1257 最少拦截系统(动态规划)

题目链接:Click here思路:保存下每一个拦截系统目前可以拦截的最大高度,每输入一个高度,就与之比较,如果某个最大拦截高度大于输入的高度,将之替换;如果找不到,就新建一个拦截系统。这个代码感觉不是特别严谨,想了半天就是想不出哪个数据可以卡住,但是感觉肯定有,求大神指点。#include <iostream>#include <cstring>#include <cstdio>#inclu

2015-08-12 16:04:04 262

原创 HNUST 1641 罚时计算器(模拟) 湖南科技大学2014新生选拔赛

题目链接:Click here思路:直接模拟。去年在现场没做出来,对此心里一直有一个疙瘩。话不多说, 看代码:#include <iostream>#include <cstring>#include <cstdio>#include <queue>#include <cstdlib>using namespace std;struct node{ int h, m, s;

2015-08-12 15:30:25 738

原创 codeforces 569B - Inventory

题目链接:Click here题意:给你t个数,合法的数为只出现在1~t之间,没有重复出现的数。要求你将不合法的数该为合法的数。思路:将给的数中出现的数标记起来,重复或出界的数存到另一个数组中,在从1~t循环查找未标记的数,将不合法的数改为该数。#include <iostream>#include <cstring>#include <cstdio>#include <queue>#inc

2015-08-11 10:30:02 430

原创 codeforces 569A Music

题目链接:Click here题意:Little Lesha 想听一首歌, 这首歌长t秒,Little Lesha 先下载了s秒,边听边下载,每q秒可以下载q-1秒的歌,每当播放到未下载的时候,返回开始从头开始播放,问Little Lesha 下载一首歌需要从头开始多少次。思路:昨天晚上看到这个题,有点晕,假定放到未下载点时候用时x秒,那么(q-1)/q就是每秒下载的速度,(q-1)/q*x+s=x

2015-08-11 10:06:04 623 1

原创 HDU 1081 To The Max(动态规划)

题目链接:Click here题意:给定一个矩阵,求最大子矩阵的和。思路:与最大连续子序列相比,这道题将一维数组扩展到了二维。可以将矩阵压缩,将二维压缩成一维。具体结合代码:#include <iostream>#include <cstring>#include <cstdio>#include <queue>#include <cstdlib>using namespace std;in

2015-08-10 16:56:12 248

原创 HDU 1231 最大连续子序列(动态规划)

题目链接:Click here思路:这道题是1003的升级版。思路相同#include <iostream>#include <cstring>#include <cstdio>#include <queue>#include <cstdlib>using namespace std;int a[10005];int main(){ int t, sum, ans, temp, s

2015-08-10 14:19:18 385

原创 HDU 1003 Max Sum(动态规划)

题目链接:Click here题意:给定一个数组,求最大和子序列的值以及子序列的起始点和结束点。思路:DP嘛~~ 当sum值大于最大值时,就记下最大值以及这个值对应的左起和右终的下标。当sum<0时,证明加上当前数整个数值为负,这个负数一定不会是下一个最大子序列的成员,所以起始点要从当前位置的下一位开始, sum也要从新开始,因为下一个数一定比它加一个负数要大。如果数组全是负数,那么就是说sum加

2015-07-30 11:26:51 345

原创 POJ 1157 LITTLE SHOP OF FLOWERS(动态规划)

题目链接:Click here题意:花和花瓶,都有编号,每种花插在不同的花瓶中美学值不同。要把这些花按某种方案放在这些花瓶里,得到美学价值最大。并且,花的编号要小于瓶子的编号。思路:根本没思路啊。。。。PS:动态规划,水好深,要淹死人的。。。算每朵花放在不同花瓶中的最大美学价值,最后相加。 状态转移方程:dp[i][j]=max(dp[x][k]+a[i][j]) #include <iost

2015-07-29 17:08:20 370

原创 HDU 2084 数塔(DP)

题目链接:Click here开始看DP,这里面水好深啊。最简单的DP,感觉自下而上是比较方便的,循环判断完就可以输出,自上而下的还要再判断最后一层的最大值。状态转移方程:dp[i][j] = tower[i][j] + max(dp[i+1][j], dp[i+1][j+1]);#include <iostream>#include <cstring>#include <cstdio>#in

2015-07-28 15:14:34 284

原创 HNUST 1581 聚宝盆

题目链接:Click here思路:自己写一下就可以看出是个fib数列,递归求解就好。PS:看动态规划,撇到这个题,想到以前看到了没做出来,所以就试一试,没想到竟然是fib。。。#include <iostream>#include <cstring>#include <cstdio>#include <queue>#include <cstdlib>using namespace std;

2015-07-28 11:14:24 406

原创 HDU 1512 Monkey King(左偏树+并查集)

题目链接:Click here题意:有n个猴子,一开始每个猴子只认识自己。每个猴子有一个能力值,能力值越大表示这个猴子越厉害。如果2个猴子不认识,他们就会找他们认识的猴子中能力最强的出来决斗,决斗的2个猴子力量值减半,然后这2拨猴子就都认识了,不打不相识嘛。现在给m组询问,如果2只猴子相互认识,输出-1,否则他们各自找自己认识的最厉害的猴子单挑,求决斗完后这拨猴子力量最大值。思路:两拨不认识得猴子决

2015-07-28 09:39:38 407

原创 HDU 1016 Prime Ring Problem(DFS 素数环问题)

题目链接:Click here题意:给定数n,在n的所有排列中,记a[1],a]2],…,a[n],求满足a[i]+a[i+1]是素数并且a[1]+a[n]也是素数的所有排列。#include <iostream>#include <cstring>#include <queue>#include <cstdio>#include <algorithm>#include <cmath>us

2015-07-27 09:28:49 288

空空如也

空空如也

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

TA关注的人

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