avatar
文章
77
标签
64
分类
24

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

玲辰书斋

注解开发应用
发表于2023-03-12|Java
注解在Java基础中我们都学习过简单的注解开发,但并不没有意识到重要性,直到使用了SpringBoot后,我们看到了注解相比原先配置文件的大量定义的简洁与优雅。在测试中我们也常用注解:@Test ,在方法定义时加上该注解,我们便可以执行这个方法,这到底怎么做的呢? 本文将回顾注解基础,并衍生到具有应用: 基础知识@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { } 上面的代码大家都很熟悉,当我们子类重新父类的方法时,会带有该注解。而我们在声明一个注解时, 首先需要使用 @Interface 来定义,这和我们定义 class,Interface 一样,最终编译时也会生成一个 class 文件 其次需要 @Target 和 @Retention 来定义该注解的作用域,这也被称为元注解,下面我们看看它们常用的范围 public enum ElementType { /** 类, 接口 (包含注解), 枚举 ...
SpringBoot自动装配原理
发表于2023-02-26|Spring
SpringBoot 自动装配原理@SpringBootApplication 启动注解@SpringBootApplication public class SpringBootBasicLearnApplication { public static void main(String[] args) { SpringApplication.run(SpringBootBasicLearnApplication.class, args); } } /** * to store the base package from the importing configuration * 也就是获取到我们启动类的包路径 */ static class Registrar implements ImportBeanDefinitionRegistrar, DeterminableImports { @Override public void registerBeanDefinitio ...
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; } 二分查找​ 如果我们能让数据有序,我们先找中间数,如果目标值大于中间数,则从中位数往 ...
1…456…8
avatar
庚辰
要么读书,要么旅行,身体和心灵总有一个要在路上.
文章
77
标签
64
分类
24
Follow Me
最新文章
苏格拉底式对话:理解React的设计哲学
苏格拉底式对话:理解React的设计哲学2026-03-03
树结构在计算表达式解析上的应用(设计统计组件)
树结构在计算表达式解析上的应用(设计统计组件)2026-02-20
利用 Delegated Types 与 Self Joins 设计高扩展性系统
利用 Delegated Types 与 Self Joins 设计高扩展性系统2026-01-05
kamal 部署加速
kamal 部署加速2026-01-01
Vue 组件间通信方案:实现 Drawer 单例模式
Vue 组件间通信方案:实现 Drawer 单例模式2025-10-09
分类
  • JVM5
  • Java4
  • LSP1
  • Linux2
  • Redis2
  • Ruby10
  • Spring4
  • Turbo-Rails11
标签
AI AQS锁 Filter IOC IO流 Interceptor JavaScript LSP Mysql OOP Promis RMI RPC Rails React Ruby Ruby 树结构 SDK SQL Servlet Shell SpringMVC SublimeText Vue Zed electron jdbc kamal mysql opencv orm rails ruby ruby,rails rubyGem turbo 事务 二叉树 位运算 元编程
归档
  • 三月 20261
  • 二月 20261
  • 一月 20262
  • 十月 20251
  • 七月 20251
  • 四月 20251
  • 二月 20251
  • 一月 20251
网站资讯
文章数目 :
77
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2026 By 庚辰
框架 Hexo|主题 Butterfly
陕ICP备2022014054号
搜索
数据库加载中