自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

转载 vue实现拖拽交换位置

原文链接这里仅作备份需要先引入vuedraggable组件<template> <div class="root"> <transition-group tag="div" class="container"> <div class="item" :class="'item' + i" v-for="(item, i) in items" :key="item.key"

2022-04-20 15:27:38 1586 1

原创 利用md5加密实现API接口的加签验签

1、背景我现在有几个公开的接口需要开放给第三方厂商,第三方厂商通过调用我的接口获取数据,由于这些接口放开了登录的拦截,而且是直接暴露在公网上的,因此想给这几个接口加上权限的验证,即加签验签。2、技术选型通过某歌和某度查找资料,以及向一些博主、论坛、微信群、QQ群请教…发现接口的加签验签最安全的方法是使用非对称加密的方式,即RSA的公私钥,但这种验签方式需要第三方提供他们的公钥给我方,第三方利用他们的私钥生成签名sign,然后我方使用第三方的公钥验证签名sign,识别调用接口者的身份。这个场景好像有点不

2021-03-20 17:18:27 4548 10

原创 npm ERR! Failed at the node-sass@4.10.0 postinstall script.

vue 安装依赖报错:npm ERR! Failed at the node-sass@4.10.0 postinstall script.解决:单独设置node-sass的下载地址set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sassnpm install node-sass

2021-03-06 09:41:04 1363

转载 Vue实现文字的复制功能

转载: // 复制发布地址 copyPublishAddress() { // 直接构建input const _input = document.createElement("input"); // 设置内容 _input.value = this.publishAddress; // 添加临时实例 document.body.appendChild(_input); // 选

2021-02-27 11:16:00 561

原创 redis根据key取值乱码

redis根据key取值乱码使用 redis-cli --raw 命令取值就不会乱码

2020-05-15 21:52:59 656

原创 Vue实现回车键登录

来源: http://www.imooc.com/article/301401?block_id=tuijian_wzVue实现回车键绑定方法首先在mounted中绑定监听事件mounted(){ //绑定事件 window.addEventListener('keydown',this.keyDown);},再写一个监听事件的方法methods: { ...

2020-04-13 00:19:37 425

原创 axios发送请求时携带cookie

遇到的问题:    vue通过axios访问spring boot+spring security的后台接口,登录成功后还是无法访问其它的接口,返回http 302解决方法:    让axios发送请求时携带cookieaxios.defaults.withCredentials=true...

2020-04-08 23:25:28 2048

原创 git上传本地项目

git上传本地项目到码云1.在码云创建项目2.直接通过码云的文件上传功能,把本地项目拖进码云仓库【文件太多则无法上传,需要使用git命令,见之后步骤】3. 使用git命令上传4. 先在本地计算机上创建一个新的文件夹a5. 把第一步中码云上新建的项目,克隆一份到文件夹a中,切换到文件夹a,右键选择git bash here,git clone https://xxxxx6. 把本地计算...

2019-04-17 18:48:10 151

转载 sublime激活码

----- BEGIN LICENSE -----sgbteamSingle User LicenseEA7E-11532598891CBB9 F1513E4F 1A3405C1 A865D53F115F202E 7B91AB2D 0D2A40ED 352B269B76E84F0B CD69BFC7 59F2DFEF E267328F215652A3 E88F9D8F 4C38E3...

2019-04-08 00:10:32 4837

原创 增大IDEA的可使用内存

修改完成后显示如下:开启内存使用情况:怎么加大IDEA的内存使用呢:在加载的文件中修改即可:

2019-04-06 18:45:05 2631 1

转载 Java中的String,StringBuilder,StringBuffer三者的区别

转自:https://www.cnblogs.com/su-feng/p/6659064.html  最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。  这三...

2019-03-26 22:57:24 93

转载 多线程的相关概念及实现方式

多线程的引入:# 1、什么是线程: - 线程是程序执行的一条路径,一个进程中可以包含多条线程 - 多线程并发执行可以提高程序的效率,可以同时完成多项工作 # 2、多线程的应用场景: - 迅雷开启多条线程一起下载 - QQ同时和多个人一起视频 - 服务器同时处理多个客户端的请求多线程并行和并发的区别: - 1、并行就是两个任务同时运行,就是甲任务进行的同时,乙任...

2019-03-26 20:24:13 135

原创 模拟斗地主游戏的发牌,结果无序

