- 博客(47)
- 收藏
- 关注
原创 synchronized同步锁
综上所述, 在sleep休眠过程中,当前线程不会让出持有的(“this”)锁,此时会出现异常情况,只有一个线程在执行,剩余线程处于Blockteb阻塞状态,而在wait计时等待过程中,当前线程会释放锁。思路:将数字,和字母分开,一个线程控制数字输出,另一个线程控制字母输出,即输出数字后,数字线程进入等待,同时唤醒字母线程,反之,输出字母时,字母程进入等待,同时唤醒数字线程。互斥锁实现线程之间的切换,需要从“用户态”切换到“内核态”,付出高昂的代价,会导致性能下降。只有一个线程执行的场景,使用偏向锁;
2024-02-28 17:17:56
1144
原创 线程池的常用接口实现及执行流程
4.如果线程池里面存活的线程数已经等于核心线程数了,且阻塞队列已经满了,再会去判断当前线程数是否已经达到最大线程数 maximumPoolSize,如果没有达到,则会调用 addWorker() 方法创建一个非核心线程去执行任务;3.如果工作线程数大于核心线程数,即线程池核心线程数已满,则新任务会被添加到阻塞队列中等待执行,当然,添加队列之前也会进行队列是否为空的判断;2、maximumPoolSize:最大线程数,线程池中最多线程,包含核心线程数,不能小于核心线程数。
2024-02-25 23:04:16
560
原创 java中反射详解
反射是Java语法的一种高级特性,在“运行期间”对Java的类型信息进行检查、操作处理。例如:加载JDBC驱动类、MyBatis动态处理resultType、Spring根据配置信息创建Bean对象等使用场景。
2024-02-22 18:58:03
952
原创 线程基础详解
两个线程同时竞争synchronized锁时,获取锁的线程处于RUNNABLE运行状态,未获取锁的线程处于BLOCKED阻塞状态;join()方法通过wait()实现,是被插队的线程(主线程),处于等待状态。将子线程设置为守护线程,当主线程结束时,守护线程一起结束。所有用户线程执行结束后,JVM虚拟机会自动退出;守护线程执行结束后,JVM虚拟机不会自动退出;调用构造方法后,线程处于新建状态;调用构造方法后,线程处于新建状态;等待时间结束后,自动唤醒。设置当前线程为中断状态。创建Thread对象。
2024-02-22 17:55:03
1055
原创 MyBatis详解(6)-- 分页及缓存
根据各类不同的缓存机制,自定义缓存的实现方式。实现 org. apache. ibatis. cache. Cache 接口自定义缓存;引入 Redis 等第三方内存库作为 MyBatis 缓存。
2024-01-29 09:15:00
1892
原创 MyBatis详解(5)-- MyBatis注解
XML配置方式的动态SQL,是用< script >的方式把它照搬过来,用注解来实现。适用于xml配置转换到注解配置。:配置文件和接口直接只是名称相同,对应起来比较麻烦.:配置文件的书写本身繁琐,需要掌握的内容比较多。:实现动态 SQL 的内容(推荐)
2024-01-28 23:03:19
699
原创 MyBatis详解(4) -- 动态SQL
choose 元素(优先):(when,otherwise)多条件分支判断,等同于 java 的 switch。trim:(万能元素)(where,set):辅助元素,用于处理一些SQL 拼接的问题.根据不同条件拼接 SQL 语句,实现对数据库更准确的操作; #{},防止SQL注入的占位符,防止SQL注入。prefixOverrides:之前的后面要去除的字符。suffixOverrides:后面要去除的字符。if 元素:判断语句,单条件分支判断.prefix :之前要添加的字符。
2024-01-28 22:56:55
811
原创 MyBatis详解(3)-- 动态代理及映射器
selectKey >用来预先设定主键值。自定义主键生成规则时,可以使用该标签;order属性:取值 BEFORE,AFTER;
2024-01-28 22:54:31
1338
原创 MyBatis详解(2)-- mybatis配置文件
并且在映射文件中的namespace属性的value,要指定为mapper映射文件的路径。 < e n v i r o m e n t >:单个数据库环境信息的标识。2.MyBatis最为核心的内容,对MyBatis的使用影响很大。< dataSource >:配置环境信息中数据源连接的信息。:配置属性的元素,可以在配置文件的上下文中使用该属性。:配置数据库环境信息,注册数据源,配置数据库事务。:标识配置文件的起始,所有配置信息都存放在这里。< property >:配置环境信息的属性;
2024-01-24 19:01:41
902
原创 MyBatis详解(1)-- ORM模型
4.对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。
2024-01-24 18:56:11
1235
原创 数据库连接池
1.将c3p0.properties 或者 c3p0-config.xml文件名称不可以修改2.直接将文件放在src目录下即可,路径不可修改。
2024-01-24 18:48:19
415
原创 MYSQL数据库详解(6)-- 视图&存储方式&触发器
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后,再次调用不需要重复编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 触发器是数据库中针对数据库表操作触发的特殊的存储过程特征: 隐式执行。
2024-01-23 10:53:57
1148
原创 MYSQL数据库详解(1) -- 数据库概述
2.约束作用数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。:数据库在安全性的控制上也有很多措施,比如访问数据库时对用户的口令,用户的权限进行限制,再比如对数据的存储进行限制。怎么才能读取更方便?:数据在数据库中的存储可以依靠二维表结构来逻辑的存储数据,可以参考数据原有的依赖关系和结构关系去存储数据。:数据和数据之间的结构关系,数据和程序之间的依赖关系,如何能让这些关系持久维系?
2024-01-23 10:50:25
924
原创 Shiro实战详解(4)--JWT生成token以及解析token
JWT(JSON WEB TOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式)。它是在Web环境下两个实体之间传输数据的一项标准。实际上传输的就是一个字符串。实现步骤:1.创建RedisSessionDao extends AbstractSessionDAO2.配置ShiroConfig首先Shiro是一套安全认证框架,已经有了对token的相关封装。而JWT只是一种生。
2024-01-22 14:56:25
1351
原创 Shiro实战详解(3)
所有服务器的session信息都存储到了同一个Redis集群中,即所有的服务都将 Session 的信息存储到 Redis 集群中,无论是对 Session 的注销、更新都会同步到集群中,达到了 Session 共享的目的。在使用多个服务器,实现分布式服务时,用户在登录服务器已经登录,但是其他服务器对用户来说由于第一次访问,没有用户的会话信息,就会拦截,让他去登录,但实际上我们已经登录过了。sh_resource:资源表。主框架:springboot。响应层:springMVC。持久层:mybatis。
2024-01-22 10:32:36
604
原创 shiro实战详解(2)
散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如MD5、SHA等。一般进行散列时最好提供一个salt(盐),比如加密密码“admin”,产生的散列值是“21232f297a57a5a743894a0e4a801fc3”,可以到一些md5解密网站很容易的通过散列值得到密码“admin”,即如果直接对密码进行散列相对来说破解更容易,此时我们可以加一些只有系统知道的干扰数据,如salt(即盐);Shiro内置了很多默认的过滤器,比如身份验证、授权等相关的。
2024-01-19 12:35:22
980
原创 shiro实战详解(1)
权限管理,一般指根据系统设置的安全策略或者安全规则,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。权限管理在系统中一般分为:访问权限一般表示你能做什么样的操作,或者能够访问那些资源。数据权限一般表示某些数据你是否属于你,或者属于你可以操作范围。授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后,系统会为其分配对应的权限,当访问资源时,会校验其是否有访问此资源的权限。这里首先理解4个对象。用户对象user:当前操作的用户、程序。
2024-01-19 11:30:22
1331
原创 uni-app引用矢量库图标
5.使用图标(字体图标,只有黑色)2.在原有的下载图标基础上,通过。4.替换font-face。2.导入项目(字体样式)3 . 彩色样式导入项目。1.生成连接,下载样式。
2024-01-16 18:43:19
813
原创 uni-app基础详解(组件、弹窗、数据缓存、页面跳转)
分隔,参数键与参数值用=相连,不同参数用&分隔;path为下一个页面的路径,下一个页面的onLoad函数可得到传递的参数。从底部弹起的滚动选择器。支持五种选择器,通过mode来区分,分别是普通选择器。跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。多项选择器,内部由多个 checkbox 组成。保留当前页面,跳转到应用内的某个页面,使用。关闭当前页面,跳转到应用内的某个页面。关闭所有页面,打开到应用内的某个页面。关闭当前页面,返回上一页面或多级页面。,默认是普通选择器。
2024-01-16 18:02:48
1833
原创 uni-app创建项目、运行
uni-app是一个使用开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。HBuilderX是通用的前端开发工具,但为uni-app做了特别强化。
2024-01-15 19:14:56
873
原创 微信小程序 - 导航 、wxs及生命周期函数
WXS(WeiXin Script)是内联在 WXML 中的脚本段。通过 WXS 可以在模版中内联少量处理脚本,丰富模板的数据预处理能力。1.开启下拉刷新、设置下拉触底的高度。2.在js文件中设置处理函数。open-type参数。
2024-01-15 19:07:32
923
原创 vant ui安装及使用
若构建npm包时报error,有可能是因为。根据自己的需要选择合适的组件添加到代码中。根据自己的需要选择合适的组件添加到代码中。的原因,这时需要重新创建一个目录来存放。轻量、可靠的小程序 UI 组件库。2.自己创建了目录,来构建npm。保证组件的路径与文件路径一致。1.正常构建npm的引入方式。,于 2017 年开源。在setting中添加。
2024-01-14 12:25:15
854
原创 微信小程序- 基础学习
支持 JPG、PNG、SVG、WEBP、GIF 等格式。wx:if ---- wx:else 结构不能打断。注册登录以后,开发–> 开发设置中查看APPID。滑块视图容器(主要用来实现轮播图)。1.设置输入事件,并将获取的数据赋值给参数。3.AppID (在微信公众号平台申请)组件,否则会导致未定义的行为,出现错误。使用竖向滚动时,需要给。3.hidden 和wx:if 的区别。视图容器 类似html中的div。多个元素嵌套时,使用block。1.wx:if 创建或移除。1.js文件中声明参数。
2024-01-10 19:12:22
1387
原创 maven本地库配置以及依赖
Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和 依赖管理。
2024-01-05 18:06:15
2537
1
原创 BigDecimal及Integer的转化问题
1.new BigInteger(String val)方式——将十进制字符串表示形式转换为BigInteger。2.new BigInteger(String val,int radix)——将。大浮点数的包装类,继承了BigInteger类,主要用于货币的存储和计算。总共占 32 bit。去除第一位的符号位,剩下 31 位来表示数值。的表示范围最小值为 -2^31,最大值为 2^31-1。进制的数据转化为十进制的BigInteger类型的数据。类型占 4 字节,一个字节占 8 bit,因此一个。
2024-01-04 17:27:00
1446
1
原创 JDBC实现&相关类及接口(案例)
希望用相同的方式访问不同的数据库,让具体的数据库操作与数据库厂商实现无关,从而在不同数据库之间轻易的进行切换。定义了一套标准接口,即访问数据库的通用API,不同的数据库厂商根据各自数据库的特点去实现这些接口。根据URL连接参数找到与之匹配的Driver对象,调用其方法获取连接。执行查询SQL语句后返回的结果集,由ResultSet接口接收。3.ResultSet.getXXX()方法用来取得字段的内容。注:不同的SQL语句,要调用不同的方法来执行。1.ResultSet对象的最初位置在行首。
2023-09-07 23:01:40
112
1
原创 MYSQL数据库详解(5)-- 事务&函数&慢查询&索引
很少的情况下,MYSQL会选择优化不足的索引。 eq_ref:在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用。 Using index :列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候。使用>或
2023-09-07 22:18:34
163
1
原创 MYSQL数据库详解(2)-- 库操作&表操作&约束
2.change – 覆盖式,字段名,类型,属性都可以修改。格式:alter table 表名 关键词 属性。1.modify – 覆盖式,只能修改类型和属性。– drop database 库名。– 字符串sql表示方式 ‘’ “”create table 表名(一个表中可以有多个外键约束。
2023-09-07 22:11:03
62
1
原创 MYSQL数据库详解(4)-- 高级数据查询语句
*union all **:是求两个查询的并集,但是不会把重复的过滤掉,而是全部显示出来。4在每个子句中的排序是没有意义的,mysql在进行合并的时候会忽略掉。– 查询每个班下id最大的学生(使用where子查询实现)– 查询大于5人的班级名称和人数(使用from型子查询)5如果子句中的排序和limit进行结合是有意义的。查询id最大的一个学生(使用where子查询实现)– 查询大于5人的班级名称和人数(不使用子查询)– 从学生表中有外星人的信息,查询老师信息。3如果查询的表的列数量不相等时,会报错。
2023-09-07 22:09:44
64
1
原创 MYSQL数据库详解(3) --DML数据操作语句&基本的DQL语句
是SQL语句中最核心、最重要的语句,也是使用频率最高的语句。控制台备份时,依赖的是MySQL自带的备份工具mysqldump,该工具的功能是转储数据库,将数据转移到另一个SQL数据库,当然并不局限于MySQL数据库。针对数据库中两张或者两张以上的表同时进行查询,依赖的手段有复杂查询和嵌套查询。针对数据库中的一张数据表进行查询,可以通过各种查询条件和方式去做相关的优化。– 错误逻辑(between 后面的数值较小,and后面的值较大。– 总考试次数,总分,平均分,最高分,最低分。
2023-09-07 22:07:28
165
1
原创 Linux常见命令的使用
1、 如何通过命令行重启linux操作系统?2、如何删除/tmp下所有A开头的文件?3、如何把/etc复制到/tmp下?4、如何把/tmp/etc/man.conf移动到/tmp下并改名为test.conf5、如何查看当前工作目录、pwd6、如何一次性创建 text/d1/d2/d3/d47、如何查看/etc下的所有文件,并以人性化的长格式显示8、如何最快的返回到当前账户的宿主(家)目录cd ~ 或者cd9、如何只查看/etc单个目录的信息,并以详细列表(长格式)显示10、应用程序一般都安装在那个目录。
2023-08-28 19:20:45
678
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人