- 博客(38)
- 资源 (3)
- 收藏
- 关注
原创 一、jvm类加载
https://docs.oracle.com/javase/specs/jvms/se8/html/index.html加载:查找和导入class文件,通过一个类的全限定名获取定义此类的二进制字节流将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口链接验证:保证被加载类的正确性文件格式验证,元数据验证,字节码验证,符号引用验证准备:为类的静态变量分配内存,并将其初始
2021-03-18 22:58:04 92
原创 设计模式四:代理模式
静态代理:静态代理不需要接口,只是一个代理对象拿到了被代理对象的引用,有代理对象调用被代理对象而已。public class Father { private Son son; public Father(Son son) { this.son=son; } public void findSonLove(){ System.out.println("代理前-----------"); son.findLove
2020-12-22 14:57:40 85
原创 设计模式三:原型模式
原型模式:我们从数据库获取数据到DTO,从DTO传递给VO,这个时候需要将DTO层的数据全部copy到VO中,这种模式就是一种原型模式。copy的方式是克隆。案例:spring中的 scope='prototype’是一个原型模式,每次创建的时候都是一个新的对象,这个对象会取到原有对象的所有的值。浅克隆:public class Teacher implements Cloneable { @Override protected Object clone() throws C
2020-12-22 14:56:17 137
原创 设计模式二:单例模式
掌握单例模式的应用场景。掌握IDEA环境下的多线程调试方式。掌握保证线程安全的单例模式策略。掌握反射暴力攻击单例解决方案及原理分析。序列化破坏单例的原理及解决方案。掌握常见的单例模式写法。掌握原型模式的应用场景及常用写法。任何情况下只有一个实例,提供全局一个访问点。ServletContext、ServletConfig、BeanFactory、ApplicationContext、DBPool饿汉式单例:在初始话的时候直接new出来了,不需要在调用的时候去new,这样就避免了线程.
2020-12-22 14:54:52 97
原创 设计模式一:工厂模式
从简单的小作坊------》基本的工厂------》抽象工厂1、用户给一个值,工厂返回相应的public interface Milk { String getMilk();}public class MengNiu implements Milk { @Override public String getMilk() { return "蒙牛"; }}public class YiLi implements Milk { @Overr
2020-12-22 14:53:40 78
原创 设计原则三:接口隔离原则
接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使 用单一的总接口,客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时 应当注意一下几点:1、一个类对一类的依赖应该建立在最小的接口之上。2、建立单一接口,不要建立庞大臃肿的接口。3、尽量细化接口,接口中的方法尽量少(不是越少越好,一定要适度)。接口隔离原则符合我们常说的高内聚低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性。我们在设计接口的时候,要多花时间去思
2020-12-22 14:42:14 72
原创 设计原则二:开闭原则
开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对 扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调 的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开 闭原则,是面向对象设计中最基础的设计原则。它指导我们如何建立稳定灵活的系统, 例如:我们版本更新,我尽可能不修改源代码,但是可以增加新功能。在现实生活中对于开闭原则也有体现。比如,很多互联网公司都实行弹性制作息时间, 规定每天工作 8 小时。意思就是
2020-12-22 14:40:45 96
原创 设计原则一:单一职责
单一职责(Simple Responsibility Pinciple,SRP)是指不要存在多于一个导致类变更 的原因。假设我们有一个Class负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能会导致另一个职责的功能发生故障。这样一来,这个Class存在两个导致类变更的原因。如何解决这个问题呢?我们就要给两个职责分别用两个Class来实现,进行解耦。后期需求变更维护互不影响。这样的设计,可以降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险。总体来说就是一个Class
2020-12-22 14:39:12 82
原创 二、RabbitMQ消息模式
简单模式一个生产者P发送消息到队列Q,一个消费者C接收https://java-run-blog.oss-cn-zhangjiakou.aliyuncs.com/blog/u=3536793445,2882105203&fm=26&gp=0.gifpublic class Send { private final static String QUEUE_NAME = "hello"; public static void main(String[] argv) t
2020-12-22 10:54:51 107
转载 Spring ioc分析,以及编码实现
什么是IOC? 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传...
2018-08-07 16:28:35 233 1
转载 高级加密标准AES加密(Javascript实现)
高级加密标准(Advanced Encryption Standard,AES),是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。Rijndael加密算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿高级加密标准的甄选流程。(Rijda
2017-02-14 16:50:51 1437
原创 Springboot25 之搭建ehcache
那么我们先说说这一篇文章我们都会学到的技术点: Spring Data JPA,Spring Boot 使用Mysql,Spring MVC,EHCache,Spring Cache等 如下几个步骤: (1)新建Maven Java Project (2)在pom.xml中加入依赖包 (3)编写Spring Boot启动类; (4)配置application.properties; (
2017-02-14 16:13:06 332
原创 Spring Boot24 之 监控和管理生产环境
spring-boot-actuator模块提供了一个监控和管理生产环境的模块,可以使用http、jmx、ssh、telnet等拉管理和监控应用。审计(Auditing)、 健康(health)、数据采集(metrics gathering)会自动加入到应用里面。 首先,写一个最基本的spring boot项目。基于Maven的项目添加‘starter’依赖:<dependency> <
2017-02-14 16:11:01 246
原创 SpringBoot23 之 导入XML配置
1.新建一个maven工程 2.创建Springboot项目 3创建包 4创建ServiceSpring Boot理念就是零配置编程,但是如果绝对需要使用XML的配置,我们建议您仍旧从一个@Configuration类开始,你可以使用@ImportResouce注解加载XML配置文件,我拿一个例子来进行讲解:这个例子的大体步骤如下: (1)新建一个工程; (2)在App.java类编写H
2017-02-14 16:09:35 1162
原创 SpringBoot22 之banner控制
1.禁止Springboot 的banner输出 public static void main(String[] args){// SpringApplication.run(APP.class); SpringApplication application = new SpringApplication(APP.class); /*
2017-02-14 16:08:55 306
原创 SpringBoot 21 之改变自动扫描的包
1.新建一个包,我建立的是net.test.config 2.创建一个配置文件。这里我使用的是启动加载数据,其它同理。@Configurationpublic class MyCommandLineRunner1 implements CommandLineRunner { @Override public void run(String... args) throws Exc
2017-02-14 16:08:25 537
原创 SpringBoot20 之自定义Properties
自定义的properties文件 1.创建一个自定义文件,我在resource下创建的myapplication.properties osChina.name=hua osChina.gender=male2.创建一个实体类,与配置文件相对应@ConfigurationProperties(prefix = "osChina",locations = "classpath:myapplica
2017-02-14 16:07:57 164
原创 SpringBoot19 之环境变量读取和属性对象的绑定
凡是被Spring管理的类,实现接口 EnvironmentAware 重写方法 setEnvironment 可以在工程启动时, 获取到系 统环境变量和application配置文件中的变量。@Configurationpublic class MyEnvironmentAware implements EnvironmentAware { //注入application.proper
2017-02-14 16:06:21 256
原创 SpringBoot18 之 CommandLineRunner加载数据
实际应用中,我们会有在项目服务启动的时候就去加载一些数据或做一些事情这样的需求。 为了解决这样的问题,Spring Boot 为我们提供了一个方法,通过实现接口 CommandLineRunner 来实现。 @Componentpublic class MyStartupRunner1 implements CommandLineRunner { @Override publ
2017-02-14 16:05:12 293
原创 SpringBoot17 之Interceptor
实现自定义拦截器只需要3步: 1、创建我们自己的拦截器类并实现 HandlerInterceptor 接口。 2、创建一个Java类继承WebMvcConfigurerAdapter,并重写 addInterceptors 方法。 2、实例化我们自定义的拦截器,然后将对像手动添加到拦截器链中(在addInterceptors方法中添加)public class MyInterceptor
2017-02-14 16:04:06 427
原创 SpringBoot16 之 Listener and Filter
在Springboot的启动类上必须添加@ServletComponentScan这个标签,否则不会有效果 @ServletComponentScan作用就是扫描相应的Servlet包;1、创建一个myFilter类。实现Filter中的方法。/** * Created by hua on 2016/12/2. */@WebFilter(filterName="myFilter",urlPa
2017-02-14 15:59:20 198
原创 SpringBoot15 之 Servlet
由于有Controller、个人感觉Servlet就显得没有用处,所以在这里不详细去说明,只是简单介绍当使用Spring-Boot时,嵌入式Servlet容器通过扫描注解的方式注册Servlet、 Filter和Servlet规范的所有监听器(如HttpSessionListener监听器)。 Spring boot 的主 Servlet 为 DispatcherServlet,其默认的url
2017-02-14 15:58:40 192
原创 SpringBoot14 之JSP
1、加入依赖, 注意: provided这个标签在jstl和tomcat-embed-jasper中不要加入 否则访问的时候会出现404错误。这个标签provided表示,打包的时候不需要。<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</ar
2017-02-14 15:58:03 196
原创 Spring Boot 13 之freemarker
1、加入依赖 org.springframework.boot spring-boot-starter-freemarker 2、在application.properties下加入配置spring.freemarker.allow-request-override=false spring.freemarker.cache=true spring.freemarker.c
2017-02-14 15:56:40 266
原创 Spring Boot 12之 thymeleaf
整体步骤: (1) 在pom.xml中引入thymeleaf; (2) 如何关闭thymeleaf缓存 (3) 编写模板文件.html spring Boot默认就是使用thymeleaf模板引擎的,所以只需要在pom.xml加入依赖即可:1、 在pom.xml中引入thymeleaf; org.springfr
2017-02-14 15:56:12 280
原创 SpringBoot11 之Druid连接池
Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能。 业界把 Druid 和 HikariCP 做对比后,虽说 HikariCP 的性能比 Druid 高,但是因为 Druid 包括很多维度的统计和分析功能,所以这也是大家都选择使用它的原因。 下面来说明如何在 Spring Boot 中配置使用Druid1、添加Maven依赖 (或jar包)
2017-02-14 15:55:43 280
原创 SpringBoot10 之 定时器
创建一个定时器类@Configuration @EnableScheduling public class SchedulingConfig { @Scheduled(cron = “0/20 * * * * ?”) // 每20秒执行一次 public void scheduler() { System.out.println(“>>>>>>>>> Sch
2017-02-14 15:55:21 182
原创 SpringBoot09 之修改编译JDK版本
Spring Boot在编译的时候,是有默认JDK版本的,如果我们期望使用我们要的JDK版本的话,那么要怎么配置呢? 这个只需要修改pom.xml文件的 – 加入一个plugin即可。 maven-compiler-plugin 1.8 1.8
2017-02-14 15:54:51 8000
原创 Spring boot08 之修改application.properties
Spring boot默认是/ ,这样直接通过http://ip:port/就可以访问到index页面,如果要修改为 http://ip:port/path/ 访问的话, 那么需要在Application.properties文件中加入server.context-path = /你的path, 比如:spring-boot,那么访问地址就是http://ip:port/spring-boot
2017-02-14 15:54:20 316
原创 SpringBoot 07 之JPA使用
1、创建一个实体类 @Entity public class Demo { @Id @GeneratedValue private long id; private String name; public long getId() { return id; } public void setId(long id) {
2017-02-13 14:30:52 153
原创 SpringBoot 06之datasource - mysql
1.在pom.xml加入依赖 mysql mysql-connector-java 2、在application.properties中增加配置spring.datasource.url = jdbc:mysql://localhost:3306/springBootTest spring.datasource.username = root spring.datasourc
2017-02-13 14:30:03 315
原创 Spring Boot05 之全局异常捕捉
1.定义一个错误类GlobalDefaultExceptionHandler@ControllerAdvicepublic class GlobalDefaultExceptionHandler {@ExceptionHandler(value = Exception.class)public void defaultErrorHandler(HttpServletRequ
2017-02-10 17:45:40 208
原创 springBoot03 之热部署
在 pom文件中加入相应的依赖即可。热部署的方式1:org.springframework.bootspring-boot-devtools1.4.1.RELEASEtrueorg.springframework.bootspring-boot-maven-plugintrue热部署的方式2:org.springf
2017-02-10 17:43:09 169
原创 Spring Boot04 之 使用别的json解析
个人习惯于使用fastJson来解析com.alibabafastjson@RestController@RequestMapping("/demo")public class DemoController {@RequestMapping("/getFastJson")public String getFastJson(){Demo d
2017-02-10 17:41:17 1168
原创 springBoot02 之json返回
1.在之前的HelloWorld的基础之上进行简单的修改。我们新建一个包com.test.web 然后新建一个类HelloControoler, 然后修改App.java类,主要是的这个类就是一个单纯的启动类。@SpringBootApplication@ServletComponentScanpublic class App {public static void
2016-12-02 14:06:58 558
原创 springBoot01 之HelloWorld
1.创建一个maven项目。2. 在pom.xml中引入spring-boot-start-parent,spring官方的解释叫什么stater poms,它可以提供dependency management,也就是说依赖管理,引入以后在申明其它dependency的时候就不需要version了,后面可以看到。org.springframework.bootspr
2016-12-01 17:58:01 297
原创 centos中安装Mysql以及密码修改,远程访问。
https://my.oschina.net/huaForever/blog/781979(本人博客)
2016-11-04 21:02:31 202
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人