Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

基本规则选择器的分类元素选择器 a{} 伪元素选择器 ::before{} 类选择器 .link{} 属性选择器 [type=radio]}{} 伪类选择器 :hover{} ID 选择器 #id{} 组合选择器 [type=checkbox] + lable{} 否定选择器 :not(.link){} 通用选择器 *{} 选择器的权重ID 选择器 +100 类 伪类 属...

Java 基础Java 编程基础知识(概述)Java 的数据类型Java 中共有八种基本数据类型,其中有 4 种整形、2 种浮点类型、1 种字符串类型和 1 种布尔类型。 整形整形用于表示没有小数位的数值,允许为复数。Java 共有四种整形。 类型 储存要求 取值范围 int 4 字节 -2147483648~2147483647 short 2 字节 -32768~3276...
note

计算机网络概论计算机网络的形成 1946 年,世界上第一台电子计算机 ENIAC 诞生,计算机与通信技术并没有直接联系。 20 世纪 50 年代初,由于美国军方的需要,美国国防部的高级研究计划署(ARPA)开始进行 ARPANET 研究 网络发展的四个阶段 第一阶段(20 世纪 50 年代以前):计算机与通信技术结合 第二阶段(20 世纪 50 年代~70 年代中期):ARPnet 与...
note

When allowCredentials is true, allowedOrigins cannot contain the special value “*“since that cannot be set on the “Access-Control-Allow-Origin” response header. To allow credentials to a set of origins, list them explicitly or consider using “allowedOriginPatterns” instead.

//      config.addAllowedOrigin("*");
        config.addAllowedOriginPattern("*");

Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching.

javamelody:
  advisor-auto-proxy-creator-enabled: false

关于开启事务处理可能会出现的问题

依赖类配置了 AOP 切面增强,比如是配置了事务自动管理的 Service 实现类,并且采用的是 JDK 动态代理实现方式。

在 Spring 中,AOP 增强后的 Proxy,是基于代理模式实现的(JDK 的动态代理)或子类继承(Cglib 方式)。

你定义了一个 Interface,写了一个 Impl1 实现 Interface,Impl1 的 Proxy 增强类 Spring 帮你‘生成’。生成的方式如果是 JDK 动态代理,那么生成的 Impl2 是 Interface 的实现,跟 Impl1 是并列关系,所以 Spring 的 Context 中并没有 Impl1 及它的子类,你@Autowire 按 Impl1 来就找不到 candidate 类了。

如果非要按实现类注入(不建议这么做),使用 Cglib 实现方式就可以了。

note

拉取镜像

docker pull webdevops/php-nginx
note

导入依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>
note

什么是视图

视图(view)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不存在数据库中真实存在,行和列数据来自定义视图的查询中使用的表,并且是在使用时动态生成的。

使用视图的优势

  • 简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的符合条件的结果集
  • 安全:使用视图的用户只能访问他们被允许查询的结果集,对应的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现
  • 数据独立:一单视图的结构确定了,可以屏蔽表结构变化对用户的影响、源表增加列队视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响

创建与修改视图

note

MySQL InnoDB 引擎特性

  1. 自增长列
  2. 外键约束
  3. 主键和索引

自增长列

数据自增

当向设置了自增长的列插入数据时如果插入值为 null 或 0 则会插入自增后的值,默认起始值为 1,当有数据时默认为当前列最大索引数+1

create table t1
(
    i    smallint not null auto_increment,
    name varchar(10),
    primary key (i)
);
insert into t1 (i, name)
values ( null
       , 'dudulu');
insert into t1 (i, name)
values ( 0
       , 'dudulud');
select * from t1;
mysql> select * from t1;
+---+---------+
| i | name    |
+---+---------+
| 1 | dudulu  |
| 2 | dudulud |
+---+---------+
2 rows in set (0.01 sec)

手动设置自增初始值

note

概念回顾

按值调用/值传递(call by value)

方法接收的是调用者提供的值

按引用调用/引用传递(call by reference)

方法接收的是调用者提供的变量地址

Java 是那种调用方式?

将引用做为值进行传递的按值引用。详见下例

note

ECMAScript 变量是松散类型的,意思是变量可以用于保存任何类型的数据。每个变量只不过是一个用于保存任意值的命名占位符。有 3 个关键字可以声明变量:var、const 和 let。其中,var 在 ECMAScript 的所有版本中都可以使用,而 const 和 let 只能在 ECMAScript 6 及更晚的版本中使用。

var

// 不初始化的情况下,变量会保存一个特殊值 undefined,
var message;
console.log(message);
message = "h1";
console.log(message);
// 执行到当前位置时,变量保存值的类型会发生改变
message = 100; // 合法,但不推荐

var 的作用域

使用 var 在一个函数内部定义一个变量,就意味着该变量将在函数退出时被销毁

function test() {
  var message = "hi"; // 局部变量
}
test();
console.log(message); // 报错:Uncaught ReferenceError: message is not defined
note