从内存可见性看Volatile、原子变量和CAS算法

【1】内存可见性与内存可见性错误 内存可见性(MemoryVisibility)是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。 那么如果一个线程修改了对象状态,其他线程看不到对象的状态变化怎么办?就会引起内存可见性错误! 可见性错误是指当读操作与写操作在不同的线程中执行时,我们

  • 0
  • 0
  • 发布于 2020-06-30 10:53
  • 阅读 ( 206 )

数据结构与算法之排序算法

数据结构与算法之排序算法 排序算法的介绍 ​ 排序也称排序算法(SortAlgorithm),排序是将一组数据,依指定的顺序进行排序的过程。 排序的分类 1)内部排序:指将需要处理的数据都加载到内部存储器(内存)中进行排序 2)外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序 3)常见的排序算法分类 算法的时间复杂度 度量一个程序(算法)执

  • 0
  • 0
  • 发布于 2020-06-30 10:49
  • 阅读 ( 217 )

Java压缩算法性能比较

原文链接:https://my.oschina.net/OutOfMemory/blog/805427?from=20161218 前言 游戏开发中,经常在玩家进入游戏的时候进行必要的信息初始化,往往这个初始化信息数据包是相对来说还是比较大的,一般在30-40kb左右,还是有必要进行压缩一下再发送消息,刚好前段时间看过,里面列举了一些常用的压缩算法,如下图所示: 是否可切分表示是否可以搜索数据流的任意位置并进一步往下读取数

  • 0
  • 0
  • 发布于 2020-06-30 10:42
  • 阅读 ( 201 )

高级排序算法之三路快速排序

三路快速排序算法分析 双路快速排序算法把等于v的数据分为两部分,方式了数据量一边倒的情况,三路排序算法把排序的数据分为三部分,分别为小于v,等于v,大于v,这样三部分的数据中,等于v的数据在下次递归中不再需要排序,小于v和大于v的数据也不会出现某一个特别多的情况(如下图所示),通过此方式三路快速排序算法的性能更优。  三路快速排序主要关注三个

  • 0
  • 0
  • 发布于 2020-06-30 09:58
  • 阅读 ( 186 )

游戏算法系列 - 字典树

简介   trie是一种搜索树,也称为字典树。最大的特点是共享字符串的公共前缀来达到提高效率的目的。 trie的核心思想是空间换时间,缺点是内存占用高 最大限度地减少无谓的字符串比较,查询效率比哈希表高   性质   根节点不包含字符,除根节点外每一个节点都只包含一个字符。 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。 每个节

  • 0
  • 0
  • 发布于 2020-06-30 09:58
  • 阅读 ( 196 )

Aho-Corasick算法实现类

