linux 发布java项目操作手记

Linux系统发布项目完整教程 1.后端代码打包 1.1后端代码中文件上传路径修改 说明:Linux发布项目,我们需要将前后端项目打包,并添加到Linux系统,这里以springBoot+maven+ssm的项目为例.如果我们有文件上传的功能,首先规定好文件在Linux系统中的存放路径,如我的windows系统的文件存放的路径是: private String localDir = "F:/images"; Linux系统文件存放的路径为: private String localDir = "/usr/local. 阅读详情

LINUX中,创建文件夹、文件命令及清除命令。

mkdir +文件夹名字
touch +文件名字
rm -fr 删除文件,问价夹  -f强制删除  -r是递归

linux 查看所有用户

查看linux下用户组是哪个命令!

察看 /etc/group文件

用cat /etc/passwd |cut -f 1 -d :
修改LINUX目录或文件的权限和所有权详解

一、文件和目录的权限

  1.文件的权限:

  文件所属用户 所属用户组 其它用户

  权限有:

  读:read 数字表示为4:110

  写:write 数字表示为2:10

  执行:execute 数字表示为:1

  0 1 10 11 110 111 1110 1111

  0 1 2 3 4 5 6 7

  具体解释如下:

  1: 1 可执行

  2:10 可写

  3. 11=10+1 可写可执行

  4. 100 可读

  5. 101=100+1 可读可执行(5=4+1)

  6. 110=100+10 可读可写(6=4+2)

  7. 111=100+10+1 可读可写可执行(7=4+2+1)

  2.权限的查看:

  ls -l|more/less

  二、使用chmod和数字改变文件或目录的访问权限

  文件和目录的权限表示,是用rwx这三个字符来代表所有者、用户组和其他用户的权限。有时候,字符似乎过于麻烦,因此还有另外一种方法是以数字来表示权限,而且仅需三个数字。

  r: 对应数值4

  w: 对应数值2

  x:对应数值1

  -:对应数值0

  数字设定的关键是mode的取值,一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进制数,如果有则有1表示,没有则有0表示,那么rwx r-x r- -则可以表示成为:

  111 101 100

  再将其每三位转换成为一个十进制数,就是754。

  例如,我们想让a.txt这个文件的权限为:

  自己 同组用户 其他用户

  可读 是 是 是

  可写 是 是

  可执 行

  那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110 110 100,再每三位转换成为一个十进制数,就得到664,因此我们执行命令:

  [root@localhost ~]# chmod 664 a.txt

  按照上面的规则,rwx合起来就是4+2+1=7,一个rwxrwxrwx权限全开放的文件,数值表示为777;而完全不开放权限的文件“---------”其数字表示为000。下面举几个例子:

  -rwx------:等于数字表示700。

  -rwxr—r--:等于数字表示744。

  -rw-rw-r-x:等于数字表示665。

  drwx—x—x:等于数字表示711。

  drwx------:等于数字表示700。

  在文本模式下,可执行chmod命令去改变文件和目录的权限。我们先执行ls -l 看看目录内的情况:

  [root@localhost ~]# ls -l

  总用量 368

  -rw-r--r-- 1 root root 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  可以看到当然文件conkyrc.sample文件的权限是644,然后把这个文件的权限改成777。执行下面命令

  [root@localhost ~]# chmod 777 conkyrc.sample

  然后ls -l看一下执行后的结果:

  [root@localhost ~]# ls -l

  总用量 368

  -rwxrwxrwx 1 root root 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  可以看到conkyrc.sample文件的权限已经修改为rwxrwxrwx

  如果要加上特殊权限,就必须使用4位数字才能表示。特殊权限的对应数值为:

  s或 S (SUID):对应数值4。

  s或 S (SGID):对应数值2。

  t或 T :对应数值1。

  用同样的方法修改文件权限就可以了

  例如:

  [root@localhost ~]# chmod 7600 conkyrc.sample

  [root@localhost ~]# ls -l

  总用量 368

  -rwS--S--T 1 root root 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  加入想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理。

  例如:

  [root@localhost ~]# chmod 777 /home/user 注:仅把/home/user目录的权限设置为rwxrwxrwx

  [root@localhost ~]# chmod -R 777 /home/user 注:表示将整个/home/user目录与其中的文件和子目录的权限都设置为rwxrwxrwx

  三、使用命令chown改变目录或文件的所有权

  文件与目录不仅可以改变权限,其所有权及所属用户组也能修改,和设置权限类似,用户可以通过图形界面来设置,或执行chown命令来修改。

  我们先执行ls -l看看目录情况:

  [root@localhost ~]# ls -l

  总用量 368

  -rwxrwxrwx 1 root root 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  可以看到conkyrc.sample文件的所属用户组为root,所有者为root。

  执行下面命令,把conkyrc.sample文件的所有权转移到用户user:

  [root@localhost ~]# chown user conkyrc.sample

  [root@localhost ~]# ls -l

  总用量 368

  -rwxrwxrwx 1 user root 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  要改变所属组,可使用下面命令:

  [root@localhost ~]# chown :users conkyrc.sample

  [root@localhost ~]# ls -l

  总用量 368

  -rwxrwxrwx 1 user users 12172 8月 15 23:18 conkyrc.sample

  drwxr-xr-x 2 root root 48 9月 4 16:32 Desktop

  -r--r--r-- 1 root root 331844 10月 22 21:08 libfreetype.so.6

  drwxr-xr-x 2 root root 48 8月 12 22:25 MyMusic

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth0

  -rwxr-xr-x 1 root root 9776 11月 5 08:08 net.eth1

  -rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo

  drwxr-xr-x 2 root root 48 9月 6 13:06 vmware

  要修改目录的权限,使用-R参数就可以了,方法和前面一样。

