- 博客(18)
- 收藏
- 关注
原创 ReentrantLock和AQS源码,看这一篇就够了
ReentranLock和AQS的关系在深入分析ReentranLock和AQS之前,我们首先来理清楚一下它们的关系,AQS全名AbstractQueuedSynchronizer队列同步器,是一个能向外提供同步状态管理的基础框架,ReentranLock正是借助了它从而具备了"锁"的能力。那么AQS是如何能做到对同步状态进行管理呢?简要来说,它有一个表示同步状态的int变量和一个队列,这...
2020-03-03 13:19:43
512
原创 通俗易懂的例子告诉你TCP/IP如何保证可靠性
TCP的可靠体现在哪?要对TCP实现的可靠性进行分析,我们首先要知道这个可靠性指的是什么?我觉得主要是三个方面:1. 保证传输的分组比特位不出错2. 保证传输的分组不丢失3. 保证传输的分组不乱序那么TCP如何保证这三个方面不出问题呢?在不同的底层信道上,TCP应该提供的保证也不相同,我们针对不同的信道逐个进行分析可靠信道上的可靠数据传输由于在可靠信道上进行数据传输,因此并...
2020-02-02 15:08:46
980
1
原创 别大意,人人都懂的单例模式,你能写出几种?
首先,什么是单例模式?通俗来说就是,单例模式就是在程序运行过程中,一直只能存在一个实例那么单例模式应该如何实现呢?我们来看几种常见的实现方法 单例模式的几种常见写法 1. 饿汉模式...
2020-01-31 20:29:42
513
原创 HTTPS到底如何保证安全,快来跟我一起复习下
我们都知道HTTPS是HTTP的改进版本,那么在了解HTTPS之前,我们首先来看看HTTP存在的缺点:使用明文(不加密)进行通信不验证通信方的身份,可能遭遇伪装无法验证报文的完整性,所已可能已遭篡改为了避免这些缺点而可能导致的风险,就产生了HTTPS,也就是说HTTP加上加密处理和身份认证以及报文完整性保护后即是HTTPS那么HTTPS是如何实现的呢?HTTPS并非是应用...
2020-01-30 16:32:17
3266
原创 HTTP1.0,1.1,2.0这么多版本,到底需要注意哪些区别?
HTTP1.1在HTTP1.0基础上的改进1. 长连接HTTP 1.0需要使用keep-alive参数来建立一个长连接,而HTTP1.1默认支持长连接长连接的好处:一个网页上可能有多个资源对象,长连接可以通过一个连接传输网页上的所有对象,而短连接每次连接只能传输一个对象,也就是一个网页的内容需要传输多次2. 缓存HTTP1.0缓存的资源对象到了一定时间之后会失效,不能再次使用;而H...
2020-01-29 20:12:35
1375
原创 StringRedisTemplate,RedisTemplate,Jedis,JedisPool如何区分和使用还在傻傻搞不懂?
博主小白最近刚在项目里接触redis,结果发现各种各样对redis进行操作的方式,当时就懵逼了,比如RedisTemplate,Jedis等等,好像对redis操作起来都挺方便呀,这哥几个到底啥关系呀???一气之下各种查找资料…终于还算是搞懂了这哥几个不明不白的关系了…下面就来跟大家分享一下呀1. JedisJedis是Redis官方推荐的面向Java的操作Redis的客户端,听起来好像很牛...
2020-01-22 17:45:44
4765
4
原创 一款简单又好用的序列化工具-Protostuff,及配合Jedis的使用
之前我们谈到使用Jedis存储数据时,需要先进行序列化,那么现在我们就来介绍一款非常好用的序列化工具-protostuff,然后再讲讲它如何配合Jedis进行使用话不多说,直接上代码,首先看看它如何使用:首先还是要引入依赖<dependency> <groupId>com.dyuproject.protostuff</groupId> &l...
2020-01-22 17:44:18
864
2
原创 路径没有错,怎么访问teamplates下的页面一直404呢?看这里你可能就知道啦
来到这里的小伙伴肯定都已经被404气到不行了…不要问我怎么知道的…首先templates文件夹下的页面是不能在浏览器输入路径直接访问的!!!templates下存放的是项目的动态和模板页面,访问的条件为:1. 从controller中进行跳转2. 需要有视图解析器如thymeleaf,freemarker等模板引擎具体配置可以看一个小例子SpringBoot和freemarker的整合...
2020-01-09 20:01:51
526
原创 freemarker在SpringBoot下的使用以及出现的问题
1. 引入maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId></dependency>注意这里不指定版本则与Spri...
2020-01-09 11:18:03
1146
原创 RabbitMQ的安装(在CentOS7下
RabbitMQ的安装 1. 首先使用yum install指令安装好以下工具: gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel 2. 下载好erlang包 rabbitmq包 //下载erlang语言包-P选项用来指定...
2019-12-21 20:05:01
317
原创 动态规划-力扣96-不同的二叉搜索树
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-binary-search-trees著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注...
2019-12-19 09:57:12
184
原创 动态规划-博弈问题-力扣877-石子游戏
亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子piles[i]。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回true,...
2019-12-16 15:40:43
469
原创 HTML的button按钮和submit按钮在提交时的区别
若是button按钮时,比如:<input type="button" name="choose" value="addMedicine" class="button white" onclick="checkinfo()"> function checkinfo(){ var onSaleNo = document.getElementById(...
2019-12-16 13:07:19
6657
原创 Oracle JDBC 模糊查询预编译
正确代码如下:String sql = "select * from OnSale where medicineno like '%'||?||'%' and storeno like '%'||?||'%' and frameno like'%'||?||'%'";之前我一直是 String sql = "select * from OnSale whe...
2019-12-16 13:07:11
1788
原创 servlet如何判断是哪个表单传来的数据???
在表单里加上这个隐藏域,<input type="hidden" name="choose" value="addMedicine">然后在servlet里加上String choose = request.getParameter("choose");if (choose.equals("addMedicine")) { //数据接...
2019-12-16 13:06:55
2082
1
原创 undefined reference to `WSAStartup@8' C++套接字编程出现的问题
codeblocks下解决办法:1:左上角工具栏settings->complier:点击add在windows/system32目录下 选择ws2_32.dll(ws2_32.dll是Windows Sockets应用程序接口, 用于支持Internet和网络应用程序。)OK!...
2019-12-16 13:06:49
4393
原创 Idea建立MAVEN项目整合SSH框架
1.首先建立maven-webapp项目,选择如下选项,点击NEXT,填写项目信息,之后默认next,直至finish项目建好后,项目结构如下:可在main目录下手动建立项目所需目录,如下:并右键点击Java文件夹,标记为:(Sources root 文件夹用来存放Java class文件,若不标记,在new文件时没有Java class选项)并右键点击re...
2019-12-16 13:06:33
2299
4
原创 判断一个字符串中不同字符的个数
public int[] num(String A) { int[] count = new int[26]; for (int i = 0; i < A.length(); ++i) count[A.charAt(i) - 'a']++; return count; }可用来判断一个字符串在经过若干次内部...
2019-12-16 13:05:57
2987
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人