- 博客(50)
- 收藏
- 关注
原创 AOP实现api接口每小时访问次数和成功失败统计
AOP拦截所有请求,获取HttpServletRequest和相应结果,并统计请求耗时,成功失败情况@Slf4j@Aspect@Componentpublic class AccessAOP { public AccessAOP(RedisService redisService) { this.redisService = redisService; } //!是排除 @Pointcut("execution(* com.xxx.contro
2021-01-28 16:50:08
1359
原创 Redis 工具类
此工具类提供简单的key value存储和hash存储,使用的是StringRedisTemplate实现的 添加maven依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.3.0</version>
2021-01-28 16:09:20
265
原创 使用ThreadLocal保存用户登录信息
遇到的问题: 在实际开发中,我们的登录是接的代理,每次取登录信息都需要从HttpServletRequest中取,不是很灵活,假如我们想在service,dao层使用,我们就需要从controller层一层一层传递,非常的麻烦 解决办法: ThreadLocal可以把用户信息保存在线程中,用户发来的每一次请求启动的线程到保存了用户信息,当请求结束,我们会把保存的用户信息清除掉,这样就方便我们在开发中获取用户登录信息 实现思路: 我们需要创建一个ThreadLocal类,创建一个Thread
2021-01-28 14:36:50
2872
原创 ubuntu 安装 opeanjdk8
执行更新$ sudo apt-get update安装sudo ap[t-get install openjdk-8-jdk配置openJDK环境变量sudo vi /etc/environment加入下面值JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"JRE_HOME=${JAVA_HOME}/jreCLASSPATH=.:JAVAHOME/lib:{JRE_HOME}/libPATH=JAVAHOME/bin:P
2020-08-21 17:07:21
617
原创 ubuntu 安装 nodejs12
执行下面的命令:sudo apt -y install curl dirmngr apt-transport-https lsb-release ca-certificatescurl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -sudo apt install nodejs查看版本:node -vnpm -v
2020-08-21 16:29:38
3221
1
原创 centos7 上安装 redis 服务
安装gcc:yum -y install gcc 如果提示Nothing to do,无需安装 获取redis安装包:wgethttp://download.redis.io/releases/redis-5.0.7.tar.gz 创建个文件夹:mkdir app 解压到指定文件夹:tar -zxvf redis-5.0.7.tar.gz -C app 进入文件夹:cd app /red...
2020-02-24 10:15:37
103
原创 centos7 中 yum [Errno 256] No more mirrors to try 错误
进入这个文件夹: cd/etc/yum.repos.d/然后删除这个文件夹下所有文件找一个能用的centos7机器,把那台机器的/etc/yum.repos.d/ 下的文件都拷贝到这台机器上然后: yum update 即可...
2020-02-23 18:21:18
1712
原创 Java中利用HttpClient 发送Patch请求,携带Json参数
传入参数有url json对象和请求头,返回的是响应的状态码,可以根据你自己的逻辑改成返回是相应内容public static int patch(String url,JSONObject jsonParam, Map<String, String> header){ int statusCode = 0; CloseableHttpClien...
2020-02-18 18:25:53
3786
3
原创 模拟a标签实现带header的下载
function handleDownLoad() { fetch('xxxx', { method: 'GET', headers: new Headers({ //自己加的头信息全都要转成string id: xxxx.toString(), 'ACCESS-TOKEN': window.localStorage...
2020-02-13 15:34:13
11807
4
原创 使用POI读取Excel表格和导出Excel文件
POI实现Excel读取和导出的工具类://读取Excel表格存成List<List<String>>的数据结构public static List<List<String>> readXlsxByStream(InputStream inputStream) throws IOException { List<List...
2020-02-11 17:45:28
477
原创 Spark 安装及使用
spark安装 tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C 指定目录 官方例子运算pi: bin/spark-submit --class org.apache.spark.examples.SparkPi --excutor-memory 1G --total-executor-cores 1 ./examples/jars/spark-exa...
2020-02-01 10:33:11
151
原创 前端报错:Failed to execute 'setRequestHeader' on 'XMLHttpRequest': Value is not a valid ByteString.
报错详细:Unhandled Rejection (TypeError): Failed to execute 'setRequestHeader' on 'XMLHttpRequest': Value is not a valid ByteString.报错原因: 是请求头中存在汉字解决方案: 我们前段可以使用Base64进行编码encodeURI...
2020-01-02 17:19:14
7712
原创 Java中 HttpClient中转上传文件遇到的坑
遇到的坑: 查询了网上的博客,百分之99的人在添加字节流文件的时候都是这么写: MultipartEntityBuilder builder = MultipartEntityBuilder.create();builder.addBinaryBody("file", file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fil...
2019-11-23 15:14:37
1209
1
原创 Java中算日期差的天数
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");long start = simpleDateFormat.parse(startTime).getTime(); //startTime为开始时间long end = simpleDateFormat.parse(endTime).getTime(...
2019-11-08 09:28:21
242
原创 node报This is probably not a problem with npm. There is likely additional logging output above.错误
可能由于版本更新的原因导致的可以npm install一下,如果还不可以,重新安装一次,在把之前装的都清空rm -rf node_modulesrm package-lock.jsonnpm cache clear --forcenpm install...
2019-10-31 18:58:49
404
原创 单例模式总结
单例模式,最常见的有两种单例模式,饿汉式和懒汉式,如下:/** * 饿汉式 */public class SingletonHungry { //单例对象 private SingletonHungry instance = new SingletonHungry(); //私有构造方法 private SingletonHungry(){} ...
2019-09-01 16:02:06
77
原创 Java使用nashorn引擎运行运行js的代码实现
java8中采用了新一代的js执行引擎,比之前快了2~10倍,下面是一个例子import java.io.File;import java.io.FileReader;import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;impor...
2019-07-16 16:20:55
645
原创 Java AES加密 CBC模式 zeropadding填充 实现代码
下面的代码为AES加密 CBC模式,zeropadding填充,偏移量为key,输出格式为Base64的Java实现import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypt...
2019-07-15 14:26:45
7480
3
原创 二叉树的前序中序后序遍历
public class Tree { static class TreeNode{ int value; TreeNode left; TreeNode right; TreeNode(int value){ this.value=value; } } //前序遍...
2019-07-10 09:08:43
75
原创 Centos7下安装mysql数据库
1.下载了安装用的Yum Repository,然后就可以直接yum安装了。 wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2.安装MySQL,时间较长,耐心等待:yum -y install mysql57-community-release-el7-10.noar...
2019-06-21 18:09:00
82
原创 Java web项目中出现import javax.servlet 没有导入的错误
错误如下:解决办法:把下载的tomcat文件夹下lib包中的servlet-api.jar添加到web项目中的lib下,重新导入lib就不会爆红了。
2019-05-05 17:12:14
3148
转载 Spring 遇到org.springframework.asm.ClassReader.(Unknown Source)
java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.<init>(Unknown Source) at org.springframework.asm.ClassReader.<init>(Unknown Source) at org.springfra...
2019-05-05 15:14:37
2214
转载 hadoop中出现Call From ubuntu/127.0.1.1 to localhost:8020 failed on connection exception
更改core-site.xml文件<configuration><property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/app/hadoop/tmp</value> <description&g...
2019-04-14 19:30:15
5628
1
原创 Java中字符串与整型,字符串与字符数组的相互转换?
String转换成int String s ="10000"; int n = Integer.valueOf(s); String s ="10000"; int n = Integer.parseInt(s); 都可以装换成可加减的类型,如果定义是Integer n也是可以的,定义成int n比较用“==”,Integer用equals方法,这样测试下来没有任何区别 i...
2019-03-23 21:10:25
311
原创 《剑指Offer》面试题21:调整数组顺序使奇数在偶数前面
第一种方法:最简单的方法,遍历数组,遇到偶数,记下来,把后面的数都往前挪一位,然后把这个偶数放到数组的最后一位。但在这个过程中如果偶数紧挨着,挪完后当前那位还是偶数,如果不判段一下,就会错过这一位。当我们挪完后判断了当前位,需要减少遍历数组的次数,因为随着数组的遍历,数组最后面都是偶数,如果不减少次,遍历到最后全是偶数,会形成死循环。代码如下:public static void odd...
2019-03-08 16:48:04
87
原创 lamda表达式的使用
lamda表达式可以简化匿名内部类繁杂的代码匿名内部类的写法:interface IMessage { public void print();}public class lamda { public static void main(String[] args) { fun(new IMessage() { @Override public void ...
2019-02-21 17:32:48
450
转载 交换机和路由器的区别?
1.交换机是一根网线上网,大家有各自的宽带账号,分别拨号上网,大家上网之间不会相互影响;路由器比 交换机多了一个虚拟拨号的功能,通过同一台路由器的电脑公用一个宽带帐号,上网之间相互影响。2.交换机工作在数据链路层,根据MAC地址寻址。路由器工作在网络层,根据IP地址寻址,路由器可以处理TCP/IP协议,交换机不行。3.路由器可以扩展网络应用,例如开启ACL访问控制列表,NAT地址转换等功能...
2019-02-19 10:18:42
130
原创 简述Java中sleep()和wait()的区别以及notify()?
sleep()来自Thread类,wait(),notify()来自Object类。 当执行sleep的时候没有释放锁,而wait方法必须释放锁,使得其他线程可以使用同步代码块或方法,wait释放锁用notify唤醒;sleep不出让系统资源,wait出让系统资源,在线程等待池中等待。 wait,notify,notifyAll只能用在同步控制(同步控制方法或同步控制块),而sleep可以在任...
2019-02-18 17:55:49
459
原创 synchronized与lock的区别?
lock是一个接口,而synchronized是Java关键字,synchronized是内置的语言实现。 synchronized在发生异常时,会自动释放锁对象,不会使程序出现死锁,lock发生异常,不会释放锁对象,需要在finally代码块中关闭锁对象(unlock()方法)。 lock可以让等待锁的线程响应中断,而synchronized不可以在等待锁对象时响应中断,必须等待完拿到锁对象...
2019-02-18 17:17:54
129
转载 启动线程时,start()和run()的区别是什么?
1.start()方法:用来启动线程,实现了多线程的运行,通过调用Tread类的start方法来启动一个线程,这时此线程处于就绪态,没有运行,当此条线程得到了cpu的时间片,就开始执行run方法,这里的run方法称为线程体,他包含了要执行这个线程的内容,run方法运行结束,线程终止。2.run方法就是一个普通的方法,如果直接调用run方法,他仅仅在主线程这条线程中执行。程序仍然顺序执行,执行完...
2019-02-16 17:49:20
1288
1
原创 Callable与Runnable的区别,以及和线程池的组合使用
Callable接口:实现callable接口重写call方法是开启多线程的另一种办法,与Runnable的方法类似,但是有几点区别Callable定义的方法是call,而Runnable定义的方法是run Callable的call方法有返回值,而Runnable的run没有 Callable的call方法可以抛异常,但Runnable的run方法不可以抛异常线程池:短线程的开启和关闭...
2019-02-16 16:51:45
637
原创 Java开启多线程的三种方法?
1.继承Thread类public class Demo1 { public static void main(String[] args) { myThread mt = new myThread(); //3.创建子类对象 mt.start(); //4.开启线程 for(int i = 0;i<10000;i++) { Sy...
2019-02-15 15:43:34
3421
原创 从浏览器中地址栏输入一个地址到显示出来页面都发生了什么?
1.DNS解析域名,返回IP地址2.浏览器和服务器建立连接TCP连接,三次握手3.发送HTTP请求(Get/Post)4.服务器收到请求解析,执行响应的业务逻辑5.内容下载,服务器发送响应6.解析HTML页面7.释放连接,四次握手...
2019-02-14 16:19:48
2404
原创 死锁的产生原因及产生死锁的四个必要条件?
产生死锁的原因主要是: 资源互斥使用,一旦占有别人无法使用 进程占有了一些资源,又不释放,再去申请其他资源 各自占有的资源和互斥申请的资源形成了环 如果系统资源充足,进程的资源请求能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也产生死锁。 产生死锁的四个必要条件: 互斥使用,这是资源固有的属性,一个资源一次只能被一...
2019-02-13 16:54:53
4968
原创 Java对象的内存布局
Java对象的内存布局包括:对象头,实例数据,对齐填充1.对象头 对象运行时的数据信息,包括哈希码,分代年龄,锁状态标志等信息 对象指向元信息的指针,Jvm通过这个指针来确定这个对象是那个类的实例 2.实例数据:对象存储真正的有效信息 3.对齐填充:Jvm要求对象的大小必须是8的倍数,不是的话,需要补位对齐...
2019-02-13 16:16:44
77
原创 Servlet中include()、forward()、sendRedirect()的区别?
1.forword() 转发,转发浏览器只请求一次,即url地址不变,转发页内数据不会显示到浏览器,只显示目的页的数据2.include() 和forword()类似,也只请求一次,但是会把转发页和目的页的数据都显示出来3.sendRedirect()重定向,请求两次只显示目的页的数据...
2019-01-17 22:08:01
213
原创 解决servlet中Starting Tomcat v8.5 Server at localhost' has encountered a problem的错误
错误如图所示:原因是没有在<url-pattern>标签中加“/”,加上就好了加上后:
2019-01-15 18:30:25
6767
转载 Navicat连接MySQL8.0出现1251错误
mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,所以修改加密规则即可。ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 ALTER USER 'root'@'lo...
2019-01-12 13:59:08
224
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人