我的开源代码将保存千年
Arctic Code Vault 计划
“把开源代码在北极保存 1000 年!”去年,GitHub 公布了一项代码存档计划——Arctic Code Vault,要把代码埋入北极地下 250 米深的永久冻土层,希望将代码保存一千年。
现在,这不只是一个遥远的梦想了,GitHub 已经把采集到的活跃公共存储库快照保存到了位于北极的数据仓库,以备来世之用。此外,GitHub 还为开发者在配置文件中设计了纪念徽章。
下面是我的徽章,开心:
GitHub 代码永久保存计划启动在 GitHub 环球2019开发者大会上,GitHub 首席执行官 Nat Friedman 首次介绍了 GitHub 存档程序,他说:“在这个平台上,代码应该存储在北极的一个档案中,用胶片卷起来,供后人使用。”过去几个月,GitHub 与 Piql(长期数字存储提供商)合作,将 21 TB 的 GitHub 存储库数据写入了 186 卷的 piqlFilm 数字光感档案胶片中。
开发人员和开发人员的代码创建的快照现在在存档中,现在可以在他们的GitHub配置文件上看到相应的徽章,据说,获得一个 Star 用户就可以 ...
又是一年高考季
还有几天就要高考了,也祝所有学子能有个好的未来
毕业了,又到了一年一度的六月,一个离校的季节!
16年毕业入社会四年之余,不得不感慨岁月如斯,时光如梭。感受了自由的甜,也尝试了独立的苦,总之跟校园生活比起来感受完全不同。好像当初我们自“被迫逃离”校园那一刻起,就只能不顾一切的往前冲,甚至来不及追忆自己的青春与成长,一转眼毕业都四年了,不禁心生唏嘘。所以聊聊我这些年的经历,以及心里留下的为数不多的那几道痕吧。
我的专业是物联网应用,所以我毕业后进入了一家硬件公司,主要是做我们小时候街边玩的那种游戏街机还有一些娃娃机之类的产品。后来在认识到Android系统的强大和兼容之后公司也开始转型,做比较高端的Android主板的定制,让客户可以直接使用Android的平台开发游戏。这次的转型给了公司一次发展的机会,每个月的出货量也提高了很多。也是这一次的转型让我接触到了Java这门开发语言,从此也结下了不解之缘。
当年刚入职场时就像刚学飞的雏鸟,内心的我要展翅高飞,现实是我不会呀。虽然大学的学过单片机自己也做过挺多的小项目,但这些东西和实际应用相差很大,比如什么时候用滤波电容,用多大,或者电路 ...
小姐姐用动图展示 10 大 Git 命令,包你看完过目不忘!
git merge、git rebase、git reset、git revert、git fetch、git pull、git reflog……你知道这些 git 命令执行的究竟是什么任务吗?如果你还有些分不清楚,那千万不能错过这篇文章。
在本文中,熟知 JavaScript、TypeScript、GraphQL、Serverless、AWS、Docker 和 Golang 的 21 岁年轻软件顾问 Lydia Hallie 通过动图形式直观地介绍了这些常用 git 命令的工作过程,包你过目不忘。
尽管 Git 是一款非常强大的工具,但如果我说 Git 用起来简直是噩梦,大多数人也会认同我的说法。我发现在使用 Git 时,在头脑里可视化地想象它会非常有用:当我执行一个特定命令时,这些分支会如何交互,又会怎样影响历史记录?为什么当我在 master 上执行硬重启,force push 到原分支以及 rimraf 我们的 .git 文件夹时,我的同事哭了?
我觉得创建一些最常用且最有用的 Git 命令的可视化示例会是一个完美的用例!下面我将介绍的很多命令都有可选参数——你可以使用这些参 ...
让我们用脚本启动jar吧
说明因为spring boot项目每次打包成jar都要手动写一串命令启动,不像正式服有自动发布系统。
1nohup java -jar xxx.jar &
编写脚本所以让我们写个脚本来代替吧:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465#!/bin/bash#description: 启动重启server服务#端口号,根据此端口号确定PIDPORT=7788#启动命令所在目录HOME='/home/ec2-user/server/online-consumer-backups'jarName='consumer-online-backups.jar'#查询出监听了PORT端口TCP协议的程序#pid=`netstat -anp|grep $PORT|awk '{printf $7}'|cut -d/ ...
Docker 安装CentOS8
我本机使用的是Windows 10 Pro,因为有时候需要使用Linux,但是如果使用虚拟机的模式会麻烦,不仅要安装虚拟机还得去下载几个G的镜像。所以这里使用docker安装CentOS8,下面是我们的docker版本。
目前最近的laster版本就是CentOS8的版本,如果你想使用其他版本也可以。
拉取最新的镜像:
1docker pull centos
查看已下载的镜像:
123λ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos latest 470671670cac 4 months ago 237MB
用镜像创建一个容器:
1docker run -d -p 5555:22 --name mycentos8 --privileged=true centos /usr/sbin/init
查看启动的容器:
123λ docker p ...
Redisson各种锁的实现
写在前面Redisson框架十分强大,基于Redisson框架可以实现几乎你能想到的所有类型的分布式锁。这里,我就列举几个类型的分布式锁,并各自给出一个示例程序来加深大家的理解。有关分布式锁的原理细节,后续专门撸一篇文章咱们慢慢聊!
1.可重入锁(Reentrant Lock)Redisson的分布式可重入锁RLock Java对象实现了java.util.concurrent.locks.Lock接口,同时还支持自动过期解锁。
123456789101112131415161718public void testReentrantLock(RedissonClient redisson){ RLock lock = redisson.getLock("anyLock"); try{ // 1. 最常见的使用方法 //lock.lock(); // 2. 支持过期解锁功能,10秒钟以后自动解锁, 无需调用unlock方法手动解锁 //lock.lock(10, TimeUnit. ...
放弃Dockerfile 部署 Spring Boot,来和谷歌的Jib插件 PY一下
放弃Dockerfile 部署 Spring Boot,来和谷歌的Jib插件 PY一下说明Jib 为 Java 应用程序构建优化的 Docker 和OCI映像,无需 Docker 守护进程,并且对 Docker 最佳实践没有深度掌握。它作为Maven和Gradle的插件以及 Java 库提供。
Jib 使用 Java 开发,使用也非常简单,可以作为 Maven 或者 Gradle 的插件直接集成到我们的项目中。它利用镜像分层和注册表缓存来实现快速、增量的构建。Jib 会自动读取项目的构建配置,代码组织到不同的层(依赖项、资源、类)中,然后它只会重新构建和推送发生变更的层。在项目进行快速迭代时,Jib 只将发生变更的层推送到 registers 来缩短构建时间。
这是谷歌开源的一个容器化运行方案,使用它我们将 Spring Boot 进行容器化部署只要两步:
第一步配置 Maven Plugin
第二步构建
使用如果需要推送到官方的 Docker Hub,需要提前准备一个 Docker Hub 的账号,账号可以直接去 Docker Hub 上面注册(https://hub.docke ...
Storm入门
说明Storm是Twitter开源的分布式实时大数据处理框架,随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统(高频交易、股票)等等,大数据实时处理解决方案(流计算)的应用日趋广泛,目前已是分布式技术领域最新爆发点,而Storm更是流计算技术中的佼佼者和主流。
storm的数据执行流程如下如
我们通过自定义Spout和Bolt的流程来控制数据的传输和处理。
此处使用使用kafka作为输入数据源,通过定时任务不断地产生模拟数据,storm获取kafka的数据处理,处理完毕之后吧数据存储在Redis中。
依赖因为storm-core和spring-boot会有slf4j日志的冲突,所以我们需要排除大量的依赖
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 ...
一个小小的RPC框架
一个mini的RPC框架说明这是一个实验性的RPC框架,麻雀虽小但是五脏俱全,基本上RPC的有的功能基础功能都实现了,比如注册发现,反向代理调用等。
在使用上也非常简单只需几行的代码:我们先定义一个接口是实现
12345678910111213141516public interface CalcService { /** * 获取IP地址 * * @return */ String getIp(); /** * 打招呼 * * @param name 名称 * @return */ String hi(String name);}
然后实现它
1234567891011121314151617181920public class CalcServiceImpl implements CalcService { @Override public String getIp() { String ip = null; ...
left join、right join和join,傻傻分不清?
说到SQL,很多人可能用了挺久,但依然有个问题一直困扰着,那就是 left join、 join、 right join和 inner join等等各种 join的区别。网上搜,最常见的就是一张图解图,如下:
接下来就来实际自己动手实验,彻底搞懂图中的含义。
首先,先来建两张表,第一张表命名为 kemu,第二张表命名为 score:
left join顾名思义,就是“左连接”,表1左连接表2,以左为主,表示以表1为主,关联上表2的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。如下:
12345SELECT * FROM kemu LEFT JOIN score ON kemu.ID = score.ID
结果集:
right join“右连接”,表1右连接表2,以右为主,表示以表2为主,关联查询表1的数据,查出表2所有数据以及表1和表2有交集的数据,如下:
12345SELECT * FROM kemu RIGHT JOIN score ON kemu.ID = score.ID
结果集:
join(inner join)join,其实就是“ ...