备注:
在7月10日记录之前遇到的问题及解决方法:
一:常见的访问问题:
- 403 Forbidden :(未有请求权限)
- 表示服务器理解请求但是拒绝执行它。这通常是由于服务器上的文件或资源没有正确的读、写或执行权限,或者是因为安全策略阻止了请求。
- 404 Not Found :(请求路径不对)
- 服务器无法根据客户端的请求找到资源(例如,一个网页或文件)。最常见的情况是用户输入了错误的URL或者请求的资源已经被移动或删除。
- 405 Method Not Allowed :(请求方式不对)
- 请求行中指定的方法不被允许用于请求的资源。例如,尝试对某个仅支持GET请求的资源执行POST操作。
关于nginx的配置:
以下是config文件:
#user nobody;
worker_processes 1;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
client_max_body_size 100m;
sendfile on;
keepalive_timeout 65;
upstream gateway {
server 127.0.0.1:9995;
}
server {
listen 9996;
server_name cdmz_server;
root E:\CDMZ_JUMP\jump_server\dist;
location / {
}
location ^~/api/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://gateway;
}
location ^~/blade-report/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_pass http://gateway;
}
location ^~/ureport/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_pass http://gateway;
}
}
}
9995端口是服务端口
9996用来代理:好处负载均衡,更安全
keepalive_timeout 65; 超时时间
client_max_body_size 100m; 文件上传100mb
window上命令查看防火墙开放的端口
这将列出所有配置的防火墙规则
netsh advfirewall firewall show rule name=all
二:低代码开发功能设计使用:
以一下自带的功能模块为例:
2.1功能设计:这个模块可以设计表单的页面,附带增删改查,分页,模糊查询,高级查询,且能根据数据字段灵活的展示想要的数据。的功能
2.2流程设计:改模块可以让发起的事项走流程,也就是相当有权限去审批事件
三,excel的常见功能用法:
3.1=VLOOKUP(L4,D:F,2,FALSE)
这个函数:根据L4的值去D-F查找,筛选第二列也就是E这个值,false是精准查找
3.2排序功能:
这样排出来的效果是:本人排在第一行,后面的也是他这一家人。
四,oracle重置密码
1.打开cmd命令窗口
2.登录,输入命令:
sqlplus/nolog
3.链接数据库,输入命令:
conn/as sysdba
4.修改密码,输入命令:
alter user 要修改密码的用户名 identified by 新的密码;
例如: alter user system identified by system;
五,oracle去除重复数据保留重复的一条数据
查询重复的数据:
--查重复值
select PEOPLE_NAME , CARD_ID ,TRAINING_NAME , TRAINING_UNIT , TRAINING_YEAR, count(*) as 条数 from RS_SPECIALITY_TRAINING where TRAINING_YEAR ='2023' group by TRAINING_HOUR , TRAINING_CREDIT , SEX , TRAINING_WAY , PEOPLE_NAME , TRAINING_NAME , POST_TRAINING_CATEGORY , TRAINING_CATEGORY , TRAINING_UNIT ,TRAINING_YEAR ,CARD_ID ,TRAINING_START_TIME ,TRAINING_END_TIME having count(*) > 1
以下更清楚:
select 户主姓名,户主身份证,成员姓名,成员身份证, count(*) as 条数 from --以上的户主姓名,户主身份证,成员姓名,成员身份证是筛选条件 WHERE ... group by 户主姓名,户主身份证,成员姓名,成员身份证 having count(*) > 1
select axcp0002, count(*) as 条数 from JZ_HDDX WHERE axcp0002 in (
'xxx' ) and bbex0011 BETWEEN to_date('2024-08-28 0:00:00' ,'YYYY-mm-dd hh24:mi:ss') AND to_date('2024-09-12 0:00:00' ,'YYYY-mm-dd hh24:mi:ss')
group by axcp0002 having count(*) > 1 ORDER BY MAX(bbex0011) DESC
未优化:
DELETE FROM RS_SPECIALITY_TRAINING
WHERE ROWID NOT IN
(SELECT MIN(ROWID)
FROM RS_SPECIALITY_TRAINING
group by TRAINING_HOUR , TRAINING_CREDIT , SEX , TRAINING_WAY , PEOPLE_NAME , TRAINING_NAME , POST_TRAINING_CATEGORY , TRAINING_CATEGORY , TRAINING_UNIT ,TRAINING_YEAR ,CARD_ID ,TRAINING_START_TIME ,TRAINING_END_TIME );
优化:
DELETE FROM RS_SPECIALITY_TRAINING
WHERE ROWID IN (
SELECT ROWID
FROM (
SELECT ROWID,
ROW_NUMBER() OVER (PARTITION BY TRAINING_HOUR, TRAINING_CREDIT, SEX, TRAINING_WAY, PEOPLE_NAME,
TRAINING_NAME, POST_TRAINING_CATEGORY, TRAINING_CATEGORY,
TRAINING_UNIT, TRAINING_YEAR, CARD_ID, TRAINING_START_TIME,
TRAINING_END_TIME
ORDER BY ROWID) AS rn
FROM RS_SPECIALITY_TRAINING
)
WHERE rn > 1
);
六,复制表
6.1 复制表结构和数据
CREATE TABLE tes AS
SELECT * FROM RS_SPECIALITY_TRAINING;
6.2复制表结构
create table tes LIKE
SELECT * FROM HD_APPLY_MAIN
6.3复制数据
INSERT INTO tes SELECT * FROM HD_APPLY_MAIN;
七,网路
NAT模式和桥接模式都是虚拟机网络配置 的两种方式,主要区别在于虚拟机与外部网络交互的方式
不同。
NAT (Network Address Translation,网络地址转换)模式:在文种模式下,虚拟机 和宿主机共享
一个对外的IP地址,虚拟机不能直接接触到外部网络,所有的网络连接请求都由宿主机进行转发。这
种方式的优点是设置简单,可以在没有额外IP地址的情况下使用。缺点是虚拟机不能作为服务器提供
服务,因为它没有自己的公网IP地址。
桥接模式:在这种模式下,虚拟机直接连接到宿主机所在的物理网络,它会从网络中获取自己的IP地
址,就像是网络中的一台独立的计算机。这样虚拟机就可以提供网络服务,其他设备可以直接访问虚
拟机。但是,这种模式需要在网络中有足够的IP地址供虚拟机使通,
总的来说,选择哪种模式主要取决于你的使用需求。如果你只是想让虚拟机可以访问Internet,那么
NAT模式应该就足够了。但是如果你希望虚拟机能提供网络服务那么你可能需要使用桥接模式。
这里就是说:应用服务器中访问数据库服务器,这两台服务器由一个外网ip接受,选择的模式决定了外网是否能够访问到服务器上的数据
这里的网路
在浏览器中输入 http://www.baidu.com/ 后执行的全部过程。
现在假设如果我们在客户端(客户端)浏览器中输入 http://www.baidu.com, 而 baidu.com 为要访问的服务器(服务器),下面详细分析客户端为了访问服务器而执行的一系列关于协议的操作:
- 1)客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
- 2)在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
- 3)客户端的网络层不用关系应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
- 4)客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
ZeroTier实现内网穿透详细教程
7.1内网穿透是。。。
内网穿透是一种技术,可以让你在家里或者公司里的电脑或设备,通过互联网被其他人访问,就好像这些设备直接连接在互联网上一样。
举个通俗易懂的例子:想象一下你在家里有一个摄像头监控宝贵的收藏品,你想随时随地都能通过手机或电脑查看监控画面。但是这个摄像头连接的是家里的Wi-Fi,不能直接被外部网络访问。这时候你可以使用内网穿透技术,通过一个中间服务器将家里的摄像头与外部网络连接起来,这样你就能随时通过互联网查看家里的监控画面了。这就是内网穿透的简单应用例子。
7.2内网穿透怎么去实现。。。
注册登陆:
要保存这个NETWORK ID
.Linux下载安装使用
下载安装
curl -s https://install.zerotier.com | sudo bash
添加刚刚获得的网络ID
sudo zerotier-cli join 网络ID
远程桌面复制不了:
- 启用远程桌面剪贴板。
- 重启rdpclip.exe进程。(粘贴的电脑上运行)
- 检查本地组策略。
- 使用远程看看(AnyViewer)远程桌面替代Win10远程桌面
八,记一下nvm命令
node -v 查看node版本
10 与 16 是个跨越
npm run dev 是启动后台前端
nvm list 是查看 nvm中下载的node(带*是现在使用运行的)
nvm user 。。。
切换node版本
九,关于Sealos
1.Sealos 是什么以 kubernetes 为内核的云操作系统
2.搭建项目
登录提供的网址创建账号:
这里可以直接部署项目。
十,凯莉老版本镜像下载
Index of /kali-images/kali-2019.1a/
十一,汇总各大数据库的curd
1.oracle
库:建库之前先建立用户和表空间
curd
create databaes xxx
drop
表
curd
SQL> create table table1(xm varchar(8));
drop xxx
delete from xxx
truncate table xxx
ALTER TABLE tes_hd_apply_main
ADD tesname VARCHAR2(100);
ALTER TABLE tes_hd_apply_main
DROP COLUMN tesname;
rename tes_hd_apply_main to tese_hd_apply_main;
SQL> insert into table1 values(weather);
insert into table1 (name,age) values('xiaowang','18');
delete from table1 where xxx
update table1 set name='xiaowang', age='18' where xxx
标注几个常用且特有的函数
1.SUBSTR(string,start,count)
取子字符串,从start开始,取count个
SQL> select substr(13088888888,3,8) from dual;
08888888
2.REPLACE(string,s1,s2)
string 希望被替换的字符或变量
s1 被替换的字符串
s2 要替换的字符串
SQL> select replace(he love you,he,i) from dual
i love you
- CONCAT
连接两个字符串;
SQL> select concat(010-,88888888)||转23 高乾竞电话 from dual;
高乾竞电话
010-88888888转23
4.TO_CHAR(date,format)
SQL> select to_char(sysdate,yyyy/mm/dd hh24:mi:ss) from dual;
TO_CHAR(SYSDATE,YY
2004/05/09 21:14:41
• 48.TO_DATE(string,format)
将字符串转化为ORACLE中的一个日期
5.TO_NUMBER
将给出的字符转换为数字
SQL> select to_number(1999) year from dual;
YEAR
1999
6.DISTINCT
去重
select DISTINCT axcp0002,axcp0004 from HD_SHARE_XCZX
7.GROUP BY
主要用来对一组数进行统计
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno;
DEPTNO COUNT(*) SUM(SAL)
10 3 8750
20 5 10875
30 6 9400
8.HAVING
对分组统计再加限制条件
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)>=5;
DEPTNO COUNT(*) SUM(SAL)
20 5 10875
30 6 9400
SQL> select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by deptno ;
DEPTNO COUNT(*) SUM(SAL)
20 5 10875
30 6 9400
9.ORDER BY
用于对查询到的结果进行排序输出
SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;
DEPTNO ENAME SAL
10 KING 5000
10 CLARK 2450
10 MILLER 1300
20 SCOTT 3000
20 FORD 3000
10.SUM
--
11.case when
SELECT
MAIN_IDCARD, -- 假设这是列名,注意没有空格
MAIN_NAME, -- 同样,假设这是列名,没有空格
CASE
WHEN BUSINESS_TYPE = '01' THEN '城镇低保'
WHEN BUSINESS_TYPE = '02' THEN '农村低保'
ELSE '未知类型'
END AS BUSINESS_TYPE_DESC -- 修改别名以避免与保留字冲突
FROM
HD_APPLY_MAIN -- 假设这是表名,注意没有空格和错误的字符
2.sqlserver
3.mysql
三、数据操纵语言DML (oracle对比sql server)
insert -- 与sql server一致
delete -- 与sql server一致
update -- 与sql server一致
select -- 与sql有些不一样
十二,windows 中 的docker
问题:
(HTTP code 500) server error - Ports are not available: exposing port TCP 0.0.0.0:3308 -> 0.0.0.0:0: listen tcp 0.0.0.0:3308: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
分析:和window上的端口冲突
netsh interface ipv4 show excludedportrange protocol=tcp
更改docker运行端口
docker run -p 11011:1101 -e MYSQL_ROOT_PASSWORD="123456" -d mysql:latest
下载ubunt
首先拉取镜像可以通过
docker pull 【镜像名】,例如docker pull ubuntu代表的则是拉取Ubuntu镜像
接着可以使用docker images查看本机中所有的镜像
最后可以使用docker run -itd --name ubuntu-test ubuntu /bin/bash命令启动一个容器实例,其中-itd表示以交互式终端切后台运行的模式启动即启动后容器仅在后台运行,不会进入容器实例,--name ubuntu-test 表示给该容器自定义的名字,ubuntu表示使用的镜像
如果想进入该容器可以使用命令docker exec -it 【CONTAINER ID】 /bin/bash
执行命令:
docker pull ubuntu
docker images
docker run -itd --name ubuntu-test ubuntu /bin/bash
docker exec -it a64316c45fab /bin/bash
docker run -it --privileged -dp 60004:23 --name test-ubuntul 镜像ubuntul /usr/sbin/init
apt-get update
apt-get install --reinstall sudo
(前面两个步骤是在执行后面的命令,出现sudo找不到安装方法 )
sudo apt install -y openssl openssh-server
vi etc/ssh/sshd.config
注:centos用yml,unbutu使用sudo
保存镜像的位置:
C:\Users\。。\AppData\Local\Docker\wsl\data
1.2win10系统 Docker 提示Docker Engine stopped
一、检查服务是否开启
**二、检查 **Hyper-V是否安装
windows控制面板》程序和功能》启用或关闭Windows功能》找到Hyper-V》全部勾选后,点击"确定",等待安装即可
三、检查 bcdedit的hypervisorlaunchtype是否为Auto
【win菜单】右键》选择 Windows PowerShell(管理员)
bcdedit
如果不是Auto 输入下面命令重启电脑
bcdedit /set hypervisorlaunchtype auto
四、检查CPU是否开启虚拟化
五、检查wsl 是否开启
管理员登陆运行命令:
wsl --update
最后重启:yes
十三,索引
CREATE TABLE BAK_HD_APPLY_MAIN AS SELECT * FROM HD_APPLY_MAIN WHERE 1=0;
查询
select * from all_IND_COLUMNS where table_name = 'BAK_HD_APPLY_MAIN';--15条 38s
创建
create index MAIN_NAME1 on BAK_HD_APPLY_MAIN (MAIN_NAME);
删除名称是MAIN_NAME1的索引
drop index MAIN_NAME1
删除表中所有的索引
DECLARE CURSOR idx_cursor IS SELECT index_name FROM user_indexes WHERE table_name = 'HD_APPLY_MAIN'; BEGIN FOR rec IN idx_cursor LOOP EXECUTE IMMEDIATE 'DROP INDEX ' || rec.index_name; DBMS_OUTPUT.PUT_LINE('Dropped index: ' || rec.index_name); END LOOP; END; /
十四,关于windows远程:
方式一
步骤:一,开启远程开放
二,关闭防火墙
三,建立连接
十五,关于windwos10家庭版,专业版激活
玛:
如果有问题激活服务器现在不可用
进行:打开
输 入cmd,然后在命令行中输入slmgr.vbs -skms zh.us.to,按回车键
然后再次激活:
专业版:应为企业版和专业版的一个激活码只能被500人公用
所以使用:KMSpico_setup
解压安装重启即可
十六,使用索引会失效以及原因:
1.1 失效情况:
1.%查询值要放在右边。
像%...和..%...都会失效。
方法解决:虚拟列
首先他在people上创建一个字段叫name_first的虚拟列,然后给name_first和age上创建一个联合索引,并且,让这个虚拟列的值总是等于name字段的前两个字节,虚拟列在插入数据的时候不能指定值,在更新的时候也不能主动修改,它的值会根据定义自动生成,在name字段修改的时候也会自动修改。有了这个新的联合索引,我们在找名字的第1个字是张,并且年龄为8的小朋友的时候,这个SQL语句就可以这么写:select * from t_people where name_first='张' and age=8。这样这个语句的执行过程,就只需要扫描联合索引的100万行,并回表100万次,这个优化的本质是我们创建了一个更紧凑的索引,来加速了查询的过程。
二十,maven
好久没用maven官网,记录下3.6.3的地址直接下载。