- 博客(35)
- 收藏
- 关注
原创 Spring中用到的设计模式
Spring中用到的设计模式:控制反转(IoC)和依赖注入(DI)IoC(Inversion of Control,控制翻转) 是Spring 中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。它的主要目的是借助于“第三方”(Spring 中的 IOC 容器) 实现具有依赖关系的对象之间的解耦(IOC容易管理对象,你只管使用即可),从而降低代码之间的耦合度。IOC 是一个原则,而不是一个模式,以下模式(但不限于)实现了IoC原则。Spring IOC 容器就像是一个工厂一样,当我们需
2020-07-16 21:43:40
257
原创 网络编程
一、 网络编程基础计算机网络概念:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。计算机网络的主要功能资源共享信息传输与集中处理均衡负荷与分布处理综合信息服务(www / 综合业务数字网络 ISDN)计算机网络三高问题: 高并发,高性能,高可用。计算机网络分类局域网城域网广域网互联网二、网络通信协议及接口网络通信协议计算机网络中实现通信必须有一些约定,即
2020-07-16 20:51:01
386
原创 UML类图
从一个示例开始车的类图结构为,表示车是一个抽象类;它有两个继承类:小汽车和自行车;他们之间的关系为实现关系,使用带空心箭头的虚线表示;小汽车和SUV之间是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;小汽车和发动机是组合关系,使用带实心箭头的实现表示;学生和班级之间是聚合关系,使用带空心箭头的实线表示;学生与身份证之间是关联关系,使用一根实线表示;学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示。类之间的关系泛化关系继承关系为is-a的关系:两个
2020-07-16 16:36:08
875
原创 数据结构-Map
MapMap是“原生”接口,没有继承任何接口。源码分析其内部有一个内部接口:Entry,用于操作Map集合中的key,因为Map集合没有继承Iterator接口,自己无法遍历集合中所有的元素,所以将所有的key封装到Set集合中进行遍历。package java.util; public interface Map<K,V> { // 集合大小 int size(); // 判断集合是否为空 boolean isEmpty(); //
2020-07-16 15:45:42
1689
原创 MyBatis常见面试题汇总
1. 什么是MyBatisMyBatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不用花费精力去处理加载驱动、创建连接、创建statement(Java执行数据库操作的一个重要接口)等繁杂的过程,程序员直接编写原生态SQL,可以严格控制SQL执行性能,灵活度高。MyBatis可以使用xml或注解来配置和映射原生信息,将POJO映射成数据库中的记录,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集;通过xml文件或注解的方式将要执行的各种stat
2020-07-10 21:59:31
305
转载 dd大牛的《背包九讲》
P01: 01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}。这个方程非常重要,基本上所有跟背包相关的问题的方
2020-07-10 21:57:50
132
原创 Spring Boot知识点详解
概述什么是Spring BootSpring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,方便开发者快速上手。优点容易上手,提升开发效率,为 Spring 开发提供一个更快、更广泛的入门体验。开箱即用,远离繁琐的配置。提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。没有代码生成,也不需要XML配置。避免大量的 Maven 导入
2020-07-10 17:17:29
483
原创 Spring要点汇总
title: Spring核心知识点date: 2020-07-09 19:33:10tags: Springcategories:[Spring框架,Spring]Spring概述什么是SpringSpring是一个轻量级的Java开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题,简化Java开发,其设计理念是通过IoC容器实现对象耦合关系的管理,从而实现解耦。Spring的优缺点优点:方便解耦,简化开发(将所有对象的创建和依赖关系的维护交给Spring.
2020-07-10 09:44:22
131
原创 架构设计&分布式
架构设计GoF的23种设计模式创建型:单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。工厂方法(Factory Method)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。建造者(Builder)模式
2020-07-07 20:17:46
198
原创 RPC框架
RPC简介RPC(Remote Procedure Call):远程过程调用,它是一种通过网路从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。RPC是一种技术思想而非一种规范或协议,常见的RPC技术和框架有:应用级的服务框架:Dubbo,Spring Boot/Spring Cloud,Google gRPC远程通信协议:RMI,Socket,REST(HTTP JSON)通信框架:Netty和MINA完整的RPC框架其中“RPC协议”就指明了程序如何进行网络传输和序列化。
2020-07-02 16:25:19
114
原创 Java虚拟机
Java内存区域JVM的主要组成部分及作用JVM主要由四个部分组成:1. 类加载器(ClassLoader)2. 运行时数据区(Runtime Data Area)3. 执行引擎(Execution Engine)4. 本地库接口(Native Interface)各组件的作用:首先通过编译器把 Java 代码转换成字节码,类加载器(ClassLoader)再把字节码加载到内存中,将其放在运行时数据区(Runtime data area)的方法区内,而字节码文件只是 JVM 的一套指令集规
2020-07-01 20:25:05
199
原创 Java并发编程
基础知识创建线程的4种方式线程的状态和基本操作并发理论Java内存模型as-if-serial规则和happens-before规则并发关键字synchronizedvolatilefinalLock体系Lock简介AQSReentrantLock读写锁ConditionLockSupport并发容器ConcurrentHashMapCopyOnWriteArrayListThreadLocalBlockingQueueConcurrentLinkedQueue
2020-06-30 15:04:43
272
1
Java异常扫盲
Java异常架构Java异常处理捕获异常(try-catch)如果知道如何处理该异常,就通过try…catch…来捕获异常,根据不同的异常进行不同的处理。声明异常(throws,必须处理)如果不知道如何处理该异常,可以将该异常继续传递下去,此时可以在该异常出现的方法签名处使用throws关键字来声明可能抛出的异常。注意:非受检异常(Error,RuntimeException或它们的子类)不可使用throws关键字来声明要抛出的异常;受检查异常:要么用 try … catch… 捕获,要
2020-06-28 16:55:08
98
原创 Java集合容器扫盲
集合容器概述集合和数组的区别数组的长度是固定的;集合是可变长的;数组中可以存储基本数据类型,也可以存储区引用数据类型;集合只能存储引用数据类型数组存储的元素必须是同一个数据类型;集合存储的对象可以是不同数据类型集合框架底层数据结构CollectionListArrayList:Object数组Vector:Object数组LinkedList:双向循环链表SetHashSet(无序,唯一):基于HsshMap实现,底层采用HashMap来保存元素LinkedHashSet
2020-06-28 16:54:51
122
原创 Java基础扫盲
Java概述1. JVM、JRE和JDK的关系JVMJava Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。JREJava Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包如果想要运行一个开发好的Java程序,计
2020-06-27 01:40:19
222
原创 谷粒商城Day9
1. 环境配置在opt目录下新建es文件夹上传ElasticSearch所需的安装包,并给予权限修改配置文件root@yyj-virtual-machine:/opt/es/elasticsearch-6.3.1/config# vi jvm.options这里我是维持的1g。给config下的文件权限Chmod 777 -R elasticsearch-6.3.1elasticSearch.yml中配置es的host地址(配成本机地址,允许访问)启动后会报错,配置太低。解决
2020-06-26 14:42:05
216
原创 谷粒商城-Day08
Redis的分布式工具框架RedissonRedisson实现了juc的lock锁,并且可以在分布式的redis环境下使用;任务:完成Redis抗压测试压力测试代码@Controllerpublic class RedissonController { @Autowired RedisUtil redisUtil; @Autowired RedissonClient redissonClient; @RequestMapping("testRediss
2020-06-26 14:41:40
139
原创 Tomcat系统架构分析
Tomcat顶层架构Server:代表整个服务器,控制整个Tomcat的生命周期;Service:用于对外提供服务;Connector:用于处理连接相关的事情,并提供Socket与Request和Response相关的转化;Container:用于封装和管理Servlet,以及具体处理Request请求。关系:一个Tomcat只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以
2020-06-24 22:00:53
102
原创 谷粒商城-Day07
复习商品详情页的数据结构:pms_sku_infopms_sku_image销售属性集合:pms_product_sale_attrpms_product_sale_attr_valuepms_sku_sale_attr_valueSELECT sa.*, sav.*,IF (ssav.sku_id, 1, 0) AS isCheckedFROM pms_product_sale_attr saINNER JOIN pms_product_sale_attr_value sav O
2020-06-23 22:00:32
412
原创 Shio-核心
1、认证验证Subjects第一步:收集用户身份和证明第二步:提交身份和证明第三步:处理成功或失败Remembered vs. AuthenticatedLogging Out 退出登录认证序列Realm 验证的顺序2、授权授权要素权限(permissions)角色(roles)用户(users)授权对象授权序列权限(permissions)通配符的权限检查权限3、Realms4、Session Management使用SessionsSessionManager
2020-06-23 01:22:12
663
原创 谷粒商城-Day06
商品详情的介绍前台与后台的区别:前台页面更丰富,服务于消费者用户,前台系统压力更大,多用缓存负载均衡,数据的一致性;后台页面更专业,后台管理人员或商家,后台系统压力更小,后台系统直连数据库,前后台数据不一致,有的允许,有的不允许。提交订单会进行强一致性校验,如果价格发生变更,库存数量变化,不会直接提交请求。前后台联系:数据结构是同一套,后台的一些设置可以控制前台系统的运行方式,如果在促销节前将一些用户信息提前放入缓存中;前台系统中包含的业务功能首页(静态化,快速访问)检索页(搜索引擎)
2020-06-22 21:27:44
181
原创 使用UDP广播事件
本文主要内容:UDP概述一个广播应用程序示例UDP的基础知识面向连接的传输(如TCP)管理了两个网络端点之间的连接的建立,在连接的生命周期内的有序和可靠的消息传输,以及最后连接的有序终止。类似于UDP这样的无连接协议中,并没有持久化连接这样的概念,并且每个消息(一个UDP数据报)都是一个单独的传输单元。UDP广播UDP提供了向多个接收者发送消息的额外传输模式:多播:传播到一个预定义的主机组广播:传输到网络上的所有主机UDP示例应用程序发布/订阅模式:一个生产者或者服务发布事件,而多.
2020-06-22 01:21:17
1097
原创 谷粒商城-Day05
1.测试fastdfs在opt目录下新建一个图片文件,我这里是timg.jpg执行root@yyj-virtual-machine:/opt# /usr/bin/fdfs_test /etc/fdfs/client.conf upload timg.jpg出现下面的语句说明操作成功:进入/opt/fastdfs/data/00/00/路径下,执行ls:说明文件确实上传成功了。因为fastdfs本身不是http服务器,所以无法处理http协议的web请求,因此上面两个url直接在浏览器上访
2020-06-22 01:18:37
132
原创 谷粒商城-Day04
数据结构的复习spu和sku的概念spu:标准的商品单元(standard product unit),XX系列sku:存库存储单元,单位为件,台,部,盒(stock keep unit)spu和sku之间的关系从范围上来说spu包含sku,spu表和sku表是一对多的关系什么是平台属性,有哪些相关的表平台属性和平台属性值是由平台指定的,主要用于商品的检索,每个三级分类下的属性值都不同。每个商品对应的每种属性都有对应的属性值。由两张表组成:pms_base_attr_info(平台属性
2020-06-21 00:43:19
146
原创 shiro系列-1.总览
1 介绍什么是shiro?Apache Shiro是一个功能强大、灵活的,开源的安全框架。它可以干净利落地处理身份验证、授权、企业会话管理和加密。shiro能做什么?验证身份用户访问权限控制,比如:判断用户是否分配了一定的安全角色;判断用户是否被授予完成某个操作的权限;在非 web 或 EJB 容器的环境下可以任意使用Session API可以响应认证、访问控制、或者Session生命周期中发生的事件可以将一个或以上的用户安全数据源数据整合成一个复合的用户“view”(视图)支
2020-06-21 00:25:53
206
原创 深入分析Java Web技术内幕-6 Servlet工作原理解析
带着如下问题学习本文内容:1、以Tomcat为例,说说Servlet容器是如何工作的;2、一个Web工程是如何在Servlet容器中启动的;3、Servlet容器是如何解析你的web.xml中定义的Servlet;4、用户的请求是如何被分配给指定的Servlet的;5、Servlet容器是如何管理Servlet生命周期的;6、Servlet的API类层次结构,以及如何分析Servlet中的一些难点问题;1 Servlet容器Servlet容器作为一个独立发展的标准化产品,其存在的意义是为.
2020-06-17 23:53:19
156
原创 JVM内存管理
1 物理内存与虚拟内存物理内存就是RAM(随机存储器),还有一个存储单元叫做寄存器,连接处理器和RAM或者寄存器的是地址总线,这个地址总线的宽度影响了物理地址的索引范围,同时也决定了处理器最大可以寻址的地址空间。除了硬件程序或者驱动程序需要直接访问存储器外,大部分情况下都是通过操作系统提供的接口来访问内存,在java中甚至不需要写和内存相关的代码。我们要运行程序,都要向操作系统先申请内存地址,每个进程拥有一段独立的地址空间,操作系统也会保证每个进程只能访问自己的内存空间。虚拟内存的出现使得多个进程
2020-06-14 23:28:49
662
原创 谷粒商城-Day03
1.pms商品管理系统的介绍首先明确两个概念:SKU和SPUSKU:Stock Keeping Unit(库存量单元),即库存进出计量的单位, 可以是以件、盒、托盘等为单位。SPU(Standard Product Unit):标准化产品单元。是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。2. pms商品的数据结构的划分1 sku的结构 pms_sku_2 spu的结构 pms_spu_3类目的结构 pms_catalog_4属性的结构
2020-06-14 21:12:53
207
原创 谷粒商城Day-02
1.gmall-parent父依赖的创建1.1 用maven创建一个gmall-parent的工程1.2 新建其他项目模块(子项目)的时候,继承自gmall-parent1.3 gmall-parent中父依赖使用SpringBoot2.2.7,并打包成pom文件 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot
2020-06-14 10:38:12
357
1
原创 深入分析Java Web技术内幕-3.深入分析Java Web中的中文编码问题
1 几种常见的编码格式为什么要编码在计算机中存储信息的最小单元是1个字节(8bit),所以能表示的字符范围是0-255个。人类要表达的字符太多,无法用1个字节完全表示。要解决这个问题需要使用新的数据结构char,从char到byte必须编码。编码格式ASCII码:共128个,用一个字节的低7位表示,0-31控制字符,32-126打印字符。ISO-8859-1:拓展自ASCII码,覆盖大多数西欧语言字符,单字节编码,共能表示256个字节。GB2312:双字节编码,包含6763个汉字。GBK:拓展
2020-06-11 21:25:23
167
原创 深入分析Java Web技术内幕-2.深入分析Java I/O的工作机制
1 Java的I/O类库的基本架构1.基于字节操作的I/O接口:InputStream和OutputStream2.基于字符操作的I/O接口:Reader和Writer3.基于磁盘操作的I/O接口:File4.基于网络操作的I/O接口:Socket前两者是数据传输格式,后两者是数据传输方式,数据传输格式与数据传输方式是影响效率的最关键因素。基于字节的I/O操作接口InputStream和OutPutStream的类层次结构:有两点注意事项:1.操作数据的方式是可以组合使用的,即装饰者模
2020-06-11 19:45:08
165
原创 谷粒商城Day01
1.准备工作1.1 准备git在GitHub上新建一个仓库:复制仓库地址后来到IDEA页面;记得检查JDK、MAVEN的配置是否正确:如果弹出提示框如下,问你是否要自动提交某些文件,请一律选NO,且不再提醒。否则系统会自动提交一些不必要的文件。...
2020-06-07 21:34:17
202
原创 6-Redis-Redis集群
title: 6. Redis–Redis集群date: 2020-06-06 12:47:58tags: Rediscategories:[数据库,Redis]之前我们所学习的都是 Redis 的单机版,我们知道 Redis 之所以读取速度快是因为它是存储在内存中的。内存的容量是有限的,单台 Redis 会碰到性能瓶颈,这就需要使用 Redis集群(Redis-cluster)。一、集群原理1.1 集群架构如上图所示,每一个蓝色圆圈就是一个 Redis 节点,这些节点组成了一个 .
2020-06-06 13:57:43
118
原创 Spring Security学习笔记
1.特点# 1.1认证方式如果用户没有设置密码,则系统会自动生成一个密码在控制台打印。参考UserDetailsServiceAutoConfiguration类中这段代码:package org.springframework.boot.autoconfigure.security.servlet;private String getOrDeducePassword(User user, PasswordEncoder encoder) { String password =
2020-05-17 22:47:38
1086
转载 QT之qt4.8.6安装(详细教程)
QT之qt4.8.6安装(详细教程)2018年06月21日 09:23:33 小师兄. 阅读数 7219简介Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址:http://www.qt.io/也可以访问Qt项目域名:http://qt-project.org/Qt本身支持众多操作系统。从通用操作系统Linux、Windows,到手机系统An...
2019-06-24 09:52:47
1074
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人