avatar
yuan
Ruby 线程基础
本文是学习笔记,学习过程中主要阅读和参考了以下资料,记录的代码片断也来自以下链接。部分代码稍作了修改。最后那个链接虽然有些标题党,但是内容很值得一看: Working with Ruby Threads Does the GIL Make Your Ruby Code Thread-Safe? Ruby concurrency: in praise of the mutex 99%的人没弄懂volatile的设计原理,更别说灵活运用了 如果你想要靠并发提高性能,就得开启更多的进程,Ruby 社区多年以来一直是这么做的。 但是线程的内存开销比…
avatar
www
测试
avatar
比特
小米 Android 新机型无 Rec 刷机步骤
因为最新的Android因为Google要求,均为V-AB格式。所以基本没有内置REC分区,或者将REC分区放在了Slot B,俗称B槽。 这种前提下,刷机有两种方法: 进入fasboot ,用第三方提供的脚本一键刷机,保姆级别,简单好用 刷REC,传统方式刷机 但是第二种方式经常有很多问题,出现这些问题基本都是刷机步骤不对。这里简单说明一下在V-AB分区下的Rec刷机步骤(默认解锁后的机器,解锁步骤不再赘述)。 默认…
avatar
比特
无Recovery安装magisk
直接上步骤: [一、确定你的刷机包] 1. 线刷包 找到你的boot.img文件,复制到手机内 2. 卡刷包 首先解压你的卡刷包,然后下载https://textview.io/files/payload_dumper-win64.zip 解压,将上面解压后卡刷包内的payload.bin复制到payload_dumper文件夹内的payload_input文件夹内,后打开payload_dumper-win64,等待输出完成到payload_output中。 [二、更改boot.img] 通过上面的1或2你会得到boot.img文件,将文件复制到手机内你…
avatar
比特
本地部署nexus3 搭建maven私服
由于JFREG的一系列惊人操作,GITEE关闭maven功能,不得已,本地搭建以下maven服务。 准备工作:JDK (如果你的设备存在JDK环境,请忽略这部分。) 安装JDK8 sudo apt-get install openjdk-8-jdk 1.下载 下载地址:https://www.sonatype.com/thanks/repo-oss 选择你的系统版本进行下载。这里演示的是linux版本 2.配置 nexus默认占用端口为8081,如果端口已经被使用,需要在nexus-3.xxxx/etc/nexus-default.properties 文件中进行修改 3.运行/安装 下载好之后解压,得到nexus-3.xxxx,进入…
avatar
比特
Android 应用沙盒浅析
其实这是一个存在很久的概念,只是近几年Android开发者才开始适配。他如同Linux和ios那样,应用单独储存却又可以互相交互。下面就来说一下这其中有什么 1. 沙盒 首先看官方的解释 Android 平台利用基于用户的 Linux 保护机制识别和隔离应用资源,可将不同的应用分隔开来,并保护应用和系统免受恶意应用的攻击。为此,Android 会为每个 Android 应用分配一个独一无二的用户 ID (UID),并让应用在自己的进程中运行…
avatar
比特
不使用[A]Router进行组件化之间的Activity跳转
我最开始使用的方法 val intent = Intent() intent.setClassName(this, “com.exemple.SecoundActivity”) startActivity(intent) 可能出现的问题 如果你的代码文件发生了变化,那么你的代码会爆炸。如果你更改了包名后,直接大爆炸。 我们需要用到:https://github.com/gaelmarhic/Quadrant ,Quadrant可以扫描解析所有的报名并帮你生成常量类以便使用。 官方readme中的示例 object QuadrantConstants { const val MAIN_ACTIVITY: String = "com.gaelmarhic.quadrant.MainActivity" const val SECONDARY_ACTIVITY: String = "com.gaelmarhic.quadrant.SecondaryActivity" const val TERTIARY_ACTIVITY…
avatar
比特
Android 的 v-a/b分区简单理解
基础理解 我们可以直接把v-a/b分区理解成,当你在使用手机,进行系统升级,系统会把升级内容存放在A分区,你继续使用B分区,前面的V就是虚拟的意思(virtual)。在尽量不影响你使用的开机情况下进行升级,取消了在rec分区进行升级的复杂操作。 详细理解(我的浅见) 首先说结构。传统结构中,存在rec,boot,system分区,在V-ab结构中,抛弃了提到的这三个分区,取而代之的是:boot_a,system_a,boot_b…
avatar
dipper
[译文]基于API的SaaS的崛起
原文:https://blog.chartmogul.com/api-based-saas // 原文是一个访谈,本文为机翻+人工校对。 下文中用//标识我的一些想法 摘要:在这一集中,我与Clearbit联合创始人兼首席执行官Alex MacCaw进行了交谈,他认为基于API的产品将成为下一代企业软件的原因:自2009年首次融资以来,该平台在几年内取得了显著的发展,现在为可口可乐,Uber和EMC2等大型企业运行电信基础设施。 一旦集成到您的平台上,在剥离功能并取代它时…
avatar
比特
Android主动限帧
随着高帧率手机的普及,在很多APP内需要限制手机的帧率来进行省电优化。今天的例子就是视频(直播/点播)播放的软件限帧距离。 推流优化 首先我们说,在视频采集时,有两种采集方式:屏幕采集和camera采集。 camera采集 这里我们可以直接限制camera的采集频率。这里有几个优化方案供参考 android.hardware.camera2.params.StreamConfigurationMap 现在的很多手机采集一般为50HZ-60HZ,部分低端机前置为30HZ(** 也有部分安卓机器的…
avatar
Rei
Rails on Docker: 用 docker-sync 改善文件同步性能
💡 Rails on Docker 系列文章是面向 Rails 程序员的 Docker 教程,描述了如何从开发环境到部署环境中应用 Docker。这是系列文章的第三篇。 在上一节中我们已经学习了用 Docker Compose 搭建开发环境,这一节将介绍如何用 docker-sync 改善开发环境的文件同步性能。 文件同步有什么问题? 在 Mac 下使用 Docker,你可能会发现性能差得离谱。一个在本地环境 2 秒启动的 Rails 应用,在容器里面要一分钟。如果项目依赖很多(例如 NPM),速度…
avatar
比特
简单实现带时间限制的合约水龙头代码
pragma solidity ^0.5.1; interface ERC20 { function transfer(address to, uint256 value) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } contract Faucet { uint256 constant public tokenAmount = 100000000000000000000; uint256 constant public waitTime = 30 minutes; ERC20 public tokenInstance; mapping(address => uint256) lastAccessTime; constructor(address _tokenInstance) public { require(_tokenInstance != address(0)); tokenInstance = ERC20(_tokenInstance); } function requestTokens() public { require(allowedToWithdraw(msg.sender)); tokenInstance.transfer(msg.sender, tokenAmount); lastAccessTime[msg.sender] = block.timestamp + waitTime; } function allowedToWithdraw(address _address) public view returns (bool) { if(lastAccessTime[_address] == 0) { return true; } else if…
avatar
lvwzhen
酷玩周刊 第 6 期
发掘一切有趣的数字生活 🚀 产品试玩 上海抗疫互助 最近上海疫情愈加严重,有网友自制了一个抗疫互助平台,可以自行发布求助信息和提供物资帮助,希望能帮到上海的朋友。 Qwerty Learner 如果你最近正在学习英语,可以试一下 Qwerty Learner,通过它可以将背单词和键盘输入的肌肉记忆相结合,另外还有4级、6级、托福、雅思、编程等多种词库可供选择。 腾讯智能创作助手 腾讯AI实验室最近推出了「智能创作助手」,利用 AI 技术提升写作者的写作…
avatar
yuan
Ruby 代码线程安全的一些编写原则
避免修改全局共享的对象 非必要的情况下尽量避免修改全局共享的对象,包括 $ 开头的全局变量、单实例对象、AST、类变量/方法等。 下面的写法是线程安全的,因为它没有修改全局的状态: class RainyCloudFactory def self.generate cloud = Cloud.new cloud.rain! cloud end end 下面的写法不是线程安全的,因为它修改了全局的状态: class RainyCloudFactory def self.generate cloud = Cloud.new @@clouds << cloud cloud end end 但是,如果非用全局共享的对象不可,也不是不能用…
avatar
Xhofe
Golang与Rust交叉编译
交叉编译 交叉编译一般是指在一个平台上生成另一个平台上的可执行代码,因为有一些目标平台性能很弱,编译需要花费很长的时间,所以需要在性能较高的平台上通过交叉编译来得到目标程序。 在golang和rust中交叉编译都是很容易实现的。 Golang golang交叉编译一般不需要额外的工具,只需要在golang编译时指定GOOS(操作系统)和GOARCH(CPU架构)即可。 可以使用go tool dist list来查看所有支持的目标平台…
avatar
谢乾坤|Kingname
爬虫出海Step by Step(一)
上周的文章《一日一知:国内爬虫开发人员的未来》发布以后,很多同学私信我表示对爬虫出海很有兴趣,希望我能详细介绍一下。因此,我准备用几篇文章来介绍爬虫出海的具体做法细节和注意事项。 今天我们的话题是,如何规避法律风险。 如果你是个人开发者,那么你直接写爬虫爬就可以了。不会有人跨国来抓你的。 如果你是小公司,并且在海外没有分公司,那么你也可以像个人开发者一样直接爬。 如果你是大公司…
avatar
谢乾坤|Kingname
一日一技:多个Python项目怎么调用我自己的工具函数?
在多年写代码的过程中,我总结了不少常用的工具函数。这些工具函数有的能够实现快速重试网络请求,有的可以把任意格式的时间转成标准格式,还有的可以自动生成正则表达式。 我把这些工具函数分别放到多个.py文件中。然后把这些.py文件放在一个叫做my_awesome_util的文件夹中。 由于我没有把这些代码上传到Pypi或者Github,因此我每次在新的项目中要使用时,都要把my_awesome_util文件夹复制到新…
avatar
BestXTools
好工具周刊(第 8 期): tldraw, TableConvert, markmap, B64, 词云小工具, EmojiAI, Reshot
发现并分享有趣,有创意,免费、好用的工具,每周四发布。由 BestXTools 创作。 上一期内容 | 下一期内容 | 往期内容 | RSS 订阅 | 邮箱订阅 | 微信订阅 | 工具推荐 | 评论 在线工具 tldraw - A tiny little drawing app tldraw 是一个非常简单易用的在线白板、绘图工具。(@Jaya0455 投稿) 链接: https://www.tldraw.com/ 源码: https://github.com/tldraw/tldraw 类似工具: Excalidraw - https://excalidraw.com/ (第 6 期) TableConvert Online - 在线表格转换工具 一个强大的在线表格转换工具,可在 Markdown、Excel…
avatar
吕小荣
iPhone 一键拨入 zoom 会议
Join Zoom Meeting https://us04web.zoom.us/j/72358911786?pwd=OScDs3rdFTjs Meeting ID: 723580786 Passcode: vu3128e 我儿子每周用 Zoom 上网课,老师会提前发短消息给我 Zoom 链接,然后我打开 iPad,点击链接,自动跳转到浏览器,然后再跳转到 zoom,开始上课。 因为我的短信太多,儿子才6岁,不会操作,每次都要找我。有没有办法把老师的 Zoom 链接保存到手机屏幕上,每次上课时点击一夏图标就自动打开呢? 我最终在 reddit 上找到了办法。 制作 Zoom URL 普通的…
avatar
Sundar
x
xx