Android-LinearLayout实战
需求分析
使用LinearLayout实现如下布局,
实施
定义形状
矩形的左下右上设置圆角半径50dp
创建drawable/half_circle_rect.xml
12345<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:topRightRadius="50dp" android:bottomLeftRadius="50dp"/></shape>
定义布局
分析可得,最外层LinearLayout使用水平方向排列,且宽度比为1:1
左右两侧LinearLayout使用垂直方向排列,宽度比分别为1:1:1与1:2
所有的子元素均有一定外边距,且最外层布 ...
Android-RelativeLayout实战
需求分析
实现如下图所示的效果
需要设置字体大小,对齐方式,组件间隔,按钮样式
最外层布局具有一个整体的内边距
当点击按钮时,背景色改为红色,字体颜色改为黄色
当输入框捕获焦点时(点击时),要求其边框为加粗的蓝色圆角框,否则要求其边框为细的灰色圆角框
仅使用相对布局实现
布局实施
整体内边距
设置最外层RelativeLayout的paddingHorizontal边距
android:paddingHorizontal=“10dp”
确定退出文字设计
最顶端有一个居中的“你确定要退出吗?”文本显示,使用TextView来实现
设置TextView的尺寸适应内容,文本内容,文字大小,加粗显示,水平居中,
由于相对布局需要知道其兄弟组件名,赋予其id为text1
12345678<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="你确定要退出吗?& ...
操作系统45讲-2
main函数调用之前的代码
编写如下的汇编入口代码, entry.asm
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596;彭东 @ 2021.01.09MBT_HDR_FLAGS EQU 0x00010003MBT_HDR_MAGIC EQU 0x1BADB002 ;多引导协议头魔数MBT_HDR2_MAGIC EQU 0xe85250d6 ;第二版多引导协议头魔数global _start ;导出_start符号extern main ;导入外部的main函数符号[section .start.text] ;定义.start.text代码节[bits 32] ;汇编成32位代码_start: jmp _entryALIGN 8mbt_hdr: ...
操作系统45讲-1
代码编写
写个HelloWorld
123456#include <stdio.h>int main(int argc, char const *argv[]){ printf("hello world!\n"); return 0;}
代码编译
程序的编译过程如下图,
根据源文件生成预处理文件 HelloWorld.i
1gcc -E HelloWorld.c -o HelloWorld.i
根据预处理文件生成汇编文件 HelloWorld.s
1gcc -S HelloWorld.i -o HelloWorld.s
根据汇编文件生成目标文件 HelloWorld.o
1gcc -c HelloWorld.s -o HelloWorld.o
根据目标文件生成可执行文件
1gcc HelloWorld.o -o HelloWorld
代码执行
运行可执行文件
1./HelloWorld
代码反编译
反编译可执行文件
反编译可执行文件 HelloWorld.dump
1objdump -d HelloWorld ...
Manjaro中zsh在vscode下乱码
在Manjaro下,vscode使用zsh产生乱码,如下图所示,
打开设置,搜索terminal font
找到设置项Terminal › Integrated: Font Family
设置为NotoSansMono Nerd Font
如下图即可显示正常
Linux下优雅地通过docker-easyconnect实现内网访问
在Linux下用过EasyConnect的小伙伴应该知道,EasyConnect在Linux环境下相当难用。笔者之前在Ubuntu20.04下安装EasyConnect打开后闪退。
闪退问题主要是系统库太新了,而EasyConnect还没升级依赖库。网上有解决方案,但是打开后还是有一定概率闪退。而且连接成功后,莫名其妙导致电脑只能访问EasyConnect内网环境,外网无法访问。
最近,更换到Manjaro 21后,通过yay安装软件真香,但是只有EasyConnect安装失败,于是便探索出一个方法。
EasyConnect In Docker
使用容器化技术,将EasyConnect封印在Docker中运行。
该项目Github主页如下,docker-easyconnect
电脑安装Docker后,通过如下命令即可一键运行docker-easyconnect镜像
1docker run --device /dev/net/tun --cap-add NET_ADMIN -ti -p 127.0.0.1:1080:1080 -p 127.0.0.1: ...
淘宝架构的演进
本文作为朱栩老师的上课笔记
原文如下,
淘宝技术架构演进之路 - 云+社区 - 腾讯云 (tencent.com)
基本概念
分布式系统
一个系统的多个模块在不同服务器上部署
高可用
系统中部分节点失效,其他节点能够代替它继续完成服务,可认为系统具有高可用性。
集群
一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务。
负载均衡
请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求负载,则可认为系统是负载均衡的。
代理
正向代理
系统内访问外部网络时,通过一个统一的代理服务器把请求转发出去,从外部看来该请求就是代理服务器发出的,此时代理服务器实现了正向的代理。
反向代理
外部请求进入系统时,代理服务器把该请求转发到系统内的某个服务器,从外部看来,该请求的处理者就是代理服务器,此时代理服务器实现了反向代理。
架构演进
架构0 单机架构
一个非常普通,非常简单的单机架构,只有一台服务器主机,Tomcat与数据库放在同一台服务器上。
随着用户数的增长,单机应对并发读写数据库的场景成为瓶颈。
单机架 ...
初步了解Python字节码
定义函数
打开python解释器,输入如下代码,定义了一个简单的函数foo,
12345678910zzq@ubuntu:~$ python3Python 3.8.10 (default, Nov 26 2021, 20:14:08) [GCC 9.3.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>> def foo():... a=2... b=3... c=a+b... return c...
字节码反编译
使用内置的dis模块可得到函数foo字节码的汇编代码
123456789101112131415>>> import dis>>> dis.dis(foo) 2 0 LOAD_CONST 1 (2) 2 STORE_ ...
[论文翻译]使用WebAssembly的可证明安全的多语言沙箱
本文一篇关于WebAssembly的多语言沙箱的学术论文的翻译,原文参考:
Provably-Safe Multilingual Software Sandboxing using WebAssembly
Provably-Safe Multilingual Software Sandboxing using WebAssembly
使用WebAssembly的可证明安全的多语言软件的沙箱
Abstract
Many applications, from the Web to smart contracts, need to safely execute untrusted code.
许多应用程序,从Web到智能合约(区块链相关),都需要安全地执行不受信任的代码。
We observe that WebAssembly (Wasm) is ideally positioned to support such applications, since it promises safety and performance, while serving as a compiler tar ...
matlab笔记
matlab数组基本运算
matlab的索引从1开始
定义一个三行四列的矩阵如下
1234567>> a=[1,2,1,3; 2,6,5,7; 7,3,2,0]a = 1 2 1 3 2 6 5 7 7 3 2 0
获取矩阵尺寸
12345>> size(a)ans = 3 4
取2-4列所有元素
1234567>> a(:,2:4)ans = 2 1 3 6 5 7 3 2 0
取1-2行2-4列的所有元素
123456>> a(1:2,2:4)ans = 2 1 3 6 5 7
取2-最后一列的所有元素
1234567>> a(:,2:end)ans = 2 1 3 6 5 7 3 2 0
给第2和第3列所在所有行的元素赋 ...