自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

沙丁鱼的博客

积少成多-目标10000小时

  • 博客(112)
  • 资源 (1)
  • 收藏
  • 关注

原创 session识别当前登录用户的逻辑

今天做分布式遇到的坑,模块各自独立,存储用户信息的seesion位于用户模块,其它模块调用无法直接获取当前用户信息。原因:其它模块调用相当于还是做http请求了,也就是其它模块相当于一个新的浏览器了,这个新的浏览器没有携带Cookie信息,所以无法追踪获取相应的当前用户。原理:之前虽然知道session是存储于服务端的,可以用来存放用户信息,获取当前登录用户的信息,但我却不知道它是如何识别是哪一个用户的。实际上是每次登录时也就是发送请求第一次创建Session的时候,服务端会在HTTP协议中告诉

2021-02-09 17:22:47 571

原创 HeadFirst笔记03:装饰者模式

装饰者模式是什么?

2020-08-19 14:35:47 175

原创 JAVA:Base64转File文件

这一篇是为了记录如何从数据库获取图片流的(非保存路径)1.作为直接将图片文件存入数据库,往往会以String类型读取,因为其图片直接存入数据库保存的类型也会是text之类的类型保存。而往往其前面会加前缀名例如:data:application/octet-stream;base64,所以Base64转File文件的时候需要注意去掉前缀名 //从数据库获取图片数据文本 String ba.

2020-08-13 10:43:24 11389

原创 HeadFirst笔记02:观察者(observer)模式

