利用阿里Teambition搭建个人网盘 TeambitionShare网盘直链解析

简述下流程:首先你要有Teambition账号,登录后创建项目,在网址栏复制project/后的一串字符(下文称为项目ID),安装以下开源项目到你的虚拟主机或Windows电脑,访问后设置项目id、Teambition的cookie等信息即可。源码PHP的,所以只需要PHP虚拟主机即可。TeambitionShare开源地址:https://github.com/FlxSNX/TeambitionShareGitee上的Fork地址:https://gitee.com/cwayteam/TeambitionShare.git彩虹的教程:http://blog.cccyun.cn/post-414.html当然windows电脑亦可直接运行node.js版本:https://hik.lanzoux.com/iz4skkictqf解压后直接运行即可。

安卓安装xapk等多应用包教程

SAI一款可以安装非. apk格式的小工具,非典型 apk文件的相关介绍可参考少数派文章:https://sspai.com/post/60228 Google play SAI:https://474b.com/file/19167328-443529268酷安下载:https://www.coolapk.com/apk/com.aefyr.sai背景支持「多 APK」特性的应用越来越多,一些与之对应的第三方分发方式也逐渐成型。以 Netflix 的安装包为例:我们在 APKMirror 能够下载到一个后缀名为 .apkm 格式的安装包,在 ApkPure、Aptoide 这类网站上则能够下载到一个后缀名为 .xapk 格式的安装包。因此这款app可以完成你对这些格式软件的安装

几个常用正则

匹配非特殊字符串:([\\u2E80-\\u9FFF]|\\w|[,,\\.。()])*匹配手机号:1[34578][0-9]{8,10}匹配任意字符:[\s\S]+?匹配汉字:[\u4e00-\u9fa5]{0,}匹配邮箱:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址:[a-zA-z]+://[^\s]*

一个讲解开源项目系列文章库

无意中看到的,存个书签吧:https://github.com/HelloGitHub-Team/Article

安卓手机OTG无法写入文件解决方法

解决方法:将移动设备用DiskGenius格式化成FAT32即可。本机MIUI使用NTFS格式只能读取无法写入,并且播放大视频拖动进度条时需要缓存时间,改成FAT32后播放视频可以随时拖动。手机自带文件管理器无法识别OTG,可以尝试使用ES文件管理器。

EasyExcel的简单使用

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址:https://github.com/alibaba/easyexcel依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.17</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.7</version> </dependency>若是使用jar包方式请下载:https://hik.lanzoux.com/i1qEtk5mvzi使用官方文档:https://www.yuque.com/easyexcel/doc/easyexcel一般操作官网都有,下列介绍不创建对象方式创建Excel,并且自定义列宽、单元格对齐方式。示例为导出表格其中代码设置样式参考:https://www.yuque.com/easyexcel/doc/write#W4u1e示例 response.reset(); response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"), "ISO8859-1")); ServletOutputStream out = response.getOutputStream(); // 头的策略 WriteCellStyle headWriteCellStyle = new WriteCellStyle(); // 内容的策略 WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现 HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); EasyExcel.write(out).registerConverter(new TimestampCovert()) .registerWriteHandler(horizontalCellStyleStrategy) .registerWriteHandler(new FixedColumnWidthStyleStrategy()) .head(Utils.toTead(titles)) .sheet("sheet1").doWrite(list); out.flush();Converter由于表格数据list来自数据库,包含Timestamp类型数据,因此这里需要自己写了个转换器:import com.alibaba.excel.converters.Converter;import com.alibaba.excel.enums.CellDataTypeEnum;import com.alibaba.excel.metadata.CellData;import com.alibaba.excel.metadata.GlobalConfiguration;import com.alibaba.excel.metadata.property.ExcelContentProperty;import java.sql.Timestamp;import java.text.SimpleDateFormat;public class TimestampCovert implements Converter<Timestamp> { @Override public Class supportJavaTypeKey() { return Timestamp.class; } @Override public CellDataTypeEnum supportExcelTypeKey() { return CellDataTypeEnum.STRING; } @Override public Timestamp convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception { return Timestamp.valueOf(cellData.getStringValue()); } @Override public CellData convertToExcelData(Timestamp timestamp, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception { return new CellData<>(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(timestamp)); }}详细可参考:https://blog.csdn.net/fsadkjl/article/details/105823830WriteHandler示例代码中使用了样式的与列宽的Handler,FixedColumnWidthStyleStrategy继承了AbstractColumnWidthStyleStrategy,代码如下:import com.alibaba.excel.metadata.CellData;import com.alibaba.excel.metadata.Head;import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;import org.apache.poi.ss.usermodel.Cell;import java.util.List;public class FixedColumnWidthStyleStrategy extends AbstractColumnWidthStyleStrategy { private int columnWidth = 23; @Override protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<CellData> list, Cell cell, Head head, Integer integer, Boolean aBoolean) { writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), columnWidth * 256); } public FixedColumnWidthStyleStrategy() { } public FixedColumnWidthStyleStrategy(int columnWidth) { this.columnWidth = columnWidth; }}headhead设置头信息,由于head是一个List<List<String>>集合,这里封装成方法,传表头集合进去生成合适的表头类型。 public static List<List<String>> toTead(List<String> titles) { List<List<String>> list = new ArrayList<List<String>>(); List<String> head = new ArrayList<String>(); for (String title : titles) { head.add(title); list.add(head); head = new ArrayList<String>(); } return list; }筛选列导出可以根据传入的需要显示的字段titles动态改变sql获取数据,若查出所有字段的话筛选如下: /** * 设置表格信息 * @param dataList 查询出的数据 * @param titles 需要显示的字段 * @return */ private static List<List<Object>> dataList(List<Object> dataList, List<String> titles) { List<List<Object>> list = new ArrayList<>(); for (Object person : dataList) { List<Object> data = new ArrayList<>(); for (String fieldName : titles) { /**通过反射根据需要显示的字段,获取对应的属性值*/ data.add(getFieldValue(fieldName, person)); } list.add(data); } return list; } /** * 根据传入的字段获取对应的get方法,如name,对应的getName方法 * @param fieldName 字段名 * @param person 对象 * @return */ private static Object getFieldValue(String fieldName, Object person) { try { String firstLetter = fieldName.substring(0, 1).toUpperCase(); String getter = "get" + firstLetter + fieldName.substring(1); Method method = person.getClass().getMethod(getter); return method.invoke(person); } catch (Exception e) { logger.error("使用反射获取对象属性值失败", e); return null; } }参考:https://my.oschina.net/zjiamin/blog/4710076

