热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

日志管理与ftp。samba,nfs

1、描述rsyslog日志服务,并提供带web展示的日志服务器rsyslog日志服务简介?日志的概念好理解,日志作用可用于排障和追溯审计的等?1、rsyslog是一个CS架构的服务

1、描述rsyslog日志服务,并提供带web展示的日志服务器

rsyslog日志服务简介

? 日志的概念好理解,日志作用可用于排障和追溯审计的等

? 1、rsyslog是一个C/S架构的服务,可监听于某套接字,帮其它主机记录日志信息,在linux系统中可以分类两个日志:

? klogd:kernel,记录内核相关的日志

? syslogd:service,记录应用程序的日志

rsyslog:是CentOS 6以后的系统使用的日志系统,与之前的syslog日志系统相比,具有以下优点:

? 支持多线程

? 支持TCP、SSL、TLS、RELP等协议

? 强大的过滤器,可实现过滤日志信息中的任意部分

? 支持自定义输出格式

? 适用于企业级别日志记录需求

? 模块化


先实现rsyslog存储在数据库中

安装包

yum install mariadb-server rsyslog-mysql(rsyslog与数据库交互的包)

加载ommysql模块写入rsyslog.conf配置文件

rpm -ql rsyslog-mysql

/usr/lib64/rsyslog/ommysql.so

/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql

技术图片
 
技术图片
 

加入一行。将日志保存至数据库一份

*.info;mail.none;authpriv.none;cron.none :ommysql:192.168.242.129,Syslog,test,centos

技术图片
 

在数据库中创建账号

grant all on Syslog.* to test@‘%‘ identified by ‘centos‘;

创建表 可以直接跑rsyslog-mysql包中的sql脚本,会自动生成rsyslog的数据库,导入完成后重启rsyslog服务即可

mysql -uroot -pcentos


实现lamp及日志web方式日志

yum install httpd php php-mysql mariadb-server 。

下载loganalyzer https://loganalyzer.adiscon.com/downloads/loganalyzer-v4-1-7-v4-stable/

解压loganalyzer-4.1.7.tar.gz

进入loganalyzer目录。将源码src目录拷贝到httpd目录中

cp -r src/ /var/www/html/log命名成log目录

技术图片
 

点击here进入页面

技术图片
 

点击next

技术图片
 

发现log目录中有一个config.php文件不存在

技术图片
 

手动创建config.php文件,并且权限改成666

touch /var/www/html/log/config.php && chmod 666 /var/www/html/log/config.php

也可以使用安装目录中的configure.sh脚本配置权限。注意。要在httpd的目录中,而configuer.sh在loganalyze目录。需要移动至httpd目录

技术图片
 

如果还是提示不可写入的话,可以使用一下命令

[root@loganalyzer ~]# cd /var/www/html/loganalyzer

[root@loganalyzer ~]# touch config.php

[root@loganalyzer ~]# chown apache:apache config.php

[root@loganalyzer ~]# chmod 777 config.php

[root@loganalyzer ~]# chcon -h -t httpd_sys_script_rw_t /var/www/html/loganalyzer/config.php

http://yallalabs.com/linux/how-to-setup-loganalyzer-with-rsyslog-on-centos-7-rhel-7/ 参考网址

技术图片
 
技术图片
 
技术图片
 

保持默认

技术图片
 

source Type 选择mysql。select view 和table type 都保持默认

选择数据库名,表明,注意大小写区分。输入账号及密码

技术图片
 
技术图片
 
技术图片
 

安装完成

2、描述vsftpd工作原理并以虚拟用户的方式提供ftp服务

File Transfer Protocol 早期的三个应用级协议之一

?基于C/S结构

?双通道协议:数据和命令连接

?数据传输格式:二进制(默认)和文本

?两种模式:服务器角度

主动(PORT style):服务器主动连接

命令(控制):客户端:随机port ---? 服务器:tcp21

数据:客户端:随机port ?---服务器:tcp20

被动(PASV style):客户端主动连接

命令(控制):客户端:随机port ---服务器:tcp21

数据:客户端:随机port ---服务器:随机port

服务器被动模式数据端口示例:

227 Entering Passive Mode (172,16,0,1,224,59)

服务器数据端口为:224*256+59

命令端口称为通信端口tcp21,主动被动都是以服务器角度来称呼的。

命令端口则没有主动被动一说,只有数据端口有主动和被动

