java对于一些零碎小知识的总结

(使用jquery获取前端数据,修改和删除都得用到html里的id,用var foodtypeid = this.parentNode.parentNode.firstChild.innerHTML获取)

    $("#TableData").on('click', '#upd', function () {
        var foodtypeid = this.parentNode.parentNode.firstChild.innerHTML;

        $(location).attr('href', 'updateCuisine.html?id='+foodtypeid);

    });

    $("#TableData").on("click","#del",function () {
        var foodtypeid = this.parentNode.parentNode.firstChild.innerHTML;

(@RequestBody FoodType foodType, @PathVariable int id 对两个注解的理解)
前台要传数据到后台controller时,要用@RequestBody注解,添加和修改要用该注解,删除由于因为只要获取id就行,所以不用使用该注解
当要获取前台的id时,要用@PathVariable注解,根据id查询的需要用到该注解,修改也要加,从后台获取到没id的json实体类后,setXXId.

一对多与多对一:
实体关系:一的一方使用对象集合来表达多的一方,多的一方使用一的对象
表中关系:多的外键指向一的主键
多的一方实体类中不用创建外键的属性

servlet只会创建一个实例,所以servlet是线程不安全的,不能有成员变量,变量只能放在方法区,否则多个用户同时访问该servlet,修改该参数就会发生线程安全问题。
Struts中的Action是线程安全的,每次访问都会创建一个action,体现在可以使用成员变量接受参数。(struts交给spring处理时,spring中的scope设置为多例prototype)
mvc三层架构:数据访问dao层,业务逻辑service层,web界面层(实际上还有个html,css,js客户层)
mvc设计思想:业务模型视图控制器
客户层属于V模型,web层属于C控制器,数据访问和业务逻辑层属于M业务模型

@Component、@Repository、@Service、@Controller属于对象创建
@Autowired属于引用成员变量的对象属性注入,@Resource(name = “xxx”)效果相同,但是成员变量对象数量多时可以通过name指定,相当于声明bean中的property标签的ref引入
@Transactional(isolation = Isolation.REPEATABLE_READ,propagation = Propagation.REQUIRED,readOnly = true)
增删改操作必须加上上面注解并把readOnly改为false

简单通俗的来说,一般情况下,多实例模式是线程安全的.而单实例模式中,如果共享变量是局部变量,也就是在方法中使用,即用即销,也是线程安全的;如果共享变量是成员变量,又分为两种情况:变量值始终不能发生变化 , 通常是线程安全的,变量值是发生变化的,一般是不安全的.

if标签test里面测试的属性为#后的属性

springMVC可以为单例,也可以为多例,建议单例,struts2只能多例;(springMVC获得数据绑定在形参上,即方法后面的()里,struts绑定在成员变量上)
springMVC入口为servlet,即前端控制器,struts2的入口为filter过滤器
springMVC参数解析器是根据request请求内容解析(存数据只放到request域中),而struts2根据ognl值栈存取数据

post,get,delete,put在restful中分别对映
添加,查询,删除,修改

$.ajax({})里面data为前台要传到后台controller的内容。如data:{“id”:id},回调函数为success:function(data) {},这里的data为后台传到前台的内容

json总结:ajax传输,前台要json类型的字符串才能通过data:XX传到后台controller,而从后台传过来的json字符串经过ajax的dataType会转为json对象,
alert(json对象)不会打出key:value属性值,但是json.+属性名可以获得属性值,而如果是json类型的字符串,alert(json字符串)会弹出所有的key:value属性值,但是通过.属性名取不到值

ajax提交表单的修改内容:
var jsonForm= $("#edit_customer_form").serializeArray();

        var jsonData = {};

        $.each(jsonForm,function (i,v) {
            jsonData[v.name] = v.value;
        });

        var params = JSON.stringify(jsonData);

$.ajax({
data:params,
type:“post”,
url:"/customer/edit",
dataType:“json”,
contentType:“application/json”,
success:function() {

            }});

因为where关键字无法与合计函数一起使用,例如sum(),avg()等,所以当有条件的话,需要放在having下。

快捷键:ctrl+f搜索

new生成的是两个对象,其内存地址不同

Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)

String类型对象创建个数,我总结为一下几种情况(均不考虑字符串在常量池中已存在的情况):

1 String a=“123”;

创建了1个对象

jvm在编译阶段会判断常量池中是否有 “123” 这个常量对象如果有,a直接指向这个常量的引用,如果没有会在常量池里创建这个常量对象。

2 String a=new String(“123”);

创建了2个对象

同情况1,jvm编译阶段判断常量池中 "123"存在与否,进而来判断是否创建常量对象,然后运行阶段通过new关键字在java heap创建String对象。

3 String a=“123”+“456”;

创建了1个对象

jvm编译阶段过编译器优化后会把字符串常量直接合并成"123456",所有创建对象时最多会在常量池中创建1个对象。

4 String a=“123”+new String(“456”);

创建了4个对象

常量池对象"123" ,“456”,new String(“456”)创建堆对象,还有一个堆对象"123456"。

一个字节(byte)占8位(bit),
byte,short,int,long分别占一,二,四八个字节

java中凡是byte、short、char数据类型的数据在运算的时候都会转换成int类型的数据再运算,此处两个int类型的数值相加,结果赋给byte类型,肯定会报错。

redis的主从复制是为了防止单点故障,主机增删改操作会同步到从机,从机不能修改数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值