- 博客(52)
- 资源 (8)
- 收藏
- 关注
原创 通勤车油耗(算法题)
字节跳动在北京有 N 个工区,形成一个环状,Bytebus 是往返在各个工区的通勤车,按工区的顺序行驶,其中第 i 个工区有汽油 gas[i] 升。你有一辆油箱容量无限的 Bytebus,从第 i 个工区开往第 i+1 个工区需要消耗汽油 cost[i] 升。你从其中的一个工区出发,开始时油箱为空,可以使用当前工区的汽油 gas[i]升。如果你可以绕环路行驶一周,则返回出发时工区的编号,否则返回 -1。 输入:gas = [1,2,3,4,5] cost = [3,4,5,1,2] 输出:3 遇
2021-09-29 17:52:21
547
原创 Spring容器启动主流程(SpringBoot)
肝了两个晚上,主流程梳理完毕,其他诸如循环依赖、ConfigurationClassPostProcessor、SpringMVC的流程图后边会继续肝附ProcessOn链接:Spring流程图 | ProcessOn免费在线作图,在线流程图,在线思维导图 |
2021-09-22 14:37:06
240
原创 并发编程-AQS抽象队列同步器详解
在并发编程的大军中,有两个阵营,一个就是synchronized内置关键字实现同步的阵营,另外一个就是这次要说的采用AQS框架实现同步的阵营,可以去juc并发包里去看看这些类的实现方式。那么什么是AQS呢?我理解的AQS其实就是维持了一个先进先出的FIFO队列,然后各种并发实现类继承AQS抽象类来实现同步操作,那么下面我们通过几个图来看一下AQS的机制 //同步标识位 private volatile int state; //获取标识位 protected fin
2021-09-17 13:43:33
330
原创 MySQL之MVCC多版本并发控制
首先MVCC是属于InnoDB用来保证事务的一种读取数据的机制,InnoDB读取数据的方式有两种,一种是快照读,一种是当前读,而MVCC就是快照读用来保证事务的机制。 在MySQL读取数据时可以按照是否使用一致性非锁定读来分为快照读和当前读:1、快照读:MySQL使用MVCC (Multiversion Concurrency Control)机制来保证被读取到数据的一致性,读取数据时不需要对数据进行加锁,且快照读不会被其他事物阻塞。2、当前读:也称锁定读(locking...
2021-09-06 16:54:36
134
原创 Sentinel网关流控页面显示不出来-排查
今天准备集成Sentinel+Gateway,做网关流控,引入了以下这么maven依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <de
2021-06-29 23:31:20
3478
3
原创 Java集合源码(一)ArrayList源码
首先,初始化一个ArrayList对象有四种情况1、List a = new ArrayList();2、List a = new ArrayList
2021-06-18 17:27:54
219
原创 Spring源码-ConfigurationClassPostProcessor的调用时序
最近看Spring源码的时候,发现了一个有意思的事情,记录一下ConfigurationClassPostProcessor作为注解流程中最核心的类,那么它的调用时序是怎样的呢?以 AnnotationConfigApplicationContext作为起点:/** * Create a new AnnotationConfigApplicationContext, deriving bean definitions * from the given component classes
2021-01-11 23:36:04
367
4
转载 docker搭建Zookeeper集群
一、前言在单台服务器上,部署三个docker容器,搭建zookeeper集群二、过程1.准备工作这里我使用的是docker来搭建zookeeper集群,所以必须提前准备好以下内容:安装docker拉取zookeeper镜像(这里我用的是3.4.10版本)docker pull zookeeper:3.4.102.开始搭建单个节点不能叫做集群,而两个节点也不好做集群,这里我创建了三个zookeeper节点来搭建集群(友情提示:最好是用奇数个节点做集群)(1)利用镜像启动三个zookeep
2021-01-04 18:05:18
726
原创 记录Spring-Cloud-Stream集成RocketMQ踩坑实录
一、引入jar包(跟随spring-cloud-alibaba-dependencies走)<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-stream-rocketmq</artifactId></dependency>二、确定版本截至到spring-cloud-alibaba
2020-12-31 11:07:20
1319
1
原创 JVM基础知识(七)- 静态分派和动态分派
Java 是一门面向对象的程序语言,因为Java 具备面向对象的3 个基本特征:继承、封装和多态。这三个特征并不是各自独立的,从一定角度上看,封装和继承几乎都是为多态而准备的,多态的体现主要表现在方法的调用上,而方法在调用时会根据你送入的参数有不同的表现形式,这个就是分派:1.编译期根据对象的静态类型进行静态分派。2.运行期根据对象的实际类型进行动态分派。那么我们都知道,方法的调用主要体现在对方法的重载和重写上,那么其实这里,静态分派对应的就是方法的重载,动态分派对应的是方法的调用。静.
2020-08-05 16:49:38
438
原创 JVM基础知识(六)-类加载机制和类加载器
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构,那么负责将类加载到JVM内存空间的就是类加载器。类的生命周期 类的生命周期分为加载,验证,准备,解析,初始化,使用和销毁七个阶段,其中验证、准备、解析3 个部分统称为连接(Linking)。 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,...
2020-08-04 16:37:09
223
原创 JVM基础知识(五)- 三色标记
一、概念 JVM 中的垃圾回收是基于 标记-复制、标记-清除和标记-整理三种模式的,那么其中最重要的其实是如何标记,像Serial、Parallel这类的回收器,无论是单线程标记和多线程标记,其本质采用的是暂停用户线程进行全面标记的算法,这种算法的好处就是标记的很干净,而且实现简单,缺点就是标记时间相对很长,导致STW的时间很长。 那么后来就有了并发标记,适用于CMS和G1,并发标记的意思就是可以在不暂停用户线程的情况下对其进行标记,那么实现这种并发标记的算法就是三色标记法,...
2020-07-30 16:36:46
3638
9
原创 JVM基础知识(四)- 分代回收机制和垃圾回收算法
这次我们来讲讲垃圾回收,前边或多或少的都提及过垃圾回收的知识点,我们经常说的GC(Garbage Collection)就是垃圾回收,我们都知道JAVA都是由C++演化而来,那么JAVA和C++很重要的一点不同就是自动分配内存和自动回收内存,这两块已经不需要JAVA开发者来操心。但是GC对性能是有影响的,有时候会暂停所有的线程,触发STW(Stop the world),所以GC是把双刃剑。那么一般情况下,垃圾回收的重点是在堆区,栈区是随线程的消亡而消亡的,不需要垃圾回收器去管理,方法区虽说可以进行垃圾回收
2020-07-29 14:45:43
448
1
原创 JVM基础知识(三)- JVM对象创建及引用过程
OK,前边有说过JVM的模块都有哪些,方法区、虚拟机栈、本地方法栈、程序计数器、还有我们下面要说的堆,那么到此时,这些模块还都是相互独立的,我们需要把这些模块都串联起来,这样才能更系统的了解JVM,这就是今天要说的对象的创建过程。 首先我们先看个图,然后根据图来阐述这个对象的创建过程: 类加载 首先就是类加载,类加载就是把class 加载到JVM 的运行时数据区的过程-->静态常量池转化成运行时常量池(类加载这个以后专门讲类加载器的时候再讲)。检...
2020-07-27 15:53:02
428
原创 JVM基础知识(二)
JAVA 方法的运行与虚拟机栈 一个java程序的执行意味着操作系统首先会为这个java程序分配一个线程,jvm同时会在内存空间中分配一个虚拟机栈来存储这个线程运行时所需的相关的数据,虚拟机栈的数据结构就是一个栈,因为它的先进后出的数据结构能够很好的阐述java方法运行的顺序。一个java程序的启动,其中肯定是包含了一个或者多个java方法,那么jvm就会在虚拟机栈中为每一个方法都分配一个栈帧,所谓栈帧就是存储了当前方法所需的数据内容的,也就是局部变量,类中的类变量是存储在方法区的。程序在执...
2020-07-23 16:14:34
199
原创 JVM基础知识(一)
什么是JVM JVM是JAVA语言的一个重要组成部分,它完成了JAVA体系中最底层的与内存,操作系统交互的工作,也是学习JAVA首先学习,也是最应该学习的部分,正是因为JVM的存在,才使得JAVA被称为平台无关性的跨平台语言,JVM全称Java Virtual Machine(Java虚拟机),所有的java程序都是基于jvm运行的,它可以将字节码文件编译成机器码执行。它将java程序和操作系统进行了隔离,jvm其实是一种规范,就像是java体系中的接口,有不同的方案可以基于这个接口...
2020-07-21 15:56:28
249
原创 并发编程-ThreadLocal解析
首先,在解析ThreadLocal之前,我们首先要知道这东西是个什么玩意儿,ThreadLocal类顾名思义可以理解为线程本地变量。也就是说如果定义了一个ThreadLocal,每个线程往这个ThreadLocal中读写是线程隔离,互相之间不会影响的。它提供了一种将可变数据通过每个线程有自己的独立副本从而实现线程封闭的机制。 下面,我来手写一个ThreadLocal的实现来理解一下它的原理:public class ThreadLocal<T>{ pr...
2020-06-30 16:53:46
191
原创 基于ECC和RSA算法生成PKCS10请求和解析
最近公司有个项目用,需要基于PKCS10证书请求生成证书,然后最近也是找了资料学习了一下,在此记录一下:1.首先是生成PKCS10证书请求:RSA:public static String genCSR() throws InvalidKeyException, NoSuchAlgorithmException, NoSuchProviderException, Sign...
2019-06-17 10:56:14
5579
3
转载 使用spring cache和ehcache
一.spring cache Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接从缓存中获取结果进行返回。所以在使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有相同的返回结果。使用Spring Cache需...
2019-03-05 17:40:17
594
转载 关于Tomcat获取不到post请求的处理方法
之前项目用的是tomcat7.0.2x版本,还好好的。后来被调到别的项目去一段时间后,tomcat换成7.0.86了,结果就发现post的请求参数后台没法获取,但get请求却好好的。关于post请求参数无法被后台获取到的原因主要有两个:1.网上比较多是这个答案,常见的是使用ajax请求时设置了contentType: "application/json;charset=UTF-8",...
2018-11-02 13:23:06
2418
原创 关于低版本IE浏览器不支持placeholder的解决办法
因为要解决浏览器兼容问题,所以不得不用js方法解决: js代码:function clearSearchDefault() { var content = document.getElementById("appName").value; if(content == '请输入系统名称进行搜索...') { document.getElementB...
2018-09-12 10:10:22
366
原创 关于Could not transfer artifact (https://repo.maven.apache.org/maven2): Received fatal alert: protocol
最近突然发现,maven的中央仓库下载pom文件失败,报错是Could not transfer artifact (https://repo.maven.apache.org/maven2): Received fatal alert: protocol_version -> [Help 1],浏览器是能够访问的。其实就是中央仓库必须要TLS1.2版本才能访问,貌似是今年六月份刚改的,...
2018-07-30 15:16:55
31128
18
原创 关于消除浏览器强制保存密码的功能
最近由于公司保密要求的需要,在浏览器中输入密码时不能记住账号密码,查阅了一些资料和一些方法,发现都不能做到或者特别麻烦,现在记录下我写的js,主要也是领导大佬给了启发:1.input增加autocomplete="off"属性,这个在ie中是可以使用,但由于不是W3C标准,所以在谷歌和火狐中不好使2.现在才是正文:<input class="iptUser" type="text" au...
2018-06-28 11:18:47
3338
原创 Redis创建启停服务以及设置开机自启动
在完成redis配置以及可以正常启停之后,我们需要将redis做成服务1.在redis根目录中找到utils文件夹,找到里边的redis_init_script文件,这个文件就是redis给咱们做的服务demo,我们可以略作修改其中的配置:#!/bin/sh## Simple Redis init.d script conceived to work on Linux systems
2018-01-24 14:56:34
1382
原创 JS实现登录后记住用户名
实现效果: 用户输入用户名密码,执行js方法后不管是刷新还是关闭浏览器重新打开,用户名信息都在,也可以保存任何你想保存的信息。 实现方法: js/jq实现;用到了window.localStorage保存用户登录信息。// 在点击登录时记录用户名信息function remeberUser(){ var storage = window.localStorage; sto
2017-12-27 11:25:56
3330
原创 利用长轮询实现模仿网页扫码登录逻辑生成验证随机数
扫码登录核心逻辑过程:1.页面首先向服务器请求一个URL地址+唯一随机数 2.服务器在数据库记录这条随机数 3.页面通过URL+随机数数据生成二维码,并持续询问服务器该随机数状态(PS:这是最关键的步骤) 4.手机通过扫描二维码访问服务器,服务器获得随机数参数,在数据库中将这条参数的状态进行更改 5.页面获得知服务器中该随机数状态变更后,进行登录长轮询:客户端向服务器发送Ajax请求,服务器
2017-11-17 17:19:12
2316
原创 关于Java多线程生产者消费者实例
实例题目:1.在一个KFC内,服务员负责生产食物,消费者负责消费食物;2.当生产到一定数量可以休息一下,直到消费完食物,再马上生产,一直循环 程序涉及到的内容:1.这设计到java模式思想:生产者消费者模式2.要保证操作对象的统一性,即消费者和服务者都是跟同一个KFC发生关系的,KFC只能new一次3.this.notifyAll();和 this.wait();一个是所有唤醒的意思,一个是让自己
2017-11-13 17:37:39
980
转载 Java多线程学习(吐血超详细总结)
林炳文Evankaka原创作品。转载请注明出处http://blog.youkuaiyun.com/evankaka 写在前面的话:此文只能说是java多线程的一个入门,其实Java里头线程完全可以写一本书了,但是如果最基本的你都学掌握好,又怎么能更上一个台阶呢?如果你觉得此文很简单,那推荐你看看Java并发包的的线程池(Java并发编程与技术内幕:线程池深入理解),或者看这个专栏:Java
2017-11-09 16:50:24
220
转载 java反射机制的作用与优点
java的反射机制就是增加程序的灵活性,避免将程序写死到代码里,例如: 实例化一个 person()对象, 不使用反射, new person(); 如果想变成 实例化 其他类, 那么必须修改源代码,并重新编译。 使用反射: class.forName("person").newInstance(); 而且这个类描述可以写到配置文件中,如 **.xml, 这样如果想实例化其他类,只要
2017-09-06 17:15:09
9050
转载 WebService到底是什么?
一、序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊、书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分。但是不得不承认的是WebService真的是一门新兴和有前途的技术,那么WebService到底是什么?何时应该用? 当前的应用程序开发逐步的呈现了两种迥然不同的倾向:一种是基于浏览器的瘦客户端应用程序,一种是
2017-08-29 14:58:17
251
转载 Filter与Servlet的区别与联系
在我们写代码时,在web.xml中总能发现类似下面的代码:[html] view plain copyspan style="font-family:KaiTi_GB2312;font-size:18px;">span style="font-family:KaiTi_GB2312;font-size:18px;">xml version="
2017-08-24 17:38:03
296
转载 servlet-mapping与filter-mapping 的处理顺序
可以把它理解成在servlet处理过程中,普通servlet和过滤器谁先执行 答案是过滤器先执行:不管url-pattern的值一样或者不一样 这里有个通俗的例子: 到百度贴吧回答问题,这就是一个普通servlet要完成的工作(提交一个问题) 可是贴吧规定:用户未登陆不能回答问题,这就是过滤器的工作 想象以下,当我点击提交回答的时候,肯定是先要进行用户登陆的
2017-08-24 17:36:53
4256
原创 关于Ajax跨域提交时session丢失的问题
今天在工作中遇到了一个问题,就是当使用ajax和jsonp进行跨域时,每一服务器都会在cookie里set一个新的sessionId,会将原有的sessionId覆盖,也就是说客户端对于服务器来说始终处于未登录状态,我使用谷歌浏览器是没有问题的,但是IE有问题,在ie出问题的原因是浏览器中的cookie值在ajax跨域提交时没有带过去,就会造成服务器获取不到cookie中的sessionId,效果就
2017-08-24 17:25:46
2981
原创 java基础—— Collections.sort的两种用法,简单明了 。
转:http://blog.youkuaiyun.com/janronehoo/article/details/8746447/** * @author guwh * @version 创建时间:2011-11-3 上午10:49:36 * 类说明 */ package com.jabberchina.test; import java.util.
2017-08-16 17:15:39
323
原创 Java发布一个简单 webservice应用 并发送SOAP请求
首先搭建一个webservice的服务器,搭建成功后,运行项目,并访问 http://localhost:8080/service/SdicDataPort?wsdl“,得到如下wsdl文件,说明webservice发布成功: <?xml version="1.0" encoding="UTF-8" ?> - <!-- Published by JAX-WS RI at http://ja
2017-08-14 18:01:22
5997
原创 创建WebService服务器以及客户端调用
使用MyEclipse创建WebService简单服务端和客户端1.创建WebService服务端1.1新建一个 Web Service ProjectFile—New— Web Service Project 导入jar包:1.2创建一个普通的方法package test; public class FirstService { public String getModifyRec
2017-08-09 18:07:38
638
转载 JVM调优总结(一)-- 一些概念
数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress
2017-07-31 15:28:21
160
转载 jsp九大内置对象、四种作用域、跳转方式
转自:http://blog.youkuaiyun.com/guopengzhang/article/details/5469182jsp有四种属性范围: page -> 页面级别,显然只有在一个页面内可用。 request -> 请求级别 服务器跳转,一次请求之后消失。 session -> 会话级别 客户端跳转(服务器跳转),与浏览器有关,ie是在重新打开ie时才会不同。 appl
2017-05-25 17:10:39
352
oauth核心jar包
2018-06-08
模仿微信二维码扫描登录逻辑制作的随机数实例
2017-11-17
spring总结笔记
2017-04-26
航班查询和预定
2013-07-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人