java
文章平均质量分 87
来自流星
这个作者很懒,什么都没留下…
展开
-
Nacos 配置中心介绍
Nacos 配置中心1.1 nacos 官网地址[nacos 官网](https://nacos.io/zh-cn/docs/what-is-nacos.html)1.1.1 什么是nacos **nacos **能够帮助我们快速实现 动态服务发现、服务配置、服务元数据及流量管理。1.1.1 配置中心介绍 Spring Cloud Config 为分布式系统提供了服务端和客户端支持的方案,可以动态支持配置的变更。服务端:提供配置文件的存储, git 或者 svn以接口形式提供配原创 2020-06-03 17:19:58 · 638 阅读 · 0 评论 -
实现接入微信登录,代码详细
第三方授权登录和支付1.1 整合微信登录1.1.1 文档地址 https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html1.1.2 生成微信二维码application.properties 配置信息# appIdwechat.appId=wx12411231# 密钥wechat.appSecret=feageasgeaege# 重定向地址,其实微信后台配置的原创 2020-05-22 12:01:59 · 3779 阅读 · 0 评论 -
下压(LIFO)栈,ResizingArrayStack
能够动态调整数组大小的实现:耗时跟栈大小成正比package com.vadonmo.exp.example;import java.util.Iterator;/** * 下压(LIFO)栈,能够动态调整数组大小的实现 * */public class ResizingArrayStack<Item> implements Iterable<Item&g...转载 2018-12-12 17:05:10 · 136 阅读 · 0 评论 -
简单使用JAVA反射
通过反射获得传入集合数据中每个元素字段的值private static String[] filedArray = {"bookName", "bookDesc", "createTime"}; @RequestMapping("/getData") @ResponseBody public List<Object> getData() { ...原创 2019-04-03 18:24:41 · 110 阅读 · 0 评论 -
List通配符 相关知识
// 泛型出现之前集合的定义方式 List a1 = new ArrayList(); a1.add(new Object()); a1.add(new Integer(11)); // 把a1引用赋值给a2,注意 a2泛型限制了 <Object> List<Object>...原创 2019-06-25 15:03:56 · 435 阅读 · 0 评论 -
List、String的 equals方法
List 的 equals(): public boolean equals(Object o) { if (o == this) return true; if (!(o instanceof List)) return false; ListIterator<E> e1 = ...原创 2019-06-25 17:12:24 · 684 阅读 · 0 评论 -
集合的 modCount
AbstractList 迭代器认为集合应该返回的修改值,如果和期望的值不一致,那么迭代器检测到了并发修改 protected transient int modCount = 0; List迭代时定义了期望的修改值: int expectedModCount = modCount;判定迭代是否结束条件: 迭代器的 next()方法在调用时会检测期望值与集合修...原创 2019-06-26 10:20:27 · 903 阅读 · 0 评论 -
CopyOnWriteArrayList
并发容器 CopyOnWriteArrayList该容器内部会对Iterator进行加锁操作。 COW Copy-On-Write 它是并发的一种思路,实现读写分离,如果是写操作,则复制一个新集合,在新集合内添加和删除元素待一切修改完毕后,将原集合的引用指向新的集合。 使用COW注意点: 1. 尽量设置合理的初始容量,它扩容的代价比较大...原创 2019-06-26 11:04:34 · 107 阅读 · 0 评论 -
System.nanoTime() 简单示例
class ToArraySpeedTest { private static final int COUNT = 100 * 100 * 100; public static void main(String[] args) { List<Double> list = new ArrayList<>(); for (i...原创 2019-06-26 11:20:55 · 491 阅读 · 0 评论 -
并发与并行概念
并发与并行: 目的: 都是为了尽可能快的完成所有任务 。并行任务: 医生坐诊: 某一个科室有两个专家同时出诊,这就是并行任务并发任务: 其中一个医生,时而问诊,时而查看化验单,时而处理咨询问题。并发特点: 并发程序之间有相互制约关系: 一个程序需要另一个程序的计算结果,间接制约是多个程序竞争共享资源...原创 2019-07-01 17:58:59 · 188 阅读 · 0 评论 -
树相关概念
树 (tree): 树是一种常见的数据机构,它是一个由有限节点组成的一个具有层次关系的集合,数据就存在树的 这些节点中。根节点: 最顶层只有一个节点,称之为根节点,root节点。叶子节点: 如果每个节点下方没有任何分叉的话,就是叶子节点。节点的高度: 从某个节点出发,到叶子节点为止,最长简单路径上边的条数,称之为节点的...原创 2019-06-26 16:41:34 · 404 阅读 · 0 评论 -
TreeMap的put方法
TreeMap通过put()和deleteEntry()实现红黑树的增加和删除节点操作 新增节点前提:需要调整的节点总是红色的 如果插入新节点的父节点是黑色的,无须调整 如果插入新节点的父节点是红色的,因为红黑树规定不能出现相邻的两个红色节点,所以 进入循环判断,或重新着色,或左右旋转,最终达到红黑树的约束条件退出条件如下:while (x != null &&am...翻译 2019-06-27 14:25:40 · 2630 阅读 · 0 评论 -
ssm 项目 log4j配置
因为测试人员需要将项目日志记录到文件中,以前也没有关注相关配置。今天就将最近学习的log4j配置项分享。log4j.properties分别记录了 INFO 和 ERROR级别的日志信息#定义LOG输出级别log4j.rootLogger=INFO,Console,File,D,Elog4j.logger.org.mybatis=DEBUG#定义日志输出目的地为控制台log...原创 2019-02-28 09:57:47 · 486 阅读 · 0 评论 -
数组 array[ ++b ] 与 array [ b++ ]
array [ b++ ] int[] array = new int[10]; int b = 0; array[b++] = 2; System.out.println(Arrays.toString(array)); System.out.println(b);打印结果:[2, 0, 0,...原创 2018-12-13 09:52:34 · 2475 阅读 · 0 评论 -
ResizingArrayStack 动态调整数组大小
package com.arithmetic;import java.util.Iterator;import java.util.NoSuchElementException;// 能够动态调整数组大小的实现public class ResizingArrayStack<Item> implements Iteratable<Item> { pri...转载 2018-12-13 10:02:10 · 302 阅读 · 0 评论 -
Java 单链表
package com.arithmetic;/** * 单链表 */public class SingleLinked { Node first; int N; SingleLinked() { N = 0; } // 头插法 void addHeadNode(Node n) { n.next = ...转载 2018-12-13 14:11:48 · 119 阅读 · 0 评论 -
Stack 链表实现
package com.Util;import java.util.Iterator;import java.util.NoSuchElementException;public class Stack<Item> implements Iterable<Item> { private Node<Item> first; // to...转载 2018-12-13 14:49:36 · 195 阅读 · 0 评论 -
Queue 链表实现
package com.arithmetic;import java.util.Iterator;import java.util.NoSuchElementException;/** * 队列 * 是一种基于先进先出策略的集合类型,按照任务产生的顺序完成他们的策略 * * foreach 语句迭代访问队列元素时的顺序。 就是它们加入队列的顺序 * * 队列链表实现 ...转载 2018-12-13 16:45:39 · 390 阅读 · 0 评论 -
Bag 背包 链表实现
package com.arithmetic;import java.util.Iterator;import java.util.NoSuchElementException;/** * 背包 * 是一种不支持删除元素的集合数据类型。 * 它的目的是帮助我们收集元素和迭代所有元素 */public class Bag<Item> implements Iter...转载 2018-12-13 16:59:50 · 398 阅读 · 0 评论 -
Stack 链表
package com.arithmetic;import com.Util.StdIn;import com.Util.StdOut;import java.util.Iterator;import java.util.NoSuchElementException;/** * 栈 * 链表实现 */public class Stack<Item> imple...转载 2018-12-14 15:32:32 · 172 阅读 · 0 评论 -
选择排序
package com.arithmetic.sort;import com.Util.StdIn;import com.Util.StdOut;/** * 选择排序 * * 首先找到 数组中最小的元素,将其与数组第一个元素交换位置,再次 在剩下的元素中找到最小与第二个元素 * 数组交换位置。如此反复 选择排序的内循环只是比较当前元素与目前已知元素的最小值,每次交换都能...转载 2018-12-17 10:47:57 · 104 阅读 · 1 评论 -
插入排序
package com.arithmetic.sort;import com.Util.StdOut;/** * 整理牌的方法是一张一张的来,将每一张插入到其他已经有序的牌的适当位置中。 * * 在实现中我们需要给插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位. * * 与选择排序一样。 当前索引左边的都是有序的,但它们的最终位置还不确定,为了给更小的元素腾...转载 2018-12-18 09:01:21 · 148 阅读 · 0 评论 -
Parameter 'name' not found. Available parameters are [0, 1, param1, param2]关于mybatis多个参数问题
mapper.xml在传递多个参数时,可以使用map传递,同样也可以使用注解去传递值。int updateUserName(@Param(value = "username") String name, @Param(value ="id") int id);本人在使用注解后发生标题错误,重启多次都没解决。最后原因发现是: @Param注解导入出错正确的注解为: impo...原创 2018-12-25 16:03:39 · 1529 阅读 · 0 评论 -
RabbitMQ备份交换器
备份交换器 Alternate-Exchange, 简称 AE 生产者在发送消息时如果不设置mandatory参数,那么消息在未被路由的情况下将会丢失。如果设置了mandatory参数,则需要添加ReturnListener的编程逻辑,生产者的代码变的复杂。 如果不想复杂生产者代码,又不想消息丢失,可以使用备份交换器将未被路由的消息存储在RabbitMQ中...原创 2019-07-08 15:54:14 · 229 阅读 · 0 评论 -
RabbitMQ死信队列
死信队列 DLX, 全称为 Dead-Letter-Exchange,也称之为死信交换器,也有人称为死信邮箱。 当消息在一个队列中变成死信之后,它能被重新的发送到另外一个交换器中,这个交换器就是DLX, 绑定DLX的队列就是死信队列。 DLX也是一个正常的交换器,和其他一般的交换器没有区别,它能在任何队列上被指定。当这个...原创 2019-07-10 09:36:21 · 155 阅读 · 0 评论 -
Socket TCP简单Demo
package com.example.demo.learn.socket.tcp;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class TcpServer { public static v...原创 2019-08-14 10:47:08 · 326 阅读 · 0 评论 -
Servlet 上下文
package com.example.demo.learn.servlet.context;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Http...原创 2019-08-14 15:56:08 · 99 阅读 · 0 评论 -
Servlet 转发和重定向
获得数据Servlet:package com.example.demo.learn.servlet.forward;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.s...原创 2019-08-14 15:58:07 · 185 阅读 · 0 评论 -
Cookie
添加Cookie示例:package com.example.demo.learn.servlet.cookie;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet....原创 2019-08-14 17:07:44 · 107 阅读 · 0 评论 -
自定义注解简单使用
定义表名注解package com.example.demo.learn.orm;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;/** * 表的别名 * 项目中使用注解,肯定会使用反射,反射应用场景, jdbc spring ioc 常用的框架, 注解实现 ...原创 2019-08-10 22:25:02 · 172 阅读 · 0 评论 -
Cookie 记录最后一次登录时间
package com.example.demo.learn.servlet.cookie;import org.apache.commons.lang3.time.DateFormatUtils;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax....原创 2019-08-15 10:33:33 · 400 阅读 · 0 评论 -
单例设计模式
单例模式 是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。构建方式 懒汉方式。指全局的单例实例在第一次被使用时构建。 饿汉方式。指全局的单例实例在类装载时构建。 懒汉式和饿汉式的区别是什么?安全因素: 懒汉式因为获得...原创 2019-08-11 11:28:32 · 137 阅读 · 0 评论 -
自定义缓存实现Session
缓存接口 :package com.example.demo.learn.servlet.session.cache;/** * 缓存接口 */public interface CacheManageService { void put(String key, Object value, Long timeout); void put(String key, O...原创 2019-08-15 16:16:12 · 410 阅读 · 0 评论 -
SessionToken防止表单重复提交
后端解决表单重复提交: 在服务器端生成一个唯一的随机标识号,专业术语称为Token(令牌),同时在当前用户的Session域中保存这个Token。然后将Token发送到客户端的Form表单中,在Form表单中使用隐藏域来存储这个Token,表单提交的时候连同这个Token一起提交到服务器端,然后在服务器端判断客户端提交上来的Token与服务器端生成的Token是否一致,如果不一致...原创 2019-08-15 22:43:01 · 381 阅读 · 0 评论 -
Socket UDP 简单Demo
UDP服务端:package com.example.demo.learn.socket.udp;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;/** * Socket服务端使用UDP协议,协议不可靠 */public class UdpSer...原创 2019-08-14 10:07:53 · 208 阅读 · 0 评论 -
前端项目构建
Vue项目使用webpack来构建。首先确保本地已经安装了NodeJS,然后在CMD中执行以下的命令,可以创建并启动一个boot项目:npm install -g vue-clivue init webpack boot启动:cd bootnpm run dev使用IDEA打开: 找到index.js 更改port端口选中NPM:...原创 2019-07-17 16:43:11 · 408 阅读 · 0 评论 -
SpringBoot整合mail邮件发送
pom.xml加入以下内容:<!-- mail --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency>...原创 2019-07-16 15:52:31 · 1139 阅读 · 1 评论 -
TreeMap新增节点演化过程
按照 :插入 55 56 57 58 83 ,删除57 ,插入59的顺序建树55直接插入、染黑就行,56染红,57插入时,出现连续红节点,由于默认null节点是黑色,于是发生左旋插入58时,又出现连续红色,此时父叔节点都是红色,则仅触发重新着色,不进行旋转,56从红变黑是因为根节点每次调整后都会染黑插入83时再次需要调整,此时情况和57插入时类似,发生了左旋57...转载 2019-06-28 09:49:49 · 187 阅读 · 0 评论 -
JDK7 HashMap(一)
哈希类集合的三个基本存储概念:table,存储所有节点数据的数组 slot 哈希槽,即 table[i] 的位置 bucket 哈希桶,即 table[i] 上所有元素形成的表或者树的集合 存储所有节点的table数组 transient Node<K,V>[] table; 描述一个hash节点信息: static clas...原创 2019-06-28 17:33:19 · 205 阅读 · 0 评论 -
RabbitMQ生产者消费者DEMO
生产者客户端代码package com.song.songvue.config.message;import com.rabbitmq.client.Channel;import com.rabbitmq.client.Connection;import com.rabbitmq.client.ConnectionFactory;import com.rabbitmq.clien...原创 2019-07-04 16:14:53 · 420 阅读 · 0 评论