tony

java 深克隆(深拷贝)与浅克隆(拷贝)详解

空扰寡人 提交于 2020-10-16 08:26:50
java深克隆和浅克隆 基本概念 浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所拷贝的对象,而不复制它所引用的对象。 深复制(深克隆) 被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。 实现java深复制和浅复制的最关键的就是 要实现Object中的clone()方法 。 如何使用clone()方法 首先我们来看一下Cloneable接口: 官方解释: 1:实现此接口则可以使用java.lang.Object 的clone()方法,否则会抛出CloneNotSupportedException 异常 2:实现此接口的类应该使用公共方法覆盖clone方法 3:此接口并不包含clone 方法,所以实现此接口并不能克隆对象,这只是一个前提,还需覆盖上面所讲的clone方法。 public interface Cloneable { } 看看Object里面的Clone()方法: clone()方法返回的是Object类型,所以必须强制转换得到克隆后的类型 clone()方法是一个native方法,而native的效率远远高于非native方法,

PostgreSQL 如何实现一个只有一行数据的表

烂漫一生 提交于 2020-10-06 08:04:27
文章目录 基于常量表达式创建一个唯一索引 使用 INSERT ON CONFLICT 插入和更新 通过触发器禁止数据删除 总结 大家好,我是只谈技术不剪发的 Tony 老师。今天我们来讨论一个有趣的话题:如何在 PostgreSQL 中实现一个只能存储一行数据的表。 假如我们有一个表 t_version,用于记录应用系统的版本信息: create table t_version ( version text not null , update_at timestamp not null ) ; 第一次安装应用程序时需要生成一条记录,以后升级系统时需要更新版本信息,但不允许用户删除该记录。这种需求该如何实现? 基于常量表达式创建一个唯一索引 在 PostgreSQL 中想要限制表中只能包含一行数据实际上非常简单,就是利用 表达式索引 (也叫函数索引)基于常量值创建一个唯一索引。 针对上面的问题,我们可以为表 t_version 创建一个唯一索引: create unique index t_version_uk on t_version ( ( 1 ) ) ; 索引 t_version_uk 是一个基于常量表达式 (1) 的函数索引,并且具有唯一性。也就是说,表中任何数据行对应的索引值都是 1,而唯一索引只允许一个 1,因此该表中最多只能存储一行数据。😎 使用 INSERT ON

癌症、帕金森、渐冻症一网打尽?投资人亲自操刀创全球首家“无膜细胞器”公司,欲拓展药物研发新途径

徘徊边缘 提交于 2020-10-02 08:09:20
  9 月 29 日,专注于研究相分离生物技术的初创公司 Dewpoint Therapeutics(以下简称 “Dewpoint”) 宣布完成 7700 万美元 B 轮融资。本轮融资由 ARCH Venture Partners 领投,新加入的投资方还包括 Maverick Ventures、Bellco Capital,已有投资方美国北极星创投(Polaris Partners)、拜耳飞跃、EcoR1 Capital、Samsara BioCapital 和 Innovation Endeavors 也继续追加投资。   图 | Dewpoint Therapeutics logo   (来源:Dewpoint Therapeutics 官网)    “Dewpoint 的诞生展现了一种全新的运作公司的方式”   美国生物制药行业知名媒体 Endpoints News 创始人约翰 · 卡罗尔(John Carroll)在文章中这样形容 Dewpoint: 它的故事展现了一种全新的运作公司的方式。   2019 年 1 月 30 日,Dewpoint 以宣布获得 6000 万美元 A 轮融资的方式正式出现在大众视野中。这家成立即融资千万美元的公司是北极星创投执行合伙人阿米尔 · 纳沙特(Amir Nashat)的“新作品”。纳沙特在北极星创投已任职 16 年

知乎高赞:有哪些东西看完后,后悔没早看到?

