01 2021 档案
摘要:前言 java虚拟机在执行java程序的过程中会把它所管理的内存划分成若干个不同的数据区域。jdk8以后,大体的内存划分如下。 程序计数器 一块很小的内存空间,线程私有,存储当前线程下一条要运行的字节码指令的行号 执行引擎通过行程序计数器中的行号找到对应的字节码指令,然后将字节码翻译成对应的机器语言
阅读全文
摘要:转载地址:https://www.cnblogs.com/lagou/p/10552815.html Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解决方案。有人亲切的称之
阅读全文
摘要:该脚本扫描redis中所有的key,用于分析redis内存数据的key构成,扫描并保存文件,需要python支持redis模块。 #!/usr/bin/env python # -*- coding: utf-8 -*- #jack chen import os, sys, time import
阅读全文
摘要:文章目录 count(可空字段) count(非空字段)与count(主键 id) count(1) count(*) 性能对比结论 注:下面的讨论和结论是基于 InnoDB 引擎的。 首先要弄清楚 count() 的语义。count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 cou
阅读全文
摘要:解释器 shell脚本一般选择bash作为解释器,脚本开头应为 #!/bin/bash 或 #!/bin/sh 添加脚本版本和注释功能 在脚本的开头加注释,说明脚本作者、编写时间、脚本功能,最好可以加上脚本的版本号。shell中脚本注释用#,注释语句和#号之间有一个空格 #!/bin/bash #
阅读全文
摘要:工厂模式(Factory Design Pattern)可细分为三种,分别是简单工厂,工厂方法和抽象工厂,它们都是为了更好的创建对象。 所谓的“工厂”,就是用来将创建对象的代码封装起来,因为这部分代码将来变动的几率很大,所以这里的“工厂”的实质作用就是“封装变化”,以便于维护。 其中用到了“针对接口
阅读全文
摘要:swagger2 1、引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <depen
阅读全文
摘要:HashMap是现在用的最多的map,HashMap的源码可以说是面试必备技能,今天我们试着分析一下jdk1.7下的源码。 先说结论:数组加链表 一、先看整体的数据结构 首先我们注意到数据是存放在一个Entry<K,V>数组里面,默认大小16. public class HashMap<K,V> e
阅读全文
摘要:1、什么是斐波那契数? 斐波那契数,又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、…… 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契
阅读全文
摘要:1.原型和原型链的概念 js在创建一个对象时,比如叫 obj,都会给他偷偷的加上一个引用,这个引用指向的是一个对象,比如叫 yuanxing,这个对象可以给引用它的对象提供属性共享,比如:yuanxing上有个属性name,可以被 obj.name访问到,这个可以提供属性共享的对象,就称为前面对象的
阅读全文
摘要:1,使用继承 首先你可能想到用继承的方式来实现,所以我们编写了下面这个 Animal 类: abstract class Animal { public void run() { System.out.println("I can run."); } public void drinkWater()
阅读全文
摘要:1,一次购物流程 相信大家都在网上买过东西,我们以淘宝为例来介绍命令模式。 我们假设这样一个简单的场景: 淘宝网有很多商店,商店售卖各种各样的商品,顾客购买商品需要先在淘宝下订单。 一位顾客想在淘宝购买一部华为手机,他下了一个订单:“一部华为手机”。 淘宝网将该订单发送到华为商店。 华为商店将华为手
阅读全文
摘要:今天来介绍装饰者模式(Decorator Design Pattern)。 假设我们需要给一家火锅店设计一套结账系统,也就是统计顾客消费的总价格。怎样才能设计出一个好的系统呢? 1,结账系统需求分析 既然要设计一个结账系统,当然需要知道火锅店都有哪些食品及食品的价格,假如我们从火锅店老板那里得到以下
阅读全文
摘要:1,遍历集合元素 现在的高级语言(比如 C++,Java,Python 等)都支持很多种集合(比如 List,Map,Set 等),用于存储对象。 同时这些高级语言也都原生支持了迭代器,这使得遍历集合变得非常简单。 下面我们来看下,如果不使用迭代器,如何遍历集合。 以 Java ArrayList
阅读全文
摘要:一、简介 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去。 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot源码管中窥豹系列。 二、框架 我们先把springboot源码的框架了解清楚。 1、新建一个spri
阅读全文
摘要:启动项目tomcat报错 SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListeneror
阅读全文
摘要:#### 在项目中部署redis的读写分离架构(包含节点间认证口令) ##### 1、配置过程 1、此前就是已经将redis在系统中已经安装好了,redis utils目录下,有个redis_init_script脚本,将redis_init_script脚本拷贝到linux的/etc/init.d
阅读全文
摘要:#### 1、S_DOWN和O_DOWN ###### S_DOWN和O_DOWN两种宕机状态 (1)、S_DOWN是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机sdown达成的条件很简单,如果一个哨兵ping一个master,超过了is-master-down-afte
阅读全文
摘要:1.JAVA 的并发模型 共享内存模型 在共享内存的并发模型里面,线程之间共享程序的公共状态,线程之间通过读写内存中公共状态来进行隐式通信 该内存指的是主内存,实际上是物理内存的一小部分 2.JAVA 内存模型的抽象 2.1 java内存中哪些数据是线程安全的,哪些是非安全的 非线程安全 : 在 j
阅读全文
摘要:原子组件的实现原理CAS cas的底层实现可以看下之前写的一篇文章:详解锁原理,synchronized、volatile+cas底层实现 应用场景 可用来实现变量、状态在多线程下的原子性操作 可用于实现同步锁(ReentrantLock) 原子组件 原子组件的原子性操作是靠使用cas来自旋操作vo
阅读全文
摘要:SQL注入,是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。 SQL 注入一般发生在用户交互场景中,比如需要用户自已输入信息的输入
阅读全文
摘要:图注:思维导图 主从常见架构 随着日益增长的访问量,单台数据库的应接能力已经捉襟见肘。因此采用主库写数据,从库读数据这种将读写分离开的主从架构便随之衍生了出来。 在生产环境中,常见的主从架构有很多种,在这里给大家介绍几种比较常见的架构模式。 主从复制原理 了解了主从的基本架构及相关配置后,下面就要进
阅读全文
摘要:MySQL的逻辑架构大致可以分为三层: 第一层:处理客户端连接、授权认证,安全校验等。 第二层:服务器server层,负责对SQL解释、分析、优化、执行操作引擎等。 第三层:存储引擎,负责MySQL中数据的存储和提取。 我们要知道MySQL的服务器层是不管理事务的,事务是由存储引擎实现的,而MySQ
阅读全文
摘要:现象: tomcat安装好了,准备部署Web项目了,启动tomcat,发现没有反应。 虽然显示了Tomcat started。但是这个 started不等同于 success,当我们打开浏览器访问8080端口的时候,却发现我们的tomcat并没有被启动。 网上大多的教程都是教我们去查端口占用,或者是
阅读全文
摘要:1遇到问题 tomcat启动卡在[localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory ...不动了 2问题原因 的/ dev /随机产生速度过慢,运行一段时间之后,只输出了一条数据,然后就一直阻塞
阅读全文
摘要:1、简单工厂模式 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得bean
阅读全文
摘要:1、线程的创建与运行 (1)、继承或直接使用Thread类 继承Thread类创建线程: /** * 主类 */ public class ThreadTest { public static void main(String[] args) { //创建线程对象 My_Thread my_thre
阅读全文
摘要:一段时间以来,巨大数量的数据处理迫使所有的应用程序在数据库层前添加缓存策略。即使经典数据库进行了大量的下划线优化,仍然不能提供足够的速度和可用性。主要原因在于数据存储越远,获取数据就越困难。另一个原因是因为数据库中的数据通常保存在磁盘中,而不是在内存。经典数据库却是在内存上嵌入了缓存来优化,但是拥有
阅读全文
摘要:什么是反射? 反射就是Reflection,Java的反射是指程序在运行期可以拿到一个对象的所有信息。 反射是为了解决在运行期,对某个实例一无所知的情况下,如何调用其方法。 JAVA反射机制是在运行状态中,对于任何一个类,都能够知道这个类的所有属性和方法;对于任何一个对象,都能够调用它的任意方法和属
阅读全文
摘要:创建型模式、主要用于解决Java对象的创建问题 工厂模式 工厂模式的说明 在面向对象的编程中,继承和多态的概念实现了父类与子类之间的(is-A)关系 基于这种关系实现了子类的多态性,这种抽象的方式为子类提供了相同的操作并且支持子类的功能性拓展。但是出现了这样的问题? Verhicle verhicl
阅读全文
摘要:Redis是内存数据库,但是一旦服务器宕机,内存中的数据将会全部丢失。 最简单的恢复方式是从后端数据库恢复,但这种方式有两个问题: 频繁访问数据库,会给数据库带来巨大的压力; 从数据库中读取相比从Redis中读取要慢很多,会导致应用响应变慢 因此,Redis要实现持久化,避免从后端数据库中进行恢复。
阅读全文
摘要:交个朋友 拿人钱财替人干活儿,在不影响工作的前提下,想做到很高频率的更新很难,但是我也尽力输出,不能为了写而写,宁缺毋滥吧。 我的想法是这样的,接下来的一段时间专门写Spring框架。整体思路就是:入门知识 --> 实际应用 --> 构建简易Spring框架 --> 看一下核心模块源码,争取早日写完
阅读全文
摘要:在SQL Server中,数据类型datetimeoffset转换为datetime类型或datetime2类型时需要特别注意,有可能一不小心你可能会碰到下面这种情况。下面我们构造一个简单案例,模拟一下你们可能遇到的情况。 CREATE TABLE TEST ( ID INT IDENTITY(1,
阅读全文
摘要:【mybatis-plus】分页、逻辑删除 通过mybatis-plus实现分页,也是很简单,插件大法。 一、分页 1、配置分页插件 把分页的插件也配置到统一的配置类里: @Configuration // 配置扫描mapper的路径 @MapperScan("com.pingguo.mpdemo.
阅读全文
摘要:写代码喜欢用Map拼接返回去给前端,这样得到的也是一个标准的JSON,今天先不说Map的优缺点,我们就来说说JSONObject的使用,我用的是阿里的fastjson,先上代码,当我们需要嵌套代码的时候,看需求: 由于sessionData后面是{},所以后面的对象必须是一个JSONObject,如
阅读全文
摘要:这个问题一般会出现在稍微高端一点的 Java 面试环节。要求面试者不仅对 Java 基础知识熟悉,更重要的是要了解内存模型。 Java 对象模型# HotSpot JVM 使用名为 oops (Ordinary Object Pointers) 的数据结构来表示对象。这些 oops 等同于本地 C
阅读全文
摘要:Spring源码深度解析之Spring MVC Spring框架提供了构建Web应用程序的全功能MVC模块。通过策略接口,Spring框架是高度可配置的,而且支持多种视图技术,例如JavaServer pages(JSP)技术、Velocity、Tiles、iText和POI。Spring MVC框
阅读全文
摘要:集合 Collection单列集合有List 和 Set List集合有: ArrayList集合 特点: 1.存取有序 可以重复 有索引 2.底层是数组实现,查询快,增删慢 ArrayList底层: 1.ArrayList底层是一个数组 2.当初始化ArrayList,数组的长度为0 3.当第一次
阅读全文
摘要:环境准备 实验环境: JDK 1.8 SpringBoot 2.4.1 Maven 3.6.3 MySQL 5.7 因为我本地只有 MySQL 数据库,为了方便演示,我会在启动一个本地 MySQL,在 MySQL 创建两个数据库,每个库中均有一个表,以此进行演示。 数据准备 本地 MySQL 端口默
阅读全文
摘要:Shiro shiro是一个java的安全框架官网地址 http://shiro.apache.org/ 目录 Shiro Shiro综述 过滤器 注解 整合Shiro 1. 配置SecurityManager 2.实现Realm 3.配置LifecycleBeanPostProcessor 4.启
阅读全文
摘要:1. 问题场景我们在使用Redis的时候经常会将对象序列化存储到Redis中,在取出的时候进行反序列化,如果对象过大在进行序列化和反序列化的时候会有一定性能问题。今天查看了CSRedis源码发现在Set和Get的时候是支持Byte[]类型,那么问题来了如果我们将对象转换成Byte[]类型进行存储是否
阅读全文
摘要:1、Docker概述 docker实际上是一种规范,就像集装箱一样,不管要运算的东西是什么都要装在集装箱里面运输。这就是规范,这样的规范使得码头的装货卸货效率提升,也使得运输船舶、运输车辆的大小尺寸有了进一步的规范,从而使得在整个物流运输过程中的效率得到提升。 docker的镜像就是遵循这种规范的集
阅读全文
摘要:在编写SQL 语句时常常会用到 order by 进行排序,那么排序过程是什么样的?为什么有些排序执行比较快,有些排序执行很慢?又该如何去优化? 索引排序 索引排序指的是在通过索引查询时就完成了排序,从而不需要再单独进行排序,效率高。索引排序是通过联合索引实现的。因为联合索引是从最左边的列开始起按大
阅读全文
摘要:建表 // 建表CREATE TABLE IF NOT EXISTS staffs( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(24) NOT NULL DEFAULT "" COMMENT'姓名', age INT NOT NULL DEFAU
阅读全文
摘要:1、基本概念 1.1、SpringSpring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业
阅读全文
摘要:Java 开发人员肯定都知道 JDK 的 bin 目录下有许多小工具,这些小工具除了用于编译和运行 Java 程序外,打包、部署、签名、调试、监控、运维等各种场景都可能会见到它们的影子 本文主要介绍的是用于监视虚拟机运行状态和进行故障处理的工具,根据软件可用性和授权的不同,可以分成三类: 商业授权工
阅读全文
摘要:如果你是一名后台程序员开发,那么你一定或多或少的接触过事务。因为相对于高并发,且业务有一定复杂性的系统来说,事务是一定需要的,而且是必须的。他可以帮助我们将若干不同的子任务当成一个整体来完成,以保证整个业务的正确性。举个简单的例子:在七夕这天,你给你的女票发了一个520红包对于钱款转移的这个过程来说
阅读全文
摘要:Redis有三种集群模式,第一个就是主从模式,第二种“哨兵”模式,第三种是 Cluster 集群模式。 今天就和大家细细聊聊这三种模式。 主从复制 当其中一台服务器更新之后,服务器会自动的将这台更新的数据同步到另外一台服务器上。 通过持久化的功能,redis可以保证就算是服务宕机重启了,也只有少量的
阅读全文
摘要:Java的异常体系结构 Java异常体系的根类是 Throwable, 所以当写在java代码中写throw抛出异常时,后面跟的对象必然是Throwable或其子类的对象。其中Exception异常是指一些可以恢复的异常, 例如常见的NullPointerException空指针异常。Error指的
阅读全文
摘要:ORM 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。 —— [ 百度百科 ] 广义上
阅读全文
摘要:方法1: 用SET PASSWORD命令 首先登录MySQL。 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:mysql> set password for root@localhost = password('123'
阅读全文
摘要:这个就是流程,为了方便我接下来贴代码,把这一部分单独截下来了,上面那篇文章里面也有登录注册的代码。 1、首先是数据库,我数据库就一个user表,只有name和password两个字段,这里就不贴代码了。 2、接着是entity package com.jiang.entity; public cla
阅读全文
摘要:MySQL 'localhost' (10061)解决方法 MySQL 'localhost' (10061)解决方法首先检查MySQL 服务没有启动》如果没有启动,则要启动这个服务。昨天,重起服务器后出现MySQL 'localhost' (10061)错误,开始以为是因为数据库链接打开过多,数据
阅读全文
摘要:方法1: 用SET PASSWORD命令 首先登录MySQL。 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:mysql> set password for root@localhost = password('123'
阅读全文
摘要:首先到百度地图官网登录(没有账号的注册一个即可):http://lbsyun.baidu.com/ 登录之后点击右上角控制台创建应用获取密钥(ak) 这里因为我是javaweb项目就创建的浏览器端 创建成功之后即可获取我们的密钥(ak) 【这个ak之后会使用到~】 关于我们web端可以查看JavaS
阅读全文
摘要:a、Authentication:身份认证/登录,验证用户是不是拥有相应的身份; b、Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验 证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; c、Ses
阅读全文
摘要:a、Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要程序员自己编写 Sql 语句,不过 mybatis 可以通过 XML 或注解方式灵活配置要运行的 sql 语句,并将java 对象和 sql 语句映射生成最终执行的 sql,最后将 sql 执行
阅读全文
摘要:a、#{}是预编译处理,${}是字符串替换。 b、Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值; c、Mybatis 在处理${}时,就是把${}替换成变量的值。 d、使用#{}可以有效的防止 SQL 注入,提高
阅读全文
摘要:a、用户发送请求至前端控制器 DispatcherServlet。 b、DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。 c、处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 D
阅读全文
摘要:a、禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果 客户端把Javascript给禁止掉,这种方法就无效了。 b、Post/Redirect/Get模式。在提交后执行页面重定向,这就是所谓的Post-Redirect-G
阅读全文

浙公网安备 33010602011771号