[CSDN话题挑战赛第2期]:[一起学Java]

125 阅读5分钟

CSDN话题挑战赛第2期
参赛话题:一起学Java
在这里插入图片描述
伙伴们,Java一直以来都是一门非常热门的编程语言,本话题以分享学习Java知识为例,带领大家从0到1学习Java。
你可以从以下几个方面着手(不强制),或者根据自己对话题主题的理解创作,参考如下:

一、批量添加品牌信息到数据表

一、业务实现类实现

    @Override
    public void batch(List<MchBrandShopEntityReq> reqList, MchUser user) {
        if (CollectionUtil.isEmpty(reqList)) {
            throw new SaasNetworkException(SaasExceptionCode.REQUEST_PARAM_IS_NULL);
        }
        Date now = DateUtils.getNow();
        List<MchBrandShop> shopList = new ArrayList<>();
        reqList.forEach(sopEntityReq -> {
            MchBrandShop mchBrandShop = new MchBrandShop();
            BeanUtils.copyProperties(sopEntityReq, mchBrandShop);
            CityRes cityRes = getCityRes(sopEntityReq.getLng(), sopEntityReq.getLat());
            if (null != cityRes) {
                mchBrandShop.setProvince(cityRes.getProvinceName());
                mchBrandShop.setProvinceCode(cityRes.getProvinceCode());
                mchBrandShop.setCity(cityRes.getCityName());
                mchBrandShop.setCityCode(cityRes.getCityCode());
                mchBrandShop.setRegion(cityRes.getRegionName());
                mchBrandShop.setRegionCode(cityRes.getRegionCode());
                mchBrandShop.setMerchantId(user.getBelongId());
                mchBrandShop.setGmtCreate(now);
                mchBrandShop.setGmtCreateBy(user.getTelphone());
                mchBrandShop.setGmtCreateUid(user.getId());
                mchBrandShop.setGmtModifiedUid(user.getId());
                mchBrandShop.setGmtModified(now);
                mchBrandShop.setGmtModifiedBy(user.getTelphone());
                shopList.add(mchBrandShop);
            }
        });
        if (CollectionUtil.isNotEmpty(shopList)) {
            brandShopDaoMapper.bSave(shopList);
        }
    }

二、批量保存-mybatis

<insert id="bSave">
    insert into mch_brand_shop (
        merchant_id, brand_id, shop_name, province, city,
        region, address, lng, lat, min_area, max_area, day_income,
        min_day_income, max_day_income, open_time, floor, rent_month_amount,
        rent_time,
        gmt_create, gmt_create_uid, gmt_create_by, gmt_modified_uid, gmt_modified_by,
        gmt_modified
    ) values
    <foreach collection="list" item="shop" separator="," index="index">
        (
            
            
            
            
            
            
        )
    </foreach>
</insert>


二、反射的理解及如何通过反射获取和设置对象私有字段的值

下面代码实现反射通过反射获取和设置对象私有字段的值

public class Teste {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        String str = "are you ok";
        Method method = str.getClass().getMethod("toUpperCase");
        System.out.println(method.invoke(str));
        //ARE YOU OK

    }
}

回顾反射的定义

视为Java动态语言的关键,本身Java是偏静态的。

1、反射的三种方式

Class a = String.class;

Class b = person.getClass();

Class c = Class.forName(String classPath);//常用—》体现反射的动态性

2、创建类的对象的方式

1 new + 构造器

2 要创建Xxx类的对象,可以考虑:Xxx、Xxxs、XxxFactory、XxxBuilder类中查看是否有静态方法的存在。可以调用它的静态方法,创建Xxx对象。(其实把new + 构造器封装了)

3 反射

3、反射的应用:动态代理

动态代理与AOP

AOP代理的方法 动态代理增加的通用方法

回调目标对象的方法,动态代理增加的通用方法

三、堆、栈、方法区(2.0)

1、String a=new String(“fdsdfs”);

堆 存放的是new出来的对象 jvm中只有一个堆区 被所有的线程共享

栈 是变量a 每个栈中的数据私有的 其他栈不能访问。栈中分配的是基本类型和自定义对象的引用。

方法区 是“fdsdfs”;被所有的线程共享,方法区包含所有的class static变量。
方法区存放的是类信息和static变量。

2、也可以这么理解:堆是用来存放对象的,栈是用来运行程序的。
堆:java的垃圾回收器会自动的回收这些不用的数据。缺点是由于要动态的分配内存,存储效率会比较的慢。

栈:栈的优势是存取效率比较快,仅次于寄存器,栈数据可以共享。但缺点是栈中的数据大小和生存期的固定的,缺乏灵活性。

3、堆和栈的区别可以用如下的比喻来看出:(来自csdn/weixin_41254254)
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就
走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自
由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由
度大。

四、SpringCloud微服务再整理

1、什么是分布式?
不同模块部署在不同服务器上
作用解决高并发
解耦
让开发者更关注业务
等等
2、什么是集群?
多台服务器部署相同应用构成一个集群
作用:通过负载均衡设备共同对外提供服务

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务

3、Restful
Restful是一种架构设计风格,提高设计原则和约束条件
但不是架构
而满足这些约束条件和原则的应用程序或设计就是 RESTful架构或服务。

4、什么是微服务
架构设计概念,各服务间隔离(分布式也是隔离),自治(分布式依赖整体组合)其它特性(单一职责,边界,异步通信,独立部署)是分布式概念的跟严格执行
SOA到微服务架构的演进过程
作用:各服务可独立应用,组合服务也可系统应用(巨石应用[monolith]的简化实现策略-平台思想)

五、Oracle和Mysql的区别

简述解释

MySQL比较小,而且免费,开源的缘故,现在也很健壮,若不是大型应用的话,MySQL足以应付一切。

oracle比较庞大,整个体系都很健全。
简单的说MySQL是实用很好用,oracle就是很好很强大

详细解释

1.Oracle是大型数据库,Mysql是中小型数据库

2.Oracle占有内存空间大,Mysql占有小

3.Oracle支持大并发访问量,是OLTP最好的工具,Mysql并发小,面对大访问量可以做分表分库优化

4.Oracle没有自动增长类型,Mysql一般使用自动增长类型

5.Oracle处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置,并且只能用ROWNUM<100,不能用ROWNUM>80,MYSQL处理翻页的SQL语句比较简单,用LIMIT开始位置,记录个数

6.MYSQL的非空字段有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义Oracle是is null

7.MYSQL里用 字段名 like ‘%字符串%’,ORACLE用 字段名like '%字符串%'但不能使用索引,速度不快。【like ‘%’开头 无法使用索引 不使用开头 可以使用索引】

8.Oracle实现了ANSII SQL中事务的隔离级别、传播特性等比Mysql强;

来自 不慕 blog.csdn.net/Yangyg\_081…

本文使用 文章同步助手 同步