科学健康资讯 · 内容仅供参考,不替代专业诊疗 联系我们|疾病百科
操作系统

insertintoselect(insertintoselect分页)

2023-06-06 操作系统 本文链接

现在程序员面试都这么重视考察概念吗?一朋友是一名程序员,做java开发的,有两年多的开发经验,坐标广州。

上午到科韵路信息港一家软件公司应聘软件开发岗位。

面试官给了一份笔试题,其中有两道题目是这样的:

1.DDL、DML全称是什么,两者之间有什么区别?

2.MYSQL中delete和drop有什么区别?

感觉这样的笔试题过于基础,考察刚毕业的求职者还好,要是考察有工作经验的,意义不大,还不如用这个时间多问问应聘者的项目经验。

对于这两道题目,可能一时间记不起来,我们简单汇总下。

DDL(data definition language)数据定义语言,用户定义和管理sql数据库中所有对象的语言。

主要命令:create、alter、drop等

DML(data manipulation language)数据操作语言。

主要命令:select、update、insert、delete等

drop命令主要用于删除数据结构,包括内部的数据内容。(drop database database_name;drop table table_name)

delete命令主要用于删除数据内容,不删除数据结构。(delete 字段名 from 表名 where 条件)

可以使用delete命令执行回滚操作,因为它使用缓冲区,执行时触发相应的trigger;但在使用drop命令的情况下无法操作回滚,操作时不触发trigger。

由于delete命令不删除表,因此不会释放任何空间;而drop命令会删除整个表,从而释放内存空间。

#程序员##职场微头条#

#大数据SQL技巧# 之 "为什么开发规范会禁止Select * 写法"。从SQL任务稳定性、性能方面考虑如下情况

1.权限问题:在MaxCompute平台(A厂数据开发平台)SQL任务如果要引用外部project表需要先申请表字段权限,如果外部表新增字段,线上任务因为没有新字段权限导致任务运行失败。

2.字段数不同问题:如果写表采用"insert ..... select * from table_x"的方式,如果table_x新增字段也会因为字段数不匹配导致任务失败。同样在使用union all语句时也会有这个问题。

3.性能问题:select * 会读取所有字段增加开销。但是由于MaxCompute在生成执行计划的时候已经做优化了,未使用的字段不读到内存,这个写法实际不会导致性能变差。

Select * 写法可以减少代码行数,让代码更简洁,将字段罗列出来能够更清晰展示需要使用到的字段,并且避免许多问题。

如此粗暴的规范必然是经过许多血泪教训总结出来的。除非你非常明确这么写会产生什么影响,不然还是遵照规范来吧。

你知道其它相关案例吗?欢迎评论补充。

(下次我们聊聊JOIN,你知道怎么通过JOIN实现笛卡尔积吗?)

以你的技术一天内能解决这个崩溃的APP性能问题吗?

早上一起来业主群就看到小区封闭的通知,志愿者也挨家挨户通知小区门口做核酸。等我们去排队的时候,打开健康yunAPP。

出现了以下几个异常:

1、历史核酸记录查询,没有任何数据,直接给了优化后的页面;2、展示我的登记码时,点完登记后,一直显示正在加载中;3、等待几十秒后网页无法显示。

作为程序员,我更关心健康yunAPP挂掉后我们应该如何去解决?如果我是CTO我该怎么解决?如果这就是一个公司50K月薪的面试答题,你有自己的解决方案吗?

虽然我还没有在这么大并发、大流量和大用户量的项目组待过,但是2W QPS的秒杀项目和千万访问量的项目还是做过的。

下面说说自己的看法和解决方案:

一、核酸记录查询解决方案:

1)mysql集群:部署mysql集群(oracle没用过,咱也不敢说),把用户均匀存入各个数据库节点中,每个节点的主库设置多个从库,目前我的实战项目只设置过一个从库,历史记录查询db用从库;

2)哨兵模式:开启哨兵模式,某个节点主库挂掉可以快速选master主库;

3)垂直分表,针对健康云查询记录展示的字段来看,建议把这些字段单独建表,也就是垂直分表。结果字段中,身份证号,检测结构以及检测结果字段长度是比较大的,所以最好分离出来,避免放在用户主表中,而且也能减少join联查;

4)队列异步处理结果:作为phper我们常用yii2-queue队列,java用rabbitMQ和kafka比较多;

核酸检测结果出来后,扫码枪扫描二维码,然后就将这个用户放入消息队列中,消费者程序将查询记录需要的字段写入在独立的结果表中,毕竟核酸结果不是实时的,24小时内出来就行;

5)DBA通过联查把结果放入新增的表中,用insert select 组合,这个会比后端代码快很多,不过需要多一个DBA参与,增加了用人成本;

6)给表中会员ID字段建立索引;

