Mark

solr研磨之游标分页

旧巷老猫 提交于 2020-12-12 21:21:12
作者:战斗民族就是干 转载请注明地址:http://www.cnblogs.com/prayers/p/8986498.html    普通分页   当需要深度分页的时候,比如查询第10000页数据,每页显示10条,意味着需要提取前10000 x 10 页的数据,并将这100000条数据缓存在内存中,然后在内存中进行排序。最后返回最后10条即用户想要的第100000页数据。   缺点:   1、首先需要在内存缓存100000条数据需要占用大量的内存   2、并且在内存中对100000条数据进行排序也非常消耗CPU   因此普通分页方式比较适合返回TOPN条数据,翻页越翻到后面,分页查询性能越差,即使你开启了resultQueryCache Cursor分页    Solr中的游标是一个逻辑概念,它不会在服务器上存储任何信息,而是返回一个下一页数据起始位置”Mark”标记值给用户,该标记表示着当前分页起始位置在查询匹配的整个索引结果集中的绝对索引位置。   想要在Solr中使用游标,你需要指定一个cursorMark参数比如:cursorMark=*,你可以理解为它跟start=0类似。 然后此时Solr除了会返回一个TopN的结果集,同时还附带返回一个nextCursorMark值,

一次超诡异的FGC,这个原因找了好久!

你说的曾经没有我的故事 提交于 2020-12-12 09:59:57
正撸着代码,内部聊天工具弹出一条信息: “ 狼哥,我这个机器总是频繁FGC...快帮我看看 ” 我打开对话框,机智的回复一个表情 继续默默撸码 随后,小伙伴砸了一段GC日志过来 2019-09-17T20:33:57.889+0800: 4753520.554: [Full GC (Metadata GC Threshold) 4753520.554: [CMS[YG occupancy: 723220 K (1887488 K)]4753520.988: [weak refs process ing, 0.0042134 secs]4753520.992: [class unloading, 0.0987343 secs]4753521.091: [scrub symbol table, 0.0237609 secs]4753521.115: [scrub string table, 0.0025983 s ecs]: 145423K->141376K(3354624K), 0.6260023 secs] 868644K->864597K(5242112K), [Metaspace: 128179K->128179K(1234944K)], 0.6264315 secs] [Times: user=1.24 sys=0.0 0, real=0.63 secs]4159962

深大数据库实验3之销售管理系统 -- php与mysql之后台编写与接口

夙愿已清 提交于 2020-12-10 19:43:19
⚠ 完整代码在这里 ⚠ https://github.com/AKGWSB/SZU-DBSC-LAB3 目录 前言 要求 项目结构规划 数据库创建与数据准备 编写 show_xxxx 过程以全表打印 编写 report_monthly_sale 函数以打印报表 编写 add_purchase 函数以实现添加一笔购买记录 为 purchases 表的 insert 操作注册触发器以实现业务逻辑 注册触发器以记录 logs 为增删改操作编写 sql 接口 编写数据管理模块 编写下单模块 编写报表模块 主页 快速部署 前言 唔 销售管理系统? 销售来点作用啊 这个实验比较复杂,用到的东西比较杂,今天 mark 一下。。。 主要是周末做了好久太难顶了。。。最近摸鱼了,有时间再更新图形学系列罢(摸了 要求 1、建立数据库以及相应的数据表,包括职工表、顾客表、产品表、供应表、采购表 以及日志表,并按需求设置主键和外键,其中日志表主要描述用户的具体操作信 息。(5 分) 2、编写一个过程显示每个表中的元组。例如编写 show_products()显示在 products 表 中所有产品。(6 分) 3、编写一个过程报告任何给定产品的每月销售信息。例如对于给定的产品 ID,您 需要报告产品名称、月份(月份的前三个字母)、年份、每月销售总量、每月销售总 金额以及每月的平均销售价格。(4 分) 4

默认主控制器

我是研究僧i 提交于 2020-12-10 11:30:32
// // WYBaseViewController.swift // live // // Created by 王武 on 2020/12/7. // import UIKit class WYBaseViewController: UIViewController { // 状态栏背景色 lazy var statusView: UIView = { let view = UIView() view.backgroundColor = kMainOrangeColor view.frame = CGRect(x: 0, y: 0, width: kScreenW, height: kScreenH) // 设置背景渐变 let gradientLayer: CAGradientLayer = CAGradientLayer() gradientLayer.colors = kGradientColors //(这里的起始和终止位置就是按照坐标系,四个角分别是左上(0,0),左下(0,1),右上(1,0),右下(1,1)) //渲染的起始位置 gradientLayer.startPoint = CGPoint.init(x: 0, y: 0) //渲染的终止位置 gradientLayer.endPoint = CGPoint.init(x: 1, y: 0) /

由Java 15废弃偏向锁,谈谈Java Synchronized 的锁机制

别等时光非礼了梦想. 提交于 2020-12-07 20:46:48
Java 15 废弃偏向锁 JDK 15已经在2020年9月15日发布,详情见 JDK 15 官方计划 。其中有一项更新是 废弃偏向锁 ,官方的详细说明在: JEP 374: Disable and Deprecate Biased Locking 。 具体的说明见: JDK 15已发布,你所要知道的都在这里! 当时为什么要引入偏向锁? 偏向锁是 HotSpot 虚拟机使用的一项优化技术,能够减少无竞争锁定时的开销。偏向锁的目的是假定 monitor 一直由某个特定线程持有,直到另一个线程尝试获取它,这样就可以避免获取 monitor 时执行 cas 的原子操作。monitor 首次锁定时偏向该线程,这样就可以避免同一对象的后续同步操作步骤需要原子指令。从历史上看,偏向锁使得 JVM 的性能得到了显著改善。 现在为什么又要废弃偏向锁? 但是过去看到的性能提升,在现在看来已经不那么明显了。受益于偏向锁的应用程序,往往是使用了早期 Java 集合 API的程序(JDK 1.1),这些 API(Hasttable 和 Vector) 每次访问时都进行同步。JDK 1.2 引入了针对单线程场景的非同步集合(HashMap 和 ArrayList),JDK 1.5 针对多线程场景推出了性能更高的并发数据结构。这意味着如果代码更新为使用较新的类,由于不必要同步而受益于偏向锁的应用程序

