编程语言
qiuchangyong
这个作者很懒,什么都没留下…
展开
-
jar包和war包的区别
war包和项目的文件结构保持一致,jar包则不一样jar包里没有静态资源的文件(index.jsp)一个web应用程序的目录和文件很多,想要将这个web应用程序部署到另一台机器上就很麻烦,这时可以将web应用程序打包成WAR文件,利用这个文件可以把servlet类文件和相关的资源集中在一起进行发布。这个过程中,web应用程序就不是按照目录层次结构惊醒部署的,而是把WAR文件作为部署单元来使用。转载 2024-07-21 01:43:24 · 281 阅读 · 0 评论 -
ModuleNotFoundError: No module named ‘cv2‘
【代码】ModuleNotFoundError: No module named ‘cv2‘原创 2024-04-20 23:01:49 · 183 阅读 · 1 评论 -
java中的同包权限(default)和保护权限(protected)哪个访问范围更大?
如果画四个依次包含的圆来表示拥有某一权限的类成员的可访问范围,最外面的圆一定是公有权限(public),由外及里,依次为同包权限(default),保护权限(protected),私有权限(private)。可以在类的内部访问;两个类位于同一个包内,就叫做同包,它们不仅可以访问彼此的同包成员,也可以访问彼此的具有保护权限的成员。一个类的成员如果不使用访问权限关键字修饰,就是同包(default)权限的。不用讲了吧,拥有的访问范围最小,只能在类的内部访问。顾名思义,完全开放的,这样的类成员谁都能访问到。原创 2024-01-07 02:54:59 · 778 阅读 · 0 评论 -
javac javap java的使用
比如写好了一个test.java文件,使用javac test.java编译会出来test.class字节码文件,再用java test就能看到程序执行的结果。而用javap -v test.class可以分析程序编译后的字节码的详细内容。期间遇到一个报错“错误: 找不到或无法加载主类”,java后面给出包名和类名,之间用“.”分割,不能是像java test.class这样带有.class后缀就会出现以上报错。用这三个命令行工具也能编译,分析,运行java程序。原创 2023-11-21 00:45:57 · 88 阅读 · 0 评论 -
c++属于同一个类的不同对象之间可相互访问private和protected成员
这个例子是能正常编译通过。按照c++的语法,一个对象的私有成员或保护成员不能在类的外部被访问。但是有个例外,同属于一个类的不同对象之间可相互访问private和protected成员(包括成员变量或成员函数)。这样的设计多少有点破坏了封装的思想,可是没有办法,考虑这样一种情况:在实现类的拷贝构造函数和赋值运算符的时候,就需要去访问另一个对象的private和protected成员(如果有的话),假如限制了同属于一个类的不同对象之间去访问private和protected成员,就无法实现了。原创 2024-01-05 21:13:40 · 571 阅读 · 0 评论 -
pip常用命令小结
下载该包名的.whl文件,后面安装时就可以直接用pip install安装这个.whl文件,比如“pip install numpy-1.16.6-cp27-cp27mu-manylinux1_x86_64.whl”就说这么多吧,在python中很多包,有的相互依赖,版本不对导致程序跑不起来,就需要重新安装调整包的版本,以上这些命令就能派上用场了。安装指定版本的包,比如“pip install numpy=1.19.5”如果不确定要安装的包的版本有哪些,可以用这个命令列出可安装的版本。原创 2023-12-08 23:33:02 · 400 阅读 · 0 评论 -
编译pycaffe过程中遇到的问题及解决
首先要安装好boost开发包,ubuntu下通过sudo apt-get install libboost-all-dev安装,结果装上了1.71.0版本,但这个版本在/usr/lib/x86_64-linux-gnu/目录下没有libboost_python.so,这就导致了上面的错误。这是由于caffe的代码中用到了boost,通过编译boost可以产生供python调用的so库,就需要编译出libboost_python.so,这个so库是成功编译pycaffe的关键。再敲./b2 -j 8编译。原创 2023-10-23 02:05:06 · 506 阅读 · 0 评论 -
一个Spring Boot @Controller示例程序的开发
不得不说,被垃圾教程,带入歧路,不能返归。经过一番摸索,把里面的问题,修改了,这里上一个正确可用的教程,以求帮助和我一样刚入门的人。------------------------------------------下面正文开始了------------------------------------------原创 2022-12-30 01:13:07 · 681 阅读 · 1 评论 -
Unity时钟demo的时间更新脚本
在画时针分针秒针转动的时候,有两种处理方法:一种是按照离散的时分秒进行绘制,表现为指针的跳变;另一种是按照连续的时分秒进行绘制,表现为指针的连续转动(因为Update函数是按照帧率被调用的,一秒内会被调用好多次)。这是因为DateTime的Hour成员变量为int型,而TimeSpan的TotalHours成员变量为double型,含有小数部分用于表示分和秒折算出的小时。通常绘制时间数字的时候用前者,绘制表盘用后者(还有一种是表盘的时分绘制用后者而表盘的秒绘制用前者)。原创 2022-12-16 13:59:08 · 277 阅读 · 0 评论 -
golang格式化时间精确到毫秒
fmt.Println(start_time_parsed) // 输出 2022-11-19 19:29:12.115 +0800 CST。fmt.Println(yyyyMMddHHmmss) // 输出 2022-11-19 19:29:12.115。你可能注意到了,解析的时候格式化字符串的尾部不需要加".000"也能正确解析出精确的时间。在格式化字符串的尾部加".000"表示精确到毫秒,后面的就截断了。如何解析回time.Time类型?原创 2022-11-19 19:45:30 · 4722 阅读 · 0 评论 -
node.js安装及环境配置
安装完nodejs后,也同时安装了npm,npm是nodejs中下载依赖包的命令,管理nodejs中的依赖包,下载依赖包时默认下载的路径是C:\Users\Administrator\AppData\Roaming\npm\node_modules,可以通过npm root -g查看。4、在系统变量path中新建%NODE_PATH%、%NODE_HOME%、%NODE_HOME%\node_global、%CNPM_PATH%设置淘宝镜像仓库,这样下载依赖包会很快。二、改变nodejs的下载依赖包路径。转载 2022-08-22 20:46:43 · 1057 阅读 · 0 评论 -
dial tcp xxx: connectex: A connection attempt
原文链接:https://blog.csdn.net/yahohi/article/details/121055399。改成国内代理地址即可。转载 2022-08-22 00:05:56 · 915 阅读 · 0 评论 -
一道路径搜索的面试题
题目:有一个二叉树如下图所示,要求编程找出所有从根节点到叶节点路径总和等于22的路径。 5 / \ 4 8 / / \ 11 13 4 / \ / \7 2 5 1程序运行得到的结果为:找到一条路径: 5 4 11 2也许这里给出的程序实现不是最好的,但这也算是可行的一种解法吧!如果题目再修改一下,变为“编程找出所有途经节点路径总和等于22的路径。”,程序的实现可以是下面这样子:程序运行原创 2022-07-08 01:35:35 · 296 阅读 · 0 评论 -
LinkedBlockingQueue和ConcurrentLinkedQueue的用法及区别
在 Java 多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的 Queue 可以分为阻塞队列,典型例子是 LinkedBlockingQueue 使用阻塞队列的好处:多线程操作共同的队列时不需要额外的同步,另外就是队列会自动平衡负载,即那边(生产与消费两边)处理快了就会被阻塞掉,从而减少两边的处理速度差距。 非阻塞队列,典型例子是 ConcurrentLinkedQueue 当许多线程共享访问一个公共集合时,ConcurrentL转载 2022-01-23 15:34:38 · 616 阅读 · 0 评论 -
不能将空的char *指针赋给string对象
如题,这样写:string s = NULL;尽管编译ok,但运行就会报错,这是因为string构造的时候,要计算长度,结果访问了非法的地址0x0,而在赋值运算时,虽然传NULL给string对象不会报错,但会留下隐患,后面取string长度时一样会出问题。...原创 2021-11-03 18:58:22 · 302 阅读 · 0 评论 -
Java正则表达式,看这一篇就够了!
正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如Hello World正则表达式匹配 "Hello World" 字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。下表列出了一些正则表达式的实例及描述:正则表达式 描述 this is text 匹配字符串 "this..转载 2021-10-22 16:37:11 · 414 阅读 · 0 评论 -
leptonica-1.80.0编译
需要的工具cmake、sw、vs2019通过cmake-gui生成,由于sw编译时,需要用到c++20,所以要安装vs2019原创 2021-05-02 20:33:36 · 442 阅读 · 0 评论 -
windows下使用intptr_t类型(而不是long类型)转换指针变量
与linux下不同的是windows下long的类型在64位平台即x64的size也是4,只有long long的size才是8,所以写的程序返回指针类型不能像linux下用long类型来存储,而应该使用intptr_t来存储。intptr_t定义在stdint.h文件中,然而这种类型在linux下并不常用。这注定了windows程序不太好往linux下移植。...原创 2021-02-12 21:29:35 · 407 阅读 · 0 评论 -
一个小例子:java程序的编译与运行
test.javapackage com.rectanglesystems.demo;public class test { String getString() { String msg = new String("hello world"); return msg; } public static void main(String[] args) { test t = new test(); String msg = t.getString(); System.ou原创 2021-01-14 18:55:10 · 100 阅读 · 0 评论 -
golang返回临时字符串
package mainimport "fmt"func getString() string { info := "hello world" return info[0:5]}func main() { out := getString() fmt.Println(out)}上面这段程序,函数返回了一个字符串,程序运行ok,可以看出golang与C完全不同,C里面这样写是万万不可的,请看这里:https://blog.csdn.net/qiuchangy.原创 2021-01-14 17:33:46 · 338 阅读 · 0 评论 -
C函数不能返回字符串临时对象
如题,我们做个小实验,#include <stdio.h>char *getString(){ char info[] = "hello"; return info;}int main(){ char *result = getString(); printf("%s\n", result); return 0;}编译时报错:warning: function returns address of local variabl.原创 2021-01-14 12:06:35 · 545 阅读 · 0 评论 -
golang调用c的一个bug
如题,一下一段代码,看似没有任何问题,竟打印不出任何东西!/*#include <stdio.h>void sayHello(){ printf("hello, world!");}*/import "C"func main(){ C.sayHello()}最后发现是printf没有加'\n'结尾所导致的,可见golang虽然开发效率高,但缺陷和毛病也让人不敢恭维。...原创 2021-01-13 12:56:43 · 124 阅读 · 0 评论 -
Golang中make与new有何区别?
一、前言本文主要给大家介绍了Go语言中函数new与make的使用和区别,关于Go语言中new和make是内建的两个函数,主要用来创建分配类型内存。在我们定义生成变量的时候,可能会觉得有点迷惑,其实他们的规则很简单,下面我们就通过一些示例说明他们的区别和使用。二、变量的声明var i intvar s string 变量的声明我们可以通过var关键字,然后就可以在程序中使用。当我们不指定变量的默认值时,这些变量的默认值是他们的零值,比如int类型的零值是0,string类型的零值是"",转载 2021-01-12 11:50:35 · 129 阅读 · 0 评论 -
Qt中的右值引用
右值引用是从C++11开始被支持的,可以实现对临时对象的引用,使用&&符号。QByteArray的定义中有以下代码片段:#ifdef Q_COMPILER_RVALUE_REFS inline QByteArray(QByteArray && other) Q_DECL_NOTHROW : d(other.d) { other.d = Data::sharedNull(); } inline QByteArray &operator=(QBy原创 2021-01-03 23:40:25 · 624 阅读 · 0 评论 -
golang中switch语句的case无需break
在使用switch结构时,我们需要注意以下几点:示例i := 0switch i{case 0: fmt.Printf("0") fallthroughcase 1: fmt.Printf("1")case 2: fallthroughcase 3: fmt.Printf("3")case 4, 5, 6: fmt.Printf("4, 5, 6")default: fmt.Printf("Default")}1.左花括号{必须与s.转载 2020-12-16 12:21:46 · 3429 阅读 · 1 评论 -
golang 设置 http response 响应头与坑
正文1、 设置WriteHeader的顺序问题之前遇到个问题,在一段代码中这样设置WriteHeader,最后在header中取Name时怎么也取不到。w.WriteHeader(201)w.Header().Set("Name", "my name is smallsoup")用 golang 写 http server 时,可以很方便可通过 w.Header.Set(k, v) 来设置 http response 中 header 的内容。但是需要特别注意的是:某些时候不仅要修改转载 2020-12-02 12:10:46 · 1124 阅读 · 0 评论 -
golang中的base64编码/解码
这篇文章又是一篇用来填坑的。golang中用来进行base64编码/解码通常使用:base64.StdEncoding.EncodeToStringbase64.StdEncoding.DecodeStringbase64编码的规则是3个字节变为4个字节,尾部可能会出现=号填充。可有时候不希望有多余的=号,还有解码的时候如果不是4个字节的倍数,就会失败,那么用下面的两个接口就可以了。base64.RawStdEncoding.EncodeToStringbase64.RawStd原创 2020-11-30 19:19:12 · 7335 阅读 · 0 评论 -
Go 语言数据类型
在 Go 编程语言中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。Go 语言按类别有以下几种数据类型:序号 类型和描述 1 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。 2 数字类型 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中转载 2020-11-20 19:45:27 · 171 阅读 · 0 评论 -
c++语言中类的私有类型或保护类型成员变量
c++中,一个类的私有类型或保护类型成员变量不能被外部访问。通常我们不能用成员运算符去访问类的私有类型或保护类型成员变量。比如类A的一个实例a,访问a.i时,如果i为私有类型或保护类型,显然不可以。但是有一种情况下可以,就是在类的内部,这就说明,类的私有类型或保护类型限制的是类的级别,而不是实例的级别,这一点需要注意。再举一例,拷贝构造函数的实现时,也要求实例的私有类型或保护类型成员变量能够被访问,当然这也是在类的内部。...原创 2020-10-11 21:52:23 · 3028 阅读 · 0 评论 -
golang中的单引号转义
如题,golang中有时候需要将一个字符串中的单引号再转义一次,比如在两个单引号之间包含一个含有单引号的字符串的情形。但是这个转义却不像C语言里的那样,比如这样写:info = strings.Replace(info, "\'", "\\\'", -1)就报unknown escape sequence错误。正确的写法是:info = strings.Replace(info, "'", "\\'", -1)我想这里应该是:在两个双引号之间不需要使用\'来表示单引号。...原创 2020-09-02 20:36:00 · 2396 阅读 · 0 评论 -
golang数据类型与MySQL数据类型的对应
转载 2020-08-21 20:08:58 · 1986 阅读 · 0 评论 -
go string []byte相互转换
string 不能直接和byte数组转换string可以和byte的切片转换1. string 转为[]bytevar str string = "test"var data []byte = []byte(str)2. byte转为stringvar data [10]bytebyte[0] = 'T'byte[1] = 'E'var str string = string(data[:])...转载 2020-07-13 19:39:24 · 197 阅读 · 0 评论 -
linux中c++头文件在哪
位于/usr/include/c++/目录下,有几个子目录,代表不同的版本。原创 2020-06-26 23:07:48 · 360 阅读 · 0 评论 -
C++关键字之using的的用法总结
1)配合命名空间,对命名空间权限进行管理using namespace std;//释放整个命名空间到当前作用域using std::cout; //释放某个变量到当前作用域2)类型重命名作用等同typedef,但是逻辑上更直观。#include <iostream>using namespace std;#define DString std::string //! 不建议使用!typedef std::string TString; .转载 2020-06-26 22:53:28 · 164 阅读 · 0 评论 -
Go语言处理JSON之——利用Marshal生成json字符串(一)
利用Go语言内置的encodong/json标准库,我们可以轻松地生成和解析json格式的数据。func Marshal(v interface{}) ([]byte, error)1从返回值我们可以看到,该函数有两个返回值,一个是传入参数v的json编码,类型为[]byte,另外一个就是error。官方文档提供了一个例子:package mainimport ( "fmt" "encoding/json")type ColorGroup struct { ID ...转载 2020-06-19 18:40:48 · 1360 阅读 · 0 评论 -
golang打印变量类型
直接使用reflect的TypeOf方法就可以了模块是:"reflect"fmt.Println(reflect.TypeOf(var))转载 2020-06-13 09:22:33 · 650 阅读 · 0 评论 -
js中判断对象是否为空的三种实现方法
本篇文章主要是对js中判断对象是否为空的三种实现方法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助。在写js脚本的时候经常遇到对象为空或者不是对象的情况,出现这种情况我们可以用if去判断它,然后去执行相应的处理方法,具体判断他们的方法有以下几种:1、if(typeOf(x)=="undefined")2、if(typeOf(x)!= "object")3、if (!x)其中第三种是最简单的方法,但是第三种就不能用if(x)这种互斥的方法去判断,只能在对象前面...转载 2020-05-27 21:43:03 · 308 阅读 · 0 评论 -
左值、左值引用、右值、右值引用
1、左值和右值的概念 左值是可以放在赋值号左边可以被赋值的值;左值必须要在内存中有实体; 右值当在赋值号右边取出值赋给其他变量的值;右值可以在内存也可以在CPU寄存器。 一个对象被用作右值时,使用的是它的内容(值),被当作左值时,使用的是它的地址。2、引用 引用是C++语法做的优化,引用的本质还是靠指针来实现的。引用相当于变量的别名。 引用可以改变指针的指向,还可以改变指针所指向的值。 引用的基...转载 2020-05-26 00:57:45 · 241 阅读 · 0 评论 -
java静态类static class
一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况转载 2013-10-30 11:30:44 · 664 阅读 · 0 评论 -
C++11的若干新特性盘点
待写和补充原创 2020-05-25 18:31:49 · 132 阅读 · 0 评论