![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
SmallTenMr
能识何人,决定你与何人处。与何人处,决定你能成何人!
展开
-
非对称加密算法java
public class GetSignFuncImpl implements GetSignFunc { private static final int MAX_ENCRYPT_BLOCK = 117; private static final int MAX_DECRYPT_BLOCK = 128; private static final String PUBLIC_KEY = "213213213213123dsvdvdsfdsfdsfsf"; @Over.原创 2022-05-25 14:30:51 · 387 阅读 · 0 评论 -
事件异步单服务层调用
/*** 业务逻辑**/public void test(){ //todo //..... //异步执行事件,方法直接返回true applicationEventPublisher.publishEvent(new asyEvent("123"));}/*** 监听**/import org.springframework.context.ApplicationEvent;@Getter@Setter@ToStringpublic cl...原创 2021-04-08 15:19:48 · 225 阅读 · 0 评论 -
docker搭建Nacos
1. 下载nacos镜像 docker pull nacos/nacos-server:1.3.12. mkdir -p /opt/nacos/init.d3. mkdir -p /opt/nacos/logs4. cd /opt/nacos/init.d5. 在custom.properties中编写如下: mnagement.endpoints.web.exposure.include=*6. 启动镜像 docker run -d -p 88.原创 2021-04-06 17:45:40 · 302 阅读 · 0 评论 -
接口重试
package com.kids.boss.retry;public class RetryDemo { public static void main(String[] args) { Boolean flag = false; int i = 0; while( !flag && i++ < 5){ try{ int a = 1/1; .原创 2021-03-25 15:57:46 · 342 阅读 · 0 评论 -
入参自动转换枚举
/*** 定义一个枚举**/@Getterpublic enum StatusType { SUCCESS("1","成功"), FAIL("2","失败"), PROCESSING("3","进行中"), ; StatusType(String code,String desc){ this.code = code; this.desc = desc; } private String code;..原创 2021-03-17 15:29:09 · 527 阅读 · 0 评论 -
java金额转换
public static void main(String[] args) { //分-万 Double amount = new BigDecimal(1512121).divide(new BigDecimal(10000), 4, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println(amount); //分-千 Double amount1 = new .原创 2021-03-04 14:08:29 · 897 阅读 · 1 评论 -
JDK8 LocaDate相关用法
public static void main(String[] args) { //年 int year = LocalDate.now().getYear(); System.out.println(year); //月(英文) Month month = LocalDate.now().getMonth(); System.out.println(month); //日 .原创 2021-03-04 13:44:31 · 310 阅读 · 3 评论 -
雪花算法生成主键id demo
package com.kids.demo01.snow;//SnowFlake算法用来生成64位的ID,刚好可以用long整型存储,能够用于分布式系统中生产唯一的ID, 并且生成的ID有大致的顺序。//在这次实现中,生成的64位ID可以分成5个部分:// `0 - 41位时间戳 - 5位数据中心标识 - 5位机器标识 - 12位序列号`public class SnowFlake ...原创 2020-04-03 17:22:57 · 1004 阅读 · 0 评论 -
lambda简单案列
package com.kids.demo01.lanbuda;import com.kids.demo01.entity.user;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.stream.Collectors;//兰姆达表达式public cla...原创 2020-04-03 17:20:02 · 302 阅读 · 0 评论 -
GET和POST AES加密验签,body加解密步骤
需求:根据name和age查询数据,需要验签(只讲逻辑) 假设参数:?name=316314643131654&age=15&AppID=98233030&iv=9406238369428fe3c305c9195f4a6f5a&sign=xxxx 1.首先获取get方式传入的参数,其中有固定的一个必传参数AppId,通过AppId去数据库中取...原创 2019-11-12 17:45:53 · 2608 阅读 · 0 评论 -
AES 加解密模式CBC + 填充模式PKCS5Padding + 128位加解密
对称加解密算法AES +加解密模式CBC+ 填充模式PKCS5Padding + 128位加解密 1.对称加密: 加密者和解密者用的是同一串秘钥 2.AES有四种加解密模式:CBC、EBC、CFB、OFB 。CBC模式下,加密时,是对明文进行分组加密的,每组大小一致,到 最后一组时,可能长度不够,这个时候就需要填充到一样长度,就有了下面的填充模式。 ...原创 2019-11-12 15:06:59 · 6337 阅读 · 0 评论 -
23种设计模式(通俗易懂,白话翻译)
创建型模式1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如...转载 2018-10-09 15:15:29 · 2330 阅读 · 2 评论 -
base64的加密解密
import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import java.io.UnsupportedEncodingException;public class Base64 { public String getBase64(String str) { byte[] b = null;...原创 2018-10-08 11:02:36 · 223 阅读 · 0 评论 -
docker快速理解
先举例说明一下什么是docker思想。为什么Docker这么有价值?在回答这个问题之前,我们先想一个相似的问题,为什么现在以阿里、京东一类的电商平台能够占据中国互联网的半壁江山?传统的商业模式存在有两大弊端: 买卖双方相对分散,加大了需求手机、营销、运送的成本; 买卖双方信息部队称,对交易产生了一直作用。电子商务的出现则是将商品从卖方到买方的流通过程变得集中化、标准化、透明化...转载 2018-09-20 17:07:03 · 216 阅读 · 0 评论 -
跨站请求伪造(CSRF)解决方案
(1)验证HTTP Referer字段根据HTTP协议,在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。比如某银行的转账是通过用户访问http://bank.com/XX?XX=xx&XX=xx页面完成,用户必须先登录bank.com,然后通过点击页面上的按钮来触发转账事件。当用户提交请求时,...翻译 2018-09-20 16:39:54 · 4381 阅读 · 0 评论 -
springboot下Filter的POST和GET过滤参数
//定义一个filter过滤器import org.apache.commons.lang.StringUtils;import org.springframework.stereotype.Component;import org.apache.commons.lang.StringEscapeUtils;import javax.servlet.*;import javax....翻译 2018-09-20 14:26:49 · 6628 阅读 · 1 评论 -
java多线程的学习
怎么进入死锁,线程死锁: 既然可以上锁,那么假如有2个线程,一个线程想先锁对象1,再锁对象2,恰好另外有一个线程先锁对象2,再锁对象1。在这个过程中,当线程1把对象1锁好以后,就想去锁对象2,但是不巧,线程2已经把对象2锁上了,也正在尝试去锁对象1。什么时候结束呢,只有线程1把2个对象都锁上并把方法执行完,并且线程2把2个对象也都锁上并且把方法执行完毕,那么就结束了,但是,...原创 2018-08-14 10:05:56 · 168 阅读 · 0 评论 -
JVM学习
周志明先生写的深入理解jvm我们都知道Java源文件,通过编译器,能够生产相应的.Class文件,也就是字节码文件(由 0和1组成的),而字节码文件又通过Java虚拟机中的解释器,编译成特定机器上的机器码 。也就是如下: ① Java源文件—->编译器—->字节码文件 ② 字节码文件—->JVM—->机器码 每一种平台的解释器是...原创 2018-08-14 10:04:13 · 288 阅读 · 0 评论 -
springBoot中Excel导出
依赖<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.10.1</version></dependency>//工具类pac原创 2018-12-01 11:13:04 · 488 阅读 · 0 评论 -
AOP的两种模式代码测试
public interface Service { void say(); void run();}public class ServiceImpl implements Service{ @Override public void say() { System.out.println("我会说话了"); } @Overr...原创 2018-05-18 11:49:33 · 462 阅读 · 0 评论 -
阿里云ESC安装docker
添加yum源。# yum install epel-release –y# yum clean all# yum list安装并运行Docker。# yum install docker-io –y# systemctl start docker检查安装结果。# docker info Docker基本用法:docker search 关键词 在Do...原创 2018-11-14 15:41:54 · 802 阅读 · 0 评论 -
docker安装mysql+tomcat
Docker安装mysqldocker search mysqldocker pull mysql:5.6docker images |grep mysqldocker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/my...原创 2018-11-14 15:48:28 · 324 阅读 · 0 评论 -
Yum安装nginx
安装:yum -y install nginx1创建目录,引用目录关系mkdir -p /etc/nginx/stream.d/;echo "include /etc/nginx/stream.d/*.conf;" >> /etc/nginx/nginx.conf2编写conf配置文件cat > /etc/nginx/stream.d/stream.conf ...原创 2019-01-21 16:51:25 · 270 阅读 · 0 评论 -
注解两种@Autowired和@Resource
1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。 2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Quali转载 2017-08-28 11:31:46 · 217 阅读 · 0 评论 -
使用idea时候,SVN没有维护怎么办
从这里添加ip,导入具体项目路径:原创 2019-06-18 10:48:08 · 168 阅读 · 0 评论 -
千万数据线程转储
public void saveByThreadPool() { //获取千万级数据 List<Data> datas = Repository.query(); if (datas == null || datas.size() == 0) { log.info("目前没有需要处理的数据"); ...原创 2019-04-25 09:32:24 · 156 阅读 · 0 评论 -
VMWare虚拟机调试 桥接和NAT 网络
查看VM本机ip: ip a本文介绍 VMWare虚拟机调试 桥接和NAT 两种网络//若本机ip: 192.168.40.2381.设置虚拟机的方式:桥接 -->nmtui-->设置ipv4的ip (网段和本机一样,192.168.40.100/24) ...原创 2019-01-14 10:19:26 · 1070 阅读 · 2 评论 -
存储过程 百万级数据编造
//mysql中 创建存储过程脚本, loop_times (入参)DROP PROCEDURE IF EXISTS proc_api ; CREATE PROCEDURE proc_api (IN loop_times INT)BEGINDECLARE var INT DEFAULT 0;WHILE var < loop_times DOSET var = var ...原创 2018-12-03 12:25:03 · 267 阅读 · 0 评论 -
接口的加密解密
接口加密1.接口参数加密(基础加密)2.接口参数加密+接口时效性验证(一般达到这个级别已经非常安全了)3.接口参数加密+时效性验证+私钥(达到这个级别安全性固若金汤)4.接口参数加密+时效性验证+私钥+Https(我把这个级别称之为金钟罩,世间最安全莫过于此)加密算法(对称加密和非对称加密):对称加密:加密数据用的密钥,跟解密数据用的密钥是一样的。非对称加密:加密数据用...原创 2018-11-14 15:58:23 · 5128 阅读 · 0 评论 -
Docker安装mongodb
docker search mongodocker pull mongo:3.2docker run -d --name mongo -p 27017:27017 -v $PWD/db:/data/db -d mongo:3.2docker ps docker run -it mongo:3.2 mongo --host 172.17.0.1原创 2018-11-14 15:54:08 · 167 阅读 · 0 评论 -
JAVA退款至微信账户
/** * * @param orderId 订单id(回写业务逻辑使用) * @param ptOrderCode 订单编号 * @param transactionNo 微信支付返回的流水单号(和订单编号二选一) * @param totalFee 退款金额 * @return */ @Tr原创 2017-12-26 14:51:03 · 500 阅读 · 0 评论 -
JAVA退款至支付宝账户
u你原创 2018-01-25 15:42:55 · 466 阅读 · 0 评论 -
微商城付款-->微信
public Map<String, String> wxPay(String openId, String body, String out_trade_no, String total_fee, String trade_type, String notify_url) { String spbill_create_ip = IPUtil.getIp(); ...原创 2017-12-06 11:01:18 · 316 阅读 · 0 评论 -
Action往js中传递Json(text,object,List)
--字符串String s = "s";HttpServletResponse response = getResponse();response.setContentType("text/plain;charset=UTF-8");response.getWriter().write(s);response.getWriter().flush();--对象原创 2017-08-11 09:30:00 · 392 阅读 · 0 评论 -
单例模式
//懒汉式单例类.在第一次调用的时候实例化自己 public class Singleton { private Singleton() {} private static Singleton single=null; //静态工厂方法 public static Singleton getInstance() { if转载 2017-09-15 16:14:02 · 240 阅读 · 0 评论 -
观察者模式
珠宝商运送一批钻石,有黄金强盗准备抢劫,珠宝商雇佣了私人保镖,警察局也派人护送,于是当运输车上路的时候,强盗保镖警察都要观察运输车一举一动//抽象的观察者public interface Watcher { public void update(); }//保安public class Security implements Watcher{ @Overr转载 2017-09-15 15:50:40 · 200 阅读 · 0 评论 -
工厂模式
定义人接口:public interface Human { public void say();}男人:public class Man implements Human{ @Override public void say() { System.out.println("man"); }}原创 2017-09-15 15:38:08 · 201 阅读 · 0 评论 -
冒泡算法原理与代码实现
原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。举例说明:要排序数组:int[] arr={6,3,8,2,9,1}; 第一趟排转载 2017-08-29 11:06:14 · 965 阅读 · 0 评论 -
设计原则
设计原则 OCP - 开闭原则 SRP - 单一职责原则 DIP - 依赖倒置原则 ISP - 接口隔离原则 LSP - 里氏替换原则 LoD - 迪米特法则创建型模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 单例模式结构型模式 适配器模式 桥接模式 组合模式原创 2017-08-28 11:33:08 · 205 阅读 · 0 评论 -
级联下拉列表
function changeCity(index){ var arr = new Array(); arr[0] = null; arr[1] = [new Option("江苏",1),new Option("浙江",2),new Option("安徽",3),new Option("山东",4)];原创 2017-08-02 16:02:21 · 328 阅读 · 0 评论