Welcome to try out my new website ConverTT https://www.convertt.top This online toolkit provides a variety of conversion functions for your convenience.
Welcome to try out my new website ConverTT https://www.convertt.top This online toolkit provides a variety of conversion functions for your convenience.
Using the short keyword to fill complex SQL in Oracle SQL Developer to make your work more efficient. Follow those simple steps to complete this setup in 5 minutes: Id Usage Template ss Search keyword in stored procedures SELECT * FROM USER_SOURCE WHERE lower(TEXT) LIKE lower('%[keyword]%'); st Search tables by keyword SELECT table_nameFROM user_tablesWHERE table_name LIKE '%[keyword]%'; sc Search tables by column keyword SELECT table_name, column_nameFROM all_tab_columnsWHERE UPPER(column_name) LIKE UPPER('%item_id%')order by UPPER(column_name), upper(table_name); tochar Convert date to char to_char([column], 'YYYY-MM-DD HH24:MI:SS') todate Convert char to date to_date('[2024-01-30]','yyyy-mm-dd') alter Alter table column ALTER TABLE [table_name] MODIFY (column_name datatype); analyze Analyze table analyze table [table name] compute statistics; datafile List data files SELECT file_name, tablespace_name, bytes/1024/1024||'M'FROM dba_data_files; kill Kill a dead lock query SELECT 'ALTER SYSTEM KILL SESSION '''||sid||','||serial#||''';', s.username, s.program, s.sql_id, s.sql_child_number, s.status, t.sql_textFROM v$session s left join v$sql t on s.sql_id=t.sql_idWHERE s.type != 'BACKGROUND' and users_executing>0; merge Merge into table MERGE INTO [target_table] tUSING () fON (t.item_id = f.item_id and t.loc_id=f.loc_id)WHEN MATCHED THENUPDATE SETt. = f.,t. = f.WHEN NOT MATCHED THENINSERT (item_id,loc_id)VALUES (f.item_id,f.loc_id); space Query table space usage SELECT a.tablespace_name,total,free,(total - free) rest,ROUND((total - free) / total * 100, 2) || '%' usedFROM (SELECT tablespace_name, SUM(bytes) / 1024 / 1024 totalFROM dba_data_filesGROUP BY tablespace_name) a,(SELECT tablespace_name, SUM(bytes) / 1024 / 1024 freeFROM dba_free_spaceGROUP BY tablespace_name) bWHERE a.tablespace_name = b.tablespace_nameORDER BY (total - free) DESC; adddatafile Add a data file to table space ALTER TABLESPACE [name]ADD DATAFILE 'name and path.DBF' SIZE 2000M AUTOEXTEND ON;
Oracle database has an user JVM to run Java program on the database server, which is much powerful than normal stored procedure. It can bind with standard stored procedure interface to integrate with other database functions. I will show a quick example here, and full document can be found at Oracle official website: https://docs.oracle.com/en/database/oracle/oracle-database/21/jjdev/lot.html#List-of-Tables 2. Load Java code into Oracle database, use Oracle SQL Developer or loadjava command line tool. Here use SQL developer as example: 3. Define Stored Procedure interface 4. Call Java stored procedure 5. Receive procedure output 6. Receive exception stacktrace With the print stack trace section in my example code, you can output error stack to SQL output window, which is helpful to address issues.
Android 13 introduced a new security feature to block user apps to read notifications. I got this issue when I setup Huawei Health app for my band. Android 13 has built in solution for this limitation. Go to Settings -> Apps, open the app setting with this issue. There are 3 dots at top right corner, click it to "Allow restricted settings" If you cannot found this 3 dot menu, please remind only the app already triggered "Restricted Setting" popup will show this menu. Just use the app to request notification and get the error first.
Time machine is a powerful tool to protect all files on Mac, but maybe sometime you only need a simple alternative way. Here I want to share a way to use build-in rsync command backup a folder to antoher place. You only need one command line: Here work/AU is source folder and bak is target folder. They are on different hard disk. Let me explain some parameters: -a copy files with original create time and attributes. -v show detail progress --delete remove files not at source folder --exclude skip backup some files -c compare files to optimize network transmission. I do not need it since I only copy it at local. You can use build-in crontab command to schedule it, for example I want it run every 4 hours. Use crontab -e to configure crontab job, input following configuration and press escape and input :wq enter to save changes. If you want to backup to iCloud Drive, please use the following folder: /Users/alvin/Library/Mobile\ Documents/com~apple~CloudDocs
Here introduce the process to remote debug Oracle procedure. Will also solve common issues as well. Debug Procedure 1. Firstly, you need to download and install latest Oracle SQL Developer from: https://www.oracle.com/database/sqldeveloper/technologies/download/ 2. Then need to specify a port for remote Oracle database to callback. Use a fixed port is easier for your firewall configuration. 3. Launch SQL Developer, choose Settings at menu. Go to Debugger setting and config as below, you can choose other ports below 60000. Please follow all settings in red box, except the port you can customize. 4. Redirect traffic from the port to your machine. Configure the port forwarding at your home router: 5. Now you can use SQL developer connect to remote database and open a procedure for debug. Before start, you need to recompile this procedure for debug, right click on procedure and choose "Compile for Debug". It will show a bug logo on the name. 6. Then add some break point in your procedure by double click at the left of code line. 7. Use "Debug..." function to run the procedure. It will promp you to input your IP, use your public IP. 8. You will see some connect progress in debug log 9. Once it hit the break point, your code will stop and highlight the current line. You can find regular control buttons at top and there are some useful panels at below. This is the happy ending of the story, if you have any issue, below section may helps. Trouble shooting Debug Hung ORA-30683, ORA-12535, ORA-06512 DBMS_DEBUG_JDWP If SQL…
列了一些设计分布式系统时需要考虑的问题,欢迎讨论。
Golang简介 环境安装 源码下载 http://golang.org/dl 安装 直接解压后放在 /usr/local/编译器是 /usr/local/go/bin/go源码在 /usr/local/go/src 配置环境变量 编辑 .bashrc 运行go version 检查安装是否成功GOPATH 代表开发代码的默认路径, 后面有其他管理工具 IDE Golang的优势 Golang适用产品 云原生 docker, k8s, etcd, consul, cloudflare 数据库 tidb, influxdb, cockroachdb 微服务 go-kit, micro, typhon 区块链 以太坊, hyperledger Golang的不足 Golang 特色语法 Hello World src就是workspace, 里面的每一个文件夹就是一个工程mkdir firstGolang Golang定义变量 多返回值 导入包 包搜索路径 $GOPATH函数名首字母大写代表公有函数, 首字母小写代表私有函数导入包必须使用 指针 (不常用) 就是直接传实参的内存引用, 接收函数通过指针对参数的修改在函数外部也生效 defer(finalizer) defer类似类的finalizer和try里面的finally函数, 在声明代码体的最后执行defer在return之后执行, 这一点是和Java不同的多条defer后添加的先执行 数组 数组的定义 定长数组 缺点 动态数组(切片) 长度不限引用传递, 函数内直接修改 数组遍历 切片 声明方式 切片的长度len表示切片可用长度切片的容量cap表示内存中保留的总空间 切片追加元素 截取切片 切片截取的是引用, 修改会影响原始数据 深copy Map 声明Map 遍历Map Struct结构体 结构体对象是值传递的, 如果想在函数内修改结构体对象的值, 需要使用指针赋值 继承 Interface 接口本身是一个指针, 接收对象实例时只能传入指针& 元类/类型判断 interface{} (Object类, 万能接口, instanceof) 变量的内部结构 变量 类型转换 反射 反射解析结构体标签Tag 使用结构体Tag解析json文件实例 Golang 高级内容 Goroutine 总结自刘丹冰的视频 https://www.bilibili.com/video/BV1gf4y1r79E
Dynamo是亚马逊上线多年的分布式数据库。随着不断的版本迭代,逐步满足了互联网场景的各种苛刻要求,也实践了近几十年来产生的多种经典理论。可谓集十八般武艺于一身啊。。。 重读 Amazon Dynamo 论文有感 下文转自知乎,原作者陈蔚澜:https://zhuanlan.zhihu.com/p/98640498 本文内容不仅仅局限于 Dynamo 什么是 Dynamo 亚马逊在业务发展期间面临一些问题,主要受限于关系型数据库的可扩展性和高可用性,希望研发一套新的、基于 KV 存储模型的数据库,将之命名为 Dynamo。 相较于传统的关系型数据库 MySQL,Dynamo 的功能目标与之有一些细小的差别,例如 Amazon 的业务场景多数情况并不需要支持复杂查询,却要求必要的单节点故障容错性、数据最终一致性(即牺牲数据强一致优先保障可用性)、较强的可扩展性等。 可以肯定的是,在上述功能目标的驱使下,Dynamo 需要解决以下几个关键问题: Dynamo 和 MySQL 的关系? 有的人有这种疑问,其实二者没有什么关系,Dynamo 叙述的是一种 NoSQL 数据库的设计思想和实现方案,它是一个由多节点实例组成的集群,其中一个节点称之为 Instance(或者 Node 其实无所谓),这个节点由三个模块组成,分别是请求协调器、Gossip 协议检测、本地持久化引擎,其中最后一个持久化引擎被设计为可插拔的形式,可以支持不同的存储介质,例如 BDB、MySQL 等。 数据分片 数据分片的实现方式 数据分片实在是太常见了,因为海量数据无法仅存储在单一节点上,必须要按照某种规则进行划分之后分开存储,在 MySQL 中也有分库分表方案,它本质上就是一种数据分片。 数据分片的逻辑既可以实现在客户端,也可以实现在 Proxy 层,取决于你的架构如何设计,传统的数据库中间件大多将分片逻辑实现在客户端,通过改写物理 SQL 访问不同的 MySQL 库;而 NewSQL 数据库倡导的计算存储分离架构中呢,通常将分片逻辑实现在计算层,即 Proxy 层,通过无状态的计算节点转发用户请求到正确的存储节点。 Redis 集群的数据分片 Redis 集群也是 NoSQL 数据库,它是怎么解决哈希映射问题的呢?它启动时就划分好了 16384 个桶,然后再将这些桶分配给节点占有,数据是固定地往这 16384 个桶里放,至于节点的增减操作,那就是某些桶的重新分配,缩小了数据流动的范围。 Dynamo 的数据分片 Dynamo 设计之初就考虑到要支持增量扩展,因为节点的增减必须具备很好的可扩展性,尽可能降低期间的数据流动,从而减轻集群的性能抖动。Dynamo 选择采用一致性哈希算法来处理节点的增删,一致性哈希的算法原理细节这里不再赘述,只是提一下为什么一致性哈希能解决传统哈希的问题。 我们想象一下传统哈希算法的局限是什么,一旦我给定了节点总数 h,那数据划分到哪个节点就固定了(x mod h),此时我一旦增减 h 的大小,那么全部数据的映射关系都要发生改变,解决办法只能是进行数据迁移,但是一致性哈希可以在一个圆环上优先划分好每个节点负责的数据区域。这样每次增删节点,影响的范围就被局限在一小部分数据。 下图蓝色小圆 ABCD 的代表四个实际节点,橙色的小圆代表数据,他们顺时针落在第一个碰到的节点上 一致性哈希的改进 一致性哈希是存在缺点的,如果仅仅是直接将每个节点映射到一个圆环上,可能造成节点间复杂的范围有大有小,造成数据分布和机器负载不均衡。 因此一致性哈希有个优化举措,就是引入虚拟节点,其实就是我再引入一个中间层解耦,虚拟节点平均落在圆环上,然后实际节点的映射跟某几个虚拟节点挂钩,表示我这台物理节点实际负责这些虚拟节点的数据范围,从而达到平衡负载的作用。 数据复制 数据复制是提升数据库高可用的常见手段,从实现方式上可分为同步复制、异步复制、半同步复制等,从使用场景上又可分为单向复制、双向复制、环形复制等。 Dynamo 的设计中为了保证容灾,数据被复制到 N 台主机上,N 就是数据的冗余副本数目,还记得我们说过 Dynamo 中每个节点有一个模块叫做请求协调器么,它接收到某个数据键值 K 之后会将其往圆环后的 N - 1 个节点进行复制,保证该键值 K 有 N 个副本,因此 Dynamo 中实际上每个节点既存储自己接收的数据,也存储为其他节点保留的副本数据。 Dynamo 的读写流程 Dynamo 会在数据的所有副本中选取一个作为协调者,由该副本负责转发读写请求和收集反馈结果。通常情况下,该副本是客户端从内存中维护的 数据 - 节点 映射关系中取得的,将请求直接发往该节点。 对于写请求,该副本会接收写请求,并记录该数据的更新者和时间戳,并将写请求转发给其他副本,待 W 个副本反馈写入完成后向客户端反馈写入操作成功;读取流程类似,转发读请求至所有副本,待收到 R 个副本的结果后尝试选取最新的数据版本,一旦发现数据冲突则保留冲突反馈给客户端处理。 显而易见的是,由于协调者是处理读写请求的唯一入口,因此该副本所在节点的负载肯定会飙高。 数据一致性和冲突解决 在数据存在 N 个冗余副本的情况下,想要保证强一致需要等待所有副本写入完成才能返回给客户端写入成功,但这是性能有损的,实践中通常不这么做。Dynamo 允许用户设置至少写入 W 个副本才返回,而读取的时候需要从 R 个副本上读到值才能返回,因此只要 W + R > N,就能保证一定能读到正确的值。 但是这有个问题是如何判断返回的 R 个值中哪个是最新的呢,即每个数据都应该有一个版本信息。Dynamo 为了解决这个问题引入向量时钟的概念,简单来说就是每次写入操作,写入的副本会为这条数据变更新增一个更新者和版本号的向量组 <updater, version> 作为版本信息,在后续的复制流程中也会带上这部分信息。 例如副本 A 接收到了对键值 K 的更新请求,随机为键值 K 新增版本信息 K : <A, 1>,等待之后再次更新 K 时更改为 K : <A, 2>,因此后者版本更新。 假设集群中的网络没有问题,那么对于某个键值 K 的读取一定能读取到时间戳最新的版本返回给客户端。但是遗憾的是,分布式场景下网络是一定会出问题的,各种问题。。 假设客户端在第二次更新时选择了另一个副本 B 作为协调者,那么 B 会为键值 K 保存 K : <B, 1>,这时客户端读取键值 K,协调者发现无法决定哪个版本是最新的,就类似于 Git Merge 出现冲突,只能保留这种冲突返回给客户端,由具体业务逻辑觉得采用哪个值。 Dynamo 集群成员状态监测 Dynamo 想要做到 HA(高可用),除了数据复制之外,还需要定时探测集群节点的可用性,有的业界产品依赖外部服务统一处理,例如 MySQL 的 MHA,RocketMQ 的 NS,TiDB 的 PD 等,也有的依赖于节点间自适应管理,例如 Redis 集群和 Dynamo,这二者均采用了 Gossip 协议作为集群间节点信息交换的解决方案,无需引入外部服务,是完全的去中心化的架构。 想要了解什么是 Gossip 协议,建议从 Redis 集群的架构中去学习,往往使用 Gossip 协议的集群实现都比较复杂,而且容易出错,另外 Gossip 协议本身由于数据包庞大,也极易造成性能抖动问题。 总结 最近重读了一遍 Dynamo 论文,加上之前看过几遍的 《Design Data-intensive Applications》,感觉很多分布式系统设计的概念都可以很好地衔接上,对知识梳理很有帮助,大家感兴趣也可以去看看。 参考资料
本示例采用Ubuntu 20实现,感谢Oracle Cloud提供免费服务器。 更新系统 检查并安装Apache2 访问Apache2 用浏览器打开http://你的IP,如果能看到页面说明安装成功了 配置HTTPS 上述命令完成后 配置自动更新SSL Cert sudo crontab -e 验证https https://你的域名,浏览器应该能识别出安全的SSL证书。如果配置了跳转,访问http://你的域名会自动跳转到https。 安装PHP 安装php相关的组件 安装mysql数据库 安装mysql相关的组件 安装MySQL控制台(可选) 设置MySQL数据库root密码 下列步骤如果安装了phpmyadmin,可以登录phpmyadmin完成 安装WordPress 访问WordPress官网获取最新下载地址 在服务器直接下载安装包 配置WordPress 用浏览器访问https://你的域名/wp-admin 在安装界面中输入上一步里创建的mysql的数据库名,数据库用户名和密码,其它都使用默认选项则可。 解决FTP问题 如果WordPress在升级插件或安装主题时提示输入服务器的ftp账号,可以尝试用下面的方法解决。 编辑 /var/www/html/wp-config.php,在最后添加 重启apache服务 解决上传文件过大的问题 如果在添加主题或上传其它文件时提示文件过大 编辑 /etc/php/7.4/apache2/php.ini 在最后添加 重启apache服务 解决固定链接无法修改的问题 登录服务器运行如下命令 编辑 /etc/apache2/apache2.conf 把下列内容添加到末尾 参考文档 https://blog.csdn.net/meihualing/article/details/128630238/ https://www.lmonkey.com/t/mky5RoQLa
COPYRIGHT © 2024 Alvin Liu. alvingoodliu@[email protected] ALL RIGHTS RESERVED.
Theme Made By Seaton Jiang