spring引论
Spring引论
核心概念
代码书写现状
耦合度太高(应该是低耦合)
12345678910111213141516// 业务层public class BookService implements BookService { // 导致耦合度高 private BookDao bookDao = new BookDaoImpl1(); public void save() { bookDao.save(); }}// 数据层public class BookDaoImpl1 implements BookDao { public void save() { System.out.println("book dao save...") }}
如果数据层发生改变(换成别的),则业务层也需要重新变动、编译、测试、部署、发布。
解决方案
使用对象时,在程序中不要主动使用new 产生对象,转换为由外部提供对 ...
vite配置mockjs
Vite2 配置mockjs
仓库地址 https://github.com/vbenjs/vite-plugin-mock
安装前置依赖
123npm i mockjs -Snpm i vite-plugin-mock -Dnpm i cross-env -D
package.json配置script > dev
1"dev": "cross-env NODE_ENV=development vite"
vite.config.ts
123import { viteMockServe } from 'vite-plugin-mock'plugins: [vue(),viteMockServe({mockPath: './mock'})],
1supportTs: true`是否用了ts,可以根据自己选择`true` or `false`
代码
在与node_modules同级目录建立mock目录
目录下建立mock文件 user.ts
123456789101 ...
python正则表达式
使用正则表达式
正则表达式相关知识
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具,换句话说正则表达式是一种工具,它定义了字符串的匹配模式(如何检查一个字符串是否有跟某种模式匹配的部分或者从一个字符串中将与模式匹配的部分提取出来或者替换掉)。如果你在Windows操作系统中使用过文件查找并且在指定文件名时使用过通配符(*和?),那么正则表达式也是与之类似的用来进行文本匹配的工具,只不过比起通配符正则表达式更强大,它能更精确地描述你的需求(当然你付出的代价是书写一个正则表达式比打出一个通配符要复杂得多,要知道任何给你带来好处的东西都是有代价的,就如同学习一门编程语言一样),比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串(像028-12345678或0813-7654321),这不就是国内的座机号码吗。最初计算机是为了做数学运算而诞生的,处理的信息基本上都是数值,而今天我们在日常工作中处理的信息基本上都是文本数据,我们希望计算机能够识别和处理符合某 ...
python语法糖
Python语法糖
if…else三元表达式
可以简化分支判断语句
1x = y.lower() if isinstance(y, str) else y
列表生成式
是一个用来生成列表的特定语法形式的表达式
1[exp for iter_var in iterable]
相当于
123L = []for iter_var in iterable: L.append(exp)
带过滤功能
1[exp for iter_var in iterable if_exp]
相当于
1234L = []for iter_var in iterable: if_exp: L.append(exp)
循环嵌套
1[exp for iter_var_A in iterable_A for iter_var_B in iterable_B]
相当于
1234L = []for iter_var_A in iterable_A: for iter_var_B in iterable_B: L.append(exp)
生成器
按照某种算法不断生成新的数据,直到满 ...
JS中let与var区别
JS中let与var区别
var声明
var声明作用域
var操作符定义的变量作用域为包含它的函数
12345678function test(a) { if(a === 1) { var b = 2; console.log(b); // b = 2 } console.log(b); // b = 2}console.log(b); // b = undefined
var声明提升
1234function foo() { console.log(age); var age = 26;}
等价于
12345function foo() { var age; console.log(age); age = 26;}
let声明
let声明作用域
let声明的范围是块作用域
12345678function test(a) { if(a === 1) { var b = 2; console.log(b); // b = 2 } console.log(b); ...
Java Utility
Java Utility
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158/** * 工具类的作用: * 处理各种情况的用户输入,并且能按照程序员对的需求,得到用户的控制台输入 */import java.util.Scanner;import java.util.*;public class Utility ...
Ubuntu下载更新速度慢
Ub untu下载更新速度慢解决方法
1sudo vim /etc/apt/source_list
在最后一行输入
12345678910deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multi ...
文法无用符号删除
设计一个程序,删除文法中的无用字符
如下程序所示,在第一行输入文法初始符号,下一行输入非终结符号,以空格分割,再下一行输入终结符号,以空格分隔。下一行输入规则数量,之后分行输入规则,规则左侧右侧用空格分隔。经处理后程序输出不包含无用字符的规则。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139import javafx.util.Pair;import java.io.FileInputStream;import java ...
String、StringBuffer、StringBuilder区别
String、StringBuffer、StringBuilder区别
概念:
1、用来处理字符串常用的类有3种:String、StringBuffer和StringBuilder
2、三者之间的区别:
都是final类,都不允许被继承;
String类长度是不可变的,StringBuffer和StringBuilder类长度是可以改变的;
StringBuffer类是线程安全的,StringBuilder不是线程安全的;
String 和 StringBuffer:
1、String类型和StringBuffer类型的主要性能区别:String是不可变的对象,因此每次在对String类进行改变的时候都会生成一个新的string对象,然后将指针指向新的string对象,所以经常要改变字符串长度的话不要使用string,因为每次生成对象都会对系统性能产生影响,特别是当内存中引用的对象多了以后,JVM的GC就会开始工作,性能就会降低;
2、使用StringBuffer类时,每次都会对StringBuffer对象本身进行操作,而不是生成新的对象并改变对象引用,所以多数情况下推荐使用Strin ...
Linux系统常识
Linux系统结构
Linux系统根目录结构
/bin (/usr/bin,/usr/local/bin)
是Binary的缩写,这个目录存放需要经常用到的指令
/sbin
s就是super user的意思,这里存放的是系统管理员使用的指令
/home
存放普通用户的主目录,在Linux中每一个用户都有一个自己的目录,目录名一般是用户名
/root
该目录为系统管理员,也称作超级权限者的用户主目录
/lib
系统开机所需要的最基本的动态连接共享库,其作用类似于windows系统中的DLL文件,几乎所有的应用程序都需要这些共享库
/lost+found
一般是空目录,当系统非法关机时存放一些文件
/etc
所有的系统管理所需要的配置文件和子目录,比如安装mysql
/usr
类似于windows系统的program files目录
/boot
存放的是启动Linux的一些核心文件,包括一些连接文件和镜像文件
/proc
这个目录是一个虚拟的目录,它是系统内存的映射,访问该目录获取系统信息
/srv
service的缩写。存放一些服务器启动之后需 ...