事务

mybatis开启事务

1
2
3
4
5
Fetched SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78f3fadc] from current transaction
==> Preparing: INSERT INTO usercenter.user_account (user_name,id,user_id) VALUE (?,?,?)
==> Parameters: fzz(String), 4(String), 1001(String)
<== Updates: 1
Releasing transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@78f3fadc]

mybatis没有开启事务

1
2
3
4
5
6
7
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7562231a] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@1777293548 wrapping com.mysql.jdbc.JDBC4Connection@65d83289] will not be managed by Spring
==> Preparing: INSERT INTO usercenter.user_account (user_name,id,user_id) VALUE (?,?,?)
==> Parameters: fzz(String), 4(String), 1001(String)
<== Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7562231a]

By default, MySQL runs with autocommit mode enabled. This means that as soon as you execute a statement that updates (modifies) a table, MySQL stores the update on disk to make it permanent. The change cannot be rolled back.

文章链接 https://fangzongzhou.github.io/2018/08/20/计算机/技术栈/MYSQL/事务/

GO操作命令

构建安装

构建和安装前都会执行编译、打包等操作,这些操作生成的文件都会先保存在临时目录中

构建:go build
构建库源码文件时,操作结果只会在临时目录中生成,这时构建的意义主要是检查和验证。

如果构建的是命令源码文件,操作结果文件会被搬运到源码文件所在的目录中。

go build默认不编译目标代码包所依赖的代码包,如果需要进行强制编译可以加入-a标记,

如果在强制编译的基础上还要安装对应的归档文件,可以加入-i标记

1
2
3
-x 显示build命令具体执行的操作
-n 查看build命令会执行的操作而不真正执行
-v 可以在编译的过程中看到编译的代码包的名称

安装:go install
安装会先执行构建,然后进行链接操作,将结果文件搬运到指定目录。

安装库源码文件,结果文件会被搬运到所在工作区的pkg目录下的某个子目录中。

安装命令源码文件,结果文件会被搬运到所在工作区的bin目录/环境变量GOBIN指定的目录中。

源码安装

go get会从github上下载目标代码包

1
2
3
4
5
-u 下载并安装代码包,无论是否已经存在
-d 只下载不安装
-fix 下载代码包后先运行一个当前go版本的修正工具,然后再安装代码包
-t 同时下载测试需要的代码包
-insecure 允许通过非安全网络协议(http)下载安装代码包

文章链接 https://fangzongzhou.github.io/2018/08/10/计算机/技术栈/Go/GO操作命令/

工作区和GOPATH

GOPATH是什么

是go的环境变量,可以是一个目录路径,也可以包含多个目录路径,每个目录都代表了一个workspace。

这些workspace用来存放go源码文件及install后的归档文件和可执行文件。go生命周期的所有操作都是围绕着GOPATH来进行的。go要使用外部代码,必须install源码到当前的workspace中。

源码组织方式

GO源码以代码包为基本组织单位。每个代码包都有导入路径,实际使用程序前,必须先导入其所在的代码包。

1
import "github.com/qwer/asdf"

Read More

并发编程

线程间会共享进程内存,这使得资源共享变得容易,但同时会因此引入一些多线程特有的问题

因为多线程的使用,使得串行的逻辑中产生了非串行因素。要使得多线程程序行为可以预测,必须对共享数据的访问操作进行协同,以此防止线程间的干扰

并发编程的两个关键问题:

  • 线程间的通信,通信指的是线程间交换信息,主要通过共享内存和消息传递
  • 线程间如何同步

文章链接 https://fangzongzhou.github.io/2018/08/01/计算机/技术栈/Java/并发编程/并发编程/

能力栈

因为现在从事的行业和IT相关,这里的人都了解的一个名词叫做”技术栈”,一方面担心自己是否会一直从事相关行业,另一方面也想着从更好的角度看待类似的选择问题,所以用了“能力”这个词来替代”技术”。

选择

选择掌握一种能力是需要深思熟虑的,很多时候我们努力就是为了获取更多选择的机会,所以在你有机会选择一项技能去学习时,请好好把握机会。

能力是没有尽头的,按需索取很重要,当然最好能有一定的前瞻性。所有的能力都是用来解决问题的,所以我这里的前瞻性既不是对流行指数的预判,也不是单纯的“价值”,而是自己对未来的规划。

Read More

线程

是操作系统能够进行运算调度的最小单位。

线程是独立调度和分派的基本单位。

线程可以操作系统内核调度的内核线程.

同一进程中的多条线程将共享该进程中的全部系统资源

线程是cpu调度的最小单位,多线程编程屏蔽了cpu核心数

多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。

文章链接 https://fangzongzhou.github.io/2018/08/01/计算机/操作系统/线程/