7) 采样时间和检测时间数据库存时间戳,从数据库中取出来后端处理成北京时间;

8)检测结果那句话,除了阴阳两个字段后端动态提供,其余的文字前端写死;

9)查询结果页面只显示最新的核酸检查结果,想要看更多,点击更多再去请求后端;

10)最新的一条核酸记录放在redis集群中,并使用hash数据结构存储,用户ID为key,其他结果字段filed:value格式存储

11)有人会说用elasticsearch存储结果,查询起来更快,我们的场景是根据ID查询结果,但是es适合模糊查询,用的是倒排索引机制,例如项目中有大量的商品,根据商品名字查询结果,或者大量文字,根据某个关键字查询;这个时候是非常适合es的。

二、我的登记码问题解决方案

1)主从分离,提交登记码信息这个操作用主库;

2)将填写过的用户信息入数据库并放在缓存中,避免每次去数据库取这些数据,减少mysql IO操作,毕竟一个人会做N次核酸,但是用户基本信息不会经常变;

3)生成的登记码(二维码),尽可能生成一张图片,数据库或者缓存存储,甚至可以把图片放在CDN上,个人理解这个二维信息是不会变得;

4)接口异常,页面需要美化,稍微有点经验的产品经理都懂得吧,查询接口知道处理,为啥生成登记码这个接口就这样异常呢;

5)前端限流:避免多次点击,多次点击只进行一次请求,之前PHP混编开发的时候会用,现在基本都前后端分离了,这块需要前端,android和ios的同事去处理了;

6)个人检测登记中的企业查询这里的公司数据可以维护在es中,如果是调的三方接口那解决起来就不是很方便了;

7)mysql和redis连接类封装出一个连接池,避免频繁地向数据库申请资源,释放资源带来的性能损耗;

8)AB测试,用AB测试工具压力测试。。。

三、以上的问题涉及到后端,前端、运维、产品和测试,以及硬件资源,我想即使会这些技术,1天应该也解决不完吧。

欢迎分享自己的看法,不足之处请指正!

#上海发布回应健康云打不开了#

#Java面试题# #SSM# #全栈# #互联网# #软件#

 Mybatis核心组件及其作用?

mybatis的核心组件包括:SqlSessionFactoryBuilder(构造器)、SqlSessionFactory(工厂接口)、SqlSession(会话接口)、SQL Mapper(映射器)。

作用:

SqlSessionFactoryBuilder:根据配置信息或者代码来生成SqlSessionFactory

SqlSessionFactory:生产SqlSession会话

SqlSession :1)获取映射器,让映射器通过命名空间和方法名称找到对应的SQL,发送给数据库执行后返回结果;2)通过update、insert、select、delete等方法,带上SQL的id来操作在XML中配置好的SQL,从而完成工作,与此同时它也支持事务,通过commit、rollback方法提交或者回滚事务。

SQL Mapper :1)定义参数、2)描述缓存、3)描述SQL语句、4)定义查询结果和POJO的映射关系

#西安头条#我说下为什么一码通首页展示的疫苗接种和核酸搬家了吗,因为多加载两项就会让服务器和数据库多两倍压力,用户的扫一扫就需要从数据库查询三项内容,同时还要实现数据库添加事件 insert事件,,查询事件 select ,每一个数据没在一个库存储,故如果1000万人同时扫一扫,也会添加位置信息,服务器需要计算至少5000万次,服务器的温度等都会影响计算速度,所以首页加载那么多并不是功能有多强大,都是在操作一个增删改查的操作,所以少两项展示则会让服务器减少很大压力

一、POS服务器异常宕机,开机后要检查rtlog_data,sale_data_pos表。

plsql中执行 create table ls_rtlog as select * from rtlog_data

如果报错,说明rtlog_data表中有错误数据,影响rtlog文件生成。

如果执行成功,说明rtlog_data表没有错误数据,执行

drop table ls_rtlog purge 删除ls_rtlog表

二、ora-01555 快照过旧 rtlog_data及sale_data_pos处理方法:

plsql中执行以下程序

create table ls as select * from rtlog_data where 1=2;

declare

ord number(10):=0;

begin

for p in (select * from rtlog_data)

loop

ord:=p.order_no;

insert into ls values(p.order_no,p.data_content,p.write_time,p.belong_date,p.row_count);

end loop;

exception when others

then dbms_output.put_line(ord);

end;

--在pl/sql的输出中查看错误单号,可能多个错误单号,要多次执行上边的程序,只到输出中没有数据为止。

1 delete rtlog_data where order_no=2976893;

drop table ls purge;

----sale_data_pos

2 create table ls as select * from sale_data_pos where 1=2;

declare

ord number(10):=0;

pos number(10):=0;

begin

for p in (select * from sale_data_pos where trunc(update_time)=to_date(&1,'yyyymmdd') )

