当前位置: 首页 > news >正文

营销型网站哪家好来个可以做渗透的网站

营销型网站哪家好,来个可以做渗透的网站,东莞网站设计的公司,中铁十六局门户网1.批处理 批量思想:批量操作数据库,这个很好理解,我们在循环插入场景的接口中,可以在批处理执行完成后一次性插入或更新数据库,避免多次IO。 //批量入库 batchInsert();List的安全操作有以下几种方式: 使…

在这里插入图片描述

1.批处理

批量思想:批量操作数据库,这个很好理解,我们在循环插入场景的接口中,可以在批处理执行完成后一次性插入或更新数据库,避免多次IO。

//批量入库
batchInsert();

List的安全操作有以下几种方式:

使用Collections.synchronizedList(List list)方法,将list转化为线程安全的列表。这种方式是将list进行同步处理,以保证在多线程环境下的线程安全,但是会影响性能。

使用java.util.concurrent包中的CopyOnWriteArrayList类,它是一种线程安全的列表,可以在迭代过程中修改列表内容,操作方便。但是在添加或删除元素时,需要进行复制,因此相对于普通的List来说,性能较低。

使用java.util.concurrent包中的ConcurrentLinkedDeque类,它是一种线程安全的双向队列,可以在两端进行添加/删除操作,而不会发生数据竞争和线程安全问题。

使用读写锁,对List的读操作和写操作进行锁定,保证了读操作的并发性,也保证了写操作的互斥性。这种方式性能较优,但复杂度较高。

总之,针对不同的情况,可以选择不同的安全集合进行操作。需要根据实际业务场景进行选择。

2.异步处理

异步思想:针对耗时比较长且不是结果必须的逻辑,我们可以考虑放到异步执行,这样能降低接口耗时。

例如一个理财的申购接口,入账和写入申购文件是同步执行的,因为是T+1交易,后面这两个逻辑其实不是结果必须的,我们并不需要关注它的实时结果,所以我们考虑把入账和写入申购文件改为异步处理。如图所示:

在这里插入图片描述
至于异步的实现方式,可以用线程池,也可以用消息队列,还可以用一些调度任务框架。

3.空间换时间

一个很好理解的空间换时间的例子是合理使用缓存,针对一些频繁使用且不频繁变更的数据,可以提前缓存起来,需要时直接查缓存,避免频繁地查询数据库或者重复计算。

需要注意的事,这里用了合理二字,因为空间换时间也是一把双刃剑,需要综合考虑你的使用场景,毕竟缓存带来的数据一致性问题也挺令人头疼。

这里的缓存可以是R2M,也可以是本地缓存、memcached,或者Map。

举一个股票工具的查询例子:

因为策略轮动的调仓信息,每周只更新一次,所以原来的调接口就去查库的逻辑并不合理,而且拿到调仓信息后,需要经过复杂计算,最终得出回测收益和跑赢沪深指数这些我们想要的结果。如果我们把查库操作和计算结果放入缓存,可以节省很多的执行时间。如图:
在这里插入图片描述

4.预处理

也就是预取思想,就是提前要把查询的数据,提前计算好,放入缓存或者表中的某个字段,用的时候会大幅提高接口性能。跟上面那个例子很像,但是关注点不同。

举个简单的例子:理财产品,会有根据净值计算年化收益率的数据展示需求,利用净值去套用年化收益率计算公式计算的逻辑我们可以采用预处理,这样每一次接口调用直接取对应字段就可以了。

5.池化思想

我们都用过数据库连接池,线程池等,这就是池思想的体现,它们解决的问题就是避免重复创建对象或创建连接,可以重复利用,避免不必要的损耗,毕竟创建销毁也会占用时间。

池化思想包含但并不局限于以上两种,总的来说池化思想的本质是预分配与循环使用,明白这个原理后,我们即使是在做一些业务场景的需求时,也可以利用起来。

6.串行改并行

串行就是,当前执行逻辑必须等上一个执行逻辑结束之后才执行,并行就是两个执行逻辑互不干扰,所以并行相对来说就比较节省时间,当然是建立在没有结果参数依赖的前提下。

比如,理财的持仓信息展示接口,我们既需要查询用户的账户信息,也需要查询商品信息和banner位信息等等来渲染持仓页,如果是串行,基本上接口耗时就是累加的。如果是并行,接口耗时将大大降低。

如图:
在这里插入图片描述

7.索引