偏向锁、轻量级锁、自旋锁、重量级锁

北城余情 提交于 2020-12-05 19:21:59
基础知识之一:锁的类型 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。 java中的乐观锁基本都是通过CAS操作实现的,CAS是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。 悲观锁 悲观锁是就是悲观思想,即认为写多,遇到并发写的可能性高,每次去拿数据的时候都认为别人会修改,所以每次在读写数据的时候都会上锁,这样别人想读写这个数据就会block直到拿到锁。java中的悲观锁就是Synchronized, AQS 框架下的锁则是先尝试cas乐观锁去获取锁,获取不到,才会转换为悲观锁,如RetreenLock。 基础知识之二:java线程阻塞的代价 java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等,以便内核态调用结束后切换回用户态继续工作。

自旋锁,偏向锁,轻量级锁头,重量锁头,

烈酒焚心 提交于 2020-12-05 18:41:34
理解锁的基础知识 如果想要透彻的理解java锁的来龙去脉,需要先了解以下基础知识。 基础知识之一:锁的类型 锁从宏观上分类,分为悲观锁与乐观锁。 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。 java中的乐观锁基本都是通过CAS操作实现的,CAS是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。 悲观锁 悲观锁是就是悲观思想,即认为写多,遇到并发写的可能性高,每次去拿数据的时候都认为别人会修改,所以每次在读写数据的时候都会上锁,这样别人想读写这个数据就会block直到拿到锁。java中的悲观锁就是Synchronized,AQS框架下的锁则是先尝试cas乐观锁去获取锁,获取不到,才会转换为悲观锁,如RetreenLock。 基础知识之二:java线程阻塞的代价 java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核

synchronized实现原理及其优化-(自旋锁,偏向锁,轻量锁,重量锁)

你离开我真会死。 提交于 2020-12-05 18:41:22
1.synchronized概述:   synchronized修饰的方法或代码块相当于并发中的临界区,即在同一时刻jvm只允许一个线程进入执行。synchronized是通过锁机制实现同一时刻只允许一个线程来访问共享资源的。另外synchronized锁机制还可以保证线程并发运行的原子性,有序性,可见性。 2.synchronized的原理:   我们先通过反编译下面的代码来看看Synchronized是如何实现对代码进行同步的:   步骤:首先找到存放java文件的目录,在地址栏输入cmd进入命令行,然后执行javac test.java命令,形成class文件,接着执行javap -v test.class进行反编译。 【代码示例】:同步方法 1 class thread extends Thread{ 2 Object obj= new Object(); 3 @Override 4 public synchronized void run() { 5 System.out.println("run..." ); 6 } 7 } 8 public class test { 9 public static void main(String[] args) { 10 new thread().start(); 11 } 12 } 反编译结果:   从反编译的结果来看

Nodejs中使用ioredis库

断了今生、忘了曾经 提交于 2020-12-05 18:00:30
前言 Redis简介 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings) , 散列(hashes) , 列表(lists) , 集合(sets) , 有序集合(sorted sets) 与范围查询, bitmaps , hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication) , LUA脚本(Lua scripting) , LRU驱动事件(LRU eviction) , 事务(transactions) 和不同级别的 磁盘持久化(persistence) , 并通过 Redis哨兵(Sentinel) 和自动 分区(Cluster) 提供高可用性(high availability)。 查看Redis命令大全 → 访问Redis论坛 → Redis使用内存计算器 → 应用场景 最近工作中使用Nodejs编写后端程序操作redis,从redis缓存中获取对应的站房的监测环境数据,然后再提供http和websocket接口,提供给前端获取并实时展示。刚开始使用的是node-redis这个库,其对应的github地址是: https://github.com/NodeRedis/node-redis

Andersen Global在阿塞拜疆增加合作公司

雨燕双飞 提交于 2020-12-05 09:54:47
旧金山--(美国商业资讯)--Andersen Global已与巴库独立律师事务所MGB Law Offices签订合作协议,借此扩张进入阿塞拜疆,从而扩展了其业务版图,并为该组织在欧洲和亚洲之间进行进一步扩张做好准备。 MGB Law Offices成立于1995年,拥有10名律师,已被 IFLR1000 、 Legal500 和钱伯斯( Chambers and Partners )评为阿塞拜疆领先律师事务所。在管理合伙人Ismail Askerov的领导下,该全方位服务型律所为石油和天然气、航空、银行和金融、破产和重组、税务、私有化法和外商投资等多个行业提供解决方案。该律所的客户群包括蓝筹跨国公司、国际金融机构、保险公司、航空公司、电信公司和其他商业实体等。 Ismail表示:“我们对能够始终如一地提供一流服务感到自豪。我们全面的解决方案使我们能够满足个人客户的不同需求,从而使我们成为市场上最知名的律所之一。我们与Andersen Global的非排他性合作加强了我们对客户的承诺,并进一步提高了我们跨国界、行业和执业领域开展工作的能力,使我们可满足客户不断发展的需求。我们期待与志同道合的个人并肩工作,分享我们的愿景和价值观。” Andersen Global董事长兼Andersen首席执行官Mark Vorsatz表示:“我们的扩张继续受客户需求驱动