方法
主要处理的表
history,history_uint,events
1.脚本
#!/bin/bash
User="root"
Passwd="xx"
Date=`date -d $(date -d "-30 day" +%Y%m%d) +%s`
$(which mysql) -u${User} -p${Passwd} -e "
use zabbix;
DELETE FROM history WHERE 'clock' < 1473264000;
optimize table history;
DELETE FROM history_uint WHERE 'clock' < 1473264000;
optimize table history_uint;
"
CREATE TABLE `events` (
`eventid` bigint(20) unsigned NOT NULL,
`source` int(11) NOT NULL DEFAULT '0',
`object` int(11) NOT NULL DEFAULT '0',
`objectid` bigint(20) unsigned NOT NULL DEFAULT '0',
`clock` int(11) NOT NULL DEFAULT '0',
`value` int(11) NOT NULL DEFAULT '0',
`acknowledged` int(11) NOT NULL DEFAULT '0',
`ns` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`eventid`),
KEY `events_1` (`source`,`object`,`objectid`,`clock`),
KEY `events_2` (`source`,`object`,`clock`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
删除events碰到的问题
1.大表删除
ln evnets.ibd events.hdlk
2.删除外键关联的数据
https://stackoverflow.com/questions/1905470/cannot-delete-or-update-a-parent-row-a-foreign-key-constraint-fails
先查询父表events外键引用关系
SELECT * FROM information_schema.`KEY_COLUMN_USAGE`
WHERE referenced_table_name='events'
想要删除父表的数据,需要先禁用外键约束检查:
SET FOREIGN_KEY_CHECKS = 0;
如果主表delete设置为RESTRICT,那么从表无法删除数据,主表可以
如果主表delete设置为CASCADE,那么主从表都可以删除数据
RESTRICT的时候,主表如果有数据,从表肯定不能删除
3.rm -rf events.hdlk
2.分区
1
2
3
4
5
6
7
8
手动增加或者删除分区
MySQL
5.6
之前
ALTER TABLE `history_uint` ADD PARTITION p2011_10_23 VALUES LESS THAN (UNIX_TIMESTAMP(
"2011-10-24 00:00:00"
) ENGINE
=
InnoDB;
ALTER TABLE `history_uint` DROP PARTITION p2011_06;
MySQL5.
6
之后
ALTER TABLE `history_uint` ADD PARTITION (PARTITION p2016_05_16 VALUES LESS THAN (UNIX_TIMESTAMP(
"2016-05-17 00:00:00"
)) ENGINE
=
InnoDB);
ALTER TABLE `history_uint` DROP PARTITION p2016_05_16;
可以成功的 http://lihuipeng.blog.51cto.com/3064864/1561221
有一点需要注意,调用call如果是7天,那么7天后就不会分区了。
3.oneproxy或者mycat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
article规则配置:
"rule.dtd"
> =
"http://org.opencloudb/"
>
-
-
article 分区配置,按照
id
进行模
2.
-
-
>
user_id<
/
columns>
mod
-
long
<
/
algorithm>
<
/
rule>
<
/
tableRule>
=
"mod-long"
class
=
"org.opencloudb.route.function.PartitionByMod"
>
<
property
name
=
"count"
>
2
<
/
property
>
<
/
function><
/
mycat:rule>
配置service.xml:
=
"1.0"
encoding
=
"UTF-8"
?> "server.dtd"
> =
"http://org.opencloudb/"
>
<
property
name
=
"defaultSqlParser"
>druidparser<
/
property
>
<
/
system>
=
"mycat"
>
<
property
name
=
"password"
>mycat<
/
property
>
<
property
name
=
"schemas"
>mycat,blog_user,blog_category,blog_article<
/
property
>
<
/
user><
/
mycat:server>
数据库sequence生成
or
http:
/
/
blog.csdn.net
/
freewebsys
/
article
/
details
/
47003577
其中规则xml的配置如下:按照自然月进行分区,分区字段是create_date
=
"1.0"
encoding
=
"UTF-8"
?> "rule.dtd"
> =
"http://org.opencloudb/"
>
-
-
msg 分区配置,按照自然月进行分区,分区字段是create_date
-
-
>
create_date<
/
columns>
sharding
-
by
-
month<
/
algorithm> <
/
rule>
<
/
tableRule>
=
"sharding-by-month"
class
=
"org.opencloudb.route.function.PartitionByMonth"
>
<
property
name
=
"dateFormat"
>yyyyMMdd<
/
property
>
<
property
name
=
"sBeginDate"
>
20150101
<
/
property
>
<
/
function><
/
mycat:rule>
schema.xml配置:
=
"1.0"
?> "schema.dtd"
> =
"http://org.opencloudb/"
>
=
"mycat"
checkSQLschema
=
"false"
sqlMaxLimit
=
"100"
>
=
"MYCAT_SEQUENCE"
primaryKey
=
"name"
type
=
"global"
dataNode
=
"dataHost01"
/
>
<
/
schema>
=
"msg"
checkSQLschema
=
"false"
sqlMaxLimit
=
"100"
>
=
"msg"
primaryKey
=
"create_date"
dataNode
=
"nodeMsg201501,nodeMsg201502,nodeMsg201503,nodeMsg201504"
rule
=
"sharding-by-month"
/
>
<
/
schema>
-
-
按照月份进行拆分,一次做好一年的数据库。同时数据库中,可以根据实际情况在做mysql分区。
-
-
>
=
"nodeMsg201501"
dataHost
=
"dataHost01"
database
=
"msg_201501"
/
>
=
"nodeMsg201502"
dataHost
=
"dataHost01"
database
=
"msg_201502"
/
>
=
"nodeMsg201503"
dataHost
=
"dataHost01"
database
=
"msg_201503"
/
>
=
"nodeMsg201504"
dataHost
=
"dataHost01"
database
=
"msg_201504"
/
>
-
-
可以一直按月分区下去。
-
-
>
=
"dataHost01"
maxCon
=
"1000"
minCon
=
"10"
balance
=
"0"
writeType
=
"0"
dbType
=
"mysql"
dbDriver
=
"native"
>
select
1
<
/
heartbeat>
=
"hostM1"
url
=
"127.0.0.1:3306"
user
=
"root"
password
=
"root"
/
>
<
/
dataHost><
/
mycat:schema>
说明:这里按自然月分区需要使用
1.4
的版本。里面包括规则类
或者把这个类拷贝到
1.3
的jar里面也行
使用mycat可以大大提高数据库的存储能力,对于每月自然增长的数据,按月存储是最好的办法。
同时每一个组使用自己的
id
自增策略,都从
1
开始计算,
这样在查询历史数据的适合也按月进行迭代查询,当然所有牵扯到查询的sql都要修改,
修改成按月进行查询。把日期参数传入。数据库的扩展性增强了,
可以支持数据持续增长的业务了
详细步骤
使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构、表索引、表数据空间。我们可以将某个数据库目录直接迁移到其他数据库也可以正常工作。 然而当你使用InnoDB的时候,一切都变了。InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。 在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table参数,可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。 独立表空间 优点: 1.每个表都有自已独立的表空间。 2.每个表的数据和索引都会存在自已的表空间中。 3.可以实现单表在不同的数据库中移动。 4.空间可以回收(drop/truncate table方式操作表空间不能自动回收) 5.对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。 缺点: 单表增加比共享空间方式更大。 结论: 共享表空间在Insert操作上有一些优势,但在其它都没独立表空间表现好。 当启用独立表空间时,请合理调整一下 innodb_open_files 参数。 下面,就是一次针对线上Zabbix的MySQL数据库history历史记录过多导致ibdata1文件过大的实战解决步骤 1.查看文件大小 $ sudo cd /var/lib/mysql $ ls -lh total 14G -rw-r--r-- 1 root root 0 Dec 1 14:31 debian-5.1.flag -rw-rw---- 1 mysql mysql 5.0M Jan 17 21:31 ib_logfile0 -rw-rw---- 1 mysql mysql 5.0M Jan 17 21:29 ib_logfile1 -rw-rw---- 1 mysql mysql 14G Jan 17 21:31 ibdata1 drwx------ 2 mysql root 4.0K Dec 1 14:31 mysql -rw-rw---- 1 root root 6 Dec 1 14:31 mysql_upgrade_info drwx------ 2 mysql mysql 4.0K Jan 17 21:29 zabbix
共享表数据空间文件ibdata1大小已经达到了14G 登陆MySQL查看哪些表占用了空间 $ mysql -uroot -p mysql > select table_name, (data_length+index_length)/1024/1024 as total_mb, table_rows from information_schema.tables where table_schema='zabbix'; +-----------------------+---------------+------------+ | table_name | total_mb | table_rows | +-----------------------+---------------+------------+ | acknowledges | 0.06250000 | 0 | .... | help_items | 0.04687500 | 103 | | history | 9678.00000000 | 123981681 | | history_log | 0.04687500 | 0 | ... | history_text | 0.04687500 | 0 | | history_uint | 5386.98437500 | 57990562 | | history_uint_sync | 0.04687500 | 0 | ... | timeperiods | 0.01562500 | 0 | | trends | 54.54687500 | 537680 | | trends_uint | 100.53125000 | 1035592 | ... 103 rows in set (1.46 sec)
可以看到,history表的记录已经达到了9G,123981681条,即1亿2千万条,同时history_unit也比较大,达到了5G,约6千万条; 另外就是trends,trends_uint中也存在一些数据。 由于数据量太大,按照普通的方式delete数据的话基本上不太可能。 因为我们每天会自动发送数据报表,所以决定直接采用truncate table的方式来快速清空这些表的数据,再使用mysqldump导出数据,删除共享表空间数据文件,重新导入数据。 2.停止相关服务,避免写入数据 $ sudo /etc/init.d/zabbix-server stop $ sudo /etc/init.d/apache2 stop 3.清空历史数据 $ mysql -uroot -p mysql > use zabbix; Database changed mysql > truncate table history; Query OK, 123981681 rows affected (0.23 sec) mysql > optimize table history; 1 row in set (0.02 sec) mysql > truncate table history_uint; Query OK, 57990562 rows affected (0.12 sec) mysql > optimize table history_uint; 1 row in set (0.03 sec) mysql > truncate table trends; Query OK, 537680 rows affected (0.04 sec) mysql > optimize table trends; 1 row in set (0.02 sec) mysql > truncate table trends_uint; Query OK, 1035592 rows affected (0.02 sec) mysql > optimize table trends_uint; 1 row in set (0.01 sec)
4.备份数据 $ mysqldump -uroot -p zabbix > ~/zabbix.sql 5.停止数据库 $ sudo stop mysql 6.删除共享表空间数据文件 $ cd /var/lib/mysql $ rm ib* 7.增加innodb_file_per_table参数 $ sudo vim /etc/mysql/my.cnf 在[mysqld]下设置 1 innodb_file_per_table=1 8.启动MySQL $ sudo start mysql 9.查看参数是否生效 $ mysql -uroot -p mysql> show variables like '%per_table%'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | ON | +-----------------------+-------+ 1 row in set (0.00 sec)
10.重新导入数据 $ mysql -uroot -p zabbix < ~/zabbix.sql 11.编写每天自动清理数据的脚本,保留30天的数据 $ sudo vim /etc/cron.daily/clean_zabbix_olddata.sh #!/bin/bash DATE=`date -d "30 days ago"` CLOCK=`date +%s -d "${DATE}"` MYSQL="mysql -uroot -p zabbix" for TABLE in history trends do $MYSQL -e "DELETE FROM ${TABLE} WHERE clock < ${CLOCK};" $MYSQL -e "OPTIMIZE TABLE ${TABLE};" $MYSQL -e "DELETE FROM ${TABLE}_uint WHERE clock < ${CLOCK};" $MYSQL -e "OPTIMIZE TABLE ${TABLE}_uint;" done
12.最后,恢复相关服务进程 $ sudo /etc/init.d/zabbix-server start $ sudo /etc/init.d/apache2 start
注意 过程会报错
上面是说要求我们在启动的时候指定--skip-new或者--safe-mode选项来支持optimize功能
ALTER TABLE table.name ENGINE='InnoDB';
/usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/122-db.err --open-files-limit=65535 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock --port=3306 --skip-new
本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1859326,如需转载请自行联系原作者
你可能感兴趣的:(数据库,运维,开发工具)
5个坑?1个法则!数据库索引的最左前缀魔法揭秘:从10秒到0.1秒的逆袭!
墨瑾轩
数据库学习 数据库 oracle sql
关注墨瑾轩,带你探索编程的奥秘!超萌技术攻略,轻松晋级编程高手技术宝库已备好,就等你来挖掘订阅墨瑾轩,智趣学习不孤单即刻启航,编程之旅更有趣**最左前缀法则——数据库的“最左”情结**问题1:索引明明存在,为什么查询还是慢到怀疑人生?案例:--创建用户表CREATETABLEusers(idINTPRIMARYKEY,nameVARCHAR(50),ageINT,emailVARCHAR(100)
解决SpringBoot 连接数据库失败,报错Error querying database.
在SpringBoot项目中,想连接数据库查询数据时,发现页面报出“WhitelabelErrorPageThelastpacketsentsuccessfullytotheserverwas0millisecondsago.Thedriverhasnotreceivedanypacketsfromtheserver…”的错误,大致意思是:在连接数据库时出现意外,导致无法连接。出现上述情况,极大可
Mybatis与Spring的整合
知向谁边
1、MyBatis与Spring整合所需JAR包的种类MyBatis与Spring整合所需JAR包主要包括:Spring框架所需的JAR包、MyBatis框架所需的JAR包、MyBatis与Spring整合的中间JAR、数据库驱动JAR包,以及数据源所需的JAR包。2、MapperFactoryBean和MapperScannerConfigurerMapperFactoryBean是MyBati
零基础搭建免费IP代理池:从原理到实战的保姆级指南
傻啦嘿哟
关于代理IP那些事儿 tcp/ip 网络协议 网络
目录一、代理池的核心价值与底层原理二、环境搭建全流程详解2.1开发环境准备2.2核心组件安装三、核心配置深度解析3.1配置文件精要(setting.py)3.2自定义代理源开发四、核心模块实现原理4.1调度系统架构4.2代理验证算法五、运维实战技巧5.1性能优化策略5.2故障排查手册六、安全加固方案七、扩展升级路径八、典型问题解决方案九、性能基准测试十、合规使用指南一、代理池的核心价值与底层原理在
iOS 审核 4.3 (b) 【审核机制与未上架代码的数据库策略】
976503335
ios flutter swift ios开发 objective-c
提审但未上架的IPA代码是否会被录入苹果特征库?这个问题非常重要,因为这是解决4.3(b)的核心问题1.苹果如何处理未上架的IPA代码?假设1:会录入特征库理由:苹果需要从首次提审就防范“马甲包”,即使未上架,代码特征也可能被记录(尤其是因4.3被拒的应用)。技术上,提取二进制代码特征(如代码结构、第三方库、资源文件哈希等)的成本极低,苹果完全有能力建立全量数据库。问题:未上架的代码量远大于已上架
AI 技术重塑 IT 服务,解锁架构可视化的未来
腾讯云开发者
人工智能 架构
引言在当下时代,企业数字化转型已迈入深水区,传统的IT运维模式正面临着成本升高、效率瓶颈、服务质量难以保障等难题,在此时,架构可视化与AI技术的出现成为企业IT服务管理上新的突破口。架构可视化能够通过图形化手段,将复杂的系统架构直观呈现,提升系统设计的可理解性、可维护性和协作效率,降低认知门槛,帮助团队快速掌握系统全貌。应该如何在多云、混合云的复杂环境中实现统一管理?如何让IT架构从抽象的技术语言
Redis 线上操作最佳实践
阿贾克斯的黎明
java redis
在2024年9月19日,Redis作为一种高性能的内存数据库,在许多线上应用中发挥着重要作用。为了确保Redis在生产环境中的稳定运行和高效性能,以下是一些Redis线上操作的最佳实践。一、配置优化1.内存设置-根据实际需求合理设置Redis的内存限制。可以通过maxmemory参数来限制Redis使用的内存大小,避免因内存使用过多导致系统内存不足。-同时,设置合适的内存淘汰策略,如volatil
Redis-py 实战指南:从安装到向量索引,Python 操作 Redis 全解析
佑瞻
数据库与知识图谱 redis python 数据库 人工智能
在Python开发中,操作Redis数据库是很多场景下的刚需,而redis-py作为Redis官方推荐的Python客户端,更是我们绕不开的工具。但你是否在安装时踩过版本兼容的坑?是否在连接集群或配置TLS时犯过难?甚至想尝试向量索引却不知从何下手?今天我们就从基础到进阶,手把手带你玩转redis-py,让Python操作Redis变得简单又高效。一、redis-py安装:避坑指南首先,我们需要安
Go-Redis × 向量检索实战用 HNSW 在 Redis 中索引与查询文本 Embedding(Hash & JSON 双版本)
Hello.Reader
数据库 运维 缓存技术 golang redis embedding
1.场景与思路痛点:把“文本内容”转成向量后,如何在本地Redis里做近似向量搜索(KNN),而不依赖外部向量数据库?方案:利用HuggingFace模型sentence-transformers/all-MiniLM-L6-v2生成384维Float32向量;借助RediSearch的HNSW索引能力,在Hash或JSON文档里存储&查询向量;用go-redisv9的高阶API(FTCreate
Oracle分区表插入数据库时间时报ORA-14400
Indestructible
使用springdatajpa插入数据时,需要表中的createtime保存为数据库时间,而不是应用服务器时间,实现这个功能只需要在实体类上面加@DynamicInsert就可以了。代码如下:@Entity@Table(name="ENTITY")@DynamicInsertpublicclassEntity{@Column(nullable=false)privateDatecreatetime
2021-03-18 Linux进阶-from Biotrainee
乔帮主_d2ac
vim编辑器Vim编辑器:大多数Linux都会自带的文本编辑器。功能强大:代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。功能强大到其官方现在对自己的定位是“程序开发工具”Vim编辑器:三种模式image.png命令模式方向键或者hjkl^和$:快速到所在行的开头和末尾(用0也可以到开头)30j:向下移动30行(数字+方向进行快速移动)ctrl+f或b:上下翻页(forwa
AI 智能运维,重塑大型企业软件运维:从自动化到智能化的进阶实践
AI、少年郎
人工智能 运维 自动化
一、引言:企业软件运维的智能化转型浪潮在数字化转型加速的背景下,大型企业软件架构日益复杂,微服务、多云环境、分布式系统的普及导致传统运维模式面临效率瓶颈。AI技术的渗透催生了智能运维(AIOps)的落地,通过机器学习、大模型、智能Agent等技术,实现从"人工救火"到"智能预防"的范式转变。本文结合头部企业实践,解析AI在运维领域的核心应用场景、技术架构及未来趋势,特别针对基础运维中流程重构、技术
Spring AI 概述与功能简介
drebander
AI 编程 spring 人工智能 java
SpringAI是一个由Spring团队开发的开源框架,旨在为人工智能(AI)和机器学习(ML)提供一个成熟且高效的开发平台。它将Spring生态系统的设计理念应用于AI开发,尤其强调模块化、可移植性以及简洁的集成。SpringAI提供了丰富的功能,涵盖从AI模型的调用到与数据库的集成等多个方面,帮助开发者构建和管理AI驱动的应用程序。1.SpringAI背景SpringAI的背景源于Spring
RabitQ 量化:既省内存又提性能
大禹智库
《向量数据库指南》 《实战AI智能体》 人工智能 AI自动化 大禹智库 AI智能体 向量数据库
突破高维向量内存瓶颈:MlivusCloudRaBitQ量化技术的工程实践与调优指南作为大禹智库高级研究员,拥有三十余年向量数据库与AI系统架构经验的我发现,在当今多模态AI落地的核心场景中,高维向量引发的内存资源消耗问题已成为制约系统规模化部署的“卡脖子”因素。特别是在大规模图像检索、个性化推荐系统和语义搜索引擎中,动辄数亿级别的向量数据需要实时处理,传统全精度索引方式会让内存资源消耗呈指数级增
python爬虫从入门到精通
大模型猫叔
python 爬虫 数据库
目录一、正确认识Python爬虫二、了解爬虫的本质1.熟悉Python编程2.了解HTML3.了解网络爬虫的基本原理4.学习使用Python爬虫库三、了解非结构化数据的存储1.本地文件2.数据库四、掌握各种技巧,应对特殊网站的反爬措施1.User-Agent2.Cookies3.IP代理五、学习爬虫框架,搭建工程化的爬虫1.创建Scrapy项目2.创建Spider3.编写Spider4.运行Spi
Node.js特训专栏-实战进阶:16. RBAC权限模型设计
爱分享的程序员
Node.js node.js 安全 算法 前端
欢迎来到Node.js实战专栏!在这里,每一行代码都是解锁高性能应用的钥匙,让我们一起开启Node.js的奇妙开发之旅!Node.js特训专栏主页专栏内容规划详情我将从RBAC权限模型的基础概念、核心组件讲起,详细阐述其设计原则、数据库模型设计,还会结合代码示例展示在实际开发中的实现方式,以及探讨模型的扩展与优化。RBAC权限模型设计:从理论到实战的完整方案在现代应用系统中,权限管理是保障数据安全
InfluxDB 数据模型:桶、测量、标签与字段详解(一)
计算机毕设定制辅导-无忧
# InfluxDB db
一、引言**在大数据和物联网蓬勃发展的当下,时间序列数据的处理需求呈爆发式增长。InfluxDB作为一款高性能的开源时序数据库,凭借其卓越的特性,在时序数据库领域占据了重要地位,被广泛应用于各种场景。InfluxDB专为时间序列数据设计,拥有高效的存储和查询性能。它采用独特的存储引擎,能够快速写入大量带有时间戳的数据,并支持灵活的查询操作。其核心设计针对时间序列数据的特点进行了优化,包括时间索引、
灰度发布实战:在生产环境中安全迭代功能
荣华富贵8
程序员的知识储备2 程序员的知识储备3 consul 服务发现 算法 网络 wpf
摘要随着互联网服务规模的不断扩大,如何在保证系统稳定性和用户体验的前提下快速迭代新功能,已经成为大型分布式系统运维和开发团队面临的核心挑战。灰度发布(GreyRelease或CanaryRelease)作为一种渐进式发布策略,通过对少量用户或流量进行新版本试运行,实时监控关键指标、收集用户反馈,从而在生产环境中实现安全的功能迭代和风险管控。本文以某大型电商平台灰度发布实战为例,深入探讨技术原理、系
FTP登录成功但无法LIST和下载文件的问题排查
桑汤奈伊伏
异常解决 ftp port模式 主动模式 无法下载 登录成功
问题背景:最近有一个系统对接需求,采用了古老的ftp交换文件方式来对接。于是我用了commons-net包的3.6版本来进行ftp的连接和文件的传输。连接ftp成功,登录也没问题,但是在传输文件的时候会卡住,程序没有往下走,一段时间后抛异常。传输文件的代码如下(顺便提一下如果你连都连不上,那先理清架构,问下你们运维是不是用了代理,如果用了代理,java代码里面需要设置使用代理连接)//初始化ftp
Flutter 入门指南:从基础到实战
介绍FlutterFlutter是Google开发的开源移动应用软件开发工具包(SDK),用于快速在iOS和Android上构建高质量的原生界面。Flutter的一大特点是其跨平台功能,让开发者能够使用同一套代码基础为两个平台构建应用。这一点通过Flutter的核心设计理念“一次编写,处处运行”得以实现。Flutter使用Dart语言进行编程,这是一种由Google开发的现代语言,旨在提供高性能和
[特殊字符] Spring Boot 常用注解全解析:20 个高频注解 + 使用场景实例
库库林_沙琪马
springboot spring boot 后端 java
一文掌握SpringBoot中最常用的20个注解,涵盖开发、配置、Web、数据库、测试等场景,配合示例讲解,一站式掌握!一、核心配置类注解1.@SpringBootApplication作用:标记为SpringBoot应用的入口类,包含了@Configuration、@EnableAutoConfiguration和@ComponentScan。使用场景:主启动类上唯一标注一次。@SpringBo
基于Python的Google Patents专利数据爬取实战:从入门到精通
Python爬虫项目
2025年爬虫实战项目 python 开发语言 爬虫 scrapy selenium
摘要本文将详细介绍如何使用Python构建一个高效的GooglePatents专利爬虫,涵盖最新技术如Playwright浏览器自动化、异步请求处理、反反爬策略等。文章包含完整的代码实现、性能优化技巧以及数据处理方法,帮助读者全面掌握专利数据采集技术。1.引言在当今知识经济时代,专利数据已成为企业技术研发、市场竞争分析的重要资源。GooglePatents作为全球最大的专利数据库之一,收录了来自全
openGauss数据库源码解析 | openGauss简介(七)
openGauss小助手
数据库 openGauss
1.5.5数据库安全1.访问控制管理用户对数据库的访问控制权限涵盖数据库系统权限和对象权限。openGauss数据库支持基于角色的访问控制机制(role-basedaccesscontrol,RBAC),将角色和权限关联起来,通过将权限赋予给对应的角色,再将角色授予给用户,可实现用户访问控制权限管理。其中登录访问控制通过用户标识和认证技术来共同实现,而对象访问控制则基于用户在对象上的权限,通过对象
Go 语言开发工具
沐知全栈开发
开发语言
Go语言开发工具引言Go语言,又称Golang,自从2009年由Google发布以来,凭借其简洁、高效、并发性能出色等特性,迅速在软件开发领域崭露头角。Go语言开发工具的丰富性也成为了其受欢迎的重要原因之一。本文将详细介绍Go语言开发过程中常用的一些工具,以帮助开发者提高工作效率。一、Go语言环境搭建1.Go语言安装首先,我们需要下载并安装Go语言环境。从官方网站(https://golang.o
第8天 | openGauss中一个数据库可以存储在多个表空间中
yBmZlQzJ
openGauss 数据库 oracle gaussdb opengauss
接着昨天继续学习openGauss,今天是第8天了。今天学习内容是o一个数据库可以存储在多个表空间中。老规矩,先登陆墨天轮为我准备的实训实验室root@modb:~#su-ommomm@modb:~$gsql-r作业要求1.创建表空间newtbs1、ds_location1,查看表空间omm=#CREATETABLESPACEnewtbs1RELATIVELOCATION'tablespace/t
第7天 | openGauss中一个数据库中可以创建多个模式
yBmZlQzJ
openGauss 数据库 oracle opengauss
接着昨天继续学习openGauss,今天是第7天了。今天学习内容是openGauss数据库、用户和模式的关系和访问方式,理解模式是在数据库层面,用户是在实例层面。今早去参加了区里的一个会议,学习来晚了点,抓紧交作业了。老规矩,先登陆墨天轮为我准备的实训实验室,并创建好表空间和数据库root@modb:~#su-ommomm@modb:~$gsql-romm=#CREATETABLESPACEmus
第9天 | openGauss中一个表空间可以存储多个数据库
yBmZlQzJ
openGauss 数据库 oracle postgresql opengauss
接着昨天继续学习openGauss,今天是第9天了。今天学习内容是o一个数据库可以存储在多个表空间中。老规矩,先登陆墨天轮为我准备的实训实验室root@modb:~#su-ommomm@modb:~$gsql-r作业要求1.创建表空间newtbs1omm=#CREATETABLESPACEnewtbs1RELATIVELOCATION'tablespace/tablespace_1';CREATE
到底DB::listen(function ($query) { ... });为什么是回调函数?
快点好好学习吧
Laravel 数据库
DB::listen(function($query){...});是Laravel中用于监听数据库查询的一个方法。它的核心作用是通过回调函数捕获和处理每个执行的SQL查询及其相关信息。这种设计的选择(使用回调函数)是基于灵活性、解耦性和事件驱动架构的考虑。1.为什么使用回调函数?在DB::listen()方法中,使用回调函数的主要原因包括:a)灵活性回调函数允许开发者以灵活的方式处理每个查询事件
Android8.0一些系统数据库的变更总结
留给时光吧
1.SettingsProvider之前的一些系统设置内容如亮度、音量大小等都存储在settings.db这个数据库中,但在8.0上数据库不见了。在8.0上都存在几个xml文件中了,其实从6.0开始就已经开始了这种操作,只不过6.0上并没有删除原始数据库,从7.0开始系统删除了原始数据库。简单看一下源码:android\frameworks\base\packages\SettingsProvid
Python,Go开发光电效应与日常应用APP
Geeker-2025
python golang
以下是一个基于Python与Go开发的光电效应科普与应用APP的完整技术方案,结合了物理原理模拟、实时数据处理及生活场景应用,参考了工业级开发实践(如光电实验数据处理和能源设备控制):---###一、系统架构设计```mermaidgraphLRA[Go微服务层]-->B[Python科学计算层]A-->C[数据库/物联网]B-->D[硬件接口]D-->E[传感器/实验设备]subgraph前端A
Enum 枚举
120153216
enum 枚举
原文地址:http://www.cnblogs.com/Kavlez/p/4268601.html Enumeration
于Java 1.5增加的enum type...enum type是由一组固定的常量组成的类型,比如四个季节、扑克花色。在出现enum type之前,通常用一组int常量表示枚举类型。比如这样:
public static final int APPLE_FUJI = 0
Java8简明教程
bijian1013
java jdk1.8
Java 8已于2014年3月18日正式发布了,新版本带来了诸多改进,包括Lambda表达式、Streams、日期时间API等等。本文就带你领略Java 8的全新特性。
一.允许在接口中有默认方法实现
Java 8 允许我们使用default关键字,为接口声明添
Oracle表维护 快速备份删除数据
cuisuqiang
oracle 索引 快速 备份 删除
我知道oracle表分区,不过那是数据库设计阶段的事情,目前是远水解不了近渴。
当前的数据库表,要求保留一个月数据,且表存在大量录入更新,不存在程序删除。
为了解决频繁查询和更新的瓶颈,我在oracle内根据需要创建了索引。但是随着数据量的增加,一个半月数据就要超千万,此时就算有索引,对高并发的查询和更新来说,让然有所拖累。
为了解决这个问题,我一般一个月会进行一次数据库维护,主要工作就是备
java多态内存分析
麦田的设计者
java 内存分析 多态原理 接口和抽象类
“ 时针如果可以回头,熟悉那张脸,重温嬉戏这乐园,墙壁的松脱涂鸦已经褪色才明白存在的价值归于记忆。街角小店尚存在吗?这大时代会不会牵挂,过去现在花开怎么会等待。
但有种意外不管痛不痛都有伤害,光阴远远离开,那笑声徘徊与脑海。但这一秒可笑不再可爱,当天心
Xshell实现Windows上传文件到Linux主机
被触发
windows
经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下;之前我的做法现在看来好笨好繁琐,不过也达到了目的,笨人有本方法嘛;
我是怎么操作的:
1、打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面;(经常第一步都不顺利,无法挂载Windo
类的加载ClassLoader
肆无忌惮_
ClassLoader
类加载器ClassLoader是用来将java的类加载到虚拟机中,类加载器负责读取class字节文件到内存中,并将它转为Class的对象(类对象),通过此实例的 newInstance()方法就可以创建出该类的一个对象。
其中重要的方法为findClass(String name)。
如何写一个自己的类加载器呢?
首先写一个便于测试的类Student
html5写的玫瑰花
知了ing
html5
<html>
<head>
<title>I Love You!</title>
<meta charset="utf-8" />
</head>
<body>
<canvas id="c"></canvas>
google的ConcurrentLinkedHashmap源代码解析
矮蛋蛋
LRU
原文地址:
http://janeky.iteye.com/blog/1534352
简述
ConcurrentLinkedHashMap 是google团队提供的一个容器。它有什么用呢?其实它本身是对
ConcurrentHashMap的封装,可以用来实现一个基于LRU策略的缓存。详细介绍可以参见
http://code.google.com/p/concurrentlinke
webservice获取访问服务的ip地址
alleni123
webservice
1. 首先注入javax.xml.ws.WebServiceContext,
@Resource
private WebServiceContext context;
2. 在方法中获取交换请求的对象。
javax.xml.ws.handler.MessageContext mc=context.getMessageContext();
com.sun.net.http
菜鸟的java基础提升之道——————>是否值得拥有
百合不是茶
1,c++,java是面向对象编程的语言,将万事万物都看成是对象;java做一件事情关注的是人物,java是c++继承过来的,java没有直接更改地址的权限但是可以通过引用来传值操作地址,java也没有c++中繁琐的操作,java以其优越的可移植型,平台的安全型,高效性赢得了广泛的认同,全世界越来越多的人去学习java,我也是其中的一员
java组成:
通过修改Linux服务自动启动指定应用程序
bijian1013
linux
Linux中修改系统服务的命令是chkconfig (check config),命令的详细解释如下: chkconfig
功能说明:检查,设置系统的各种服务。
语 法:chkconfig [ -- add][ -- del][ -- list][系统服务] 或 chkconfig [ -- level <</SPAN>
spring拦截器的一个简单实例
bijian1013
java spring 拦截器 Interceptor
Purview接口
package aop;
public interface Purview {
void checkLogin();
}
Purview接口的实现类PurviesImpl.java
package aop;
public class PurviewImpl implements Purview {
public void check
[Velocity二]自定义Velocity指令
bit1129
velocity
什么是Velocity指令
在Velocity中,#set,#if, #foreach, #elseif, #parse等,以#开头的称之为指令,Velocity内置的这些指令可以用来做赋值,条件判断,循环控制等脚本语言必备的逻辑控制等语句,Velocity的指令是可扩展的,即用户可以根据实际的需要自定义Velocity指令
自定义指令(Directive)的一般步骤
&nbs
【Hive十】Programming Hive学习笔记
bit1129
programming
第二章 Getting Started
1.Hive最大的局限性是什么?一是不支持行级别的增删改(insert, delete, update)二是查询性能非常差(基于Hadoop MapReduce),不适合延迟小的交互式任务三是不支持事务2. Hive MetaStore是干什么的?Hive persists table schemas and other system metadata.
nginx有选择性进行限制
ronin47
nginx 动静 限制
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;...
server {...
location ~.*\.(gif|png|css|js|icon)$ {
java-4.-在二元树中找出和为某一值的所有路径 .
bylijinnan
java
/*
* 0.use a TwoWayLinkedList to store the path.when the node can't be path,you should/can delete it.
* 1.curSum==exceptedSum:if the lastNode is TreeNode,printPath();delete the node otherwise
Netty学习笔记
bylijinnan
java netty
本文是阅读以下两篇文章时:
http://seeallhearall.blogspot.com/2012/05/netty-tutorial-part-1-introduction-to.html
http://seeallhearall.blogspot.com/2012/06/netty-tutorial-part-15-on-channel.html
我的一些笔记
===
js获取项目路径
cngolon
js
//js获取项目根路径,如: http://localhost:8083/uimcardprj
function getRootPath(){
//获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
var curWwwPath=window.document.locati
oracle 的性能优化
cuishikuan
oracle SQL Server
在网上搜索了一些Oracle性能优化的文章,为了更加深层次的巩固[边写边记],也为了可以随时查看,所以发表这篇文章。
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。(这点本人曾经做过实例验证过,的确如此哦!
Shell变量和数组使用详解
daizj
linux shell 变量 数组
Shell 变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
your_name="w3cschool.cc"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用ba
编程中的一些概念,KISS、DRY、MVC、OOP、REST
dcj3sjt126com
REST
KISS、DRY、MVC、OOP、REST (1)KISS是指Keep It Simple,Stupid(摘自wikipedia),指设计时要坚持简约原则,避免不必要的复杂化。 (2)DRY是指Don't Repeat Yourself(摘自wikipedia),特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性、简洁性,并且可能导致代码之间的矛盾。 (3)OOP 即Object-Orie
[Android]设置Activity为全屏显示的两种方法
dcj3sjt126com
Activity
1. 方法1:AndroidManifest.xml 里,Activity的 android:theme 指定为" @android:style/Theme.NoTitleBar.Fullscreen" 示例: <application
solrcloud 部署方式比较
eksliang
solrCloud
solrcloud 的部署其实有两种方式可选,那么我们在实践开发中应该怎样选择呢? 第一种:当启动solr服务器时,内嵌的启动一个Zookeeper服务器,然后将这些内嵌的Zookeeper服务器组成一个集群。 第二种:将Zookeeper服务器独立的配置一个集群,然后将solr交给Zookeeper进行管理
谈谈第一种:每启动一个solr服务器就内嵌的启动一个Zoo
Java synchronized关键字详解
gqdy365
synchronized
转载自:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。
同步机制可以使用synchronized关键字实现。
当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。
当s
js实现登录时记住用户名
hw1287789687
记住我 记住密码 cookie 记住用户名 记住账号
在页面中如何获取cookie值呢?
如果是JSP的话,可以通过servlet的对象request 获取cookie,可以
参考:http://hw1287789687.iteye.com/blog/2050040
如果要求登录页面是html呢?html页面中如何获取cookie呢?
直接上代码了
页面:loginInput.html
代码:
<!DOCTYPE html PUB
开发者必备的 Chrome 扩展
justjavac
chrome
Firebug:不用多介绍了吧https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench
ChromeSnifferPlus:Chrome 探测器,可以探测正在使用的开源软件或者 js 类库https://chrome.google.com/webstore/detail/chrome-sniffer-pl
算法机试题
李亚飞
java 算法 机试题
在面试机试时,遇到一个算法题,当时没能写出来,最后是同学帮忙解决的。
这道题大致意思是:输入一个数,比如4,。这时会输出:
&n
正确配置Linux系统ulimit值
字符串
ulimit
在Linux下面部 署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题;这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用 其实很容易就达到这个数量。下面说的是,如何通过正解配置来改正这个系统默认值。因为这个问题是我配置Nginx+php5时遇到了,所以我将这篇归纳进
hibernate调用返回游标的存储过程
Supanccy2013
java DAO oracle Hibernate jdbc
注:原创作品,转载请注明出处。
上篇博文介绍的是hibernate调用返回单值的存储过程,本片博文说的是hibernate调用返回游标的存储过程。
此此扁博文的存储过程的功能相当于是jdbc调用select 的作用。
1,创建oracle中的包,并在该包中创建的游标类型。
---创建oracle的程
Spring 4.2新特性-更简单的Application Event
wiselyman
application
1.1 Application Event
Spring 4.1的写法请参考10点睛Spring4.1-Application Event
请对比10点睛Spring4.1-Application Event
使用一个@EventListener取代了实现ApplicationListener接口,使耦合度降低;
1.2 示例
包依赖
<p