深圳幻海软件技术有限公司 欢迎您!

  • 初探富文本之CRDT协同算法

    初探富文本之CRDT协同算法CRDT的英文全称是Conflict-freeReplicatedDataType,最初是由协同文本编辑和移动计算而发展的,现在还被用作在线聊天系统、音频分发平台等等。当前CRDT算法在富文本编辑器领域的协同依旧是典型的场景,常用于作为实现文档协同的底层算法,支持多个用户

  • White Rose设计与架构的想法分享

    在七牛云校园黑客马拉松中,一款设计优秀、逻辑清晰的白板作品脱颖而出,获得第二名的好成绩,这就是来自郑州大学Since团队的WhiteRose白板,以下是他们的设计和架构分享。一、前言WhiteRose是参加七牛云hackathon比赛的作品,赛题的主要内容是开发一个「多人协作白板」,旨在鼓励在校大学

  • C++ 20 协程 Coroutine(2,等待体)

    co_await awaiter的用途?明确说C++20的协程大部分概念还算清晰,就是yeild,然后外部利用句柄resume。对协程这个概念有了解的不应该有什么特别难以理解的地方。但co_awaitawaiter比较让人疑惑。上次我已经讲过,awaiter其实是是一个对象,一个接口实现,

  • 聊聊 Spring 事务控制策略以及 @Transactional 失效问题避坑

    在大部分涉及到数据库操作的项目里面,事务控制、事务处理都是一个无法回避的问题。比如,需要对SQL执行过程进行事务的控制与处理的时候,其整体的处理流程会是如下的示意:首先是要开启事务、然后执行具体SQL,如果执行异常则回滚事务,否则提交事务,最后关闭事务,完成整个处理过程。按照这个流程的逻辑,写一下对

  • Web UI 自动化时,通过 AutoIT 的解决 Windows 控件

    Selenium进行WEB的UI自动化时经常会遇到windows弹框,比如上传、下载框时的提示框,这种弹框selenium自身是无法处理的,这时我们可以借助AutoIT这个工具。一、介绍AutoIt是用以编写并生成具有BASIC语言风格的脚本程序的免费软件,它被设计用来在WindowsGUI(用户界

  • 十个Python初学者常犯的错误

    下面10个Python初学者常犯的错误,并不是真正的代码错误,代码照样可以运行,但是不够Pythonic,因为Python有自己的语言哲学,在代码的处理上有传统语言无法比拟的简洁性和便捷性。1. 真值比较初学者经常在if语句中使用==比较符来判断表达式是否为真值。这是一种冗余的写法,其实你

  • 面试突击:线程安全问题的解决方案有哪些?

    线程安全是指某个方法或某段代码,在多线程中能够正确的执行,不会出现数据不一致或数据污染的情况,我们把这样的程序称之为线程安全的,反之则为非线程安全的。在Java中,解决线程安全问题有以下3种手段:使用线程安全类,比如AtomicInteger。加锁排队执行使用synchronized加锁。使用Ree

  • 面试突击:线程安全问题是如何产生的?

    线程安全是指某个方法或某段代码,在多线程中能够正确的执行,不会出现数据不一致或数据污染的情况,我们把这样的程序称之为线程安全的,反之则为非线程安全的。举个例子来说,比如银行只有张三一个人来办理业务,这种情况在程序中就叫做单线程执行,而单线程执行是没有问题的,也就是线程安全的。但突然有一天来了很多人同

  • 1.5 万 Star!程序员的“网络瑞士军刀”!

    简介CyberChef是一个用于加密、编码、压缩和数据分析的网络应用程序,号称“网络瑞士军刀”,可在浏览器中执行各种“网络”操作,包括简单的编码(XOR或Base64),更复杂点的加密(如AES、DES和Blowfish),创建二进制文件和十六进制转储(Hexdump)、数据压缩和解压缩、计算哈希值

  • 抽丝剥茧,深入剖析 Python 如何实现变量交换!

    Python程序员肯定知道a,b=b,a,这句话用来交换两个变量。相较于其它语言需要引入一个temp来临时存储变量的做法,Python的这种写法无疑非常优雅。简洁优雅的C写法:复制int a = 1; int b = 2;&nbs

  • 谈谈我对 Promise 和异步函数的理解

    作为项目的技术负责人,前端本不是我的主业。目前,前端团队无论从代码质量还是技术水平,都不太令人满意。我每周合并代码时,有时会瞟一眼,有些同学的代码真的堪忧。目前,前端团队都是初级工程师,功底较差,做出来的东西只是能用而已。他们既不会总结经验,形成最佳实践;做事又随便,总是机械地应付任务。我苦口婆心地

  • 懒惰开发者需要知道 React Hack

    1.在渲染表达式里面使用console.log如果你想在渲染一个组件时打印它的参数,而你又不想转换它。你可以将console.log与||一起用。2.使用Error对象跟踪函数调用栈如果你不知道从何处调用了函数,你可以在函数中打印一个Error对象,你将在控制台中获得堆栈跟踪:注意每个日志的第三行,

  • 如果你使用了这个Stream流操作,升级Java17有可能会出问题

     在Java8中,甚至到Java16中执行下面的Stream流操作复制Stream.of(1, 2, 3, 4)           .skip(1)

  • Java多线程优化都不会,怎么拿Offer?

    【51CTO.com原创稿件】随着业务量的增加,多线程处理成为家常便饭。于是,多线程优化成了摆在我们面前的问题。Java作为当今主流的应用开发语言,也会有同样的问题。 图片来自Pexels今天,我们从Java内部锁优化,代码中的锁优化,以及线程池优化几个方面展开讨论。Java内部锁优化当使

  • 看不懂同事的代码?超强的 Stream 流操作姿势还不学习一下

    我们都知道Lambda和Stream是Java8的两大亮点功能,在前面的文章里已经介绍过Lambda相关知识,这次介绍下Java8的Stream流操作。它完全不同于java.io包的Input/OutputStream,也不是大数据实时处理的Stream流。这个Stream流操作是Java8对集合操

  • 电脑屏幕太小不够用?这有妙招!

     今天我们来介绍Vim的分屏功能。为什么需要分屏功能?其实需求场合有很多。比如,我现在屏幕很大,但我们的代码一般是左对齐,右边很空,这样我们就可以通过分屏来充分利用右边的屏幕。再如,我现在想同时查看多个文档,除了打开多个终端外,我们还可以通过分屏来达到我们的目的。当然类似的场合还有很多,只

  • Java实现线程安全的方式

     多线程环境中如何保证线程安全?java可以实现线程安全的方式归纳如下:1、使用synchronized关键字synchronized关键字可以修饰方法和代码块,它的语义是保证同一段代码同一时间只能有一个线程在执行。2、使用volatile关键字volatile关键字用来修饰共享变量。它的

  • Git操作错误搞砸了怎么办,收藏这份文档吧

    Git很难,搞砸很容易,更糟糕的是搞砸了还不清楚什么问题。虽然Git文档很全面,但不清楚什么问题,不知道问题名称,连搜索答案都无从下手。国外小哥也有遇到这些问题,因此搞了个ohshigit的网站,记录常犯的错误,以及如何修正。1、Git时光倒流误删了文件、错误的合并、错误的操作,一脸懵逼,怎么回到刚

  • OpenResty在腾讯游戏营销技术中的应用和实践

    大家上午好,我是来自腾讯的Shawn顾小平。先做一个简单的自我介绍。我在加入到腾讯之前一直在通讯行业里面从事通信软件的研发工作,包括在华为,还有UT斯达康。2012年10月份我加入到腾讯,现在在腾讯互动娱乐事业群负责部分的营销技术相关的工作。我接触的技术工作比较多、也比较杂,所以我自称是全“沾”工程

  • Java内存模型原理,你真的理解吗?

    【51CTO.com原创稿件】这篇文章主要介绍模型产生的问题背景,解决的问题,处理思路,相关实现规则,环环相扣,希望读者看完这篇文章后能对Java内存模型体系产生一个相对清晰的理解,知其然知其所以然。  内存模型产生背景  在介绍Java内存模型之前,我们先了

推荐阅读