自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

heidou_2016的博客

永无止境

  • 博客(99)
  • 资源 (7)
  • 收藏
  • 关注

原创 部分浏览器 set-cookie 不成功踩坑记录

在WEB应用中,对于敏感业务,如:登录或者付款,需要使用HTTPS来保证内容的传输安全,而在用户成功获得授权之后,获得的客户端身份cookie如果没有设置为Secure,那么很有可能会被非HTTPS页面拿到,从而造成重要的身份泄露。公司正在做一个sso的单点登录的项目,做完之后,在测试阶段,不同的终端的兼容测试时候,好几个不同的浏览器出现了不同的问题,有登录之后自动退出,有登陆不成功等问题。而最终引发问题的原因是 set-cookie 中的 samesite 的兼容性引起的。

2022-11-05 16:36:46 5946

原创 mysql 如何执行区分大小写的字符串比较

在windows平台下,mysql是不区分大小写的,因此字符串比较函数也是不区分大小写的,如果想执行区分大小写的比较,可以在字符串前面添加 BINARY 关键字,例如默认情况下'a'='A' 返回结果是1,如果使用BINARY关键字,BINARY 'a'='A'返回结果为0,在区分大小写的情况下,'a'与‘A’是不相同的。代码验证如下:SELECT 'a' = 'A';SELECT * from test3 WHERE 'a' = 'A';返回结果分别为 1 及 test3 表中数据...

2020-06-28 11:16:47 1016

原创 mysql date类型数据插入

mysql允许"不严格"的语法:任何标点符号都可以作为日期部分之间的间隔符,例如"20/5/3","20@5@3","20@5/3","20.5.3"是等价的,这些值都可以正确的插入到数据库中。

2020-06-23 14:08:35 1379

原创 mysql 显示宽度

