自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot动态生成、加载模板文件

/ 模板引擎的配置 @Bean public SpringTemplateEngine templateEngine(ITemplateResolver . . . templateResolvers) {} // 默认模板解析器 @Bean public ITemplateResolver classpathTemplateResolver() {

2024-04-22 18:03:35 559

转载 CopyOnWriteArrayList 原理+源码分析

CopyOnWriteArrayList 原理CopyOnWriteArrayList是Java并发包中提供的一个并发容器,它是个线程安全且读操作无锁的ArrayList,写操作则通过创建底层数组的新副本来实现,是一种读写分离的并发策略,我们也可以称这种容器为"写时复制器",Java并发包中类似的容器还有CopyOnWriteSet。本文会对CopyOnWriteArrayList的实现原理及源码进行分析。实现原理我们都知道,集合框架中的ArrayList是非线程安全的,Vector虽是线程安全的,但

2021-09-02 17:36:48 159

原创 LinkedList 原理+源码分析

LinkedList 原理底层数据结构LinkedList 底层使⽤的是双向链表的数据结构(JDK 1.6 之前为循环链表, JDK 1.7 取消了循环。)// 链表的结点,记录了前后结点和结点的值private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element,

2021-09-02 17:36:00 252

原创 HashMap原理+源码分析

HashMap 原理和 HashTable 的不同HashMap 是⾮线程安全的, HashTable 是线程安全的,因为 HashTable 内部的⽅法基本都经过 synchronized 修饰。HashMap 可以存储 null 的 key 和 value,但 null 作为键只能有⼀个, null 作为值可以有多个; HashTable 不允许有 null 键和 null 值,否则会抛出NullPointerException 。① 创建时如果不指定容量初始值, Hashtable默认的初始大

2021-09-02 17:35:01 152

原创 ArrayList 扩容机制(源码笔记)

ArrayList 扩容机制全局变量 // 如果使用无参构造器,初始化后第一次add时的默认数组长度 private static final int DEFAULT_CAPACITY = 10; // 定义一个空数组以供使用 private static final Object[] EMPTY_ELEMENTDATA = {}; // 也是一个空数组,跟上边的空数组不同之处在于,这个是在默认构造器时返回的,扩容时需要用到这个作判断 private static

2021-09-01 15:56:40 123

原创 动态规划题解——最长子序列专题

