流程控制语句

go的流程控制语句 for 简单for for i := 0; i < 10; i++ { sum += i } for 是 Go 中的 “while” sum := 1 for sum < 1000 { sum += sum } 无限循环 for { } if 正常if if x < 0 { return sqrt(-x) + "i" } 简短if -- 同 for 一样, if 语句可以在条件表达式前执行一个简单的语句。 if v := math.Pow(x, n); v < lim { return v } switch(默认每个case自带break) 有条件的 today := time.Now().Weekday() switch time.Saturday { case today + 0: fmt.Println("Today.") case today + 1: fmt.Println("Tomorrow.") default: fmt.Println("Too far away.") } 无条件的 t := time.Now() switch { case t.Hour() < 12: fmt.Println("Good morning!") case t.Hour() < 17: fmt.Println("Good afternoon.") default: fmt.Println("Good evening.") } defer defer 语句会将函数推迟到外层函数返回之后执行。有点像java的finally 推迟的函数调用会被压入一个栈中。当外层函数返回时,被推迟的函数会按照后进先出的顺序调用。

April 1, 2022 · 1 min

spring管理bean之间的协同方式

spring管理bean互相协同的方式 Dependency Injection(依赖注入) Constructor-based Dependency Injection(构造方法注入) Autowired注入 xml配置 Setter-based Dependency Injection(set方法注入) Autowired注入 xml配置 Method Injection(方法注入,通过代理方式注入) 通过applcationContext容器获取bean注入 Lookup Method Injection(通过@LookUp注解注入) Arbitrary Method Replacement(xml配置replace method)

March 30, 2022 · 1 min

MVCC并发管理控制

MVCC并发管理控制 并发带来的读写问题 因为mysql是cs结构,一台服务端可以对接多个客户端,那必然就会存在多个线程对同一资源(同一条记录之类的)进行读读,读写,写写操作。 脏写:一个事务修改了其他事务未提交的数据。 ...

March 29, 2022 · 4 min

幂等性解决方案

一、什么是幂等性 幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。 ...

March 28, 2022 · 4 min

Bean的生命周期

Bean的生命周期的完全实现需要两个阶段 容器的启动 bean的实例化过程(涵盖了bean生命周期的大部分) 容器启动阶段 重点是收集到元信息配置信息,即创建bean需要的信息(beanDefinition) 通过BeanDefinitionReader,读取到beanDefinition信息,再通过beanDefinitionRegistry,将BeanDefinition注册到其里面 // 这是 PropertiesBeanDefinitionReader 把从properties文件读取到的配置信息, // 通过 BeanDefinitionRegistry 注册 BeanDefinition的过程 AbstractBeanDefinition bd = BeanDefinitionReaderUtils.createBeanDefinition( parent, className, getBeanClassLoader()); bd.setScope(scope); // 作用域 默认singleton bd.setAbstract(isAbstract); // 是否是抽象 默认false 如果是抽象的,容器不会实例化bean,而是将beanDefinition信息作为其子类使用 bd.setLazyInit(lazyInit); // 懒加载 默认false 如果是false,容器一启动就会加载bean bd.setConstructorArgumentValues(cas); // 构造参数 bd.setPropertyValues(pvs); // 属性信息 getRegistry().registerBeanDefinition(beanName, bd); // 注册Beandefinition BeanDefinitionReader 有多种,包括: ...

March 28, 2022 · 7 min
总访问量 总访客数