暂无分类
暂无标签
发布于2023-02-04 17:57 阅读(155) 评论(0) 点赞(22) 收藏(4)
我前端平时用vue,html、css和java script、jquery等都会一些,基本上都是现用先查,不太专业,前后端占比的话算是三比七吧,工作内容很多是写后端rest接口。
a === b 是最简单的。如果 a 和 b 的类型不同,那么一定会返回 false。而 a == b 则要灵活得多。JavaScript 会尝试调整 a 和 b 的类型,例如若 a 为字符串 b 为数字,则将字符串先转化为数字再与 b 比较,等等。
除了判断 x == null,因为即将 x == null 是 x === null || x === undefined 的缩写
简而言之就是 " == " 只要求值相等; " === " 要求值和类型都相等
const arr = ['张学友', '刘德华', '黎明', '郭富城'];
let [zhang, liu, li, guo] = arr;
// 内容中可以直接出现换行符
let str = `<ul>
<li>沈腾</li>
<li>玛丽</li>
<li>魏翔</li>
<li>艾伦</li>
</ul>`;
// 变量拼接
let lovest = '魏翔';
let out = `${lovest}是我心目中最搞笑的演员!!`;
console.log(out);
ES6 引入新的声明字符串的方式 `` --内容中可以直接出现换行符
变量拼接 ---语法:`${ 内容 }`
// 内容中可以直接出现换行符
let str = `<ul>
<li>沈腾</li>
<li>玛丽</li>
<li>魏翔</li>
<li>艾伦</li>
</ul>`;
// 变量拼接
let lovest = '魏翔';
let out = `${lovest}是我心目中最搞笑的演员!!`;
console.log(out);
const school = {
name, // name : name, 简化成name
improve(){ // improve: function(){ 简化而来
console.log("我们可以提高你的技能");
}
}
具体用的版本不清楚,反正大于java8(查了一下java8已经渐渐被java10/java11给镇压了,因为java11的G1垃圾收集器有更新的默认值和更高的性能)
java8的新特性:
1- 创建 Stream
一个数据源(如:集合、数组),获取一个流
2- 中间操作
一个中间操作链,对数据源的数据进行处理,如filter() / distinct() / limit() / map()映射 / sorted()排序
3- 终止操作(终端操作)
一旦执行终止操作,就执行中间操作链,并产生结果。之后,不会再被使用
如allMatch、anyMatch()、findFirst()、count()、max(Comparator c)、forEach() 匹配与查找
reduce() collect()
double num = 0.88;
BigDecimal b = new BigDecimal(num); //存在精度确实风险,容易导致业务逻辑异常
优先推荐入参为 String 的构造方法,或使用 BigDecimal 的 valueOf 方法,其实valueOf底层调用的还是toString方法
IOC
:控制反转也叫依赖注入,IOC利用java反射机制,AOP利用代理模式。所谓控制反转是指,本来被调用者的实例是由调用者来创建的,这样的缺点是耦合性太强,IOC则是统一交给spring容器来管理,你只需要在spring配置文件中配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类。
AOP
:面向切面编程。(Aspect-Oriented Programming)
AOP的技术实现方法主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码,属于静态代理。
第一种启动方式 @EnableAutoConfiguration
@EnableAutoConfiguration 作用是开启自动装配,帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot,并创建对应配置类的Bean,并把该Bean实体交给IoC容器进行管理。
第二种启动方式 @ComponentScan
@ComponentScan() 注解作用:根据定义的扫描路径,将符合规则的类加载到spring容器中,比如在类中加入了以下注解 @Controller、@Service、@Mapper 、@Component、@Configuration 等等;
我们写的代码难免有些运行错误,通常情况下,我们需要对错误进行包装,不能直接返回异常信息发给前端。
但是我们的前端很容易臃肿,我们可以使用AOP来解决这种问题
(1)环境配置
在pom.xml中添加依赖的包
写一个切面的处理类,加上@Aspect注解,重写before() / Around / AfterReturning 等方法
事务一般用@Transactional注解加在Service层方法中,如果controller只调用一个service事务,肯定可以回滚,但是如果同时调用两个以上方法就不会回滚
事务失效的情况
注意:如果某个方法是static的,同样无法通过动态代理,变成事务方法
@Component
public class UserService {
public void m1(){
this.m2();
}
@Transactional
public void m2(){
//执行db操作
}
}
显然不会生效,因为m1中通过this的方式调用了m2方法,而this并不是代理对象,this.m2()不会被事务拦截器,所以事务是无效的,如果外部直接调用通过UserService这个bean来调用m2方法,事务是有效的,上面代码可以做一下调整,如下,在UserService中注入了自己(或者在该Service类中使用AopContext.currentProxy()获取代理对象),此时m1中的m2事务是生效的
@Component
public class UserService {
@Autowired //这里注入了自己
private UserService userService;
public void m1() {
this.userService.m2();
}
@Transactional
public void m2() {
//执行db操作
}
}
private static final ThreadLocal<Map<Object, Object>> resources = new NamedThreadLocal<>(“Transactional resources”);
我们说的同一个事务,其实是指同一个数据库连接,只有拥有同一个数据库连接才能同时提交和回滚。如果在不同的线程,拿到的数据库连接肯定是不一样的,所以是不同的事务。
6. 异常类型错误
并不是任何异常情况下,spring都会回滚事务,默认情况下,RuntimeException和Error的情况下,spring事务才会回滚。
通过try catch把异常捕获到处理了也不会回滚。
1、开发上手难度
Hibernate的真正掌握(封装的功能和特性非常多)要比Mybatis来得难。
在真正产品级应用上要用Hibernate,不仅对开发人员的要求高,hibernate往往还不适合(多表关联查询等)。
2、SQL优化方面
Hibernate使用的是封装好,通用的SQL来应付所有场景,而Mybatis是针对响应的场景设计的SQL。Mybatis的SQL会更灵活、可控性更好、更优化。
3、移植性
Hibernate与具体数据库的关联只需在XML文件中配置即可,所有的HQL语句与具体使用的数据库无关,移植性很好。
MyBatis项目中所有的SQL语句都是依赖所用的数据库的,所以不同数据库类型的支持不好。
4、JDBC
Hibernate是在JDBC上进行了一次封装。
Mybatis是基于原生的JDBC的。Mybatis有运行速度上的优势。
5、功能、特性丰富程度
Hibernate提供了诸多功能和特性。要全掌握很难。
Mybatis 自身功能很有限,但Mybatis支持plugin,可以使用开源的plugin来扩展功能。
6、动态SQL
Mybatis mapper xml 支持动态SQLHibernate不支持
实际项目关于Hibernate和Mybatis的选型:(背下来吧)
1、数据量:有以下情况最好选用Mybatis
如果有超过千万级别的表
如果有单次业务大批量数据提交的需求(百万条及以上的),这个尤其不建议用Hibernate
如果有单次业务大批量读取需求(百万条及以上的)(注,hibernate多表查询比较费劲,用不好很容易造成性能问题)
2、表关联复杂度
如果主要业务表的关联表超过20个(大概值),不建议使用hibernate
3、人员
如果开发成员多数不是多年使用hibernate的情况,建议使用mybatis
4、数据库对于项目的重要程度
如果项目要求对于数据库可控性好,可深度调优,用mybatis
Hibernate提供了原生的SQL语句的查询,通过createNativeQuery(String)
//查询指定的列
List<Object[]> list = session.createNativeQuery("select actor_id as actorId,first_name as firstName from actor")
.setFirstResult(0)
.setMaxResults(5)
.list();
$telnet 10.4.200.114 8500
(我答错了,答的netstat,感觉要从简历上删掉Linux命令了,都是用的时候查的,接触的少记不住)
netstat -tln 查看端口使用情况,而netstat -tln | grep 8088 则是只查看端口8083的使用情况
$ find -name “*.log”
英语学习,是否能适应英文办公环境
是否能适应全栈开发,他们公司项目部门由前后端分离,但是基本上还是一人搞定前后端
原文链接:https://blog.csdn.net/qq_42887496/article/details/126108087
作者:我是不是很美
链接:http://www.javaheidong.com/blog/article/641211/cdddc24a624e8e2c2f68/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!