我们再MySQL中建表时常常要指定一个长度,但是这个长度并不是该数据类型占用的存储空间,而是所谓的显示宽度。下面我们来建个表测试下:CREATE TABLE `test1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `age` tinyint(2) DEFAULT NULL, `name` varchar(3) COLLATE utf8mb4_bin DEFAULT NULL, `order` bigint(3) unsigned zerofill

2020-06-23 11:52:12 1202

原创 高级排序之归并排序

1.什么是归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。2.归并排序图解3.归并排序代码实现 public static void mergeSort(int[] nums) { int len

2020-06-08 12:00:17 134

原创 高级排序之基数排序

1.什么是基数排序基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。2.基数排序图解3.基数排序代码实现 public static vo

2020-06-08 11:43:35 220

原创 高级排序之快速排序

1.什么是快速排序快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2.快速排序图解3.快速排序代码 public static void quickSort(int[] nums) {

2020-06-08 11:00:18 162

原创 高级排序之希尔排序

1.什么是希尔排序希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。2.希尔排序图解3.代码实现public sta..

2020-06-05 18:08:02 318

原创 简单排序之插入排序

1.什么是插入排序插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。2.插入排序图解3.插入排序代码实现 public static void insertSort(int[] nums) { ..

2020-06-05 13:57:02 236

原创 简单排序之选择排序

1.什么是选择排序选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。2.选择排序图解3.选择排序代码实现 public static void selectSort(int[] nums) { int len

2020-06-05 12:03:40 236

原创 简单算法之冒泡排序

1.什么是冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。2.冒泡排序图3.冒泡排序代码实现p

2020-06-04 10:35:31 202

原创 redis 主从 哨兵 集群 及原理

1.主从哨兵1.主从哨兵架构图:此图为最常见的一主两从结构,一个master主机,两个slave主机。每台主机上都运行着两个进程:redis-server 服务,处理redis正常的数据操作与响应。master服务可读写,slave服务为只读,当master服务接受到数据修改或写入的命令时,会异步将命令发送到slave上,以此保持master与slave上数据的一致性。 redis-sentinel 哨兵服务,此服务会监控master和slave服务是否正常运行,当超过半数的哨兵认定mas

2020-06-03 18:59:39 440

原创 redis 持久化策略 RDB AOF

大家都知道 redis是内存数据库,一旦断电就玩完,很多数据我们如果不去进行持久化的话,每次重启redis后,都需要对数据进行初始化,这样无疑给我们带来了不少的麻烦,并且你也并不知道断电时redis内的状况,为了解决这个令人头疼的问题,我们来了解下redis的两种持久化策略:RDB和AOF。1.RDB1)什么是RDBRDB其实就是把数据以快照的形式保存在磁盘上。什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是

2020-06-03 17:15:19 172

原创 redis 过期键删除及内存释放策略

在Redis中,内存的大小是有限的,所以为了防止内存饱和,需要实现某种键淘汰策略。主要有两种方法,一种是对过期键进行删除的策略。另一种是当Redis内存不足时所采用的内存释放策略。1.对过期键进行删除的策略1,定时删除:在设置键的过期时间的同时,创建一个timer,让定时器在键的过期时间到达时,立即执行对键的删除操作。(主动删除)优缺点:对内存友好,但是对cpu时间不友好,有较多过期键的而情况下,删除过期键会占用相当一部分cpu时间。2,定期删除:每隔一段时间就对数据库进行一次检查,删除里面

2020-06-03 15:29:53 556

原创 redis 分布式锁实现及存在的问题

1.什么是分布式锁为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。2.java中redis分布式锁的实现 private static final String LOCK_SUCCESS = "OK"; private static final String SET_IF_NOT_EXIST = "NX"; private static final String SET_WITH

2020-06-03 14:35:57 601

原创 redis 缓存雪崩、穿透、击穿及解决方案

1.缓存雪崩缓存雪崩,是指在某一个时间段,缓存集中过期失效。产生雪崩的原因之一,比如马上就要到双十一零点,很快就会迎来一波抢购狂潮,这时候redis缓存中的数据集体过期了,而对这批商品的大量访问查询,都落到了数据库上,对于数据库而言,就会产生周期性的压力波峰。面对这种情况,一般是采取不同分类商品,缓存不同周期。在同一分类中的商品,加上一个随机因子。这样能尽可能分散缓存过期时间,而且,热门类目的商品缓存时间长一些,冷门类目的商品缓存时间短一些,也能节省缓存服务的资源。其实集中过期,倒不是非常致

2020-06-03 11:34:12 117

转载 redis配置文件中常用配置

打开redis.cof################################### NETWORK#################################### 指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求bind 127.0.0.1#是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭,设置为noprot...

2020-05-28 16:40:26 240

原创 JVM指令手册

栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入栈iconst_2 将int类型常量2压入栈iconst_3 将int类型常量3压入栈iconst_4 将int类型常量4压入栈iconst_5 将...

2020-04-21 22:07:05 156

转载 Reactor模式详解

什么是Reactor模式要回答这个问题,首先当然是求助Google或Wikipedia,其中Wikipedia上说:“The reactor design pattern is an event handling pattern for handling service requests delivered concurrently by one or more inputs. The ser...

2020-04-08 11:11:40 347

转载 什么是IO多路复用,理解IO多路复用

一、什么是socket?我们都知道unix(like)世界里,一切皆文件,而文件是什么呢?文件就是一串二进制流而已,不管socket,还是FIFO、管道、终端,对我们来说,一切都是文件,一切都是流。在信息 交换的过程中,我们都是对这些流进行数据的收发操作,简称为I/O操作(input and output),往流中读出数据,系统调用read,写入数据,系统调用write。不过话说回来了 ,计算...

2020-04-03 12:18:00 11977 1

转载 50道经典的java程序题

JAVA基础编程练习50题本文对50道经典的java程序题进行详细解说,对于初学者可以跳过一些逻辑性太强的题目,比如第一题用到了方法的递归,初学者可能不理解,最好先看那些有if、for、while可以简单解决的程序题!但是,对于比较深入学习过的同学,还是希望可以一口气就看完,这是比较全面思维锻炼!【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三...

2020-01-17 17:47:43 2210 2

转载 SQL面试经典50题

SQL语句的执行顺序:创建school数据库create database school;use school;创建四张表create table student( s_id varchar(10), s_name varchar(20), s_age date, s_sex varchar(10));create ta...

2020-01-16 11:59:14 822

原创 centos7 jenkins 安装血泪史

1、安装JDKyum install -y java2、安装jenkins添加Jenkins库到yum库,Jenkins将从这里下载安装。wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --import https://jenkins-ci.org/r...

2019-12-20 23:21:53 257

转载 Java 8 中的 Streams API 详解

为什么需要 StreamStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合...

2019-12-09 11:25:59 88

转载 HashMap 在高并发下引起的死循环

HashMap 基本实现(JDK 8 之前)HashMap 通常会用一个指针数组(假设为 table[])来做分散所有的 key,当一个 key 被加入时,会通过 Hash 算法通过 key 算出这个数组的下标 i,然后就把这个 <key, value> 插到 table[i] 中,如果有两个不同的 key 被算在了同一个 i,那么就叫冲突,又叫碰撞,这样会在 table[i] 上...

2019-12-02 17:17:33 167

转载 ConcurrentHashMap 1.8为什么要使用CAS+Synchronized取代Segment+ReentrantLock

大家应该都知道ConcurrentHashMap在1.8的时候有了很大的改动,当然,我这里要说的改动不是指链表长度大于8就转为红黑树这种常识,我要说的是ConcurrentHashMap在1.8为什么用CAS+Synchronized取代Segment+ReentrantLock了首先,我假设你对CAS,Synchronized,ReentrantLock这些知识很了解,并且知道AQS,自旋锁...

2019-12-02 14:44:21 462

原创 mysql : 使用不等于过滤null的问题

在写sql时遇到查询结果不对的情况,经查阅,发现是因为查询条件过滤null的问题;在写SQL 条件语句是经常用到 不等于‘!=’的筛选条件,此时要注意此条件会将字段为null的数据也当做满足不等于的条件而将数据筛选掉。例:表A用 select * from A where B1 != 1查询时得到的结果为:第三列 B1为空的也是会筛选掉的。因为 NULL 不是一个「值」...

2019-11-29 16:48:22 775

转载 Hashmap实现原理及扩容机制详解

目录HashMap基础HashMap实现原理Node和Node链拉链法关于Node数组 table散列算法HashMap和红黑树关于TreeNode红黑树基础HashMap扩容机制JDK1.7下的扩容机制JDK1.8下的扩容机制HashMap基础HashMap继承了Abstract...

2019-11-28 17:45:41 825 1

原创 ArrayList 与 LinkedList 异同

1.ArrayList 与 LinkedList 的继承与实现public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializablepublic class LinkedList...

2019-11-27 15:42:36 175

原创 ArrayList 与 LinkedList 的效率问题

最近查看ArrayList 与 LinkedList 的效率问题,网上答复基本都是ArrayList底层是用数组来保存对象的,这种方式将对象放在连续的位置中。优点:可以通过数组下标快速的拿到值,查询时高效。缺点:每一次添加和删除都需要将操作的元素后面的元素们全部移动,非常麻烦。LinkedList则是将对象放在独立的空间中,而且在每一个空间中存放下一个链接的索引。优点:...

2019-11-27 15:40:05 165

原创 java种数组长度问题

java种数组的长度是用 int类型标识的,也就是说 数组的理论最大长度是Integer.MAX_VALUE2147483647,其中 像String ArrayList 底层都是数组,所以理论最大长度都是2147483647不过这些都是理论值,具体能放多少与JVM内存有关,可以在执行java命令时加上-Xmx1024m就将JVM内存最大置为了1G,默认情况下是6...

2019-11-26 17:07:24 819

原创 StringBuffer与StringBuilder

StringBuffer与StringBuilder的异同看代码public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence public final class StringBuffer extends ...

2019-11-26 16:06:52 131

原创 java字符串的5种拼接方式

一、java字符串拼接方式都有那些?1.+号拼接2.concat拼接耗时3.join拼接4.StringBuffer拼接5.StringBuilder拼接二、拼接的耗时如何?那种拼接效率高?测试代码如下:public class test4 { public static void main(String[] args) { String ...

2019-11-26 15:27:36 9230

原创 为什么重写EQUALS时必须重写HASHCODE方法

一 :string类型的==和equals的区别:结论:"=="是判断两个字符串的内存地址是否相等,equals是比较两个字符串的值是否相等。 String s1 = new String("java");String s2 = new String("java");System.out.println(s1==s2); //falseSystem.out.print...

2019-11-26 14:01:50 1103

原创 String源码详解

1.String的继承实现关系因为被final修饰,因此是不可继承的String类,避免被他人继承后修改。实现了三个接口。可序列、可比较,有序。public final class String implements java.io.Serializable, Comparable<String>, CharSequence2.String的本质是什么Stri...

2019-11-26 13:42:09 396

转载 分布式事务详解

不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付。又或者在网上购物明明已经扣款,但是却告诉我没有发生交易。这一系列情况都是因为没有事务导致的。这说明了事务在生活中的一些重要性。有了事务,你去小卖铺买东西,那就是一手交钱一手交货。有了事务,你去网上购物,扣款即产生订单交易。事务的具体定义事务提供一种机制将一个活动涉及的...

2019-11-26 10:23:15 171

原创 windows电脑端同时打开多个微信的方法

新建已TXT文件,输入如下代码start C:\"Program Files (x86)"\Tencent\WeChat\WeChat.exestart C:\"Program Files (x86)"\Tencent\WeChat\WeChat.exe每添加一行命令多开一个微信,保存后修改文件后缀为bat,双击启动即可。...

2019-11-25 14:48:53 943

原创 java几种设计模式区分

1.代理模式和装饰模式有什么区别不同之处在于模式的意图。 代理模式控制对象访问权限,装饰模式用于向对象添加职责2.状态模式和策略模式之间有什么区别虽然这两种设计模式实现非常类似,但是他们解决了不同的问题,状态模式处理对象所处的状态,封装了依赖于状态的行为,策略模式处理对象如何执行特定的任务,它封装的是算法...

2019-11-22 11:30:26 199

转载 java设计模式之解释器模式(Interpreter)

在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。虽然使用解释器模式的实例不是很多,但对于满足以上特点,且对运行效率要求不是很高的应用实例,如果用解释器模式来实现,其效果是非常好的,本文将介绍其工作原理与使用方法。模式的定义与特点解释器(Interpr...

2019-11-22 10:33:37 241

转载 java设计模式之中介者模式(Mediator)

在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须告诉其他所有的朋友修改,这叫作“牵一发而动全身”,非常复杂。如果把这种“网状结构”改为“星形结构”的话,将大大降低它们之间的“耦合性”,这时只要找一个“中介者”就可以了。如前面所...

2019-11-22 10:14:38 132

MySQL5.7从入门到精通.zip

本书为高清版,带目录,本书对mysql进行了详尽的讲解,真正的做到了深入浅出,通过阅读本书可以快速的加深对mysql的认知及了解

2020-08-26

Win32OpenSSL-1_1_0i安装包

Win32OpenSSL-1_1_0i未 openssl 安装包,该文件下载后可以直接安装使用,内含使用方法

2018-10-19

threejs加载obj文件

threejs加载obj文件,附件主要实现了threejs对obj文件的加载,及使用相机及光的一些调节,希望能给大家带来帮助,下载后直接运行即可看到效果。

2018-09-25

freemark模板导出PDF

使用freemark模板导出pdf

2017-06-08

日历形式的行程提醒

做日期型行程管理

2016-08-12

sersync实时同步软件

sersync实现服务器之间文件的触发试实时物理同步

2016-07-18

rsync同步工具

实现服务器之间文件物理同步

2016-07-18

空空如也

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

TA关注的人

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