java
文章平均质量分 90
苍白的咏叹调
寻找一朵相似的花。。。
展开
-
Redis Lua脚本实现原子性操作
目录一、简介二、内容说明三、Java中使用Jedis操作一、简介redis操作时单线程的,平常如果想要redis原子性操作的话,可以使用incrBy()和decrBy()方法进行原子性的加减,但是对于事务性的逻辑操作,没有办法实现原子性,Redis 使用单个 Lua 解释器去运行所有脚本,当某个脚本正在运行的时候,不会有其他脚本或 Redis 命令被执行,因此,lua脚本需要运行的使用比较快,不会妨碍其它lua脚本执行二、内容说明 redis命令原创 2021-09-24 21:51:49 · 8252 阅读 · 0 评论 -
ThreadLocal原理
### 一、定义当需要为每一个线程设置一个私有的变量,进行线程隔离时,java提供的ThreadLocal可以帮助我们实现,ThreadLocal有一个内部ThreadLocalMap,存储每个ThreadLocal对象和它的值,value为该线程独有的数据,可以为多种类型ThreadLocal、ThreadLocalMap、Thread三者之间的关系1、ThreadLocal是一个本地线程副本变量工具类,主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,线程之间数原创 2021-04-24 13:02:28 · 145 阅读 · 0 评论 -
Java和Spring中线程池创建方法
一、线程池定义1.JDK中线程池类图Executor:父接口,所有线程池都实现了这个接口,里面有一个excute()方法用于执行线程ExecutorService:线程池接口,继承自Executor接口,供了生命周期管理的方法,返回 Future 对象,可以返回执行完的结果ThreadPoolExecutor:线程池的具体实现类,一般使用ThreadPoolExecutor创建线程池2.创建线程池的工具类Executors:线程池的工具类,用于创建线程池,返回Executo.原创 2021-01-22 21:11:00 · 2301 阅读 · 0 评论 -
shiro框架采取MD5+salt方式加密密码
1.Maven配置<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version></dependency><dependency> <groupId>org.apache.shiro<原创 2020-09-08 11:20:30 · 612 阅读 · 0 评论 -
RSA加签解签方法
一、RSA签名的过程(1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。(2)A用自己的私钥对消息加签,形成签名,并将加签的消息和消息本身一起传递给B。(3)B收到消息后,在获取A的公钥进行验签,如果验签出来的内容与消息本身一致,证明消息是A回复的。 在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回原创 2020-09-05 16:19:50 · 3693 阅读 · 0 评论 -
sharding jdbc根据年月分表
1.配置Maven依赖<!--shardingsphere分表策略--><dependency> <groupId>io.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>3.0.0.M2</version></dependency>...原创 2020-08-31 22:44:33 · 3333 阅读 · 2 评论 -
IDEA中Mybatis逆向工程使用方法
1.首先创建一个Spring Boot项目工程目录如下所示:2..添加maven依赖<!--mysql依赖--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version></dependency&g.原创 2020-08-07 15:26:14 · 1001 阅读 · 0 评论 -
Dubbo使用Zooker注册服务
一、安装配置Zooker1.下载Zooker在apache mirros上下载Zooker :https://mirror.bit.edu.cn/apache/zookeeper/,下载后解压到指定目录建议下载3.4.14版本,其他版本要下载后缀带bin的压缩包2.安装配置本地Zooker解压到指定目录后,进入conf文件夹,将里面的zoo_example.cfg文件重命名为zoo.cfg进入bin目录,编辑zkServer.cmd文件,在zkServer.cmd最后行前加.原创 2020-08-03 23:02:33 · 604 阅读 · 0 评论 -
IDEA中Git操作
前提是安装并配置了git,可以使用git init等命令一、创建git项目1.直接从github、gitlab等网址导入项目选择new-》输入你的git url地址,直接拉取代码2.自创git项目选择VCS->Git from version control->输入你的url 地址,操作和上面图一样之后项目有了git之后,可以使用git->remotes->添你的远程git仓库地址之后查看是否添加远程成功,local代表本地,若没有远程连接或者想要刷新原创 2020-07-23 22:46:00 · 572 阅读 · 0 评论 -
IDEA中SpringBoot中使用单元测试Junit方法
1.选择你要测试类中的方法,右键点击go to2.选中你要进行测试的方法3.这里生成一个getNews()方法4.添加SpringBoot启动项的注解,和你要进行的操作。这里在测试方法中调用Servie中方法,自己写参数传递操作,然后运行测试类,得到返回结果输出5.运行之后的结果...原创 2019-07-14 16:21:06 · 5106 阅读 · 0 评论 -
SpringBoot中使用Redis数据库
1.可以下载Iedis插件浏览Redis中数据2.下好安装好Redis,开启Redis服务3.配置Redis Server信息查看Redis数据库里面数据4.在项目中使用Redis数据库1)在pom.xml中添加依赖包<dependency> <groupId>org.springframework.boot</group...原创 2019-07-14 17:32:05 · 878 阅读 · 0 评论 -
CAS乐观锁原理
1.乐观锁介绍程序完成并发操作时,访问数据时每次不加锁,假设没有冲突去完成某项操作,如果因为冲突失败就重试,直到成功为止。就是当去做某个修改或其他操作的时候它认为不会有其他线程来做同样的操作(竞争),这是一种乐观的态度,通常是基于CAS 原子指令来实现的。2.CAS介绍当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起...原创 2019-07-29 10:22:03 · 2807 阅读 · 0 评论 -
Java读取Excel文件并将之写入数据库操作
一、添加需要的包依赖<!--读取excel文件所需要的包--><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version>...原创 2019-07-25 11:05:02 · 9346 阅读 · 0 评论 -
Shiro安全框架的使用
Shiro安全框架1.介绍Shiro有三个核心的概念:Subject、SecurityManager和Realms。Subject(主体):subject本质上是当前正在执行的用户的特定于安全的“view”。它也可以表示第三方服务、守护进程帐户、cron作业或任何类似的东西——基本上是当前与软件交互的任何东西。SecurityManager(安全管理器): SecurityM...原创 2019-08-06 12:31:06 · 1581 阅读 · 0 评论 -
求二叉树最长路径长度和
1.题目:求任意一颗二叉树最长路径长度样例:如下所示图一树的最长路径长度为4,图二的最长路径长度为7,图一最长路径经过根节点,顶点为1,图二不经过,顶点为32.思路树中任意两个节点之间,连接起来的路径最长。方法就是求出每个节点的左子树和右子树的高度,两者相加就是当前节点的最长路径,然后比较每个节点的最长路径,最大的就是结果3.实现方法定义一个静态变量MaxL...原创 2019-08-09 09:51:39 · 8269 阅读 · 0 评论 -
动态规划——硬币找零和币值最大化问题
一、硬币找零问题1.问题有面值为1元、3元和5元的硬币若干枚,给定一个输入面额,问如何采用最少的硬币数目,得到当前面额2.思路找出状态转移方程,每次可以拿取1元、3元或者5元的硬币,每次拿取,硬币数加1,用d[v]表示当前面额为v的最小硬币数目,d[0]=0; //硬币数为0,不拿d[1]=d[1-1]+1 ; //硬币数为1,只能拿取1元的硬币,相应的当前硬币数...原创 2019-08-10 11:03:03 · 1824 阅读 · 0 评论 -
求1~n的全排列组合
1.题目:给定一个数字n,求它的全排列如n=3,则它的全排列组合方式有如下所示:1 2 31 3 22 1 32 3 13 1 23 2 12.思路:通过深度优先搜索来做,用一个数组来标记当前位置,一个数组来记录当前位置所代表的的值,只要未标记就加入排列数组中,当数组中元素达到n时,输出这个排列,并取消对应位置的标记3.代码如下所示:public class...原创 2019-08-21 15:57:43 · 4470 阅读 · 0 评论 -
Java 的Comparator比较器用法
1.定义:Comparator是外部比较器,用于比较来对象与对象之间的,两个对象进行比较,多用于集合排序,而Comparable可以认为是一个内比较器,根据对象某一属性进行排序的2.使用方法1)定义节点信息class Node{ int x; int y; Node(int x,int y){ this.x=x; this.y...原创 2019-09-03 21:20:45 · 13352 阅读 · 2 评论 -
用BlockingQueue实现生产者与消费者问题
1.生产者与消费者问题:生产者生成一定量的数据放到缓冲区中,然后重复此过程;与此同时,消费者也在缓冲区消耗这些数据。生产者和消费者之间必须保持同步,要保证生产者不会在缓冲区满时放入数据,消费者也不会在缓冲区空时消耗数据2.BlockQueue原理:BlockingQueue 是线程安全的,并且在调用 put,take 方法时会阻塞线程,超过指定容量时,用put时会进行阻塞,没有元素时,...原创 2019-09-09 10:42:24 · 506 阅读 · 0 评论 -
Java实现有向图的拓扑排序
1.拓扑排序对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列2.实现方法利用二维数组保存有向图,重复边过滤,有边的话map...原创 2019-09-09 21:02:50 · 737 阅读 · 0 评论 -
基于face++的人脸识别(上)
因为毕业设计需要做人脸识别的考勤,这里采取已有的平台上的sdk来做人脸识别,详细说下如何使用face++平台来进行人脸识别。 1.注册为face++的开发者。在这里注册个账号,https://console.faceplusplus.com.cn ,之后进入应用管理,创建一个应用2.添加Face++ SDK包。选择自己需要的sdk,下载后将之放入你的项目libs目录下,同步一下,...原创 2018-05-07 11:21:48 · 1529 阅读 · 0 评论 -
JavaWeb学习之路——SpringBoot 中几种异常处理方法(四)
SpringBoot(三)错误处理1.自定义处理异常,返回指定界面controller出现错误的方法中:@RequestMapping("/error")public String error() {String str=null;str.length();return "test";}自定义错误页面.html中:<!...原创 2019-05-22 20:16:40 · 218 阅读 · 0 评论 -
jQuery ajax使用方法
ajax使用方式type: 默认值: "GET")。请求方式 ("POST" 或 "GET"), 默认为 "GET"url: 默认值: 当前页地址。发送请求的地址。data: 发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。 必须为 Key/Value 格式contentType: 发送信息至服务器时内容编码类型。dataType: 预期服务...原创 2019-05-13 10:14:11 · 5039 阅读 · 0 评论 -
LeetCode上删除链表末尾第N个节点算法——Remove Nth Node From End of List
1.题目Given a linked list, remove the n-th node from the end of list and return its head.Example:Given linked list: 1->2->3->4->5, and n = 2.After removing the second node from the end, th...原创 2018-07-05 17:56:18 · 395 阅读 · 0 评论 -
Java中多态(向上转型)机制
1.为什么向上转型?所谓多态,也即向上转型,就是某个对象的引用视为对其基类的引用,编译对象是基类,运行对象是父类。向上转型的对象由于Java后期绑定的特点,若父类重写了基类中的方法,则它调用的是父类中的方法,其余调用的是基类中的方法。通过多态,我们可以减少代码的冗余,当多个类继承某个基类时,我们希望引用对象调用他们自身的方法,这时只需要写出一条基类的对象引用即可。2.代码实现clas...原创 2018-06-28 14:44:01 · 1632 阅读 · 1 评论 -
Java中抽象类和接口的使用方法及区别
1.抽象类和接口抽象类和接口为我们提供了实现类的公共行为规范,在继承它们时对里面的抽象方法进行重写就可以了。抽象类:包含抽象方法和普通方法,抽象方法只需要声明就可以了,不需要写出方法体,此外,抽象类不可以被实例化,但可以有构造器,在下面的代码中我们会看到。抽象类用abstract定义,实现用extends。声明的抽象方法必须被实现。接口:接口中方法默认的都是抽象方法,修饰符为public,实现时的...原创 2018-07-03 10:11:16 · 554 阅读 · 0 评论 -
LeetCode上求最长公共字符前缀字符串问题——Longest Common Prefix
1.题目如下:Write a function to find the longest common prefix string amongst an array of strings.If there is no common prefix, return an empty string "".Example 1:Input: ["flower","flow","flight"]Output: ...原创 2018-06-14 16:35:25 · 795 阅读 · 0 评论 -
LeetCode上求两个排序数组中位数问题—— Median of Two Sorted Arrays
1.题目There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).Example 1:nums1 = [1, 3]n...原创 2018-06-21 17:20:40 · 240 阅读 · 0 评论 -
用JAVA语言创建链表的方法
链表刚学习时是用c来学习的,那时候对于结构体,指针这些东西实现链表觉得很合适,但想要应用到java上还是有些不同的这里,我学习下用java来使用链表的方法:首先,定义节点类//链表节点class Node{protected Node next;protected int data;public Node(int data) { //构造器来赋值// TODO Aut...原创 2018-03-28 11:08:54 · 14631 阅读 · 4 评论 -
JAVA中将带负数的String字符串转换为int型数组方法
原始数据:1 1 0 25 1 -3 12 2 -1 4-7 -8 0 -5去掉空格和换行符 s=s.replaceAll("\r\n",""); s=s.replaceAll(" ", "");输出为:110251-3122-14-7-80-5转化为int型数组将“-”与后一位合并 while (i<A.length) { if (s.charAt(i)=='-') { ...原创 2018-03-21 16:08:01 · 11575 阅读 · 0 评论 -
JAVA中读写文件操作
java文件读取有两种类型,我这里的是字节流的读取操作package test1;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import ja...原创 2018-03-21 10:44:12 · 5667 阅读 · 1 评论 -
Java虚拟机运行时的数据区域
1.堆区(Heap)(1)Heap是被所用线程共享的区域,是虚拟机中内存最大的一块。(2)它的唯一目的就是存放对象的实例。例如:A a=new A(100);存放在堆中的是A(100)这个new出来的对象信息,而不是a这个对象引用(3)它也是GC垃圾回收的主要区域,主要用分代收集算法 2.栈区(VM Stack)(1)每个线程包含一个栈区,不被共享(2)方法...原创 2018-07-19 10:13:55 · 131 阅读 · 0 评论 -
String类中的intern()方法详解
来源地址:https://blog.csdn.net/soonfly/article/details/70147205在翻《深入理解Java虚拟机》的书时,又看到了2-7的 String.intern()返回引用的测试。 其实要搞明白String.intern(),我总结了下面几条规则: 一、new String都是在堆上创建字符串对象。当调用 intern() 方法时,编译器会将字符串添...转载 2018-07-19 11:24:22 · 990 阅读 · 0 评论 -
Spring 框架之Ioc控制反转
IoC,Inversion of Control的缩写,中文名称为控制反转,意思是将对象的控制权转移至第三方,例如IoC容器,即可由IoC容器来管理对象的生命周期、依赖关系等。1.先新建一个Spring项目,如下所示,会下载所需要的jar包,需要等待一会儿2.新建Spring 配置文件,如下所示3.在src下新建一个包,在包下新建Ioc容器类实现Animal接口里面的抽象方法s...原创 2018-08-10 14:58:14 · 199 阅读 · 0 评论 -
Java利用Jakson实现序列化与反序列化操作
1.序列化类信息@Data@AllArgsConstructor@NoArgsConstructorpublic class User { private Integer id; private String name; private String password; @Override public String toString() { ...原创 2019-05-25 11:44:18 · 225 阅读 · 0 评论 -
hashmap实现倒排索引——查询多个单词出现在多个句子中
1.问题描述给定三条句子:d1=I like to watch the sun set with my friend.d2=The Best Places to Watch The Sunset.d3=My friend watches the sun come up.输入两个单词,输出它的在哪些句子中出现过 2.利用hashmap<String,List<...原创 2018-12-03 10:08:56 · 854 阅读 · 0 评论 -
JavaWeb学习之路——SSM框架之SpringMVC(九)
SpringMVC跳转、视图解析器和@ResponseBody的用法1.跳转方式(1)默认方式字符串内容来转发(2)设置返回值内容转发 添加redirect:资源路径· 重定向 添加forward:资源路径 或省略 转发 @RequestMapping("demo4") public String demo4() { ...原创 2018-11-21 16:34:29 · 210 阅读 · 0 评论 -
JavaWeb学习之路——SSM框架之SpringMVC(八)
SpringMVC参数传递:把内容写到方法(HandlerMethod)参数中,SpringMVC只要有这个内容,则会注入,在这里使用注解的方式来传递参数前提使用springmvc注解功能,相应配置请看上节JavaWeb学习之路——SSM框架之SpringMVC(七)1.在jsp文件中设置提交动作<form action="demo" method="post"> ...原创 2018-11-20 21:24:18 · 223 阅读 · 0 评论 -
JavaWeb学习之路——SSM框架之SpringMVC(七)
Spring MVC:简介:SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发1.SpringMVC中重要组件(1)DispatchServerlet:前端控制器,接...原创 2018-11-18 17:14:48 · 245 阅读 · 0 评论 -
JavaWeb学习之路——SSM框架之Spring(五)
前情提要请看JavaWeb学习之路——SSM框架之Spring(四) 整合Spring和Mybatis框架1.在项目的lib下导入如下jar包导入mybatis所有jar和spring的jar基本包,spring-jdbc,spring-tx,spring-aop,spring整合mybatis等2....原创 2018-11-05 19:40:56 · 326 阅读 · 0 评论