虚拟用户:

虚拟用户会同意映射为一个指定的系统账号:访问共享位置,即为次系统账号的家目录,各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定

虚拟用户账户账号可放在文件或者数据库中

文件,编辑文本文件,需要被编码为hash格式,奇数行为用户名,偶数行为密码


首先,安装vsftpd提供ftp服务。yum install vsftpd -y

进入配置目录创建用户名密码

一、创建用户数据库文件,格式为奇数行为用户名,偶数行为密码

• vim /etc/vsftpd/vusers.txt

user1

centos

user2

centos

• cd /etc/vsftpd/

• db_load -T -t hash -f vusers.txt vusers.db

• chmod 600 vusers.db 更改权限

技术图片
 

将文本文件转换成为特殊格式的数据库文件

db_load -T -t hash -f vusers.txt vusers.db

创建一个操作系统账号及家目录作为ftp的根目录

mkdir /data/ftproot

useradd -s /sbin/nologin -r -d /data/ftproot vuser

修改ftp根目录所有者

chown vuser.vuser /data/ftproot 作为ftp根需要注意权限。根上不能有写权限,但子目录可以

mkdir /data/ftproot/upload 创建子目录

setfacl -m u:vuser:rwx /data/ftproot/upload 单独赋予vuser权限

接下来让ftp服务可以调用刚创建的用户账号的数据库文件,

vim /etc/pam.d/vsftpd.db #在pam模块中修改调用的ftp配置文件,

auth required pam_userdb.so db=/etc/vsftpd/vusers #验证用户账号数据库

account required pam_userdb.so db=/etc/vsftpd/vusers

在ftp配置文件中修改调用的pam模块

引用刚生成的配置文件

guest_enable=YES  所有系统用户都映射成guest用户

guest_username=ftp  配合上面选项才生效,指定guest用户

技术图片
 

重启服务 systemctl restart vsftpd

客户端连接ftp服务器

技术图片
 

、虚拟用户建立独立的配置文件

mdkir /etc/vsftpd/vusers.d/ 创建配置文件存放的路径

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers.d/

允许user1用户可读写,其它用户只读

vim user1 创建各用户自已的配置文件

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

技术图片
 

user1可以实现上传

user2则不能上传

技术图片
 

实现登陆目录分离

创建user2文件,写入local_root=/data/ftproot2/

技术图片
 

[root@centos7 vusers.d]# mkdir /data/ftproot2 创建文目录及文件

[root@centos7 vusers.d]# echo a > /data/ftproot2/a.txt

user2登陆和user1的登陆目录分离

技术图片
 

如果需要user2实现下载。则加入几行命令即可

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES


实现基于mysql验证的vsftpd虚拟用户

说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库

服务器

一、安装所需要包和包组:

在数据库服务器上安装包:

 Centos7:在数据库服务器上安装

yum –y install mariadb-server

systemctl start mariadb.service

systemctl enable mariadb

在FTP服务器上安装vsftpd和pam_mysql包

centos6:pam_mysql由epel6的源中提供

yum install vsftpd pam_mysql

yum -y install mariadb-devel pam-devel vsftpd

https://downloads.mariadb.org/mariadb-galera/5.5.63/ centos7需下载源码

centos7:

yum -y groupinstall "Development Tools"下载编译包组便宜源码pam_mysql

yum -y install mariadb-devel pam-devel vsftpd #安装开发相关的包

tar xf pam_mysql-0.7RC1.tar.gz 解压包

进入pam_mysql解压目录执行编译

./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr

make && make install

系统会自动将pam_mysql模块放入/etc/pam.d/目录中

二、在数据库服务器上创建虚拟用户账号

• 1.建立存储虚拟用户数据库和连接的数据库用户

mysql> CREATE DATABASE vsftpd;

mysql> SHOW DATABASES;

? ftp服务和mysql不在同一主机:

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@‘192.168.%.%‘ IDENTIFIED BY ‘centos‘;

2.准备相关表

mysql> USE vsftpd;

Mysql> SHOW TABLES;

mysql> CREATE TABLE users (

id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

name CHAR(50) BINARY NOT NULL,

password CHAR(48) BINARY NOT NULL

);

技术图片
 

创建记录,对应虚拟用户账户密码

insert users(name,password)values(‘ftp1‘,password(‘centos‘)),(‘ftp2‘,password(‘centos‘));

技术图片
 

