Hexo处理{{}}报错
初探数据库连接池
参考资料
为什么要使用连接池
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。 连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
认真搞清楚static, final, final static
static
为什么要用static?
有一些频繁使用的东西,如果你每次使用都重新new一下,那么这个开销可能会很高,如果使用static,一直放在内存中,那么想用就直接用,而不需要重新new一块空间初始化数据。那么static就是为了实现一个系统的缓存作用的,其生命周期直到应用程序退出结束。
这说明,static修饰的类成员,在程序运行过程中,只需要初始化一次即可,不会进行多次的初始化。static可以修饰:方法,属性,代码段,内部类(静态内部类或嵌套内部类)
主要有四种用法:
static成员变量
用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享
静态变量和非静态变量的区别是:
- 静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
- 非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static不允许用来修饰局部变量,只能修饰成员变量。
static方法
用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类
- 首先,在静态方法中不能访问类的非静态成员变量和非静态成员方法。
原因:非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在的东西当然会出错。 - 其次,即使没有显示地声明为static,类的构造器实际上也是静态方法。
static代码块
静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键
static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。
很多时候会将一些只需要进行一次的初始化操作都放在static代码块中进行。
一个Java文件从编码完成到最终执行,一般主要包括两个过程
- 编译
- 运行
编译,即把我们写好的java文件,通过javac命令编译成字节码,也就是我们常说的.class文件。
运行,则是把编译声称的.class文件交给Java虚拟机(JVM)执行。
而我们所说的类加载过程即是指JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程。
举个通俗点的例子来说,JVM在执行某段代码时,遇到了class A, 然而此时内存中并没有class A的相关信息,于是JVM就会到相应的class文件中去寻找class A的类信息,并加载进内存中,这就是我们所说的类加载过程。由此可见,JVM不是一开始就把所有的类都加载进内存中,而是只有第一次遇到某个需要运行的类时才会加载,且只加载一次。
东软睿道实训杂记
Introduction
- 内容:Java互联网架构基础知识
- 时间:2019.05-07 - 2019.07.05
- 背景:软件学院大三下学期9学分企业项目实训
1. Contents
- Day 1 - Day 3: MyBatis
- Day 4 - Day 5: Spring IoC
- Day 6 - Day 7: Spring AOP
- Day 8 - Day 12: Spring MVC
- Day 13 - Day 13: Springboot
- Day 14 - Day X: Team Project (First Part)
- Working…
2. Warning
⚠️受本人学识所限,本笔记项目的学习意义不大,更多地可作为同期课程同学对课堂知识的一个回顾即课程讲义。如果对您有帮助的话,烦请为我点一个Star😋
3. Contribution
欢迎各位大佬在本项目发起PR或在Issues里留言邀请您成为协作者,共同完善本文档
1 | git clone https://github.com/Raven98/Neuedu.git |
为了获得更优阅读体验,您可移步至我的博客:
东软睿道实训杂记
Day 1 - Day 3: MyBatis
本文内容很大程度地参考了官方文档,mybatis有中文版本的文档并且极其简洁,推荐阅读
1. 了解MyBatis
- 优秀的持久层框架
- 支持定制化 SQL、存储过程以及高级映射
- 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
- 使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录
0328-校招面试初体验&这一年
0327-记在葫芦实习的六个月
什么是模型?
什么是模型?
最近在上人工智能课程,总看到模型model一词。加之一月份又要参加2019年的数学建模美赛,所以对「模型」这个概念感到很好奇。和『大佬』这些词一样,都是上大学后才了解到的。
关于模型,摘抄原文如下:
A model can come in many shapes, sizes, and styles. It is important to emphasize that a model is not the real world but merely a human construct to help us better understand real world systems. In general all models have an information input, an information processor, and an output of expected results. Modeling Methodology for Physics Teachers (more info) (1998) provides an outline of generic model structure that is useful for geoscience instruction. In “Modeling the Environment” Andrew Ford gives a philosophical discussion of what models are and why they are useful. The first few paragraphs of Chapter 1 of Ford’s book are worth a look.
Key features in common with the development of any model is that:
- simplifying assumptions must be made;
- boundary conditions or initial conditions must be identified;
- the range of applicability of the model should be understood.
概括地来说,模型首先不局限于形式,有很多表达方式。它用来抽象现实世界的某一个方面。
模型有输入,处理机制和输出。我们要优化我们的处理机制以便让由输入得到的输出符合我们的期待。
有接触到的比如数模里的函数,AI课学习的「决策树」『minimax』等,模型有很多不同的表达形式。或许使用最多的还是函数。