loop

ord:=p.orderno;

pos:=p.posno;

insert into ls values(p.orderno,p.posno,p.update_time,p.sale_data);

end loop;

exception

when others then

dbms_output.put_line(ord||' and posno='||pos);

end;

--在pl/sql的输出中查看错误单号,只到输出中没有数据为止。

delete sale_data_pos where orderno= and posno=

drop table ls purge;

1、nginx 1.21.2 主线版发布

Nginx 是一款面向性能设计的 HTTP 服务器,相较于 Apache、lighttpd 具有占有内存少,稳定性高等优势

2、Linux Lite 5.6 正式发布,从 Windows 过渡到 Linux 的友好方案

Linux Lite 是一个对新手友好的 Linux 发行版,它基于 Ubuntu LTS,并以 Xfce 桌面为特色。Linux Lite 主要针对 Windows 用户而设计,其目标是提供一整套应用以帮助用户完成他们的日常电脑活动,包括完整的办公套件、媒体播放器和其它必要的日常软件。

3、Android Studio "Arctic Fox" 2020.3.1 Patch 2 发布

Android Studio "Arctic Fox" 2020.3.1 Patch 2 现已发布。从 2020.3.1 起,Android Studio 开始启用新的版本号命名方案。事实上,2020.3.1 就是原计划的 4.3。谷歌称采用新的方案主要是为了与 IntelliJ 的版本对齐。

4、橙单中台化低代码生成器 v1.9 发布,同时支持工作流引擎 Flowable 和 Activiti

橙单的工作流集成,并非仅仅是对组件的引用和 API 的封装,而是提供了很多非常实用的工作流前后端业务能力。在上一个版本中,我们提供了Activiti 7.x 的支持,根据用户反馈,我们在该版本同时支持了 Flowable 6.6,业务功能方面两者完全等价,开发者用户可根据自身需求二选一。

5、Chrome 93 正式发布,自此将采用新的发布周期

Google 日前开始向用户陆续推送 Chrome 93 稳定版,除了为用户带来了一系列功能改进和错误修复以外,该版本也是 Google 常规发布节奏中的最后一个版本。从下个月的 Chrome 94 开始,该公司将转向 4 周的发布周期。

6、Eurynome Cloud v2.5.4.90 发布,企业级技术中台微服务架构

Eurynome Cloud是前后端分离、分布式的企业级微服务系统架构和微服务能力开发平台。基于Spring Boot 2.5.1、Spring Cloud 2020.0.3、Spring Cloud Alibaba 2021.1、Nacos 2.0.1等最新版本开发,遵循SpringBoot编程思想,高度模块化和可配置化;同时支持分布式架构和单体式架构且可无缝切换。具备完备的RBAC功能,统一服务网关,统一认证权限方案,服务熔断、限流、降级、灰度发布、分布式多级缓存,分布式对象存储,分布式事务管理,分布式定时任务,分布式工作流,服务调用链监控,服务吞吐量监控,服务运行状态监控,应用拓扑结构分析,统一配置中心,日志聚合分析中心,动态网关路由,第三方社交登录,手机验证码登录,统一错误处理,自定义错误码体系,动态文档聚合,权限动态分析汇总,配置文件、数据模型自动初始化等功能。集成小程序、内容审核、证照识别、消息推送、社交登录、多通道短信等丰富的第三方技术支持。

7、Apache Hudi 0.9.0 版本重磅发布!更强大的流式数据湖平台

0.9.0 添加了对使用 Spark SQL 的 DDL/DML 的支持,朝着使所有角色(非工程师、分析师等)更容易访问和操作 Hudi 迈出了一大步。用户现在可以使用 CREATE TABLE....USING HUDI 和 CREATE TABLE .. AS SELECT 语句直接在 Hive 等目录中创建和管理表。然后用户可以使用 INSERT、UPDATE、MERGE INTO 和 DELETE 语句来操作数据。此外,INSERT OVERWRITE 语句可用于覆盖现有批处理 ETL 管道的表或分区中的现有数据。

8、Sqlbean 1.5.0 发布,具有多数据源、读写分离和动态 Schema 等特性

Sqlbean 是一款使用 Java 面向对象思想来编写并生成 Sql 语句的工具,在此基础上对 Mybatis 和 Spring Jdbc 实现了类似于 JPA 的轻量级插件支持。其中内置大量常用 SQL 执行的方法,可以非常方便的达到你想要的目的,相对复杂的 SQL 语句也得以支持,在常规的项目开发几乎做到不写 DAO 层,可以有效的提高项目开发的效率,让开发者更专注于业务代码的编写。

本文内容仅供健康科普参考,不能替代专业医疗诊断和治疗建议。如有身体不适,请及时就医并遵从医师指导。

相关阅读