自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李思苇

终身程序媛

  • 博客(186)
  • 论坛 (4)
  • 收藏
  • 关注

原创 HTTP缓存——HTTP权威指南.第七章

WEB缓存是可以自动保存常见文档副本的HTTP设备。减少冗余的数据传输:节省了网络费用。没有缓存时,相同的请求,服务器每次都要生成一个文档。有缓存服务器后,只在第一次请求时生成文档,并将文档缓存在缓存服务器上,之后的请求都从缓存服务器上直接获取。减少了原始服务器的网络数据冗余传输。缓解了网络瓶颈问题:请求被部分分散到缓存服务器上去了,原始服务器瞬间拥塞:当大量用户同时访问原始服务器时,造成瞬间拥塞。而缓存后,只有第一次请求需要访问原始服务区,之后的请求都可以由缓存服务器提供,解决了拥塞问题。距离

2020-11-09 15:01:16 14

原创 WeakHashMap实现及使用场景

目的让Map中不再使用的Entry被GC及时回收,释放内存空间用途Map本身生命周期很长,需要长期贮留内存中,但Map中的Entry可以删除,使用时可以从其它地方再次取得。实例:tomcat中的缓存有用到。实现方式对于WeakReference可以参考另一篇文章:弱引用——WeakReference——所引用的对象的回收规则在WeakHashMap类中定义了一个实例域ReferenceQueue<Map.Entry> queue。内部的Entry直接继承了WeakRefere

2020-10-26 15:27:49 43

原创 mysql实用技巧

选自:mysql笔记.pdfhelp命令mysql提供的help命令,对于我们只记得命令中的关键词,但是忘记了命令的具体的参数等情况下,非常有用。例如:help show;help create;help grant;help drop;还可以更进一步:我想创建一个新用户,只记得命令是’create user’开头的,但是忘记了后面一些具体参数,可以使用如下命令:mysql> help create user;强烈建议所有列都 not null,设置默认值。因为null有坑。

2020-10-21 11:32:05 13

原创 web安全

中间人攻击指黑客在http报文传输过程中,伪装成目的服务器,截获、篡改http报文。https目前是预防中间人攻击的有效方案。https使用了证书(非对称加密+签名)可以检测出报文是否被篡改。重放攻击可以通过设置动态数字及过期时间等预防重放攻击。CSRF跨域...

2020-08-26 17:15:53 34

原创 REST 核心概念

REST(Representational State Transfer,表述性状态转移)资源每一个标准的URL可以唯一定位web服务器上的一个资源。当发送HTTP GET请求时,通过URL来说明要请求的资源在哪个web服务器上的哪个位置。资源表述当web客户端发送HTTP GET 请求后,服务器响应给客户端的主体内容,就是对资源的表述。每个URL所定位的那个资源是唯一的,但是对资源的表述却可以是多种多样的。例如,对于服务器上存储的某个学生的信息,可以将数据填充到我们设计好的一个美观的

2020-08-23 17:38:09 186

原创 Nginx服务架构/事件驱动模型

模块化模块化是指:以功能块为单位进行程序设计,一个模块就是一个功能块,应该只负责一个功能,遵循“单一职责原则”的设计模式。自定向下分解、逐步求精原则模块内部高内聚、模块之间的依赖关系低耦合原则。模块化设计支持分布式开发,可以使得nginx灵活的扩展和便捷的升级。Nginx模块化结构分为:核心模块,指源码包中的模块,src文件夹下,包括进程管理、权限控制、错误日志记录等。标准http模块,编译后包含的模块,使得nginx支持基本http功能可选http模块,用于扩展标准的http功能

2020-07-29 10:43:54 79

原创 nginx 基础配置项详解

nginx.conf文件中的基础配置nginx.conf文件中的默认配置信息worker_process 1; #此配置项全局生效events{ #以下配置只在events部分中生效 worker_connections; 1024 }http{ #以下配置只在http部分中生效 include mime.types; default_type application/octet-stream; sendfile on; keepalive_time

2020-07-26 16:42:28 28

原创 nginx 安装部署

Nginx安装部署下载官网下载即可,按操作系统可分为windows版本的和linux\unix版本的。按照适用场景又分为:development(最新版)、stable(稳定版)、legacy(历史版本)第一列CHANGES-x.x,链接到的文件内容主要是这个主要版本相对以前的版本的功能上的改变第二列nginx-x.x.x,链接到可在linux\unix系统环境上使用的的安装包,为tar.gz格式第三列pgp,链接到的文件内容是第二列的安装文件的pgp校验码第四列nginx/Windows-

2020-07-26 16:37:33 55

原创 Nginx服务启动停止

