linux上一个经典的segmentation fault

废话不多说,请看下面代码: #include<string> #include<stdio.h> #include<unistd.h> #include<string.h> int version=1; int main() { char *testarry[3]={"a","b","c"}; strcpy(testarry[2],"C"); printf("%c",testarry[2][0]); printf("%s\n",testarry[2]); if(testarry[2
分类: 其他 发布时间: 03-27 22:49 阅读次数: 0

linux用户空间,内核空间锁简介,使用

关于内核状态下的锁和用户空间的锁的介绍可以参考以下连接: https://blog.csdn.net/lilichang11106/article/details/84069357 主要内容可以描述如下: 内核锁 用户锁 spinlock_t pthread_ spinlock_t mutex_t pthread_mutex_t、pthread_rwlock_t struct semaphore sem_t rwlock_t pthread_ spinlock_t pthread_cond_t
分类: 其他 发布时间: 03-27 22:49 阅读次数: 0

powerDesign16通过PLSql中导出的建表语句,建立E-R图

plsql的工具栏,工具–导出用户对象,选取所需要导出的表结构,ctrl+鼠标单击进行多选 一般导出到桌面,容易找到,如下图 接下来就是如何把建表语句导入到PowerDesign,如下图 下一步,如下图 添加刚刚导出到桌面的sql文件 powerDesign展示的都是表结构,后续自己可能需要做些优化
分类: 其他 发布时间: 03-27 22:48 阅读次数: 0

go中的变量重名

变量的查找过程: 首先,代码引用变量的时候总会有限查找当前代码块中的那个变量。注意,这里的“当前代码块”仅仅是引用变量的代码所在的那个代码块,并不包含任何子代码块。 其次,如果当前代码块中没有声明以此为名的变量,那么程序会沿着代码块的嵌套关系,从直接包含当前代码块的那个代码块开始,一层一层地查找。 一般情况下,程序会一直查找到当前代码包代表的代码块。如果仍然找不到,那么GO语言的编译器就会报错了。 例如: package main import "fmt" var block = "p
分类: 其他 发布时间: 03-27 22:48 阅读次数: 0

go中的别名类型和潜在类型

type MyString = string 这条声明语句表示,MyString是string类型的别名类型。顾名思义,别名类型与其原类型恐怕只是名称上,它们是完全相同的。源类型与别名类型是一对概念,是两个对立的称呼。别名类型主要是为了代码重构而存在的。 如果像下面这样定义: type MyString2 string // 注意,这里没有等号。 MyString2和string就是两个不同的类型了。这里的MyString2是一个新的类型,不同于其他任何类型。 示例: package
分类: 其他 发布时间: 03-27 22:48 阅读次数: 0

go中的数组和切片