A. 拍照Description最近,文明班级需要拍集体照,N位同学站成一排,为了美观,老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成中间高两边低的队形。这种队形是:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<…Ti+1>…>TK(1<=i<=K)。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成这种队形。Input输入的第一行是一个整数N(2<=N<

2020-12-16 10:26:41 1140

原创 线程和synchronized关键字

基本概念程序:QQ.exe进程:QQ.exe 运行起来了线程:一个进程里面不同的执行路径创建线程// MyThread 继承 Thread 类new MyThread().start();// MyRun 实现 Runnable 接口new Thread(new MyRun()).start();// jdk8 之后的 lambda 表达式,第二种的变形new Thread(()->{ System.out.println("Hello Lambda!");}).st

2020-12-13 18:50:28 90

原创 动态规划题解——最大子段和专题

A. 最大子段和-DP方法Description给出N个数字, 计算出最大的子段和。Input第一行给出一个数字 T(1<=T<=20) 代表接下来的组数.接下来每 T 行,开始给出一个正整数 N(1<=N<=100000), 接着跟着N个整数.。数据保证最后结果小于2^31。Output输出最大的字段和Sample Input25 6 -1 5 4 -77 0 6 -1 1 -6 7 -5Sample Output147Answer#includ

2020-12-09 10:38:02 1278

转载 Linux文件查看/编辑方法介绍-putty常用命令

Linux文件查看/编辑方法介绍-putty常用命令 cat 命令介绍 cat 命令的原含义为连接(concatenate), 用于连接多个文件内容并输出到标准输出流中(标准输出流默认为屏幕)。实际运用过程中,我们常使用它来显示文件内容。如果您熟悉MS-DOS 下的type 命令,相信不难掌握cat 命令。该命令的常用示例如下: cat file1.txt 显示 file1.txt 文件的内容; cat file1.txt file2.txt 显示 file...

2020-12-04 11:13:20 1584

转载 Git 常用命令大全

一、 Git 常用命令速查git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r 查看远程所有分支git commit -am "init" 提交并且加注释 git remote add origin git@192.168.1.119:ndshowgit push o...

2020-12-04 11:10:23 77

原创 《Effective Java》笔记(2)

覆盖 equals 请遵守通用约定什么时候应该覆盖 equals 方法?如果类具有自己特有的“逻辑相等”的概念,比如 Integer 或者 String。程序员需要利用 equals 方法来比较逻辑相等,而不是它们是否指向同一个对象。有一种“值类”不需要覆盖 equals 方法用实例受控确保“每个值最多只存在一个对象的类”,比如 Boolean ,Enum 等类。在覆盖 equals 方法的时候,必须遵守它的通用规定自反性:对于任何非 null 的 x,x.equals(x)必须返回 true

2020-12-03 11:10:55 113

原创 最小生成树、并查集算法题解

A. 最小生成树(要求用kruskal算法写)Description在一张图上有N个点,点与点之间的连接的花费都已经告诉你了,请你设计一下,如果解决这个“最小生成树”的问题。Input首先输入一个数字N(0〈=N〈=100)​ 然后输入一个N*N的矩阵 其中第i行第j列的数字k表示从点i到点j需要的花费。Output一个数字,最少需要多少花费才能使得整张图任意两点都直接或者间接连通(也就是最小生成树的权)Sample Input50 41 67 34 0 41 0 69 24 78

2020-12-02 11:02:16 1236 1

原创 《图解Java多线程设计模式》笔记(1)

Java 线程何谓线程在单线程程序中,“在某一时间点执行的处理”只有一个。如果有人问起“程序的哪部分正在执行”,我们能够指着程序中的某一处回答说“这里,就是这儿”。这是因为,在单线程程序中,“正在执行程序的主体”只有一个。单线程程序public class Main { public static void main(String[] args) { for (int i = 0; i < 10000; i++) { System.out.p

2020-11-28 20:20:32 244 1

原创 贪心算法题解(最小生成树专题)

A. 最小生成树Description在一张图上有N个点,点与点之间的连接的花费都已经告诉你了,请你设计一下,如何解决这个“最小生成树”的问题。要求用prim方法求解。Input首先输入一个数字N(0〈=N〈=100)​ 然后输入一个N*N的矩阵 其中第i行第j列的数字k表示从点i到点j需要的花费。Output一个数字,最少需要多少花费才能使得整张图任意两点都直接或者间接连通(也就是最小生成树的权)Sample Input50 41 67 34 0 41 0 69 24 78 67

2020-11-25 09:50:37 961

原创 《Effective Java》笔记(1)

创建和销毁对象静态工厂方法使用场景:重复创建相同实例,导致性能浪费。举例:Boolean.valueOf(boolean b)优点:有名称,提升性能,子类可直接使用。缺点:如没有文档则不易使用构建器(Builder)使用场景:构造器中有多个参数,但不一定都需要赋值。举例1:在该类中定义一个内部类 Builder,参数与该类的参数一致,再为其提供构造器,其中是必选参数。而其他可选参数则定义与参数同名的方法为其他参数赋值。builder方法则返回实例。NutritionFacts co

2020-11-23 11:06:50 203

原创 贪心算法题解(哈夫曼编码专题)

A. 哈夫曼编码问题Description给定一个数字N,代表有N种不同的字符,已知每种字符的出现次数,现在要求你设计一种编码,使得任意一个编码都不是另外一个编码的前缀,并且使得这些字符经过编码压缩之后的总长度最小;Input一个数字N 代表有多少种不同的字符(0<=N<=1000)​ N个数字 每个数字代表一种字符的出现次数Output一个数字,代表总的编码长度Sample Input5123453388Sample Output3330Ans

2020-11-18 14:18:21 2076

原创 贪心算法题解(2)

A. 基站安装Description从前有一个一望无际的海滩,海滩后面是陆地,前面是广阔的大海。海中有很多小岛(可以用一个点表示)。现在海滩上需要安装一些基站(海滩上的任意位置)这样岛上的居民就能用手机通话了,所有的基站的覆盖距离都是d,在距离d范围内的小岛都能收到基站发送的信号。我们用笛卡尔坐标系来表示这个问题,定义x轴为海滩,x轴上方是大海,下方是陆地。现给出每个小岛的位置(用x-y坐标表示)和基站的覆盖范围d,你的任务就是写一个程序,计算出可以覆盖所有的小岛,至少需要在海滩上安装多少基站?I

2020-11-11 10:51:22 1391

原创 贪心算法题解

A. 零件加工任务的安排一Description有个国有中型企业,接到一批需要加工零件的订单,员工们非常高兴,可是高兴之后却发现问题了,原来这家企业能够加工这批零件的机床有限,如果仅仅为了这批加工任务而新添机床的话,那么既不合算也不必要,因为加工完这批零件后很可能这些机床又要闲置起来,所以大批量购买肯定不行,但这批订单又必须要完成,那么这么办呢?很想请你帮忙设计一个安排加工任务,使得完成这批订单所需要使用的机器数量最少。​ 假定对于待加工的第i个零件,给你两个非负整数Si,Ei,其中Si表示加工开始的

2020-11-04 10:16:10 2242

原创 《Spring 实战》读书笔记(1)

《Spring 实战》笔记1、Spring 起步Spring 的核心是提供了一个容器(container),通常称为 Spring 应用上下文( Spring application context ),它们会创建和管理应用组件。这些组件也可以称为 bean ,会在 Spring 应用上下文中装配在一起,从而形成一个完整的应用程序。这就像砖块、砂浆、木材、管道和电线组合在一起,形成一栋房子似的。装配 bean 的方式:依赖注入( dependency injection ,DI )。组件并不会创

2020-11-03 21:43:08 246 1

原创 SpringBoot整合Shiro

什么是 Shiro官网:http://shiro.apache.org/是一款主流的 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作。Shiro 就是用来解决安全管理的系统化框架。Shiro 核心组件用户、角色、权限会给角色赋予权限,给用户赋予角色1、UsernamePasswordToken,Shiro 用来封装用户登录信息,使用用户的登录信息来创建令牌 Token。2、Se

2020-10-09 19:18:28 153 1

原创 算法题-食堂排队买菜问题

宁波理工学院有好几个食堂,每当中午下课吃饭时,人会很多,每个同学的口味也可能不同,现有n同学要买自己喜欢吃的饭菜,已知每个同学买饭菜所需要的时间为ti,(0<i<=n),请求出一种排队次序,使每个同学买好饭菜的时间总和为最小。Input输入有多组测试数据,对于每一组测试数据,输入的第1行一个正整数n(n<=10000),第2行有n 个不超过 100的正整数ti,单位为秒. 数与数之间有空格。Output对于每一组测试数据,输出n个同学买好饭菜所需时间的总和的最小值。Sample

2020-06-24 17:49:31 2743 1

转载 vector函数总结(转载)

觉得vector用处蛮多的,所以特地稍微总结一下1、基本操作 ((1)头文件#include< vector >. (2)创建vector对象,vector< int > vec; (3)尾部插入数字:vec.pu...

2020-06-24 17:36:33 497

原创 算法题-回形图案

同学们都知道回形针,今天我们要求输出回形针一样的数字方阵,例如1阶和2阶的图形如Sample所示。你现在的任务是编个程序对于输入的整数N,输出相应的方阵。Input本问题有多组测试数据,每组一个整数N。(0<N<=15)Output对于每组测试数据,输出一个方阵,每个数字场宽为4。每组最后一行由4*(2*N+1)个“-”作为结束行。Sample Input12Sample Output7 8 96 1 25 4 320 21 22 23 2419 7 8 9 2518

2020-06-24 17:06:45 1160

空空如也

空空如也

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

TA关注的人

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