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
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
powerDesign16通过PLSql中导出的建表语句,建立E-R图
plsql的工具栏,工具–导出用户对象,选取所需要导出的表结构,ctrl+鼠标单击进行多选 一般导出到桌面,容易找到,如下图 接下来就是如何把建表语句导入到PowerDesign,如下图 下一步,如下图 添加刚刚导出到桌面的sql文件 powerDesign展示的都是表结构,后续自己可能需要做些优化
go中的别名类型和潜在类型
type MyString = string
这条声明语句表示,MyString是string类型的别名类型。顾名思义,别名类型与其原类型恐怕只是名称上,它们是完全相同的。源类型与别名类型是一对概念,是两个对立的称呼。别名类型主要是为了代码重构而存在的。 如果像下面这样定义:
type MyString2 string // 注意,这里没有等号。
MyString2和string就是两个不同的类型了。这里的MyString2是一个新的类型,不同于其他任何类型。 示例:
package
go中的值类型和引用类型
值类型和引用类型
值类型基本数据类型: int 系列, float 系列, bool, string 、数组和结构体struct
使用这些类型的变量直接指向存在内存中的值,值类型的变量的值存储在栈中。
当使用等号=将一个变量的值赋给另一个变量时,如 j = i ,实际上是在内存中将 i 的值进行了拷贝。
可以通过 &i 获取变量 i 的内存地址。 值拷贝
引用类型:指针、slice切片、map、管道chan、interface 等都是引用类型
引用类型拥有更复杂的存储结构:
(1)分配内存
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
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
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
Gitignore的规则定义
.gitignore 文件用于配置git需要管理文件的范围。 官方文档 :https://git-scm.com/docs/gitignore 匹配符的解释: # 用于注释 * 匹配除'\'之外的多个所有字符 #例:*.txt 所有的txt文件 /test/ 代表不管理 test目录下的所有文件,不包含test目录 /test 代表不管test 此目录,包含test目录文件 ! 代表取反,需要管理 #例;因为gitignore是用于排除的git 文件管理,
打印流 在文件中写内容
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
Flask实现简单的群聊和单聊
Flask是使用python写的一个简单轻量级的框架,今天我们使用Flask实现一个简单的单聊和群聊功能 . 主要思路 : 前端登录聊天室,聊天室信息包含用户的登录信息,相当于一个登录功能,会把这个信息记录在url中发送给后端,后端会把登录信息作为识别用户的标志,url中的信息会作为key值存在一个字典中: {'111': <geventwebsocket.websocket.WebSocket object at 0x000001AB31716118>, '222':
看似简单交换的面试小坑题~
这种题目第一眼看上去贼简单,作为一道面试题可能一不小心就入坑了~ 我想大部分人第一眼看上去可能会想着 交换a,b的值。 实际上是不可行的,毕竟java的值传递并不会真正的改变a,b的值,所以无论怎么在change方法中修改,main方法中始终打印a=10,b=20; 所以呢,真实答案请参考以下代码~ 是不是感觉有点小坑呢~
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
微信分享相关(接口部分代码)
/// <summary>
/// 获取微信SDK配置
/// </summary>
[HttpPost]
[Route("api/Training/GetWxSdkConfig")]
public ResponseMessage GetWxSdkConfig(ReqGetWXsdkConfig req)
{
var result = new ResponseM
今日推荐
周排行