avatar
文章
75
标签
62
分类
23

主页
标签
分类
链接
关于笔者
玲辰书斋
搜索
主页
标签
分类
链接
关于笔者

玲辰书斋

ABAC权限设计
发表于2023-02-26|权限设计
这里我使用ABAC理论来设计: 数据库表设计 用户属性: ```sqlCREATE TABLE User(userId int,userName varchar(100),roleId int); - 环境属性 - ```sql CREATE TABLE Role ( roleId int, roleName varchar(100) # 比如:普通用户,付费用户,积分等级 ); 操作属性: ```sqlCREATE TABLE action(actionId int,actionName varchar(100) # 比如:read读,write评论); - 试读 - 付费读 - 免费读 - 评论 - Resources属性: - ```sql CREATE TABLE module # 我们最终操作的资源,例如查看的文章,数据 ( moduleId int, moduleName varcha ...
opencv环境搭建
发表于2023-02-20|opencv
opencv 入门环境下载与搭建Windows用户直接在官网下载 Windows 文件:https://opencv.org/releases/ 。然后参考这篇文章:https://blog.csdn.net/qianlixiaomage/article/details/108416400。说实话Windows上操作太方便了。我用Mac捣鼓了半天,气死。 Mac用户直接在官网下载 Sources 文件:https://opencv.org/releases/ 。并进行解压。 下载cmake:brew install cmake 下载Ant:https://www.jianshu.com/p/bdca5215e9ca 这里是必须的,如果没有,最后无法生成jar包 cd opencv-4.7.0 # 这里是opencv源码包解压的文件地址 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. # 这俩点表示OpenCV的源码位置,不能省略 ​ ...
多线程事务
发表于2023-02-01|并发
多线程事务​ 在Spring开发时,遇到一个从Excel表导入数据到数据库的需求,当然最简单的方法就是先使用EasyExcel把数据读出到集合中,然后依次插入到数据库中。但如何保证效率,原子性呢?我们一步步优化方案。这里会涉及到分布式事务的知识,如果感兴趣可以看我之前的文章:玲辰书斋,这里不会引入不必要的组件,而是我们自己模拟类似的思想。 方法1:依次顺序插入 void test() { List<User> users = getAllUsers(); users.forEach(user -> userService.save(user)); } 方法2:使用批处理,一次操作中执行多条SQL void test() { List<User> users = getAllUsers(); userService.saveBatch(users); } 方法3:使用多线程+批处理,每个线程插入多条数据 需要注意的一点,Spring容器不允许线程注入,也就是没办 ...
手写非公平锁(ReentrantLock)
发表于2023-01-30|手写系列
手写非公平锁(ReentrantLock)​ ReentrantLock很多教程都在讲解,虽然很细致,但内容太多了,过段时间就很容易忘,我们知道ReentrantLock的核心是AQS(抽象队列同步器),我们这里试着使用AQS,自己写一个非公平锁使用,看看AQS承载了哪部分的职责,ReentrantLock承载了哪部分的职责 第一步:定义接口,面向接口编程嘛 public interface myLock { // 很简单的加锁和释放锁 public void lock(); public void unlock(); } 第二步:看看ReentrantLock与AQS的关系 public class myUnFairLock implements myLock { private final Sync sync = new Sync(); // 锁的核心由AQS管理,ReentrantLock只负责重写 tryAcquire 和 tryRelease方法的逻辑 private stat ...
Rails基础
发表于2023-01-28|Ruby
Ruby On Rails基础介绍​ Rails可以理解为一个快速构建Web应用的框架,本身基于Ruby开发,拥有很强的灵活性。 如何下载与使用Rails? 这里的前提是你已经下载好了Ruby gem install rails # 通过ruby工具(当成功下载并使用Ruby时,该工具会一同配置好的) 下载 rails rails -v # 如果正常下载则显示Rails版本 ​ 这里我在Mac上下载好rails并使用时,遇到了报错显示,显示rails还没有立刻被下载成功,需要再执行上面下载命令(但是并没什么用,至少我是这样,有的人说是有一个延迟时间): Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command. ​ 这里我的解决方式为: gem env # 显 ...
Shell的常规使用
发表于2023-01-10|Linux
shell的分类 /bin/bash 是我们在linux或者Mac下常用的shell zsh 是一种增强shell,在Mac和Linux中可使用,Mac基本自带 日常文件操作 ls :显示文件 cd :进入文件夹 cp :拷贝文件 mv :重命名或迁移文件 cat :查看文件内容,并在控制台打印 head:查看文件头部信息,可指定多少行 tail :查看文件尾部信息,可指定行数,并且可跟踪日志文件 grep:查找过滤,一般用在 操作 | grep , | 表示管道符,将操作的返回的数据,通过grep进行过滤 fgrep : 无正则查询,普通查询快 egrep :有正则查看 shell的快捷键 ↑ ↓ 会回显之前执行的代码。默认记录500条 ctrl + R , 快速查看之前执行的命令 ctrl + W,将已输入的命令,以空格划分,每次向前删除一部分 ctrl + U,删除已输入命令所有部分 ctrl + A,将光标移动到最前(已输入内容) ctrl + E, 将光标移动到最后 ctrl + K,向右删除所有 ctrl + D,向右删除一位 ctrl + L ...
Ruby元编程
发表于2023-01-02|Ruby
本文需要在了解Ruby基本语法的前提下,进行学习 元编程是什么?​ 元编程是编写能在运行时操作语言构件的代码 ​ 在我们使用编辑器编写代码后,代码按照我们所写的内容进行编译,运行。在启动后我们无权再对代码进行干涉,而在一些业务场景中,我们想在不修改源代码的前提下,对一个类进行增强,这在Java中也是一个成熟的技术,例如反射,动态代理。但是Java所能给予的操作相比Ruby,就显得格外的严格且复杂。 ​ Ruby是一门可以在运行时操作语言构建的工具。语言构建就是我们代码中的各个成员(对象,类,模块儿,实例变量等)。通俗来说可以使用Ruby在运行时对已有的类进行灵活的修改,例如修改一个方法的定义。实例变量的定义,甚至我们可以在运行时创建一个没有的类。下面我们使用一些伪代码来进行演示。 ​ 我们想对数据库进行操作,最初我们的想法就是写一个Entity基类,然后由子类继承 class Entity # 提供访问器 attr_accessor :table,:id def initialize table,id @table = table @id = ...
查找算法的演化过程
发表于2022-12-17|数据结构
查找算法的演化过程顺序查找​ 字面意思,一个个节点查找判断,对数据条件没什么要求,最简单,也最慢。 /** * 顺序查找 * @param arr 数组 * @param target 目标值 * @return 下标 */ public static int getIndex(int[] arr, int target) { // 记录比较多少次找到目标值 int index = 0; for (int i = 0; i < arr.length; i++) { index++; if (arr[i] == target) { System.out.println("顺序查找次数:" + index); return i; } } return -1; } 二分查找​ 如果我们能让数据有序,我们先找中间数,如果目标值大于中间数,则从中位数往 ...
Java内存模型与线程
发表于2022-12-11|JVM
Java内存模型与线程 ​ 上面的图就是线程,工作内存,主内存的关系,也可以看到线程想要获取数据,需要先到工作内存找,工作内存从主内存中找,那为啥需要这个工作内存 ? 而不直接访问主内存,也可以避免数据不一致的情况了。 ​ 这就需要我们对物理计算机中如何并发访问有一点儿了解,我们知道CPU内含有寄存器,但寄存器能存放的内容太少,而大部分时间都要从内存中获取,如果等待从内存中取得数据,CPU又被浪费了,因为两者间的速度差太多,所以引入了高速缓存。 ​ 除了增加高速缓存外,为了处理器内部的运输单元能被充分利用,处理器会对输入代码进行乱序执行,在计算后将乱序执行的结果重组,保证该结果与顺序执行的结果一致。而潜在的风险就是一个计算任务依赖另一个计算任务的中间结果,其顺序性不能靠代码的先后顺序来保证,而Java内存模型也保留了这一点,我们也可以看到上面两幅图结构是非常相似的。所以Java内存模型的定义也是由硬件决定的。 内存间交互操作​ 也就是图1中,线程,工作内存,主内存数据是怎么交互的,Java内存模型定义了8个操作,每个操作都是原子 ...
SQL语句: where 和 having 的区别
发表于2022-12-09|数据库
SQL语句: where 和 having 的区别 分组查询时,select的字段(不包含聚合函数的字段)是否一定要都在group by的字段中? 例如: select name,age,sum(money) from user group by 上面所说情况在Mysql5.7之后:sql_mode=only_full_group_by 情况下适用,可以通过 select @@sql_mode;查询自己的sql_mode 解决方案: 修改sql_mode,删除:SET @@sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');(不推荐) group by 主键字段 group by 唯一非空字段 select 字段集合 from table group by 相同字段集合 select @@sql_mode; SET @@sql_mode = sys.list_add(@@sql_mode, 'ONLY_FULL_GROUP_BY'); SET @@sql_mode = sys.list_dr ...
1…456…8
avatar
庚辰
要么读书,要么旅行,身体和心灵总有一个要在路上.
文章
75
标签
62
分类
23
Follow Me
最新文章
利用 Delegated Types 与 Self Joins 设计高扩展性系统
利用 Delegated Types 与 Self Joins 设计高扩展性系统2026-01-05
kamal 部署加速
kamal 部署加速2026-01-01
Vue 组件间通信方案:实现 Drawer 单例模式
Vue 组件间通信方案:实现 Drawer 单例模式2025-10-09
Rails层级设计演化
Rails层级设计演化2025-07-09
警惕AI
警惕AI2025-04-06
分类
  • JVM5
  • Java4
  • LSP1
  • Linux2
  • Redis2
  • Ruby10
  • Spring4
  • Turbo-Rails11
标签
AI AQS锁 Filter IOC IO流 Interceptor JavaScript LSP Mysql OOP Promis RMI RPC Rails Ruby SDK SQL Servlet Shell SpringMVC SublimeText Vue Zed electron jdbc kamal mysql opencv orm rails ruby ruby,rails rubyGem turbo 事务 二叉树 位运算 元编程 内存分配 内存溢出
归档
  • 一月 20262
  • 十月 20251
  • 七月 20251
  • 四月 20251
  • 二月 20251
  • 一月 20251
  • 十二月 20242
  • 十月 20241
网站资讯
文章数目 :
75
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2026 By 庚辰
框架 Hexo|主题 Butterfly
陕ICP备2022014054号
搜索
数据库加载中