栗子在尝试

♬ ♪ ~( ̄▽ ̄~) (~ ̄▽ ̄)~ ♫♬

吐槽 (?) 基础复习 数据库

如何理解数据库事务的一致性

总而言之,复习的时候发现了某些对事务一致性 (Consistency) 比较玄乎的中文解释,简单搜了下,发现大部分答案都是那么解释的……决定来个通俗版本? 简单搜到看到的版本。。。 版本1:事务执行前后数据库的状态保存一致。(某公众号复习资料)感想: ??? 版本2:几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。(百度百科)感想:感觉这个解释更偏向隔离性? 版本3:一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态。感想:听君一席话,如听一席话 版本4:数据库处理前后结果应与其所抽象的客观世界中真实状况保持一致。感想:好像有点明白,有几个版本是从这个角度说的(很多都是银行账户存取款的例子,转账前后钱应该守恒,且不能转超出余额的钱让余额变成负数等等)。一致性有时也被称为正确性 (Correctness),即操作前后,数据库记录的数据是正确、符合期望的。 索性连英文的版本也一起查了: Consistency ensures that a transaction can only bring the database from one valid

笔记 备忘单

设计模式 Design Pattern

设计模式是指前人从实践中摸索出、并反复验证过的,对常见问题的经典解决方案。而这些解决方案,可以帮我们思考在特定情况下,如何组织、设计类和接口来达成一定目的。 创建型模式 Creational Pattern如何创建对象。如隐藏一些具体的创建逻辑,从而提高代码的灵活性与可重用性。 工厂 Factory不直接靠new来创建实例,而是建造一个工厂类,再通过工厂的方法创建“产品”类。使用者使用产品,不需要知道工厂具体怎样生产、产品的具体细节,只需要知道工厂可以生产产品,且生产出来的产品都具有自己想要的某种用途(产品们需要有统一接口)就可以了。public interface Product { void doSomething(); void showName(); } /*------Product A -----*/ public class ProductA implements Product { public String name = "Product A"; void doSomething() { System.out.println(

笔记 Tech

设置WSL2

WSL什么是WSLWSL是Windows Subsystem for Linux的缩写。简单来说,它可以直接在Windows上跑一个Linux(可以自己挑发行版),这样就可以方便的在Windows机子上用Linux系统的软件与工具了。比如在Windows上,安装Docker要求WSL2或者Hyper-V。家庭版的Windows就没得选啦,只能WSL2…… 其他选择与比较在装了Windows的机子上使用Linux的其他选择主要有 VM(虚拟机)双/多系统其中VM主流上是使用VMWare(付费)、VirtualBox(免费)、Hyper-V(Windows比较贵的版本限定…)和系统镜像在Windows里配置、启动虚拟系统。硬件足够好的时候可以同时启动多个。 多系统就是直接在硬盘上再多安装一个或多个系统,然后在启动时选择要启动哪个。可以最高效的让系统使用硬件资源,但一次只能开一个系统。安装前需要根据要安装的系统对部分硬盘进行格式化,而安装后也可能因为文件系统的不兼容,切换系统后存在一定的文件读写上的困难(如Windows无法直接读取Linux的各种ext格式,跨系统访问文件后也可能产生一些奇奇怪怪的文件占用和锁)。 WSL与VMWSL可以启动得比VM更快,占用资源也比VM更少(WSL2其实是使用VM的,但有针对性优化)WSL与Windows的连通性更好,文件系统可以说是的联通的。而VM和Windows是分隔开的,作为沙盒,有更好的安全性,更适合做各种作死的实验……VM里可以提供更完整全面的Linux功能,比如图形、音频、硬件支持VM里可以跑的不只是Linux,泛用性更好一些WSL和WSL2的差异Ref: https:

Java 备忘单

Java基本数据类型

数字整数Integer / int32位有符号整数,具体范围是:-231 (-2147483648) ~ 231 -1 (2147483647)大致范围:正负2*109 不用管溢出,1010 不行Integer接受null, int不接受Integer需要是用equals判断相等(直接用==会判断是否是同一个对象,而非是否数值相等),但>=与<=可以可以正常使用Integer.parseInt返回int,Integer.valueOf返回IntegerLong / long64位有符号整数,具体范围是 -263 (-9223372036854775808) ~ 263 -1 (9223372036854775807)大致范围:-9*1018 ~ 9*1018默认值是0LByte / byte8位有符号整数,具体范围是 -128 ~ 127Short / short16位有符号整数,具体范围是-32768 ~ 32767小数Float / float有符号32位IEEE754标准的浮点数符号位(s):1,指数位(E)

Web 笔记

常见的网页字体

英文字体 ref: Common Fonts for Windows & MAC ‌‌ SerifSerif 来自古荷兰语的“短线”、“线”。Serif 指衬线字体,即在字母的开始、结束的地方有额外装饰的字体。 衬线字体的由来:据说是来自对笔刷、雕刻字体的模仿。衬线即用刷子刷字时,为了让字母的开始、结尾整齐无毛刺,而垂直书写方向进行划线、停顿等而留下的痕迹。以及雕刻时下刀、收刀、或为了遮盖结尾不整齐而留下的痕迹。 下图中箭头指的就是衬线。 serif vs sans较常见的 serif 字体有 Times (即Time Roman), Times New Roman, Georgia, Palatino, Bookman等。 Sans SerifSans 是法语的“没有”。Sans-Serif 指无衬线字体,如上图所示。 较常见的

基础复习 笔记 Java

复习 ---- 位运算,乘除与移位

位运算且 &  Bitwise AND按位且。向右对其,对其后两位都在且两位都为1的时候才为1。 例:1110 & 0001 = 0000,1111 & 1101 = 1101, 1010 & 1001 = 1000 常见用途:掩码,取某个数第n位(& 除了第n位是1,其他都是0的数,然后除以n个2), 判断一个数的奇偶(&1==1是奇数) 或 |  Bitwise OR按位或。向右对其,对其后有一位为1就为1 例:0000|1111 = 1111, 0101 & 1010 = 1111,0010 & 1010 = 1010 非 ~  Bitwise Complement/

笔记 折腾VPS Web

在博客养一只猫 -- Live2D SDK 4.x 探索

提前声明,这不能当教程,只是一份笔记,还有吐槽。 搞一只看版猫到博客居然比搞一只看板娘还要麻烦……囧 虽说最后猫是放出来了,但八成还是哪里没用对吧,编译出来动辄四五百kb的js文件(虽然确实是没有特别狠的压缩,uglify全开之后运行会出错……),还有官方原版Demo直接编译出的1.6MB js+sourcemap(不含模型与图片),怎么看怎么别扭(捂脸)…… 这个只有短短5页的官方文档也是没说多少东西,也可能是因为大部分用户都是开发手机原生应用,而不是网页的吧。 要找教程的话,往这边走吧~ 其他人努力研究的v4 SDK教程: https://blog.csdn.net/qq_37735413/article/details/119413744 (让我意识到了模型使用非标准参数名的问题)还不清楚是哪个版本,但是文档链接很多: https://github.com/stevenjoezhang/live2d-widget应该是旧版本SDK的应用: https://blog.csdn.net/qq_37735413/article/details/

基础复习 算法

基础复习 —— 排序

性能总览ref: https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/pxal47/性质稳定性按比较的标准,两元素相等时,不会改变这两个元素的相对顺序。 意义是,在按某一标准进行排序时,不打乱按其他标准已经排好的顺序。 例:(A, 2), (B, 1), (C, 3), (D, 2) 本身已经按字母排序,若对数字排序,非稳定的排序可能会将D放到A前面,而稳定的排序可以确保A, D间顺序不变。 就地性是否需要额外的空间存放辅助数组,还是直接在要排序的数组上操作就可以。 另外,无关就地性,如果希望输入的数组不要被改动,可以在排序前先复制数组再操作。 // 例,利用Arrays.copyOf int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);自适应性时间复杂度受元素分布影响。 能找到的相关资料不多,可能这个说法不太常见,但用处应该是,在已经近似是有序(知道无序元素并不多)

Tech 折腾VPS

Nginx反代 - 多站点、X光共存

这里是不使用一键脚本,全手动配置的方法之一。缺点是繁琐,有很多前提条件。优点是比脚本更灵活一些,可以按想要的那样配置。 接上面SSL与泛域名解析。 在已经有域名、域名证书、配置好Nginx反代和Cloudflare DNS+CDN的情况下,如果你的VPS下面硬件所在的机房地理位置不错……可以考虑再挂个X光。 Nginx 这边可以这样写 server { listen 80; listen [::]:80; server_name <secondary_domain>.<your_domain>.com; # 安全起见,不使用自己打算长期使用的域名 # 使用Cloudflare的免费证书的请不要设置三级域名,不支持的 # 虽然想排列组合出更多域名的心情我懂 return 301 https://$server_name$request_uri; } server { listen 443 ssl; listen [::]:443