有两种方式的启停给nginx进程发送信号运行nginx命令(即运行nginx软件 /sbin/ 目录下的二进制文件nginx)给nginx进程发送信号发送信号发送信号的命令:kill -SIGNAL pid获取Nginx进程号kill命令中必须给出nginx进程的进程号pid。nginx服务工作过程中,会启动一个master进程,和多个工作进程worker_proccesser,kill命令中的pid参数是指master进程号。获取nginx master进程号的方式有两种:/l

2020-07-26 15:56:59 32

原创 nginx 反向代理及负载均衡策略

正向代理:代理服务器做的是客户端的代理反向代理:代理服务器做的是服务器的代理代理服务先用社会生活中我们常见的场景解释一下代理:租房代理 or 中介很多有房人士想将自己闲置的房子出租,但是他们大部分都还有其它更赚钱的事情要忙,并且他们自己住的房子和闲置的房子也不在同一个地方。因此并不愿花时间接待并带领每一位想要看房子的租客到自己闲置的房子那里去看房,也不愿花时间对租客的各种问题做解答。于是就出现了租房代理或者中介,他们专门负责带领租客看房子、解答租客的问题,虽然租客的主要目标即住房服务是房主提供的

2020-07-26 08:30:49 58

原创 并发:core java 14

Core Java 第14章 并发基本概念线程进程使得一台计算机能够同时执行多个应用程序,进程是多个应用程序的并发执行。线程使得一个应用程序能够同时执行多个任务,线程是一个应用程序内的并发执行。线程的定义及创建建议通过实现Runnable接口的方式定义线程,便于扩展。线程的中断如果一个线程启动后,用户就对其失去了控制,无法中止其执行,是非常不友好的。用户可以通过thread.interrupt();来中断线程thread,这个方法会调用native方法interrupt0(),会将线程的

2020-07-08 09:29:00 60

原创 弱引用——WeakReference——所引用的对象的回收规则

