自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 Spring Security + JWT 前后端分离 调用外部登录接口 登录进阶

本文章适合对Spring Security有一定了解的同学阅读。1. 登陆流程项目中需要后端进行登陆–>生成token–>鉴权等一系列操作,使用Spring Security完成。和网上大部分资料不同的是,这里的用户名和密码并不是存在数据库中,而是调用其他服务以及封装好的RPC接口来实现的。...

2019-12-18 15:41:34 5468

原创 数据库存入复选框数据

需要将表单中复选框的值存入数据库中,一般来说有以下几种方法。例:喜欢的运动 篮球 足球 羽毛球使用字符串存储篮球为1,足球为2,羽毛球为3喜欢篮球和足球,则在数据库中存1,2优点:简单易懂缺点:不利于高级的数据统计,比如统计喜欢篮球的人有哪些使用位运算篮球=2 足球=4 羽毛球=8数据库中存选中的选项之和,选中篮球、足球,则存2+4=6取数据时,将存放的结果和...

2019-07-16 14:17:41 4893 1

原创 Spring AOP注解失效问题

需求需要自定义注解,但是在实际应用中发现注解并没有生效,查询之后发现原因如下:同一个类X中有方法A和方法B,其中方法B上加了注解,方法A又调用了方法B,此时注解无效。如果是另一个类Y中的方法调用类X中的方法B,此时注解生效。因为在类Y中是通过类X的对象调用方法B的,因为此时Spring会判断方法B上有注解,所以会动态生成类X的代理对象,并使用这个代理对象来调用方法B。但是在同一个类中的方法A...

2019-07-16 11:49:51 1386

原创 【剑指Offer】用两个栈实现队列&&用两个队列实现栈

用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:      栈是先进后出的数据结构,而队列是先进先出。为了实现队列,那么我们必须将数据先压入其中一个栈(栈A)中,数据压入完毕之后,将数据都出栈,并压入另一个栈(栈B)中,压入完毕之后栈B中元素出栈,就达到了先进先出的效果。      那么我们在push时所需要做的...

2018-08-07 11:17:07 362 1

原创 【剑指Offer】重建二叉树

重建二叉树题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路前序遍历为“根-左-右”,中序遍历为“左-根-右”,就是根据前序和中序数组还原二叉树。那么我们手动还原的流程是:从前序遍历中找...

2018-07-26 22:21:36 151

原创 【剑指Offer】从尾到头打印链表(链表的逆序输出)

