- 博客(38)
- 收藏
- 关注
原创 数据库连接池的实现
先通过实现Connection接口来完成一个普通的数据库连接实现import java.sql.Array;import java.sql.Blob;import java.sql.CallableStatement;import java.sql.Clob;import java.sql.Connection;import java.sql.DatabaseMetaData;i...
2019-09-27 17:29:26
213
原创 future的使用
public class UseFuture { /*实现Callable接口,允许有返回值*/ private static class UseCallable implements Callable<Integer>{ private int sum; @Override public Integer call() throws Exception { ...
2019-09-27 17:04:40
188
原创 通过继承RecursiveAction来遍历指定目录(含子目录)
public class FindDirsFiles extends RecursiveAction{ private File path;//当前任务需要搜寻的目录 public FindDirsFiles(File path) { this.path = path; } public static void main(String [] ...
2019-09-27 17:00:15
245
原创 volatile无法提供操作的原子性
public class VolatileUnsafe { private static class VolatileVar implements Runnable { private volatile int a = 0; @Override public void run() { String threadName = Thread.curr...
2019-09-27 16:39:19
172
原创 守护线程的使用和守护线程中的finally语句块
守护线程是非守护线程的“助理”,只要jvm中存在非守护线程,则守护线程就存在,例如负责垃圾回收的线程,而当所有非守护线程执行完毕后,则守护线程也随之结束,不同生但共死public class DaemonThread { private static class UseThread extends Thread { @Override public void run() { ...
2019-09-27 16:27:06
304
原创 无重复字符的最长字串
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"w...
2019-09-24 08:29:31
132
原创 两数相加
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...
2019-09-23 15:47:10
158
原创 两数之和
leetcode算法题给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [...
2019-09-23 09:47:20
154
原创 将中文转化为百分号
package com.able;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;public class Test { public static void main(String[] args) { String str = "able"; Str...
2019-06-20 09:25:30
3140
原创 手写SpringMVC
在某课堂学习到手写SpringMVC后,用来记录一下自己的学习过程,加深一下印象。首先我们得有一个思路:1.我们要先对一个基本包进行扫描,扫描里面的子包以及子包下的类(可以将扫描到的包的路径保存在list中)2.接着就是对扫描的包进行实例化(可以新建一个map<String,Object>来保存bean的id和实例)3.依赖注入,把service层的实例注入到contr...
2019-06-13 00:01:31
284
原创 使用DelayQueue实现延时订单的功能
使用DelayQueue来实现延时订单思路:要使用DelayQueue时,必须要先实现Delayed接口,将数据存入其中,并设置过期时间当DelayQueue中存有元素时,不一定能立即拿到,必须要先等到过期时间过后,这个时候才可以取到元素,根据这个原理可以来实现延时订单的功能首先,我们先通过新建一个类并实现该接口public class ItemVo<T> imple...
2019-06-10 22:36:46
713
原创 使用java代码实现证件照换背景色
思路:我们知道,每张图片都是由众多的像素点组成,那么我们是不是就可以根据像素点的范围来修改这个图片的像素点的颜色,进而就可以达到修改证件照背景颜色的效果啦!我们可以配合取色器获取颜色的rgb,并修改为想要的颜色。缺点:即使证件照背景色看起来是一样的,但色素点还是不一样,所以我们获取像素点必须要在一段范围内,修改之后,效果也没有那么好提示:可以深入学习OpenCV,这样换背景...
2019-06-03 13:05:49
6048
2
原创 多线程中的死循环for(;;)和while(true)的区别
先从while(true)上来讲,它引入了一个变量,这样每次循环都会进行判断,然后再进行下一次循环。for循环明显在语义上更适合。更容易理解括号里面是循环的条件。括号循环条件没写,就是无条件的循环,不用进行判断。所以在开启多线程时,while(true)和for(;;)区别会体现出来,前者存在判断环节,导致线程之间出现运行差别。for(;;)则不会影响,理论上线程会保持同时运行。...
2019-06-03 10:28:06
3230
原创 实现一个简单的数据库连接池
使用wait和notifyAll来实现一个简单的数据库连接池我们先通过实现Connection接口来模拟我们的sql连接public class SqlConnectImpl implements Connection{ //自己定义的方法,用来返回这个sql连接,其他的方法均为覆盖 public static final Connection fetchConnectio...
2019-05-31 22:52:31
348
原创 Intellij安装翻译插件
点击左上角 File >> Settings >>plugins搜索 translation,再Install,重启就好了
2019-05-27 12:28:22
221
原创 使用位运算进行权限管理
之前学习redis时,深刻的体会到了位运算的巧妙,现在和大家一起来分享一下使用位图法统计活跃用户首先假设我们一共统计32个用户是否连续登陆一个周,那么我们可以使用32个bit位分别代表这个32个用户来进行判断假设结果如下周一 1010 1100 0100 0011 1001 0010 0100 1001周二 0011 000...
2019-05-23 13:10:16
1284
1
原创 Java手写自己的lock
基础:需要熟悉JUC工具包以及底层的cas原理和AQS接下来我们正入主题第一种最简单的方法,使用工具类来实现简单的同步我们可以使用AtomicReference来操作当前,当然也可以使用semaphore,阻塞队列等,这样可以实现简单的锁,达到同步的效果。public class AbleLock { //新建一个原子引用类,负责操作当前线程 AtomicR...
2019-05-23 10:16:45
527
原创 通过继承RecursiveTask计算数组和
思路:可以new ForkJoinPool,再通过继承RecursiveTask/RecursiveAction,将其放入ForkJoinPool,求得结果。首先新建一个MakeArray的类,该类是负责提供数组的一个类。public class MakeArray {//数组的长度为ARRAY_LENGTH public static final int ARRAY_LEN...
2019-05-20 12:07:33
336
原创 Linux下同时启动多个tomcat
看了网上很多的文章,发现都是千篇一律,其实没有那么复杂,简单来说,就是两步一.复制tomcat二.修改配置文件(一共是修改server.xml文件中的三个端口,缺一不可)现在来详细介绍一下首先为了以后使用更方便一点,可以新建一个文件夹tomcats,然后复制tomcat目录到tomcats下,可以命名为tomcat1,tomcat2..............然后修改各自的...
2019-05-18 21:02:17
2537
原创 eth0配置多个ip地址
一.可以通过命令来添加临时的ipifconfig eth0:0 192.168.91.110netmask 255.255.255.0broadcast 192.168.91.255 up这是我使用该命令之前的ip执行命令之后,虽然提示失败,但是已经添加ip成功了,并且是可以被ping通的,但是这样的话,电脑重启或者service network restart命令...
2019-05-17 16:13:51
4719
原创 解决linux中没有eth0配置文件
先是在网上看了很多教程和方法,都没有成功,然后我试着用别人的模板,再一点点找错误,才有点小的总结首先,我把我的配置文件分享一下(注意,每个value后面不能有多余的空格,我当时就是因为这个原因,试了好几次都没有成功,)DEVICE=eth0BOOTPROTO=noneIPV6INIT=yesNM_CONTROLLED=yesONBOOT=yesTYPE=EthernetUUI...
2019-05-17 14:33:33
8605
1
原创 并行和并发的区别
并行和并发并行:同一时刻,可以同时处理事情的能力并发:与单位时间相关,在单位时间内可以处理事情的能力通俗易懂的来讲,并行表示的是一个时间点,比如一个餐厅八个打饭的阿姨,这个时候来了九个学生,但只能最多八个人同时打饭,所以这个时候可以说并行数为8。而并发的话,是基于一个时间段来讲的,就拿上面的例子来说,比如每个学生打饭需要30秒,那么一分钟最多可以有16个学生能够打到饭,所以这个时候...
2019-05-09 22:29:26
113
原创 什么是进程和线程
进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源线程:CPU调度的最小单位,必须依赖进程而存在。一个进程中可以包含多个线程,比如qq,可以一边聊天,一边听歌,一边看空间,就是这个意思。...
2019-05-09 22:24:20
514
原创 Linux 下dns错误的个人解决方法
今天虚拟机执行yum install ruby命令时报错了,查了一下,发现百度可以通过IP访问,但不能通过域名访问所以在网上搜了一下,发现了一个解决dns错误的方法我们可以使用命令查看cat /etc/resolv.conf查看自己的nameserver 后面的dns,刚开始我的nameserver的dns很明显是不对的,所以我将自己的nameserver注释掉了然后我将na...
2019-05-08 17:42:38
2795
原创 Redis如何做到持久化
AOF(Append-Only-File)持久化:保存写状态记录下除了查询以外的所有的变更数据库状态的指令,以append的形式追加保存到AOF文件中。而AOF持久化默认是关闭的,可以通过修改redis.conf来打开,我的是redis.windows.conf通过查找并将appendonly 修改为yes,当然也是可以修改appendfilename来修改文件的名字。...
2019-05-06 15:37:16
159
原创 查看jvm默认值
一共有三种命令可以查看,特别分享记载一下。1.-XX:+PrintFlagsInitial2.-XX:+PrintFlagsFinal3.-XX:+PrintCommandLineFlags
2019-05-06 15:36:29
489
原创 深入理解JMM
开始之前,我们先来了解一下cpu和内存的关系 我们先对图进行介绍一下,在CPU内部有一组CPU寄存器,也就是CPU的储存器。CPU操作寄存器的速度要比操作计算机主存快的多,当计算机很快执行完任务时,当然是不能一直等待吧,所以引入了cpu的缓存,一级缓存,二级缓存,三级缓存。存在于主存和CPU寄存器之间,CPU操作CPU缓存的速度快于主存但慢于CPU寄存器。某些CPU可能有多个缓...
2019-04-28 10:26:31
157
原创 解决Linux环境下nginx安装成功后,无法通过ip访问
首先执行命令cd /etc/sysconfig进入到/etc/sysconfig接着执行命令vi ./iptables在commit之前加上-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT最后执行service iptables restart...
2019-04-25 16:16:21
5949
原创 eclipse建立maven中央仓库索引
我先看了网上其他的方法,发现都是千篇一律,结果都是不可行的,然后自己摸索,才达到目的,现在我来和大家分享一下首先eclipse -> Windows ->Preferences ->Maven,如下就行,不用勾选其他的(网上有很多教程说要勾选Download repository index updates on startup,这是每次启动的时候都会下载更新,看你们自己选择...
2019-04-17 20:15:19
977
原创 解决eclipse中,maven rebuild index一直是百分之零的问题
强调:百分之零并不代表一直没有执行,你可以根据自己的下载网速判断是否正在下载,我这里所说的是使用maven默认配置,rebuild index一直为零,下载速度极其慢的情况,接下来给大家分享一下我的解决方法。首先打开maven安装目录下的conf目录中的settings.xml在<mirrors></mirrors>标签内添加如下标签<mirror>...
2019-04-17 19:49:12
4205
3
原创 生成自己的浏览器证书
首先我们会在自己的java的jdk的bin目录中会找到一个keytool.exe的可执行程序然后我们就可以在命令行中开始进行操作了先输入命令keytool -genkeypair -alias "test" -keyalg "RSA" -keystore "myKeyStore"该命令生成了一个名为myKeyStore的密钥库,使用的是RSA加密算法输入密钥库口令(输...
2019-04-16 18:04:56
1415
原创 说说TCP的三次握手
TCP(Transmission Control Protocol) 传输控制协议的主要特点1.TCP是面向连接的传输层协议。2.每个TCP连接只能有两个端点,点对点的。3.TCP提供可靠性。4.TCP连接是全双工的。(TCP允许通信双方在任何时候都能发送数据,TCP连接两端都设有发送缓存和接收缓存,发送端在发送数据后,就做自己的事情了,数据会保存在缓存区,TCP会在合适的时候发送...
2019-04-10 22:58:11
786
原创 Redis的同步机制
增量同步过程一.Master接收用户的操作指令,判断是否需要传播到Slave二.将操作记录追加到AOF文件中三.将操作传播到其他的Slave: 1.对齐主从库 2.往响应缓存中写入指令四.将缓存中的数据发送到Slave...
2019-04-09 15:27:25
214
翻译 TCP的四次挥手
“挥手”是为了终止连接,TCP的四次挥手流程如下:第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态;第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入Close_WAIT状态;第三次挥手:Server发送一个FI...
2019-04-08 08:43:18
225
原创 MySQL错误代码1045的解决方法
MySQL在命令行输入mysql -uroot -p,再输入密码时,出现如下的错误,用来记载一下过程。ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:YES);1.命令行中输入mysqld -nt --skip-grant-tables这是以不检查权限的方式启动。2....
2019-04-02 11:35:00
2780
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人