声明: package main import "fmt" func main() { // 数组声明 s1 := make([]int,5) fmt.Printf("The length of s1: %d\n", len(s1)) //5 fmt.Printf("The capacity of s1: %d\n", cap(s1)) //5 fmt.Printf("The value of s1: %d\n", s1) // [0 0 0 0 0] s4
分类: 其他 发布时间: 03-27 22:47 阅读次数: 0

go中的值类型和引用类型

值类型和引用类型 值类型基本数据类型: int 系列, float 系列, bool, string 、数组和结构体struct 使用这些类型的变量直接指向存在内存中的值,值类型的变量的值存储在栈中。 当使用等号=将一个变量的值赋给另一个变量时,如 j = i ,实际上是在内存中将 i 的值进行了拷贝。 可以通过 &i 获取变量 i 的内存地址。  值拷贝 引用类型:指针、slice切片、map、管道chan、interface 等都是引用类型 引用类型拥有更复杂的存储结构: (1)分配内存
分类: 其他 发布时间: 03-27 22:47 阅读次数: 0

go中的单向通道

//chan只能接收,无法发送 var uselessChan = make(chan<- int, 1) uselessChan <-1 i:=<-uselessChan// invalid operation: <-uselessChan (receive from send-only type chan<- int) fmt.Println(i) //chan只能发送,无法接收 var uselessChan2 = make(<-chan int, 1) j:=<-use
分类: 其他 发布时间: 03-27 22:47 阅读次数: 0

switch语句中的switch表达式和case表达式之间的联系

package main import "fmt" func main() { value1 := [7]int8{0, 1, 2, 3, 4, 5, 6} switch 1 + 3 { case value1[0], value1[1]: fmt.Println("0 or 1") case value1[2], value1[3]: fmt.Println("2 or 3") case value1[4], value1[5], value1[6]: fmt.Pr
分类: 其他 发布时间: 03-27 22:47 阅读次数: 0

panic defer recover

panic发生时,程序控制权的转移: package main import "fmt" func main() { fmt.Println("Enter function main.") caller1() fmt.Println("Exit function main.") } func caller1() { fmt.Println("Enter function caller1.") caller2() fmt.Println("Exit function call
分类: 其他 发布时间: 03-27 22:46 阅读次数: 0

go协程实例-1

package main import ( "fmt" ) func main() { c:=make(chan int) go print(c) c<-1 c<-2 //保障协程运行完毕,主协程main运行结束之后,其他协程也全部结束 //time.Sleep(time.Duration(time.Second*5)) } func print(c chan int){ for{ fmt.Println("============") fmt.Println
分类: 其他 发布时间: 03-27 22:46 阅读次数: 0

go协程实例-2

package main import ( "fmt" ) type worker struct { channel chan int done chan bool } func main() { var workers [10]worker for i:=0;i<10 ;i++ { workers[i]=worker{ make(chan int), make(chan bool), } go printNum(i,workers[i]) }
分类: 其他 发布时间: 03-27 22:46 阅读次数: 0

centos7.2下 pdf转jpg失败

服务迁移到新服务器上面,程序启动后,发现pdf转jpg失败!查看代码,发现是创建BufferedImage对象失败。 原因是:新的服务器上的原装jdk是openjdk1.8,以前服务器上的jdk是hotspotjdk1.8. 解决:修改新服务器上的jdk 1.上传新的jdk到服务器至:/home/jdk1.8.0_161,并修改下面文件的权限,省劲的话直接chmod 777. 2.修改/etc/profile文件 vim /etc/profile,在最下面添加以下内容: export JAV
分类: 其他 发布时间: 03-27 22:46 阅读次数: 0

Gitignore的规则定义

.gitignore 文件用于配置git需要管理文件的范围。 官方文档 :https://git-scm.com/docs/gitignore 匹配符的解释: #     用于注释 *     匹配除'\'之外的多个所有字符 #例:*.txt 所有的txt文件 /test/    代表不管理 test目录下的所有文件,不包含test目录 /test    代表不管test 此目录,包含test目录文件 !      代表取反,需要管理 #例;因为gitignore是用于排除的git 文件管理,
分类: 其他 发布时间: 03-27 22:45 阅读次数: 0

打印流 在文件中写内容

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; i
分类: 其他 发布时间: 03-27 22:45 阅读次数: 0

Flask实现简单的群聊和单聊

    Flask是使用python写的一个简单轻量级的框架,今天我们使用Flask实现一个简单的单聊和群聊功能 .     主要思路 : 前端登录聊天室,聊天室信息包含用户的登录信息,相当于一个登录功能,会把这个信息记录在url中发送给后端,后端会把登录信息作为识别用户的标志,url中的信息会作为key值存在一个字典中:     {'111': <geventwebsocket.websocket.WebSocket object at 0x000001AB31716118>, '222':
分类: 其他 发布时间: 03-27 22:45 阅读次数: 0

看似简单交换的面试小坑题~

这种题目第一眼看上去贼简单,作为一道面试题可能一不小心就入坑了~ 我想大部分人第一眼看上去可能会想着 交换a,b的值。 实际上是不可行的,毕竟java的值传递并不会真正的改变a,b的值,所以无论怎么在change方法中修改,main方法中始终打印a=10,b=20; 所以呢,真实答案请参考以下代码~ 是不是感觉有点小坑呢~
分类: 其他 发布时间: 03-27 22:45 阅读次数: 0

tuetle制作汉诺塔

代码如下 import turtle class Stack: #面向对象,定义一个类 def __init__(self): self.items = [] def isEmpty(self): return len(self.items) == 0 def push(self, item): self.items.append(item) def pop(self): retu
分类: 其他 发布时间: 03-27 22:45 阅读次数: 0

微信分享相关(接口部分代码)

/// <summary> /// 获取微信SDK配置 /// </summary> [HttpPost] [Route("api/Training/GetWxSdkConfig")] public ResponseMessage GetWxSdkConfig(ReqGetWXsdkConfig req) { var result = new ResponseM
分类: 其他 发布时间: 03-27 22:45 阅读次数: 0

汉诺塔动态实现

线上实现代码如下: def move(n,a,b,c): if n==1: print(a,'-->',c) else: move(n-1,a,c,b) print(a,'-->',c) move(n-1,b,a,c) n=eval(input()) move(n,'A','B','C') 动态代码实现: import turtle class Stack: def __init__(self): self.items = [] def isEmpt
分类: 其他 发布时间: 03-27 22:45 阅读次数: 0