刚刚翻Aho-Corasick算法,打算看看具体情况,发现一个有趣的网页,可以提供该算法的可视化,就先占个位置,发个链接(http://blog.ivank.net/aho-corasick-algorithm-in-as3.html),今晚有空再看看。 —————— 终于舍得看AC了……囧。 学习AC算法,首先要理解状态机(有限状态机)的概念,然后学会Trie的实现。接着,就可以更好的理解了。 老规矩,拿篇感觉详细的博文(http://blog.csdn.n

  • 0
  • 0
  • 发布于 2020-06-30 09:58
  • 阅读 ( 183 )

多模匹配算法与dictmatch实现

多模式匹配在这里指的是在一个字符串中寻找多个模式字符字串的问题。一般来说,给出一个长字符串和很多短模式字符串,如何最快最省的求出哪些模式字符串出现在长字符串中是我们所要思考的。该算法广泛应用于关键字过滤、***检测、病毒检测、分词等等问题中。多模问题一般有Trie树,AC算法,WM算法等等。我们将首先介绍这些常见算法。 1.hash   可以单字、双字、全字

  • 0
  • 0
  • 发布于 2020-06-30 09:57
  • 阅读 ( 205 )

字符串匹配算法综述

字符串匹配算法综述:BF、RK、KMP、BM、Sunday 写的好棒!!!%%%粘来咯... 字符串匹配算法,是在实际工程中经常遇到的问题,也是各大公司笔试面试的常考题目。此算法通常输入为原字符串(string)和子串(pattern),要求返回子串在原字符串中首次出现的位置。比如原字符串为“ABCDEFG”,子串为“DEF”,则算法返回3。常见的算法包括:BF(BruteForce,暴力检索)、RK(Robin-Karp,

  • 0
  • 0
  • 发布于 2020-06-30 09:57
  • 阅读 ( 228 )

【LeetCode】正则表达式匹配

https://www.imooc.com/article/281353?block_id=tuijian_wz 【LeetCode】正则表达式匹配 2019.03.0419:53 598浏览 题目描述 给定一个字符串(s)和一个字符模式(p)。实现支持‘.’和‘*’的正则表达式匹配。 ‘.’匹配任意单个字符。 ‘*’匹配零个或多个前面的元素。 匹配应该覆盖整个字符串(s),而不是部分字符串。 说明: s可能为空,且只包含从a-z的小写字母。 p可能为空,且只包含从a-z的小

  • 0
  • 0
  • 发布于 2020-06-30 08:42
  • 阅读 ( 184 )

亲测有效!一种完美动态阈值白平衡算法 Java实现。

几年没发文了,重新拿起技术! 最近做图像处理,要自动处理颜色平衡问题,很多什么直方图优化之类的,都不完美。所以在博客园找到了这个前辈的文章。 http://www.cnblogs.com/Imageshop/archive/2013/04/20/3032062.html#commentform 基于灰度世界、完美反射、动态阈值等图像自动白平衡算法的原理、实现及效果   很可惜,这篇文章,首先没有源码,其次给出的一些计算过程有问题。所以我直

  • 0
  • 0
  • 发布于 2020-06-30 08:36
  • 阅读 ( 181 )

LeetCode 141. 环形链表 java

LeetCode141.环形链表java 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。 示例1: 输入:head=[3,2,0,-4],pos=1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 示例2: 输入:head=[1,2],pos=0 输出:true 解释:链表中有一个环,其尾部连接到第一个节点。

  • 0
  • 0
  • 发布于 2020-06-28 04:09
  • 阅读 ( 144 )

算法竞赛中c++使用优势及劣势

 由于入行没多久,所以编写不太完善,希望大家能帮忙补充。  对于优势方面,我认为有以下几点: 1.有着丰富的函数库。 2.可以使用c++标准模板库(stl),极大的方便了操作。 3.操作相对于其他语言比较方便。  对于劣势方面,我认为有以下几点: 1.缺少大数的应用。 2.输入输出速度弱于c,同时一些库函数的耗时也高于自己写的函数。 3.对于输出的结果的格式控制较麻

  • 0
  • 0
  • 发布于 2020-06-28 04:06
  • 阅读 ( 102 )

非对称算法,哈希Hash(散列)以及证书的那些事

转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/35389657 作者:小马 这几个概念在金融电子支付领域用得比较多,我忽然觉得把它们串起来一起讲,层层引入,可能更好理解一些。希望能以最简单朴实的方式讲明白他们之间的关系。   一非对称算法 关于非对称算法,你只要知道下面这些就行了,密钥是一对,一个叫公钥,一个叫私钥,前者公开,后者保密。假设你有

  • 0
  • 0
  • 发布于 2020-06-28 04:00
  • 阅读 ( 105 )

【国密算法那点事儿】解读DES和SM4、RSA和SM2及SHA和SM3

转载自:http://www.wtoutiao.com/a/844743.html 安全是智能卡的核心,而算法是安全的基础。 国密算法由国家密码局发布,包含SM1SM2SM3SM4SSF33算法;国际算法由美国的安全局发布,是现今最通用的商用算法。今天小钞就以分组密码算法(DES和SM4)、公钥密码算法(RSA和SM2)、摘要算法(SM3)为例,和大家谈谈国际算法和国密算法的区别。   1、分组密码算法——国际DES、国产SM4   分

  • 0
  • 0
  • 发布于 2020-06-28 03:59
  • 阅读 ( 108 )

浅谈TCP拥塞控制算法

转自:https://mp.weixin.qq.com/s/NIFandX8w-Cynnbl-f2Lwg 一、前言 TCP通过维护一个拥塞窗口来进行拥塞控制,拥塞控制的原则是,只要网络中没有出现拥塞,拥塞窗口的值就可以再增大一些,以便把更多的数据包发送出去,但只要网络出现拥塞,拥塞窗口的值就应该减小一些,以减少注入到网络中的数据包数。 TCP拥塞控制算法发展的过程中出现了如下几种不同的思路: 基于丢包的拥

  • 0
  • 0
  • 发布于 2020-06-28 03:59
  • 阅读 ( 123 )

(Tensorflow Object Detection Api)ssd-mobilenet v1 算法结构及代码介绍

(TensorflowObjectdetectionApi)安装(TensorflowObjectDetectionApi)标注数据获取及格式转换(TensorflowObjectDetectionApi)模型训练 通过前面三次分享,基本把ObjectDetectionApi的入门使用方式就都陈列了出来。接下来计划分享一下算法的具体结构和代码的部分,以及相关的参数调试方法。毕竟,真正拿来用的话,根据场景的不同,需要不同的性能和侧重点。如下,仅对ssd-mobilenet-v1进行分享。ss

  • 0
  • 0
  • 发布于 2020-06-28 03:57
  • 阅读 ( 131 )

虚拟DOM和diff算法

虚拟dom 虚拟DOM的本质就是一个JS对象,虚拟DOM减少了真实DOM的操作,当修改数据的时候,就是修改虚拟DOM产生全新的虚拟DOM, 新旧虚拟DOM使用diff算法,得到patch(也就是需要修改的部分),然后将这个patch打到浏览器的DOM上 (减少重绘和回流,从而达到性能优化的目的) 每次DOM操作会引起重绘或者回流,频繁的真实DOM的修改会触发多次的排版和重绘相当耗性能 虚拟DOM为什么

  • 0
  • 0
  • 发布于 2020-06-28 03:47
  • 阅读 ( 85 )

Python判断一个正整数是否为素数的算法

先定义一个有序列表,作为素数池,这样多次操作的时候可以直接用里面的素数作为取模的除数,以避免用冗余的合数来运算和重复性的运算: primePool=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,79,83,89,97,101,103,107,109,113] 定义素数判断函数 defisPrime(num): ifnuminprimePool: returnTrue sq=math.sqrt(num) p=2 for

  • 0
  • 0
  • 发布于 2020-06-28 03:44
  • 阅读 ( 118 )

力扣(LeetCode)刷题,简单题(第15期)

目录 第1题:将整数转换为两个无零整数的和 第2题:一周中的第几天 第3题:把二叉搜索树转换为累加树 第4题:连续字符 第5题:拿硬币 第6题:删除中间节点 第7题:猜数字 第8题:整数的各位积和之差 第9题:一维数组的动态和 第10题:统计位数为偶数的数字 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互

  • 0
  • 0
  • 发布于 2020-06-28 03:40
  • 阅读 ( 182 )

力扣(LeetCode)刷题,简单题(第16期)

目录 第1题:数组异或操作 第2题:交换数字 第3题:按既定顺序创建目标数组 第4题:数组中两元素的最大乘积 第5题:删除链表中的节点 第6题:在既定时间做作业的学生人数 第7题:二进制链表转整数 第8题:分割平衡字符串 第9题:不用加号的加法 第10题:字符串相加 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案

  • 0
  • 0
  • 发布于 2020-06-28 03:40
  • 阅读 ( 135 )

精选优质文章、大厂面试题解读、社区微信小程序、扫一扫随时随地逛社区

逛一逛
社区小程序