自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (3)
  • 收藏
  • 关注

原创 Java注解2--解析注解

一、概念通过反射获取类、函数或成员上的运动时注解信息,从而实现动态控制程序运行的逻辑。二、操作代码1、准备注解2、编写解析代码public class ParseAnn{ public static void main(String[] args){ //1、使用类加载器加载类 try{ Class c=Class.forName("com.ann.test.Child"); //2、找到类上面

2020-08-12 11:09:44 170

原创 Java注解学习1

一、概念Java提供了一种源程序中的元素关联任何信息和任何数据的途径和方法。二、JDK自带注解1、@Override(表示方法覆盖父类的方法)2、@Deprecated(表示该方法过期了)3、@SuppressWarning(表示忽略警告)三、注解的分类按运行机制分源码注解--注解只在源码中存在,编译成.class文件就不存在了 编译时注解--注解在源码和.class文件中都存在 运行时注解--在运行阶段还起作用,甚至影响运行逻辑的注解按照来源分来自JDK的注解

2020-08-12 10:50:31 159

原创 Cookie和Session的工作原理与作用

一、Cookie1、介绍因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么。为了做到这点,就需要使用到Cookie了。服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。Cookie(复数形态:Cookies),是指某些网站为了辨别用户身份、进行session跟踪而储存

2020-08-11 15:10:59 388

原创 Https加密过程

一、HTTP和HTTPS区别HTTP:直接通过明文在浏览器和服务器之间传递信息。HTTPS:采用对称加密和非对称加密结合的方式来保护浏览器和服务端之间的通信安全。二、对称加密与非对称加密对称加密:加密和解密都是同一个密钥。非对称加密:密钥成对出现,分为公钥和私钥,公钥和私钥之间不能互相推导,公钥加密需要私钥解密,私钥加密需要公钥解密。区别对称加密速度快,非对称加密速度慢(相对慢100倍)。 对称加密相对非对称加密不安全,只要密钥暴露和,明文传递没有区别;非对称加密可以将公...

2020-08-11 14:13:12 587

原创 算法练习--二叉树展开为链表

题目:给定一个二叉树,将它展开为一个单链表。示例:个人思路:其实就是进行前序遍历,用列表存储每个节点,然后对每个节点的指针进行修改代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int va

2020-08-11 13:46:35 166

原创 算法练习--打家劫舍 III--递归

题目:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例:个人思路:用一个flag进行标记,为0表示不抢,那么最大金额来自左右子树的最大抢劫之和;为1表示抢,那么最大金额为该

2020-08-11 13:29:21 357

原创 线程池自学笔记14--取款业务练习

案例介绍:设计一个程序,使用两个线程模拟在两个地点同时从一个账号中取钱,假如卡中一共有1000元,每个线程取800元,要求演示结果一个线程取款成功,剩余200元,另一个线程取款失败,余额不足;要求:1:使用线程池创建线程2:解决线程安全问题思路提示:1:线程池可以利用Executors工厂类的静态方法,创建线程池对象;2:解决线程安全问题可以使用synchronized方法控制取钱的操作;3:在取款前,先判断余额是否足够,且保证余额判断和取钱行为的原子性;代码:编写任

2020-08-03 14:45:28 249

原创 线程池自学笔记13--秒杀商品练习

案例介绍: 假如某网上商城推出活动,新上架10部新手机免费送客户体验,要求所有参与活动的人员在规定的时间同时参与秒杀挣抢,假如有20人同时参与了该活动,请使用线程池模拟这个场景,保证前10人秒杀成功,后10人秒杀失败;要求: 1:使用线程池创建线程 2:解决线程安全问题思路提示: 1:既然商品总数量是10个,那么我们可以在创建线程池的时候初始化线程数是10个及以下,设计线程池最大数量为10个; 2:当某个线程执行完任务之后,可以让其他秒杀的人继续使用该线程...

2020-08-03 01:41:40 371

原创 线程池自学笔记12--异步计算结果(Future)

我们有时需要利用线程进行一些计算,然后获取这些计算的结果,而java中的Future接口就是专门用于描述异步计算结果的,我们可以通过Future 对象获取线程计算的结果;Future 的常用方法如下: boolean cancel(boolean mayInterruptIfRunning)试图取消对此任务的执行。 V get()如有必要,等待计算完成,然后获取其结果。 V get(long timeout, TimeUnit unit)如有必要,最多等待为使计算完成所给定的时间之后,获..

2020-08-03 01:13:17 253

原创 线程池自学笔记11--scheduleWithFixedDelay练习

编写任务类class MyRunnable3 implements Runnable{ private int id; public MyRunnable3(int id) { this.id = id; } @Override public void run() { String name = Thread.currentThread().getName(); try { Thread

2020-08-02 22:30:37 302

原创 线程池自学笔记10--scheduleAtFixedRate练习(间隔重复执行)

编写任务类class MyRunnable2 implements Runnable{ private int id; public MyRunnable2(int id) { this.id = id; } @Override public void run() { String name = Thread.currentThread().getName(); try { Thread

2020-08-02 22:26:53 693

原创 线程池自学笔记9--schedule练习

编写任务类class MyRunnable implements Runnable{ private int id; public MyRunnable(int id) { this.id = id; } @Override public void run() { String name = Thread.currentThread().getName(); System.out.println(name+"执

2020-08-02 22:19:54 149

原创 线程池自学笔记8--ScheduledExecutorService接口

ScheduledExecutorService是ExecutorService的子接口,具备了延迟运行或定期执行任务的能力,常用获取方式如下:static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)创建一个可重用固定线程数的线程池且允许延迟运行或定期执行任务;static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, Th

2020-08-02 22:16:48 289

原创 线程池自学笔记7--shutdown、shutdownNow练习

编写任务类/* 任务类,包含一个任务编号,在任务中,打印出是哪一个线程正在执行任务 */class MyRunnable4 implements Runnable{ private int id; public MyRunnable4(int id) { this.id = id; } @Override public void run() { //获取线程的名称,打印一句话 String name

2020-08-02 21:37:48 283

原创 线程池自学笔记6--newSingleThreadExecutor练习

编写任务类/* 任务类,包含一个任务编号,在任务中,打印出是哪一个线程正在执行任务 */class MyRunnable3 implements Runnable{ private int id; public MyRunnable3(int id) { this.id = id; } @Override public void run() { //获取线程的名称,打印一句话 String name

2020-08-02 21:11:03 226

原创 线程池自学笔记5--newFixedThreadPool练习

编写任务类/* 任务类,包含一个任务编号,在任务中,打印出是哪一个线程正在执行任务 */class MyRunnable2 implements Runnable{ private int id; public MyRunnable2(int id) { this.id = id; } @Override public void run() { //获取线程的名称,打印一句话 String name

2020-08-02 21:08:54 170

原创 线程池自学笔记4--newCachedThreadPool练习

编写任务类/* 任务类,包含一个任务编号,在任务中,打印出是哪一个线程正在执行任务 */class MyRunnable implements Runnable{ private int id; public MyRunnable(int id) { this.id = id; } @Override public void run() { //获取线程的名称,打印一句话 String name =

2020-08-02 19:19:04 237

原创 线程池自学笔记3--ExecutorService接口

一、ExecutorService介绍ExecutorService接口是java内置的线程池接口,通过学习接口中的方法,可以快速的掌握java内置线程池的基本使用常用方法: void shutdown() 启动一次顺序关闭,执行以前提交的任务,但不接受新任务。List<Runnable> shutdownNow() 停止所有正在执行的任务,暂停处理正在等待的任务,并返回等待执行的任务列表。<T> Future<T> submit(Callable.

2020-08-02 12:23:17 209

原创 线程池自学笔记2--线程池工作原理

我们要想自定义线程池,必须先了解线程池的工作原理,才能自己定义线程池; 这里我们通过观察java中ThreadPoolExecutor的源码来学习线程池的原理;一、ThreadPoolExecutor构造方法public ThreadPoolExecutor(int corePoolSize, //核心线程数量 int maximumPoolSize,// 最大线程数 l

2020-08-02 11:26:52 230

原创 算法练习--队列的最大值__单调队列

题目:请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value需要返回 -1示例:输入:["MaxQueue","push_back","push_back","max_value","pop_front","max_value"][[],[1],[2],[],[],[]]输出:[null,null,null,2,1,2...

2020-08-01 21:56:14 946

原创 算法练习--二叉搜索树的后序遍历序列__递归

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。示例:个人思路:根据二叉搜索树的后序遍历可以知道最后一个数是当前节点,而左树从开头开始并且比当前节点小的序列,右树是从左树之后到当前节点前一位。所以只要从头开始找到左右树的序列,在判断右树最后一个节点是不是当前节点的前一个,如果不是,那么无法构成二叉搜索树,同时二叉搜索树的左右子树也必须是二叉搜索树。代码:class Solu..

2020-08-01 21:43:32 195

原创 算法练习--矩阵中的最长递增路径__递归

题目:给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例:个人思路:通过递归,判断上一个值是否小于当前值,如果小于,那么长度加1,继续向下递归,否则返回当前长度。代码:class Solution { public int longestIncreasingPath(int[][] matrix) { int re=0; for(in

2020-08-01 21:15:46 290

登录页面模板.rar

这是一个登录页面模板,已经实现了非空提示,页面有酷炫的动态效果。使用时,将页面的对应提交部分代码进行更改即可使用

2020-06-29

SpringBoot.docx

这是通过SpringBoot的学习资料!这是通过SpringBoot的学习资料!这是通过SpringBoot的学习资料!这是通过SpringBoot的学习资料!这是通过SpringBoot的学习资料!这是通过SpringBoot的学习资料!重要的事情说6次

2020-02-29

空空如也

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

TA关注的人

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