VeraCrypt开源硬盘加密工具

VeraCrypt 是 TrueCrypt 的分支,于2013年6月发布,项目的主要开发者是来自法国的安全顾问 Mounir Idrassi 。Idrassi 创建 VeraCrypt 分支的动机是在 2012 年他被要求在客户产品中整合 TrueCrypt,他评估了 TrueCrypt代码后发现它存在一些问题,TrueCrypt 的主要弱点是不能防御暴力破解攻击。在加密系统分区时,TrueCrypt 使用 PBKDF2-RIPEMD160 算法进行 1000 次迭代;对于标准容器和非系统分区,TrueCrypt 最多迭代 2000 次。相比之下,VeraCrypt 使用 PBKDF2-RIPEMD160 算法对系统分区迭代 327,661 次,对于标准容器和非系统分区,迭代次数进一步增加到 655,331 次,大幅增加暴力破解难度。结果是,VeraCrypt 打开加密分区的速度略慢,而它的加密格式也不兼容于 TrueCrypt。另一个 TrueCrypt 分支 CipherShed 项目则努力兼容 TrueCrypt 加密格式。(以上介绍内容来自 Solidot)。可以说VeraCrypt 是 TrueCrypt停止维护的一个替代品,其官网:https://www.veracrypt.fr/en/Home.html支持windows、mac、linux平台还是挺不错的,不过加载速度不如windows的bitlocker,但是可以多平台使用,各有优劣吧。另兼容 TrueCrypt 的 CipherShed 官网:https://www.ciphershed.org/

Windows创建VHD加密盘、制作加密U盘教程

本来想下载百度上推荐的加密工具TrueCrypt,但是下载后打开,它弹窗说我电脑不是XP,说TrueCrypt项目早停止了,建议我用VHD跟BitLocker,于是我就一步一个脚印来设置VHD:1、win10用户快捷键windows+X键打开菜单,按K键打开磁盘管理2、点击操作->创建VHD3、在弹窗上选择位置,文件名随意例如4、我选择创建1G的盘,大小随意,点确定即可创建成功5、出现个新磁盘,带向下箭头的,点击它鼠标右键再点击初始化磁盘,分区格式随意,一般默认即可6、初始化后出现个未分配的磁盘,咱右键新建简单卷即可,后面的无脑下一步就好了,记得选择个合适的驱动号,例如我选择的驱动号是V,好了现在资源管理器出现了这个新磁盘7、我们右键它选择启用BitLocker8、输入密码后下一步,并将可以找回密码的凭证保存,最后一步若要用在U盘上使用 兼容模式 加密即可9、创建好了如图,不想用时可以跟U盘一样随时右键弹出10、使用时直接双击加密盘文件打开,会报错无法装载说要解锁,此时点击win10下边通知在弹窗中输入密码即可,如果这个密码框无意按没了,可以Windows+E打开资源管理器,点磁盘图标同样会出现密码框。以后vhd文件可以作为你的加密磁盘随时移动,可以移动到U盘、移动硬盘甚至备份到网盘。当然,其实你也可以给整个U盘进行bitlocker而不需要创建VHD,依据个人喜好使用吧!

Windows创建VHD加密盘、制作加密U盘教程

安卓MacroDroid充电语音提醒脚本

充电、拔掉电源、充满电都会有语音提醒,并且拔掉电源跟充满电会提示耗时多少充进去多少电。脚本如下,下载解压,文件管理器以MacroDroid打开方式打开即可。脚本下载:https://hik.lanzoux.com/iu045jwwlwb

MacroDroid Pro v5.8.4安卓版下载

这是一款十分强大的安卓自动任务软件,可以自行设置出发条件及执行事件,在此之前也写过几个帖子。操作比tasker更简易。下载地址:https://hik.lanzoux.com/ixP8Jjwtgij