三、在FTP服务器上配置vsftpd服务

?1.在FTP服务器上建立pam认证所需文件

vi /etc/pam.d/vsftpd.mysql 添加如下两行

auth required pam_mysql.so user=vsftpd passwd=centos

host=192.168.64.136 db=vsftpd table=users usercolumn=name

passwdcolumn=password crypt=2

account required pam_mysql.so user=vsftpd passwd=centos

host=192.168.64.136 db=vsftpd table=users usercolumn=name

passwdcolumn=password crypt=2

修改ftp配置文件调用pam的模块

技术图片
 
技术图片
 

之后重启服务即可利用数据库

3、部署nfs、samba并提供Windows用户访问

NFS:Network File System 网络文件系统,基于内核的文件系统。Sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure Call Protocol远程过程调用)实现

?RPC采用C/S模式。客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行

?NFS优势:节省本地存储空间,将常用的数据,如home目录,存放在NFS服务器上且可以通过网络访问,本地终端将可减少自身存储空间的使用

技术图片
 

需要安装nfs-utils管理nfs文件系统

yum install nfs-utils

rpcinfo -p 查看rpcbind服务列出来的nfs随机端口列表

systemctl start nfs 启动 nfs服务

mkdir /data/nfsdir1 创建目录作为nfs的共享

修改nfs的共享配置文件,加入需要共享的目录

vim /etc/exports

/data/nfsdir1 *

重启服务配置文件即可生效

exportfs -r 也可以使用此命令重新加载配置文件 -au 暂停共享 -a 启用

技术图片
 

出现了警报,但是不影响正常使用

 showmount -e 192.168.242.128 在目标网络中查看被共享的文件夹

Export list for 192.168.242.128:

/data/nfsdir1 * #*表示所有客户端,

挂载成功

技术图片
 

默认情况下。共享出来为只读方式

/data/nfsdir1 *(rw) 在服务器配置文件中写入 rw ,

文件系统开启,但是用户账户权限对服务器的nfsdir1目录不足

cd /data/nfs1/

[root@centos7 nfs1]# ls

[root@centos7 nfs1]# touch a1

touch: cannot touch ‘a1’: Permission denied

在服务器给定nfsnobody权限即可,nfs访问时默认会以nfsnobody身份连接服务器。默认用root用户挂载服务器目录中会被压榨成普通用户权限。

exportfs -v 查看共享属性

root_squash 选项为将root身份权限压榨成普通权限。可以在配置文件中修改

/data/nfsdir1 *(rw,no_root_squash) 不压榨root用户权限

技术图片
 

[root@centos7 ~]# setfacl -m u:nfsnobody:rwx /data/nfsdir1/

技术图片
 

换成其他用户。创建文件时权限不足

[centos@centos7 nfs1]$ touch cenots1.txt

touch: cannot touch ‘cenots1.txt’: Permission denied

[centos@centos7 nfs1]$

在客户机上普通用户的uid会映射成服务器的对应uid的用户,如果服务器的uid的用户对此目录没有权限。则也没有在目录中写的权限

可以根据自己的需要写入指定的ip,或者ip地址范围能写。

[root@centos7 ~]# vim /etc/exports

/data/nfsdir1 *(sync,rw)

/data/nfsdir2 192.168.242.128(sync,rw) 192.168.242.0/24(ro)

在windows中要使用nfs需要开启一个nfs的插件

技术图片
 
技术图片
 

将目录映射成一个Windows磁盘

技术图片
 
技术图片
 
技术图片
 

/data/nfsdir1 *(sync,rw,anOngid=2000,abibgud=2000),此项配置可以将用户账号映射成服务器端的相应账号

如果需要永久挂载。则需要写入fstab文件中

技术图片
 

nfs实现自动挂载。

客户机需要安装autofs包

yum install autofs 

技术图片
 

当我们访问/misc/nfs时。则系统会自动讲远程nfs挂载到我们指定的路径下


samba 软件是用cifs协议。cifs为文件系统,跟nfs文件系统相似,可以实现windows和linux的文件互相共享

安装samba服务

yum install samba

samba有两个服务单元。nmb服务可以解析主机名

/usr/lib/systemd/system/nmb.service

/usr/lib/systemd/system/smb.service

启动服务,139.445为samba服务的tcp端口

技术图片
 

需要创建系统账号,给samba使用

[root@centos7 /]# useradd -s /sbin/nologin smbuser1