加索引能大大提高数据查询效率,这个在接口设计之出也会考虑到,这里不再多赘述,随着需求的迭代,我们重点整理一下索引不生效的一些场景,希望对小伙伴们有所帮助。
在这里插入图片描述

8.避免大事务

所谓大事务问题,就是运行时间较长的事务,由于事务一致不提交,会导致数据库连接被占用,影响到别的请求访问数据库,影响别的接口性能。

@Transactional(value = "taskTransactionManager", propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED, rollbackFor = {RuntimeException.class, Exception.class})public BasicResult purchaseRequest(PurchaseRecord record) {BasicResult result = new BasicResult();...pushRpc.doPush(record);        result.setInfo(ResultInfoEnum.SUCCESS);return result;}

所以为避免大事务问题,我们可以通过以下方案规避:

1,RPC调用不放到事务里面
什么是RPC调用

2,查询操作尽量放到事务之外

3,事务中避免处理太多数据

9.优化程序结构

程序结构问题一般出现在多次需求迭代后,代码叠加形成。会造成一些重复查询、多次创建对象等耗时问题。在多人维护一个项目时比较多见。解决起来也比较简单,我们需要针对接口整体做重构,评估每个代码块的作用和用途,调整执行顺序。

10.深分页问题

深分页问题比较常见,分页我们一般最先想到的就是 limit ,为什么会慢,我们可以看下这个SQL:

select * from purchase_record where productCode = 'PA9044' and status=4 and id > 100000 limit 200

这样优化的好处是命中了主键索引,无论多少页,性能都还不错,但是局限性是需要一个连续自增的字段

11.SQL优化

sql优化能大幅提高接口的查询性能,由于本文重点讲述接口优化的方案,具体sql优化不再一一列举,可以结合索引、分页、等关注点考虑优化方案。

12.锁粒度避免过粗

锁一般是为了在高并发场景下保护共享资源采用的一种手段,但是如果锁的粒度太粗,会很影响接口性能。

关于锁粒度:就是你要锁的范围有多大,不管是synchronized还是redis分布式锁,只需要在临界资源处加锁即可,不涉及共享资源的,不必要加锁,就好比你要上卫生间,只需要把卫生间的门锁上就可以,不需要把客厅的门也锁上。

错误的加锁方式:

//非共享资源
private void notShare(){
}
//共享资源
private void share(){
}
private int right(){notShare();synchronized (this) {share();}
}

本文参考来源:
从3000ms到25ms!看看人家的接口优化技巧,确实很优雅!!

http://www.yayakq.cn/news/223746/

相关文章:

  • 南京的网站建设高端网站建设公司兴田德润可以不
  • 网站建设需要的技术路线做家乡特产的网站
  • 网站制作公司杭州那个网站做拍手比较好
  • 织梦导航网站模板新手怎么用DW建设一个网站
  • dede网站安装教程个人业务网站创建
  • 国外外贸网站有哪些海外营销网站
  • 在线做c 题的网站wordpress的数据库有多大
  • 可以做兼职翻译的网站闵行网络推广公司
  • 合肥优化营商环境wp建站优化
  • 房地产企业网站建设wordpress 能上传apk吗
  • 信息技术制作网站首页建设网站最重要的是什么意思
  • 织梦手机网站教程视频有了域名 接下来怎么做网站
  • 专业做蛋糕视频网站优化设计英语
  • 腾讯网站网站后台开发费用
  • 网站建设中的html页面下载购物车 信息技术分院网站后台设计课题组
  • 网站开发语言都有什么2017 WordPress 主题
  • 网站推广软件工具怎样制作wordpress手机主题
  • 网站设计师前景做网站珊瑚橙颜色怎么搭配好看
  • 网站遇到攻击时应该怎么做表格制作教程
  • 青岛李村网站设计公司用vs做网站界面
  • 如何免费自己做个网站广州做网站的公司
  • 阿里云网站注册网站 缓存什么时候使用
  • 北京网站建设知名公司收费底的网站有吗
  • 音乐网站开发开发十大旅游电子商务网站
  • 广州市天河区工程建设监督网站做教育培训网站公司
  • asp门户网站系统如何衡量网站的价值
  • 做英文企业网站多钱钱学做效果图需要多久
  • 创联互动建设网站ipv6改造 网站怎么做
  • 建站论坛系统wordpress小人插件
  • 国内电商平台网站制作排行榜网站前置审批怎么做