青春壹個敷衍的年華 提交于 2020-09-30 03:05:51
全世界只有 3.14 % 的人关注了 爆炸吧知识 知乎上有个高赞问题:有哪些书看完后,会让人后悔没早看到?答案各有不一、包罗万象。但有一点,大家达成了共识: 要多读书。 人生漫长,而我们都不会是一成不变的, 真正决定人与人之间的差距的,其实是我们对事物的见识与内心的格局,见识的深浅决定人生的深浅,格局的大小决定了人生之路是宽是窄。 今天给大家推荐几个有深度、有想法的公众号,希望能够给你带来深刻的思考和最有价值的信息。 长按二维码即可识别关 注 ! 【关注方式 】 1 - 搜索公众号ID关注 2 - 长按二维码识别关注 爆炸吧知识 ID: superdata1 ▲ 长按 上方 二维码识别关注 推荐理由: ???? “ 爆炸吧知识 ”是最值得关注的青少年数学科普公众号,它致力于给 全球读者提供数学科普知识,分享数学干货,追逐科技前沿 的微信公众号,崇尚数学之美,被称为全球 3.14159 % 的读者都在关注的公众号。 ???? 你一定 很想知道: 高一被清华姚班录取,高三委拒谷歌offer,一个重度网瘾少年到理论计算机科学家的蜕变 ????关注 发送 “ 网瘾少年 ” 即可阅读文章 14岁上中科大,18岁攻读麻省博士,28岁成为哈佛最年轻副教授,“华人女天才”的开挂人生 ????关注 发送 “ 华人女天才 ” 即可阅读文章 职场充电宝 ID: ZhichangCdb 推荐理由:

成为b站up主的第一天

若如初见. 提交于 2020-08-20 01:29:25
知道了视频剪辑工具FCPX ,这里包含了大部分资源 http://www.mfcpx.com/ 知道了几个挑选背景音乐的网站 https://www.musicbed.com/ https://www.premiumbeat.com/ https://app.soundstripe.com/ https://audiojungle.net/category/music https://artlist.io/ 一些好听的音乐创作者 james everigham scott & brendo tony anderson 视频特效 https://www.rocketstock.com/ 英文字体下载 https://www.dafont.com/ 来源: oschina 链接: https://my.oschina.net/lilugirl2005/blog/4340418

我脑洞大开,让机器人来给我剪头发

纵饮孤独 提交于 2020-08-17 17:24:27
孤身一人,又不想出门找理发店怎么办,YouTube 视频博主 Shane Wighton 又整出了新活。 机器之心报道,机器之心编辑部。 疫情期间,不敢出门找 Tony 老师理发? 有人会选择在家理发,但是需要一套理发工具和一位心灵手巧的家人。 那独居青年怎么办呢? 有人似乎看到了这个需求。YouTube 博主、在家手工爱好者 Shane Wighton 表示,他已经开发出了一款理发机器人,虽然没有「洗吹」服务,但至少能够解燃眉之急。 自动理发机器人_腾讯视频 ​ v.qq.com 对于机器人来说,可能很难和人类理发师一般,将理发技巧了然于胸。在最初的版本中,机器人时常翻车: 这样脑袋怕是保不住了。 Wighton 花了很多时间去解决了这些程序错误,然而最担心的事情还是发生了,机器人无法像 Tony 老师那么灵活,它会扯到头发: 经过一番努力,Wighton 终于解决了大部分问题,帮自己剪了一个还算看得过去的发型。 和 Tony 老师比较像的是,这位机器人理发师还会附赠聊天服务,跟你聊聊天气什么的。 在视频中,Shane Wighton 详细介绍了自己开发这个剪发机器人的经历,我们一起来看一下。 机器人理发,技术含量很高 在视频中,Shane Wighton 详细介绍了自己开发这个剪发机器人的经历。 回想一下我们在理发店剪头发的过程。首先,理发师会将你的头发分成几个象限

NPOI封装通用的导出模板

