自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 大型网站技术架构

1 大型网站架构演化1.1 大型网站系统的特点:高并发、大流量高可用:提供7 x 24小时不间断服务。海量数据用户分布广泛,网络情况复杂。安全环境恶劣:每天都面临着被攻击的风险。需求快速变更,发布频繁:为适应市场,满足用户需求,系统版本功能需要不断迭代更新。渐进式发展:几乎所有大型的互联网站都是从一个小网站开始逐渐发展起来的。1.2 大型网站架构演化发展历程1、初级阶段的网站架构单机架构,使用一台服务器搭建网站,应用程序、数据库、文件等所有资源都在一台服

2021-08-03 16:41:41 826

原创 Redis数据结构与对象

Redis数据结构与对象1 简单动态字符串简单动态字符串(Simple Dynamic String,SDS)底层定义:struct sdshdr { // 记录buf数组已使用的子节数量 int len; // 记录buf数组未使用子节的数量 int free; // 子节数组,用于保存字符串 char buf[];}使用SDS而不是原生的字符数组的优势:可以常数复杂度获取字符串长度杜绝缓冲区溢出减少修改字符串时带来的内存重分配次数空间预分配:当需要对SD

2021-08-03 15:12:33 139

原创 计算机网络——传输层

传输层运输层概述从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。从运输层角度看,通信的真正端点是主机上的进程而不是主机,也就是说,端到端的通信是指应用进程之间的通信。运输层提供的是一种逻辑通信而非物理通信:运输层协议为运行在不同主机上的应用进程之间提供逻辑通信功能,而无须考虑承载这些报文的物理基础设施的细节。复用和分用运输层有一个非常重要的功能,即复用和分用复用:发送方不同的应用进程都可以使用同一个运输层协议传输数据,

2021-08-03 15:01:01 494

原创 Redis单机数据库的实现

Redis单机数据库的实现数据库服务器中的数据库Redis服务器的所有数据库都保存在服务器状态redis.h/redisServer结构的db数组内,db数组的每个项都是一个redis.h/redisDb结构。struct redisServer { // ... // 一个数组,保存着服务器中的所有数据库 redisDb *db; // 服务器的数据库数量,默认为16个 int dbnum; // ...}在服务器内部,客户端状态redisClient结构的db属

2021-08-03 11:22:03 110

原创 四种引用与引用队列

强引用:Java程序平常使用的引用都是强引用,只要强引用还存在,垃圾收集器永远不会回收这些被引用的对象。// 创建一个强引用Object object = new Object();软引用:描述一些还有用但非必需的对象。在系统要发生内存溢出之前,被软引用的对象将会被列入回收范围中进行第二次回收。在OutOfMemoryError之前,垃圾收集器会优先回收长时间闲置的软引用对象,对那些新创建的软对象会尽可能保留软引用由SoftReference类表示:// 创建一个强引用Object objec

2021-01-29 16:16:47 579

原创 Shiro

Shiro1.Shiro介绍shiro一款一款主流的Java安全框架,不依赖任何容器,可以运行在Java SE和Java EE项目中,主要功能使对访问系统的用户进行身份认证、授权、会话管理、加密操作。2.Shiro核心组件**Subject:**主体,代表当前的用户,可使用SecurityUtil.getSubject()获取当前的Subject对象。所有的Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager,可以把Subjec

2021-01-28 20:20:32 90

原创 Spring笔记

Spring装配Beanspring装配bean有三种方式:在xml中显式装配在java中显式装配隐式的bean自动装配自动装配的两个操作:组件扫描:component scanning,spring通过扫描发现应用上下文创建的bean自动装配:autowiring,spring自动满足bean之间的依赖自动装配的两种方式:使用xml配置使用注解(推荐)使用xml配置设置autowire=“byName”,spring会根据上下文找到id与实体类setter方法去掉se

2020-12-23 09:40:52 351

原创 Web缓存和条件get方法

Web缓存Web缓存器也叫代理服务器,有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。可以配置用户的浏览器,使得用户的所有HTTP请求首先被定向到该Web缓存器。被配置的用户浏览器请求对象时,会发生以下情况:1.浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求2.Web缓存器进行检查,看看本地是否存储了该对象副本。如果有,Web缓存器就向客户浏览器用HTTP响应报文返回该对象3.如果Web缓存器中没有该对象,就打开一个与该对象的初始服务器的TCP

2020-12-23 09:32:11 436

原创 Cookie

由于HTTP服务器是无状态的,当一个Web站点希望能够识别用户时,便使用到cookie,它允许站点对用户进行跟踪。cookie技术四个组件:在HTTP响应报文中的一个cookie首部行在HTTP请求报文中的一个cookie首部行在用户端系统中保留有一个cookie文件,并由用户的浏览器管理位于Web站点的一个后端数据库建立cookie的过程:1.当用户首次访问某Web站点时,Web站点服务器会产生一个唯一的识别码,并以该识别码作为索引在后端数据库中产生一个表项。同时用一个包含Set-coo

2020-12-22 18:35:55 115 1

原创 HTTP非持续连接和持续连接

非持续连接和持续连接非持续连接(non-persistent connection):每个请求/相应是经过单独的TCP连接发送,每个TCP连接在服务器发送一个对象后关闭,该连接并不为其他的对象而持续下来。换句话说,即每个TCP只传输一个请求和一个响应。用户在非持续连接下, 每点击一个超链接,都会执行如下步骤:1.浏览器和Web服务器发起一个TCP连接,其中涉及到三次握手过程,即客户向服务器发送一个小TCP报文段,服务器用一个小TCP报文段做出确认和响应,最后客户向服务器返回确认。在三次握手过程中,前两

2020-12-22 18:34:07 3227

原创 面向对象的七大原则

面向对象的七大原则开闭原则定义:软件实体应当对扩展开放,对修改关闭。即,当应用的需求发生改变时,不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。软件实体指:项目中划分出地模块类和接口方法开闭原则的作用开闭原则是面向对象设计的终极目标,其作用如下:1.降低软件测试的复杂性如果软件实体遵守开闭原则,在软件测试时,只需要对扩展的代码进行测试即可,因为原有代码没有修改,任然可以正常运行。2.提高代码的可复用性程序粒度越小,可复用性越高。在满足开闭原则

2020-12-22 18:31:13 110

原创 代理模式

代理模式(Proxy)Protection Proxy:检查调用者是否具有实现一个请求所必须的访问权限理解:比如真实对象实现的功能是访问一个网站,将这个对象交给一个代理对象去代理,用户访问网站时是通过调用代理对象访问,这时代理对象除了调用真实对象的访问方法,还可以加上自己的操作,比如先检测用户受否有这个请求权限再决定是否调用该真实对象的访问方法。通过使用代理,真实的对象只需要实现其现有的功能,而一些附加的功能操作后面可以通过代理对象来添加。Virtual Proxy:可以缓存实体的附加信息,以便

2020-12-22 18:29:38 67

原创 数据库的JOIN

七种JOIN:A INNER JOIN B,等同于JOIN,A 和 B的交集A FULL JOIN B,A 和 B的并集A LEFT JOIN B,A 和 B的交集 以及 A的集合A RIGHT JOIN B,A 和 B的交集 以及 B的集合A LEFT JOIN EXCLUDING INNER JOIN B, A的集合去除A 和 B的交集A RIGHT JOIN EXCLUDING INNER JOIN B, B的集合去除A 和 B的交集A FULL JOIN EXCLUDING INNE

2020-12-22 18:26:27 235

原创 Redis学习笔记

Redis文章目录RedisNoSql概述什么是NoSQLNoSQL的四大分类Redis入门Redis五大数据类型Redis-KeyStringsListssetsHashesZsets(有序集合)三种特殊数据类型Geospatial地理空间HyperloglogBitmaps事务监视(Watch)悲观锁乐观锁JedisSpingboot整合Redis持久化(重点)Redis订阅发布NoSql概述现在是属于大数据时代,大数据一般的数据库无法进行分析处理单机MySQL,问题:数据量如果太大

2020-12-22 18:24:41 126

原创 SQL练习

SQLZOO的练习SQLZOO网址:https://sqlzoo.net/wiki/SQL_Tutorial4.SELECT within SELECT Tutorial7.在每一個州中找出最大面積的國家,列出洲份 continent, 國家名字 name 及面積 area。 (有些國家的記錄中,AREA是NULL,沒有填入資料的。)select continent, name, area from world x where area = (select max(area) from world

2020-12-22 18:17:29 1102

原创 JVM的体系结构

JVM的体系结构程序计数器:可看作当前线程所执行的字节码的行号指示器,通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程回复等基础功能都是通过这个计数器来完成的。每条线程都有一个独立的程序计数器。如果执行的是Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果执行的是Native方法,这个计数器的值为空(Undefined)虚拟机栈:描述Java方法执行的内存模型每个方法执行的同时会创建一个栈帧(Stack Frame)用于存储局部

2020-12-22 18:12:43 49

原创 双亲委派机制

双亲委派机制当一个类加载器收到类加载请求时,该类加载器会先将请求委派给父类加载器,直至最顶端的父类加载器,当最顶端的父类加载器在搜索范围内找不到指定类时,子类加载器一层一层往下搜索。实际工程流程:1 当Application ClassLoader 收到一个类加载请求,将该请求委派给父类加载器Extension ClassLoader2 当Extension ClassLoader收到一个类加载请求,将该请求委派给父类加载器Bootstrap ClassLoader3 如果Bootstrap Cl

2020-12-22 18:02:32 53

原创 Java垃圾回收算法

Java垃圾回收(Garbage Collection,GC)怎样定义垃圾引用计数算法:在对象头中分配一个空间来保存该对象被引用的次数(Reference Count),当引用计数为0时回收该对象。缺点:当存在两个对象A,B,分别由a, b来引用,即a = A, b = B,假设A中的字段与B中的字段存在相互引用,当将a,b设置为null时,并不能让垃圾回收器回收A,B这两个对象(其对象内部相互循环引用),此时造成了内存泄漏,代码如下:public class ReferenceCountingGC

2020-12-22 17:59:54 70

原创 HTML5

HTMLHyper Text Markup Language超文本包括:文字、图片、音频、视频、动画初识HTML网页基本标签标题标签:<h1></h1>段落标签:<p></p>换行:<br>或<br/>水平线:<hr>或<hr/>粗体:<strong></strong>斜体:<em></em>特殊符号:空格:&nbsp;大于,大

2020-11-25 13:29:31 170

原创 网络编程

网络编程javaweb:网页编程 B/S网络编程:TCP/IP C/S要解决的问题如何准确地定位到网络地一台或者多台主机找到主机之后如何通信IP地址:Java中使用InetAddres表示IP地址唯一定位一台网络上计算机127.0.0.1:本机localhostip地址的分类:IPv4/IPv6IPv4:四个字节组成,0~255,42亿,30亿都在北美,亚洲4亿,2011年就用尽了IPv6:公网(互联网)-私网(局域网):192.168.xx

2020-11-25 13:17:43 100

原创 注解和反射

注解和反射[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zwso2Pgc-1606119420113)(C:\Users\sen\Desktop\笔记\Java笔记\image\image-20201118144415200.png)]注解(Annotation)什么是注解注解是放在Java源码的类、方法、参数前的一种特殊的“注释”。所有的注解都继承自java.lang.annotation.AnnotationJava注解分为三类:1.编译器使用的注解,S

2020-11-23 16:18:16 64

原创 线程的状态

线程的状态线程五大状态创建状态:使用Thread t = new Thread()创建一个新的线程就绪状态:当调用start()方法,线程立即进入就绪状态,但不意味着立即调度运行,需要等待cpu的调度运行状态:线程在运行状态时才真正执行线程体的代码块阻塞状态:线程在运行状态时,调用sleep,wait或同步锁定时,线程进入阻塞状态,代码不继续往下执行,需要等到阻塞状态解除后,重新进入就绪状态死亡状态:线程被干涉中断或者自然执行结束,就会进入死亡状态。一旦进入死亡状态,就不能再次启动线程

2020-11-23 11:18:58 68

原创 创建线程的方式

线程创建创建一个线程主要有以下几种方法:Thread:继承Thread类Runnable:实现Runnable接口Callable:实现Callable接口继承Thread类创建线程是将一个类声明为Thread的子类,这个子类应该重写Thread类的run方法,然后实例化这个子类对象并调用start方法。Thread类本质上是实现了Runnable接口的一个实例。public class TestThread extends Thread{ @Override

2020-11-23 11:17:15 74 1

原创 静态代理

静态代理静态代理要求:代理对象要和真实对象实现同一个接口代理对象要代理真实对象好处:代理对象可以做很多真实对象做不了的事情真实对象专注做自己的事情public class StaticProxy { public static void main(String[] args) { new WeddingCompany(new Person()).happyMarry(); // 线程代理与婚庆公司代理类似,也是一种静态代理,Thread实

2020-11-23 11:15:49 119 1

原创 Java集合框架

集合框架为什么要用集合而非数组:虽然数组是保存一组对象最有效的方式,但是数组具有固定尺寸,但在写程序时并不知道将需要多少个对象。而集合能够自动地调整自己的尺寸。打印数组时,必须使用Arrays.toString(),但是打印集合可以直接打印。创建集合对象如果使用泛型,那么默认可以存放所有Object对象使用泛型可以应用向上转型机制。Collection:一个独立元素的序列​ Collection接口包括以下方法:boolean add(E a);boolean addAll(Collec

2020-11-23 11:03:36 157 2

原创 Lambda表达式

Lambda表达式1.为什么使用lambda:避免匿名内部类定义过多,可以让代码更简洁,去掉一堆没有意义的代码,只留下核心的逻辑,实质属于函数式编程的概念。要理解lambda表达式前必须了解函数式接口。2.函数式接口:函数式接口(Functional Interface)指的是只包含唯一一个抽象方法的接口,比如熟悉的Runnable接口public interface Runnable{ public abstract void run();}对于函数式接口,都可以通过lambda表

2020-11-17 19:46:34 125 2

原创 Kendall tau距离

Kendall tau距离定义:Kendall tau距离衡量两个序列的相似性,距离越大,相似性越小。具体可用序列a调正次序变为序列b所花费的步骤数来量化。要求序列a和序列b的长度以及元素是一样的。如a={0,3,1,6,2,5,4}a=\{0, 3, 1, 6, 2, 5, 4\}a={0,3,1,6,2,5,4},b={1,0,3,6,4,2,5}b=\{1, 0, 3, 6, 4, 2, 5\}b={1,0,3,6,4,2,5},将a调整顺序化为b的距离首先为序列 aaa 定义一个基准,用序列

2020-10-08 16:34:04 1585 2

转载 根据题目给出的数据范围推断使用的算法类型

根据题目给出的数据范围推断使用的算法类型一般ACM或者笔试题的时间限制是1秒或2秒。在这种情况下,C++代码中的操作次数控制在 10710^7107为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:n≤30=> 指数级别, dfs+剪枝,状态压缩dpn≤100=> O(n3n^3n3),floyd,dpn≤1000=> O(n2n^2n2),O(n2lognn^2lognn2logn),dp,二分,朴素版Dijkstra,Bellman-Fordn≤1000

2020-06-30 13:51:38 318

空空如也

空空如也

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

TA关注的人

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