![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java学习笔记
念衢
这个作者很懒,什么都没留下…
展开
-
Nginx
该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。:修改配置文件nginx.conf后,重新生成新的worker进程,当然会以新的配置进行处理请求,而且新的请求必须都交给新的worker进程,至于老的worker进程,等把那些以前的请求处理完毕后,kill掉即可。为了加快服务器的解析速度,把静态资源、放到Nginx上,由Nginx管理,动态请求转发给后端,可以把动态页面和静态页面交给不同的服务器来解析,加快解析速度,降低原来单个服务器的压力,方便管理维护。(有点valatile的味道)原创 2022-11-15 16:26:32 · 919 阅读 · 0 评论 -
BIO,NIO和AIO的区别联系
NIO如果把所有的连接对象都放在channellist里,性能会非常低,因为channellist里的对象可能非常多至成百上千至万,当一个用户的客户端发来请求,服务器就需要在这么多的对象里用for循环去找那一个channel,非常慢,所以就有了selector(多路复用器),使用主从模式,并注册在sever socket channel上。4.BIO是单向的,要么是输入流要么是输出流,NIO是双向的,可以从channel往buffer读写数据,同时buffer也可以向channel读写数据。原创 2022-11-14 21:57:50 · 133 阅读 · 0 评论 -
redis缓存穿透和击穿
对查询为空的缓存对象设置过期时间 eg:在12点上秒杀,但用户11点开始搜,到12点后再搜应该能搜到了,如果不设置有效时间,那该用户就一直搜不到秒杀商品。这里互斥锁是保证每次从数据库查询数据,都再从redis查找数据,最后拿到的都是最新的,这样redis里就不会有过期数据。发生原因:有恶意攻击或DB确实没有符合查询条件的。缓存击穿:redis没有,但是数据库可能有。缓存穿透:redis和数据库都没有。原创 2022-10-30 00:06:52 · 57 阅读 · 0 评论 -
redis 的 java实现 ——Lettuce
3.2、用genericJackson2JsonRedisSerializer实现。3.1、用Jackson2JsonRedisSerializer实现。方法1、properties文件配置。ttl :距离失效时间还剩XXX秒。哨兵操作(前提知识:主从模式)3、配置redis配置文件。1、 创建项目,添加依赖。原创 2022-10-29 23:37:39 · 876 阅读 · 0 评论 -
@Autowired 与@Resource的区别
进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。推荐使用:@Resource注解在字段上,这样就不用写setter方法了,并且这个注解是属于J2EE的,减少了与spring的耦合。共同点: @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。原创 2022-10-29 18:15:28 · 70 阅读 · 0 评论 -
redis数据持久化
appendonly 实时记录,不丢失,记录在aof文件里(存的完整的命令,项目长期使用的话,占用空间比rdd大,启动时间也比较久)一般启用aof,rdd失效,但现在也可以混合开启。rdd(存的是数据)原创 2022-10-29 17:22:49 · 52 阅读 · 0 评论 -
redis watch事务与乐观锁
监控(Watch)悲观锁:什么时候都会出问题,无论做什么都加锁乐观锁:认为什么时候都不会出现问题,所以不会上锁!更新数据的时候去判断一下,再此期间是否有人修改过这个数据mysql获取version更新的时候比较version。原创 2022-10-29 17:10:52 · 686 阅读 · 0 评论 -
Java项目整合redis序列化工具——操作Java对象
目的:实现redis存储string字符串,非二进制字符。原创 2022-10-29 16:26:29 · 347 阅读 · 0 评论 -
redis 的 java实现 —— jedis
3.3 用redis配置,优化实现方式 3.2 创建连接池后,每次使用直接从连接池中获取连接池实例。3.2 用连接池(每次使用都要创建连接池 再获取连接池实例)创建项目时记得勾spring data redis。3.1、 用new 的方式 进行连接。4、使用配置类 , 测试连接。1、移除Lettuce依赖。2、加入jedis依赖。原创 2022-10-28 23:33:17 · 929 阅读 · 0 评论 -
redis数据库数据类型 重点数据类型特点及操作
lrem students x haoya 当x大于数据库里值为haoya的数据条数的时候,表示删除所有值为haoya的数据。lrange students 1 haoya 当数据库里有多个值为haoya的时候,查询显示出来的是第一条数据。lrem students 1 haoya 当数据库里有多个值为haoya的时候,删除的第一条数据。2、当 list 查看数据库里的重复数据(students表名 1查询的数据条数 haoya查询值)原创 2022-10-28 17:38:16 · 296 阅读 · 0 评论 -
上传到Git仓库
3、有红色的,表示该文件夹未加入暂存区——》使用 “git add 文件名 ” 追踪——》再次git status // 查看状态 ,会发现文件名是绿色。git commit -am "备注信息" // 将内容放至仓库 也可用git commit -a -m "备注信息"若已经有若干文件放入仓库,再次提交可以不用git add和git commit -m "备注信息" 这2步, 直接用。4、git commit -m "提交的备注信息" // 提交到仓库。2、git status // 查看状态。原创 2022-10-28 16:26:49 · 138 阅读 · 0 评论 -
Access denied for user ‘root‘@‘localhost‘ (using password: YES)
3、如果以上都正确,但是mysql数据库账户密码是以0开头的,加上单引号,否则会解析成八进制。原创 2022-10-24 22:33:12 · 746 阅读 · 0 评论 -
spring security Ⅲ—— authenticationManager.authenticate()验证流程
进入provider.authenticate(authentication)方法后发现我们到了AbstractUserDetailsAuthenticationProvider类,而这个方法的返回值需要需要依赖user,要获取这个user,咱又不得不进入retrieveUser(username, (UsernamePasswordAuthenticationToken) authentication) 这个方法。在得到这个user之后才能进行下一步。原创 2022-10-14 23:18:31 · 9670 阅读 · 3 评论 -
spring security 密码校验——用户输入的密码和数据库密码值
先检查数据库存的密码是否是在securityConfig配置类里注入的加密方法,加密后的结果。在控制台进行打印的结果,存到数据库中,就可以了。eg:用security自带的BC加密。,绝大概率就是这里的问题。原创 2022-10-14 22:11:34 · 1312 阅读 · 0 评论 -
spring security 配置类——SecurityConfigration
/权限注解,访问服务需要的权限@PrePostEnabled("hasAuthority('admin')")//创建BCryptPasswordEncoder注入容器@Bean}//// @Bean//// throw new RuntimeException("手机号或者密码错误");//// }//// //查用户权限//// //把数据封装成UserDetails返回// };// }原创 2022-10-12 14:31:14 · 558 阅读 · 0 评论 -
生成token的工具类
注意引入的依赖的版本,和工具类是否匹配,不然报错。以下工具类都可以,版本号限制不大。原创 2022-10-12 14:13:41 · 1599 阅读 · 0 评论 -
mybatisplus无法调用继承来的方法:Invalid bound statement (not found): com.example.springboot.mapper
2、对应java实体类的字段也要保持一致,在id上加一个@TableId("id")的注解,或者不写也可以,但是不能没有,因为mybatisplus是不需要对数据库进行字段的匹配的,非常方便,因此每一个字段都很重要了;3、实体类的属性也不能比数据库里多一个。既不能多,也不能少。type 设置主键类型、主键的生成策略。1、数据库里id不可为空,作为主键。@TableId注解使用介绍。value映射主键字段的名字。原创 2022-09-25 17:36:16 · 1069 阅读 · 0 评论 -
前后端数据交互常见问题:JSON parse error: Unrecognized token ‘phoneNum‘
后端:加上@RequestBody用String接收,后再一一对多参数进行处理,subString()方法:根据字符的下标位置进行分割,不包前,但包后,eg:第9个字符是“=”,所以从第九个字符开始分割,到第20个字符结束,包括了第二十个。(是对发送过去的数据格式限制),dataType是对接收数据的格式限制。原理不清楚,有大佬的话,求求路过看一眼,顺带告诉我一下,真心感恩~传参结果:正常,第一个手机号,第二个前端MD5加密后的密码。,没有传值的参数,会自动成null。去掉contentType属性。原创 2022-09-24 15:01:03 · 1238 阅读 · 0 评论 -
springboot项目用easycode自动生成代码,配置、问题及解决
捋一下流程:controller——》service(接口)——》serviceImp(通过@Service注解和implements service的方式,里面用.方法发调用dao层方法)——》dao层(通过properties文件的配置找到mapper目录下 xxDao.xml文件) ——》xxDao.xml文件,里面有sql语句。意思差不多是bean注入失败,即@Resource @Autowired这两种注解,失败,检查发现UserServiceImp层没有加。多的是问题,等我捋明白了库😭。原创 2022-09-20 20:51:36 · 635 阅读 · 0 评论 -
登录功能注意的点
网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。判断每次请求由哪一个用户发出的,不用session,1、因为每次请求都要查询数据库,数据库压力太大,2、如果把session存到cookie中容易被伪造,CSRF攻击(cross-site request forgery)2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;原创 2022-09-20 00:26:04 · 2117 阅读 · 0 评论 -
解决前后端跨域问题
【代码】解决前后端跨域问题。原创 2022-09-18 22:39:10 · 121 阅读 · 0 评论 -
springboot访问静态页面,并加载css、js样式
src="/js/jquery.min.js" 也就是地址 src="/static/js/jquery.min.js"2、因为是通过地址栏访问,所以使用@GetMapping注解,注解后的内容可随意写,访问时的地址就是:“3、return“ ”里面填的字符串一定要是自己放入templates里的html页面的名字。1、一定要用@Controller注解,不能用@Restcontroller;虽然href或src内的内容idea会标识不认识,但地址是没有问题。原创 2022-09-16 15:14:21 · 5999 阅读 · 2 评论 -
在插件、依赖的安装都没有问题的情况下,Lombok注解失效
value不要和@Data、@AllArgsConstructor、@NoArgsConstructor混用,否则在使用实体类时会发现Lombok注解失效的情况,并且是在插件、依赖的安装都没有问题的情况下。原创 2022-09-15 22:51:00 · 131 阅读 · 0 评论 -
spring boot 项目能正常启动,但是服务访问不到
如图,controller包要在springboot包下,或者把TestController放到springboot包下,这样控制器才能扫描到。新建一个springboot项目后,只写一个controller,代码如下。原因:项目目录有问题,controller没有扫描到。正常情况下,启动服务后,访问。但问题是访问不到,显示404。...原创 2022-08-30 20:15:31 · 6054 阅读 · 3 评论 -
使用IDEA新建简单Spring Boot 项目过程,及各选项含义
点击next——>finish。原创 2022-08-30 20:04:17 · 312 阅读 · 0 评论 -
spring boot文件配置两种格式
YAML 是一种用于指定分层配置数据的便捷格式,比它的属性文件application.properties更具可读性,因为它不包含重复的前缀。每一级目录都是通过缩进(不能使用tab,只能使用空格)区分,并且键和值之间需要添加冒号+空格来表示。最多有三级目录,列表下元素用-+空格+元素名称表示。...原创 2022-08-30 12:18:40 · 175 阅读 · 0 评论 -
spring boot —— Spring Security定制权限管理
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。它的核心是一组过滤。类似于启动spring boot项目后,会先验证,如果没有登陆,会跳转到框架默认登录页面(封装好的,不用自己写)如果没有配置登录用户,那么终端会自动生成用户并打印随机生成的用户密码,如果有配置,就不会生成。...原创 2022-08-30 12:15:53 · 507 阅读 · 0 评论 -
Gson——在 Java 对象和 JSON 数据之间进行映射的 Java 类库
因为json有2种类型:一种是对象,object -> {key:value,key:value,…}。另一种是数组,array -> [value,value,…]。所以针对这两种类型,来展开对json数据的操作。GSON在解析json的时候,大体上有2种类型,一种是直接在内存中生成object或array,通过手工指定key来获取值;另一种是借助javabean来进行映射获取值。...原创 2022-08-29 21:43:13 · 1186 阅读 · 0 评论 -
lombok学习
Slf4j 注解在类,生成log变量,严格意义来说是常量。,简化书写,省去实体类中大量的get()、 set()、 toString()、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法等方法。@RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。@NoArgsConstructor 注解在类,生成无参的构造方法。...原创 2022-08-29 21:39:02 · 313 阅读 · 0 评论