/** * 需求:模拟斗地主游戏的发牌,结果无序 * * 分析:1、创建一个集合对象,将扑克牌存储进去 * 2、洗牌 * 3、发牌 * 4、看牌 */public class Demo_DouDiZhu { public static void main(String args[]){ /** * 1、创建一...

2019-03-25 00:07:31 138

转载 HashMap嵌套HashMap之遍历

/** * 需求:黑马48期学生基础班定义成一个双列集合,键是学生对象,值是归属地 * 黑马49期学生基础班定义成一个双列集合,键是学生对象,值是归属地 * * 无论是哪一期都是班级对象,为了便于统一管理,将这些班级对象添加到统一的集合中去 */public class Demo_HashMapHashMap { public static void mai...

2019-03-24 21:51:03 848

转载 统计一串字符串中,每个字符出现的次数

需求:统计一串字符串中,每个字符出现的次数分析: 1、定义一个需要被统计字符的字符串 2、将字符串转为为字符数组 3、定义双列集合,存储字符串中字符以及字符出现的次数 4、遍历字符数组获取每一个字符,并将字符存储在双列集合中(当作key) 5、存储过程中要做判断,如果集合中不包含这个键,就添加一个该字符的键、值为1;如果集合中包含这个键,就将值加1存...

2019-03-23 23:17:29 1458

转载 数据插入mysql数据库后就是??

原 SSH框架项目中文乱码问题,数据插入mysql数据库后,就是?? 2018年01月08日 12:56:59 qq_39941766 阅读数:794 ...

2019-03-22 19:20:40 602

转载 集合

ArrayList:底层数据结构是数组,查询修改快,增删慢,线程不安全,效率高Vector:底层数据结构是数组,查询修改快,增删慢,线程安全,效率低LinkedList:底层数据结构是链表,查询慢修改慢,增删快,线程不安全,效率高Vector相对ArrayList查询修改慢(线程安全的)Vector相对LinkedList增删慢(数组结构)LIst有...

2019-03-22 15:12:08 77

转载 Android 6.0动态读写SD卡权限

问题:java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/video/media from pid=5937, uid=10101 requires android.permission.RE...

2019-03-15 21:57:01 1154

SpringBoot+Vue.zip

SpringBoot+Vue的增删改查Demo,前后端分离,前后端的代码都有,数据库操作用的jpa。

2020-04-14

SSH增删改查

以前学习的SSH框架,项目实现了基本的增删改查等操作,很简单

2019-03-23

FastStone Capture

FastStone Capture 很OK 的一款工具,可以使用,免安装 、、、、、、、、、、、、、、、、、

2018-08-04

Tom Cat (汤姆猫)

Java小游戏Tom Cat /////////////////////// ////////////////////// /////////////////////

2018-08-04

贪吃蛇_JAVA小游戏

可以运行! (以下代码只是其中的一个类) package chy.snake.entities; import java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.util.HashSet; import java.util.LinkedList; import java.util.Set; import chy.snake.listener.SnakeListener; import chy.snake.util.Global; public class Snake { public static final int up = 1; public static final int down = -1; public static final int left = -2; public static final int right = 2; private int oldDirection,newDirection; //newDirection:一次时间 间隔内输入的最后方向 private Point oldTail; private boolean life; //life 为 true或者false,初始为true, 用于118行 private LinkedList<Point> body = new LinkedList<Point> (); //需要经常访问蛇的第一个和最后一个节点,使用链表LinkedList存放蛇的身体节点,因为它有getFirst(),getLast(),removeLast(),方法 private Set<SnakeListener> listeners = new HashSet<SnakeListener>(); public Snake(){ init(); } public void init(){ //初始化 int x = Global.WIDTH/2; int y = Global.HEIGHT/2; for(int i=0;i<3;i++){ //初始长度3 body.addLast(new Point(x-i,y)); //是addLast } oldDirection = newDirection = right; //初始方向 右 life = true; } public void die(){ life = false; } public void move(){ System.out.println("Snake's move"); if (!(oldDirection + newDirection == 0)){ oldDirection = newDirection; } //1.去尾 oldTail = body.removeLast(); int x = body.getFirst().x; int y = body.getFirst().y; //蛇头的x,y坐标 switch(oldDirection){ case up: y--; break; case down: y++; break; case left: x--; break; case right: x++; break; } Point newHead = new Point(x,y); //2.加头 body.addFirst(newHead); } public void changeDirection(int direction){ /*无效方向:在蛇的这一次移动之后和下一次移动之前的 这个时间间隔内输入了多个方向,只有最后一个方向 是 有效方向,其余的都为无效方向*/ System.out.println("Snake's changeDirection"); newDirection = direction; //将一个时间间隔内按得最后方向,赋给 newDirection } public void eatFood(){ System.out.println("Snake's eatFood"); body.addLast(oldTail); //后面的节点不去掉 } public boolean isEatFood(){ System.out.println("Snake's isEatFood"); return false; } public boolean isEatBody(Snake snake){ //比较蛇是否吃到身体 System.out.println("snake's isEatBody"); for(int i= 1;i&lt;body.size();i++){ //i 从蛇头结点的下一个节点开始,排除蛇头结点 if(body.get(i).equals(this.getHead())){ //如果i 的节点 和 头结点 相同 return true; } } return false; } public void drawMe(Graphics g){ System.out.println("Snake's drawMe"); g.setColor(Color.GREEN); //设置蛇的颜色 for(Point p : body){ g.fill3DRect(p.x * Global.CELL_SIZE, p.y * Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true); } } public Point getHead(){ //得到蛇头节点,判断吃食物 return body.getFirst(); } private class SnakeDriver implements Runnable{ //线程,不停的调用move方法 @Override public void run() { // TODO 自动生成的方法存根 while(life){ // 42和46行,life为true 或者false move(); for(SnakeListener l : listeners){ l.snakeMoved(Snake.this); //循环,依次调用SnakeMoved方法 } try { Thread.sleep(300); } catch (InterruptedException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } } public void start(){ new Thread(new SnakeDriver()).start(); //启动线程的方法 } public void addSnakeListener(SnakeListener l){ if(l != null){ this.listeners.add(l); } } }

2018-03-05

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除