观察者模式是什么?简单来说观察者模式就是订阅思想,举例:订牛奶我们订了牛奶,我们就是观察者了,然后牛奶公司会推送(发送)牛奶过来。观察者的好处在于:1.不需要自己去获取(比如牛奶公司来送牛奶)2.删除观察者身份时很便捷(比如通知牛奶公司取消订牛奶即可),也就是主题和观察者之间松耦合(高内聚低耦合)所以书中的这句话就能看懂了:观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。具体事例代码(订牛...

2020-06-12 15:04:17 188

原创 深入理解jvm学习笔记06:虚拟机执行子系统之类文件结构(上)

1.概述1

2020-06-04 14:50:17 156

原创 C# 时间比较之现在和某时间的相差天数

最近在做.net(真要变成全栈的了),偶尔记录一个小知识点,c#的时间比较//获取DateTime对象DateTime getDate = DateTime.Parse("2019-11-01");//随意,其实我这里是获取数据库数据的DateTime now = DateTime.Now;//转变成TimeSpan类型TimeSpan getTS = new TimeSpan(getDate.Ticks);TimeSpan NowTS = new TimeSpan(now.Ticks).

2020-06-03 15:43:48 840

原创 深入理解jvm学习笔记05:自动内存管理机制之虚拟机性能监控与故障处理工具

1.概述这一章主要讲的是实践虚拟机内存

2020-06-02 15:48:52 148

原创 深入理解jvm学习笔记04:自动内存管理机制之GC与内存分配策略(完结)

6. 内存分配及回收策略对象的内存分配实质上就是堆上分配,对象主要分配在新生代Eden区上,少数在老年代中。6.1对象优先在Eden分配

2020-05-29 15:28:33 198

原创 HeadFirst笔记01:策略模式

策略模式是什么?策略模式我个人认为就像打仗,诸葛亮军师在旁边。诸葛亮有很多种锦囊妙计提供,暂时分为3类:天时、地形、人民三方面。而由于是紧急措施,每一个方面只能采用一个方法,作为我的最终方案。比如:天时有下雨、晴朗、阴天,地形有草原、山地、梯田,人民有威胁、怀柔。3类方面就相当于3个接口,而3类下的具体事件都是(实现)implement 这三个接口。诸葛亮就相当于一个父类,...

2020-04-29 15:37:21 120

原创 深入理解jvm学习笔记03:自动内存管理机制之GC与内存分配策略(下)

5. 垃圾收集器这里讨论HotSpot虚拟机所拥有的收集器。5.1 Serial收集器Serial收集器是最基本、发展历史最悠久的收集器。该收集器是一个单线程收集器(进行GC时必须暂停其它所有的工作线程,知道GC结束)。相比其它收集器:它简单高效,因为单线程无线程交互的开销,而属于单线程收集效率最高的。时间在几十毫秒到一百多毫秒之间,很适合Clinet模式下的虚拟机。...

2020-04-28 15:01:13 119

原创 第二章:从零配置之Tomcat的安装与配置

1.Tomcat的安装Tomcat的下载官网:Http://tomcat.apache.org/DownLoad处选择tomcat版本下载,里面有很多方式下载,这里选择最常用的一种下载完成后,解压即可。到此,tomcat的安装完成2.Tomcat的配置这里的配置我分2部分讲,一部分是本地环境变量的配置,一部分是IDEA的tomcat配置2.1环境变量配置...

2020-04-22 10:01:18 186

原创 第一章:从零配置之jdk的安装与配置

JDK算是最基础的

2020-04-21 15:56:43 149

转载 Springboot知识点的查漏补缺1:maven中的<scope>标签

转载的大佬地址:https://blog.csdn.net/cd18333612683/article/details/66478332Scope标签简要来说就是作用范围。scope的分类1.compile:默认值 表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去2.test:依赖项目仅仅参与测试相关...

2020-04-21 15:47:24 334

原创 深入理解jvm学习笔记02:自动内存管理机制之GC与内存分配策略(上)

1.概述垃圾收集(Garbage Collection,GC)其实年代比java久远。

2020-03-20 10:10:12 121

原创 Git之创建Github分支

这里讲讲上传文件后我创建分支的故事。之前有写过简单的github上传,这里是继续在那个仓库上做个分支上传其它文件。步骤也很简单:1.在git上创建分支首先还是继续对着文件夹右键,选择Git Bash Here其次还是使用$ git init 命令将文件夹转化为git仓库然后在弹出来的Git 命令窗口上继续写创建分支的命令$ git branch first...

2020-03-19 16:05:53 201

原创 深入理解jvm学习笔记01:自动内存管理机制之java内存区域与内存溢出异常

第一章主要讲java发展时,jvm发展史,这里就跳过了1.java内存区域与内存溢出异常概述由于java的虚拟机自动内存管理机制,所以我们大部分情况下不会出现内存泄露和内存溢出的问题,但一旦出现,还是的有排查异常解决问题的能力,这里就需要理解虚拟机是怎么使用内存的。这一章主要讲的是jvm内存的各个区域和其作用、服务对象、和可能产生的问题。2.运行时数据区域上图是jvm...

2020-03-18 10:22:36 247

原创 EffectiveJava学习笔记33:序列化(上) 其它方法优先于java序列化+谨慎地实现Serializable接口+自定义的序列化形式

1.其它方法优先于java序列化

2020-03-14 14:36:33 269

原创 EffectiveJava学习笔记32:并发(下)-慎用延迟初始化、不要依赖于线程调度器

1.慎用延迟初始化

2020-03-13 15:53:58 158

原创 EffectiveJava学习笔记31:并发(中)-多种方式优先于线程、并发工具优先于wait和notify、线程安全性的文档化

1.executor、task、stream优先于线程1.1 什么是executor?Executor Framework是java平台一个包(java.util.concurrent)的内容.它是一个很灵活的基于接口的任务执行工具。而使用executor框架,能有效建立线程池,由线程池集中管理线程,以实现线程的降耗提速。...

2020-03-13 13:54:47 145

原创 Thinking in java学习笔记21:第二十一章(并发-完结)

并发下面的一章是仿真,也就是模拟真实场景的一些案例,这里我就不说了继续再另外一章9.性能调优

2020-03-13 10:35:31 530

原创 Thinking in java学习笔记20:第二十一章(并发-下)

继续上一章内容7.新类库中的构件7.1 CountDownLatch

2020-03-11 13:02:36 136

原创 Thinking in java学习笔记19:第二十一章(并发-中)

上一个笔记(并发-上)的内容:https://blog.csdn.net/asdfghj253/article/details/1040509673.共享受限资源3.1 不正确地访问资源这节举了个例子来说明,我总结一下。那就是资源的原子性和可视性。这里将资源设置了状态,并编写方法来提供资源是否可用的可观性,当状态为不可用,那么其他线程无法调用,等一线程结束状态改回可用,...

2020-03-09 10:19:03 122

原创 从零开始搭建springboot项目4:shiro框架+thymeleaf配置

shiro和spring security 都是安全框架,都可以授权认证。对比来讲spring security自定义能力更强点,shiro单纯配置来说更复杂点.不过我技术不精,还是使用我更熟悉的shiro来进行授权认证功能的实现下图是shiro的3层构造,而我们写也是根据这三层构造来写的,用户->安全事务管理器->realm对象1.依赖shiro包还是在...

2020-03-07 10:10:12 829

原创 从零开始搭建springboot项目3:Mybatis+Druid+lombok

这一步是为了配置数据库这里我使用的是常见的mysql+MyBatis+Druid的配置使用mysql数据库,通过MyBatis连接(实质也是JDBC),使用Druid数据源监控。1.继续在Pom.xml编写依赖包 <!--数据库 mysql--> <dependency> <groupId>...

2020-03-07 10:09:25 308

原创 从零开始搭建springboot项目2:热部署

1.热部署pom.xml: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <o...

2020-03-07 10:09:13 234

原创 从零开始搭建springboot项目1:创建springboot项目

1.创建项目通过右上角:File->New-> Project2.点击Next进入命名阶段这里主要修改命名这两个。Group是自己的包名,Artifact是设置项目的名字。下面的一些字段会跟这两个变的,注意不要大写。3.选jar包阶段这里是搭简单的springboot,所以选一个就行。...

2020-03-07 10:08:54 285

原创 Thinking in java学习笔记18:第二十一章(并发-上)

对于并发,书中花了很长的篇幅来讲,而我需要重点学习的也是并发,所以这里分多个笔记来记录。1.并发的多面性用并发的用途大体分为:性能 和 设计可管理性 两种。实现并发最直接的方法:在操作系统级别使用进程。多任务操作系统可以通过周期性地将CPU从一个进程切换到另一个进程,来实现同时运行多个进程(程序)。编写多线程的基本困难是协调不同线程驱动的任务之间对这些资源的使用,以使这些资源不...

2020-03-05 15:17:25 198

原创 前端杂记2:设置layui中jq带name变量的对象的checkbox+jq找某个div下的所有checkbox+layui下拉select监听

1.设置layui中jq带name变量的对象的checkboxhtml方面:<input type="checkbox" name="manager[2]" title="写作">script方面:var uid="manager["+res.data[i].pageLinks[j].id+"]";$('input[name="'+uid+'"]').prop("ch...

2020-03-02 14:34:41 615

原创 小工具使用:用jad反编译calss文件到java文件

前言:今天搞了个乌龙,公司项目要进行修改,然后我忘记项目放哪了(之后找到了),一度认为找不到了,然后就直接去服务器的tomcat里面拿了一份自己配置的项目的包,解压完后虽然拿到了前端方面的代码文件,但是后端由于已经编译成了class文件,而打开项目需要的是java文件,于是我便百度找到了这个jad工具来帮忙把class文件反编译成java文件。1.首先下载jad.exe文件链接:...

2020-02-27 10:56:09 284

原创 Thinking in java学习笔记17:第二十章(注解)

1.注解的定义注解又被称为元数据java内置的3中注解@Override:标记重写父类方法@Deprecated:标记方法过时@SurpressWarnings:忽略编译器警告简单介绍在我另一篇笔记有写:https://blog.csdn.net/asdfghj253/article/details/1035033022.编写注解处理器注解处理器就是用来读取注...

2020-01-20 13:57:34 144

原创 Thinking in java学习笔记16:第十九章(枚举类型)

1.基本enum特性1.1首先介绍了3个方法values():获取enum实例的数组ordinal():获取enum实例在声明时的次序name() :获取enum实例声明时的名称public class EnumTest { public static void main(String[] args){ sardine[] sardineList= s...

2020-01-19 15:21:18 115

原创 Thinking in java学习笔记15:第十八章(java I/O系统)

1.File类File(文件)类它不但能代表一个特定文件的名称,它还能代表一个目录下的一组文件的名称。Filed对象.list()方法:可以获得File对象包含的全部列表。产生目录是用是Filed对象.mkdirs()方法生成目录public class test { //mkdirs()创建目录 public static void main(String[] args) ...

2020-01-19 10:23:33 180

原创 Thinking in java学习笔记14:第十七章(容器深入研究)

1.填充容器填充容器也可以使用Collection.fill(list,对象),也是复制同一对象引用来填充整个容器,且只对List对象有用。我们还可以使用了Collections.nCopies(int n, T o)方法进行填充(n--在返回列表中元素的个数。o--在返回列表中反复出现的元素。)public class test0 { public static v...

2020-01-17 14:00:38 177

原创 Thinking in java学习笔记13:第十六章(数组)

1.数组(Array)的性质1.1 数组是线性序列的1.2 数组是一种效率最高的存储和访问对象引用序列的方式。1.3 数组的数组对象大小是被固定的1.4 数组实质上保存的是引用(指向在堆中创建的一个真实对象)2.返回一个数组public class ArrayTest { public static void main(String[] args) {...

2020-01-15 11:09:22 111

原创 Thinking in java学习笔记12:第十四章(类型信息)、第十五章(泛型)

第十四章-类型信息运行时类型信息使得可以再运行时发现和使用类型信息。这里书中写了RTTI,RTTI是什么?这其实是作者的一个误会,RTTI是C++里面的RTTI(Run-time Type Identification),运行时获取类型信息。而java中更适合的表示是反射,可以这么说,java的反射是C发展到java后的结果。对于反射我其实已经有笔记了,而且我对这张内容表示有...

2020-01-14 16:02:35 121

原创 Thinking in java学习笔记11:第十三章(字符串)

字符串可以说无论新手老手,都会用到,而这一章就是讲字符串(String)的一些操作1.不可变String书中有一句话,我感觉需要重点标记一下,因为这句话很重要:String对象是不可变的。String类中每个会修改String值的方法实际上都是创建一个新的String对象,用新对象来保存修改后的值,而原对象是不变的。比如:String a="沙丁鱼flat"; a="沙...

2020-01-13 09:45:08 147

原创 Thinking in java学习笔记10:第十二章(通过异常处理错误)

书中标了一句话:java的基本理念是“结构不佳的代码不能运行”1.基本异常异常情形:阻止当前方法或作用域继续执行的问题。例:throw new NullPointerException();对于异常参数,标准的异常类都有两个构造器,一种是默认无参构造器,一种是接收字符串作为参数,以便放入相关信息的构造器例:throw new NullPointerException("t=...

2020-01-10 13:52:06 117

原创 Thinking in java学习笔记9:第十一章(持有对象)

对于第十章的内部类,因为之前的笔记已经学习过内部类了,所以这里就不记笔记了。内部类是什么?将一个类的定义放在另一个类的定义内部,就是内部类持有对象:就是把对象存储到容器中得以持有.所以这章主要讲容器类,容器类的基本类型就是List、Set、Queue、Map等集合类1.泛型和类型安全的容器这里介绍了ArrayList容器。ArrayList.add(...

2020-01-07 15:05:59 129

原创 Thinking in java学习笔记8:第九章(接口)

1.抽象类和抽象方法抽象类是介于普通类与接口之间的。java提供一个叫做抽象方法的机制,这个抽象方法,使用abstract关键字,仅有声明没有方法体。例:abstract void xx();而包含这种抽象方法的类叫抽象类。(因为类中有抽象方法,则该类也必须被限定为抽象的。)public class abstractTest { public static voi...

2020-01-06 15:14:13 225

原创 Thinking in java学习笔记7:第八章(多态)

多态是什么? 就是一个对象有多种形态比如迪迦奥特曼可以通过改变颜色来切换形态,蓝色防御型,红色攻击型,红蓝都有是平衡型1.多态的向上转型在上一章也讲了,在向上转型后(子类转成父类),子类的特有方法是无法使用的。不过这边讲一下特例,子类中如果有覆盖(重写或重名)的方法,那么向上转型后调用父类的同名方法时,它执行的是子类的方法。public class test { pu...

2020-01-04 13:36:20 131

NavicatPremium1.zip

Navicat真香,好用又实在,真是好工具!

2020-04-30

空空如也

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

TA关注的人

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