- 博客(29)
- 收藏
- 关注
原创 Dubbo
Dubbo背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,急需一个治理系统确保架构有条不紊的演进。单一应用架构: 当网站流量很小时,只需一个应用,将索引功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。分布式服务架构: 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提升效率的方法之一是将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框
2022-01-06 15:35:17 202
原创 AOP与代理
Spring Aop源码阅读&循环依赖问题什么是AOP再软件行业,Aop为Aspect Oriented Programming的缩写,意为:面向切面编程AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生泛型作用:再不修改【目标类代码】的前提下,可以通过AOP技术去【增强目标类的功能】。通过【预编译方式】或者【运行期动态代理】实现程序功能的统一维护的一种技术对目标类进行无感知的功能增强。AOP是一种编程范式,隶属于软工范畴
2021-09-04 22:53:10 350
原创 设计模式理解
设计模式理解七大设计原则通过理解七大设计原则,来告诉程序员如何进行面向对象的设计开闭原则:对修改关闭,对扩展开放。一切都是为了保证代码的扩展性和复用性。而开闭原则是基础要求。单一职责原则:单类应该如何定义接口隔离原则:单接口应该如何定义依赖倒置原则:面向接口/抽象编程思维,再方法的返回值,参数类型等都室友接口或者抽象类,而不是使用实现类。里氏替换原则:如何去编写继承类的代码,子类不用去覆盖父类已经实现的方法(抽象模板方法)迪米特法则:最少认知原则,不要和陌生人说话,类与类之间要高内聚,
2021-09-04 08:51:26 239
原创 Spring循环依赖问题
Spring循环依赖问题什么是循环依赖循环依赖–>循环引用。 -->即2个或以上bean互相持有对方,最终形成闭环。eg:A依赖B,B依赖C,C又依赖A。注意:这里不是函数的循环调用,是个死循环,除非有终结条件,是对象相互依赖关系Spring中循环依赖的场景构造器的循环依赖这个Spring解决不了,只能调整配置文件,将构造函数注入方式改为属性注入方式。循环依赖示例:public class StudentA {private StudentB studentB ;//se
2021-09-03 22:28:33 103
原创 spring设计模式
设计模式OOA,OOD,OOP介绍OOA:面向对象分析,全称是Object Oriented Analysis.OOD:面向对象设计,全称是Object Oriented Design.OOP:面向对象编程,全称是Object Oriented Programming.OOA,OOD,OOP三个连在疫情就是面向对象分析,设计,编程(实现)正好是面向对象软件开发要经历的三个阶段面向对象编程中有俩个非常重要,非常基础的概念,那就是类(class)和对象(object)。理解面向对象编程的四
2021-08-29 00:26:08 262
原创 VOLATILE和队列
JUC并发编程JUC并发包API包介绍java.util.concurrent:并发与并行的不同?并行,如同,秒杀一样,多个线程访问同一个资源并行,一堆事情一块去做,如同一遍烧热水,一个拆方便面包装java.util.concurrent.atomicAtomicInteger原子性引用java.util.concurrentlocksLock接口ReentrantLock可重入锁ReadWriteLock读写锁JVM(Java Memory Model)
2021-08-27 20:54:15 330
原创 VOLATILE关键字和队列
JUC并发编程JUC并发包API包介绍java.util.concurrent:并发与并行的不同?并行,如同,秒杀一样,多个线程访问同一个资源并行,一堆事情一块去做,如同一遍烧热水,一个拆方便面包装java.util.concurrent.atomicAtomicInteger原子性引用java.util.concurrentlocksLock接口ReentrantLock可重入锁ReadWriteLock读写锁JVM(Java Memory Model)
2021-08-22 17:24:38 162
原创 直接内存、java虚拟机栈、本地方法栈、程序计数器、方法执行
直接内存、java虚拟机栈、本地方法栈、程序计数器、方法执行直接内存概述直接内存又叫堆外内存。它并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域。JDK1.4中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O方式,它可以使用native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在Ja
2021-08-14 22:00:32 522 1
原创 运行时数据区值方法区和字符串常量池
运行时数据区之方法区和字符串常量池一、运行时数据区概述1.JVM运行时数据区规范[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ilNcqrmT-1628493578073)(C:\Users\孤风\AppData\Local\Temp\WeChat Files\f242cfdb31d6edc52c2703def013e78.png)]按照线程使用情况和职责分成俩大类:线程独享(程序执行区域)不需要垃圾回收虚拟机栈、本地方法栈、程序计数器线程共享(数
2021-08-09 15:20:25 206
原创 算法设计==》
算法俩数之和算法设计与分析什么是算法?算法(algorithm)可以看作是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某 个值或值的集合作为输出。这样算法就是把输人转换成输出的计算步骤的一个序列。 我们也可以把算法看成是用于求解某类计算问题的工具,问题陈述说明了期望的输人和输出对应的 关系。算法则描述一个特定的计算过程来实现该输入/输出关系。如何学习算法?学习算法的三个步骤实现算法验证算法的正确性分析算法的运行时间前置知识1.数据结构的分类与选择数据结构是计
2021-08-06 16:45:27 208
原创 Class文件介绍
Class文件介绍1.Class文件都存了什么数据?Class文件字节码结构组织示意图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6i4Lquey-1628239418394)(C:\Users\孤风\AppData\Local\Temp\WeChat Files\f56d9bfd3953a51d6907839e62db027.png)]class常量池如何存储数据1.常量池的常量有哪些分为字面量和符号引用2.常量池的里面是怎么组织的?cp_info:常量池
2021-08-06 16:44:18 1230
原创 2021-08-02
特殊方法的方法名首先要明确一下, 这里的特殊方法是指的类的构造方法和类型初始化方法。构造方法就不用多说了, 至于类型的初始化方法, 对应到源码中就是静态初始化块。 也就是说,静态初始化块, 在class文件中是以一个方法表述的, 这个方法同样有方法描述符和方法名,具体如下:类的构造方法的方法名使用字符串 表示静态初始化方法的方法名使用字符串 表示。除了这俩种特殊的方法外,其他普通方法的方法名,喝源文件种的方法名相同。总结方法和字段的描述符中, 不包括字段名和方法名, 字段描述符中只包
2021-08-02 16:10:43 85
原创 JIT优化(二)
对象的栈上内存分配我们知道,在一般情况下,对象和数组元素的内存分配是在堆内存上进行的。但是随着JIT编译器的日渐成熟,很多优化使这种分配策略并不绝对。JIT编译器就可以在编译期间根据逃逸分析的结果,来决定是否可以将对象的内存分配从堆转化为栈。public class EscapeAnalysisTest {public static void main(String[] args) {long a1 = System.currentTimeMillis();for (int i = 0; i
2021-08-02 14:31:24 194
原创 JIT即时编译器
热点代码:方法被频繁调用N次,N----1500(client)/10000(server)循环体被循环N次JIT编译是以整个方法为单位去进行编译,编成机器码如何去记录方法调用次数和循环体的循环次数呢?基于计数器:方法调用计数器:在方法对象种去存储调用次数回边计数器: 每一次循环回去都会记录一次次数。热点检测方式要知道方法或一段代码是不是热点代码,是不是需要触发即时编译,需要进行Hot Spot Detection(热点探测)目前主要的热点弹出方式有以下俩种:基于采样的热点
2021-07-31 18:11:10 148
原创 数据结构与算法(java)
1.稀疏数组五子棋问题: 二维数组的很多值默认是0,因此记录了很大没有意义的数据->稀疏数组 稀疏数组的处理方法是: 1)记录数组一共有几行几列,有多少个不同的值 2)把具有不同值的元素的行列及值记录再一个小规模的数组中从而缩小程序的规模稀疏数组转换思路的分析应用实例使用稀疏数组,来保留类似好多0的二维数组(棋盘,地图等)2)把稀疏数组存盘,并且可以从新回否原来的二维数组数1.遍历 原始的二维数组,得到要保存的有效数据的个数sum2.根据sum就可以创建稀疏数组sparse
2021-01-27 21:14:14 114
原创 SpringSecurity(安全)
再web开发中,安全第一位! 过滤器,拦截器~功能性需求:否做网站:安全应该再什么时候考虑? 设计之初* 漏洞,隐私泄露等等 * 架构一旦确定!shiro,springSevurity:很像,除了类不一样,名字不一样;认证,授权(vip1,vip2,vip3)功能权限访问权限菜单权限拦截器,过滤器:大量的原生代码~环境(springsecurity)package com.zsy.controller;import org.springframework.stereot
2020-11-15 12:13:19 156
原创 多线程
继承Thread不建议使用:避免OOP单继承局限性package demo;//线程开启不一定立即执行,由cpu调度执行public class TestThread01 extends Thread{ @Override public void run(){ //run方法线程体 for(int i = 0;i < 20;i++){ System.out.println("看代码"); } }
2020-11-08 15:36:28 68
原创 注解和反射
注解JDK5.0开始引入,可以被其他程序编译,注解不是必须的Annotation的作用:不是程序本身,可以对程序做出解释。可以被其他程序读取Annotation的格式:注解是以@注释名 再代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked");Annotation再哪里使用?可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,可以通过反射机制编程实现对这些元数据的访问。jav
2020-11-05 21:56:41 97
原创 MySQL数据库专项复习
1.关系数据库分类关系->以二维表格形式组织数据关系(excel表格)ORACLEDB2SQLserverMYSQL2.SQL定义sql->结果化查询语言 structured query languagesql是在数据库上执行一系列数据操作的标准语言3.MySQL的登陆与退出1.MySQL登陆(登入本届电脑中数据库)mysql -u root -p其中: a)mysql指令为一个mysql的客户端程序b)-u表示用户选项c)-p 表示密码选项2)MySQ
2020-07-28 08:48:29 437 1
原创 Linux项目环境搭建
1.安装JDK1.1打包及解压命令tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩.一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成name.tar.gz的文件.-c 创建一个新的tar文件-v 显示运行过程的信息-f 指定文件名-z 调用gzip压缩命令进行压缩-t 查看压缩文件的内容-x 解开tar文件tar -cvf n.tar ./* 压缩当前目录下的所有文件和目录,文件名为n.tartar -x
2020-07-23 12:18:38 209
原创 Nginx负载均衡策略
1.什么是负载均衡说明:在分布式条件下,为了提高用户请求的响应能力,准备多台服务器,一起抗击高并发,需要用户通过同一个网址访问不同服务器的技术称之为负载均衡。2.准备多台tomcat服务器## **规划说明**准备3台tomcat服务器,并且端口号依次为8081/8082/8083,之后完成项目Windows部署。## 编辑MsgController@RestControllerpublic class MsgController{ @Value("${server.port}")`
2020-07-23 10:35:51 390
原创 HTML表格标签
在网页中插入一个3*3的表格<h1>在网页中插入一个3*3的表格</h1><table><!-- 用于在网页中定义一个表格 --> <tr><!-- 用于定义一个表格行 --> <th>表头1</th> <th>表头2</th> <th>表头3</th> </tr> <tr
2020-05-23 22:08:28 95
原创 c3p0数据库设置连接数据库的基本信息
(1)方式一:(不推荐) 直接将参数通过 pool.setXxx方法设置给c3p0程序这种方式直接将参数写死在了程序中,后期一旦参数发生变化,就要修改程序,要重新编译项目、重新发布项目,非常麻烦。`//设置连接数据库的基本信息pool.setDriverClass( "com.mysql.jdbc.Driver" );pool.setJdbcUrl( "jdbc:mysql:///jt_db?characterEncoding=utf-8" );pool.setUser( "root" );po
2020-05-21 22:23:10 246
原创 在java中如何实现mysql数据库的增删改查
**这篇文章只是介绍了怎么用jdbc进行增删改查mysql数据库操作**1、新增:往account表中添加一个名称为john、money为3500的记录/* 1、新增:往account表中添加一个名称为john、money为3500的记录 */@Testpublic void testInsert() { Connection conn = null; Statement stat = null; ResultSet rs = null; try { //注册驱动并获取连接 co
2020-05-21 21:38:05 716
原创 JDBC资源正确释放
rs.close();stat.close();conn.close();此处释放资源必须按照一定的顺序释放,越晚获取的越先关闭。所以先关闭rs对象,再关闭stat对象,最后关闭conn对象。另,为了避免上面的程序抛出异常,释放资源的代码不会执行,应该把释放资源的代码放在finally块中.try{ ...}catch(Exception e){ ...}finally{ if (rs != null) { try { rs.close();
2020-05-21 21:30:11 1329
原创 jdbc技术访问数据库
用jdbc连接数据库需要先下载个jar包:下载连接请参考这篇文章现在项目中创建一个lib文件用来存放jar包,然后话不多说上代码:public class Centos7jdbctext { public static void main(String[] args) throws Exception { //1.获取驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获取数据库连接 Connection conn = DriverManag
2020-05-14 15:34:16 153
原创 Centos下载mysql数据库及开端口
1.下载并安装MySQL官方的 Yum Repository输入指令:wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm #j记住这里面的wget后面是有空格的,还有57前面是小写的L,不是数字1,7前面的也是L不是1使用上面的命令就可以安装了如果,出现下面的情况就是没有wget指令,需要用yum install wget进行下载之后就可以安装MySQL服务器了yum -y install
2020-05-14 12:29:30 496
原创 VMware安装以及CentOS7.6桥接网络配置*
一、安装钱准备:VMware14.0安装破解请参考百度[CentOS7.6 64为镜像下载链接](http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso)二、在VMware,点击文件选择新建虚拟机1。打开VMware,点击文件,选中新建虚拟机,然后选中自定义,如果选中典型其实也可以,就是少了一些自定义的乐趣。下一步就行点击开启虚拟机,进行安装系统到这里就该
2020-05-13 21:21:12 347
原创 JAVA学习
一、数据类型1.int型:32位;只能输入整数,如果非整数会报错:(取值范围-21多亿~21多亿)例如:int a=10;2.double型:64位;浮点型(双精度数据类型);可以输入小数,整数,例如:double b=21.0;(取值范围4.9E-324~1.7976931348623157E308)3.char型:直能有一个字符,并且要用单引号标上;例如:char x=‘a’;由于a在u...
2020-02-15 16:12:55 162
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人