- 博客(23)
- 资源 (4)
- 收藏
- 关注
原创 mysql的事务隔离级别
1.read commited 读已提交2.read uncommited 读未提交3.repeatable read 可重复读4.serialable 串行化默认是可重复读,在查询时会产生间隙锁,可能会产生死锁,并且被锁住的数据在查询期间不能更新。
2020-09-20 11:02:28
174
原创 Mysql存储微信昵称中的表情的问题 Incorrect string value: ‘\xF0\x9F\x8C\x9D‘ for column ‘nickname‘ at row 1
#### 微信用户的昵称有的带有emoj表情,会导致插入失败,报错就是:Incorrect string value: '\xF0\x9F\x8C\x9D' for column 'nickname' at row 1#### 原因- mysql使用的编码格式为utf8,emoj表情不在utf8编码范围之内,使用utf8mb4即可。#### 修改方式- 直接修改表的字段编码为utf8mb4,其他都不用改。下面是navicate的修改方法:...
2020-08-06 17:13:22
434
原创 easyexcel将数据库枚举字段转换成字符串类型(例:1/男,2/女)的解决方法
实现Converter<T> 接口重写下面几个方法:public class SettlementConverter implements Converter<Integer> { @Override public Class supportJavaTypeKey() { return null; } @Override public CellDataTypeEnum supportExcelTypeKey() {.
2020-06-12 16:31:20
11096
2
原创 java垃圾回收机制的理解
关于java垃圾回收的理解,即gc,来源于 java编程思想 一书垃圾回收的算法引用计数法引用计数法是一种简单但是速度很慢的回收计数,每个对象都含有一个引用计数器,当有引用连接至对象时,引用计数器加一,当引用离开作用域或对象被置为null时,引用计数器减一,虽然引用计数器的开销不大,但是这个开销在正好程序的生命周期都存在,垃圾回收器会遍历全部的对象,发现某个对象的引用计数器为零时,就释放它占用的内存。但是这种方法存在缺陷,如果对象存在交叉循环引用,那么计数器永远不为0,就可能出现对象应该被回收,
2020-05-17 23:50:55
196
原创 第十三节:面向对象(扩展已有类型)
当有的功能需要在别人的基础上扩展时该怎么做呢?比如一个java里面的类,我们可以继承它,然后再写我们自己的逻辑,但是go没有继承,我肯可以使用以下方法:定义别名使用组合接着上次的代码,树的遍历,上次实现了中序遍历,这次实现后序遍历。上次遍历的代码:func (node *Node) Traverse() { if node == nil{ return } n...
2019-11-06 14:25:59
278
原创 第十二节:面向对象(包和封装)
go中的封装比较特殊: 使用方法名字的大小写来区分方法的属性: 首字母大写:public 首字母小写:privite而这个public和privite是针对包来说的,包的概念: 每个目录一个包,包名和目录名不一定要一样。 main包包含了可执行的入口。 为结构定义的方法必须放在同一个包内,可以是不同的文件。packa...
2019-11-06 12:36:18
167
原创 第十一节:面向对象(结构体和方法)
面向对象:go只支持封装,不支持继承和多态。go语言没有class,只有struct。type treeNode struct { value int leftNode,rightNode *treeNode}结构体的定义结构体没有构造函数,可以自定义工厂函数。func createTreeNode(value int) *treeNode { retur...
2019-11-06 11:15:12
219
原创 第十节:map
map的创建: m:=map[string]int{ "java":20, "c":20, "cpp":20, } m1:=make(map[string]int) var m3 map[string]int打印一下: fmt.Println(m) fmt.Println(m1) fmt.Println(m3)控制台:map[c:20 ...
2019-11-05 17:19:22
133
原创 第九节:切片(slice)
arr:=[...]int{0,1,2,3,4,5,6,7,8,9}s:=arr[2:6]其中s就是切片,slice本身是没有数据的,是对底层array的一个view。切片的操作:func updateSlice(s []int) { s[0]=100}func main() { arr:=[...]int{0,1,2,3,4,5,6,7,8,9} fmt.P...
2019-11-05 16:35:01
686
原创 第八节:数组、切片和容器
数组:func main() { var arr1 [5]int arr2 := [3]int{1,2,3} arr3 :=[...]int{1,2,4,5,6,3} fmt.Println(arr1,arr2,arr3)}数组定义的几种方法控制台打印:[0 0 0 0 0] [1 2 3] [1 2 4 5 6 3]Process finished with e...
2019-11-05 14:55:54
159
原创 第七节:指针
go语言有指针这一概念。直接上代码:func pointTest() { var a int =3 var p *int =&a fmt.Println(a,p,*p)}定义int类型的值a,并且赋值为3定义int类型指针变量p,并且取a的地址赋值给p输出a和p控制台;3 0xc00000a0a8 3Process finished with exi...
2019-11-05 13:49:27
128
原创 第六节:函数
关键字:func函数定义:func eval(a,b int,op string) string { }go语言中,函数定义使用关键字func,函数名在前,函数返回值类型在后,参数定义也一样,参数名在前,参数类型在后,同类型的参数可以写在一起。如 a,b int多个返回值的函数:func div(a,b int )(int,int) { return a/b...
2019-11-05 11:33:06
169
原创 第五节:循环语句
for语句:func forTest() { sum:=0 for i:=1;i<=100;i++{ sum+=i; }}总结:for条件中不需要括号进阶:func convertTOBin(n int) string { result := "" for;n>0;n/=2{ lsb:=n%2 result=strconv.Itoa(ls...
2019-11-05 10:38:19
144
原创 第四节:条件语句
if语句: if v>100{ return 100 }else if v<50{ return 50 }else { return v }if语句不需要括号用法进阶: const fileName ="abc.txt" if contents,error := ioutil.ReadFile(fileName);error!=nil{ f...
2019-11-05 10:11:47
267
原创 第三节:go常量的定义
func consts() { const fileName ="a.txt" const a,b =3,4 var k int k=int(math.Sqrt(a*a+b*b)) fmt.Println(fileName,k)}const关键字:表示常量,常量可定义在包内部,放法外面,放法内部可直接使用,可直接指定常量的类型,也可不指定类型,常量的数值可以当作任何类型使...
2019-11-04 18:04:46
453
原创 第二节:go的内建变量类型
bool:布尔类型 true falsestring:字符串类型(u)int :int类型,加上u表示无符号int类型,不规定长度则int长度根据操作系统决定,32位系统中为32位,64位系统中为64位。(u)int8 :规定长度的int 8位(u)int16:规定长度的int 16位(u)int32:规定长度的int 32位(u)int64:规定长度的int 64位...
2019-11-04 17:44:47
211
原创 第一节:变量的定义和使用
一、建立一个空的工程,开始go的第一课学习(使用goland编辑器,具体安装破解可百度,go 版本 1.12.8)1、建立一个basic.go文件。文件里面很简单,只有一个main函数2、开始学习变量定义 2-1、老规矩,"hello world"来一个点击左边绿色的三角按钮,运行,不出意外的话控制台就会打印出 "hello world",好!已经迈出了学习go的第一...
2019-11-04 17:04:49
334
原创 springboot整合kaptcha验证码实现前后端分离项目的验证码验证。
主要思路:因为是前后端分离,所以后端生成的验证码不能通过session直接拿到,所以后端生成的验证码会保存在redis中,前端登录时带上key和value,后端根据Key去redis取值,再和前端传进来的value对比,完成验证码验证。1、添加 kaptcha的引用 <dependency> <groupId>com.gith...
2019-07-10 09:53:41
1237
原创 mybatis查询时,传入的时间和数据库的时间匹配不上的问题。
原因是数据库使用了非中国时区,因为mybatis会读取数据库市区来转换时间戳。解决办法:修改连接字符串,加上参数:jdbc:mysql://192.168.1.130:3306/xxxxx?characterEncoding=utf-8&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8...
2019-06-05 14:51:48
2331
原创 thingsboard源码编译
记录一下thingsboard的源码编译过程(填坑)。一、确保电脑有以下环境1、node.js 2、npm 3、java环境 4、maven 5、开发工具 idea 6、版本管理工具 git 7、数据可视化工具 8、数据库postgresql或者thingsboard的其他数据库 。二、源码下载链接:https://github.com/thin...
2019-03-29 14:20:04
1865
3
原创 C# winform捕获全局异常
在program.cs里面添加 /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { try { //处理未...
2019-03-21 10:41:48
781
原创 C#通过USB设备通信,收发数据,自定义协议的一些总结。
之前一直在做串口通信,比较简单,后来因为串口每次需要装驱动才能用,奈何客户群体太懒,想即插即用,选择了USB通信。开始着手搞的时候,各种百度,搞了大半天也没有收获,后来不知道在哪里下载一个demo,通信上了。下面说说遇到的坑吧。1、这个是USB通信的类库,封装成了一个用户控件,只需要在你需要的地方拽进来。2、一定要重写这两个方法。3、如果遇到一直通信不上,检查下项目的平台目标,...
2018-05-28 15:27:19
15457
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人