- 博客(18)
- 收藏
- 关注
原创 Gitee 已支持将 PHP 项目自动发布到 Packagist
在 Gitee 企业版不断进化的同时,Gitee 社区版也并没有停下前进的脚步。现在,Gitee 已经支持将 PHP 软件包发布并自动更新到packagist.org,并经由Composer调用安装,在 Gitee 更新 PHP 软件包的操作变得更加顺滑流畅。如何在 Gitee 上进行 Packagist 自动更新使用前提已有 Gitee 和 Packagist.org 帐号 项目为有效的 Composer 工程(根目录存在composer.json)获取 Packagist API...
2021-11-11 11:07:46 496
原创 我们怎么做开源
今年数字+大会上我们第一次比较系统的推出了我们的开源计划(sf.163.com/opensource),将“架构开放、内核开源”作为我们的核心战略,尽可能的减少客户绑定,引起媒体的广泛关注。媒体经常会问我们开源怎么赚钱,一些同事也问过我同样的问题。网易数帆是一家商业化组织,为什么要做开源,而且还把项目捐赠给基金会(今年我们把Kyuubi项目捐赠给了Apache基金会),放弃控制权,难道数帆是活雷锋吗?我想不如写篇文章把我们的背景,对开源的思路向业界和同事们更彻底的说说明白。因为工作原因我只会讲面向企业的
2021-11-11 11:06:39 703
原创 一个强大的 JS 代码混淆工具
【导语】:一个开源的代码混淆器,能将 JS 代码混淆成可读性低的代码。简介JavaScript Obfuscator 是一款功能强大的免费 JavaScript 混淆器,包含多种功能,能将代码混淆成可读性低的代码,看上去是难以阅读的代码,其实具备和之前代码一样的功能,从而起到保护代码的作用。原代码:function hi() { console.log("Hello World!");}hi();复制代码混淆后代码:function _0x5737(){var _0x3
2021-11-09 19:33:06 3597
原创 磁盘I/O读写跟不上HLS流ts切片速度,如何解决?
TSINGSEE青犀视频平台的按需直播是一个很实用的功能,在实际项目中,开启按需直播能够有效节省系统流量,但在很多使用EasyNVR平台的大型项目中,随着非按需通道数量的增多,会导致磁盘的读写增高,导致磁盘的I/O读写跟不上EasyNVR的hls流ts切片产生的速度。在用户现场中,磁盘读写虽然慢,但是内存剩余比较多,所以可以将内存转换为虚拟磁盘来进行提高I/O的读写速度。EasyNVR新内核的版本可以不使用任何RAMDISK软件,将ts切片写入到内存中,下面分享下步骤:http://www.36
2021-11-09 19:32:11 396
原创 2021-11-09
简介: Apache RocketMQ 作为阿里巴巴开源的支撑万亿级数据洪峰的分布式消息中间件,在众多行业广泛应用。在选型过程中,开发者一定会关注开源版与商业版的业务价值对比。 那么,今天就围绕着商业版本的消息队列 RocketMQ和开源版本 RocketMQ 进行比较,并结合实践中场景全面展示大型分布式应用的上云最佳实践。前言消息队列是分布式互联网架构的重要基础设施,在以下场景都有着重要的应用:应用解耦 削峰填谷 异步通知 分布式事务 大数据处理并涉及互动直播、移动互联网&物
2021-11-09 11:04:44 405
原创 Collectors.summing唯独没有BigDecimal的求和方法
最近在做订单相关的模块,有个订单列表接口,需要对订单金额进行求和。每次都得遍历list,然后用BigDecimal.add()方法取求和。感觉很麻烦。想到之前有用到java8的stream.collect的Collectors.summingInt来对int类型来求和,一行代码就能实现了。想着看能不能用java8的stream来求和BigDecimal类型的。发现Collectors的sum根本没有对应的api。所以就只能照葫芦画瓢,写一个summingBigDecimal方法出来了。BigDecima
2021-11-09 11:03:28 3638 1
原创 泛型通配符的基本使用
这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」。茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!愿你在未来的日子,保持热爱,奔赴山海!前言:昨天我们终于讲完了泛型通配符的基本使用,所以,接下来我们将会对泛型通配符的学习--泛型通配符的高级使用!????泛型通配符在我们之前的学习泛型的过程当中,在当我们使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配符后,只能使用Ob
2021-11-08 15:58:59 358
原创 ZGC垃圾收集器
一、ZGC概要1.1 ZGC研究资料这块要详细拿出来说一下。ZGC官网介绍:wiki.openjdk.java.net/display/zgc… ZGC文档(pdf,讲解详细):cr.openjdk.java.net/~pliden/sli…这两篇文章,详细介绍了ZGC。第二个是pdf文档,可以下载下来详细看。1.2 ZGC支持的平台这个可以在官方文档(wiki.openjdk.java.net/display/zgc…)上看到,目前jdk11目前只支持linux。JDK11
2021-11-08 15:38:10 194
原创 mysql索引过长Specialed key was too long问题记录
在创建要给表的时候遇到一个有意思的问题,提示Specified key was too long; max key length is 767 bytes,从描述上来看,是Key太长,超过了指定的 767字节限制下面是产生问题的表结构CREATE TABLE test_table (id int(11) unsigned NOT NULL AUTO_INCREMENT,name varchar(1000) NOT NULL DEFAULT ‘’,link varchar(1000) NOT NUL
2021-11-07 23:22:24 599
原创 2021-11-07
本文使用到的依赖有hyper、hyper-tls、scraper和tokiohyper: HTTP底层实现库hyper-tls: HTTPS实现库scraper: 解析html库tokio: Rust编程语言的异步运行时,提供异步事件驱动平台,构建快速,可靠和轻量级网络应用如果目标网站不是HTTPS类型的话,可以不用hyper-tls依赖。创建client的时候使用Client::new()即可步骤创建项目在命令窗口中运行cargo new 项目名命令创建一个rust项目加入依赖在Car
2021-11-07 23:20:56 165
原创 一分钟了解完TS中的泛型
关于泛型可以先看看官方的介绍如下:软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。你可以将泛型理解为宽泛的类型,它通常用于类和函数,下面一个一个来说泛型类泛型可以用于类和构造器,例如:class Person{private _
2021-11-07 20:28:57 876
原创 使用echarts报错:_vue.openBlock is not a function 咋搞?
昨天在学echarts和Vue结合的时候碰到了这个报错,首先在代码确定无误的情况下,使用了parcel去打开对应的html页面。但是吧打开之后,页面空白,然后终端出现这种报错,然后就在网上找了许久答案,网上都说vue的版本是不是高了,或者导入的方式是否不对? 试了能查到的方法,发现还是没用。最终还是问了有经验的人,人家提示说你的parcel的版本的问题。我查了下自己的parcel的版本是2.0.0,使用 yarn global add parcel@1.12.3 将parcel换成1.12.3的版本再..
2021-11-07 10:45:07 1148
原创 MyBatis入坑之拦截器
1. 拦截器注解1.1 MyBatis自定义拦截器实现org.apache.ibatis.plugin.Interceptor接口。 添加拦截器注解org.apache.ibatis.plugin.Intercepts 配置文件中添加拦截器1.2 在MyBatis中可被拦截的类型有四种(按照拦截顺序)Executor:拦截执行器的方法。 ParameterHandler:拦截参数的处理。 ResultHandler:拦截结果集的处理。 StatementHandler:拦截Sql语法
2021-11-07 10:40:46 661
原创 MIT 6.824 Lab2A Leader Election
实验准备实验代码:git://g.csail.mit.edu/6.824-golabs-2021/src/raft 如何测试:go test -run 2A -race 相关论文:Raft Extended Section 5.2 实验指导:6.824 Lab 2: Raft (mit.edu)实验目标实现Raft算法中Leader Election(RequestVote RPC)和Heartbeats(AppendEntries RPC)。确保只有一个Leader被选中,且若无错误该Le
2021-11-07 10:00:50 251
原创 JVM之老年代垃圾收集器
引言:前文介绍了部分Java虚拟机新生代的垃圾收集器,于是今儿就介绍下部分老年代垃圾收集器。老年代垃圾收集器如上图,接下来我们要介绍的老年代垃圾收集器大致为CMS、Serial Old、Parallel Old收集器。Serial Old垃圾收集器Serial Old收集器是单线程收集器,并使用标记-整理算法,主要是提供给客户端下的HotSpot虚拟机使用。服务端模式下的话在JDK5之前是配合Parallel Scavenge收集器使用以及作为CMS收集器失败时的后备预案。Par
2021-11-07 09:55:48 1027
原创 Mybatis之ParameterMap、ParameterType传参类型指定使用姿势
在使用Mybatis开发时,借助xml来写具体的sql,再写传参类型或者返回结果类型时,通常会与ParameterType, ParameterMap, ResultMap, ResultType这四个打交到,那么这个Type与Map到底怎么区别,什么时候要指定类型,什么时候又可以不指定呢?I. 环境配置我们使用SpringBoot + Mybatis + MySql来搭建实例demospringboot: 2.2.0.RELEASEmysql: 5.7.22项目配置org.mybatis
2021-11-07 08:31:46 3452
原创 html2canvas 用法及部分踩坑实录
什么是 html2canvs?html2canvas 的作用就是允许让我们直接在用户浏览器上拍摄网页或其部分的“截图”。它的屏幕截图是基于 DOM 的,因此可能不会 100% 精确到真实的表示,因为它不会生成实际的屏幕截图,而是基于页面上可用的信息构建屏幕截图。html2canvas 可以用来做什么从上的面的介绍可以知道, html2canvas 的作用就是根据 DOM 生成对应的图片,所以一个比较常见的应用场景就是我们可以使用它在 H5 端生成分享图。如何使用 html2canvas
2021-11-06 17:29:21 976 2
原创 好的,DFS,也学会了
没错,本篇是上一篇《好的,BFS,又学废了!》的姊妹篇,意在通过简单回顾拾起学了忘、又忘了学的基础数据结构;DFS,全称是:深度优先遍历(Depth_First_Search),通常和 BFS 广度优先遍历(Breadth-first search)对比理解学习;还记得,前篇最后小结中的一句话:BFS,是一种利用队列实现的搜索算法。(与之相对的 DFS 是用栈来处理)没错!再次强化理解:DFS 采用的是栈的形式, 即先进后出; BFS 则采用的是队列的形式, 即先进先出;深度优先
2021-11-06 17:28:23 157 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人