佐手、 提交于 2020-08-15 18:32:19
  在后台管理系统中导出Excel功能是必不可少的,该模板可以帮助我们简单优雅的实现导出功能,支持导出大数据。封装如下:   public class NPOIExcelExporterBase { protected ICellStyle HeadStyle { get ; set ; } protected ICellStyle TextStyle { get ; set ; } /// <summary> /// 创建Excel 文件 /// </summary> /// <param name="fileName"> Excel文件名 </param> /// <param name="creator"> 委托 </param> /// <returns></returns> protected string CreateExcel( string fileName, Action<IWorkbook> creator) { var wb = new XSSFWorkbook(); var sWorkbook = new SXSSFWorkbook(wb, 1000 ); var outputFilePath = "" ; try { HeadStyle = DefaultHeaderCellStyle(sWorkbook); TextStyle =

(转)java 深克隆(深拷贝)与浅克隆(浅拷贝)详解

ぐ巨炮叔叔 提交于 2020-08-14 11:05:44
java深克隆和浅克隆 基本概念 浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所拷贝的对象,而不复制它所引用的对象。 深复制(深克隆) 被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。 实现java深复制和浅复制的最关键的就是要实现Cloneable接口中的clone()方法。 如何使用clone()方法 首先我们来看一下Cloneable接口: 官方解释: 1:实现此接口则可以使用java.lang.Object 的clone()方法,否则会抛出CloneNotSupportedException 异常 2:实现此接口的类应该使用公共方法覆盖clone方法 3:此接口并不包含clone 方法,所以实现此接口并不能克隆对象,这只是一个前提,还需覆盖上面所讲的clone方法。 public interface Cloneable { } 1 2 看看Object里面的Clone()方法: clone()方法返回的是Object类型,所以必须强制转换得到克隆后的类型 clone()方法是一个native方法

Redis凭啥这么快?只能做缓存?架构师道出了真相(颠覆你的认知)

纵然是瞬间 提交于 2020-08-14 00:32:18
Redis到底有多快 Redis采用的是基于内存的采用的是 单进程单线程 模型的 KV 数据库 , 由C语言编写 ,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。这个数据不比采用单进程多线程的同样基于内存的 KV 数据库 Memcached 差!有兴趣的可以参考官方的基准程序测试《 How fast is Redis? 》( redis.io/topics/benchma ) 横轴是连接数,纵轴是QPS 。此时,这张图反映了一个数量级,希望大家在面试的时候可以正确的描述出来,不要问你的时候,你回答的数量级相差甚远! Redis为什么这么快 1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1); 2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的; 3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗; 4、使用多路I/O复用模型,非阻塞IO; 5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话

delete后加 limit是个好习惯么

╄→尐↘猪︶ㄣ 提交于 2020-08-13 05:59:09
在业务场景要求高的数据库中,对于单条删除和更新操作,在delete和update后面加limit 1绝对是个好习惯。比如,在删除执行中,第一条就命中了删除行,如果SQL中有limit 1;这时就return了,否则还会执行完全表扫描才return。效率不言而喻。 那么,在日常执行delete时,我们是否需要养成加 limit 的习惯呢?是不是一个好习惯呢? 在日常的SQL编写中,你写delete语句时是否用到过以下SQL? delete from t where sex = 1 limit 100; 你或许没有用过,在一般场景下,我们对 delete 后是否需要加 limit 的问题很陌生,也不知有多大区别,今天带你来了解一下,记得mark! 写在前面,如果是清空表数据建议直接用truncate,效率上truncate远高于delete,应为truncate不走事务,不会锁表,也不会生产大量日志写入日志文件;truncate table table_name 后立刻释放磁盘空间,并重置auto_increment的值。delete删除不释放磁盘空间,但后续insert会覆盖在之前删除的数据上。详细了解请跳转另一篇博文 《delete、truncate、drop的区别有哪些,该如何选择》 下面只讨论delete场景,首先,delete后面是支持limit关键字的,但 仅支持单个参数