auto_increment=2;
例如,步长是等于数据库的数量,例如有N台数据库, 第一台数据库的起始值是0,那么生成的id就是0,N,2N,3N等等。
第一台数据库的起始值是1,那么生成的id就是1,N+1,2N+1,3N+1等等。这样各个数据库生成的id就不会冲突,并且每个数据库可以单独生成id。
优点
生成id的效率比单台数据库要高,因为可以多台数据库同时发号。
缺点
是解决了每次自增是1的问题,缺点是一旦设置了步长,就不方便扩容了,因为分库分表的表的数量已经定下来了。
使用场景
在没有分库分表的框架以前,那些分库分表就是使用这种方案来实现的。
4.数据库分段发号生成唯一id。(例如美团的Leaf框架中的segement模式)
简单来说,就是像下图一样,用一个数据库表来充当发号器, 表中字段介绍如下:
biz_tag字段用于区分每种id应用的业务,
max_id字段记录了当前已生成的最大的id,
step字段代表每次可以获取id的数量
id生成项目每次使用下面这条语句从数据库获取step数量的id,并且更新max_id的值,将step数量的id存储在内存中,供业务方通过HTTP,RPC,Client等方式来获取。
UPDATE leaf_alloc SET max_id = max_id + step WHERE biz_tag = #{tag}
优点
效率高
生成id的效率取决于step的大小,不会像主键自增生成id那样再受限于数据库的数量。
缺点
强依赖于数据库
还是强依赖于数据库,数据库宕机后,虽然id生成系统靠内存中还未使用完id,可以维持系统正常运行一段时间,但是数据库不可用还是会导致整个系统不可用。
id是连续的
容易造成被爬取,以及被竞争对手猜测出一天的订单量
5.基于snowflake算法生成唯一id
snowflake是推特开源分布式ID生成算法,一共有64位,
第一位是0,是标志位 ,因为在二进制数中,第一位是0,代表是正数。
接下来41位是13位的毫秒时间戳 ,最大可以到2039年9月。
再接下来10个二进制位是workID ,也就是服务器的id。
最后面12位是业务序列号
意味着每毫秒最大可以生成2的12次方个id,4096个,支持每个机器每毫秒生成4096个id,每秒可以生成400多万的id
优点
效率高
生成id的效率比较快,最高在1ms内可以生成2的12次方,也就是4096个id。
不依赖其他组件
生成id的过程中,主要是根据时间戳,workID,序列号来进行生成,可以做到不额外依赖其他组件,只依赖于本地系统时间独立地生成id。
缺点
易造成数据倾斜的问题
举例:一个数据库中总共有10个id,分别是
0,25,26,27,28,29,30,31,32,100
id的最小值是0,最大值是100,按照id最大值减去最小值,进行范围切分,分成四段的话,范围是以下四个范围:
[0,25), 存在1个id,值分别是0
[25,50) 存在8个id,值分别是25,26,27,28,29,30,31,32
[50,75),存在0个id
[75,100] 存在1个100,值是100
这样明显就会存在数据倾斜的问题,就是[25,50) 这个区间存在的id数量特别多,而其他区间存在的id数量特别少。如果我们用Sqoop将MySQL中的数据导入到Hive中去时,就是按照这种id最大值减去最小值,进行范围切分
实现方法进行数据分片,然后多线程进行数据导入,每个线程负责一个分片的数据,数据不均匀的话,导入的时间就会变长,有些线程分配的数据量少,导入很快,有些线程分配的数据量大导入很慢。总导入时间取决于最慢的那个线程的时间。
使用Snowflake生成的id,id值的大小因为取决于生成id时的时间戳,如果某一个时间段爬取了大量文章进行入库,在很短的时候内生成了很多id,而其他时间段生成id数量很少,在使用Sqoop导入数据时就会有数据倾斜的问题,需要单独自己进行数据切分,让数据变均匀,然后进行导入。
二、当前大公司的ID生成方案研究
头条
头条的内容主要分为文章,图集,视频,这三种内容的数据来源主要由编辑发布,及从其他网站抓取。
调研方法
这是一篇头条的一篇文章 https://www.toutiao.com/a6841306705796530700/
id是19位,因为19位的id其实从数量级是上看已经是2的9次方 亿级别了,所以不太可能有这么多文章入库,然后通过数据库主键id递增生成的,所以有很大的可能性是通过snowflake算法生成的,
我们将6841306705796530700转换为二进制数后是
10111 10111 10001 00110 10000 11001 11011 11101 00000 00000 00010 00001 100
一共是63位,因为原始的snowflake算法是1标志位+41位毫秒时间戳+10位机器位+12位序列号,所以我们取前41位
10111 10111 10001 00110 10000 11001 11011 11101 0
去转换成10进制数,得到
1631094623994
转换为毫秒时间戳,是
2021-09-08 17:50:23
这是未来的时间,所以不太可能是这种方案,因为其实1ms的ID并发量其实根本不需要2的12次方,也就是4096那么大,1s内的QPS能有几百都是量特别大了,
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
问:每天300w PV 的在单台机器上,这台机器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
根据这个原理来算的话,假设每天有300万个请求,摊到峰值时间,每秒的QPS峰值也就是139。而且每天也很难有300万篇文章入库,导致需要300万个id,所以QPS其实是很小的。头条有可能是使用的是1标志位+31位秒级时间戳+32为自己定义的机器位和序列位,所以我们取了前31位
10111 10111 10001 00110 10000 11001 1
转换为10进制数是
1592865843
按照秒级时间戳换算也就是
2020-06-23 06:44:03
跟文章的发文时间2020-06-23 06:44:52
是很相近。有一定的时间差可能是因为id里面的时间戳是入库的创建时间(编辑点击新建文章按钮进入编辑页面),而界面显示的是文章的发布时间。
详细的调研结果
我们通过抽取了一些id转换为二进制后,猜测id二进制位组成是31位秒级时间戳+10位的序列位+18位的预留位+4位的机器位 ,其实看表里面发现18位的预留位都是000000000000100000
。最多支持32台ID生成机器同时运行,单台机器QPS最高可达到1024,总QPS最高可以达到32768。(目前不知道18位预留位的作用)
美团
猫眼电影
猜测是单机数据库连续自增实现的,id范围是1到8875,一共8875部电影。
https://maoyan.com/films/1
https://maoyan.com/films/2
https://maoyan.com/films/428
https://maoyan.com/films/429
榛果民宿——不连续自增
发现id是从2500000后才有数据的,而且很多id都不是连续的,猜测是使用Leaf-Segement模式来生成的id,每次从数据库取一个id号段,将可用id存储到内存中,然后等业务系统请求进行发放。并且自己额外做了id抛弃策略,让id不连续保证信息安全性及提高抓取难度。
https://phoenix.meituan.com/housing/2680748 //无数据
https://phoenix.meituan.com/housing/2680749 //有数据
https://phoenix.meituan.com/housing/2680750 //有数据
https://phoenix.meituan.com/housing/2680751 //无数据
https://phoenix.meituan.com/housing/2680752 //有数据
美团外卖订单号
肯定是使用snowflake算法来生成的,但是由于它们的时间位使用的是时间差(就是时间戳减去一个指定的时间点),而且位数分配可能做了额外的处理,所以不太好推断。
外卖
下单时间
5026 0271 7642 2612 7
2018-09-02 17:46:03
6233 7340 1594 0462
2018-07-17 18:34:11
3962 9431 3190 0632 1
2018-07-15 11:52:55
2273 5322 6921 7033 5
2017-06-30 11:39:01
汽车之家
使用的就是自增id,现有数据从4位到6位,目前最大320w+,实现原理应该就是数据库主键自增,由于他们的量比较大,应该是采用的多数据库设置步长,来多数据库生成id的。
下面是统计表
作品id
URL
类型
9999
https://chejiahao.autohome.com.cn/info/9999
轻文
3200292
https://chejiahao.autohome.com.cn/info/3200292
轻文
3200293
https://chejiahao.autohome.com.cn/info/3200293
视频
3200294
https://chejiahao.autohome.com.cn/info/3200294
文章
3292759
https://chejiahao.autohome.com.cn/info/3292759
车单
2037191
https://chejiahao.autohome.com.cn/info/2037191
音频
总结
感觉目前大公司还是使用Snowflake作为分布式ID生成方案的比较多,一方面可以满足并发量很高的id获取需求,一方面id连续性很低,可以保证信息安全,提高爬虫难度。除此以外,可能有一些业务刚起步时并发量小直接采用单机数据库主键自增生成id,使用4.数据库分段发号生成唯一id
这种方案也能满足高并发量,但主要还是id是连续的,即便是额外开发id丢弃逻辑,也容易被竞争对手一个一个id请求来推测出订单量信息。
精彩回顾:
【大厂面试08期】谈一谈你对HashMap的理解?
【大厂面试07期】说一说你对synchronized锁的理解?
【大厂面试06期】谈一谈你对Redis持久化的理解?
【大厂面试05期】说一说你对MySQL中锁的理解?
【大厂面试04期】讲讲一条MySQL更新语句是怎么执行的?
【大厂面试03期】MySQL是怎么解决幻读问题的?
【大厂面试02期】Redis过期key是怎么样清理的?
【大厂面试01期】高并发场景下,如何保证缓存与数据库一致性?
建了一个技术群,欢迎大家进群交流,一起学习进步! 进群还领取《大厂面试指北》PDF版(如果二维码失效了,大家可以去公众号菜单栏获取进群二维码)
你可能感兴趣的:(数据库,java,分布式,redis,编程语言)
Javaweb笔记
笙鹿鸣
html 前端 html5
HTMLHTML网页常用基础知识网页结构JavaSEC/SClientserver客户端–服务器JavaWebB/SBroswerServer浏览器–服务器网页的组成部分:内容(结构)、表现、行为HTML:HyperTextMarkupLanguage(超文本标记语言)ALT+F2选择浏览器HTML书写规范:表示整个html页面的开始头信息标题标题body是页面的主体内容页面主体内容表示整个htm
一文搞懂 Smali 与 Baksmali:Java 层逆向必备技能
CYRUS STUDIO
java 开发语言 逆向 android smali baksmali
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/smali与baksmalismali和baksmali是用于Android平台中DEX文件的汇编器和反汇编器,广泛应用于Android逆向分析与调试。smali和baksmali是一对工具,分别用于:smali:将smali代码(Java汇编语言)编译成DEX文件。baksmali:
【MySQL高可用集群】MySQL的MGR搭建
架构师之路魂
数据库 mysql 数据库 MGR 高可用 集群
前情提要:MySQL官方在5.7.17版本正式推出组复制(MySQLGroupReplication,简称MGR),使用类似zookeeper的多于一半原则。在一个集群由2N+1个节点共同组成一个复制组,一个事务的提交,必须经过N+1(也就是集群节点数/2+1)个节点决议并通过后才可以提交。这是目前MySQL数据库高可用与高扩展的最优解决方案。MGR有以下几个限制条件:1、存储引擎必须为Innod
数据库第一次作业和第二次作业
zsk123456_
数据库
1.要求2.作业代码好的,这份“第一次作业”的核心内容是要求完成MySQL8.0数据库的安装(在Windows环境下),创建数据库mydb6_product,并在其中创建三张具有特定结构的表(employees,orders,invoices)。下面是完成此任务所需的正确步骤和SQL语句:核心任务分解与解决方案任务1:在Windows上安装MySQL8.0推荐方式(之一):使用官方MySQLIns
Spring Cloud LoadBalancer 详解
大手你不懂
spring Java Java项目实战 spring cloud spring 后端
在分布式系统快速发展的当下,服务间的调用日益频繁且复杂。如何合理分配请求流量,避免单个服务节点过载,保障系统的稳定性与高效性,成为关键问题。负载均衡技术便是解决这一问题的重要手段。SpringCloudLoadBalancer作为SpringCloud官方推出的负载均衡器,在微服务架构中发挥着至关重要的作用。本文将对其进行详细解析。一、SpringCloudLoadBalancer基本概念Spri
数据仓库是什么,一文读懂数据仓库设计步骤
Leo.yuan
数据 数据仓库 大数据 人工智能 数据库 信息可视化
目录一、数据仓库:干啥用的?1.数据仓库是啥?2.数据仓库有啥大用?二、设计之前:准备啥?1.搞清楚业务要啥2.摸清数据家底3.划好仓库边界三、概念设计:搭框架1.定好主题域2.分清维度和事实3.画出概念模型四、逻辑设计:定细节1.设计维度表和事实表2.想好怎么存数据3.定好安全规矩五、物理设计:落地实施1.选好数据库软件2.优化数据库性能3.部署上线六、实施与测试:跑起来1.ETL:灌数据2.全
JSON和JSONL、python操作
weixin_668
json python
JSONJSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,基于文本、易于读写,并支持多种数据结构。以下是常见的JSON格式及示例:1.简单对象(键值对){"name":"Alice","age":25,"isStudent":true}2.嵌套对象{"person":{"name":"Bob","address":{"city":"NewYork","zipc
Spring, Spring Boot 和Spring MVC的关系以及区别
棕豆兔&
面试总结 spring spring boot mvc
一、Spring简单来说,Spring是一个开发应用框架,主打轻量级、一站式、模块化,其目的是用于简化企业级应用程序开发。Spring的主要功能:管理对象,以及对象之间的依赖关系,面向切面编程,数据库事务管理,数据访问,web框架支持等。但是Spring具备高度可开放性,并不强制依赖Spring,开发者可以自由选择Spring的部分或者全部,Spring可以无缝继承第三方框架,比如数据访问框架(H
Java Spring、Spring MVC、Spring Boot 和 Spring Cloud 的关系与区别
Java皇帝
java spring springBoot java spring mvc 开发语言 spring boot spring cloud
在Java开发领域,Spring、SpringMVC、SpringBoot和SpringCloud这些框架和技术名词频繁出现。对于初学者来说,理解它们之间的关系和区别可能有些困惑。本文将深入浅出地讲解这些概念,帮助你理清它们的联系与差异。一、Spring1.1定义Spring是一个轻量级的Java开发框架,由RodJohnson创建。它基于控制反转(IoC)和面向切面编程(AOP)理念,旨在简化J
前后端分离项目进阶1---后端
屋外雨大,惊蛰出没
java 开发语言
前端链接:前端解析一.项目目录二.关键代码分析1)Admin.javapackageimprov1.improv1.entity;publicclassAdmin{privateStringaccount;privateStringpassword;privateStringname;//构造方法、getter和setterpublicAdmin(){}publicAdmin(Stringacco
poi html转换成word文档,poi将html转换为word文档
天猪飞翔
poi html转换成word文档
如何使用apachepoi将word转化为htmlJava可以使用这个开源框架,对word进行读取合并等操作,ApachePOI是一个开源的利用Java读写Excel、WORD等微软OLE2组件文档的项目。最新的3.5版本有很多改进,加入了对采用OOXML格式的Office2007支持,如xlsx、docx、pptx文档。示例如下:importorg.apache.poi.POITextExtra
Oracle数据库性能调优完整指南.zip
高杉峻
本文还有配套的精品资源,点击获取简介:Oracle数据库性能优化是企业和数据库专业人员必须掌握的关键技能。Oracle作为广泛使用的数据库管理系统,其性能直接影响业务效率。本文档深入探讨了性能优化的各个方面,包括SQL优化、索引管理、表和分区设计、内存调优、系统资源管理、并发控制、日志和归档策略、性能监控和诊断,以及数据库架构优化和版本升级。通过综合考虑业务场景和硬件环境,结合Oracle提供的工
JavaSE -- 数组详细讲解(数组介绍,Arrays常用方法,二维数组创建)
数组简介数组是引用数据类型,是一种容器。是一组相同类型数据的组合,将这一组数据做统一管理。栈内存中只存有数组的引用(地址)数组中的变量类型如果是基本数据类型(int,double),则基本类型元素值直接存在堆内存的数组对象内部如果是引用数据类型(String),则这些引用类型的地址(引用)存储在堆内存的数组对象内部。而这些引用数据单独存储在堆内存的其他位置,数组中的地址指向他们。数组声明数组创建出
34、Oracle数据库调优全攻略
tequila
精通Oracle Oracle数据库调优 STATSPACK
Oracle数据库调优全攻略1.调优目标与策略调优的目标是让数据库满足业务需求,即解决依赖系统的用户所发现的问题。管理者和终端用户更关心报表能否按时生成以及数据能否快速返回屏幕,而非数据库内部的精妙程度。因此,需要明确他们认为重要的方面,然后进行调优以实现目标。例如,对于OLTP系统性能不佳的情况,应专注于让数据快速返回屏幕,而非修复偶尔出现的批处理作业。调优时要关注能带来最大收益的领域,并知道何
Java poi导出word文件
辉_哥
Java poi word java word 开发语言
Java在导出word文件时主要对表格中内容垂直居中处理做以记录方便后续碰到类似问题解决。mavenpom.xml中添加poi依赖org.apache.poipoi-ooxml4.1.2下载后查看依赖是否成功此时当在wordutil.java类中CTPageSz报红是因为ooxml-shemas版本不对需要另外下载1.3版本然后添加到本项目依赖中即可下载ooxml-shemas1.4版本的依赖po
Word模板引擎poi-tl(poi template language)使用入门指南
enjoy编程
程序员实用工具集合 Word 模板引擎 poi-tl
什么是poi-tlpoi-tl(poitemplatelanguage)是Word模板引擎,使用模板和数据创建很棒的Word文档poi-tl是一个基于ApachePOI的Word模板引擎,也是一个免费开源的Java类库,可以非常方便的集成到项目中,并使用它已经封装好的功能。为什么选择poi-tl?方案移植性功能性易用性Poi-tlJava跨平台Word模板引擎,基于ApachePOI,提供更友好的
39、Oracle 数据库内存管理:SGA 与 PGA 配置指南
apple5
解读Oracle Oracle数据库 SGA配置 PGA配置
Oracle数据库内存管理:SGA与PGA配置指南1.手动配置SGA参数如果你想对系统全局区(SGA)的内存分配进行更多控制,可以从完全自动内存管理(AMM)切换到自动共享内存管理(ASMM)。启用ASMM很简单,只需将SGA_TARGET设置为所需的值。即使启用了ASMM,你仍然可以控制由SGA_TARGET控制的SGA组件的最小大小。此外,你还需要手动调整一些初始化参数。1.1理解自动共享内存
sqlplus连接Oracle 11g 数据库
zone--
sqlplus oracle
sqlplus连接Oracle11g数据库安装如下Oracle11g安装教程//Anhighlightedblocksqlplus有几种登陆方式比如:sqlplus"/assysdba"--以操作系统权限认证的oraclesys管理员登陆sqlplus/nolog--不在cmd或者terminal当中暴露密码的登陆方式conn/assysdbaconnsys/passwordassysdbasql
Oracle 19C 后台主要进程的功能解析
zone--
数据库 oracle dba
在Oracle数据库的运行机制中,后台进程是支撑数据库各项功能的“隐形引擎”。这些进程在实例启动时自动创建,负责完成数据读写、故障恢复、资源管理等核心任务。本文基于Oracle19c官方文档,对数据库常见后台进程进行系统梳理,帮助数据库管理员理解进程工作原理,为性能调优和故障诊断提供基础。后台进程的基础特性Oracle后台进程是指在V$PROCESS视图中存在且PNAME列非空的进程,它们独立于用
Oracle 数据泵导出表部分列的实现方案:从 12c 新特性到低版本兼容
zone--
oracle 数据库
在Oracle数据库日常运维中,经常会遇到“只导出表中部分列”的需求——例如某张表包含数十个字段,但业务仅需迁移其中3-5个核心字段的数据。传统的导出工具(如exp或expdp)虽能通过QUERY参数过滤行记录,却无法实现列的筛选。本文基于实践经验,详解不同Oracle版本下导出表部分列的解决方案,包括12c及以上版本的便捷方法和11g及以下版本的兼容方案。12c及以上版本:利用VIEWS_AS_
PostgreSQL 语法详解
沐知全栈开发
开发语言
PostgreSQL语法详解引言PostgreSQL是一款功能强大的开源对象关系型数据库管理系统(ORDBMS),广泛应用于各种规模的组织中。其丰富的功能和灵活性使得它成为了众多数据库开发者和运维人员的首选。本文将详细介绍PostgreSQL的语法,帮助读者快速掌握其基本操作。1.数据库连接在操作PostgreSQL之前,首先需要连接到数据库。以下是一个使用PostgreSQL客户端连接到本地数据
RxJava 全解析:从原理到 Android 实战
Monkey-旭
java rxjava 响应式编程 android
在Android开发中,异步任务处理是绕不开的核心场景——网络请求、数据库操作、文件读写等都需要在后台执行,而结果需回调到主线程更新UI。传统的“Handler+Thread”或AsyncTask不仅代码冗余,还容易陷入“回调地狱”(嵌套回调导致代码可读性差)。RxJava作为一款基于响应式编程思想的异步框架,通过“链式调用”和“操作符”完美解决了这些问题,成为Android开发者的必备工具。本文
JAVA 使用Apache POI合并Word文档并保留批注的实现
一、需求背景在实际工作中,我们经常需要将多个Word文档合并成一个文件。但当文档中包含批注(Comments)时,传统的复制粘贴会导致批注丢失或引用错乱。本文将介绍如何通过Java和ApachePOI库实现保留批注及引用关系的文档合并功能。二、技术选型核心依赖:org.apache.poipoi-ooxml5.3.0org.apache.poipoi-ooxml-full5.3.0三、实现原理详解
jxORM--编程指南
jxandrew
jxWebUI 数据库 python jxWebUI jxORM ORM
jxORM是jxWebUI配套的数据库操作库,可以简化python程序员操作数据库。声明数据类定义数据类之前,先导入ORM修饰符:fromjxORMimportORM,DBDataType,ColType然后就可以用ORM修饰符来修饰一个类,从而定义一个数据类:@ORMclassUser:ID:DBDataType.Long=ColType.PrimaryKeyCreateTime:DBDataT
Oracle 数据库共享池与大池调优指南
zone--
数据库 oracle
在Oracle数据库的内存管理中,共享池(SharedPool)和大池(LargePool)是SGA(系统全局区)中负责缓存与资源分配的核心组件。合理配置和调优这两个池,能显著提升数据库性能——尤其是在减少解析开销、降低锁竞争、优化内存利用率等方面。本文基于Oracle19c官方文档,系统梳理共享池与大池的调优思路、关键配置及实践方法。共享池:核心缓存与解析优化的关键共享池是SGA中用于缓存SQL
MySQL分布式架构深度实践:从分库分表到云原生集成
软考和人工智能学堂
PHP和MySQL MySQL经验与技巧 wpf
1.分布式MySQL架构全景graphTDA[分布式MySQL体系]-->B[数据分片策略]A-->C[分布式事务处理]A-->D[读写分离扩展]A-->E[高可用架构]A-->F[云原生集成]B-->B1(水平分库分表)B-->B2(垂直分库分表)B-->B3(分片路由策略)B-->B4(全局ID方案)C-->C1(XA协议)C-->C2(TCC模式)C-->C3(SAGA模式)C-->C4(本
分布式之agent
daisylym
人工智能 integer class string null import action
Agent的简单运用,实现卖旗子代理。这个代码实现的要求如下,这个做了很久了,突然想到,才整理出来贴出来。没法翻译,将就着看吧,看英文多了,其实觉得还不错啦。Thereisabuyerwhowantstobuyaspecificflagfromoneortwoselleragentswhoaretryingtoofferthebest(lowest)price.Youaretomodelthiss
SpringBoot 实现 Redis读写分离
RedisTemplate的哨兵模式在Sentinel集群监管下的Redis主从集群,其节点会因为自动故障转移而发生变化,Redis的客户端必须感知这种变化,及时更新连接信息。Spring的RedisTemplate底层利用lettuce实现了节点的感知和自动切换。1.在pom文件中引入redis的starter依赖:org.springframework.bootspring-boot-star
Redis入门教程(一):基本数据类型
一、Redis是什么?为什么你需要它?Redis(RemoteDictionaryServer)是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。与传统的关系型数据库不同,Redis将数据存储在内存中,使其读写速度达到惊人的11万次读/秒和8.1万次写/秒。同时支持数据持久化,重启后数据不丢失,完美平衡了速度与可靠性。Redis的五大核心优势:丰富的数据结构:支持字符串(Str
Milvus向量数据库集合操作初尝试
麦克阿建
milvus
目录1.集合(Collection)2.字段(Field)3.索引(Index)4.分区(Partition)5.实体(Entity)6.代码示例6.1集合创建6.2向量插入6.3向量查询6.4向量删除1.集合(Collection)集合是Milvus中存储数据的最基本单元。它类似于数据库中的一个表(table)。集合定义了数据的整体结构,包括数据类型、字段、索引等。作用:集合是你数据的容器,用来
矩阵求逆(JAVA)利用伴随矩阵
qiuwanchi
利用伴随矩阵求逆矩阵
package gaodai.matrix;
import gaodai.determinant.DeterminantCalculation;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 矩阵求逆(利用伴随矩阵)
* @author 邱万迟
单例(Singleton)模式
aoyouzi
单例 模式 Singleton
3.1 概述 如果要保证系统里一个类最多只能存在一个实例时,我们就需要单例模式。这种情况在我们应用中经常碰到,例如缓存池,数据库连接池,线程池,一些应用服务实例等。在多线程环境中,为了保证实例的唯一性其实并不简单,这章将和读者一起探讨如何实现单例模式。 3.2
[开源与自主研发]就算可以轻易获得外部技术支持,自己也必须研发
comsci
开源
现在国内有大量的信息技术产品,都是通过盗版,免费下载,开源,附送等方式从国外的开发者那里获得的。。。。。。
虽然这种情况带来了国内信息产业的短暂繁荣,也促进了电子商务和互联网产业的快速发展,但是实际上,我们应该清醒的看到,这些产业的核心力量是被国外的
页面有两个frame,怎样点击一个的链接改变另一个的内容
Array_06
UI XHTML
<a src="地址" targets="这里写你要操作的Frame的名字" />搜索
然后你点击连接以后你的新页面就会显示在你设置的Frame名字的框那里
targerts="",就是你要填写目标的显示页面位置
=====================
例如:
<frame src=&
Struts2实现单个/多个文件上传和下载
oloz
文件上传 struts
struts2单文件上传:
步骤01:jsp页面
<!--在进行文件上传时,表单提交方式一定要是post的方式,因为文件上传时二进制文件可能会很大,还有就是enctype属性,这个属性一定要写成multipart/form-data,不然就会以二进制文本上传到服务器端-->
<form action="fileUplo
推荐10个在线logo设计网站
362217990
logo
在线设计Logo网站。
1、http://flickr.nosv.org(这个太简单)
2、http://www.logomaker.com/?source=1.5770.1
3、http://www.simwebsol.com/ImageTool
4、http://www.logogenerator.com/logo.php?nal=1&tpl_catlist[]=2
5、ht
jsp上传文件
香水浓
jsp fileupload
1. jsp上传
Notice:
1. form表单 method 属性必须设置为 POST 方法 ,不能使用 GET 方法
2. form表单 enctype 属性需要设置为 multipart/form-data
3. form表单 action 属性需要设置为提交到后台处理文件上传的jsp文件地址或者servlet地址。例如 uploadFile.jsp 程序文件用来处理上传的文
我的架构经验系列文章 - 前端架构
agevs
JavaScript Web 框架 UI jQuer
框架层面:近几年前端发展很快,前端之所以叫前端因为前端是已经可以独立成为一种职业了,js也不再是十年前的玩具了,以前富客户端RIA的应用可能会用flash/flex或是silverlight,现在可以使用js来完成大部分的功能,因此js作为一门前端的支撑语言也不仅仅是进行的简单的编码,越来越多框架性的东西出现了。越来越多的开发模式转变为后端只是吐json的数据源,而前端做所有UI的事情。MVCMV
android ksoap2 中把XML(DataSet) 当做参数传递
aijuans
android
我的android app中需要发送webservice ,于是我使用了 ksop2 进行发送,在测试过程中不是很顺利,不能正常工作.我的web service 请求格式如下
[html]
view plain
copy
<Envelope xmlns="http://schemas.
使用Spring进行统一日志管理 + 统一异常管理
baalwolf
spring
统一日志和异常管理配置好后,SSH项目中,代码以往散落的log.info() 和 try..catch..finally 再也不见踪影!
统一日志异常实现类:
[java]
view plain
copy
package com.pilelot.web.util;
impor
Android SDK 国内镜像
BigBird2012
android sdk
一、镜像地址:
1、东软信息学院的 Android SDK 镜像,比配置代理下载快多了。
配置地址, http://mirrors.neusoft.edu.cn/configurations.we#android
2、北京化工大学的:
IPV4:ubuntu.buct.edu.cn
IPV4:ubuntu.buct.cn
IPV6:ubuntu.buct6.edu.cn
HTML无害化和Sanitize模块
bijian1013
JavaScript AngularJS Linky Sanitize
一.ng-bind-html、ng-bind-html-unsafe
AngularJS非常注重安全方面的问题,它会尽一切可能把大多数攻击手段最小化。其中一个攻击手段是向你的web页面里注入不安全的HTML,然后利用它触发跨站攻击或者注入攻击。
考虑这样一个例子,假设我们有一个变量存
[Maven学习笔记二]Maven命令
bit1129
maven
mvn compile
compile编译命令将src/main/java和src/main/resources中的代码和配置文件编译到target/classes中,不会对src/test/java中的测试类进行编译
MVN编译使用
maven-resources-plugin:2.6:resources
maven-compiler-plugin:2.5.1:compile
&nbs
【Java命令二】jhat
bit1129
Java命令
jhat用于分析使用jmap dump的文件,,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。 jhat默认开启监听端口7000的HTTP服务,jhat是Java Heap Analysis Tool的缩写
1. 用法:
[hadoop@hadoop bin]$ jhat -help
Usage: jhat [-stack <bool&g
JBoss 5.1.0 GA:Error installing to Instantiated: name=AttachmentStore state=Desc
ronin47
进到类似目录 server/default/conf/bootstrap,打开文件 profile.xml找到: Xml代码<bean
name="AttachmentStore"
class="org.jboss.system.server.profileservice.repository.AbstractAtta
写给初学者的6条网页设计安全配色指南
brotherlamp
UI ui自学 ui视频 ui教程 ui资料
网页设计中最基本的原则之一是,不管你花多长时间创造一个华丽的设计,其最终的角色都是这场秀中真正的明星——内容的衬托
我仍然清楚地记得我最早的一次美术课,那时我还是一个小小的、对凡事都充满渴望的孩子,我摆放出一大堆漂亮的彩色颜料。我仍然记得当我第一次看到原色与另一种颜色混合变成第二种颜色时的那种兴奋,并且我想,既然两种颜色能创造出一种全新的美丽色彩,那所有颜色
有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。写一个函数实现。复杂度是什么。
bylijinnan
java 算法 面试
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;
/**
* http://weibo.com/1915548291/z7HtOF4sx
* #面试题#有一个数组,每次从中间随机取一个,然后放回去,当所有的元素都被取过,返回总共的取的次数。
* 写一个函数实现。复杂度是什么
struts2获得request、session、application方式
chiangfai
application
1、与Servlet API解耦的访问方式。
a.Struts2对HttpServletRequest、HttpSession、ServletContext进行了封装,构造了三个Map对象来替代这三种对象要获取这三个Map对象,使用ActionContext类。
----->
package pro.action;
import java.util.Map;
imp
改变python的默认语言设置
chenchao051
python
import sys
sys.getdefaultencoding()
可以测试出默认语言,要改变的话,需要在python lib的site-packages文件夹下新建:
sitecustomize.py, 这个文件比较特殊,会在python启动时来加载,所以就可以在里面写上:
import sys
sys.setdefaultencoding('utf-8')
&n
mysql导入数据load data infile用法
daizj
mysql 导入数据
我们常常导入数据!mysql有一个高效导入方法,那就是load data infile 下面来看案例说明
基本语法:
load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields
[terminated by't']
[OPTI
phpexcel导入excel表到数据库简单入门示例
dcj3sjt126com
PHP Excel
跟导出相对应的,同一个数据表,也是将phpexcel类放在class目录下,将Excel表格中的内容读取出来放到数据库中
<?php
error_reporting(E_ALL);
set_time_limit(0);
?>
<html>
<head>
<meta http-equiv="Content-Type"
22岁到72岁的男人对女人的要求
dcj3sjt126com
22岁男人对女人的要求是:一,美丽,二,性感,三,有份具品味的职业,四,极有耐性,善解人意,五,该聪明的时候聪明,六,作小鸟依人状时尽量自然,七,怎样穿都好看,八,懂得适当地撒娇,九,虽作惊喜反应,但看起来自然,十,上了床就是个无条件荡妇。 32岁的男人对女人的要求,略作修定,是:一,入得厨房,进得睡房,二,不必服侍皇太后,三,不介意浪漫蜡烛配盒饭,四,听多过说,五,不再傻笑,六,懂得独
Spring和HIbernate对DDM设计的支持
e200702084
DAO 设计模式 spring Hibernate 领域模型
A:数据访问对象
DAO和资源库在领域驱动设计中都很重要。DAO是关系型数据库和应用之间的契约。它封装了Web应用中的数据库CRUD操作细节。另一方面,资源库是一个独立的抽象,它与DAO进行交互,并提供到领域模型的“业务接口”。
资源库使用领域的通用语言,处理所有必要的DAO,并使用领域理解的语言提供对领域模型的数据访问服务。
NoSql 数据库的特性比较
geeksun
NoSQL
Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工作。
1. 数据模型
作为Key-value型数据库,Redis也提供了键(Key)和值(Value)的映射关系。除了常规的数值或字符串,Redis的键值还可以是以下形式之一:
Lists (列表)
Sets
使用 Nginx Upload Module 实现上传文件功能
hongtoushizi
nginx
转载自: http://www.tuicool.com/wx/aUrAzm
普通网站在实现文件上传功能的时候,一般是使用Python,Java等后端程序实现,比较麻烦。Nginx有一个Upload模块,可以非常简单的实现文件上传功能。此模块的原理是先把用户上传的文件保存到临时文件,然后在交由后台页面处理,并且把文件的原名,上传后的名称,文件类型,文件大小set到页面。下
spring-boot-web-ui及thymeleaf基本使用
jishiweili
spring thymeleaf
视图控制层代码demo如下:
@Controller
@RequestMapping("/")
public class MessageController {
private final MessageRepository messageRepository;
@Autowired
public MessageController(Mes
数据源架构模式之活动记录
home198979
PHP 架构 活动记录 数据映射
hello!架构
一、概念
活动记录(Active Record):一个对象,它包装数据库表或视图中某一行,封装数据库访问,并在这些数据上增加了领域逻辑。
对象既有数据又有行为。活动记录使用直截了当的方法,把数据访问逻辑置于领域对象中。
二、实现简单活动记录
活动记录在php许多框架中都有应用,如cakephp。
<?php
/**
* 行数据入口类
*
Linux Shell脚本之自动修改IP
pda158
linux centos Debian 脚本
作为一名
Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护和管理方面也比较方便。如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三!
#!/bin/sh
#auto Change ip netmask ga
开发环境搭建
独浮云
eclipse jdk tomcat
最近在开发过程中,经常出现MyEclipse内存溢出等错误,需要重启的情况,好麻烦。对于一般的JAVA+TOMCAT项目开发,其实没有必要使用重量级的MyEclipse,使用eclipse就足够了。尤其是开发机器硬件配置一般的人。
&n
操作日期和时间的工具类
vipbooks
工具类
大家好啊,好久没有来这里发文章了,今天来逛逛,分享一篇刚写不久的操作日期和时间的工具类,希望对大家有所帮助。
/*
* @(#)DataFormatUtils.java 2010-10-10
*
* Copyright 2010 BianJing,All rights reserved.
*/
package test;
impor