目录 题目描述解法一:使用栈解法二:递归解法三:将原链表逆转题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解法一:使用栈单向链表的逆序输出,我们可以很容易的想到使用一个栈作为辅助,栈的先进后出的特性能帮到我们大忙。(所以基础的数据结构是真的很重要)/*** public class ListNode {* ...

2018-07-25 20:20:48 406

原创 【剑指Offer】替换空格

替换空格题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解法一:使用同一个字符数组,不需要额外的数组思路这个题目和一般的替换空格最大的不同就是它是要用%20这三个字符来代替空格,所以整个字符串长度会随着空格个数增加,原字符串每有一个空格,结果字符串长度就需...

2018-07-24 20:38:00 159

原创 Java中几种常量池比较

目录class常量池什么是字面量和符号引用字符串常量池字符串常量池的设计思想字符串常量池的位置字符串常量池内部结构字符串常量池里放的是什么?运行时常量池总结Java中主要有三种常量池,分别是class常量池、字符串常量池和运行时常量池。我们对这三个常量池进行对比。class常量池我们写的每一个Java类被编译之后都会生成一个对应的Class文件。Cl...

2018-07-24 19:55:32 2295 2

转载 双重检查锁定与延迟初始化

原文地址:http://www.infoq.com/cn/articles/double-checked-locking-with-delay-initialization 在java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时程序员可能会采用延迟初始化。但要正确实现线程安全的延迟初始化需要一些技巧,否则很容易出现问题。比如,下面是非线程...

2018-07-16 21:16:43 309

转载 Java中的volatile关键字

Java并发编程:volatile关键字解析   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模...

2018-07-16 21:13:27 147

原创 【剑指Offer】二维数组中的查找

二维数组中的查找题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:这是一个很特殊的二维数组,如下图所示,左上角a[0][0]的元素最小,右下角a[row][col]的元素最大。那么我们依据这个特性,可以想到一种很简单的算法。从左下角a[0][col]这个元素开始遍历,...

2018-07-09 15:07:28 177

原创 创建线程的三种方式(包括例子和源码解释)

一般来说创建线程的方法有三种,分别是:1.继承Thread类来创建一个线程第一步:定义一个类继承Thread类,并实现run()方法,run()方法中的内容即为线程需要完成的功能class MyThread extends Thread{ String name; public MyThread(String name) { this.name = name; System.out.p...

2018-07-08 20:55:09 1960

原创 【线程池】Executors中的newSingleThreadExecutor和newFixedThreadPool(1)的区别

在上一篇【线程池】深入理解Executors类时,提到了newSingleThreadExecutor和newFixedThreadPool(1)的区别,查阅了大量资料,自己也做了一些实验,但是还是有很多不清楚的地方,这篇文章主要是用作讨论,如果有大佬有好的回答,拜托请多多指教。大部分博客中都提到两点:1、Single方法可以保证线程执行顺序,采用FIFO,先提交的任务先执行,而Fixed(1)不...

2018-07-07 15:47:38 10858 4

原创 【线程池】深入理解Executors类

     在前面一篇文章线程池——深入理解ThreadPoolExecutor中,讲解了线程池的一种实现方法ThreadPoolExecutor类。而在Java中,Executors类也是一种常用的创建线程池的方式。    Executors类可以用于方便的创建线程池。它为Executor,ExecutorService,ScheduledExecutorService,ThreadFactory...

2018-07-04 10:57:48 2569

转载 【线程池】深入理解ThreadPoolExecutor类

Java并发编程:线程池的使用  在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?  在Java中可以...

2018-07-02 16:23:34 500

原创 bootstrap模态框——使用一个模态框完成两个功能

在用户列表中希望能用同一个模态框完成添加用户和修改用户两个功能。 添加用户 修改用户这两个功能在提交表单之后都会返回原页面,所以使用ajax进行处理 主要的难点在于: 1、在点击不同按钮时调用不同函数。 在点击修改页面时,需要将当前用户的信息传入模态框中,并设置用户名字段为不可修改,点击模态框中提交时调用后台修改的方法;在点击添加页面时,需要清空之前模态框中数据,点击...

2018-06-29 17:07:58 8724 1

原创 bootstrap datetimepicker和jquery的validate一起使用时失效问题

写项目时表单中同时用到了bootstrap的datetimepicker插件和jquery的验证表单插件,但是发现这两个在同时使用时datetimepicker插件会失效,浏览器控制台显示$().datetimepicker is not a function,引入的cdn都没错,最后发现是要把validate的cdn放在datetimepicker的前面,两个插件才能都生效。而且datetime...

2018-06-26 15:59:45 1310

原创 前后台$.post交互并返回JSON对象(包括JSONObject没有fromObject解决方法)

后台传入参数,前端接收进行处理并执行相应的函数前端代码 //删除用户 function deleteUser(id) { alert(id); if(!id){ alert('id不存在'); return false; } $.ajax({ ...

2018-06-10 20:32:49 2805 1

原创 thymeleaf使用onclick传递参数

Springboot中使用thymeleaf,在用户列表中希望点击删除按钮就删除当前用户,需要传递当前用户的id。<table class="table table-bordered table-hover"> <thead> <tr> <th>id</th>...

2018-06-10 15:28:19 34894 18

原创 利用位运算的巧妙算法(剑指offer)

写剑指offer遇见两道题,题目都非常神经,求1+2+3+…+n但是啥都不能用,不用加减乘除做加法。最开始没什么思路,后面看了讨论,都是利用位运算来进行变换。求1+2+3+..+n题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。分析和代码来自题后讨论链接:https://www...

2018-05-29 14:56:31 1090

原创 约瑟夫环(数组模拟和数学推论的两种方法)

题目描述:原题为《剑指offer》圆圈中最后一个数,这里是简化描述 约瑟夫问题是一个非常著名的趣题,即由n个人坐成一圈,按顺时针由0开始给他们编号。然后由第一个人开始报数,数到m-1的人出局。现在需要求的是最后一个出局的人的编号。 给定两个int n和m,代表游戏的人数。请返回最后一个出局的人的编号。保证n和m小于等于1000。 这篇文章分析的情况是编号为0~n-1,报...

2018-05-28 20:31:06 357

原创 Spring创建对象的几种方式

Spring的核心思想是IOC,即所有对象的创建都是通过Spring,而不需要自己手动生成。Spring创建对象有以下几种方式:无参构造器有参构造器工厂模式 静态方法非静态方法构造器创建对象applicationContext.xml<beans xmlns="http://www.springframework.org/schema/beans" x...

2018-03-26 11:04:59 6726

转载 HashCode和HashMap

来自https://www.cnblogs.com/szlbm/p/5504623.html前言Object提供给我们了一个Native的方法“public native int hashCode();”,本文讲讲Hash是什么以及HashCode的作用Hash先用一张图看下什么是Hash Hash是散列的意思,就是把任意长度的输入,通过散列算法变换成固定长度的输出,...

2018-03-19 16:04:14 2220

原创 LeetCode 03 Median of Two Sorted Arrays

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]...

2018-03-17 16:33:01 166

原创 LeetCode 03 Longest Substring Without Repeating Characters(最长不重复子序列)

Given a string, find the length of the longest substring without repeating characters.Examples:Given “abcabcbb”, the answer is “abc”, which the length is 3.Given “bbbbb”, the answer is “b”, with...

2018-03-16 15:59:10 249

原创 LeetCode 02 Add Two Numbers

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return i...

2018-03-16 12:54:40 155

原创 事务和事务特性及脏读、不可重复读、幻读

事务:逻辑上的一组操作,这组操作要么全部成功,要么全部失败事务特性: 1. 原子性:事务都是不可分割的单位,事务中的操作要么全部发生,要不都不发生 2. 隔离性:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要隔离。 3. 一致性:事务执行前后数据完整性必须保持一致 4. 持久性:一个事务一旦被提交,它对数据库的改变是

2018-03-15 17:33:46 281

转载 事务的传播行为

来自事务的传播行为我们都知道事务的概念,那么事务的传播特性是什么呢? 在我们用SSH开发项目的时候,我们一般都是将事务设置在Service层 那么当我们调用Service层的一个方法的时候它能够保证我们的这个方法中执行的所有的对数据库的更新操作保持在一个事务中,在事务层里面调用的这些方法要么全部成功,要么全部失败。那么事务的传播特性也是从这里说起的。 如果你在你的Service层的这个方法中,除了

2018-03-15 17:29:50 202

原创 LeetCode01 TwoSum

题目:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the ...

2018-03-12 10:53:09 143

原创 ssm分页方法

最近写SSM的项目,需要用到分页,但是使用PageHelper插件的分页老是出现问题,于是使用了老师发的demo里面的分页方法。Page.javapackage com.zhc.util;public class Page { int start=0; int count = 5; int last = 0; public int getStart() { retur

2018-01-11 20:16:28 424

原创 jsp中<fmt>格式化数字标签

最近写分页代码时,需要在jsp中显示“共3页 第3页”的内容,但是参数进行除法运算后自动保留一位小数,显示结果为“共3.0页 第3.0页”。后来找到了标签,代码如下 共 页 第 页一定要添加第一行taglib的引用!type为格式化的类型,可取值有number、currency、percent。value即显示的值。maxFranctionDigits为保留的小数位数。

2018-01-11 20:02:36 1075

转载 JDBC为什么要使用PreparedStatement而不是Statement

本文由 ImportNew - 刘志军 翻译自 Javarevisited。欢迎加入翻译小组。转载请见文末要求PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement

2017-12-16 13:36:26 195

转载 Java初始化块

原文:初始化块初始化块是什么?在Java中就是在构造器之前执行的一段代码,它的用处是,如果一段初始化处理代码对所有对象完全相同,且无须接受任何参数,就可以把这段提取到初始化块中.在C#中,没有初始化块[java] view plain copypublic class  Person  {      //定义一个初始化块  

2017-12-07 15:54:48 174

转载 Java方法的可变参数个数

原文:Java方法的可变参数类型许多Java新人在看到下面的这段代码的时候,都会问一个问题:dealArray方法里那三个小点点是什么啊?[java] view plaincopypublic class TestVarArgus {      public static void dealArray(int...

2017-12-04 19:04:28 199

转载 Python大小写转换

来自:http://blog.csdn.net/xxzhangx/article/details/52695089大写把所有字符中的小写字母转换成大写字母>>> str = "hELLO world!">>> print (str.upper())HELLO WORLD!123小写把所有字符中的大写字母转换成小写字母>>> str = "

2017-10-11 10:40:25 31773 1

转载 c语言strchr函数

转自:http://www.kuqin.com/clib/string/strchr.htmlstrchr 原型:extern char *strchr(char *s,char c); 用法:#include 功能:查找字符串s中首次出现字符c的位置 说明

2017-09-26 19:40:57 548

原创 面向对象——继承

一、什么是继承继承为面向对象三大特性之一。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。主要目的是提高代码的重用性、维护性和扩展性。二、为什么要使用继承很多不同的对象会有相同的属性。比如学生的属性有姓名、性别、学号、年龄、成绩,而工人的属性有姓名、性别、工号、年龄、工龄等。那么我们就需要这样定义: c

2017-09-24 15:14:39 260

原创 面向对象——封装性

1、封装的作用面向对象的封装性的主要作用是解决程序的可扩展性。可以在不影响其他部分的情况下修改或者被封装的部分达到对整个程序的扩展。2、怎么样去封装一般使用类进行封装,在类中将属性用private修饰,

2017-09-22 21:48:27 615

转载 面向对象

转自http://www.cnblogs.com/seesea125/archive/2012/04/03/2431176.html作者:赵学智一、 面向对象,这个对象到底是什么?     这个对象不是C#中的实例,C#中我们把一个类的实例也叫做对象,这种对象严格的说应该是面向对象的编程实现(OOP)中的对象,面向对象编程,也不是面向类的实例编程。对象的定义是人们要

2017-09-22 20:17:32 202

原创 Python for循环

Python有for循环和while循环两种这里主要整理for循环的用法。循环遍历出list和tuple中的数据names = ['Michael', 'Bob', 'Tracy']for name in names: print(name)循环遍历数字for i in range(1,100): print(i)会打印出1到99的数字

2017-09-21 17:22:41 319

空空如也

空空如也

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

TA关注的人

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