弱引用 WeakReference 相关的GC回收规则当一个对象仅被一个弱引用实例引用(持有)时,这个对象就会被GC回收。注意上述规则中,会被GC回收的是弱引用实例引用的对象,而非弱引用实例本身如果显式地声明了一个变量E e = new E();指向一个对象,而这个对象e被WeakReference实例持有引用,则由于对象的引用被变量e持有,对象并不符合上述回收规则,因此对象至少在变量e的作用域范围内都不会被回收。例如:class Apple{ String color; void Ap

2020-07-08 05:22:21 719

转载 unsafe源码

/* * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU Gen

2020-06-22 08:48:05 41

原创 HashMap源码详解:Core Java 9.3

Map接口keySetvaluessizecontainsKeyputremoveentrySetisEmptycontainsValuegetclear以下为部分JDK1.8添加的默认方法,defaultgetOrdefault(Object o,V v)replaceAll(BiFunction<K,V,V> f)remvoe(K k,V v)forEach(BiConsumer<K,V&g

2020-05-09 10:44:53 48

原创 Core Java(第1-3章)

1.2.6 体系结构中立/编译器jdk>jre>jvm>解释器编译器生成一个体系结构中立的目标文件格式,即字节码。只要有Java运行时系统(JRE,包括了JVM-即java解释器),这些字节码就可以在许多处理器上运行。精心设计的字节码不仅可以很容易地在任何机器上通过JVM解释执行,而且还可以动态地翻译成本地机器代码。虚拟机有一个选项,可以将执行最频繁的字节码序列翻译成机器码...

2020-05-08 23:44:23 88

转载 红黑树、B树、B+树

参考:微信知乎此三者的主要应用是降低大数据量检索时的时间复杂度。JAVA的hashMap中,当一个桶中的元素个数超过…时,桶内数据的存储结构会由链表改成红黑树。MySql数据库中,对于数据量超大的数据进行索引时,会采用B+树的存储结构。(索引数据结构的演变:红黑树->B树->B+树)二叉查找树对二叉树做中根遍历,数据是有序的,也称二叉排序树、二叉搜索树。每个节点最...

2020-05-08 15:26:52 78

原创 leetCode:合并有序链表

public static void main(String[] args){ Integer [] a = {3,5,9,12,14,18,21}; Integer [] b = {2,3,7,15,19,22}; LinkedList<Integer> lista = new LinkedList<Integer>(Arrays.asList(a))...

2020-05-04 14:49:23 64

原创 流程控制及break、continue、label的用法:Core Java 3.8

while / do while确定循环:for循环for循环语句是有确定循环次数的,因此称为确定循环。for循环语句用每次迭代后更新的计数器或者变量的方式来控制循环次数。for 语句内定义的变量,其作用域仅在for循环语句和循环体内部。也就是说,如果在一个代码块内定义了两个非嵌套的for循环,则这两个for循环语句或者循环体内可以定义名称相同的变量。格式:for ( 语句1; 条件语...

2020-05-04 14:20:01 83

原创 一文带你轻松把堆排序相关概念、原理及JAVA实现搞的明明白白

堆:用数组存储的完全二叉树。堆中二叉树的特性:树的所有父节点都必须是小于等于其节点(小顶堆),或者所有父节点都大于等于其子节点(大顶堆)。存储堆的元素的数组的特性:节点a[i] 的 左孩子节点存储在a[2i+1]、右孩子节点存储在a[2i+2]。在排序过程中,将所有元素将逻辑上划分为两部分,一部分是经过排序过程后有序的元素,另一部分为还未排序的所有待排序元素。以从小到大的堆排序为例:每...

2020-05-02 20:51:19 83

原创 java中default关键字的语法语义

switch-case-default接口中的方法的默认实现

2020-04-22 15:21:29 74

原创 Java Collection-new:Core Java 9

Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapVector:可以实现可增长的对象数组。它可以试用正数索引进行访问,它的大小可以跟需要增大或者缩小。 使用时注意:

2020-04-20 16:06:45 54

原创 UML图符号:Core Java 4.1

类之间的关系在类之间,最常见的关系有依赖(“ uses a ”)继承(“ is a ”)聚合(“ has a ”)依赖:如果类A的方法操纵B类的对象,我们就说类A依赖于类B。如Order类使用Account类是因为Order对象需要通过Account对象查看用户的账户余额。应该尽可能的将相互依赖的类减至最少,即让类之间的耦合度最小。聚合:如一个Order对象包含一些Item对象...

2020-04-20 13:29:12 61

原创 调试技巧:Core Java 7.6

打印变量System.out.println(“x=”+x);Logger.getGlobal().info(“this=”+this);每个类一个main方法这样就可以对每个类进行单元测试Junit组织测试用例套件日志代理,对JDK源码调试详见:举个例子e.printStackTrace() 和 Thread.dumpStack();Thread.setDefaultUncau...

2020-04-15 20:38:40 85

原创 日志:Core Java 7.5

开发人员应该用logger.fine( obj )来取代System.out.println( obj );当调用 System.out.println 时, 实际上生成了下面的日志消息:logger.fine();JDK的日志系统有以下几个主要的类和概念:日志记录器 Logger记录器负责暂存日志数据到内存中只有当某条日志的级别高于记录器设定的阈值时,此条日志才会被记录器记录到内存。...

2020-04-15 16:32:21 77

原创 断言Assert:Core Java 7.2

断言 Assertassert,是断定、坚称的意思。assertion,是主张、肯定的意思。对于断言代码assert i>0;如果i的值实际是小于或者等于0,那么系统就会抛出一个AssertionError异常。注意,AssertionError异常是Error的子类,性质相当于JVM自身内部异常。什么时候应该选择使用断言呢如果在条件不成立的情况下继续执行的话,会发生致命的、不可...

2020-04-15 10:31:58 37

原创 异常:Core Java 7.1

异常:程序运行过程中,由于程序本身的错误或者外部环境的影响,而出现的异常情况断言:为确保程序能正常运行或者排查程序出现异常的原因,需要编写一些测试代码进行测试。但程序正式运行时,是不允许测试代码工作的。如果直接删掉这些测试代码,再次遇到异常时,可能又需要重复编写相同的测试代码。可以通过断言来避免这些问题。日志:当程序遇到异常时,并不能总是能同用户或者终端沟通。此时可以通过日志记录下问题,以备日...

2020-04-15 10:14:57 48

原创 代理Proxy:Core Java 6.5

利用代理可以在运行时创建一个实现了一组接口的新类。这种功能只有在编译时无法确定需要实现哪个接口时才使用。对于应用程序设计人员来说,遇到这种情况的机会很少。这是一种高级技术,对于系统程序设计人员来说,代理带来的灵活性十分重要。代理如何工作的代理类可以在运行时创建全新的类。在运行时直接生成类,即Class类的一个实例。而非生成一个类的源码,然后经过编译后再生成类的字节码文件,再经过JVM加载、生...

2020-04-14 10:56:37 33

原创 内部类:Core Java 6.4

如果一个类定义在另一个类的内部,这个类就是内部类。为什么要用内部类,什么场景下需要用内部类根据面向对象设计原则,需要定义一个新的类,并对相关操作和属性进行封装。新类仅同另一个类有密切依赖关系或者逻辑关系,其它类基本不会用到它;或者这个新的类仅是为了另一个类提供服务。当发现一个类需要继承一个以上的类时,此时需要检查一下此类是否符合类的单一功能原则,是否应该定义新的类,是否需要定义...

2020-04-12 18:44:54 48

原创 jdk8的比较与排序(Comparator & sort):Core Java

ComparatorCore Java 6.3.8Comparator提供了许多静态方法和默认方法,为大数据的比较和排序提供了支持。对于静态方法,调用格式是:Comparator.<T>method()如获取String类的比较器:Comparator.<String>naturalOrder();如果做了静态导入,类型又能推导出来,则直接方法名即可import...

2020-04-06 19:24:16 177

原创 lambda表达式、函数式接口、方法引用、高阶函数:Core Java 6.3

当参数为代码块时,如何传递参数为代码块的应用场景及实现实例当应用Arrays::sort( T[] a, Comparator<? supter T> c)方法对数组中的对象进行排序时,需要传递一个比较器对象(即Comparator接口的实例c)为参数。最终目的,是将比较器中实现的接口方法Comparator::compare(T first, T second)中的代码块传递给...

2020-04-01 22:43:04 87

原创 接口(Interface)与 回调(callback):Core Java 6.1

接口 interface接口技术主要用来描述类有什么功能,而并不给出每个功能的具体实现。接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。如果类遵从某个接口,那么就履行这项服务。例如:方法Arrays :: sort(T [] elements ),可以对数组中的元素进行排序,但要求类型T必须实现了接口方法Comparable<T> :: comp...

2020-03-30 22:25:18 65

原创 枚举类Enum:Core Java 5.6

类Enumpublic abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable { private final String name; private final int ordinal; //序号 //构造函数 protected Enum(...

2020-03-30 18:38:47 40

原创 包装器类(Wrapper):Core Java 5.4

Wapper包装器类有:Void 、Boolean、Character、Integer …Wrapper类都是final的,不可被继承、重写。Wrapper类的值都是final的,不可变。如Integer类中定义的值域:private final int value;自动装箱:autoWrapping对于代码:Integer n = 3;javac编译器会自动插入一条装箱的指令,In...

2020-03-30 12:54:09 44

原创 参数传递:值传递:Core Java

Java方法调用时的参数传递都是值传递基本类型的参数值传递void methodA(){ int a=5; methodB(i);}void methodB(int i ){ //创建一个栈帧,创建一个本地变量i,并在栈帧中开辟4个字节空间,将传递来的数值5存储到这个空间中。 i=i+3;}在上例中,A调用B方法后,将int型变量a的值,传递给方法B的参数i,无论变量i怎么...

2020-03-30 12:19:05 28

原创 ArrayList 泛型数组列表:Core Java 5.3

菱形语法<>ArrayList<String> ss = new ArrayList<>(); // 不会报warningArrayList<String> ss = new ArrayList(); // 会报warning : unchecked conversionnew 操作符后的ArrayList的<>中不是必须指明泛型的...

2020-03-29 22:03:00 36

原创 自定义类中equals方法的一般实现中instanceof与强制转换的区别:Core Java 5.2.1

kk

2020-03-29 17:17:34 77

原创 自定义类的hashCode()实现方式:Core Java 5.2.3

JDK提供的工具类Object :: hashCodepublic native int hashCode()默认为的存储地址,十进制;null 会 java.lang.NullPointerException;Objects :: hashpublic static int hash(Object ... values){ return Arrays.hashCode(values...

2020-03-29 12:37:21 96

原创 指数(乘方、幂、科学计数法)、对数、等比数列、阶乘基础知识

指数科学计数法:将一个数计作a*10^n,计算机中表示为aEn,其中1<=|a|<10。指数即次方,也称为幂。它是乘方运算的组成部分。计算机上显示为n^m,数学计算为n自乘m次。读作n的m次方,或者n的m次幂。其中n称作底数,m称作指数。n^0= 1; n^1=1*n; n^2=1*n*n因为十的乘方很容易计算,只需在后面加零即可,因此科学计...

2020-02-29 22:31:53 253

转载 memcache内核,一文搞定!

memcache内核,一文搞定!mc设计初衷是“以服务的方式,而非库的方式提供KV内存管理”,持久化和复杂数据类型存储不是其业务目标。 KV内存管理,value的存储大小上限为1M;不支持持久化;可以设置过期时间;懒淘汰方式实现key过期。 item不会被主动淘汰。懒淘汰的实现方法是:当memchage根据用户请求查询到一个item时,会先检查一下时间...

2020-02-28 20:53:04 40

转载 一文了解kafka

转自:ImportNew 一文了解Kafka功能:解耦缓存:缓冲削峰限流(灵活性与峰值处理能力)可恢复性异步通信主要概念:borker:topic、message、partition、segment、log&index、replication(leader & follower) broker:一个Kafka服务,ip:...

2020-02-28 15:40:33 94

空空如也

空空如也

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

TA关注的人 TA的粉丝

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