linux grep命令

1.作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

2.格式
grep [options]

3.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。

4.grep命令使用简单实例
$ grep ‘test’ d*
显示所有以d开头的文件中包含 test的行。
$ grep ‘test’ aa bb cc
显示在aa,bb,cc文件中匹配test的行。
$ grep ‘[a-z]\{5\}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
$ grep ‘w\(es\)t.*\1′ aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。

5.grep命令使用复杂实例
假设您正在’/usr/src/Linux/Doc’目录下搜索带字符 串’magic’的文件:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中文件’sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。
默认情况下,’grep’只搜索当前目录。如果 此目录下有许多子目录,’grep’会以如下形式列出:
grep: sound: Is a directory
这可能会使’grep’ 的输出难于阅读。这里有两种解决的办法:
明确要求搜索子目录:grep -r
或忽略子目录:grep -d skip
如果有很多 输出时,您可以通过管道将其转到’less’上阅读:
$ grep magic /usr/src/Linux/Documentation/* | less
这样,您就可以更方便地阅读。

有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 <CTRL c> ,然后再试。

下面还有一些有意思的命令行参数:
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

grep -n pattern files  即可显示行号信息

grep -c pattern files  即可查找总行数

这里还有些用于搜索的特殊符号:
\< 和 \> 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 ‘Batman’、’manic’、’man’等,
grep ‘\<man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘\<man\>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
‘^’:指匹配的字符串在行首,
‘$’:指匹配的字符串在行 尾,



Grep 命令 用法大全

1、 参数: 
-I :忽略大小写 
-c :打印匹配的行数 
-l :从多个 文件 中查找包含匹配项 
-v :查找不包含匹配项的行 
-n:打印包含匹配项的行和行标 

2、RE(正则表达式) 
\ 忽略正则表达式中特殊字符的原有含义 
^ 匹配正则表达式的开始行 
$ 匹配正则表达式的结束行 
\< 从匹配正则表达式的行开始 
\> 到匹配正则表达式的行结束 
[ ] 单个字符;如[A] 即A符合要求 
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求 
. 所有的单个字符 
* 所有字符,长度可以为0 

3、举例 
# ps -ef | grep in.telnetd 
root 19955 181 0 13:43:53 ? 0:00 in.telnetd 

# more size.txt size文件的内容 
b124230 
b034325 
a081016 
m7187998 
m7282064 
a022021 
a061048 
m9324822 
b103303 
a013386 
b044525 
m8987131 
B081016 
M45678 
B103303 
BADc2345 

# more size.txt | grep '[a-b]' 范围 ;如[A-Z]即A,B,C一直到Z都符合要求 
b124230 
b034325 
a081016 
a022021 
a061048 
b103303 
a013386 
b044525 
# more size.txt | grep '[a-b]'* 
b124230 
b034325 
a081016 
m7187998 
m7282064 
a022021 
a061048 
m9324822 
b103303 
a013386 
b044525 
m8987131 
B081016 
M45678 
B103303 
BADc2345 

# more size.txt | grep ' b' 单个字符;如[A] 即A符合要求 
b124230 
b034325 
b103303 
b044525 
# more size.txt | grep '[bB]' 
b124230 
b034325 
b103303 
b044525 
B081016 
B103303 
BADc2345 

# grep 'root' /etc/group 
root::0:root 
bin::2:root,bin,daemon 
sys::3:root,bin,sys,adm 
adm::4:root,adm,daemon 
uucp::5:root,uucp 
mail::6:root 
tty::7:root,tty,adm 
lp::8:root,lp,adm 
nuucp::9:root,nuucp 
daemon::12:root,daemon 

# grep '^root' /etc/group 匹配正则表达式的开始行 
root::0:root 

# grep 'uucp' /etc/group 
uucp::5:root,uucp 
nuucp::9:root,nuucp 

# grep '\<uucp' /etc/group 
uucp::5:root,uucp 

# grep 'root$' /etc/group 匹配正则表达式的结束行 
root::0:root 
mail::6:root 

# more size.txt | grep -i 'b1..*3' -i :忽略大小写 

b124230 
b103303 
B103303 

# more size.txt | grep -iv 'b1..*3' -v :查找不包含匹配项的行 

b034325 
a081016 
m7187998 
m7282064 
a022021 
a061048 
m9324822 
a013386 
b044525 
m8987131 
B081016 
M45678 
BADc2345 

# more size.txt | grep -in 'b1..*3' 
1:b124230 
9:b103303 
15:B103303 

# grep '$' /etc/init.d/nfs.server | wc -l 
128 
# grep '\$' /etc/init.d/nfs.server | wc –l 忽略正则表达式中特殊字符的原有含义 

15 
# grep '\$' /etc/init.d/nfs.server 
case "$1" in 
>/tmp/sharetab.$$ 
[ "x$fstype" != xnfs ] && 
echo "$path\t$res\t$fstype\t$opts\t$desc" 
>>/tmp/sharetab.$$ 
/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$ 
/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab 
if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)' 
if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] && 
if [ $startnfsd -ne 0 ]; then 
elif [ ! -n "$_INIT_RUN_LEVEL" ]; then 
while [ $wtime -gt 0 ]; do 
wtime=`expr $wtime - 1` 
if [ $wtime -eq 0 ]; then 
echo "Usage: $0 { start | stop }" 

# more size.txt 

the test file 
their are files 
The end 

# grep 'the' size.txt 
the test file 
their are files 

# grep '\<the' size.txt 
the test file 
their are files 

# grep 'the\>' size.txt 
the test file 

# grep '\<the\>' size.txt 
the test file 

# grep '\<[Tt]he\>' size.txt 
the test file

==================================================================

1,简介
使用正则表达式的一个多用途文本搜索工具.这个php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag">命令本来是ed行编辑器中的一个php?name=%C3%FC%C1%EE" onclick="tagshow(event)" class="t_tag">命令/过滤器:
        g/re/p -- global - regular expression - print.
基本格式
grep pattern [file...]
(1)grep 搜索字符串 [filename]
(2)grep 正则表达式 [filename]
在文件中搜索所有 pattern 出现的位置, pattern 既可以是要搜索的字符串,也可以是一个正则表达式.
注意:在输入要搜索的字符串时最好使用双引号/而在模式匹配使用正则表达式时,注意使用单引号

2,grep的选项
    -c 只输出匹配行的计数
    -i 不区分大小写(用于单字符)
    -n 显示匹配的行号
    -v 不显示不包含匹配文本的所以有行
    -s 不显示错误信息
    -E 使用扩展正则表达式
    更多的选项请查看:man grep

3,常用grep实例

(1)多个文件查询
    grep "sort" *.doc       #见文件名的匹配

(2)行匹配:输出匹配行的计数
    grep -c "48" data.doc   #输出文档中含有48字符的行数

(3)显示匹配行和行数
    grep -n "48" data.doc       #显示所有匹配48的行和行号

(4)显示非匹配的行
    grep -vn "48" data.doc      #输出所有不包含48的行

(4)显示非匹配的行
    grep -vn "48" data.doc      #输出所有不包含48的行

(5)大小写敏感
    grep -i "ab" data.doc       #输出所有含有ab或Ab的字符串的行

4, 正则表达式的应用

(1)正则表达式的应用 (注意:最好把正则表达式用单引号括起来)
    grep '[239].' data.doc      #输出所有含有以2,3或9开头的,并且是两个数字的行

(2)不匹配测试
    grep '^[^48]' data.doc      #不匹配行首是48的行

(3)使用扩展模式匹配
    grep -E '219|216' data.doc

(4) ...
    这需要在实践中不断应用和总结,熟练掌握正则表达式。

5, 使用类名
可以使用国际模式匹配的类名:
[[:upper:]]   [A-Z]
[[:lower:]]   [a-z]
[[:digit:]]   [0-9]
[[:alnum:]]   [0-9a-zA-Z]
[[:space:]]   空格或tab
[[:alpha:]]   [a-zA-Z]

(1)使用
    grep '5[[:upper:]][[:upper:]]' data.doc     #查询以5开头以两个大写字母结尾的行


一、常见的Java内存溢出有以下三种

 

1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出
JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存。

可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap的大小是Young Generation 和Tenured Generaion 之和。

在JVM中如果98%的时间是用于GC,且可用的Heap size 不足2%的时候将抛出此异常信息。

解决方法:手动设置JVM Heap(堆)的大小。  

 

2. java.lang.OutOfMemoryError: PermGen space  ---- PermGen space溢出。 
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。

为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,sun的 GC不会在主程序运行期对PermGen space进行清理,所以如果你的APP会载入很多CLASS的话,就很可能出现PermGen space溢出。

解决方法: 手动设置MaxPermSize大小

 

3. java.lang.StackOverflowError   ---- 栈溢出
栈溢出了,JVM依然是采用栈式的虚拟机,这个和C和Pascal都是一样的。函数的调用过程都体现在堆栈和退栈上了。
调用构造函数的 “层”太多了,以致于把栈区溢出了。
通常来讲,一般栈区远远小于堆区的,因为函数调用过程往往不会多于上千层,而即便每个函数调用需要 1K的空间(这个大约相当于在一个C函数内声明了256个int类型的变量),那么栈区也不过是需要1MB的空间。通常栈的大小是1-2MB的。
通常递归也不要递归的层次过多,很容易溢出。

解决方法:修改程序。


二 .linux下的tomcat(64位)

编辑   

#sudo vi /opt/tomcat/bin/catalina.sh
在第一行注释下加入
#!/bin/sh
JAVA_OPTS='-server -d64 -Xms2g -Xmx16g -XX:PermSize=1g -XX:MaxPermSize=4g -XX:-UseGCOverheadLimit'
三.windows下的tomcat(64位)

编辑tomcat/bin/catalina.bat文件

找到如下内容,加粗部分为我们加入的内容

rem ----- Execute The Requested Command ---------------------------------------
set JAVA_OPTS=-server -d64 -Xms1g -Xmx8g -XX:PermSize=512M -XX:MaxNewSize=512m -XX:MaxPermSize=1g
echo Using CATALINA_BASE:   "%CATALINA_BASE%"


四.jvm参数说明

 

-server:一定要作为第一个参数,在多个CPU时性能佳 
-Xms:java Heap初始大小。 默认是物理内存的1/64。
-Xmx:java heap最大值。建议均设为物理内存的一半。不可超过物理内存。


-XX:PermSize:设定内存的永久保存区初始大小,缺省值为64M。(我用visualvm.exe查看的)

-XX:MaxPermSize:设定内存的永久保存区最大 大小,缺省值为64M。(我用visualvm.exe查看的)


-XX:SurvivorRatio=2  :生还者池的大小,默认是2,如果垃圾回收变成了瓶颈,您可以尝试定制生成池设置

 

-XX:NewSize: 新生成的池的初始大小。 缺省值为2M。

-XX:MaxNewSize: 新生成的池的最大大小。   缺省值为32M。

如果 JVM 的堆大小大于 1GB,则应该使用值:-XX:newSize=640m -XX:MaxNewSize=640m -XX:SurvivorRatio=16,或者将堆的总大小的 50% 到 60% 分配给新生成的池。调大新对象区,减少Full GC次数。


+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。 
-Xss:每个线程的Stack大小,“-Xss 15120” 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k. 


-verbose:gc 现实垃圾收集信息 
-Xloggc:gc.log 指定垃圾收集日志文件 
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一 
-XX:+UseParNewGC :缩短minor收集的时间 
-XX:+UseConcMarkSweepGC :缩短major收集的时间 此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。

-XX:userParNewGC 可用来设置并行收集【多CPU】
-XX:ParallelGCThreads 可用来增加并行度【多CPU】
-XX:UseParallelGC 设置后可以使用并行清除收集器【多CPU】


【人工智能】Claude服务访问受限报错的技术分析与解决方案 在使用Claude系列大模型服务的过程中,部分用户会遇到服务不可用的标准化拦截提示,导致无法正常访问模型核心能力。本文针对该类报错进行完整技术拆解,明确报错根因与底层校验逻辑,并分场景提供合规、可落地的排查与解决方案,同时规避相关使用风险。 阅读详情

相关推荐

Claude Code vs Codex

Claude Code 提供了一个生产就绪(production-ready)的实现,包含良好的错误处理、优雅的关闭逻辑、详细注释和文档,以及内置测试。Claude Code 输出了一个可运行的 Next.js + TypeScript 前端,但错过了一些设计里的黄色主题元素;Codex 则生成自己的版本,没有导出设计中的图片,也没严格遵照设计主题。Codex 完成同样功能,但更简洁直接,文档和注释少一些但功能达标。任务都用同样的提示,使用 TypeScript 实现,并在一天内完成。

weixin_49869937的博客 2385

Java在linux上只能在程序的当前目录下创建文件/文件夹导致的问题

Java在linux上只能在程序的当前目录下创建文件/文件夹导致的问题 Java在linux上只能在程序的当前目录下创建文件/文件夹,导致正常在Windows运行正常的程序,到linux上,如果创建的目录不在当前程序执行目录下会提示:Permission denied 解决也很简单,增加以下代码即可: File f=new File("/home/sxl/out"); f.setWritable(true, false); 如果项目是用docker部署的话,创建的文件夹在磁盘上找不到,则需要将创建的文件夹

qq_41646211的博客 1553

Syzkaller实战教程2:运行环境配置+实例运行

本文详细介绍了在linux系统上搭建Syzkaller内核模糊测试环境的完整流程。 1.环境配置:通过VMware创建Ubuntu20.04虚拟机A,配置QEMU/KVM虚拟化环境,安装Go语言工具链和Syzkaller; 2.内核编译:下载Linux内核源码并配置KCOV等调试选项,编译生成带覆盖率支持的bzImage内核镜像; 3.测试环境构建:使用debootstrap创建Debian虚拟机镜像,通过QEMU启动嵌套虚拟机B; 实例测试: 4.演示两种测试场景 - 提供完整上手教程

cuguanren的博客 1375

如何在Linux下部署Java项目

如何在Linux下部署Java项目

aaa 7704

在x86机器上运行jailhouse

jailhouse jaihouse提供了一个demo ,https://github.com/siemens/jailhouse-images可以用于编译一整套可用的demo。 适用于多个平台。编译过程主要参考https://blog.youkuaiyun.com/weixin_39541632/article/details/110422345 此demo可以生成多个平台所用的操作系统image。 ...

闲人的专栏 3004

ESP32对接百度智能云语音识别:从硬件配置到API调用的完整指南

本文详细介绍了ESP32对接百度智能云语音识别的完整流程,从硬件配置到API调用,涵盖麦克风选择、音频处理、错误处理及性能优化等关键环节。通过实战案例展示如何实现低成本、高效率的语音交互方案,特别适合智能硬件开发者参考。

weixin_29198045的博客 372

在linux上部署Java项目

要是想要部署java web程序,首先要配置环境。

m0_60354608的博客 4440

告别CANoe?手把手教你用Python+PCAN搭建汽车诊断脚本(附完整代码)

本文详细介绍了如何利用Python和PCAN硬件搭建高性价比的汽车诊断自动化方案,替代昂贵的CANoe工具。通过开源库python-can和udsoncan实现UDS诊断协议,涵盖硬件选择、环境配置、核心功能实现及性能优化,附完整代码示例,助力开发者快速构建诊断脚本。

weixin_42551227的博客 373

【学习日记2023.6.6】之 Linux环境下部署Java项目

Linux环境下部署Java项目

qq_42575689的博客 3207

【Python爬虫】股票信息定向爬取

【Python爬虫】股票信息定向爬取:通过requests-bs4-re技术路线爬虫获取上交所和深交所所有股票的名称和交易信息

qq_39321802的博客 1502

HC32F460 SPI DMA 实现高效TFT屏幕刷新的实战解析

本文针对HC32F460 MCU驱动TFT屏幕时刷新卡顿的问题,深入解析了SPI DMA技术的实战应用。通过对比传统查询模式与DMA模式的性能数据,详细阐述了如何配置SPI与DMA资源、构建核心驱动框架,并提供了避坑指南与进阶优化思路,最终实现高效、流畅的屏幕刷新,显著降低CPU占用率。

weixin_29163797的博客 151

Linux 部署Java项目

阿里云服务器 初始化云盘后,要更换操作系统操作才能远程登录。Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

u014575452的博客 3639

FPGA数字下变频实战:用Vivado DDS IP核实现IQ采样与频率校正(附MATLAB仿真对比)

本文提供了一份基于Vivado DDS IP核实现FPGA数字下变频(DDC)的完整工程指南。详细阐述了IQ采样的原理、DDC链路构建、DDS频率校正的工程实现,并重点介绍了如何利用MATLAB搭建黄金参考模型进行全链路仿真与对比验证,分享了关键的调试技巧与性能优化建议。

t1u2v的博客 810

将 java 项目部署到 linux 上的具体步骤

项目部署其实非常的简单,尤其是 java 项目。最近微信群里有网友,初学者还未毕业,问我 Java 项目是如果部署的? 我让他百度搜索,谁知他搜索了,半天发给我了 4 个链接! https://download.youkuaiyun.com/download/jjn311402/9722324 https://download.youkuaiyun.com/download/wazheng/4914235 htt...

xmt1139057136的专栏 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Linux下发布java项目(jar包)

最近做了Linux下的项目发布,记录一下过程。 首先Linux要准备的环境,java8,nginx这些必备的环境。 第一步:将Java项目进行打jar包。 打包完成之后,会出现如下图所示。 第二步:给前端项目进行打包 npm run build 第三步:使用工具连接linux。(这里使用的是xshell和winscp) 使用命令:mkdir 创建好相应的文件夹。 第四步:通过工具,将对应...

qq_35529931的博客 4391

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

linux 下如何发布java项目

linux 下如何发布java项目 1、在eclipse或者myEclipse上将项目打好包(war) 右击项目/export.../java EE/war file 2、使用ftp将war包上传至linux服务器,并在webapps下创建一个文件夹demo,用于存放解压的项目 mkdir demo 3、将war包移动到demo文件夹中 mv demo.war demo/ 4、解

Isnotsuitable的专栏 4165

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

关于LINUX系统的项目配置及发布

Linux系统中的项目发布配置流程 在Linux中安装jdk,并对jdk的环境变量进行配置,配置路径/usr/local/src/source /etc/profile,安装完成之后通过Java -version指令查看jdk配置是否成功 在Linux系统中安装数据库mriaDB 1.数据库的安装和启动 2.数据库初始化 3.切换数据库mysql 4.修改数据库表 5.刷新数据库权限 三.配置防火墙 1.检查防火墙状态 2.防火墙配置,开机不需...

qq_59612674的博客 1699

java项目发布到Linux

java发布到linux下

阿乐的博客 1673

java项目发布到Linux环境

java项目发布到Linux环境简单流程步骤: 1:打开idea项目。在右侧找到maven ,有需要打包的项目,确定需要发布的项目 , 打开 Lifecycle 选择package。 点击:package 如果打包报版本号不对的错,选择右上角的 如图小工具 打开,选择安装的额jdk版本。 第二步:打包完成后,找到打包的文件夹: 打开文件夹 找到对应的项目: 点击 show in Explorer 把该jar包拷贝到Liunx服务器上,其他的所有文件夹不需要管, (.

xulong5000的专栏 1481

Linux安装Tomcat并发布项目

如果你使用的是服务器,记得去安全组添加8080端口。

一切总会归于平淡 3726

linux之项目部署与发布

现在我们可以去测试一下,我们不需要输入端口号就自动访问的tomcat,会在3个端口中选择一个端口进入,当然你们也可以自己去测试一下,把其中的一个tomcat停了,看它是否还能进入tomcat。1)把我们后端项目,cp到/usr/local/java/apache-tomcat-8.5.20/webapps当中。首先先去准备tomcat,我这边在tomcat的根目录,复制了两个,一个是8081,一个是8082。cd /切换到8081的/conf/,这个上面我们说了,这个是用来配置环境文件的。

2302_76705099的博客 2311

完整项目学习-10项目发布即在linux系统中完成部署

文章目录1. 部署JDK1.1 上传JDK1.2 解压压缩包1.3 删除安装文件1.4 修改JDK名称1.5 检查JDK是否有效1.6 JDK环境变量配置2 Linux 项目部署2.1 项目搭建流程2.2 Linux安装Mariadb数据库2.3 后端项目发布2.3.1 后端项目修改2.3.2 后端项目打包2.3.3 上传jar包文件2.3.4 发布项目2.3.5 项目测试2.4 jar包文件项目启动报错说明2.5 关于Linux 进程项说明2.5.1 查询进程2.5.2 杀死进程2.6 项目后台发布2.6

星是河的眼的博客 3533

linux下 docker和发布java服务 使用命令大全

docker使用介绍linux下操作命令Docker中上传,拉取镜像到docker hub中宝塔linux命令大全 linux下操作命令 拉取镜像 docker pull centos:7.2.1511 使用镜像创建1个容器,映射主机6666端口与容器内8888端口 docker run -d -it -p 8888:8888 -p 6666:80 centos:7.2.1511 一般我们再......

beyond的博客 6393

Linux项目发布

文章目录部署JDK上传JDK解压压缩包删除安装文件修改JDK名称检查JDK是否有效JDK环境变量配置补充知识浏览器自动将http转化为https问题设定安全策略Linux 项目部署项目搭建流程Linux安装Mariadb数据库后端项目发布后端项目修改后端项目打包上传jar包文件发布项目项目测试jar包文件项目启动报错说明关于Linux 进程项说明查询进程杀死进程项目后台发布前台发布测试后台发布安装Nginx服务器下载Linux版本Nginx上传到指定目录下解压/删除/改名Nginx 安装步骤配置安装文件安装

Javaciyuwolilian的博客 213

在linux发布项目

1.安装jdk a.检测是否安装了jdk 运行java -version b.若有需要将其卸载 c.查看安装那些jdk rpm -qa | grep java d.卸载 先卸载 openjdk 1.7 rpm -e --nodeps 卸载的包 rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686 再卸载 openjdk 1.6...

Those who achieve great thing do not stick to trifles 1437

Linux的常用命令及项目的发布

为什么用Linux系统: linux是开源系统,免费; linux由于内部算法复杂安全性高,很少有病毒侵入 linux是多用户、多任务系统,windows是单用户,多任务 linux是模块化、组件化,可以任意关闭不需要的功能,windows只要微软才有此权限 linux系统对硬件支持的要求低,节约成本; 目录结构: Linux的常用命令: CD命令: ipaddr 检查IP地址 pwd 检查当前的位置 tab键 自动补齐(注意唯一性) cd命令是linux中最基本的命令语...

Yjh_pythonking的博客 656
上一篇: 领域模型驱动设计(Domain Driven Design)入门概述
下一篇: linux 发布java项目所遇到的错误 linux unable to create default
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值