[root@centos7 /]# useradd -s /sbin/nologin smbuser2

将系统账号加入samba虚拟账号,并设置密码

技术图片
 

samba账号默认存放在 /var/lib/samba/private/passwdb.tdb数据库文件中

在windows文件栏输入 \\192.168.242.128访问

技术图片
 

输入刚创建的smaba账号及密码即可

技术图片
 

实现特定的目录共享

每个共享目录应该有独立的[ ]部分

?[共享名称] 远程网络看到的共享名称

?comment 注释信息

?path 所共享的目录路径

?public 能否被guest访问的共享,默认no,和guest ok 类似

?browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏

?writable=yes 可以被所有用户读写,默认为no

?read Only=no 和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读

?write list 三种形式:用户,@组名,+组名,用,分隔

如writable=no,列表中用户或组可读写,不在列表中用户只读

?valid users 特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔

vim /etc/samba/smb.conf 修改samba的配置文件

mkdir /data/smbshare 创建目录

修改配置文件加入目录路径

技术图片
 
技术图片
 

目前并不对share特定的共享目录不能写,还需要设置文件权限

需要修改配置文件中的权限

[share]

path=/data/smbshare

read Only= No 加入此行。消除只读的属性

技术图片
 

也可以在linux主机中实现挂载

技术图片
 

workgroup 指定工作组名称

?server string 主机注释信息

?netbios name 指定NetBIOS名

?interfaces 指定服务侦听接口和IP

?hosts allow 可用“,” ,空格,或tab分隔,默认允许所有主机访问,也可在每个共享独立配置,如在[global]设置,将应用并覆盖所有共享设置

IPv4 network/prefix: 172.25.0.0/24 IPv4前缀: 172.25.0.

IPv4 network/netmask: 172.25.0.0/255.255.255.0

主机名: desktop.example.com

以example.com后缀的主机名: .example.com

示例:

hosts allow = 172.25.

hosts allow = 172.25. .example.com

?hosts deny 拒绝指定主机访问

实现不用账号访问目录不同

技术图片
 

config file=/etc/samba/conf.d/%U 

用户独立的配置文件,写入配置文件,创建相应目录

mkdir /etc/samba/conf.d/

创建一个用户配置文件。为用户指向新的目录

技术图片
 

share目录为我们指向配置文件中的[share]的名称

技术图片
d

Log file=/var/log/samba/log.%m 不同客户机采用不同日志

log level = 2 日志级别,默认为0,不记录日志

开机自动挂载

•cat /etc/fstab 可以用文件代替用户名和密码的输入

//server/homes /mnt cifs credentials=/etc/smb.txt 0 0

•cat /etc/smb.txt

username=wang

password=password

•chmod 600 /etc/smb.txt

4、在两台服务器上部署inotify+rsync同步服务器A上的/data/backup目录至服务器B

实现实时同步

inotify:

异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件

?要利用监控服务(inotify),监控同步数据服务器目录中信息的变化

?发现目录中数据产生变化,就利用rsync服务推送到备份服务器上

inotify+rsync 方式实现数据同步

实现inotify软件:

inotify-tools,sersync,lrsyncd

inotify+rsync使用方式

?inotify 对同步数据目录信息的监控

?rsync 完成对数据的同步

?利用脚本进行结合

查看服务器内核是否支持inotify

?Linux下支持inotify的内核最小为2.6.13

?ll /proc/sys/fs/inotify #列出下面的文件,说明服务器内核支持inotify

-rw-r--r-- 1 root root 0 Dec 7 10:10 max_queued_events

-rw-r--r-- 1 root root 0 Dec 7 10:10 max_user_instances

-rw-r--r-- 1 root root 0 Dec 6 05:54 max_user_watches

max_queued_events:inotify事件队列最大长度,如值太小会出现 Event Queue Overflow 错误,默认值:16384

max_user_watches:可以监视的文件数量(单进程),默认值:8192

max_user_instances:每个用户创建inotify实例最大值,默认值:128

inotify参考文档

https://github.com/rvoicilas/inotify-tools/wiki

安装:基于epel源

yum install inotify-tools #基于epel源

Inotify-tools包主要文件:

?inotifywait: 在被监控的文件或目录上等待特定文件系统事件(open close delete等)发生,常用于实时同步的目录监控

?inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计

inotifywait命令常见选项

-m, --monitor 始终保持事件监听

