- 博客(104)
- 资源 (2)
- 收藏
- 关注
原创 Docker Compose 部署 steamcmd 安装奈斯服务端
由于打算在云端服务器部署奈斯启示录服务端跟朋友们一起玩, 所以在云端搭建服务器, 顺便写下本文章记录搭建的过程。
2025-03-10 18:30:50
405
原创 Android GreenDAO 适配 AGP 8.0+
在 Android 中使用 GreenDao,由于 GreenDao 现在不维护,所以更新到新版本的 Gradle 经常出问题,在这记录一些升级遇到的问题,并且记录解决方案。
2025-02-18 22:52:29
718
原创 深入理解 Android 混淆规则
混淆是一种通过对代码进行重命名、删除无用代码等操作,来降低代码可读性和反编译风险的技术。在 Android 开发中,ProGuard 和 R8 是最常用的混淆工具。两者均可通过缩小代码体积、优化性能来提升应用的整体表现,同时保护应用逻辑。
2025-01-15 11:16:41
1176
原创 Mac Java 使用 tesseract 进行 ORC 识别
在 Java 开发中使用图片转文字时,难免会遇到问题,比如我使用 Mac (M1 芯片) 系统进行开发,就出现报错。
2024-11-13 18:50:44
702
原创 本地拉取Docker镜像打包导入远程服务器
起因是因为使用远程服务器拉取镜像时,由于网络问题一直拉不成功,使用国内镜像由于更新不及时,国内镜像没有最新的 docker 镜像。最后使用本地的计算机,通过代理下载最新的镜像后打包成 tar, 然后上传到远程服务器进行导入。
2024-10-14 19:43:03
717
原创 Linux dig 命令
dig命令提供了丰富的选项,可以进行各种类型的 DNS 查询。您可以通过man dig命令查看dig命令的完整手册以获取更多信息。
2024-05-22 20:32:01
1328
原创 Android 获取 uid
在 Android 系统中, 存在 uid、pid 等概念, uid 即用户 ID, pid 即进程 ID。uid 每个进程可能会重复, pid 每个进程唯一。
2024-04-13 10:28:08
2242
2
原创 使用 Docker Compose 部署邮件服务器
很多时候为了方便, 我们都直接使用第三方邮箱进行收发邮件。但第三方邮箱有些要求定期修改密码,有些限制发邮箱的次数, 对于一些个人和企业来说, 有自己的域名和服务器为什么不自己搭建一个邮件服务器呢?因此, 笔者在这记录自己学习并且搭建邮箱服务器的步骤与过程。本文主要使用进行搭建, 其中一些资料和链接, 有需要详细了解的, 请查看参考文献。
2024-04-02 20:37:32
5692
3
原创 使用 Docker Compose 快速搭建监控网站 uptime-kuma
是一个精美的托管监控工具, 项目发布在GitHub上, 查看官方的 Demo 可以点击这里。
2024-03-15 23:06:12
919
1
原创 使用 Docker Compose 部署 Halo 2.x 与 MySQL
本文主要介绍使用部署Halo 2.x和MySQL, 主要针对小白。有一定基础的, 可以直接去官网查看。
2023-12-30 05:15:20
1952
原创 Linux 登陆失败查询
最近笔者购买的 VPS 中发现一堆登陆失败信息, 因此写下本文记录登陆失败查询的步骤。如果不是自己登陆失败, 那么一定是黑客使用暴力算法不断的尝试账号和密码, 如果不采取措施, 那么密码账号和密码就有概率被跑出来, 服务器也将被盗。
2023-12-24 23:59:05
1232
1
原创 Linux 配置 swap 区
很多时候我们需要配置swap主要的原因是物理内存太贵了, 服务器也是一样, 当内存不够用时, 系统会卡死, 因此我们宁愿牺牲一点性能也要让系统正常运行。当然, 在系统物理内存足够的条件下, 建议关闭swap, 内存运行速度远大于硬盘, 而swap实际上在硬盘上分配一些空间来充当内存的作用。
2023-12-24 06:52:05
937
原创 Java minecraft(我的世界)环境部署
本文主要讲解我的世界的环境搭建, 包括搭建服务端和客户端, 为了避免不必要的麻烦最好是遵守, 本教程搭建的环境可支持局域网连接多人游戏。
2023-08-17 23:40:12
2574
原创 群晖安装 frpc
写该文章之前, 我尝试过使用 “任务计划” 设置开机启动frpc, 但是失败了。最后尝试使用docker开机启动frpc才成功, 因此本文主要介绍使用docker使用frpc。
2023-08-16 23:09:29
2018
原创 FRP 实现内网穿透
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
2023-08-14 23:26:51
591
原创 群晖包管理工具 synopkg
本文主要介绍群晖的包管理工具synopkg,类似于Ubuntu中的apt-getCentOS中的yum。该命令需要在命令行中执行, 需要在控制面板->终端机和 SNMP->启动 SSH 功能, 最后使用ssh进行远程登陆。如需切换到Root权限, 使用sudo -i密码为群晖的管理密码。
2023-01-28 04:02:51
7657
1
原创 Ubuntu 安装 g++ 和 CMake
由于编写 C/C++ 多数依赖于编译器, 反而忽略了使用命令行进行编译, 因此在这记录使用 g++ 和 CMake 进行编译打包的步骤。g++ 是 GNU 开发的 C++ 编译器,是 GCC(GNU Compiler Collection)GNU 编译器套件的组成部分。gcc 是 GNU 的 C 编译器。CMake 是个一个开源的跨平台自动化建构系统,用来管理软体建置的程序,并不依赖于某特定编译器,并可支援多层目录、多个应用程式与多个函式库。
2023-01-22 04:37:55
9328
3
原创 Markdown 编辑器速查表
由于经常使用 Markdown 编辑器, 每次写有些符号忘记了, 因此在这里整理一份速查表, 如有遗漏, 欢迎留言。
2022-12-21 12:39:31
682
原创 CentOS docker 和 docker compose 安装
Docker 是一个用于开发,交付和运行应用程序的开放平台。Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。
2022-11-29 12:44:51
739
1
原创 Mac brew 安装与使用
本文主要以 jadx 软件为例介绍 brew 的安装以及常用的使用命令, Homebrew 是一个软件管理工具, 类似于应用商城。
2022-11-19 21:40:51
3229
原创 macos 环境变量 source 重启后失效
macos 环境变量一般我们都保存到 ~/.bash_profile 中, 并且使用 source ~/.bash_profile 令它生效, 但重启后环境变量就失效了, 需要重新执行 source ~/.bash_profile,因此本文给出解决方案。
2022-11-19 21:11:07
2454
转载 【转载】Java NIO系列教程(十三)Java NIO与IO
Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取。同样,如果你需要维持许多打开的连接到其他计算机上,如P2P网络中,使用一个单独的线程来管理你所有出站连接,可能是一个优势。Java NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。你所知道的是,该缓冲区包含一些字节,这使得处理有点困难。
2022-11-16 02:53:37
190
转载 【转载】Java NIO系列教程(十二)Pipe
Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。read() 方法返回的 int 值会告诉我们多少字节被读进了缓冲区。通过Pipe.open()方法打开管道。要向管道写数据,需要访问sink通道。
2022-11-16 02:31:10
203
转载 【转载】Java NIO系列教程(十一)Java NIO DatagramChannel
可以将DatagramChannel“连接”到网络中的特定地址的。由于UDP是无连接的,连接到特定地址并不会像TCP通道那样创建一个真正的连接。也不会通知你发出的数据包是否已收到,因为UDP在数据传送方面没有任何保证。Java NIO中的DatagramChannel是一个能收发UDP包的通道。当连接后,也可以使用read()和write()方法,就像在用传统的通道一样。
2022-11-16 02:28:05
422
转载 【转载】Java NIO系列教程(十)非阻塞式服务器
即使你知道Java NIO 非阻塞的工作特性(如Selector,Channel,Buffer等组件),但是想要设计一个非阻塞的服务器仍然是一件很困难的事。非阻塞式服务器相较于阻塞式来说要多上许多挑战。本文将会讨论非阻塞式服务器的主要几个难题,并针对这些难题给出一些可能的解决方案。查找关于非阻塞式服务器设计方面的资料实在不太容易,所以本文提供的解决方案都是基于本人工作和想法上的。如果各位有其他的替代方案或者更好的想法,我会很乐意听取这些方案和想法!
2022-11-16 02:20:31
316
转载 【转载】Java NIO系列教程(九) ServerSocketChannel
Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的 ServerSocket 一样。当 accept()方法返回的时候,它返回一个包含新进来的连接的 SocketChannel。在非阻塞模式下,accept() 方法会立刻返回,如果还没有新进来的连接,返回的将是 null。
2022-11-16 01:27:33
169
转载 【转载】Java NIO系列教程(八) SocketChannel
如果 SocketChannel 在非阻塞模式下,此时调用 connect(),该方法可能在连接建立之前就返回了。可以设置 SocketChannel 为非阻塞模式(non-blocking mode).设置之后,就可以在异步模式下调用 connect(), read() 和 write() 了。写数据到 SocketChannel 用的是 SocketChannel.write() 方法,该方法以一个 Buffer 作为参数。非阻塞模式下,write()方法在尚未写出任何内容时可能就返回了。
2022-11-16 01:22:47
514
转载 【转载】Java NIO系列教程(七) FileChannel
因为无法保证 write() 方法一次能向 FileChannel 写入多少字节,因此需要重复调用 write() 方法,直到 Buffer 中已经没有尚未写入通道的字节。出于性能方面的考虑,操作系统会将数据缓存在内存中,所以无法保证写入到FileChannel里的数据一定会即时写到磁盘上。如果将位置设置在文件结束符之后,然后向通道中写数据,文件将撑大到当前位置并写入数据。使用FileChannel.write()方法向FileChannel写数据,该方法的参数是一个Buffer。
2022-11-16 01:20:19
481
转载 【转载】Java NIO系列教程(六) Selector
如果调用select()方法,因为有一个通道变成就绪状态,返回了1,若再次调用select()方法,如果另一个通道就绪了,它会再次返回1。如果对第一个就绪的channel没有做任何操作,现在就有两个就绪的通道,但在每次select()方法调用之间,只有一个通道就绪了。事实上,可以只用一个线程处理所有的通道。这里有一个完整的示例,打开一个Selector,注册一个通道注册到这个Selector上(通道的初始化过程略去),然后持续监控这个Selector的四种事件(接受,连接,读,写)是否就绪。
2022-11-16 01:14:43
193
转载 【转载】Java NIO系列教程(五) 通道之间的数据传输
FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中(译者注:这个方法在JDK文档中的解释为将字节从给定的可读取字节通道传输到此通道的文件中)。如果源通道的剩余空间小于 count 个字节,则所传输的字节数要小于请求的字节数。在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。是不是发现这个例子和前面那个例子特别相似?
2022-11-16 01:00:44
190
转载 【转载】Java NIO系列教程(四) Scatter/Gather
scatter / gather经常用于需要将传输的数据分开处理的场合,例如传输一个由消息头和消息体组成的消息,你可能会将消息体和消息头分散到不同的buffer中,这样你可以方便的处理消息头和消息体。聚集(gather)写入Channel是指在写操作时将多个buffer的数据写入同一个Channel,因此,Channel 将多个Buffer中的数据“聚集(gather)”后发送到Channel。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。
2022-11-15 23:59:26
146
转载 【转载】Java NIO系列教程(三) Buffer
初始的 position 值为0.当一个 byte、long 等数据写到 Buffer 后, position 会向前移动到下一个可插入数据的 Buffer 单元。作为一个内存块,Buffer 有一个固定的大小值,也叫“capacity”.你只能往里写 capacity 个 byte 、long,char等类型。当将 Buffer 从写模式切换到读模式,position 会被重置为0. 当从 Buffer 的 position 处读取数据时,position 向前移动到下一个可读的位置。
2022-11-15 23:54:23
182
转载 【转载】Java NIO系列教程(二) Channel
注意 buf.flip() 的调用,首先读取数据到 Buffer,然后反转 Buffer,接着再从 Buffer 中读取数据。正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。DatagramChannel 能通过 UDP 读写网络中的数据。SocketChannel 能通过 TCP 读写网络中的数据。
2022-11-15 23:48:03
126
转载 【转载】Java NIO系列教程(一) Java NIO 概述
虽然 Java NIO 中除此之外还有很多类和组件,但在我看来, Channel,Buffer 和 Selector 构成了核心的 API。其它组件,如 Pipe 和 FileLock,只不过是与三个核心组件共同使用的工具类。其它组件会在单独的章节中讲到。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等。如果你的应用打开了多个连接(通道),但每个连接的流量都很低,使用 Selector 就会很方便。与这些类一起的有一些有趣的接口,但为简单起见,我尽量在概述中不提到它们。
2022-11-15 23:41:22
164
exception stdexcept streambuf 头文件
2017-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人