通俗理解AQS原理及与Reentrantlock的关系 面试时候一个很常见的问题,就是AQS的理解,往往问到Reentrantlock之后,面试官会问,你知道Reentrantlock的实现吗?ReentrantlockReentrantlock翻译过来就是可重入锁,通俗的讲,就是如果一个线程获取到了这个锁,他可以再次获取。但是释放的时候,如果获取了10次,也需要释放10次才能完全释放完毕也就是说,这里lock 10次,需要unlock...
完全理解HTTPS传输过程及原理 HTTPS比HTTP多了一个TLS/SSL加密层,不仅对数据进行了加密,还提供了身份验证的功能HTTPS使用了非对称加密和对称加密一起使用的方法。简单地说,就是其中的一方先生成一个对称加密的密钥,然后通过非对称加密的方式来发送这个密钥,这样双方通信后就可以通过对称加密来进行加密和解密了关于SSL/TLS。TLS的前身是SSL,,位于应用层和传输层之间握手层是用于端对端协商密码和...
完全理解对称加密及非对称加密 对称加密:又被称为但密钥加密,同一个密钥既可以加密,也可以解密这里使用HTTP进行演示,客户端和服务器持有同一个密钥,客户端使用密钥加密后,服务端进行解密非对称加密:两个人进行对话,每个人都有一把公钥和一把私钥进行通讯时候,他们先交换各自的公钥。假设女生要给男生发文件,她先用男生的公钥给文件加密,之后传输给男生男生拿到加密过的文件后,用自己...
ThreadLocal的实际使用场景 我们知道实际开发中会分层,比如Controller-Service-dao层如果说dao层需要调用Controller层中的一个对象,那么该怎么做呢,常见的想法,在每个方法上的参数里面,带上那个对象,如上图所示。这样耦合极大那么改动一下,在最上层的那个类中设置一个静态方法,这样总可以调用了但是这样会有一个极大的问题,就是线程安全问题,如果那个对象是非线程安全的,多个线程同时操作那一...
多次使用流密码破解范例(Many Time Pad) Many Time PadLet us see what goes wrong when a stream cipher key is used more than once. Below are eleven hex-encoded ciphertexts that are the result of encrypting eleven plaintexts with a stream c...
SpringBoot(SpringMVC)添加响应头字符串 @RequestMapping(value = "keyword_dic.html", method = RequestMethod.GET)public String showKeywordDic(HttpServletResponse response) { response.setHeader("Last-Modified",new Date().toString()); ...
Java将文件转换成UTF-8无BOM格式 做工程时候,需要用到utf-8无BOM格式的txt文件,所以写了个转换工具类大致原理是,UTF-8无BOM开头会多几个字节,这个程序把原本文本保存下来,在开头多写入几个字节,再把源文本写回去package net.forestpolice.lawsearch.utils;import java.io.*;public class FileUtils { public void tu...
SpringMVC(Springboot)返回文件方法 项目需要生成excel表格,然后返回给用户,用户需要下载这个excel表格,所以封装了一下返回文件流的方法public ResponseEntity<FileSystemResource> export(File file) { if (file == null) { return null; } HttpHeaders headers = ne...
Thymeleaf+bootstrap实现简单分页 做项目时候,想找一个简单的分页代码,懒得用前端框架和json,没找到,就自己写了一份简单的需要从后台传两个变量:indexPage(当前页数)totalPage(一共页数)效果图如下:总体思路是以当前页为中心,左边三个按钮右边三个按钮,挨个判断+页数和-页数时有没有超出范围在第一页和最后一页时需要做一个判断,如果当前页等于1时,上一页按钮失效,当前页等于总页数时,最后一页失效最后上代码:模板代码基...
thymeleaf模板布局之引入其他html片段(类似jsp:include功能) 在实际开发当中,有一些重复的内容必须提取出来,这样不仅页面布局合理,修改也会方便,改一处所有页面便都能得到改动。比如导航栏,底部版权声明等在jsp中,一般使用jsp:include:xxx.jsp来实现这个功能,那在thymeleaf里怎么做呢先说把所有html文件都引入进来的方法:我把导航栏的html片段单独提了出来,如果想全部引用它,就在想引用的那个页面写一个div,然后加上th:replac...
蓝桥杯之9数算式 观察如下的算式: 9213 x 85674 = 789314562 左边的乘数和被乘数正好用到了1~9的所有数字,每个1次。 而乘积恰好也是用到了1~9的所有数字,并且每个1次。 请你借助计算机的强大计算能力,找出满足如上要求的9数算式一共有多少个? 注意: 1. 总数目包含题目给出的那个示例。 2. 乘数和被乘数交换后作为同一方案来看待。思路:数据量很大,如果无脑for循环将会造成O(n3)的复...
蓝桥杯之包子凑数 标题:包子凑数小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。当然...
java使用BigInteger进行进制转换 在java中,BigInteger类自带三十六进制内任意转换功能简单的就一行代码:String string = new BigInteger("3244",5).toString(30); System.out.println(string);以上意思为把3244这个五进制数转成三十进制的数...
java实现简单任意进制互转 思路:输入一个字符串,将他转换成10进制,然后再将10进制的数转换成其他进制java中Integer类有一个相当好用的进制转换功能int num = Integer.parseInt("21A1",11)这句就会自动把21A1这个11进制数转换成10进制。10进制数转换成其他进制就不再赘述,网上有很多一搜一大把。最后上代码,代码还是相当简洁的,缺点是无法应对大数据,有兴趣的同学也可以自行改成Big...
蓝桥杯之高斯日记java快速解法 题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯, 它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。 在高斯发现的一...
蓝桥杯之承压计算 标题:承压计算X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每块金属原料的外形、尺寸完全一致,但重量不同。金属材料被严格地堆放成金字塔形。 7 5 8 7 8 8 9 2 7 ...
博弈论之双人取数游戏详解 描述有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的两端取数,取数后该数字被去掉并累加到本玩家的得分中,当数取尽时,游戏结束。以最终得分多者为胜。编一个执行最优策略的程序,最优策略就是使玩家在与最好的对手对弈时,能得到的在当前情况下最大的可能的总分的策略。你的程序要始终为第二位玩家执行最优策略。格式PROGRAM ...
解决新版树莓派无法开启CSI接口摄像头问题 博主近日想拿树莓派做个监控系统,于是入手了树莓派3B以及官方的Camera V2。刷了最新版的raspbian系统,发现怎么都无法使用。网传的如下的图,然而我刷的最新的系统里根本没有这个选项。解决方法如下:首先判断一下摄像头是不是不起作用状态使用vcgencmd get_camera发现support=0 确实没识别到摄像头然后先开启新版的摄像头支持选项第五项-------找到camera相关的...
蓝桥杯之快速排序详解 快速排序排序在各种场合经常被用到。快速排序是十分常用的高效率的算法。其思想是:先选一个“标尺”,用它把整个队列过一遍筛子,以保证:其左边的元素都不大于它,其右边的元素都不小于它。这样,排序问题就被分割为两个子区间。再分别对子区间排序就可以了。下面的代码是一种实现,请分析并填写划线部分缺少的代码。注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。#include <stdio.h&...