-d, --daemon 以守护进程方式执行,和-m相似,配合-o使用

-r, --recursive 递归监控目录数据信息变化

-q, --quiet 输出少量事件信息

--timefmt 指定时间输出格式

--timefmt时间格式,参考 man 3 strftime

?%Y 年份信息,包含世纪信息

?%y 年份信息,不包括世纪信息

?%m 显示月份,范围 01-12

?%d 每月的第几天,范围是 01-31

?%H 小时信息,使用 24小时制,范围 00-23

?%M 分钟,范围 00-59

--format 指定的输出格式;即实际监控输出内容

-e 指定监听指定的事件,如果省略,表示所有事件都进行监听

--exclude 指定排除文件或目录,使用扩展的正则表达式匹配的模式实现

--excludei 和exclude相似,不区分大小写

-o, --outfile 打印事件到文件中,相当于标准正确输出

-s, --syslogOutput 发送错误到syslog相当于标准错误输出

create 文件或目录创建

? delete 文件或目录被删除

? modify 文件或目录内容被写入

? attrib 文件或目录属性改变

? close_write 文件或目录关闭,在写入模式打开之后关闭的

? close_nowrite 文件或目录关闭,在只读模式打开之后关闭的

? close 文件或目录关闭,不管读或是写模式

? open 文件或目录被打开

? moved_to 文件或目录被移动到监控的目录中

? moved_from 文件或目录从监控的目录中被移动

? move 文件或目录不管移动到或是移出监控目录都触发事件

? access 文件或目录内容被读取

? delete_self 文件或目录被删除,目录本身被删除

? unmount 取消挂载

? 示例: -e create,delete,moved_to,close_write

一次性监控/data/目录。

技术图片
 

如果data目录中的数据发生变化,则退出

技术图片
 

inotifywait -mrq /data 持续监控目录前台监控

技术图片
 

后台执行,将事件记录到/root/intofy.log中,并且设置时间格式,记录哪个目录的哪个事件

inotifywait -o /root/inotify.log -drq /data --timefmt "%Y-%m-%d  %H:%M" --format "%T %w%f event: %e"

当我们对/data/目录进行操作的时候,全部记录日志中

技术图片
 

监控特定的操作,创建,删除,移动,和修改才记录到日志中

inotifywait -mrq /data --timefmt "%F %H:%M" --format

"%T %w%f event: %;e" -e create,delete,moved_to,close_write

在192.168.64.136实现监控。在64.137机器上实现rsync服务远程拷贝监控的目录并拷贝至本机

搭建rsync服务器来实现同步

rsync服务搭建在另一台服务器中,

默认centos7自带有rsync包

修改配置文件

vi /etc/rsyncd.conf

uid = root #指定root身份运行

gid = root

use chroot = no

max cOnnections= 0 #最大连接数不限制

ignore errors #忽略 错误信息

exclude = lost+found/

log file = /var/log/rsyncd.log #

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsyncd.lock

reverse lookup = no

hosts allow = 192.168.64.0/24 #控制网段访问

[backup] 

path = /backup/ #需要将哪个目录和远程服务器同步

comment = backup #注释

read Only= no #取消只读

auth users = rsyncuser # 指定rsync账号来同步

secrets file = /etc/rsync.pass #虚拟用户密码

技术图片
 

在服务端生成虚拟账户验证文件。格式为用户名:密码

echo "rsyncuser:centos" > /etc/rsync.pass &&chmod 600 /etc/rsync.pass

创建backup备份的目录

rsync --daemon 利用daemon启动rsync服务。

客户端配置密码文件

echo "magedu" > /etc/rsync.pass

chmod 600 /etc/rsync.pass

客户端测试同步数据

rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@192.168.64.137::backup

技术图片
 

同步成功

技术图片
 

创建inotify_rsync.sh脚本

#!/bin/bash

SRC=‘/data/‘

DEST=‘rsyncuser@192.168.64.136::backup‘

inotifywait -mrq --timefmt ‘%Y-%m-%d %H:%M‘ --format ‘%T %w %f‘ -e create,delete,moved_to,close_write

${SRC} |while read DATE TIME DIR FILE;do

FILEPATH=${DIR}${FILE}

rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST &&

echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log

done

在需要监控的服务器上执行即可

日志管理与ftp。samba,nfs


推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
author-avatar
用最优秀的你去面对爱你的人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有